From b9850f36c844abb413e6e4b9bb779fcad809528b Mon Sep 17 00:00:00 2001 From: rohitkumarxyz Date: Mon, 31 Mar 2025 11:06:18 +0530 Subject: [PATCH 1/3] added api for fetch old images and api for new generated images throgh longpolin --- apps/web/app/dashboard/page.tsx | 2 +- apps/web/components/Camera.tsx | 105 ++++++++++++++++--------- apps/web/components/GenerateImage.tsx | 6 +- apps/web/components/PackCard.tsx | 7 +- apps/web/components/theme-provider.tsx | 6 +- apps/web/components/ui/upload.tsx | 4 - apps/web/next.config.js | 4 + apps/web/package.json | 10 ++- apps/web/services/image.service.ts | 19 +++++ apps/web/store/useRequestStore.ts | 21 +++++ 10 files changed, 135 insertions(+), 49 deletions(-) create mode 100644 apps/web/services/image.service.ts create mode 100644 apps/web/store/useRequestStore.ts diff --git a/apps/web/app/dashboard/page.tsx b/apps/web/app/dashboard/page.tsx index 31419879..00640bfd 100644 --- a/apps/web/app/dashboard/page.tsx +++ b/apps/web/app/dashboard/page.tsx @@ -50,7 +50,7 @@ export default async function DashboardPage() { value="camera" className="mt-0 focus-visible:outline-none" > - + ([]); - const [imagesLoading, setImagesLoading] = useState(true); + const [imagesLoading, setImagesLoading] = useState(false); const [selectedImage, setSelectedImage] = useState(null); const [currentImageIndex, setCurrentImageIndex] = useState(0); const [isDownloading, setIsDownloading] = useState(false); const { getToken } = useAuth(); - const formatDate = (dateString: string) => { return new Date(dateString).toLocaleString("en-US", { year: "numeric", @@ -41,13 +44,19 @@ export function Camera() { }); }; - const fetchImages = async () => { + + const fetchImages = async (requestId: string) => { try { - const token = await getToken(); - const response = await axios.get(`${BACKEND_URL}/image/bulk`, { - headers: { Authorization: `Bearer ${token}` }, - }); - setImages(response.data.images); + setImagesLoading(true); + const token: string | null = await getToken(); + if (!token) return; + const response = await getImage(token, requestId); + if (response.data.images) { + setImages(prev => [...prev, response.data.images]); + removeRequestId(requestId); + } else if (response.status === 404) { + removeRequestId(requestId); + } setImagesLoading(false); } catch (error) { console.error("Failed to fetch images:", error); @@ -55,10 +64,34 @@ export function Camera() { } }; + + const fetchOldImages = async () => { + const token: string | null = await getToken(); + if (!token) return; + const response = await getOldImages(token); + setImages(response.images); + }; + + useEffect(() => { - fetchImages(); + fetchOldImages(); }, []); + useEffect(() => { + if (!requestIds) { + return; + } + const pollInterval = setInterval(() => { + requestIds?.forEach((requestId: string) => { + fetchImages(requestId); + }); + }, 10000); + requestIds?.forEach((requestId: string) => { + fetchImages(requestId); + }); + return () => clearInterval(pollInterval); + }, [requestIds]); + const handleImageClick = (image: TImage, index: number) => { setSelectedImage(image); setCurrentImageIndex(index); @@ -95,6 +128,8 @@ export function Camera() { } }; + + return (
@@ -112,31 +147,31 @@ export function Camera() { > {imagesLoading ? [...Array(8)].map((_, i) => ( - - )) + + )) : images.map((image, index) => ( -
handleImageClick(image, index)} + > + handleImageClick(image, index)} - > - handleImageClick(image, index)} - modelId={image.modelId} - userId={image.userId} - prompt={image.prompt} - falAiRequestId={image.falAiRequestId} - createdAt={image.createdAt} - updatedAt={image.updatedAt} - /> -
- ))} + modelId={image.modelId} + userId={image.userId} + prompt={image.prompt} + falAiRequestId={image.falAiRequestId} + createdAt={image.createdAt} + updatedAt={image.updatedAt} + /> +
+ ))} {!imagesLoading && images.length === 0 && ( diff --git a/apps/web/components/GenerateImage.tsx b/apps/web/components/GenerateImage.tsx index 8c89b7c2..6cf10462 100644 --- a/apps/web/components/GenerateImage.tsx +++ b/apps/web/components/GenerateImage.tsx @@ -14,11 +14,13 @@ import { useCredits } from "@/hooks/use-credits"; import { useRouter } from "next/navigation"; import CustomLabel from "./ui/customLabel"; import { GlowEffect } from "./GlowEffect"; +import { useRequestStore } from "@/store/useRequestStore"; export function GenerateImage() { const [prompt, setPrompt] = useState(""); const [selectedModel, setSelectedModel] = useState(); const [isGenerating, setIsGenerating] = useState(false); + const { addRequestId } = useRequestStore(); const { getToken } = useAuth(); const { credits } = useCredits(); const router = useRouter(); @@ -34,7 +36,7 @@ export function GenerateImage() { setIsGenerating(true); try { const token = await getToken(); - await axios.post( + const response = await axios.post( `${BACKEND_URL}/ai/generate`, { prompt, @@ -45,6 +47,8 @@ export function GenerateImage() { headers: { Authorization: `Bearer ${token}` }, } ); + + addRequestId(response.data.requestId); toast.success("Image generation started!"); setPrompt(""); } catch (error) { diff --git a/apps/web/components/PackCard.tsx b/apps/web/components/PackCard.tsx index 6cf652f7..3788d2c8 100644 --- a/apps/web/components/PackCard.tsx +++ b/apps/web/components/PackCard.tsx @@ -20,6 +20,7 @@ import { CarouselPrevious, } from "./ui/carousel"; import Autoplay from "embla-carousel-autoplay"; +import { useRequestStore } from "@/store/useRequestStore"; export interface TPack { id: string; @@ -38,7 +39,7 @@ export function PackCard(props: TPack & { selectedModelId: string }) { const { getToken } = useAuth(); const { credits } = useCredits(); const router = useRouter(); - + const { requestIds, setRequestIds } = useRequestStore(); // Collect all image URLs into an array const images = [ props.imageUrl1, @@ -66,7 +67,7 @@ export function PackCard(props: TPack & { selectedModelId: string }) { const generatePack = async () => { const token = await getToken(); - await axios.post( + const response = await axios.post( `${BACKEND_URL}/pack/generate`, { packId: props.id, @@ -78,6 +79,8 @@ export function PackCard(props: TPack & { selectedModelId: string }) { }, } ); + setRequestIds([...(requestIds || []), response.data.requestId]); + toast.success("Pack generation started!"); }; return ( diff --git a/apps/web/components/theme-provider.tsx b/apps/web/components/theme-provider.tsx index 189a2b1a..36a4c49e 100644 --- a/apps/web/components/theme-provider.tsx +++ b/apps/web/components/theme-provider.tsx @@ -2,10 +2,12 @@ import * as React from "react"; import { ThemeProvider as NextThemesProvider } from "next-themes"; - +import { RecoilRoot } from "recoil"; export function ThemeProvider({ children, ...props }: React.ComponentProps) { - return {children}; + return + {children} + ; } diff --git a/apps/web/components/ui/upload.tsx b/apps/web/components/ui/upload.tsx index 9e979695..1e5bf1f6 100644 --- a/apps/web/components/ui/upload.tsx +++ b/apps/web/components/ui/upload.tsx @@ -1,7 +1,4 @@ "use client"; - -import JSZip from "jszip"; -import axios from "axios"; import { useState, useCallback } from "react"; import { Card, @@ -12,7 +9,6 @@ import { } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Progress } from "@/components/ui/progress"; -import { BACKEND_URL, CLOUDFLARE_URL } from "@/app/config"; import { cn } from "@/lib/utils"; export function UploadModal({ diff --git a/apps/web/next.config.js b/apps/web/next.config.js index c5bb7c7f..0533d8dd 100644 --- a/apps/web/next.config.js +++ b/apps/web/next.config.js @@ -34,6 +34,10 @@ const nextConfig = { protocol: "https", hostname: "images.unsplash.com", }, + { + protocol: "https", + hostname: "github.com*", + }, ], }, }; diff --git a/apps/web/package.json b/apps/web/package.json index 2469cc01..ecacb5a6 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -37,15 +37,17 @@ "framer-motion": "^12.4.2", "jszip": "^3.10.1", "lucide-react": "^0.475.0", - "next": "^15.1.6", + "next": "^15.2.4", "next-themes": "^0.4.4", "postcss": "^8.5.2", - "react": "^19.0.0", - "react-dom": "^19.0.0", + "react": "^19.1.0", + "react-dom": "^19.1.0", "react-hot-toast": "^2.5.1", + "recoil": "^0.7.7", "tailwind-merge": "^3.0.1", "tailwindcss": "^4.0.6", - "tailwindcss-animate": "^1.0.7" + "tailwindcss-animate": "^1.0.7", + "zustand": "^5.0.3" }, "devDependencies": { "@repo/eslint-config": "*", diff --git a/apps/web/services/image.service.ts b/apps/web/services/image.service.ts new file mode 100644 index 00000000..ae941d44 --- /dev/null +++ b/apps/web/services/image.service.ts @@ -0,0 +1,19 @@ +import { BACKEND_URL } from "@/app/config"; +import axios from "axios"; + + +export const getOldImages = async (token: string) => { + const response = await axios.get(`${BACKEND_URL}/images/old`, { + headers: { Authorization: `Bearer ${token}` }, + }); + return response.data; +}; + + +export const getImage = async (token: string, id: string) => { + const response = await axios.get(`${BACKEND_URL}/images/${id}`, { + headers: { Authorization: `Bearer ${token}` }, + }); + return response.data; +}; + diff --git a/apps/web/store/useRequestStore.ts b/apps/web/store/useRequestStore.ts new file mode 100644 index 00000000..38f36766 --- /dev/null +++ b/apps/web/store/useRequestStore.ts @@ -0,0 +1,21 @@ +"use client"; + +import { create } from "zustand"; + +interface RequestStore { + requestIds: string[] | null; + setRequestIds: (ids: string[] | null) => void; + addRequestId: (id: string) => void; + removeRequestId: (id: string) => void; +} + +export const useRequestStore = create((set) => ({ + requestIds: null, + setRequestIds: (ids) => set({ requestIds: ids }), + addRequestId: (id) => set((state) => ({ + requestIds: state.requestIds ? [...state.requestIds, id] : [id] + })), + removeRequestId: (id) => set((state) => ({ + requestIds: state.requestIds?.filter((requestId) => requestId !== id) || null + })), +})); \ No newline at end of file From 8964a5c58c97f08302563c6ed25add7befa14c33 Mon Sep 17 00:00:00 2001 From: rohitkumarxyz Date: Mon, 31 Mar 2025 11:06:36 +0530 Subject: [PATCH 2/3] added api for fetch old images and api for new generated images throgh longpolin --- apps/backend/index.ts | 51 +- apps/backend/middleware.ts | 4 + bun.lockb | Bin 303848 -> 310000 bytes package-lock.json | 1170 +++++++++++++++++------------- package.json | 5 +- packages/db/prisma/schema.prisma | 3 +- 6 files changed, 709 insertions(+), 524 deletions(-) diff --git a/apps/backend/index.ts b/apps/backend/index.ts index 313b4ea9..ae5a28c6 100644 --- a/apps/backend/index.ts +++ b/apps/backend/index.ts @@ -1,5 +1,5 @@ import { fal } from "@fal-ai/client"; -import express from "express"; +import express, { type Request, type Response } from "express"; import { TrainModel, GenerateImage, @@ -239,28 +239,50 @@ app.get("/pack/bulk", async (req, res) => { }); }); -app.get("/image/bulk", authMiddleware, async (req, res) => { - const ids = req.query.ids as string[]; +app.get("/poll/images/:requestId", authMiddleware, (req: Request, res: Response) => { + const requestId = req.params.requestId; + prismaClient.outputImages + .findUnique({ where: { falAiRequestId: requestId } }) + .then((imagesData) => { + if (!imagesData) return res.status(404).json({ message: "Image not found" }); + + switch (imagesData.status) { + case "Failed": + return res.status(404).json({ message: "Image failed" }); + + case "Pending": + return res.status(400).json({ message: "Pending" }); + + case "Generated": + return res.json({ images: imagesData }); + } + }) + .catch((error) => { + console.error("Error in /poll/images/:requestId:", error); + res.status(500).json({ message: "Internal server error" }); + }); +}); + + + +//get all old images of user with pagination +app.get("/images/old", authMiddleware, async (req, res) => { const limit = (req.query.limit as string) ?? "100"; const offset = (req.query.offset as string) ?? "0"; - const imagesData = await prismaClient.outputImages.findMany({ + const images = await prismaClient.outputImages.findMany({ where: { - id: { in: ids }, - userId: req.userId!, - status: { - not: "Failed", - }, + userId: req.userId, }, orderBy: { createdAt: "desc", }, - skip: parseInt(offset), take: parseInt(limit), + skip: parseInt(offset), }); res.json({ - images: imagesData, + images, }); }); @@ -276,6 +298,9 @@ app.get("/models", authMiddleware, async (req, res) => { }); }); + + + app.post("/fal-ai/webhook/train", async (req, res) => { console.log("====================Received training webhook===================="); console.log("Received training webhook:", req.body); @@ -307,7 +332,7 @@ app.post("/fal-ai/webhook/train", async (req, res) => { trainingStatus: "Failed", }, }); - + res.json({ message: "Error recorded", }); @@ -408,7 +433,6 @@ app.post("/fal-ai/webhook/train", async (req, res) => { app.post("/fal-ai/webhook/image", async (req, res) => { console.log("fal-ai/webhook/image"); - console.log(req.body); // update the status of the image in the DB const requestId = req.body.request_id; @@ -483,6 +507,7 @@ app.get("/model/status/:modelId", authMiddleware, async (req, res) => { } }); + app.use("/payment", paymentRoutes); app.use("/api/webhook", webhookRouter); diff --git a/apps/backend/middleware.ts b/apps/backend/middleware.ts index ee1eab9d..80595305 100644 --- a/apps/backend/middleware.ts +++ b/apps/backend/middleware.ts @@ -42,6 +42,8 @@ export async function authMiddleware( // Format the public key properly const formattedKey = publicKey.replace(/\\n/g, "\n"); + console.log("Formatted key:", formattedKey); + const decoded = jwt.verify(token, formattedKey, { algorithms: ["RS256"], issuer: @@ -49,6 +51,7 @@ export async function authMiddleware( complete: true, }); + console.log("Decoded token:", decoded); // Extract user ID from the decoded token @@ -60,6 +63,7 @@ export async function authMiddleware( return; } + // Fetch user details from Clerk const user = await clerkClient.users.getUser(userId); const primaryEmail = user.emailAddresses.find( diff --git a/bun.lockb b/bun.lockb index 90f6882e6feea26742dda0c36ac41b512571ffb7..5afcff79bf7f90fddce23b7b080a6bd4b48252d1 100755 GIT binary patch delta 64280 zcmeFad3Y36zpmZg(9n$_M5cg{I3uFqfTAK8MU9H$fS&uQsvz(F-23da&-eZDU6+0F^s|0dmcU;-FZH0Hrumcm`ed3PgzC~-|p zJX6)9*RQL`T|Vv33ZES~Z;d>jf~@3e8L6{9o~-1gX*u9eQ4qcfuYu>}W=+i?-Gv?N z61T$Z;C1mZ+>c+3|KRm_F2O%vUDh!F`rPcCq&d?){i``Ub;B=WV>?`#o8Yzay0{J& z2sl11J3D8=++@$pjEt$tS?ud>udG~UzPTCMIppbkm&Pke+kviRz?+LJ@ z4mc+{PbcO1g`hF<$F9GG>+B!J!|}Ua&&L}Qr{WFpM7$oJosyI_mvU-z$}Nb$r3sqh zZ{e5YPvA}QyKK+*6wD`a8DJvb1n=c~1g?tI!gb)EXa*hd6I=&;#r5rYec}zS--fFq zd9F`)eKf9aSWO`$3v#k&r%uhMrU^t;z92g}eV&?fTE^@Q%<~3EtqE_%>8mT|;mX$- zR}+@8T}?U=sC*q=Z{>PpT=`-zb@mG*Ru@)wiMnE}GEB|Qo|>`1<5|w>tDxWgj;Cc` zpE{R{6w*B6S-5I`744@pjKfv2NZ0G)9HXFVQ|po{S9H6HX4mn)r8w2IR&%GAD!2~& z0bIpgMmMPgYU3(yua#Nl^88ILom`i+a!MJ%+)&|$Sd~e1`Lx;DdDPMK2&Ji;lJZhB zvWdTpa7OJ(vr_YO)>5FR(eyUX zj*E#^-8yZZ>9aY~<6+-|ML2aWxX$&SxCUMmoHH%>jr{Tta9X6`S=aByH6Rz_G+aRv zu4ed?2NHvS%`}S|BYoCsk+sEg2b`1)t$+k-MXv7PtYY%L^vs zDlmlWz%6hM@F30*D)_piv;82h{5xvN-KXG}}Vp%$}K(^GRiT|>_HEcUBIIWH5d0yAbO<>%xiPxs79UNBE*l-| zd2)7cPU`GzPjYr*|`vy!RE2=Zy{dxAm`b$CZ& zjj8F$Q*&psJzXQ0S41q;(V6w?=N#~^e%3wJuE>A4zcWZvlCqypaE-y2aq;O1|Gs@Yoc;0( zR*}#NY{k`5>u|MP`9SA{)3T!$B&E;xBxTK=Co{O zMblH~Fa)x5FndGq5l%~PC%<~GaxJS|lryrDIDfJxjdHpm5!V3*;p&23u1`xznmvnr zm0kOvby?-=UAdaau)kU~InnWUZhVqhbD`Tm0&?7%;yfY+n(&ySWf0kHHxd>MQ zS5I&%Mn$rwC+B#Y!&T9G*ErX&Ag&76cln>h+P|h-P8HXG9p~_zl&p;0nJJzbsWWr4 zlC!P(!AAKN*E-!)dD2s7+g0&YULh*42vc)s%+Mt*H90vsHl~Z`rpZp3GiYVaqaN2e zb-NSS3bPEiCt!9Iw*y&86Q?-a)3P(>%t)P`Jc<3NYkomzdPC!G5w7lP>BjHlI@#o@ z&H-j5W#?p4x2)vc?9>?x&aV)S$fpC{$FR`JPt8i2mdr${H{Ida;A-_paBWXd&YGFr z$>T}ROP-dbaj=qEt^*g~8qhho4xHlpWLyVG#8tp9#-scTTmw2MJ8BLS(i5KQEW-EW z;!V<=#n_KGB(4hAg!nPVIpNRc9KYZl7wmQYDcr6xt^;p$eR}GQ8R{Hnq|CEmj%}Vd zsfdQb=jl$8!NIsO{? z6u&f#_E&s(9+0 z%-qzhJv%9z-tpMiGJNn2PX69ESfAFsBLAryo%(OZRV=NTl|&!TjY?0V z`kqH_avHwoLg&1^xbodkedYNK4;}teTNahV3Du9Az+oUCqV~X85b;Z#%i^t&K=EZ;zsaWmU%p_@Yms&U^m^+<1duC*0Me%7ZzwJ;u5*BFE=C^Q z9>uBINm*G*3q0MafLi2z_EW|7tfT$4@NEZNjBmnKfzR%D;v~*g+izX(oM{ASs_jV> zq>8o2wO=e1RKAzomTcz67vrkWi+_$pinSb(cZ>uz#l z)|M#l53^^()t94j9k`a8&x>pDoumRP=Y3rH20rNUr|^2j58`$3B3#GG-$X_=$?dof zI0~-~Oo1{rKXoPQ@1B zR5-t2@*_?Qj3%RM+y~czJL4DQSGaupHs=f)J?aj^+nnuH*sj@9^D$??=^4{>XTP^PC&ET;jyF@CJ;(f-{SqjFbG%hM%8sK5A`$(wX<~5;vy+>tD`Ct#!mr zh!^2H;~MOzrmaV;itNC(E~MeAK*dwe{-cRik)F6(y0u*M|AC!O##>z*7{y%5zSIuf|p3rf`)zdl&7mGx@Qq z12Ug?GLFU7xBYOPQQ2;1wD*3&saPqo#=yO}4%oiT>B7atI>XNFr|oTU&61;(uky<9 zaQqQm`>m=<`)i5Zy2ok41#U%VCTi4WUnx90d-TS}p)Taxs25RMceO&df z=K9aCIq}!Hic6cHtr=BDyU&vTAlRE6)|B3^pSdZm8TPSHo5 z8axM9i|-~@$xpeSo}81CF+JOpG;Lb)+?;IBmiMj34VvbUrlobFr$2Be?}87V7MX*q zB`^BO@!f1!aqr_A;s@aB$o<6f8ONM*65NjLh->J^eC+I(g{!=|Go$omGCTGYJAZz` z6(qvg&P+J@jB$I z&vupfUq87V^WT4TS^0qO&}YtpcH%m~LnoaIR?fZqPg>m@HqBpI&6!gB$fo+g_@(2O zALuG?-zsmzD)09y?*q9GM`cV+<9TDotW>&v8|A10H{t3C59g;f;Xgi!>+#Y(+tPQCWGJ5C-s*65DCcO9^9FM7Cclik*lh9d&|k34y8gG*Z6Wwi-!({a>i z56-%4>SJTO{ghMlq6OCKM>=(yd-HENROWkfZur^y)|&8yz@uA! zSUT#S(gP2qTZf!~Vm8SC3r%_@)X<*jZ-cG7#A{a(_kSD?Db6JJ>|Us%9O z>m2e830NiAqJUN2ITYLxsLYbtCpP#!k#id*73!CW8dW)8Zcp;gi&X`_c?PE3;FquV-T`vRBA=OJggo zS19-b*95yStMFY$6?rzQao(m@ zdEb!#8yJJVOT4es}(%~;T(LND9$M$Gp;&8R|0czo42E;o3CjzE3JRX zH@ulu(mxbj(v0cG_9|91C;dV*D{??6*r&P2(+5~nGcve{sApy5-%T{ais};YpWDLY znQEurCe`0gHE7AtB$V>aZfTWYwb1uyODpZ_Q1BzTTE}Zehhl@5wsH2@p!IgL(r-i z6dOz@(lqASePaC^i27Mko#Op1+Il>_?9{7~eEPSd-t1AeohAhvgO*bE(M#Ws6J~C( z&*=7=97;WYK26qC=1F2>-30tfAvnPn^H4KF}Fz_ zAeCyTI&tDjcFH2fWM=C(q?~*syHxJ`I4LGQTWis;iJpv>&9q3hh>8Tj2eDuO# zZ3dq@K4@ho#QMI9wMxc>f@2t-33dZB=z{kWsoEZ^v_q`_HKHC?`rvqfpqrgyEcNeZ zl_!RR3jrF-WMmNii%9c?xy2y;mB<;#nf+pY{kmJ_V?)7>5KTYE4TJj_uy4rMBHk() z7Ya^gI%he%Q-^nmRCHCgH57?N>zuF4%|2IbP=6xBw|NRlwfuAdxCoRVNgz z)$9CjAj`#am9J*RjJ>&gxPKw!*M@mKct4?~1ZLbwi1pRI+KQYO3Qk}-VN7W<&{KC2(O~ZGhlvvHZ5o!5 z30CCvkS{aAN}C=EZl$x`oIPTLUlXa;TwxMpeH{l{k;%;cffr1v;Qd7E2pWZsI7g(O zbDC(vAZLKk1T18$h~li%p&kJe?k*go8JB)VZd(wk#qBFra4V6z-WixDh+>H@R&V&4 z46({*hJ1-btjLs5@W~|Yt%ZOs^o43Z?p7c{Hm`h6a^ID}7nW%1L*T`3IgjJpv3J#`gbk_Ej+rO5G z^Gu5m9wc?8y{j&ze-b(KDw-bc$=#6lp&;h*twh?!7$@feBK0qWWgKlvq*6GGF0p|O zPDowy*EQtHQC3=dDEI>#oZ@v2i5~4l8o6-+0%xeQF#C&%xb5i{@2ePXmCOkRW5zfG z$QkA7L@I}hv9xa;W2I$;f~SF+tuzADrY)mKQ8ladfw+JhP<2MyRyT5b>qPy> zR+d~59qV62)YVGw7a!b7${D~K>fedmhoU_H72JB#nB03!Ce=x);2lcYrD`0!IL<1` z3I%(NcP6iWDBo@4t;p<>1;mbgflBFBG(Z9f8%Y3g*NfB6T^7BNN;|sdDnGeG-XOE9T4YxB!8cGkb;w zcN1v=qh!X7f3nl~^cjodKq8GPx~XTZe+dzd-z7fy94Soza?yQ15vc@wQS&8SXO%DD z&geQT^7@efi|gohD~h$d#T1W+>m94LDm0Tw4P%e~;6p^}Oj=}qT!27@Q=uNQ{(eci zf6>G!BE|Zq!z_pmej#p0rQKqK5mTMws1OTE4v{KE#6|s?saE-oA^&M$S9>V5oaQtJ zXH^szAkeVn28d!W31aBwOeq0k+^S>q1 zejJ~kXqoJcJo<&HxPeGh_^&np8%SRWO+mwSoN<1{aCMpMMt|jg9HRQtR8PbO2%PF_ z8eK8dS-xpuq9meg$mmpXR*JI>vMoI}cy+4t@r)&!)qh8-6}c!Bj7@VEK59KDHn^Nf zYa>&GE72h$RwA{;thlPPXg|9plavD6cTfKHM7^x^{_*}}=Tn!>rkU*9{-oJf+ASg9 zeY35STSCF3a1C9WoqLdA`uWw0l_Hi%vVLy??kSZc3UVIInNo7_5=;iBGP!{YRPi8W1bbcG8Fs@=u89M zhPR$?m8=Z;Qs!Ib*oOI5D_x#a=#~@B)XgvvE zPz_sxr(46|CYL+c{9{Dt z*YjYV8!A^qW_)lWky_cl9|$}^q=Wud#p4hyH}-vwztN4fjvn3whmz8ubneb?B68MK z4UN4-n(xk95V)!GL^R~CB68LVo#gdI=WFJFmgp)gs;HM=ZSK^4;=&8}Uh78A^=?)E z`MNXj-XrQ^*N97~zit8B?8i(K3+zw-2H-3mT9S?uX*|)o+#S>|yr7$dBhN<^6tLXr zuVv*hL1@vU^tukFm!vYughYq9GJVu_Esc`3EeuKh)nF?{BqCtrkUU3#rL=s@ifr*%7;j z6#a8=d~gG)-cG%^hxmkuhXUm2x3xzCILqbER|d;Ec^?D}&zKt+WjxU%_gtWJAdR{%ReN zq3LgSr`_sYM<9kQ`dX)pX(f3!z{gsyDN zs!*)I>)m>armEjgid)AJmjzN|v@rRH7(S?IHTG{Ib(NjEc#ZvxjfXTADQ<~Ky-v#6 zT6e9z4!{PJa<(oe#Y0u<{yHgL7o1}^yvME*rH>@VU?sJR)DRszSV1b$&Rfd*GJc&n zH#Po0N!hb2IPu=fv8;vJ{1x?$^&cYYVt*{HexI8P#*^wwiHvU+>&*M~c+|fQILbcs zpQOgxr;~WUu7-NHG5NsLYE$LeX+fMrqzUf~ zr3Z=n5^?E_i4C428sKbO9_x?VY!47_+zUzdwio3xQX0G54st!O{-DM*E$B;pP){WN zuK-5a85=)D|5Y9)FqKHvb1VE|uquG7VrCB|#@Ld#wYNXK#2xCsxg}QG_E7LuKo@pqQRDXN&l0N~*kh~nM3O~< zoAo=1)JH5039-S~h@3Xj;(75S=cgWv%SHQ7#e{+GuyMF;k8CpA^f*KoU)wx?HMyK@T8t;;SVXC33R;;-_QPFvIe zYEswQC#uWM14Pb3q+FNmP}w?O7AYRdbE40a;%6|NP+(`}C}zT7ecGB$``xaD&G?d`d&D{dQi?VB705p-${xKL|xe3iS8$I#x7$t_%4yE zX>V)u+)EzM^@=#_=gU^w zD_5Og4SnhRt@2kwz9ajs$X7#wD-Sr+@cj1RT!^L|P0E`5FQOhq_8pb4+ACJ%YoXxP zuT)-jqI2j*H?kkg`adAzD#cxJ>sOu2zsJ6(7)RuEf>y91H{wH88lTySbZg}-yO+G? z+>3-+neWAUU$fHQ2>Ehevr66w1s`EkZ!+?O1TJvnU)Ol!v3+n0DUDc)<1+Z28#y7QZ?Rmsz^?LC_-?hbK*?5d2Yn|%R}^oM8oy*G1%;_^V6AU zjW@n!l^+ZRR~&Rk6Hha_!WV3)uoQflVE?w22esLhqQ7zvhdA9tZT%~W><3K2mq~T4tZDEZQ70n0mig7;T_VFPul=rr@ZhRPd|*APE-KUhG2173 z!K%(Cex6tNNM(gHXT*7rSZPN?!8>5iNveALiBwrVA5f0S_qoI!b@rl*==kf2G{~9M zJh|IX#7XnK%=f-iC2}zpdJuJWs>_q9zXA^N1d$4$hxWt?VqOwTYOM?&RW<; zePES*7z!=|_9Tn*ql{V~IzQYZ;y(8_qN{Z?>^tGqU#7U&EGMNwYft;&A)>zaLG<~u{&8o}I@=}?IbEv7a{2jfnxL-} zaU;WZJoss4+m$Yi3lONaI3H%j!$eMN=@HaNM7mvIv{GE#&zyyULye2`erAo)h|so-X2vq@2t7mh-9KNR70&4*9~KzvNp-YOu||AQhvO z@6wZ2ImelL(u({%6x@E&Ia~Wj6TV+gS|z~Fr<{Rd-|6|%Pg#*CLjDJU_WgG7JyKdb zm}GpuxbjQ;@;A0efP_1@?u`w;Mbw{60nJ2Ty>hGMi%@WQxzjW}QD7mvl}NqgM0jcd$T&NlmJEdE(U&U1qGq;yF8M|8oDh`JMzi{}^(zt*{*?iC-LN-73! zcZkn?ZKZwLU4KBR-*@r&P%Wg_-+487U3=^Q%vme6_uIu<75s_8Wy7pcMD`B%Ig(#8uEjcmMxmZ*{?rIy1G0 zyukHBxmEO4>wMA0E?wgKQrDN^di|a2d{-d(ZAj&;M0#E5;amB0L7|*v0SnYxf zT@8Mh%jMd!$c^QS??&p_dyro8>Zn)&uM1uIH`?? zs@66)eiYYBuI-O0;3ZeSClv6KYx|Q(?X}&FpThN$Yx@obyzqP*>?BY@+(g^23tjwq zq#bwLTOC*Yf*W7xI`E4wm+J)gBh6B71?<;fKKeg`|9Py6zKeX;N2goc3&UqlVV?gl zy#~iPjas5Qw24l)fmatICt-I)I2+Vnjr8`vab;=Do6qX`Z9{9ww*eGxuQQjqd&`w< zs$6(8m&=uG?s^N?TMF`$E7^)S?RSOC1Msqg+ea>@3^Yi+s%KWi}!_V zQ$Ke*ZvVlOXNU{rN)B~nxpo}x#&RV`xbcN9G?F)+`xtlog|2eOx?Ha0I4@&BiSfK? zE=_ZN4z3;M;{5Yu@}?HbRq(%Y?Kj`eccBO1c5`3o7Xs~5z?;tCX14&jlDD|AT*<|* zFLAkC$)#>AS8^F|s?Z9T%ay#wP~xnU9RLKyan;?E|;sqJ8+fvjO)8_{&}9~P1|2k zaNg;E0d08E^}TL}3ta`i>~gvCAHeu=+F$(20h#&RX!abvm0pXV?M75JXJ zL9XNx*N?jXz96p)T`lmL%P(}H&t3jsxxEG|Ll`@p!L`p%ys1KG75u;CD(V-vybIhu zzP&-y!^=_C)Kzg+pqk!XS2Eznf9Kl24%?OG5;vb*<<)m%xu$U=H*VzP_^MQ6fLIgP zo8sEBx#0iCwQjU`^LKFbU+5~oBU~QsZkH?Wl<$I07kDi;^l~%wcDY=GZGap9ovQ_g zy4&SS4tHa@_8)`mz=OSCgVEb43}T%+CJ0Gmx3!xnw#%J zzeKl6H@X>bax=(Pz(O~cD_P+3Lf03$elyNL&tf-T;>OEdU*Y;~uHTNU{8e^L|F3qz zovvH<2JTng_-;2|gX?vntDv=RzI)v5a*c`2xSG5KuZcf}>;85Zu4(%cuJPyDPeL!b z3Ot|<_^Z6BOAfmJo*=IaU4!&}m&>*P2Y6ll8(f>db-^$NyyV(p z6s{&5hilU{u1~_XJqg!=rn#Q%`b=C0NWt}z>%enx4cd9QX4%bEIDZwi6rh5Z<9hv9 zu7X#PPy5}DD_-U9zZzGC@5c3#>%jNAv0TaZZoEF9gbLVzYj8Z|##?X|v<>H<=W*Ac z#C6~uxbi>m@-kc}um{(E`*9uk4P5!(#`)(t?D7v3@XA+075ESr``GnQT|a@Vz;f5W z#Z}-BxDI&6^`CM6d46^M9Ikv`-o&fAUfuN?I45wGCyay&s*9^nn&EoMwPQ=yuWE>q=&t~E+#B`hfjW(a0L|{D?uHe(_-(iju-fH!;d;r%*WxTJ{u|s_ zuKW++YN;o2Rp@D42YeRS%k_Lap$)s-4RXc1T`zO_f5)}o9`dU~dtKj$YaM>mE$82z z{{MII_pu5-NC7&tcie&xy9LTGhyUpEGcNz{xW=F77j{tJRZ}~;t~03a#&VTe(~bWp zuJUTR`(Nlf{@-rU=&a}N@OQ3J-;C`V3$5IIa<$YIZY)>a#*P2Ro%tW>X81c-0qxnY z19f!0i<@7r?OomYLRVMm>*w^6D_=aWmgwPn&uZlI7S-}L%-8uQxY_^Cwc9{<`+wy+ z><~BK-?@h3Shj02&UW+RMX!3pieB^9sZ_o?Jd^EOWfr*kMfxPBY1^7&Ixdt4}Czy8kEAFJIR?sN-KX00}o4xmx3*WbB{)(w|l z|4(<0|2G@{+MzwkUPu+`hg9?aNUsZB+Y^u~GzjT+p=-avNZW@Zy@tBSw}F~&gpL2+ zwc{wHE=_Us{olCCne>1B0Ng$Bh5PBubRzNs*9+zUJO|%cIkYy?9(vjS&vWoY`jcI~ z4mtLJ<(fF}qJN%)GXpgV|9KAnUq2VuO4?fu^&edPpXcBgKK51%c>;Qu@a|K~Zl^HkxV z=ivW52mj|e_=V5M^+D{P=inDU5C7*m_}@Pl*XPi`d;Sf!`TtLzgI}ro{`a4Qn{MIW zoZjD^>elAR20uRMJNf+K?Cs5toa@kc|McD0?szTz^uV?aIz8NAu=k6)UwnUPRdxo`o^y7Qi1@HRmzNOt4Z@KT!XV3Pp|MTNvJ@zM! z^~Y@6w#51P|3~dV_~=*F6o-4qdHv=WSv51V5mwziEDIQKV=QPU$ZD8U*+nLJsdt=7 zY2vMA(l7N6#wx;nL(FB5vMKyBZ>=HkE&Xo7MPrVwKASW2vhHTc@|2Hq%l_!sY1yKo z*P53fE^8itU`yPw;V;zwWoL)SR(#!Ko2UF-!Ia4#S2SF8BtG-~_D|UlC!E^VHepRT z*nWyNxlK4&m?;y;YYK>_yKP&NHfo5BMTy%zLa-@3`awq7!7bE6tJ54~(@zxOIWZ<*hCSkcm7 zuG~~_Pt?%dKjwb^hqGe2G*VweZobI~R6v~>Iqq56PbTh1}S&rpjUU^`=>NwvY z?W?UC9M)?7f-xV|Usup?+aqtbS#b1;TN>Xp=IDktmoM41w(qO&f0A-_=+(5=hc5cV z47#Mj#?w^(Uq)jo7p`^O8-E-W`Uy~XLTHa*uPy+xfhcf4{mruys4_w1>A z>Ac&1%0K6|zU;8$@&kk7`?O4cC+_Q}-5!j*zobizyTaOA6@|&a*X((C&%i6(g7q`x z<`)*+J+kq^maE4<*W%;#pO3k`agAYPwtka8{niINZkrx)-2(&PeX>FN%GbX8;i;F` zzkc+|H||}qVaoDT6Y5>`?B}V2o5pn6*2Vel)vERnr(0ZDaFfy3hi`7OE#|T7Gd$Ce zogRKHyXUTIBW9i3eRa;Q?W~NOVs~x-e0AxbhrX+L`n#M@J15ruwARnfzyG$wuboQ% zwe+g`PD^+K1(ezH!g2>b{q7xWHx1r?;@F^L6|ILf>{y(CZCq}x=>ALYYdIk9&z+aI z=uuMd=udy&jG3)Y&)q8f!XY(h1{C1b)KSiY0zo^~jf*DQkczM;cZb#|IY*$=Z@H@fR z7QXTH7m)+&blhEU!6lCk`nhQClm|C%`DEMlTdTj5pLfewuk5KmFL&6%k2?MQTkV7) zEsj)~xqZ&otSMbyI{oMA52o4WdIBo9wf*O*ZsAprZG7tW=lj3VKKkC%OY^?9uG;Wu z`lr3RdhY+V?=QKXl0)MX|M=Q>UxM%S*u8HAOVfY-d`@g}hr)AJe?L9`c+?X&cf7$a z*qJSD%r7mO7;VkSR#>EYSk}&XBe3>nf-K6E%C0oQE3ghGN!HOkEsHi`t+7rfRo2;* z$-0MzaHJJo10<=nf)?KCULkyE=Fq7oXi&<;qRzQK8A5yX~Dk^Vq0It5=yf==z&~GLt%S4NLCGfrgsWjvOew zGY6_44H#~cq5=B__6dwMVVwYZT>!bA0HaNrK${pqL}x&v$?Oa`B5+t>oN3;Lw`E-c zi@N|On1cdwv4EHuz(i9R12`pcLST}K?h05F2PoR7

aO%2#{+s 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�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 diff --git a/package-lock.json b/package-lock.json index fd1953ae..f3b75421 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,7 @@ }, "apps/backend": { "dependencies": { + "@clerk/clerk-sdk-node": "^5.1.6", "@clerk/nextjs": "^6.11.2", "@fal-ai/client": "^1.2.3", "@neondatabase/serverless": "^0.10.4", @@ -31,7 +32,8 @@ "express": "^4.21.2", "jsonwebtoken": "^9.0.2", "razorpay": "^2.9.5", - "stripe": "^17.6.0" + "stripe": "^17.6.0", + "svix": "^1.57.0" }, "devDependencies": { "@types/bun": "latest" @@ -43,12 +45,18 @@ "apps/web": { "version": "0.1.0", "dependencies": { + "@clerk/themes": "^2.2.19", "@radix-ui/react-dialog": "^1.1.6", + "@radix-ui/react-dropdown-menu": "^2.1.6", "@radix-ui/react-label": "^2.1.2", + "@radix-ui/react-progress": "^1.1.2", + "@radix-ui/react-scroll-area": "^1.2.3", "@radix-ui/react-select": "^2.1.6", "@radix-ui/react-slot": "^1.1.2", "@radix-ui/react-switch": "^1.1.3", "@radix-ui/react-tabs": "^1.1.3", + "@radix-ui/react-toast": "^1.2.6", + "@radix-ui/react-tooltip": "^1.1.8", "@repo/ui": "*", "@stripe/stripe-js": "^5.6.0", "@tailwindcss/postcss": "^4.0.6", @@ -57,17 +65,19 @@ "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "common": "*", + "date-fns": "^4.1.0", "embla-carousel-autoplay": "^8.5.2", "embla-carousel-react": "^8.5.2", "framer-motion": "^12.4.2", "jszip": "^3.10.1", "lucide-react": "^0.475.0", - "next": "^15.1.6", + "next": "^15.2.4", "next-themes": "^0.4.4", "postcss": "^8.5.2", - "react": "^19.0.0", - "react-dom": "^19.0.0", + "react": "^19.1.0", + "react-dom": "^19.1.0", "react-hot-toast": "^2.5.1", + "recoil": "^0.7.7", "tailwind-merge": "^3.0.1", "tailwindcss": "^4.0.6", "tailwindcss-animate": "^1.0.7" @@ -106,8 +116,6 @@ }, "node_modules/@clerk/backend": { "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@clerk/backend/-/backend-1.24.0.tgz", - "integrity": "sha512-DlOZ9pnCY77ngHKFZzC7ZImHBVjMf2whPLvnnBt4YXjkvuQ3m1v1tQHUXb8qqlwilptHU4/WzkOlXytez+iJ+A==", "license": "MIT", "dependencies": { "@clerk/shared": "^2.21.0", @@ -122,23 +130,13 @@ }, "node_modules/@clerk/backend/node_modules/cookie": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", - "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", "license": "MIT", "engines": { "node": ">=18" } }, - "node_modules/@clerk/backend/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "license": "0BSD" - }, "node_modules/@clerk/clerk-react": { "version": "5.22.12", - "resolved": "https://registry.npmjs.org/@clerk/clerk-react/-/clerk-react-5.22.12.tgz", - "integrity": "sha512-afaatXlyBlG1zRSQyRGLKS7eJZn46WZhAyBAswfIahXBtf9rMTzT4gCj4vYUm5wtnypneOIl3RYy07CkCSRcCQ==", "license": "MIT", "dependencies": { "@clerk/shared": "^2.21.0", @@ -153,16 +151,21 @@ "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-0" } }, - "node_modules/@clerk/clerk-react/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "license": "0BSD" + "node_modules/@clerk/clerk-sdk-node": { + "version": "5.1.6", + "license": "MIT", + "dependencies": { + "@clerk/backend": "^1.21.6", + "@clerk/shared": "^2.20.6", + "@clerk/types": "^4.40.2", + "tslib": "2.4.1" + }, + "engines": { + "node": ">=18.17.0" + } }, "node_modules/@clerk/nextjs": { "version": "6.11.2", - "resolved": "https://registry.npmjs.org/@clerk/nextjs/-/nextjs-6.11.2.tgz", - "integrity": "sha512-n8pwaKIdkk/AGmadIyhfsOmFixFXrmjAL524B1zJ+L6nOApyXpn8XncNavkdkoiZaP9j6iyhJUOXFZZ7IhVaNQ==", "license": "MIT", "dependencies": { "@clerk/backend": "^1.24.0", @@ -182,16 +185,8 @@ "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-0" } }, - "node_modules/@clerk/nextjs/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "license": "0BSD" - }, "node_modules/@clerk/shared": { "version": "2.21.0", - "resolved": "https://registry.npmjs.org/@clerk/shared/-/shared-2.21.0.tgz", - "integrity": "sha512-8uszJbdyfpk/qmu4SoIiT3T79TgSJe2uRm0m2isRZeGWw5DQFlf/dAF3iGOj7p2ad+24SGYb4cXwrrRdYyO8KQ==", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -218,10 +213,29 @@ } } }, + "node_modules/@clerk/themes": { + "version": "2.2.19", + "license": "MIT", + "dependencies": { + "@clerk/types": "^4.46.1", + "tslib": "2.4.1" + }, + "engines": { + "node": ">=18.17.0" + } + }, + "node_modules/@clerk/themes/node_modules/@clerk/types": { + "version": "4.46.1", + "license": "MIT", + "dependencies": { + "csstype": "3.1.3" + }, + "engines": { + "node": ">=18.17.0" + } + }, "node_modules/@clerk/types": { "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@clerk/types/-/types-4.45.1.tgz", - "integrity": "sha512-lS3Q8Ih4CasMY3ed7u+bXdO/s0OF1DIbSUhzQSKpfluzUxxkkFlPiRKsefctL4cnGt4fOzyD+T9ebF0up6sUkA==", "license": "MIT", "dependencies": { "csstype": "3.1.3" @@ -387,8 +401,6 @@ }, "node_modules/@floating-ui/core": { "version": "1.6.9", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz", - "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==", "license": "MIT", "dependencies": { "@floating-ui/utils": "^0.2.9" @@ -396,8 +408,6 @@ }, "node_modules/@floating-ui/dom": { "version": "1.6.13", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz", - "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==", "license": "MIT", "dependencies": { "@floating-ui/core": "^1.6.0", @@ -406,8 +416,6 @@ }, "node_modules/@floating-ui/react-dom": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", - "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", "license": "MIT", "dependencies": { "@floating-ui/dom": "^1.0.0" @@ -419,8 +427,6 @@ }, "node_modules/@floating-ui/utils": { "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", - "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==", "license": "MIT" }, "node_modules/@humanfs/core": { @@ -479,36 +485,19 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@img/sharp-darwin-arm64": { + "node_modules/@img/sharp-win32-x64": { "version": "0.33.5", "cpu": [ - "arm64" + "x64" ], - "license": "Apache-2.0", + "license": "Apache-2.0 AND LGPL-3.0-or-later", "optional": true, "os": [ - "darwin" + "win32" ], "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.4" - } - }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.0.4", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], "funding": { "url": "https://opencollective.com/libvips" } @@ -550,7 +539,9 @@ } }, "node_modules/@next/env": { - "version": "15.1.7", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.2.4.tgz", + "integrity": "sha512-+SFtMgoiYP3WoSswuNmxJOCwi06TdWE733D+WPjpXIe4LXGULwEaofiiAy6kbS0+XjM5xF5n3lKuBwN2SnqD9g==", "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { @@ -562,7 +553,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "15.1.7", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.2.4.tgz", + "integrity": "sha512-1AnMfs655ipJEDC/FHkSr0r3lXBgpqKo4K1kiwfUf3iE68rDFXZ1TtHdMvf7D0hMItgDZ7Vuq3JgNMbt/+3bYw==", "cpu": [ "arm64" ], @@ -576,12 +569,13 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "15.1.7", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.1.7.tgz", - "integrity": "sha512-2qoas+fO3OQKkU0PBUfwTiw/EYpN+kdAx62cePRyY1LqKtP09Vp5UcUntfZYajop5fDFTjSxCHfZVRxzi+9FYQ==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.2.4.tgz", + "integrity": "sha512-3qK2zb5EwCwxnO2HeO+TRqCubeI/NgCe+kL5dTJlPldV/uwCnUgC7VbEzgmxbfrkbjehL4H9BPztWOEtsoMwew==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -591,12 +585,13 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.1.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.1.7.tgz", - "integrity": "sha512-sKLLwDX709mPdzxMnRIXLIT9zaX2w0GUlkLYQnKGoXeWUhcvpCrK+yevcwCJPdTdxZEUA0mOXGLdPsGkudGdnA==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.2.4.tgz", + "integrity": "sha512-HFN6GKUcrTWvem8AZN7tT95zPb0GUGv9v0d0iyuTb303vbXkkbHDp/DxufB04jNVD+IN9yHy7y/6Mqq0h0YVaQ==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -606,12 +601,13 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.1.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.1.7.tgz", - "integrity": "sha512-zblK1OQbQWdC8fxdX4fpsHDw+VSpBPGEUX4PhSE9hkaWPrWoeIJn+baX53vbsbDRaDKd7bBNcXRovY1hEhFd7w==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.2.4.tgz", + "integrity": "sha512-Oioa0SORWLwi35/kVB8aCk5Uq+5/ZIumMK1kJV+jSdazFm2NzPDztsefzdmzzpx5oGCJ6FkUC7vkaUseNTStNA==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -621,12 +617,13 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.1.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.1.7.tgz", - "integrity": "sha512-GOzXutxuLvLHFDAPsMP2zDBMl1vfUHHpdNpFGhxu90jEzH6nNIgmtw/s1MDwpTOiM+MT5V8+I1hmVFeAUhkbgQ==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.2.4.tgz", + "integrity": "sha512-yb5WTRaHdkgOqFOZiu6rHV1fAEK0flVpaIN2HB6kxHVSy/dIajWbThS7qON3W9/SNOH2JWkVCyulgGYekMePuw==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -636,12 +633,13 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "15.1.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.1.7.tgz", - "integrity": "sha512-WrZ7jBhR7ATW1z5iEQ0ZJfE2twCNSXbpCSaAunF3BKcVeHFADSI/AW1y5Xt3DzTqPF1FzQlwQTewqetAABhZRQ==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.2.4.tgz", + "integrity": "sha512-Dcdv/ix6srhkM25fgXiyOieFUkz+fOYkHlydWCtB0xMST6X9XYI3yPDKBZt1xuhOytONsIFJFB08xXYsxUwJLw==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -651,12 +649,13 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "15.1.7", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.1.7.tgz", - "integrity": "sha512-LDnj1f3OVbou1BqvvXVqouJZKcwq++mV2F+oFHptToZtScIEnhNRJAhJzqAtTE2dB31qDYL45xJwrc+bLeKM2Q==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.2.4.tgz", + "integrity": "sha512-dW0i7eukvDxtIhCYkMrZNQfNicPDExt2jPb9AZPpL7cfyUo7QSNl1DjsHjmmKp6qNAqUESyT8YFl/Aw91cNJJg==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -666,12 +665,13 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.1.7", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.1.7.tgz", - "integrity": "sha512-dC01f1quuf97viOfW05/K8XYv2iuBgAxJZl7mbCKEjMgdQl5JjAKJ0D2qMKZCgPWDeFbFT0Q0nYWwytEW0DWTQ==", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.2.4.tgz", + "integrity": "sha512-SbnWkJmkS7Xl3kre8SdMF6F/XDh1DTFEhp0jRTj/uB8iPKoU2bb2NDfcu+iifv1+mxQEd1g2vvSxcZbXSKyWiQ==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -774,20 +774,14 @@ }, "node_modules/@radix-ui/number": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", - "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==", "license": "MIT" }, "node_modules/@radix-ui/primitive": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.1.tgz", - "integrity": "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==", "license": "MIT" }, "node_modules/@radix-ui/react-arrow": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.2.tgz", - "integrity": "sha512-G+KcpzXHq24iH0uGG/pF8LyzpFJYGD4RfLjCIBfGdSLXvjLHST31RUiRVrupIBMvIppMgSzQ6l66iAxl03tdlg==", "license": "MIT", "dependencies": { "@radix-ui/react-primitive": "2.0.2" @@ -809,8 +803,6 @@ }, "node_modules/@radix-ui/react-collection": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.2.tgz", - "integrity": "sha512-9z54IEKRxIa9VityapoEYMuByaG42iSy1ZXlY2KcuLSEtq8x4987/N6m15ppoMffgZX72gER2uHe1D9Y6Unlcw==", "license": "MIT", "dependencies": { "@radix-ui/react-compose-refs": "1.1.1", @@ -848,8 +840,6 @@ }, "node_modules/@radix-ui/react-context": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz", - "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", "license": "MIT", "peerDependencies": { "@types/react": "*", @@ -863,8 +853,6 @@ }, "node_modules/@radix-ui/react-dialog": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.6.tgz", - "integrity": "sha512-/IVhJV5AceX620DUJ4uYVMymzsipdKBzo3edo+omeskCKGm9FRHM0ebIdbPnlQVJqyuHbuBltQUOG2mOTq2IYw==", "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.1", @@ -899,8 +887,6 @@ }, "node_modules/@radix-ui/react-direction": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", - "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", "license": "MIT", "peerDependencies": { "@types/react": "*", @@ -914,8 +900,6 @@ }, "node_modules/@radix-ui/react-dismissable-layer": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.5.tgz", - "integrity": "sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg==", "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.1", @@ -939,10 +923,35 @@ } } }, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.1.6", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-menu": "2.1.6", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-focus-guards": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", - "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", "license": "MIT", "peerDependencies": { "@types/react": "*", @@ -956,8 +965,6 @@ }, "node_modules/@radix-ui/react-focus-scope": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.2.tgz", - "integrity": "sha512-zxwE80FCU7lcXUGWkdt6XpTTCKPitG1XKOwViTxHVKIJhZl9MvIl2dVHeZENCWD9+EdWv05wlaEkRXUykU27RA==", "license": "MIT", "dependencies": { "@radix-ui/react-compose-refs": "1.1.1", @@ -981,8 +988,6 @@ }, "node_modules/@radix-ui/react-id": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", - "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", "license": "MIT", "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.0" @@ -999,8 +1004,6 @@ }, "node_modules/@radix-ui/react-label": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.2.tgz", - "integrity": "sha512-zo1uGMTaNlHehDyFQcDZXRJhUPDuukcnHz0/jnrup0JA6qL+AFpAnty+7VKa9esuU5xTblAZzTGYJKSKaBxBhw==", "license": "MIT", "dependencies": { "@radix-ui/react-primitive": "2.0.2" @@ -1020,10 +1023,46 @@ } } }, + "node_modules/@radix-ui/react-menu": { + "version": "2.1.6", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.5", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.2", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.2", + "@radix-ui/react-portal": "1.1.4", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-roving-focus": "1.1.2", + "@radix-ui/react-slot": "1.1.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-popper": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.2.tgz", - "integrity": "sha512-Rvqc3nOpwseCyj/rgjlJDYAgyfw7OC1tTkKn2ivhaMGcYt8FSBlahHOZak2i3QwkRXUXgGgzeEe2RuqeEHuHgA==", "license": "MIT", "dependencies": { "@floating-ui/react-dom": "^2.0.0", @@ -1054,8 +1093,6 @@ }, "node_modules/@radix-ui/react-portal": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.4.tgz", - "integrity": "sha512-sn2O9k1rPFYVyKd5LAJfo96JlSGVFpa1fS6UuBJfrZadudiw5tAmru+n1x7aMRQ84qDM71Zh1+SzK5QwU0tJfA==", "license": "MIT", "dependencies": { "@radix-ui/react-primitive": "2.0.2", @@ -1078,8 +1115,6 @@ }, "node_modules/@radix-ui/react-presence": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.2.tgz", - "integrity": "sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==", "license": "MIT", "dependencies": { "@radix-ui/react-compose-refs": "1.1.1", @@ -1102,8 +1137,6 @@ }, "node_modules/@radix-ui/react-primitive": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.2.tgz", - "integrity": "sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==", "license": "MIT", "dependencies": { "@radix-ui/react-slot": "1.1.2" @@ -1123,10 +1156,30 @@ } } }, + "node_modules/@radix-ui/react-progress": { + "version": "1.1.2", + "license": "MIT", + "dependencies": { + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-roving-focus": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.2.tgz", - "integrity": "sha512-zgMQWkNO169GtGqRvYrzb0Zf8NhMHS2DuEB/TiEmVnpr5OqPU3i8lfbxaAmC2J/KYuIQxyoQQ6DxepyXp61/xw==", "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.1", @@ -1154,10 +1207,37 @@ } } }, + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.2.3", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-select": { "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.6.tgz", - "integrity": "sha512-T6ajELxRvTuAMWH0YmRJ1qez+x4/7Nq7QIx7zJ0VK3qaEWdnWpNbEDnmWldG1zBDwqrLy5aLMUWcoGirVj5kMg==", "license": "MIT", "dependencies": { "@radix-ui/number": "1.1.0", @@ -1215,8 +1295,6 @@ }, "node_modules/@radix-ui/react-switch": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.1.3.tgz", - "integrity": "sha512-1nc+vjEOQkJVsJtWPSiISGT6OKm4SiOdjMo+/icLxo2G4vxz1GntC5MzfL4v8ey9OEfw787QCD1y3mUv0NiFEQ==", "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.1", @@ -1244,8 +1322,6 @@ }, "node_modules/@radix-ui/react-tabs": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.3.tgz", - "integrity": "sha512-9mFyI30cuRDImbmFF6O2KUJdgEOsGh9Vmx9x/Dh9tOhL7BngmQPQfwW4aejKm5OHpfWIdmeV6ySyuxoOGjtNng==", "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.1", @@ -1272,10 +1348,72 @@ } } }, + "node_modules/@radix-ui/react-toast": { + "version": "1.2.6", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.5", + "@radix-ui/react-portal": "1.1.4", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.1.8", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.5", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.2", + "@radix-ui/react-portal": "1.1.4", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-slot": "1.1.2", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-use-callback-ref": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", - "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", "license": "MIT", "peerDependencies": { "@types/react": "*", @@ -1289,8 +1427,6 @@ }, "node_modules/@radix-ui/react-use-controllable-state": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", - "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", "license": "MIT", "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.0" @@ -1307,8 +1443,6 @@ }, "node_modules/@radix-ui/react-use-escape-keydown": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", - "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", "license": "MIT", "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.0" @@ -1325,8 +1459,6 @@ }, "node_modules/@radix-ui/react-use-layout-effect": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", - "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", "license": "MIT", "peerDependencies": { "@types/react": "*", @@ -1340,8 +1472,6 @@ }, "node_modules/@radix-ui/react-use-previous": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", - "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", "license": "MIT", "peerDependencies": { "@types/react": "*", @@ -1355,8 +1485,6 @@ }, "node_modules/@radix-ui/react-use-rect": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", - "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", "license": "MIT", "dependencies": { "@radix-ui/rect": "1.1.0" @@ -1373,8 +1501,6 @@ }, "node_modules/@radix-ui/react-use-size": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", - "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", "license": "MIT", "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.0" @@ -1391,8 +1517,6 @@ }, "node_modules/@radix-ui/react-visually-hidden": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.2.tgz", - "integrity": "sha512-1SzA4ns2M1aRlvxErqhLHsBHoS5eI5UUcI2awAMgGUp4LoaoWOKYmvqDY2s/tltuPkh3Yk77YF/r3IRj+Amx4Q==", "license": "MIT", "dependencies": { "@radix-ui/react-primitive": "2.0.2" @@ -1414,8 +1538,6 @@ }, "node_modules/@radix-ui/rect": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", - "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", "license": "MIT" }, "node_modules/@repo/eslint-config": { @@ -1430,10 +1552,12 @@ "resolved": "packages/ui", "link": true }, + "node_modules/@stablelib/base64": { + "version": "1.0.1", + "license": "MIT" + }, "node_modules/@stripe/stripe-js": { "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-5.6.0.tgz", - "integrity": "sha512-w8CEY73X/7tw2KKlL3iOk679V9bWseE4GzNz3zlaYxcTjmcmWOathRb0emgo/QQ3eoNzmq68+2Y2gxluAv3xGw==", "license": "MIT", "engines": { "node": ">=12.16" @@ -1450,6 +1574,10 @@ "tslib": "^2.8.0" } }, + "node_modules/@swc/helpers/node_modules/tslib": { + "version": "2.8.1", + "license": "0BSD" + }, "node_modules/@tailwindcss/node": { "version": "4.0.6", "license": "MIT", @@ -1479,15 +1607,15 @@ "@tailwindcss/oxide-win32-x64-msvc": "4.0.6" } }, - "node_modules/@tailwindcss/oxide-darwin-arm64": { + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { "version": "4.0.6", "cpu": [ - "arm64" + "x64" ], "license": "MIT", "optional": true, "os": [ - "darwin" + "win32" ], "engines": { "node": ">= 10" @@ -1495,8 +1623,6 @@ }, "node_modules/@tailwindcss/postcss": { "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.0.6.tgz", - "integrity": "sha512-noTaGPHjGCXTCc487TWnfAEN0VMjqDAecssWDOsfxV2hFrcZR0AHthX7IdY/0xHTg/EtpmIPdssddlZ5/B7JnQ==", "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", @@ -1596,114 +1722,6 @@ "workspaces": "dist/cli.js" } }, - "node_modules/@turbo/workspaces/node_modules/ora": { - "version": "4.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^3.0.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.2.0", - "is-interactive": "^1.0.0", - "log-symbols": "^3.0.0", - "mute-stream": "0.0.8", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@turbo/workspaces/node_modules/ora/node_modules/chalk": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@turbo/workspaces/node_modules/ora/node_modules/log-symbols": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@turbo/workspaces/node_modules/ora/node_modules/log-symbols/node_modules/chalk": { - "version": "2.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@turbo/workspaces/node_modules/ora/node_modules/log-symbols/node_modules/chalk/node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@turbo/workspaces/node_modules/ora/node_modules/log-symbols/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert": { - "version": "1.9.3", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@turbo/workspaces/node_modules/ora/node_modules/log-symbols/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert/node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@turbo/workspaces/node_modules/ora/node_modules/log-symbols/node_modules/chalk/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@turbo/workspaces/node_modules/ora/node_modules/log-symbols/node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@turbo/workspaces/node_modules/ora/node_modules/log-symbols/node_modules/chalk/node_modules/supports-color/node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/@turbo/workspaces/node_modules/semver": { "version": "7.6.2", "dev": true, @@ -1724,13 +1742,13 @@ } }, "node_modules/@types/bun": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/bun/-/bun-1.2.2.tgz", - "integrity": "sha512-tr74gdku+AEDN5ergNiBnplr7hpDp3V1h7fqI2GcR/rsUaM39jpSeKH0TFibRvU0KwniRx5POgaYnaXbk0hU+w==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@types/bun/-/bun-1.2.8.tgz", + "integrity": "sha512-t8L1RvJVUghW5V+M/fL3Thbxcs0HwNsXsnTEBEfEVqGteiJToOlZ/fyOEaR1kZsNqnu+3XA4RI/qmnX4w6+S+w==", "dev": true, "license": "MIT", "dependencies": { - "bun-types": "1.2.2" + "bun-types": "1.2.7" } }, "node_modules/@types/connect": { @@ -1742,8 +1760,6 @@ }, "node_modules/@types/cors": { "version": "2.8.17", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", - "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", "license": "MIT", "dependencies": { "@types/node": "*" @@ -1819,8 +1835,6 @@ }, "node_modules/@types/jsonwebtoken": { "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.8.tgz", - "integrity": "sha512-7fx54m60nLFUVYlxAB1xpe9CBWX2vSrk50Y6ogRJ1v5xxtba7qXTg5BgYDN5dq+yuQQ9HaVlHJyAAt1/mxryFg==", "license": "MIT", "dependencies": { "@types/ms": "*", @@ -1838,8 +1852,6 @@ }, "node_modules/@types/ms": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", "license": "MIT" }, "node_modules/@types/node": { @@ -1913,7 +1925,9 @@ "license": "MIT" }, "node_modules/@types/ws": { - "version": "8.5.14", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8svvI3hMyvN0kKCJMvTJP/x6Y/EoQbepff882wL+Sn5QsXb3etnamgrJq4isrBxSJj5L2AuXcI0+bgkoAXGUJw==", "dev": true, "license": "MIT", "dependencies": { @@ -2267,8 +2281,6 @@ }, "node_modules/aria-hidden": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", - "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", "license": "MIT", "dependencies": { "tslib": "^2.0.0" @@ -2277,6 +2289,10 @@ "node": ">=10" } }, + "node_modules/aria-hidden/node_modules/tslib": { + "version": "2.8.1", + "license": "0BSD" + }, "node_modules/array-buffer-byte-length": { "version": "1.0.2", "dev": true, @@ -2422,6 +2438,11 @@ "node": ">=4" } }, + "node_modules/ast-types/node_modules/tslib": { + "version": "2.8.1", + "dev": true, + "license": "0BSD" + }, "node_modules/async-function": { "version": "1.0.0", "dev": true, @@ -2432,8 +2453,6 @@ }, "node_modules/asynckit": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "license": "MIT" }, "node_modules/available-typed-arrays": { @@ -2452,8 +2471,6 @@ }, "node_modules/axios": { "version": "1.7.9", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", - "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -2507,6 +2524,27 @@ "readable-stream": "^3.4.0" } }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bl/node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/body-parser": { "version": "1.20.3", "license": "MIT", @@ -2585,17 +2623,17 @@ }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", "license": "BSD-3-Clause" }, "node_modules/bun-types": { - "version": "1.2.2", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/bun-types/-/bun-types-1.2.7.tgz", + "integrity": "sha512-P4hHhk7kjF99acXqKvltyuMQ2kf/rzIw3ylEDpCxDS9Xa0X0Yp/gJu/vDCucmWpiur5qJ0lwB2bWzOXa2GlHqA==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", - "@types/ws": "~8.5.10" + "@types/ws": "*" } }, "node_modules/busboy": { @@ -2842,8 +2880,6 @@ }, "node_modules/combined-stream": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" @@ -2918,14 +2954,10 @@ }, "node_modules/core-util-is": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "license": "MIT" }, "node_modules/cors": { "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "license": "MIT", "dependencies": { "object-assign": "^4", @@ -2955,8 +2987,6 @@ }, "node_modules/crypto-js": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", - "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", "license": "MIT" }, "node_modules/csstype": { @@ -3019,6 +3049,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/date-fns": { + "version": "4.1.0", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, "node_modules/db": { "resolved": "packages/db", "link": true @@ -3128,8 +3166,6 @@ }, "node_modules/delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "license": "MIT", "engines": { "node": ">=0.4.0" @@ -3144,8 +3180,6 @@ }, "node_modules/dequal": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "license": "MIT", "engines": { "node": ">=6" @@ -3171,8 +3205,6 @@ }, "node_modules/detect-node-es": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", "license": "MIT" }, "node_modules/diff": { @@ -3235,8 +3267,6 @@ }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" @@ -3248,14 +3278,10 @@ }, "node_modules/embla-carousel": { "version": "8.5.2", - "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.5.2.tgz", - "integrity": "sha512-xQ9oVLrun/eCG/7ru3R+I5bJ7shsD8fFwLEY7yPe27/+fDHCNj0OT5EoG5ZbFyOxOcG6yTwW8oTz/dWyFnyGpg==", "license": "MIT" }, "node_modules/embla-carousel-autoplay": { "version": "8.5.2", - "resolved": "https://registry.npmjs.org/embla-carousel-autoplay/-/embla-carousel-autoplay-8.5.2.tgz", - "integrity": "sha512-27emJ0px3q/c0kCHCjwRrEbYcyYUPfGO3g5IBWF1i7714TTzE6L9P81V6PHLoSMAKJ1aHoT2e7YFOsuFKCbyag==", "license": "MIT", "peerDependencies": { "embla-carousel": "8.5.2" @@ -3263,8 +3289,6 @@ }, "node_modules/embla-carousel-react": { "version": "8.5.2", - "resolved": "https://registry.npmjs.org/embla-carousel-react/-/embla-carousel-react-8.5.2.tgz", - "integrity": "sha512-Tmx+uY3MqseIGdwp0ScyUuxpBgx5jX1f7od4Cm5mDwg/dptEiTKf9xp6tw0lZN2VA9JbnVMl/aikmbc53c6QFA==", "license": "MIT", "dependencies": { "embla-carousel": "8.5.2", @@ -3276,8 +3300,6 @@ }, "node_modules/embla-carousel-reactive-utils": { "version": "8.5.2", - "resolved": "https://registry.npmjs.org/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.5.2.tgz", - "integrity": "sha512-QC8/hYSK/pEmqEdU1IO5O+XNc/Ptmmq7uCB44vKplgLKhB/l0+yvYx0+Cv0sF6Ena8Srld5vUErZkT+yTahtDg==", "license": "MIT", "peerDependencies": { "embla-carousel": "8.5.2" @@ -3458,6 +3480,10 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es6-promise": { + "version": "4.2.8", + "license": "MIT" + }, "node_modules/escape-html": { "version": "1.0.3", "license": "MIT" @@ -3861,6 +3887,10 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-sha256": { + "version": "1.3.0", + "license": "Unlicense" + }, "node_modules/fastq": { "version": "1.19.0", "dev": true, @@ -3974,8 +4004,6 @@ }, "node_modules/follow-redirects": { "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "funding": [ { "type": "individual", @@ -4008,8 +4036,6 @@ }, "node_modules/form-data": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", - "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", @@ -4029,8 +4055,6 @@ }, "node_modules/framer-motion": { "version": "12.4.2", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.4.2.tgz", - "integrity": "sha512-pW307cQKjDqEuO1flEoIFf6TkuJRfKr+c7qsHAJhDo4368N/5U8/7WU8J+xhd9+gjmOgJfgp+46evxRRFM39dA==", "license": "MIT", "dependencies": { "motion-dom": "^12.0.0", @@ -4054,6 +4078,10 @@ } } }, + "node_modules/framer-motion/node_modules/tslib": { + "version": "2.8.1", + "license": "0BSD" + }, "node_modules/fresh": { "version": "0.5.2", "license": "MIT", @@ -4079,18 +4107,6 @@ "dev": true, "license": "ISC" }, - "node_modules/fsevents": { - "version": "2.3.3", - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.2", "license": "MIT", @@ -4149,8 +4165,6 @@ }, "node_modules/get-nonce": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", - "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", "license": "MIT", "engines": { "node": ">=6" @@ -4239,8 +4253,6 @@ }, "node_modules/glob-to-regexp": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "license": "BSD-2-Clause" }, "node_modules/globals": { @@ -4315,8 +4327,6 @@ }, "node_modules/goober": { "version": "2.1.16", - "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.16.tgz", - "integrity": "sha512-erjk19y1U33+XAMe1VTvIONHYoSqE4iS7BYUZfHaqeohLmnC0FdxEh7rQU+6MZ4OajItzjZFSRtVANrQwNq6/g==", "license": "MIT", "peerDependencies": { "csstype": "^3.0.10" @@ -4353,6 +4363,10 @@ "dev": true, "license": "MIT" }, + "node_modules/hamt_plus": { + "version": "1.0.2", + "license": "MIT" + }, "node_modules/handlebars": { "version": "4.7.8", "dev": true, @@ -4545,8 +4559,6 @@ }, "node_modules/immediate": { "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", "license": "MIT" }, "node_modules/import-fresh": { @@ -5098,8 +5110,7 @@ } }, "node_modules/isarray": { - "version": "2.0.5", - "dev": true, + "version": "1.0.0", "license": "MIT" }, "node_modules/isbinaryfile": { @@ -5143,8 +5154,6 @@ }, "node_modules/js-cookie": { "version": "3.0.5", - "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", - "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", "license": "MIT", "engines": { "node": ">=14" @@ -5199,8 +5208,6 @@ }, "node_modules/jsonwebtoken": { "version": "9.0.2", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", "license": "MIT", "dependencies": { "jws": "^3.2.2", @@ -5221,8 +5228,6 @@ }, "node_modules/jsonwebtoken/node_modules/semver": { "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -5231,72 +5236,32 @@ "node": ">=10" } }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "license": "(MIT OR GPL-3.0-or-later)", - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "node_modules/jszip/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT" - }, - "node_modules/jszip/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/jszip/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" - }, - "node_modules/jszip/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "~5.1.0" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/jszip": { + "version": "3.10.1", + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" } }, "node_modules/jwa": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "license": "MIT", "dependencies": { "buffer-equal-constant-time": "1.0.1", @@ -5306,8 +5271,6 @@ }, "node_modules/jws": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "license": "MIT", "dependencies": { "jwa": "^1.4.1", @@ -5336,8 +5299,6 @@ }, "node_modules/lie": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", "license": "MIT", "dependencies": { "immediate": "~3.0.5" @@ -5369,15 +5330,15 @@ "lightningcss-win32-x64-msvc": "1.29.1" } }, - "node_modules/lightningcss-darwin-arm64": { + "node_modules/lightningcss-win32-x64-msvc": { "version": "1.29.1", "cpu": [ - "arm64" + "x64" ], "license": "MPL-2.0", "optional": true, "os": [ - "darwin" + "win32" ], "engines": { "node": ">= 12.0.0" @@ -5413,38 +5374,26 @@ }, "node_modules/lodash.includes": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", "license": "MIT" }, "node_modules/lodash.isboolean": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", "license": "MIT" }, "node_modules/lodash.isinteger": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", "license": "MIT" }, "node_modules/lodash.isnumber": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", "license": "MIT" }, "node_modules/lodash.isplainobject": { "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", "license": "MIT" }, "node_modules/lodash.isstring": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", "license": "MIT" }, "node_modules/lodash.merge": { @@ -5454,10 +5403,83 @@ }, "node_modules/lodash.once": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "license": "MIT" }, + "node_modules/log-symbols": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/chalk/node_modules/ansi-styles": { + "version": "3.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert": { + "version": "1.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/log-symbols/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert/node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols/node_modules/chalk/node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/log-symbols/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/chalk/node_modules/supports-color/node_modules/has-flag": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/loose-envify": { "version": "1.4.0", "dev": true, @@ -5504,8 +5526,6 @@ }, "node_modules/map-obj": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "license": "MIT", "engines": { "node": ">=8" @@ -5634,8 +5654,6 @@ }, "node_modules/motion-dom": { "version": "12.0.0", - "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.0.0.tgz", - "integrity": "sha512-CvYd15OeIR6kHgMdonCc1ihsaUG4MYh/wrkz8gZ3hBX/uamyZCXN9S9qJoYF03GqfTt7thTV/dxnHYX4+55vDg==", "license": "MIT", "dependencies": { "motion-utils": "^12.0.0" @@ -5643,8 +5661,6 @@ }, "node_modules/motion-utils": { "version": "12.0.0", - "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.0.0.tgz", - "integrity": "sha512-MNFiBKbbqnmvOjkPyOKgHUp3Q6oiokLkI1bEwm5QA28cxMZrv0CbbBGDNmhF6DIXsi1pCQBSs0dX8xjeER1tmA==", "license": "MIT" }, "node_modules/ms": { @@ -5698,10 +5714,12 @@ } }, "node_modules/next": { - "version": "15.1.7", + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/next/-/next-15.2.4.tgz", + "integrity": "sha512-VwL+LAaPSxEkd3lU2xWbgEOtrM8oedmyhBqaVNmgKB+GvZlCy9rgaEc+y2on0wv+l0oSFqLtYD6dcC1eAedUaQ==", "license": "MIT", "dependencies": { - "@next/env": "15.1.7", + "@next/env": "15.2.4", "@swc/counter": "0.1.3", "@swc/helpers": "0.5.15", "busboy": "1.6.0", @@ -5716,14 +5734,14 @@ "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "15.1.7", - "@next/swc-darwin-x64": "15.1.7", - "@next/swc-linux-arm64-gnu": "15.1.7", - "@next/swc-linux-arm64-musl": "15.1.7", - "@next/swc-linux-x64-gnu": "15.1.7", - "@next/swc-linux-x64-musl": "15.1.7", - "@next/swc-win32-arm64-msvc": "15.1.7", - "@next/swc-win32-x64-msvc": "15.1.7", + "@next/swc-darwin-arm64": "15.2.4", + "@next/swc-darwin-x64": "15.2.4", + "@next/swc-linux-arm64-gnu": "15.2.4", + "@next/swc-linux-arm64-musl": "15.2.4", + "@next/swc-linux-x64-gnu": "15.2.4", + "@next/swc-linux-x64-musl": "15.2.4", + "@next/swc-win32-arm64-msvc": "15.2.4", + "@next/swc-win32-x64-msvc": "15.2.4", "sharp": "^0.33.5" }, "peerDependencies": { @@ -5751,8 +5769,6 @@ }, "node_modules/next-themes": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.4.tgz", - "integrity": "sha512-LDQ2qIOJF0VnuVrrMSMLrWGjRMkq+0mpgl6e0juCLqdJ+oo8Q84JRWT6Wh11VDQKkMMe+dVzDKLWs5n87T+PkQ==", "license": "MIT", "peerDependencies": { "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", @@ -5793,6 +5809,24 @@ "lower-case": "^1.1.1" } }, + "node_modules/node-fetch": { + "version": "2.7.0", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/node-plop": { "version": "0.26.3", "dev": true, @@ -6026,6 +6060,39 @@ "node": ">= 0.8.0" } }, + "node_modules/ora": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.2.0", + "is-interactive": "^1.0.0", + "log-symbols": "^3.0.0", + "mute-stream": "0.0.8", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/os-tmpdir": { "version": "1.0.2", "dev": true, @@ -6121,8 +6188,6 @@ }, "node_modules/pako": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "license": "(MIT AND Zlib)" }, "node_modules/param-case": { @@ -6268,8 +6333,6 @@ }, "node_modules/postcss": { "version": "8.5.2", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz", - "integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==", "funding": [ { "type": "opencollective", @@ -6383,8 +6446,6 @@ }, "node_modules/process-nextick-args": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "license": "MIT" }, "node_modules/prop-types": { @@ -6451,6 +6512,10 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "license": "MIT" + }, "node_modules/queue-microtask": { "version": "1.2.3", "dev": true, @@ -6492,8 +6557,6 @@ }, "node_modules/razorpay": { "version": "2.9.5", - "resolved": "https://registry.npmjs.org/razorpay/-/razorpay-2.9.5.tgz", - "integrity": "sha512-bmybwyszgfbYWAdO4igyHFk5zFj/D4YuoZAFNbyIYnPwzd+FBY5WvtpfUA9lVBMgnV4NzVEhncxR3It9RI/gCQ==", "license": "MIT", "dependencies": { "axios": "^1.6.8" @@ -6522,26 +6585,28 @@ } }, "node_modules/react": { - "version": "19.0.0", + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/react-dom": { - "version": "19.0.0", + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", "license": "MIT", "dependencies": { - "scheduler": "^0.25.0" + "scheduler": "^0.26.0" }, "peerDependencies": { - "react": "^19.0.0" + "react": "^19.1.0" } }, "node_modules/react-hot-toast": { "version": "2.5.1", - "resolved": "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.5.1.tgz", - "integrity": "sha512-54Gq1ZD1JbmAb4psp9bvFHjS7lje+8ubboUmvKZkCsQBLH6AOpZ9JemfRvIdHcfb9AZXRaFLrb3qUobGYDJhFQ==", "license": "MIT", "dependencies": { "csstype": "^3.1.3", @@ -6562,8 +6627,6 @@ }, "node_modules/react-remove-scroll": { "version": "2.6.3", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.3.tgz", - "integrity": "sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==", "license": "MIT", "dependencies": { "react-remove-scroll-bar": "^2.3.7", @@ -6587,8 +6650,6 @@ }, "node_modules/react-remove-scroll-bar": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", - "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", "license": "MIT", "dependencies": { "react-style-singleton": "^2.2.2", @@ -6607,10 +6668,16 @@ } } }, + "node_modules/react-remove-scroll-bar/node_modules/tslib": { + "version": "2.8.1", + "license": "0BSD" + }, + "node_modules/react-remove-scroll/node_modules/tslib": { + "version": "2.8.1", + "license": "0BSD" + }, "node_modules/react-style-singleton": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", - "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", "license": "MIT", "dependencies": { "get-nonce": "^1.0.0", @@ -6629,17 +6696,43 @@ } } }, + "node_modules/react-style-singleton/node_modules/tslib": { + "version": "2.8.1", + "license": "0BSD" + }, "node_modules/readable-stream": { - "version": "3.6.2", - "dev": true, + "version": "2.3.8", "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "license": "MIT" + }, + "node_modules/recoil": { + "version": "0.7.7", + "license": "MIT", + "dependencies": { + "hamt_plus": "1.0.2" }, - "engines": { - "node": ">= 6" + "peerDependencies": { + "react": ">=16.13.1" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } } }, "node_modules/reflect.getprototypeof": { @@ -6707,6 +6800,10 @@ "node": ">=0.10.0" } }, + "node_modules/requires-port": { + "version": "1.0.0", + "license": "MIT" + }, "node_modules/resolve": { "version": "2.0.0-next.5", "dev": true, @@ -6808,6 +6905,11 @@ "tslib": "^2.1.0" } }, + "node_modules/rxjs/node_modules/tslib": { + "version": "2.8.1", + "dev": true, + "license": "0BSD" + }, "node_modules/safe-array-concat": { "version": "1.1.3", "dev": true, @@ -6826,6 +6928,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "dev": true, + "license": "MIT" + }, "node_modules/safe-buffer": { "version": "5.2.1", "funding": [ @@ -6859,6 +6966,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-push-apply/node_modules/isarray": { + "version": "2.0.5", + "dev": true, + "license": "MIT" + }, "node_modules/safe-regex-test": { "version": "1.1.0", "dev": true, @@ -6880,7 +6992,9 @@ "license": "MIT" }, "node_modules/scheduler": { - "version": "0.25.0", + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", "license": "MIT" }, "node_modules/semver": { @@ -6955,8 +7069,6 @@ }, "node_modules/server-only": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/server-only/-/server-only-0.0.1.tgz", - "integrity": "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==", "license": "MIT" }, "node_modules/set-function-length": { @@ -7004,8 +7116,6 @@ }, "node_modules/setimmediate": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", "license": "MIT" }, "node_modules/setprototypeof": { @@ -7192,8 +7302,6 @@ }, "node_modules/snakecase-keys": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-8.0.1.tgz", - "integrity": "sha512-Sj51kE1zC7zh6TDlNNz0/Jn1n5HiHdoQErxO8jLtnyrkJW/M5PrI7x05uDgY3BO7OUQYKCvmeMurW6BPUdwEOw==", "license": "MIT", "dependencies": { "map-obj": "^4.1.0", @@ -7204,49 +7312,43 @@ "node": ">=18" } }, - "node_modules/snakecase-keys/node_modules/dot-case": { + "node_modules/snakecase-keys/node_modules/snake-case": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "license": "MIT", "dependencies": { - "no-case": "^3.0.4", + "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, - "node_modules/snakecase-keys/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "node_modules/snakecase-keys/node_modules/snake-case/node_modules/dot-case": { + "version": "3.0.4", "license": "MIT", "dependencies": { + "no-case": "^3.0.4", "tslib": "^2.0.3" } }, - "node_modules/snakecase-keys/node_modules/no-case": { + "node_modules/snakecase-keys/node_modules/snake-case/node_modules/dot-case/node_modules/no-case": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "license": "MIT", "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" } }, - "node_modules/snakecase-keys/node_modules/snake-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "node_modules/snakecase-keys/node_modules/snake-case/node_modules/dot-case/node_modules/no-case/node_modules/lower-case": { + "version": "2.0.2", "license": "MIT", "dependencies": { - "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, + "node_modules/snakecase-keys/node_modules/snake-case/node_modules/tslib": { + "version": "2.8.1", + "license": "0BSD" + }, "node_modules/snakecase-keys/node_modules/type-fest": { "version": "4.34.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.34.1.tgz", - "integrity": "sha512-6kSc32kT0rbwxD6QL1CYe8IqdzN/J/ILMrNK+HMQCKH3insCDRY/3ITb0vcBss0a3t72fzh2YSzj8ko1HgwT3g==", "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" @@ -7310,8 +7412,6 @@ }, "node_modules/std-env": { "version": "3.8.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz", - "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==", "license": "MIT" }, "node_modules/streamsearch": { @@ -7321,13 +7421,16 @@ } }, "node_modules/string_decoder": { - "version": "1.3.0", - "dev": true, + "version": "1.1.1", "license": "MIT", "dependencies": { - "safe-buffer": "~5.2.0" + "safe-buffer": "~5.1.0" } }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "license": "MIT" + }, "node_modules/string-width": { "version": "4.2.3", "dev": true, @@ -7461,8 +7564,6 @@ }, "node_modules/stripe": { "version": "17.6.0", - "resolved": "https://registry.npmjs.org/stripe/-/stripe-17.6.0.tgz", - "integrity": "sha512-+HB6+SManp0gSRB0dlPmXO+io18krlAe0uimXhhIkL/RG/VIRigkfoM3QDJPkqbuSW0XsA6uzsivNCJU1ELEDA==", "license": "MIT", "dependencies": { "@types/node": ">=8.1.0", @@ -7515,6 +7616,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svix": { + "version": "1.59.2", + "license": "MIT", + "dependencies": { + "@stablelib/base64": "^1.0.0", + "@types/node": "^22.7.5", + "es6-promise": "^4.2.8", + "fast-sha256": "^1.3.0", + "svix-fetch": "^3.0.0", + "url-parse": "^1.5.10" + } + }, + "node_modules/svix-fetch": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.1", + "whatwg-fetch": "^3.4.1" + } + }, "node_modules/swap-case": { "version": "1.1.2", "dev": true, @@ -7526,8 +7647,6 @@ }, "node_modules/swr": { "version": "2.3.2", - "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.2.tgz", - "integrity": "sha512-RosxFpiabojs75IwQ316DGoDRmOqtiAj0tg8wCcbEu4CiLZBs/a9QNtHV7TUfDXmmlgqij/NqzKq/eLelyv9xA==", "license": "MIT", "dependencies": { "dequal": "^2.0.3", @@ -7547,8 +7666,6 @@ }, "node_modules/tailwindcss": { "version": "4.0.6", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.6.tgz", - "integrity": "sha512-mysewHYJKaXgNOW6pp5xon/emCsfAMnO8WMaGKZZ35fomnR/T5gYnRg2/yRTTrtXiEl1tiVkeRt0eMO6HxEZqw==", "license": "MIT" }, "node_modules/tailwindcss-animate": { @@ -7622,6 +7739,10 @@ "node": ">=0.6" } }, + "node_modules/tr46": { + "version": "0.0.3", + "license": "MIT" + }, "node_modules/ts-api-utils": { "version": "2.0.1", "dev": true, @@ -7676,7 +7797,7 @@ } }, "node_modules/tslib": { - "version": "2.8.1", + "version": "2.4.1", "license": "0BSD" }, "node_modules/turbo": { @@ -7695,16 +7816,16 @@ "turbo-windows-arm64": "2.4.1" } }, - "node_modules/turbo-darwin-arm64": { + "node_modules/turbo-windows-64": { "version": "2.4.1", "cpu": [ - "arm64" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "darwin" + "win32" ] }, "node_modules/type-check": { @@ -7920,10 +8041,16 @@ "punycode": "^2.1.0" } }, + "node_modules/url-parse": { + "version": "1.5.10", + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "node_modules/use-callback-ref": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", - "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", "license": "MIT", "dependencies": { "tslib": "^2.0.0" @@ -7941,10 +8068,12 @@ } } }, + "node_modules/use-callback-ref/node_modules/tslib": { + "version": "2.8.1", + "license": "0BSD" + }, "node_modules/use-sidecar": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", - "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", "license": "MIT", "dependencies": { "detect-node-es": "^1.1.0", @@ -7963,10 +8092,12 @@ } } }, + "node_modules/use-sidecar/node_modules/tslib": { + "version": "2.8.1", + "license": "0BSD" + }, "node_modules/use-sync-external-store": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz", - "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==", "license": "MIT", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" @@ -8015,6 +8146,22 @@ "resolved": "apps/web", "link": true }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "license": "MIT" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "dev": true, @@ -8073,6 +8220,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "dev": true, + "license": "MIT" + }, "node_modules/which-collection": { "version": "1.0.2", "dev": true, diff --git a/package.json b/package.json index 93b28749..d080d821 100644 --- a/package.json +++ b/package.json @@ -22,5 +22,8 @@ "workspaces": [ "apps/*", "packages/*" - ] + ], + "dependencies": { + "recoil": "^0.7.7" + } } diff --git a/packages/db/prisma/schema.prisma b/packages/db/prisma/schema.prisma index d420e79b..843b6882 100644 --- a/packages/db/prisma/schema.prisma +++ b/packages/db/prisma/schema.prisma @@ -63,7 +63,7 @@ model OutputImages { modelId String userId String prompt String - falAiRequestId String? + falAiRequestId String? @unique status OutputImageStatusEnum @default(Pending) model Model @relation(fields: [modelId], references: [id]) createdAt DateTime @default(now()) @@ -71,6 +71,7 @@ model OutputImages { @@index([falAiRequestId]) } + model Packs { id String @id @default(uuid()) name String From 3fe69e40f135e40db0a4e27a0b4d83b11e4c1372 Mon Sep 17 00:00:00 2001 From: Rohit Kumar Date: Mon, 31 Mar 2025 11:17:08 +0530 Subject: [PATCH 3/3] Update package.json --- apps/web/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/web/package.json b/apps/web/package.json index ecacb5a6..9d764bfa 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -43,7 +43,6 @@ "react": "^19.1.0", "react-dom": "^19.1.0", "react-hot-toast": "^2.5.1", - "recoil": "^0.7.7", "tailwind-merge": "^3.0.1", "tailwindcss": "^4.0.6", "tailwindcss-animate": "^1.0.7",