diff --git a/app/actions/posts/jobs.ts b/app/actions/posts/jobs.ts index 4ba01f6..54ad542 100755 --- a/app/actions/posts/jobs.ts +++ b/app/actions/posts/jobs.ts @@ -179,6 +179,60 @@ export async function GetAllApprovedPost() { } } +export async function GetJobById(id: string) { + try { + const allPosts = await prisma.post.findMany({ + where: { + id, + approved: true, + }, + + orderBy: { + createdAt: "desc", + }, + + select: { + id: true, + apply_link: true, + company: true, + company_logo: true, + company_website: true, + experience_level: true, + job_type: true, + location: true, + position: true, + role_description: true, + salary_disclosed: true, + salary_max: true, + salary_min: true, + author: { + select: { + id: true, + avatar: true, + username: true, + role: true, + }, + }, + createdAt: true, + }, + }); + + if (!allPosts) throw new Error("No Posts Found"); + + return { + status: 200, + message: "Succesfylly Fetched all Posts", + data: allPosts, + }; + } catch (error) { + return { + status: 404, + message: (error as Error).message, + data: [], + }; + } +} + //Get jobs by authorid export async function GetPostByAuthorId(authorId: string) { diff --git a/app/globals.css b/app/globals.css index 68e53df..e39ed6d 100755 --- a/app/globals.css +++ b/app/globals.css @@ -86,3 +86,17 @@ input:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px #262a34 inset; -webkit-text-fill-color: white !important; } + +::-webkit-scrollbar { + width: 6px; + height: 6px; +} + +::-webkit-scrollbar-thumb { + background-color: rgba(100, 100, 100, 0.5); + border-radius: 3px; +} + +::-webkit-scrollbar-track { + background: transparent; +} diff --git a/app/jobs/[...id]/page.tsx b/app/jobs/[...id]/page.tsx new file mode 100644 index 0000000..ab040f9 --- /dev/null +++ b/app/jobs/[...id]/page.tsx @@ -0,0 +1,13 @@ +import JobsId from "@/components/Job/jobId"; + +type tParams = Promise<{ id: string }>; + +export default async function JobsIdPage({ params }: { params: tParams }) { + const { id } = await params; + + return ( +
+ +
+ ); +} diff --git a/app/jobs/page.tsx b/app/jobs/page.tsx index b71d76f..d85e54a 100755 --- a/app/jobs/page.tsx +++ b/app/jobs/page.tsx @@ -1,18 +1,22 @@ +import ActivePostModal from "@/components/Job/activeJobModal"; +import FilterSideBar from "@/components/Job/filterCard"; import { lazy } from "react"; -const MobileFilterCard = lazy(() => import("@/components/Job/mobFilterCard")); -const DesktopFilterCard = lazy(() => import("@/components/Job/deskFilterCard")); + const AllJobsComp = lazy(() => import("@/components/Job/Jobs")); export default function AllJobs() { return ( -
- - - + <> + +
+
+ +
-
- +
+ +
-
+ ); } diff --git a/app/layout.tsx b/app/layout.tsx index 5896900..5704913 100755 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -7,7 +7,6 @@ import { auth } from "@/auth"; import { Toaster } from "@/components/ui/sonner"; import Loader from "./loading"; import RegisterSw from "@/components/RegisterSw"; -import { ReactLenis } from "lenis/react"; const inter = Inter({ subsets: ["latin"] }); @@ -25,19 +24,19 @@ export default async function RootLayout({ const session = await auth(); return ( - - - }> - -
- {children} - - -
-
-
- -
+ {/* */} + + }> + +
+ {children} + + +
+
+
+ + {/*
*/} ); } diff --git a/components/Job/JobSheet.tsx b/components/Job/JobSheet.tsx deleted file mode 100755 index 88c9f42..0000000 --- a/components/Job/JobSheet.tsx +++ /dev/null @@ -1,183 +0,0 @@ -import { - Sheet, - SheetContent, - SheetDescription, - SheetHeader, - SheetTitle, - SheetTrigger, -} from "@/components/ui/sheet"; -import { ApprovedJobLisitingType } from "@/types/types"; -import { fraunces, poppins, roboto_slab } from "@/utils/fonts/font"; -import { BriefcaseBusiness, Pin, X } from "lucide-react"; -import { useState } from "react"; -import { TbHandClick } from "react-icons/tb"; -import Tiptap from "./Create/TipTap"; -import { Button } from "../ui/button"; -import Link from "next/link"; - -import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; -import { Separator } from "../ui/separator"; -import { MdAdminPanelSettings } from "react-icons/md"; -import Image from "next/image"; -import { BookmarkPostComp } from "./MoreDialog"; - -export default function JobSheetComp({ - id, - author, - position, - company, - company_logo, - company_website, - role_description, - job_type, - location, - salary_disclosed, - salary_min, - salary_max, - experience_level, - apply_link, -}: ApprovedJobLisitingType) { - const [applySheet, setApplySheet] = useState(false); - return ( -
- - setApplySheet(true)} - > -

See More

- -
- - -
- setApplySheet(false)} - className="cursor-pointer text-gray-400" - /> -
- -
- Post-image -

{company}

-
- {company_website ? ( - - {position} - - ) : ( -

- {position} -

- )} - -
-
- -

{job_type}

-
-
- -

{location}

-
- -
- -

- {experience_level} -

-
- -

- {salary_disclosed && salary_min && salary_max - ? ` ₹ ${Math.round(salary_min / 1000)}k - ₹ ${Math.round( - salary_max / 1000, - )}k/month` - : "Not disclosed"} -

-
- - -
- -
-

- Posted By -

- -
- - - CO - -
-

- {author.username} -

- {author.role ? ( -
- -

- {author.role.toLowerCase()} -

-
- ) : ( - "" - )} -
-
-
- - - -
- - - - - -
-
-
-
-
-
- ); -} diff --git a/components/Job/Jobs.tsx b/components/Job/Jobs.tsx index 1a0a2fb..52081ae 100755 --- a/components/Job/Jobs.tsx +++ b/components/Job/Jobs.tsx @@ -5,10 +5,11 @@ import { useEffect } from "react"; import { GetAllApprovedPost } from "@/app/actions/posts/jobs"; import { toast } from "sonner"; import { ApprovedJobLisitingType, GetAllPostResponseType } from "@/types/types"; -import { useRecoilState, useRecoilValue } from "recoil"; +import { useRecoilState, useRecoilValue, useSetRecoilState } from "recoil"; import { allJobListings, joblistingError, + universalActivePostModal, universalLoader, } from "@/store/store"; import JobCardSkeleton from "./jobCardSkeletion"; @@ -16,6 +17,7 @@ import JobCardSkeleton from "./jobCardSkeletion"; export default function AllJobsComp() { const [allJobs, setAllJobs] = useRecoilState(allJobListings); const [loading, setLoading] = useRecoilState(universalLoader); + const setActivePostModal = useSetRecoilState(universalActivePostModal); const errorNoPost = useRecoilValue(joblistingError); useEffect(() => { @@ -25,6 +27,8 @@ export default function AllJobsComp() { const response: GetAllPostResponseType = await GetAllApprovedPost(); if (response.status !== 200) throw new Error(response.message); setAllJobs(response.data); + + setActivePostModal(response.data[0].id); } catch (error) { toast((error as Error).message || "Error Occured"); } finally { @@ -42,7 +46,7 @@ export default function AllJobsComp() {

No Post found

) : ( -
+
{loading ? ( [1, 2, 3].map((_, i) => { return ( diff --git a/components/Job/activeJobModal.tsx b/components/Job/activeJobModal.tsx new file mode 100644 index 0000000..261f880 --- /dev/null +++ b/components/Job/activeJobModal.tsx @@ -0,0 +1,45 @@ +"use client"; + +import { GetJobById } from "@/app/actions/posts/jobs"; +import { universalActivePostModal } from "@/store/store"; +import { ApprovedJobLisitingType, GetAllPostResponseType } from "@/types/types"; +import { useEffect, useState } from "react"; +import { useRecoilValue } from "recoil"; +import { toast } from "sonner"; +import JobDetailShow from "./jobDataShow"; + +export default function ActivePostModal() { + const activeJobModalId = useRecoilValue(universalActivePostModal); + const [currentData, setCurrentData] = useState< + ApprovedJobLisitingType | undefined + >(undefined); + const [loading, setLoading] = useState(false); + + useEffect(() => { + async function getPostDetails() { + setLoading(true); + try { + const response: GetAllPostResponseType = + await GetJobById(activeJobModalId); + if (response.status !== 200) throw new Error(response.message); + setCurrentData(response.data[0]); + } catch (error) { + toast((error as Error).message || "Error Occured"); + } finally { + setLoading(false); + } + } + + getPostDetails(); + }, [activeJobModalId]); + + return ( + <> + {loading || !currentData ? ( +
Loading...
+ ) : ( + + )} + + ); +} diff --git a/components/Job/applyBtn.tsx b/components/Job/applyBtn.tsx new file mode 100644 index 0000000..068e9c2 --- /dev/null +++ b/components/Job/applyBtn.tsx @@ -0,0 +1,15 @@ +import { Button } from "../ui/button"; + +export default function ApplyFilterBtn({ fn }: { fn: () => void }) { + return ( + + ); +} diff --git a/components/Job/clearFIlterBtn.tsx b/components/Job/clearFIlterBtn.tsx new file mode 100644 index 0000000..d65b3b0 --- /dev/null +++ b/components/Job/clearFIlterBtn.tsx @@ -0,0 +1,11 @@ +export default function ClearFilterBtn({ fn }: { fn: () => void }) { + return ( +
+ Clear All +
+ ); +} diff --git a/components/Job/deskFilterCard.tsx b/components/Job/deskFilterCard.tsx deleted file mode 100755 index 8dfa403..0000000 --- a/components/Job/deskFilterCard.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import FilterSideBar from "./filterCard"; - -export default function DesktopFilterCard() { - return ( -
- -
- ); -} diff --git a/components/Job/filterCard.tsx b/components/Job/filterCard.tsx index 88424ef..4202558 100755 --- a/components/Job/filterCard.tsx +++ b/components/Job/filterCard.tsx @@ -2,65 +2,68 @@ import { allJobListings, - filterMobSheet, joblistingError, universalLoader, } from "@/store/store"; import { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; import { useSetRecoilState } from "recoil"; -import { Button } from "../ui/button"; + import { - Accordion, - AccordionContent, - AccordionItem, - AccordionTrigger, -} from "@/components/ui/accordion"; + Select, + SelectContent, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import ApplyFilterBtn from "./applyBtn"; +import ClearFilterBtn from "./clearFIlterBtn"; const experienceValues = ["Fresher", "0-1y", "1y", "3y", "5y"]; const jobTypeValues = ["Fulltime", "Internship", "Contract", "Freelance"]; const locationTypeValue = ["Remote", "Onsite", "Hybrid"]; +type filteredArrayType = { + experience: any[]; + job: any[]; + location: any[]; +}; export default function FilterSideBar() { - const { register, watch } = useForm(); + const { register, watch, reset } = useForm(); const setAllJobs = useSetRecoilState(allJobListings); const setLoading = useSetRecoilState(universalLoader); const setError = useSetRecoilState(joblistingError); - const setMobSheetOpen = useSetRecoilState(filterMobSheet); - const [disableApply, setDisableApply] = useState(true); - - const [filter, setFilter] = useState<{ - experience: any[]; - job: any[]; - location: any[]; - }>({ + + const [filter, setFilter] = useState({ experience: [], job: [], location: [], }); - const selectedExperience = watch(experienceValues); - const selectedJob = watch(jobTypeValues); - const selectedLocation = watch(locationTypeValue); + const selectedExperience = watch("experience") || []; + const selectedJob = watch("job_type") || []; + const selectedLocation = watch("location") || []; useEffect(() => { const newFilter = { - experience: selectedExperience.filter((e) => (e ? e : null)), - job: selectedJob.filter((e) => (e ? e : null)), - location: selectedLocation.filter((e) => (e ? e : null)), + experience: selectedExperience.filter((e: string | null) => + e ? e : null, + ), + job: selectedJob.filter((e: string | null) => (e ? e : null)), + location: selectedLocation.filter((e: string | null) => (e ? e : null)), }; + if (JSON.stringify(newFilter) !== JSON.stringify(filter)) { setFilter(newFilter); - setDisableApply(false); + callBackend(newFilter); } }, [selectedExperience, selectedJob, selectedLocation]); - const callBackend = async () => { + const callBackend = async (newFilter?: filteredArrayType) => { setLoading(true); try { const response = await fetch(`/api/jobs`, { method: "POST", - body: JSON.stringify(filter), + body: JSON.stringify(newFilter ? newFilter : filter), }); const finalData = await response.json(); @@ -75,158 +78,105 @@ export default function FilterSideBar() { }; return ( - <> -
- -
- - - - - Experience Level - - - {experienceValues.map((e: string, i: number) => { - return ( -
- - -
- ); - })} -
-
-
- - {/*
-

Experience Level

-
+
+
); })} -
-
*/} - - - - - Job Type - - - {jobTypeValues.map((e: string, i: number) => { - return ( -
- - -
- ); - })} -
-
-
- - {/*
-

Job Type

-
+ + + + + +
); })} -
-
*/} - - - - - Location - - - {locationTypeValue.map((e: string, i: number) => { - return ( -
- - -
- ); - })} -
-
-
- {/* -
-

Location Wise

-
+ + + + + +
); })} -
-
*/} - + + + + + ); } diff --git a/components/Job/jobCard.tsx b/components/Job/jobCard.tsx index 745303d..ee1059c 100755 --- a/components/Job/jobCard.tsx +++ b/components/Job/jobCard.tsx @@ -1,32 +1,43 @@ import { BriefcaseBusiness, Pin } from "lucide-react"; import { ApprovedJobLisitingType } from "@/types/types"; import { BookmarkPostComp } from "./MoreDialog"; -import JobSheetComp from "./JobSheet"; + import { MdVerifiedUser } from "react-icons/md"; import Link from "next/link"; import { useEffect, useState } from "react"; import { calculateDayDiff } from "@/utils/helpers/calculate-day-difference"; import Image from "next/image"; +import { useSetRecoilState } from "recoil"; +import { universalActivePostModal } from "@/store/store"; +import { useRouter } from "next/navigation"; export default function JobCard({ id, author, position, company, - role_description, + company_logo, - company_website, + job_type, location, salary_disclosed, salary_min, salary_max, experience_level, - apply_link, + createdAt, show = true, }: ApprovedJobLisitingType) { const [diff, setDiff] = useState(0); + const setUniversalActivePostModal = useSetRecoilState( + universalActivePostModal, + ); + + //eslint-disable-next-line + const [isSmallScreen, setIsSmallScreen] = useState(false); + + const router = useRouter(); const getPostedTime = (diff: number) => { if (diff <= 0) { @@ -51,8 +62,29 @@ export default function JobCard({ setDiff(calculatedDiff); }, []); + //calculating the screen size + + useEffect(() => { + function handleResize() { + setIsSmallScreen(window.innerWidth < 1024); + } + + handleResize(); + + window.addEventListener("resize", handleResize); + + return () => window.removeEventListener("resize", handleResize); + }, []); + return ( -
+
{ + isSmallScreen //eslint-disable-line + ? router.push(`/jobs/${id}`) + : setUniversalActivePostModal(id); + }} + > {/* first section */}
@@ -69,7 +101,7 @@ export default function JobCard({
-

+

{position}

{author.role === "ADMIN" ? ( @@ -124,24 +156,6 @@ export default function JobCard({ > ft: @{author.username.slice(0, 15)}.. - -
) : null}
diff --git a/components/Job/jobDataShow.tsx b/components/Job/jobDataShow.tsx new file mode 100644 index 0000000..fc1715b --- /dev/null +++ b/components/Job/jobDataShow.tsx @@ -0,0 +1,129 @@ +import { ApprovedJobLisitingType } from "@/types/types"; +import Tiptap from "@/components/Job/Create/TipTap"; +import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; +import { Button } from "@/components/ui/button"; +import { Separator } from "@/components/ui/separator"; +import { fraunces, poppins } from "@/utils/fonts/font"; +import { BriefcaseBusiness, Pin } from "lucide-react"; +import Image from "next/image"; +import Link from "next/link"; +import { MdAdminPanelSettings } from "react-icons/md"; +import { TbHandClick } from "react-icons/tb"; + +export default function JobDetailShow(data: ApprovedJobLisitingType) { + return ( + <> +
+
+ Post-image +

{data.company}

+
+ {data.company_website ? ( + + {data.position} + + ) : ( +

+ {data.position} +

+ )} + +
+
+ +

{data.job_type}

+
+
+ +

{data.location}

+
+ +
+ +

+ {data.experience_level} +

+
+ +

+ {data.salary_disclosed && data.salary_min && data.salary_max + ? ` ₹ ${Math.round(data.salary_min / 1000)}k - ₹ ${Math.round( + data.salary_max / 1000, + )}k/month` + : "Not disclosed"} +

+
+ + +
+
+
+
+

+ Posted By +

+ +
+ + + CO + +
+

+ {data.author.username} +

+ {data.author.role ? ( +
+ +

+ {data.author.role.toLowerCase()} +

+
+ ) : ( + "" + )} +
+
+
+ + + + +
+ + +
+ + ); +} diff --git a/components/Job/jobId.tsx b/components/Job/jobId.tsx new file mode 100644 index 0000000..2200fd8 --- /dev/null +++ b/components/Job/jobId.tsx @@ -0,0 +1,48 @@ +"use client"; + +import { GetJobById } from "@/app/actions/posts/jobs"; +import { ApprovedJobLisitingType, GetAllPostResponseType } from "@/types/types"; +import { useEffect, useState } from "react"; +import { toast } from "sonner"; +import JobDetailShow from "./jobDataShow"; +import { ArrowLeft } from "lucide-react"; +import Link from "next/link"; + +export default function JobsId({ id }: { id: string }) { + const [responseData, setResponseDataa] = useState< + ApprovedJobLisitingType | undefined + >(undefined); + const [loading, setLoading] = useState(false); + + useEffect(() => { + async function getPostDetails() { + setLoading(true); + try { + const response: GetAllPostResponseType = await GetJobById(id); + if (response.status !== 200) throw new Error(response.message); + setResponseDataa(response.data[0]); + } catch (error) { + toast((error as Error).message || "Error Occured"); + } finally { + setLoading(false); + } + } + + getPostDetails(); + }, []); + + return ( + <> + {loading || !responseData ? ( +
Loading...
+ ) : ( + <> + + + + + + )} + + ); +} diff --git a/components/Job/mobFilterCard.tsx b/components/Job/mobFilterCard.tsx deleted file mode 100755 index 713c0a2..0000000 --- a/components/Job/mobFilterCard.tsx +++ /dev/null @@ -1,46 +0,0 @@ -"use client"; - -import { - Sheet, - SheetContent, - SheetDescription, - SheetHeader, - SheetTrigger, -} from "@/components/ui/sheet"; -import { filterMobSheet } from "@/store/store"; -import { Tally3, X } from "lucide-react"; -import { lazy } from "react"; -import { useRecoilState } from "recoil"; -const FilterSideBar = lazy(() => import("@/components/Job/filterCard")); - -export default function MobileFilterCard() { - const [sheetOpen, setSheetOpen] = useRecoilState(filterMobSheet); - return ( -
- - - setSheetOpen(true)} - /> - - - -
- setSheetOpen(false)} - /> -
- - - -
-
-
-
- ); -} diff --git a/components/ui/checkbox.tsx b/components/ui/checkbox.tsx new file mode 100644 index 0000000..5985e3c --- /dev/null +++ b/components/ui/checkbox.tsx @@ -0,0 +1,30 @@ +"use client"; + +import * as React from "react"; +import * as CheckboxPrimitive from "@radix-ui/react-checkbox"; +import { Check } from "lucide-react"; + +import { cn } from "@/lib/utils"; + +const Checkbox = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + + + +)); +Checkbox.displayName = CheckboxPrimitive.Root.displayName; + +export { Checkbox }; diff --git a/package-lock.json b/package-lock.json index dbc737a..a39e484 100755 --- a/package-lock.json +++ b/package-lock.json @@ -14,12 +14,12 @@ "@radix-ui/react-accordion": "^1.2.1", "@radix-ui/react-alert-dialog": "^1.1.1", "@radix-ui/react-avatar": "^1.1.0", - "@radix-ui/react-checkbox": "^1.1.1", + "@radix-ui/react-checkbox": "^1.1.4", "@radix-ui/react-dialog": "^1.1.2", "@radix-ui/react-dropdown-menu": "^2.1.1", "@radix-ui/react-hover-card": "^1.1.1", "@radix-ui/react-popover": "^1.1.1", - "@radix-ui/react-select": "^2.1.2", + "@radix-ui/react-select": "^2.1.6", "@radix-ui/react-separator": "^1.1.0", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-switch": "^1.1.1", @@ -2529,15 +2529,16 @@ } }, "node_modules/@radix-ui/react-checkbox": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.1.1.tgz", - "integrity": "sha512-0i/EKJ222Afa1FE0C6pNJxDq1itzcl3HChE9DwskA4th4KRse8ojx8a1nVcOjwJdbpDLcz7uol77yYnQNMHdKw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.1.4.tgz", + "integrity": "sha512-wP0CPAHq+P5I4INKe3hJrIa1WoNqqrejzW+zoU0rOvo1b9gDEJJFl2rYfO1PYJUQCc2H1WZxIJmyv9BS8i5fLw==", + "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-presence": "1.1.0", - "@radix-ui/react-primitive": "2.0.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-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.2", "@radix-ui/react-use-controllable-state": "1.1.0", "@radix-ui/react-use-previous": "1.1.0", "@radix-ui/react-use-size": "1.1.0" @@ -2557,6 +2558,107 @@ } } }, + "node_modules/@radix-ui/react-checkbox/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-checkbox/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.1.tgz", + "integrity": "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox/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": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox/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", + "@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-checkbox/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" + }, + "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-checkbox/node_modules/@radix-ui/react-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.2.tgz", + "integrity": "sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-collapsible": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.1.tgz", @@ -3200,31 +3302,61 @@ } }, "node_modules/@radix-ui/react-select": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.2.tgz", - "integrity": "sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA==", + "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", - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", + "@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.1", + "@radix-ui/react-dismissable-layer": "1.1.5", "@radix-ui/react-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-focus-scope": "1.1.2", "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.0", - "@radix-ui/react-portal": "1.1.2", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-popper": "1.2.2", + "@radix-ui/react-portal": "1.1.4", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-slot": "1.1.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-use-previous": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.6.0" + "@radix-ui/react-visually-hidden": "1.1.2", + "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-select/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-select/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" }, "peerDependencies": { "@types/react": "*", @@ -3241,6 +3373,47 @@ } } }, + "node_modules/@radix-ui/react-select/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", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-slot": "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-select/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.1.tgz", + "integrity": "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-select/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", @@ -3256,13 +3429,14 @@ } }, "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.1.tgz", - "integrity": "sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ==", + "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.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-escape-keydown": "1.1.0" }, @@ -3295,12 +3469,70 @@ } } }, - "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-portal": { + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-focus-scope": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.2.tgz", - "integrity": "sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg==", + "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-primitive": "2.0.0", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "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/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", + "@radix-ui/react-arrow": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@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", + "@radix-ui/react-use-rect": "1.1.0", + "@radix-ui/react-use-size": "1.1.0", + "@radix-ui/rect": "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/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", "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { @@ -3318,23 +3550,65 @@ } } }, + "node_modules/@radix-ui/react-select/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" + }, + "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/node_modules/@radix-ui/react-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.2.tgz", + "integrity": "sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-select/node_modules/react-remove-scroll": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz", - "integrity": "sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==", + "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.6", - "react-style-singleton": "^2.2.1", + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" }, "engines": { "node": ">=10" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -3534,11 +3808,50 @@ } }, "node_modules/@radix-ui/react-visually-hidden": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz", - "integrity": "sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==", + "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.0" + "@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-visually-hidden/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.1.tgz", + "integrity": "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden/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" }, "peerDependencies": { "@types/react": "*", @@ -3555,6 +3868,24 @@ } } }, + "node_modules/@radix-ui/react-visually-hidden/node_modules/@radix-ui/react-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.2.tgz", + "integrity": "sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/rect": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", @@ -7445,14 +7776,6 @@ "node": ">= 0.4" } }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, "node_modules/is-arguments": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", @@ -9687,19 +10010,20 @@ } }, "node_modules/react-remove-scroll-bar": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", - "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", + "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.1", + "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "engines": { "node": ">=10" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -9717,20 +10041,20 @@ } }, "node_modules/react-style-singleton": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", - "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "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", - "invariant": "^2.2.4", "tslib": "^2.0.0" }, "engines": { "node": ">=10" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -11196,9 +11520,10 @@ } }, "node_modules/use-callback-ref": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", - "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", + "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" }, @@ -11206,8 +11531,8 @@ "node": ">=10" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -11216,9 +11541,10 @@ } }, "node_modules/use-sidecar": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", - "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "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", "tslib": "^2.0.0" @@ -11227,8 +11553,8 @@ "node": ">=10" }, "peerDependencies": { - "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { diff --git a/package.json b/package.json index 2eb33d6..8e0ff25 100755 --- a/package.json +++ b/package.json @@ -24,12 +24,12 @@ "@radix-ui/react-accordion": "^1.2.1", "@radix-ui/react-alert-dialog": "^1.1.1", "@radix-ui/react-avatar": "^1.1.0", - "@radix-ui/react-checkbox": "^1.1.1", + "@radix-ui/react-checkbox": "^1.1.4", "@radix-ui/react-dialog": "^1.1.2", "@radix-ui/react-dropdown-menu": "^2.1.1", "@radix-ui/react-hover-card": "^1.1.1", "@radix-ui/react-popover": "^1.1.1", - "@radix-ui/react-select": "^2.1.2", + "@radix-ui/react-select": "^2.1.6", "@radix-ui/react-separator": "^1.1.0", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-switch": "^1.1.1", diff --git a/store/store.ts b/store/store.ts index b48d72d..e663d10 100755 --- a/store/store.ts +++ b/store/store.ts @@ -18,6 +18,11 @@ export const universalError = atom({ }, }); +export const universalActivePostModal = atom({ + key: "universalActiveModal", + default: "123", +}); + //Joblisting atoms export const allJobListings = atom({