commit 12caeee710a3d0e4041c3672b1a9e895320f822c
Author: afnaann
Date: Wed Feb 19 17:00:55 2025 +0530
chore: setup project for production
diff --git a/.eslintrc.json b/.eslintrc.json
new file mode 100644
index 0000000..bffb357
--- /dev/null
+++ b/.eslintrc.json
@@ -0,0 +1,3 @@
+{
+ "extends": "next/core-web-vitals"
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..339030e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,57 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+.yarn/install-state.gz
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+.env.local
+# production
+/build
+
+# misc
+.DS_Store
+Thumbs.db
+*.pem
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# local env files
+.env*
+!.env.example # Include example env file
+
+# vercel
+.vercel
+
+# typescript
+*.tsbuildinfo
+next-env.d.ts
+
+# Tailwind CSS
+*.css.map
+
+# Editor settings and IDE files
+.vscode/
+.idea/
+
+# Linting and formatting
+.eslintcache
+.prettier.cache
+*.stylelintcache
+
+# Logs
+logs/
+*.log
+
+# Generated files
+*.cache
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..0dc9ea2
--- /dev/null
+++ b/README.md
@@ -0,0 +1,36 @@
+This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
+
+## Getting Started
+
+First, run the development server:
+
+```bash
+npm run dev
+# or
+yarn dev
+# or
+pnpm dev
+# or
+bun dev
+```
+
+Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
+
+You can start editing the page by modifying `app/page.js`. The page auto-updates as you edit the file.
+
+This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.
+
+## Learn More
+
+To learn more about Next.js, take a look at the following resources:
+
+- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
+- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
+
+You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
+
+## Deploy on Vercel
+
+The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
+
+Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
diff --git a/app/NavigationWrapper.jsx b/app/NavigationWrapper.jsx
new file mode 100644
index 0000000..ce67531
--- /dev/null
+++ b/app/NavigationWrapper.jsx
@@ -0,0 +1,21 @@
+"use client";
+
+import { usePathname } from "next/navigation";
+import TopBanner from "@/components/header/TopBanner";
+import Navbar from "@/components/header/Navbar";
+
+export default function NavigationWrapper() {
+ const pathname = usePathname();
+
+ const isAuthPage =
+ pathname === "/accounts/login" || pathname === "/accounts/register";
+
+ if (isAuthPage) return null;
+
+ return (
+ <>
+ {/* */}
+
+ >
+ );
+}
diff --git a/app/WrapperFooter.jsx b/app/WrapperFooter.jsx
new file mode 100644
index 0000000..a61cc95
--- /dev/null
+++ b/app/WrapperFooter.jsx
@@ -0,0 +1,20 @@
+'use client'
+import Footer from '@/components/footer/Footer'
+import { usePathname } from 'next/navigation'
+import React from 'react'
+
+
+const WrapperFooter = () => {
+
+ const pathname = usePathname()
+ const isLogin = pathname === '/accounts/login'
+ if(isLogin) return null;
+
+ return (
+
+
+
+ )
+}
+
+export default WrapperFooter
diff --git a/app/accounts/login/page.jsx b/app/accounts/login/page.jsx
new file mode 100644
index 0000000..68a1695
--- /dev/null
+++ b/app/accounts/login/page.jsx
@@ -0,0 +1,155 @@
+"use client";
+
+import MainContext from "@/app/contexts/mainContext";
+import Image from "next/image";
+import React, { useContext, useState } from "react";
+
+const LoginSignup = () => {
+ const [isLogin, setIsLogin] = useState(true);
+ const { loginUser, registerUser } = useContext(MainContext);
+ const [formData, setFormData] = useState({
+ email: "",
+ password: "",
+ confirmPassword: "",
+ });
+ const handleInputChange = (e) => {
+ const { name, value } = e.target;
+ setFormData((prevData) => ({
+ ...prevData,
+ [name]: value,
+ }));
+ };
+
+ const handleSubmit = async (e) => {
+ e.preventDefault();
+ if (isLogin) {
+ loginUser(formData);
+ } else {
+ registerUser(formData);
+ }
+ };
+
+ const toggleMode = () => {
+ setIsLogin(!isLogin);
+ setFormData({ email: "", password: "", confirmPassword: "" });
+ };
+
+ return (
+
+ {/* Left section with video */}
+
+
+
+ Your browser does not support the video tag.
+
+
+
+ {/* Right section with login/signup form */}
+
+
+
+
+
{`${
+ isLogin ? "Login" : "Sign up"
+ }`}
+
+
+
+
+ Manage subscriptions
+
+ or
+
+ Continue with google
+
+
+ {isLogin
+ ? "Don't have an account? Sign up"
+ : "Already have an account? Sign in"}
+
+
+
+
+
+ );
+};
+
+export default LoginSignup;
diff --git a/app/accounts/profile/addresses/[id]/page.jsx b/app/accounts/profile/addresses/[id]/page.jsx
new file mode 100644
index 0000000..08ba5be
--- /dev/null
+++ b/app/accounts/profile/addresses/[id]/page.jsx
@@ -0,0 +1,204 @@
+'use client'
+import { useState, useEffect } from 'react';
+import { useParams, useRouter } from 'next/navigation';
+import authAxios from '@/utils/axios';
+
+const EditAddress = () => {
+ const { id } = useParams();
+ const router = useRouter();
+ const [loading, setLoading] = useState(false);
+ const [error, setError] = useState('');
+ const [formData, setFormData] = useState({
+ first_name: '',
+ last_name: '',
+ company: '',
+ address: '',
+ apartment: '',
+ city: '',
+ country: '',
+ zipcode: '',
+ phone: ''
+ });
+
+ useEffect(() => {
+ const fetchAddress = async () => {
+ try {
+ const response = await authAxios.get(`/account/addresses/${id}/`);
+ setFormData(response.data);
+ } catch (err) {
+ setError('Failed to fetch address details');
+ console.error(err);
+ }
+ };
+
+ if (id) {
+ fetchAddress();
+ }
+ }, [id]);
+
+ const handleChange = (e) => {
+ const { name, value } = e.target;
+ setFormData(prev => ({
+ ...prev,
+ [name]: value
+ }));
+ };
+
+ const handleSubmit = async (e) => {
+ e.preventDefault();
+ setLoading(true);
+ setError('');
+
+ try {
+ await authAxios.put(`/account/addresses/${id}/`, formData);
+ router.push('/accounts/profile/addresses');
+ } catch (err) {
+ setError(err.response?.data?.message || 'Failed to update address');
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ return (
+
+
Edit Address
+ {error &&
{error}
}
+
+
+ );
+};
+
+export default EditAddress;
\ No newline at end of file
diff --git a/app/accounts/profile/addresses/page.jsx b/app/accounts/profile/addresses/page.jsx
new file mode 100644
index 0000000..836b511
--- /dev/null
+++ b/app/accounts/profile/addresses/page.jsx
@@ -0,0 +1,16 @@
+'use client'
+import Addresses from '@/components/accounts/addresses';
+
+import React from 'react';
+
+const Page = () => {
+
+ return (
+
+ );
+};
+
+export default Page;
diff --git a/app/accounts/profile/change-password/page.jsx b/app/accounts/profile/change-password/page.jsx
new file mode 100644
index 0000000..f1b5007
--- /dev/null
+++ b/app/accounts/profile/change-password/page.jsx
@@ -0,0 +1,113 @@
+'use client'
+import React, { useState } from "react";
+import axios from "axios";
+import authAxios from "@/utils/axios";
+
+const ChangePassword = () => {
+ const [oldPassword, setOldPassword] = useState("");
+ const [newPassword, setNewPassword] = useState("");
+ const [confirmNewPassword, setConfirmNewPassword] = useState("");
+ const [error, setError] = useState("");
+ const [success, setSuccess] = useState("");
+
+ const handleSubmit = async (e) => {
+ e.preventDefault();
+
+
+ if (!oldPassword || !newPassword || !confirmNewPassword) {
+ setError("All fields are required.");
+ return;
+ }
+
+
+ if (newPassword !== confirmNewPassword) {
+ setError("New passwords do not match.");
+ return;
+ }
+
+
+ setError("");
+
+ try {
+
+ const response = await authAxios.post(
+ "/account/change-password/",
+ {
+ old_password: oldPassword,
+ new_password: newPassword,
+ confirm_new_password: confirmNewPassword,
+ }
+ );
+
+ if (response.data.status) {
+ setSuccess("Password updated successfully.");
+ } else {
+ setError(response.data.message || "Something went wrong.");
+ }
+ } catch (err) {
+ setError("Failed to change password. Please try again.");
+ }
+ };
+
+ return (
+
+
+ Change Password
+
+
+
+ );
+};
+
+export default ChangePassword;
diff --git a/app/accounts/profile/edit-profile/page.jsx b/app/accounts/profile/edit-profile/page.jsx
new file mode 100644
index 0000000..3d0022d
--- /dev/null
+++ b/app/accounts/profile/edit-profile/page.jsx
@@ -0,0 +1,12 @@
+import EditProfile from '@/components/accounts/editProfile'
+import React from 'react'
+
+const page = () => {
+ return (
+
+
+
+ )
+}
+
+export default page
diff --git a/app/accounts/profile/layout.jsx b/app/accounts/profile/layout.jsx
new file mode 100644
index 0000000..f438131
--- /dev/null
+++ b/app/accounts/profile/layout.jsx
@@ -0,0 +1,20 @@
+import AccountSidebar from "@/components/accounts/AccountSidebar";
+import Link from "next/link";
+
+export const metadata = {
+ title: "Accounts",
+};
+
+export default function layout({ children }) {
+ return (
+
+
+ {/* Sidebar - flex row on mobile, column on desktop */}
+
+
+ {/* Main content */}
+
{children}
+
+
+ );
+}
diff --git a/app/accounts/profile/new-address/page.jsx b/app/accounts/profile/new-address/page.jsx
new file mode 100644
index 0000000..d1d6f3b
--- /dev/null
+++ b/app/accounts/profile/new-address/page.jsx
@@ -0,0 +1,12 @@
+import AddNewAddress from '@/components/accounts/AddNewAddress'
+import React from 'react'
+
+const page = () => {
+ return (
+
+ )
+}
+
+export default page
diff --git a/app/accounts/profile/orders/page.jsx b/app/accounts/profile/orders/page.jsx
new file mode 100644
index 0000000..31b0c54
--- /dev/null
+++ b/app/accounts/profile/orders/page.jsx
@@ -0,0 +1,120 @@
+"use client";
+import { useCurrency } from "@/app/contexts/currencyContext";
+import authAxios, { backendUrl } from "@/utils/axios";
+import { ShoppingBag } from "lucide-react";
+import Image from "next/image";
+import { useState, useEffect } from "react";
+
+const OrdersPage = () => {
+ const [orders, setOrders] = useState([]);
+ const [loading, setLoading] = useState(true);
+ const { isLoading, formatPrice } = useCurrency();
+
+ useEffect(() => {
+ const fetchOrders = async () => {
+ try {
+ const response = await authAxios.get("/orders/my-orders");
+ setOrders(response.data);
+ } catch (error) {
+ console.error("Error fetching orders:", error);
+ } finally {
+ setLoading(false);
+ }
+ };
+ fetchOrders();
+ }, []);
+
+ if (loading) {
+ return (
+
+ Loading...
+
+ );
+ }
+
+ if (!orders.length) {
+ return (
+
+
+ Orders
+
+
+
+
+ You don't have any orders yet
+
+
+
+ );
+ }
+
+ return (
+
+
+ Orders
+
+
+ {orders.map((order) => (
+
+
+ Order #{order.order_number}
+
+ {order.status}
+
+
+
+
+ {order.items.map((item) => (
+
+
+
+
+ {item.variant.product.product_name}
+
+
+ Size: {item.variant.size.size_name}
+ {item.design && ` • Design: ${item.design.design_name}`}
+
+
+ Quantity: {item.quantity}
+
+
+
+ ))}
+
+
+
+
+ {new Date(order.created_at).toLocaleDateString()}
+
+
+ Total:{" "}
+ {isLoading ? (
+ Loading...
+ ) : (
+ {formatPrice(order.total_amount)}
+ )}
+
+
+
+ ))}
+
+
+ );
+};
+
+export default OrdersPage;
diff --git a/app/accounts/profile/page.jsx b/app/accounts/profile/page.jsx
new file mode 100644
index 0000000..5571834
--- /dev/null
+++ b/app/accounts/profile/page.jsx
@@ -0,0 +1,151 @@
+"use client";
+import React, { useState, useEffect } from "react";
+import axios from "axios";
+import authAxios from "@/utils/axios";
+import { useRouter } from "next/navigation";
+import Image from "next/image";
+
+export default function ProfilePage() {
+ const [profileData, setProfileData] = useState(null);
+ const [isLoading, setIsLoading] = useState(true);
+ const [isError, setIsError] = useState(false);
+ const router = useRouter();
+ useEffect(() => {
+ const fetchProfileData = async () => {
+ try {
+ const response = await authAxios.get("/account/profile/");
+ setProfileData(response.data);
+ setIsLoading(false);
+ } catch (error) {
+ console.error("Error fetching profile data", error);
+ setIsError(true);
+ setIsLoading(false);
+ }
+ };
+
+ fetchProfileData();
+ }, []);
+
+ const getDisplayValue = (value) => {
+ return value ? value : "Not set up";
+ };
+
+ if (isLoading) {
+ return Loading...
;
+ }
+
+ if (isError) {
+ return Error loading profile data. Please try again later.
;
+ }
+
+ return (
+
+
+
+ All Orders{" "}
+
+ {profileData.orders || 0}
+
+
+
+ Addresses{" "}
+
+ {profileData.addresses || 0}
+
+
+
+
Profile information
+
+
+
+
+ First name
+
+
+ {getDisplayValue(profileData.first_name)}
+
+
+
+
+ Last name
+
+
+ {getDisplayValue(profileData.last_name)}
+
+
+
+
+ Date of birth
+
+
+ {getDisplayValue(profileData.birth_day)}
+
+
+
+
+ Gender
+
+
+ {getDisplayValue(profileData.gender)}
+
+
+
+
+
Contact methods
+
+
+
+ Email
+
+
+ {getDisplayValue(profileData.email)}
+
+
+
+
+ Phone
+
+
+ {getDisplayValue(profileData.phone)}
+
+
+
+
+
Other Info
+
+
+ Profile Picture
+
+ {profileData.profile_pic ? (
+
+ ) : (
+
Not set up
+ )}
+
+
+
Other Info
+
+
+ Accepts Marketing from Gupta Rudraksha
+
+
+ {getDisplayValue(profileData.accepts_marketing)}
+
+
+
+
router.push("/accounts/profile/edit-profile")}
+ className="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded mt-6"
+ >
+ Edit
+
+
+
+ );
+}
diff --git a/app/api/blog/route.js b/app/api/blog/route.js
new file mode 100644
index 0000000..9d06926
--- /dev/null
+++ b/app/api/blog/route.js
@@ -0,0 +1,109 @@
+import { NextResponse } from "next/server";
+
+export async function GET() {
+ return NextResponse.json({
+ blogdata: `
+
+
Dhanteras and Rudraksha: Bridging Prosperity and Spirituality
+
+
+
+ Dhanteras, the first day of Diwali festival, marks a unique
+ celebration of wealth and prosperity in Hindu tradition. As the name
+ suggests - 'Dhan' meaning wealth and 'Teras' referring to the 13th
+ day of the lunar fortnight - this auspicious occasion holds deep
+ significance for those seeking financial blessings.
+
+
+
+
+ The Significance of Dhanteras in Hindu Tradition
+
+ Dhanteras is the worship of Dhanvantari. Dhanvantari, according to
+ Hindu traditions, emerged during Samudra Manthana, holding a pot
+ full of amrita (a nectar bestowing immortality) in one hand and the
+ sacred text about Ayurveda in the other hand. He is considered to be
+ the physician of the devas and also an avatar of Vishnu.
+
+
+ Another popular tale involves a young prince whose death by snake
+ bite was predicted on his wedding night. His clever wife placed a
+ heap of gold and silver coins at the entrance of their chamber,
+ lighting lamps all around, and Yama, the God of Death, was
+ distracted and left without taking the prince's life.
+
+
+
+
+ Introduction to Rudraksha and Its Power
+
+ The word 'Rudraksha' is a combination of two Sanskrit terms -
+ 'Rudra', another name for Lord Shiva, and 'Aksha', meaning teardrop.
+ Legend has it that Lord Shiva's tears of compassion sprouted into
+ Rudraksha trees, symbolizing spiritual protection.
+
+
+
+
+ Recommended Rudraksha Beads for Dhanteras
+
+
+ 2 Mukhi Rudraksha: Enhances harmony in
+ relationships and emotional balance.
+
+
+ 7 Mukhi Rudraksha: Attracts financial prosperity
+ and good fortune.
+
+
+ 8 Mukhi Rudraksha: Removes obstacles and ensures
+ success in career and business.
+
+
+ 9 Mukhi Rudraksha: Provides protection from
+ negativity and boosts courage.
+
+
+
+
+
+ How to Use Rudraksha on Dhanteras for Maximum Benefits
+
+ Incorporating Rudraksha into your Dhanteras celebrations can amplify
+ the festival’s auspicious energies.
+
+
+
+ Cleansing Ceremony: Purify the beads by dipping
+ them in milk and Gangajal.
+
+
+ Energizing: Chant "Om Namah Shivaya" 108 times
+ while holding your Rudraksha mala.
+
+
+ Offering to Deities: Offer your Rudraksha to the
+ family deity during the Dhanteras puja.
+
+
+
+
+
+ Conclusion
+
+ Dhanteras, with its focus on prosperity and new beginnings, provides
+ the perfect backdrop for harnessing the energy of Rudraksha. By
+ combining the auspicious timing of Dhanteras with the spiritual
+ potency of Rudraksha, we create a synergy that amplifies our
+ intentions for growth and protection.
+
+
+ May this Dhanteras bring you abundance in all its forms, and may the
+ power of Rudraksha guide you towards a path of holistic prosperity
+ and divine protection.
+
+
+
+ `,
+ });
+}
diff --git a/app/api/privacy-policy/route.js b/app/api/privacy-policy/route.js
new file mode 100644
index 0000000..cacc09d
--- /dev/null
+++ b/app/api/privacy-policy/route.js
@@ -0,0 +1,52 @@
+import { NextResponse } from "next/server";
+
+export function GET() {
+ return NextResponse.json({
+ data: `
+ Last Updated: July 10, 2023
+
+Introduction
+Gupta Rudraksha ("we," "us," "our") values the trust you place in us when you use our app, and this Privacy Policy outlines our commitment to protecting your privacy. This Privacy Policy describes the types of personal information we collect, how we use the information, the circumstances under which we share the information, and the steps we take to protect the information.
+
+Information We Collect
+Personal Information:
+We may collect personal information about you through various methods, such as when you use our app, interact with our social media channels, participate in our promotions or events, or engage with us for inquiries. The personal information we collect may include contact details (name, postal address, email address, and mobile or other phone number), date of birth, gender, and any other information you willingly provide.
+
+Usage Information:
+When you interact with our app, we may collect certain information about your usage, including details about how our app is accessed and used, information about your device, IP address, location information (if you have enabled location-based services), and information collected through cookies and other tracking technologies.
+
+How We Use The Information
+We use the information we collect for various purposes, including to:
+
+ Respond to your inquiries and fulfill your requests for our products and services.
+ Send you crucial information about our app, changes to our terms, conditions, and policies, and/or other administrative information.
+ Send you marketing communications that we believe might be of interest to you, including information about our products, services, and promotions.
+ Permit you to participate in events, contests, and similar promotions.
+ Analyze and enhance our business operations, such as improving our app, identifying usage trends, conducting data analysis, audits, fraud monitoring, and prevention.
+
+
+Information We Share
+We do not sell or otherwise disclose personal information about you, except as described in this Privacy Policy. We may share your personal information with:
+
+ Service providers who perform services on our behalf based on our instructions. We do not authorize these service providers to use or disclose the information except as necessary to perform services on our behalf or comply with legal requirements.
+ Other third parties, such as law enforcement or other government entities, if required by law or if we believe disclosure is necessary or appropriate to protect the rights, property, or safety of us, our customers, or others.
+ Other third parties with your express consent.
+
+
+Protection Of Your Information
+We use a variety of administrative, physical, and technical security measures designed to protect your personal information. Despite our efforts, no security measures are perfect or impenetrable, and no method of data transmission can be guaranteed against any interception or other type of misuse. We will continue to enhance security procedures as new technologies and procedures become available.
+
+Your Rights and Choices
+We strive to provide you with choices regarding the personal information you provide to us. You may opt out of receiving our marketing emails by following the opt-out instructions provided in those emails. You can also review, update, and correct your personal information held by us by contacting us directly.
+
+Updates To Our Privacy Policy
+We may occasionally update this Privacy Policy, and we encourage you to periodically review it to stay informed about how we are protecting your information. We will post any changes on this page, and if the changes are significant, we will provide a more prominent notice.
+
+How To Contact Us
+If you have any questions or comments about this Privacy Policy, or if you would like us to update information we have about you or your preferences, please contact us by email at contact@nepalirudraksha.com .
+
+Your privacy is of utmost importance to us. We commit to safeguarding your personal information in accordance with legal obligations. By using our app, you are accepting the practices outlined in this Privacy Policy. If you do not agree to the terms of this Privacy Policy, please refrain from using our app.
+
+ `,
+ });
+}
diff --git a/app/api/refund-policy/route.js b/app/api/refund-policy/route.js
new file mode 100644
index 0000000..25ce2ba
--- /dev/null
+++ b/app/api/refund-policy/route.js
@@ -0,0 +1,73 @@
+import { NextResponse } from "next/server";
+
+export function GET(params) {
+ return NextResponse.json({
+ data: `
+ Refund policy
+At Gupta Rudraksha, we recognize the profound spiritual significance of Rudraksha. We are committed to providing our customers with authentic Gupta Rudraksha of the highest quality. With a heritage that spans three generations, we uphold stringent standards of authenticity and excellence.
+
+
+
+General Refund and Return Conditions:
+Refunds: Gupta Rudraksha offers refunds for items returned within 7 days of purchase, provided they remain in their original condition and are not energized, damaged, manipulated, or altered in any visible manner.
+
+Non-Returnable Items: Premium Energization (Prana Pratistha) orders are non-returnable due to the specific energization for individual or family use.
+
+ Inspection and Processing: Refunds undergo a thorough examination and may take up to 3 months to process.
+
+Lifetime Buyback Guarantee: Applicable if the Rudraksha is proven unauthentic by a verified lab, reinforcing your trust in our products. Customers bear the cost of verification.
+
+Custom Products: Customized products cannot be returned or refunded.
+
+
+
+Specific Return Policy:
+Final Sales: All sales through our website, in-store, or via sales representatives are considered final.
+
+Damaged Goods: Returns for goods damaged during shipping or due to shipment errors are accepted if reported within 12 hours of delivery. These are subject to a 20% service fee. Customers are responsible for payment processing fees charged by third-party providers.
+
+Return Review Period: Return requests are reviewed within 30 days of sale. Exceptions may be made based on mutual agreement.
+
+
+
+Additional Provisions for Accessories:
+Free Replacement/Repair: For Rudraksha chain, silver chain, silver design, and other accessories, we offer free replacement or repair for 1 month.
+
+Discounted Servicing: Discounted repair and servicing are available for 12 months.
+
+Post-Warranty Service Cost: After the 12-month period, customers are liable for repair and servicing costs.
+
+Flat-Rate Repair Service: Customers can opt to visit our Nepal location for repairs at a flat service fee of $50 (material costs excluded).
+
+
+
+Additional Refund Conditions:
+Authenticity Refund: 100% refund eligibility if items are proven unauthentic by a verified third-party lab, with lab fees borne by the customer.
+
+Lost Items: Full refunds for items lost during delivery, except in cases of natural disasters or unforeseeable circumstances.
+
+Order Delay: Full refunds for delays over 20 days in order processing, unless the delay is communicated or unknown to Gupta Rudraksha.
+
+Refund Request Window: Refund requests are reviewed and potentially accepted within 7 Days of the order date.
+
+To process a refund, items must be returned with the Original Product Certificate, Invoice (original or copy), packaging, documentation, lab certificates, discount coupons, etc. We recommend using our managed reverse courier service to ensure the safe delivery of returns. Customers opting to send parcels independently assume responsibility for loss or damage during transit.
+
+
+
+
+Return Address:
+Gupta Rudraksha
+Dakshinamurti Marg, Pashupati -08
+Kathmandu, Nepal
+Phone: +9779801059764
+
+
+
+
+Note:
+
Customers are responsible for shipment fees unless specified otherwise.
+
+We are dedicated to upholding the sacredness of Rudraksha beads and encourage their respectful handling. Our Return and Refund Policy ensures transparency, fairness, and customer satisfaction. For any inquiries or concerns, please contact us directly.
+ `,
+ });
+}
diff --git a/app/api/terms-of-service/route.js b/app/api/terms-of-service/route.js
new file mode 100644
index 0000000..4c24f78
--- /dev/null
+++ b/app/api/terms-of-service/route.js
@@ -0,0 +1,55 @@
+import { NextResponse } from "next/server";
+
+export async function GET(params) {
+ return NextResponse.json({
+ data: `
+ Terms of Service
+
+OVERVIEW
+This website is operated by Gupta Rudraksha. Throughout the site, the terms “we”, “us” and “our” refer to Gupta Rudraksha. Gupta Rudraksha offers this website, including all information, tools, and services available from this site to you, the user, conditioned upon your acceptance of all terms, conditions, policies, and notices stated here.
+
+By visiting our site and/or purchasing something from us, you engage in our “Service” and agree to be bound by the following terms and conditions (“Terms of Service”, “Terms”), including those additional terms and conditions and policies referenced herein and/or available by hyperlink. These Terms of Service apply to all users of the site, including without limitation users who are browsers, vendors, customers, merchants, and/or contributors of content.
+
+Please read these Terms of Service carefully before accessing or using our website. By accessing or using any part of the site, you agree to be bound by these Terms of Service. If you do not agree to all the terms and conditions of this agreement, then you may not access the website or use any services. If these Terms of Service are considered an offer, acceptance is expressly limited to these Terms of Service.
+
+Any new features or tools which are added to the current store shall also be subject to the Terms of Service. You can review the most current version of the Terms of Service at any time on this page. We reserve the right to update, change or replace any part of these Terms of Service by posting updates and/or changes to our website. It is your responsibility to check this page periodically for changes. Your continued use of or access to the website following the posting of any changes constitutes acceptance of those changes.
+
+Our store is hosted on Shopify Inc. They provide us with the online e-commerce platform that allows us to sell our products and services to you.
+
+SECTION 1 - ONLINE STORE TERMS
+By agreeing to these Terms of Service, you represent that you are at least the age of majority in your state or province of residence, or that you are the age of majority in your state or province of residence and you have given us your consent to allow any of your minor dependents to use this site. You may not use our products for any illegal or unauthorized purpose nor may you, in the use of the Service, violate any laws in your jurisdiction (including but not limited to copyright laws). You must not transmit any worms or viruses or any code of a destructive nature. A breach or violation of any of the Terms will result in an immediate termination of your Services.
+
+SECTION 2 - GENERAL CONDITIONS
+We reserve the right to refuse service to anyone for any reason at any time. You understand that your content (not including credit card information), may be transferred unencrypted and involve (a) transmissions over various networks; and (b) changes to conform and adapt to technical requirements of connecting networks or devices. Credit card information is always encrypted during transfer over networks. You agree not to reproduce, duplicate, copy, sell, resell or exploit any portion of the Service, use of the Service, or access to the Service or any contact on the website through which the service is provided, without express written permission by us. The headings used in this agreement are included for convenience only and will not limit or otherwise affect these Terms.
+
+SECTION 3 - ACCURACY, COMPLETENESS AND TIMELINESS OF INFORMATION
+We are not responsible if information made available on this site is not accurate, complete or current. The material on this site is provided for general information only and should not be relied upon or used as the sole basis for making decisions without consulting primary, more accurate, more complete or more timely sources of information. Any reliance on the material on this site is at your own risk. This site may contain certain historical information. Historical information, necessarily, is not current and is provided for your reference only. We reserve the right to modify the contents of this site at any time, but we have no obligation to update any information on our site. You agree that it is your responsibility to monitor changes to our site.
+
+SECTION 4 - MODIFICATIONS TO THE SERVICE AND PRICES
+Prices for our products are subject to change without notice. We reserve the right at any time to modify or discontinue the Service (or any part or content thereof) without notice at any time. We shall not be liable to you or to any third-party for any modification, price change, suspension or discontinuance of the Service.
+
+SECTION 5 - PRODUCTS OR SERVICES (if applicable)
+Certain products or services may be available exclusively online through the website. These products or services may have limited quantities and are subject to return or exchange only according to our Return Policy. We have made every effort to display as accurately as possible the colors and images of our products that appear at the store. We cannot guarantee that your computer monitor's display of any color will be accurate. We reserve the right, but are not obligated, to limit the sales of our products or Services to any person, geographic region or jurisdiction. We may exercise this right on a case-by-case basis. We reserve the right to limit the quantities of any products or services that we offer. All descriptions of products or product pricing are subject to change at any time without notice, at the sole discretion of us. We reserve the right to discontinue any product at any time. Any offer for any product or service made on this site is void where prohibited. We do not warrant that the quality of any products, services, information, or other material purchased or obtained by you will meet your expectations, or that any errors in the Service will be corrected.
+
+SECTION 6 - ACCURACY OF BILLING AND ACCOUNT INFORMATION
+We reserve the right to refuse any order you place with us. We may, in our sole discretion, limit or cancel quantities purchased per person, per household or per order. These restrictions may include orders placed by or under the same customer account, the same credit card, and/or orders that use the same billing and/or shipping address. In the event that we make a change to or cancel an order, we may attempt to notify you by contacting the e‑mail and/or billing address/phone number provided at the time the order was made. We reserve the right to limit or prohibit orders that, in our sole judgment, appear to be placed by dealers, resellers or distributors.
+
+You agree to provide current, complete and accurate purchase and account information for all purchases made at our store. You agree to promptly update your account and other information, including your email address and credit card numbers and expiration dates, so that we can complete your transactions and contact you as needed.
+
+For more detail, please review our Returns Policy.
+
+SECTION 7 - OPTIONAL TOOLS
+We may provide you with access to third-party tools over which we neither monitor nor have any control nor input. You acknowledge and agree that we provide access to such tools ”as is” and “as available” without any warranties, representations or conditions of any kind and without any endorsement. We shall have no liability whatsoever arising from or relating to your use of optional third-party tools. Any use by you of optional tools offered through the site is entirely at your own risk and discretion and you should ensure that you are familiar with and approve of the terms on which tools are provided by the relevant third-party provider(s). We may also, in the future, offer new services and/or features through the website (including the release of new tools and resources). Such new features and/or services shall also be subject to these Terms of Service.
+
+SECTION 8 - THIRD-PARTY LINKS
+Certain content, products, and services available via our Service may include materials from third-parties. Third-party links on this site may direct you to third-party websites that are not affiliated with us. We are not responsible for examining or evaluating the content or accuracy and we do not warrant and will not have any liability or responsibility for any third-party materials or websites, or for any other materials, products, or services of third-parties. We are not liable for any harm or damages related to the purchase or use of goods, services, resources, content, or any other transactions made in connection with any third-party websites. Please review carefully the third-party's policies and practices and make sure you understand them before you engage in any transaction. Complaints, claims, concerns, or questions regarding third-party products should be directed to the third-party.
+
+SECTION 9 - USER COMMENTS, FEEDBACK AND OTHER SUBMISSIONS
+If, at our request, you send certain specific submissions (for example contest entries) or without a request from us you send creative ideas, suggestions, proposals, plans, or other materials, whether online, by email, by postal mail, or otherwise (collectively, 'comments'), you agree that we may, at any time, without restriction, edit, copy, publish, distribute, translate and otherwise use in any medium any comments that you forward to us. We are and shall be under no obligation (1) to maintain any comments in confidence; (2) to pay compensation for any comments; or (3) to respond to any comments.
+
+We may, but have no obligation to, monitor, edit or remove content that we determine in our sole discretion are unlawful, offensive, threatening, lib
+
+
+ `,
+ });
+}
diff --git a/app/blogs/blog/[blog-id]/page.jsx b/app/blogs/blog/[blog-id]/page.jsx
new file mode 100644
index 0000000..f60351e
--- /dev/null
+++ b/app/blogs/blog/[blog-id]/page.jsx
@@ -0,0 +1,13 @@
+import SingleBlog from '@/components/blog/SingleBlog'
+import Image from 'next/image'
+import React from 'react'
+
+const page = () => {
+ return (
+
+
+
+ )
+}
+
+export default page
diff --git a/app/blogs/blog/page.jsx b/app/blogs/blog/page.jsx
new file mode 100644
index 0000000..c55f901
--- /dev/null
+++ b/app/blogs/blog/page.jsx
@@ -0,0 +1,16 @@
+import BlogHome from '@/components/blog/BlogHome'
+import React from 'react'
+
+export const metadata ={
+ title: 'Blogs',
+}
+
+const page = () => {
+ return (
+
+
+
+ )
+}
+
+export default page
diff --git a/app/collections/[id]/page.jsx b/app/collections/[id]/page.jsx
new file mode 100644
index 0000000..0448c15
--- /dev/null
+++ b/app/collections/[id]/page.jsx
@@ -0,0 +1,23 @@
+import FaqCard from '@/components/common-components/FaqCard'
+import ExploreSiddhaMala from '@/components/siddha-mala/ExploreSiddhamala'
+import SiddhaThree from '@/components/siddha-mala/SiddhaThree'
+import CategoryHero from '@/components/siddha-mala/categoryHero'
+
+
+export const metadata = {
+ title: 'Buy Gupta Siddha mala(1 to 14 mukhi) 100% X-Ray Certified Authentic',
+ description: "Generated by create next app",
+}
+
+
+const Page = ({params}) => {
+ return (
+
+
+
+
+
+ )
+}
+
+export default Page
diff --git a/app/collections/online-pooja/page.jsx b/app/collections/online-pooja/page.jsx
new file mode 100644
index 0000000..4fc12af
--- /dev/null
+++ b/app/collections/online-pooja/page.jsx
@@ -0,0 +1,21 @@
+import BuyRudrakshaOne from '@/components/buy-rudraksha/BuyRudrakshaOne'
+import ExplorePooja from '@/components/online-pooja/ExplorePooja'
+import PoojaSubscription from '@/components/online-pooja/PoojaSubscription'
+import React from 'react'
+
+export const metadata={
+ title: 'Online Pooja Services by Certified Hindu Priests | Gupta Rudraksha',
+}
+
+
+const page = () => {
+ return (
+
+ )
+}
+
+export default page
diff --git a/app/collections/shaligram/page.jsx b/app/collections/shaligram/page.jsx
new file mode 100644
index 0000000..6982919
--- /dev/null
+++ b/app/collections/shaligram/page.jsx
@@ -0,0 +1,14 @@
+import BuyRudrakshaOne from '@/components/buy-rudraksha/BuyRudrakshaOne'
+import ListOfShaligram from '@/components/shaligram/ListOfShaligram'
+import React from 'react'
+
+const page = () => {
+ return (
+
+
+
+
+ )
+}
+
+export default page
diff --git a/app/contexts/currencyContext.js b/app/contexts/currencyContext.js
new file mode 100644
index 0000000..71c03e8
--- /dev/null
+++ b/app/contexts/currencyContext.js
@@ -0,0 +1,150 @@
+"use client";
+import React, { createContext, useContext, useState, useEffect } from "react";
+
+const CurrencyContext = createContext();
+
+export const SUPPORTED_CURRENCIES = {
+ INR: { symbol: "₹", name: "Indian Rupee", country: "India" },
+ MYR: { symbol: "RM", name: "Malaysian Ringgit", country: "Malaysia" },
+ NPR: { symbol: "रू", name: "Nepalese Rupee", country: "Nepal" },
+};
+
+export const CurrencyProvider = ({ children }) => {
+ const [selectedCurrency, setSelectedCurrency] = useState("INR");
+ const [exchangeRates, setExchangeRates] = useState(null);
+ const [isLoading, setIsLoading] = useState(true);
+ const [error, setError] = useState(null);
+
+ const fetchExchangeRates = async () => {
+ try {
+ setIsLoading(true);
+ setError(null);
+
+ const cachedData = localStorage.getItem("exchangeRates");
+ const cached = cachedData ? JSON.parse(cachedData) : null;
+
+ if (
+ cached &&
+ new Date().getTime() - cached.timestamp < 24 * 60 * 60 * 1000
+ ) {
+ setExchangeRates(cached.rates);
+ setIsLoading(false);
+ return;
+ }
+
+ const currencies = Object.keys(SUPPORTED_CURRENCIES)
+ .filter((key) => key !== "INR")
+ .join(",");
+
+ const response = await fetch(
+ `https://apilayer.net/api/live?access_key=9bcb30907dee1cda9866f7b49f0f8def¤cies=${currencies}&source=INR&format=1`
+ );
+
+ if (!response.ok) {
+ throw new Error("Failed to fetch exchange rates");
+ }
+
+ const data = await response.json();
+ if (!data.success) {
+ throw new Error(data.error?.info || "API request failed");
+ }
+
+ const rates = Object.keys(SUPPORTED_CURRENCIES).reduce(
+ (acc, currency) => {
+ if (currency === "INR") {
+ acc[currency] = 1;
+ } else {
+ const rate = data.quotes?.[`INR${currency}`];
+ acc[currency] = rate || null;
+ }
+ return acc;
+ },
+ {}
+ );
+
+ const ratesData = {
+ rates,
+ timestamp: data.timestamp * 1000,
+ };
+
+ localStorage.setItem("exchangeRates", JSON.stringify(ratesData));
+ setExchangeRates(rates);
+ } catch (err) {
+ setError("Error fetching exchange rates");
+ console.error("Exchange rate fetch error:", err);
+ } finally {
+ setIsLoading(false);
+ }
+ };
+
+ const convertPrice = (price) => {
+ if (!price || typeof price !== "number") return price;
+ if (!exchangeRates || !exchangeRates[selectedCurrency]) return price;
+ if (selectedCurrency === "INR") return price;
+
+ try {
+ const rate = exchangeRates[selectedCurrency];
+ return rate ? Number((price * rate).toFixed(2)) : price;
+ } catch (err) {
+ console.error("Price conversion error:", err);
+ return price;
+ }
+ };
+
+ const formatPrice = (price) => {
+ const convertedPrice = convertPrice(price);
+
+ if (typeof convertedPrice !== "number")
+ return `${SUPPORTED_CURRENCIES[selectedCurrency].symbol}0.00`;
+
+ try {
+ return new Intl.NumberFormat(getLocaleFromCurrency(selectedCurrency), {
+ style: "currency",
+ currency: selectedCurrency,
+ }).format(convertedPrice);
+ } catch (err) {
+ return `${
+ SUPPORTED_CURRENCIES[selectedCurrency].symbol
+ }${convertedPrice.toFixed(2)}`;
+ }
+ };
+
+ const getLocaleFromCurrency = (currency) => {
+ const localeMap = {
+ INR: "en-IN",
+ MYR: "ms-MY",
+ NPR: "ne-NP",
+ };
+ return localeMap[currency] || "en-US";
+ };
+
+ useEffect(() => {
+ fetchExchangeRates();
+ const interval = setInterval(fetchExchangeRates, 24 * 60 * 60 * 1000);
+ return () => clearInterval(interval);
+ }, []);
+
+ const value = {
+ selectedCurrency,
+ setSelectedCurrency,
+ convertPrice,
+ formatPrice,
+ isLoading,
+ error,
+ SUPPORTED_CURRENCIES,
+ refreshRates: fetchExchangeRates,
+ };
+
+ return (
+
+ {children}
+
+ );
+};
+export const useCurrency = () => {
+ const context = useContext(CurrencyContext);
+ if (!context) {
+ throw new Error('useCurrency must be used within a CurrencyProvider');
+ }
+ return context;
+ };
\ No newline at end of file
diff --git a/app/contexts/mainContext.js b/app/contexts/mainContext.js
new file mode 100644
index 0000000..071e708
--- /dev/null
+++ b/app/contexts/mainContext.js
@@ -0,0 +1,92 @@
+'use client'
+import axios from "axios";
+import { createContext, useState } from "react";
+import { useRouter } from "next/navigation";
+import toast from "react-hot-toast";
+
+
+
+
+const MainContext = createContext()
+
+export const ContextProvider = ({ children }) => {
+ const router = useRouter()
+ const [token, setToken] = useState(() => {
+ if (typeof window !== 'undefined' && localStorage.getItem('token')) {
+ return localStorage.getItem('token');
+ }
+ return null;
+ });
+ const backendUrl = process.env.NEXT_PUBLIC_BACKEND_URL;
+
+
+ const loginUser = async (credentials) => {
+ try {
+ const response = await axios.post(`${backendUrl}/account/login/`, credentials);
+ console.log("Login Successful:", response.data);
+ setToken(response.data.token)
+ localStorage.setItem('token',response.data.token)
+ toast.success('Login Successful');
+ router.push('/')
+
+ return response.data
+ } catch (error) {
+ if (error.response) {
+
+ console.error("Error during login:", error.response.data);
+ const message = error.response.data.message || "Login failed. Please try again.";
+ toast.error(message);
+ } else if (error.request) {
+
+ console.error("No response during login:", error.request);
+ toast.error("Unable to connect to the server. Please try again later.");
+ } else {
+
+ console.error("Unexpected error during login:", error.message);
+ toast.error("An unexpected error occurred. Please try again.");
+ }
+ throw error;
+ }
+ };
+
+ const registerUser = async (credentials) => {
+ try {
+ const response = await axios.post(`${backendUrl}/account/register/`, credentials);
+ console.log("Register Successful:", response.data);
+ setToken(response.data.token)
+ localStorage.setItem('token',response.data.token)
+ toast.success('Registration Successful');
+ router.push('/')
+
+ return response.data;
+ } catch (error) {
+ if (error.response) {
+ console.error("Error during registration:", error.response.data);
+ const message = error.response.data.message || "Registration failed. Please try again.";
+ toast.error(message);
+ } else if (error.request) {
+
+ console.error("No response during registration:", error.request);
+ toast.error("Unable to connect to the server. Please try again later.");
+ } else {
+
+ console.error("Unexpected error during registration:", error.message);
+ toast.error("An unexpected error occurred. Please try again.");
+ }
+ throw error;
+ }
+ };
+
+ return (
+
+ {children}
+
+ )
+}
+
+export default MainContext
\ No newline at end of file
diff --git a/app/contexts/productContext.js b/app/contexts/productContext.js
new file mode 100644
index 0000000..2d133e2
--- /dev/null
+++ b/app/contexts/productContext.js
@@ -0,0 +1,61 @@
+"use client";
+
+import authAxios, { backendUrl } from "@/utils/axios";
+import axios from "axios";
+import { createContext, useEffect, useState } from "react";
+import toast from "react-hot-toast";
+
+const ProductContext = createContext();
+
+export const ProductContextProvider = ({ children }) => {
+ const [products, setProducts] = useState(null);
+ const [category, setCategory] = useState(null);
+
+
+ const fetchData = async () => {
+ const response = await axios.get(`${backendUrl}/products/variants/`);
+ setProducts(response.data)
+ };
+
+ const fetchCategory = async () => {
+ const response = await axios.get(`${backendUrl}/products/category/`);
+ setCategory(response.data);
+
+ };
+ useEffect(() => {
+ fetchData();
+ fetchCategory();
+ }, []);
+
+ const cartFn = async (variantId, designId, quantity) => {
+
+ try{
+ const response = await authAxios.post('/orders/cart/manage_item/',{
+ variant: variantId,
+ design: designId,
+ quantity: quantity
+ })
+ toast.success('Modified Cart Successfully!')
+ return response
+ }
+ catch(error){
+ if (error?.response.data?.detail) {
+ toast.error('Please login First!')
+ }
+ else {
+ toast.error(error?.response.data?.error || 'Failed To Modify Cart')
+ }
+ return error
+ }
+ }
+ return (
+ {children}
+ );
+};
+
+export default ProductContext;
diff --git a/app/fonts/GeistMonoVF.woff b/app/fonts/GeistMonoVF.woff
new file mode 100644
index 0000000..f2ae185
Binary files /dev/null and b/app/fonts/GeistMonoVF.woff differ
diff --git a/app/fonts/GeistVF.woff b/app/fonts/GeistVF.woff
new file mode 100644
index 0000000..1b62daa
Binary files /dev/null and b/app/fonts/GeistVF.woff differ
diff --git a/app/globals.css b/app/globals.css
new file mode 100644
index 0000000..3a13830
--- /dev/null
+++ b/app/globals.css
@@ -0,0 +1,87 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+@import url('https://fonts.googleapis.com/css2?family=Emilys+Candy&display=swap');
+
+@import url('https://fonts.googleapis.com/css2?family=Questrial&display=swap');
+/* bg-[#C19A5B] */
+body {
+ font-family: 'Questrial', sans-serif;
+ background-color: white;
+
+}
+
+
+@layer base {
+ :root {
+ --background: 0 0% 100%;
+ --foreground: 240 10% 3.9%;
+ --card: 0 0% 100%;
+ --card-foreground: 240 10% 3.9%;
+ --popover: 0 0% 100%;
+ --popover-foreground: 240 10% 3.9%;
+ --primary: 240 5.9% 10%;
+ --primary-foreground: 0 0% 98%;
+ --secondary: 240 4.8% 95.9%;
+ --secondary-foreground: 240 5.9% 10%;
+ --muted: 240 4.8% 95.9%;
+ --muted-foreground: 240 3.8% 46.1%;
+ --accent: 240 4.8% 95.9%;
+ --accent-foreground: 240 5.9% 10%;
+ --destructive: 0 84.2% 60.2%;
+ --destructive-foreground: 0 0% 98%;
+ --border: 240 5.9% 90%;
+ --input: 240 5.9% 90%;
+ --ring: 240 10% 3.9%;
+ --chart-1: 12 76% 61%;
+ --chart-2: 173 58% 39%;
+ --chart-3: 197 37% 24%;
+ --chart-4: 43 74% 66%;
+ --chart-5: 27 87% 67%;
+ --radius: 0.5rem
+ }
+ .dark {
+ --background: 240 10% 3.9%;
+ --foreground: 0 0% 98%;
+ --card: 240 10% 3.9%;
+ --card-foreground: 0 0% 98%;
+ --popover: 240 10% 3.9%;
+ --popover-foreground: 0 0% 98%;
+ --primary: 0 0% 98%;
+ --primary-foreground: 240 5.9% 10%;
+ --secondary: 240 3.7% 15.9%;
+ --secondary-foreground: 0 0% 98%;
+ --muted: 240 3.7% 15.9%;
+ --muted-foreground: 240 5% 64.9%;
+ --accent: 240 3.7% 15.9%;
+ --accent-foreground: 0 0% 98%;
+ --destructive: 0 62.8% 30.6%;
+ --destructive-foreground: 0 0% 98%;
+ --border: 240 3.7% 15.9%;
+ --input: 240 3.7% 15.9%;
+ --ring: 240 4.9% 83.9%;
+ --chart-1: 220 70% 50%;
+ --chart-2: 160 60% 45%;
+ --chart-3: 30 80% 55%;
+ --chart-4: 280 65% 60%;
+ --chart-5: 340 75% 55%
+ }
+}
+@layer base {
+ * {
+ @apply border-border;
+ }
+ body {
+ @apply bg-background text-foreground;
+ }
+}
+
+.hide-navbar::-webkit-scrollbar{
+ display: none;
+}
+
+.custom-border {
+ @apply border-[#fcdaa3];
+ border-width: 1px; /* Custom border width less than 1px */
+}
\ No newline at end of file
diff --git a/app/layout.js b/app/layout.js
new file mode 100644
index 0000000..e70eb81
--- /dev/null
+++ b/app/layout.js
@@ -0,0 +1,40 @@
+import { Toaster } from "react-hot-toast";
+import { ContextProvider } from "./contexts/mainContext";
+import "./globals.css";
+
+import NavigationWrapper from "./NavigationWrapper";
+import WrapperFooter from "./WrapperFooter";
+import { ProductContextProvider } from "./contexts/productContext";
+import { CurrencyProvider } from "./contexts/currencyContext";
+
+export const metadata = {
+ title: "Gupta Rudraksha",
+ description: "Powered by Rudraksha",
+};
+
+export default function RootLayout({ children }) {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ {children}
+
+
+
+
+
+
+ );
+}
diff --git a/app/loading.js b/app/loading.js
new file mode 100644
index 0000000..da06d91
--- /dev/null
+++ b/app/loading.js
@@ -0,0 +1,14 @@
+import { Skeleton } from "@/components/ui/skeleton";
+
+export default function loading() {
+ return (
+
+ );
+}
diff --git a/app/not-found.js b/app/not-found.js
new file mode 100644
index 0000000..b9a2344
--- /dev/null
+++ b/app/not-found.js
@@ -0,0 +1,17 @@
+import Link from 'next/link'
+import { headers } from 'next/headers'
+
+export default async function NotFound() {
+ const headersList = headers()
+ const domain = headersList.get('host')
+
+ return (
+
+
Not Found:
+
Could not find requested resource
+
+ Back to home
+
+
+ )
+}
\ No newline at end of file
diff --git a/app/page.js b/app/page.js
new file mode 100644
index 0000000..8798a34
--- /dev/null
+++ b/app/page.js
@@ -0,0 +1,19 @@
+import Hero from "@/components/hero-page/Hero";
+import HeroFour from "@/components/hero-page/HeroFour";
+import HeroSix from "@/components/hero-page/HeroSix";
+import SecondGallery from "@/components/product-category/SecondGallery";
+import BannerSlider from "@/components/sliders/BannerSlider";
+import SliderTwo from "@/components/sliders/SliderTwo";
+
+export default function Home() {
+ return (
+ <>
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/app/pages/about-us/page.jsx b/app/pages/about-us/page.jsx
new file mode 100644
index 0000000..83acacc
--- /dev/null
+++ b/app/pages/about-us/page.jsx
@@ -0,0 +1,17 @@
+import AboutUsTopBanner from '@/components/about-us/AboutTopBanner'
+import AboutUsSecondBanner from '@/components/about-us/AboutUsSecondBanner'
+import React from 'react'
+
+export const metadata= {
+ title: 'About Gupta Rudraksha; The World Largest Rudraksha Vendor'
+}
+const page = () => {
+ return (
+
+ )
+}
+
+export default page
diff --git a/app/pages/buy-rudraksha/page.jsx b/app/pages/buy-rudraksha/page.jsx
new file mode 100644
index 0000000..d2e8ba7
--- /dev/null
+++ b/app/pages/buy-rudraksha/page.jsx
@@ -0,0 +1,23 @@
+import BuyRudrakshaOne from '@/components/buy-rudraksha/BuyRudrakshaOne'
+import PopularRudrakshaCombination from '@/components/buy-rudraksha/PopularRudrakshaCombination'
+import ZodiacBasedSign from '@/components/buy-rudraksha/ZodiacBasedSign'
+import PremiumBannerOne from '@/components/premium-rudraksha/PremiumBannerOne'
+import React from 'react'
+
+export const metadata = {
+ title: 'Buy Rudraksha Online | Orginal Gupta Rudraksha',
+ description: "Generated by create next app",
+}
+
+const page = () => {
+ return (
+
+ )
+}
+
+export default page
diff --git a/app/pages/certification-and-guarantee/page.jsx b/app/pages/certification-and-guarantee/page.jsx
new file mode 100644
index 0000000..8e4bc6a
--- /dev/null
+++ b/app/pages/certification-and-guarantee/page.jsx
@@ -0,0 +1,21 @@
+import CertificationBannerOne from '@/components/certification/CertificationBannerOne'
+import CertificationBannerTwo from '@/components/certification/CertificationBannerTwo'
+import CertificationGallerySection from '@/components/certification/CertificationGallery'
+import React from 'react'
+
+export const metadata = {
+ title: 'Certified Authentic Rudraksha with Lifetime Guarantee',
+}
+
+
+const page = () => {
+ return (
+
+ {/* */}
+
+
+
+ )
+}
+
+export default page
diff --git a/app/pages/contact-us/page.jsx b/app/pages/contact-us/page.jsx
new file mode 100644
index 0000000..a037dd4
--- /dev/null
+++ b/app/pages/contact-us/page.jsx
@@ -0,0 +1,20 @@
+import ContactUs from '@/components/contact-us/ContactUs'
+import EmbeddedMap from '@/components/maps/Maps'
+import React from 'react'
+
+export const metadata = {
+ title:"Contact Us"
+}
+
+
+
+const Page = () => {
+ return (
+
+
+
+
+ )
+}
+
+export default Page
diff --git a/app/pages/exclusive-rudraksha/page.jsx b/app/pages/exclusive-rudraksha/page.jsx
new file mode 100644
index 0000000..c2d111a
--- /dev/null
+++ b/app/pages/exclusive-rudraksha/page.jsx
@@ -0,0 +1,20 @@
+import PopularRudrakshaCombination from '@/components/buy-rudraksha/PopularRudrakshaCombination'
+import ExclusiveRudrakshaBanner from '@/components/exclusive-rudraksha/ExclusiveRudrakshaBanner'
+import ListofRudrakshaCard from '@/components/exclusive-rudraksha/ListofRudrakshaCard'
+import WhyShouldChooseUs from '@/components/exclusive-rudraksha/WhyShouldChooseUs'
+import PremiumBannerOne from '@/components/premium-rudraksha/PremiumBannerOne'
+import React from 'react'
+
+const page = () => {
+ return (
+
+ )
+}
+
+export default page
diff --git a/app/pages/payment-information/page.jsx b/app/pages/payment-information/page.jsx
new file mode 100644
index 0000000..f97903e
--- /dev/null
+++ b/app/pages/payment-information/page.jsx
@@ -0,0 +1,11 @@
+import React from 'react'
+
+const Page = () => {
+ return (
+
+
+
+ )
+}
+
+export default Page
diff --git a/app/pages/rudraksha-combination/page.jsx b/app/pages/rudraksha-combination/page.jsx
new file mode 100644
index 0000000..5b1c7dc
--- /dev/null
+++ b/app/pages/rudraksha-combination/page.jsx
@@ -0,0 +1,13 @@
+import PopularRudrakshaCombination from '@/components/buy-rudraksha/PopularRudrakshaCombination'
+import React from 'react'
+
+const Page = () => {
+ return (
+
+ )
+}
+
+export default Page
diff --git a/app/pages/shipping-information/page.jsx b/app/pages/shipping-information/page.jsx
new file mode 100644
index 0000000..c1e721e
--- /dev/null
+++ b/app/pages/shipping-information/page.jsx
@@ -0,0 +1,15 @@
+import ShippingPolicy from "@/components/shipping-policy/ShippingPolicy";
+import React from "react";
+export const metadata = {
+ title: "Shipping Information",
+};
+
+const Page = () => {
+ return (
+
+
+
+ );
+};
+
+export default Page;
diff --git a/app/pages/shopping-cart/page.jsx b/app/pages/shopping-cart/page.jsx
new file mode 100644
index 0000000..14842e1
--- /dev/null
+++ b/app/pages/shopping-cart/page.jsx
@@ -0,0 +1,13 @@
+
+import ShoppingCart from "@/components/shopping-cart/shoppingCart";
+import React from "react";
+
+const Page = () => {
+ return (
+
+
+
+ );
+};
+
+export default Page;
diff --git a/app/pages/track-order/page.jsx b/app/pages/track-order/page.jsx
new file mode 100644
index 0000000..263f11d
--- /dev/null
+++ b/app/pages/track-order/page.jsx
@@ -0,0 +1,16 @@
+import TrackOrder from "@/components/track-order/TrackOrder";
+import React from "react";
+
+export const metadata = {
+ title: "Track Order",
+};
+
+const Page = () => {
+ return (
+
+
+S
+ );
+};
+
+export default Page;
diff --git a/app/policies/privacy-policy/page.jsx b/app/policies/privacy-policy/page.jsx
new file mode 100644
index 0000000..f3e7fc6
--- /dev/null
+++ b/app/policies/privacy-policy/page.jsx
@@ -0,0 +1,16 @@
+import PremiumBannerOne from "@/components/premium-rudraksha/PremiumBannerOne";
+import PrivacyPolicy from "@/components/privacy-policy/PrivacyPolicy";
+
+export const metadata = {
+ title: "Privacy Policy",
+};
+const Page = () => {
+ return (
+
+ );
+};
+
+export default Page;
diff --git a/app/policies/refund-policy/page.jsx b/app/policies/refund-policy/page.jsx
new file mode 100644
index 0000000..99a300c
--- /dev/null
+++ b/app/policies/refund-policy/page.jsx
@@ -0,0 +1,16 @@
+
+import RefundPolicy from "@/components/refund-policy/RefundPolicy";
+import React from "react";
+
+export const metadata = {
+ title: "Refund Policy",
+};
+const Page = () => {
+ return (
+
+
+
+ );
+};
+
+export default Page;
diff --git a/app/policies/terms-of-services/page.jsx b/app/policies/terms-of-services/page.jsx
new file mode 100644
index 0000000..92fd6ab
--- /dev/null
+++ b/app/policies/terms-of-services/page.jsx
@@ -0,0 +1,11 @@
+import TermsOfService from "@/components/terms-services/TermsOfService";
+
+const page = () => {
+ return (
+
+
+
+ );
+};
+
+export default page;
diff --git a/app/products/[name]/page.jsx b/app/products/[name]/page.jsx
new file mode 100644
index 0000000..2ccffdd
--- /dev/null
+++ b/app/products/[name]/page.jsx
@@ -0,0 +1,22 @@
+import AddToCardLeftSection from "@/components/products/AddToCardLeftSection";
+import AddToCardRightSection from "@/components/products/AddToCardRightSection";
+import RelatedProductCards from "@/components/products/RelatedProductCards";
+import RelatedVideos from "@/components/products/RelatedVideos";
+import React from "react";
+
+const page = ({ params }) => {
+
+ return (
+
+ );
+};
+
+export default page;
diff --git a/app/products/premium-rudraksha-consultation-astrology/page.jsx b/app/products/premium-rudraksha-consultation-astrology/page.jsx
new file mode 100644
index 0000000..4ed397f
--- /dev/null
+++ b/app/products/premium-rudraksha-consultation-astrology/page.jsx
@@ -0,0 +1,26 @@
+import PremiumBanner from '@/components/premium-rudraksha/PremiumBanner'
+import PremiumBannerLast from '@/components/premium-rudraksha/PremiumBannerLast'
+import PremiumBannerOne from '@/components/premium-rudraksha/PremiumBannerOne'
+import PremiumBannerTwo from '@/components/premium-rudraksha/PremiumBannerTwo'
+import PremuimBannerThree from '@/components/premium-rudraksha/PremuimBannerThree'
+import React from 'react'
+
+export const metadata = {
+ title: "Premium Rudraksha Consultation Astrology",
+ description: "Generated by create next app",
+};
+
+
+const Page = () => {
+ return (
+
+ )
+}
+
+export default Page
diff --git a/components.json b/components.json
new file mode 100644
index 0000000..3a03f7d
--- /dev/null
+++ b/components.json
@@ -0,0 +1,20 @@
+{
+ "$schema": "https://ui.shadcn.com/schema.json",
+ "style": "new-york",
+ "rsc": true,
+ "tsx": false,
+ "tailwind": {
+ "config": "tailwind.config.js",
+ "css": "app/globals.css",
+ "baseColor": "zinc",
+ "cssVariables": true,
+ "prefix": ""
+ },
+ "aliases": {
+ "components": "@/components",
+ "utils": "@/lib/utils",
+ "ui": "@/components/ui",
+ "lib": "@/lib",
+ "hooks": "@/hooks"
+ }
+}
\ No newline at end of file
diff --git a/components/about-us/AboutTopBanner.jsx b/components/about-us/AboutTopBanner.jsx
new file mode 100644
index 0000000..06382c0
--- /dev/null
+++ b/components/about-us/AboutTopBanner.jsx
@@ -0,0 +1,12 @@
+import React from 'react'
+
+const AboutUsTopBanner = () => {
+ return (
+
+
"Rudraksha is merely a seed for some and for some it is the majestic bead that changed their life. It is therefore the way you wear, energize and select the Rudraksha that makes the difference."
+ - Late Mr. Balaram Khatiwada (Founding Father, Gupta Rudraksha)
+
+ )
+}
+
+export default AboutUsTopBanner
diff --git a/components/about-us/AboutUsSecondBanner.jsx b/components/about-us/AboutUsSecondBanner.jsx
new file mode 100644
index 0000000..551353f
--- /dev/null
+++ b/components/about-us/AboutUsSecondBanner.jsx
@@ -0,0 +1,137 @@
+import Image from "next/image";
+import React from "react";
+
+const AboutUsSecondBanner = () => {
+ return (
+ <>
+
+
+
+
+
+
1960s
+
+ Late Mr. Balaram Khatiwada
+
+
+ In the late 1960s, Mr. Balaram Khatiwada who used to be a priest at
+ the Pashupatinath temple started Gupta Rudraksha as a shop which
+ sold flowers, Rudraksha and Saligrams to the devotees who visited
+ Pashupatinath temple.What differentiated Gupta Rudraksha from other
+ vendors is our founding father's commitment to authenticity and
+ his way of treating customers as family members.
+
+
+ Cultural Expansion
+
+
+ Till this date, we carry this culture and have increased the size of
+ our family to thousands of customers from more than 160 countries.
+ Furthermore, Mr. Balaram being a vedic scholar himself believed that
+ each Rudraksha must be energized with the touch of Lord
+ Pashupatinath to deliver maximum benefit to the wearer.
+
+
+
+ {/* second section */}
+
+
+
+ 1990s-2000s
+
+
+ Mr. Mukunda Khatiwada's Involvement:
+
+
+ Mr. Mukunda observes the exploitation of Rudraksha and the spread of
+ myths about it on the internet.
+
+
+
+ Exploitation and Myths
+
+
+ Mr. Mukunda, as seen in an image with Late Mrs. Laxmi Khatiwada,
+ gets involved in the family business from a very young age. He is
+ taught by his father about Rudraksha since the age of 5.
+
+
+ Leading Online Store
+
+
+ Mr. Mukunda Khatiwada launches Gupta Rudraksha as an online store
+ and aims to ensure seekers of authentic Rudraksha are provided with
+ genuine products and to preserve traditional practices.
+
+
+ Gupta Rudraksha becomes the leading online store, the only one based
+ in Nepal offering Rudraksha energized in the traditional fashion at
+ Pashupatinath Temple.
+
+
+
+
+
+
+ {/* third section */}
+
+
+
+
+
+
+ Present
+
+ Global Reach
+
+ Gupta Rudraksha supplies 90% of all Gupta Rudraksha globally.
+
+
+ The largest seller of Indra Mala (1-21 Mukhi) in the world.
+
+
+ Boasts the largest collection of Gupta Rudraksha and Shaligram
+ globally.
+
+ Clientele
+
+ Mr. Mukunda Khatiwada has provided Rudraksha to various celebrities,
+ business tycoons, yogis, gurus, and individuals from various walks
+ of life.
+
+
+ Continued Legacy
+
+
+ Gupta Rudraksha continues to uphold the values of authenticity,
+ tradition, and customer-centricity established by Mr. Balaram
+ Khatiwada..
+
+
+
+ >
+ );
+};
+
+export default AboutUsSecondBanner;
diff --git a/components/accounts/AccountSidebar.jsx b/components/accounts/AccountSidebar.jsx
new file mode 100644
index 0000000..bc6c307
--- /dev/null
+++ b/components/accounts/AccountSidebar.jsx
@@ -0,0 +1,82 @@
+'use client'
+import MainContext from "@/app/contexts/mainContext";
+import authAxios from "@/utils/axios";
+import Link from "next/link";
+import { useRouter } from "next/navigation";
+import React, { useContext } from "react";
+import toast from "react-hot-toast";
+
+const AccountSidebar = () => {
+ const router = useRouter()
+ const { setToken } = useContext(MainContext)
+ const logoutFn = async () => {
+ const response = await authAxios.post('/account/logout/')
+ if (response.status == 200) {
+ localStorage.removeItem('token')
+ setToken(null)
+ toast.success(response.data.message)
+ router.push('/')
+ }
+ console.log(response)
+ }
+ return (
+
+
+
+
+
+ 👤 My profile
+
+
+ 📦 Orders{" "}
+
+ {/*
+ 📍 Addresses{" "}
+
+ 1
+
+ */}
+
+ 🔑 Change password
+
+ logoutFn()}
+ className="block py-2 px-4 text-gray-700 hover:bg-gray-200 pr-80"
+ >
+ 🚪 Logout
+
+
+
+
+
+
+ );
+};
+
+export default AccountSidebar;
diff --git a/components/accounts/AddNewAddress.jsx b/components/accounts/AddNewAddress.jsx
new file mode 100644
index 0000000..9d766d7
--- /dev/null
+++ b/components/accounts/AddNewAddress.jsx
@@ -0,0 +1,193 @@
+'use client'
+import { useState } from 'react';
+import authAxios from '@/utils/axios';
+import toast from 'react-hot-toast';
+import { useRouter } from 'next/navigation';
+
+const AddNewAddress = () => {
+ const [formData, setFormData] = useState({
+ first_name: '',
+ last_name: '',
+ company: '',
+ address: '',
+ apartment: '',
+ city: '',
+ country: '',
+ zipcode: '',
+ phone: ''
+ });
+ const router = useRouter();
+
+ const [loading, setLoading] = useState(false);
+ const [error, setError] = useState('');
+
+ const handleChange = (e) => {
+ const { name, value } = e.target;
+ setFormData(prev => ({
+ ...prev,
+ [name]: value
+ }));
+ };
+
+ const handleSubmit = async (e) => {
+ e.preventDefault();
+ setLoading(true);
+ setError('');
+
+ try {
+ const response = await authAxios.post('/account/addresses/', formData);
+ toast.success('Address added successfully')
+ router.push('/accounts/profile/addresses')
+ // Handle success (e.g., redirect or show success message)
+ console.log('Address added successfully:', response.data);
+
+
+ } catch (err) {
+ setError(err.response?.data?.message || 'Failed to add address');
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ return (
+
+
Add a new address
+ {error &&
{error}
}
+
+
+ );
+};
+
+export default AddNewAddress;
\ No newline at end of file
diff --git a/components/accounts/addresses.jsx b/components/accounts/addresses.jsx
new file mode 100644
index 0000000..83da841
--- /dev/null
+++ b/components/accounts/addresses.jsx
@@ -0,0 +1,95 @@
+'use client'
+import authAxios from '@/utils/axios';
+import { MapPin, Edit, Trash2 } from 'lucide-react';
+import Link from 'next/link';
+import { useRouter } from 'next/navigation';
+import React, { useEffect, useState } from 'react';
+
+const Addresses = () => {
+ const [addresses, setAddresses] = useState([]);
+ const [error, setError] = useState('');
+ const [isDeleting, setIsDeleting] = useState(false);
+ const router = useRouter();
+
+ const fetchAddresses = async () => {
+ try {
+ const response = await authAxios.get('/account/addresses/');
+ setAddresses(response.data);
+ } catch (error) {
+ setError('Failed to fetch addresses');
+ console.error(error);
+ }
+ };
+
+ const handleEdit = (id) => {
+ router.push(`/accounts/profile/addresses/${id}`);
+ };
+
+ const handleDelete = async (id) => {
+ if (!window.confirm('Are you sure you want to delete this address?')) return;
+
+ setIsDeleting(true);
+ try {
+ await authAxios.delete(`/account/addresses/${id}/`);
+ setAddresses(addresses.filter(address => address.id !== id));
+ } catch (error) {
+ setError('Failed to delete address');
+ console.error(error);
+ } finally {
+ setIsDeleting(false);
+ }
+ };
+
+ useEffect(() => {
+ fetchAddresses();
+ }, []);
+
+ return (
+
+
Address
+
+
+
+
+
Add new address
+
+
+
+ {error &&
{error}
}
+
+ {addresses.map((address) => (
+
+
+ handleEdit(address.id)}
+ className="p-2 text-blue-600 hover:bg-blue-50 rounded-full"
+ disabled={isDeleting}
+ >
+
+
+ handleDelete(address.id)}
+ className="p-2 text-red-600 hover:bg-red-50 rounded-full"
+ disabled={isDeleting}
+ >
+
+
+
+
+
{address.first_name} {address.last_name}
+ {address.company &&
{address.company}
}
+
+ {address.address}
+ {address.apartment && `, ${address.apartment}`}
+
+
+ {address.city}, {address.country} - {address.zipcode}
+
+
Phone: {address.phone}
+
+ ))}
+
+ );
+};
+
+export default Addresses;
\ No newline at end of file
diff --git a/components/accounts/editProfile.jsx b/components/accounts/editProfile.jsx
new file mode 100644
index 0000000..b16325e
--- /dev/null
+++ b/components/accounts/editProfile.jsx
@@ -0,0 +1,209 @@
+'use client';
+
+import { useState, useEffect } from 'react';
+import { useRouter } from 'next/navigation';
+import authAxios from '@/utils/axios';
+
+const EditProfile = () => {
+ const [profile, setProfile] = useState({
+ email: '',
+ first_name: '',
+ last_name: '',
+ phone: '',
+ accepts_marketing: '',
+ birth_day: '',
+ gender: '',
+ profile_pic: null,
+ });
+
+ const router = useRouter();
+
+ useEffect(() => {
+
+ const fetchProfileData = async () => {
+ const response = await authAxios.get('/account/profile');
+ console.log(response)
+ setProfile(response.data);
+ };
+
+ fetchProfileData();
+ }, []);
+
+ const handleChange = (e) => {
+ const { name, value } = e.target;
+ setProfile((prevProfile) => ({
+ ...prevProfile,
+ [name]: value,
+ }));
+ };
+
+ const handleCheckboxChange = (e) => {
+ setProfile((prevProfile) => ({
+ ...prevProfile,
+ accepts_marketing: e.target.checked ? 'Yes' : 'No',
+ }));
+ };
+
+ const handleSubmit = async (e) => {
+ e.preventDefault();
+ console.log(profile);
+
+
+ const formData = new FormData();
+ formData.append('email', profile.email);
+ formData.append('first_name', profile.first_name);
+ formData.append('last_name', profile.last_name);
+ formData.append('phone', profile.phone);
+ formData.append('accepts_marketing', profile.accepts_marketing);
+ formData.append('birth_day', profile.birth_day);
+ formData.append('gender', profile.gender);
+
+
+ if (profile.profile_pic && profile.profile_pic instanceof File) {
+ console.log('hello')
+ formData.append('profile_pic', profile.profile_pic);
+ }
+ try {
+
+ const response = await authAxios.patch('/account/profile-update/', formData, {
+ headers: {
+ 'Content-Type': 'multipart/form-data',
+ },
+ });
+ console.log(response)
+ if (response.status === 200) {
+
+ router.push('/accounts/profile');
+ } else {
+ alert('Failed to update profile');
+ }
+ } catch (error) {
+ console.error('Error updating profile:', error);
+ alert('An error occurred while updating the profile.');
+ }
+ };
+
+
+ return (
+
+ );
+};
+
+export default EditProfile;
diff --git a/components/blog/BlogHome.jsx b/components/blog/BlogHome.jsx
new file mode 100644
index 0000000..16d0653
--- /dev/null
+++ b/components/blog/BlogHome.jsx
@@ -0,0 +1,184 @@
+"use client";
+import React, { useState } from "react";
+import { Card, CardHeader, CardContent } from "@/components/ui/card";
+import { Button } from "@/components/ui/button";
+import Link from "next/link";
+import Image from "next/image";
+
+const BlogPost = ({ title, author, date, excerpt, imageUrl }) => (
+
+
+
+
+
+
+
+
+
{title}
+
+
+ {author} | {date}
+
+
{excerpt}
+
+
+);
+
+const PopularArticle = ({ title, author, date }) => (
+
+
{title}
+
+ {author} | {date}
+
+
+);
+
+const BlogHome = () => {
+ const [currentPage, setCurrentPage] = useState(1);
+ const postsPerPage = 3;
+
+ const recentBlogPosts = [
+ {
+ title: "Benefits of Wearing Rudraksha Mala",
+ author: "Gupta Rudraksha",
+ date: "29 August, 2024",
+ excerpt:
+ "Rudraksha are sacred beads of great significance in Hinduism and various spiritual practices. The term Rudraksha combines two Sanskrit words: 'Rudra,' another name for Lord Sh...",
+ imageUrl: "/blogs/significance-of-dhanteras.webp",
+ },
+ {
+ title: "Shravan Maas for Spiritual Growth and Divine Connection",
+ author: "Gupta Rudraksha",
+ date: "04 September, 2024",
+ excerpt:
+ "Shrawan Mass, a sacred month in the Hindu calendar, holds deep spiritual significance for millions of devotees. But what exactly is Shravan Maas, and why is it so important? Let...",
+ imageUrl: "/blogs/navaratri-siginificance.webp",
+ },
+ {
+ title: "The Complete Guide to Rudraksha Energization",
+ author: "Gupta Rudraksha",
+ date: "28 August, 2024",
+ excerpt:
+ "For centuries, Rudraksha beads have been valued not only for their aesthetic beauty, but also for their powerful spiritual and healing properties. Whether you're a seasoned prac...",
+ imageUrl: "/blogs/rudraksha-pran-pratishtha-pooja.webp",
+ },
+ {
+ title: "Strengthening Planetary Forces with Rudraksha",
+ author: "Gupta Rudraksha",
+ date: "26 April, 2024",
+ excerpt:
+ "In the vast universe, planets hold immense power over our lives, influencing everything from our moods to our destinies. However, Rudraksha beads, ancient treasures from the ear...",
+ imageUrl: "/api/placeholder/300/200",
+ },
+ ];
+
+ const popularArticles = [
+ {
+ title: "Dhanteras Significance and How Rudraksha Brings Prosperity",
+ author: "Gupta Rudraksha",
+ date: "30 September, 2024",
+ },
+ {
+ title:
+ "Certified Rudraksha: Nepal's 1st ISO 9001:2015 Certified Organization",
+ author: "Gupta Admin",
+ date: "30 September, 2024",
+ },
+ ];
+
+ const indexOfLastPost = currentPage * postsPerPage;
+ const indexOfFirstPost = indexOfLastPost - postsPerPage;
+ const currentPosts = recentBlogPosts.slice(indexOfFirstPost, indexOfLastPost);
+
+ const paginate = (pageNumber) => setCurrentPage(pageNumber);
+
+ return (
+
+
+ Insights from Gupta Rudraksha
+
+
+ Explore our latest articles on the spiritual, cultural, and healing
+ aspects
+
+ {/* top container for one blog card */}
+
+
+
+
+
+
+
+
+
+
+ Dhanteras Significance and How Rudraksha Brings Prosperity and
+ Protection
+
+
+
+ Gupta Rudraksha | 30 September, 2024
+
+
+ Dhanteras, the first day of Diwali festival, marks a unique
+ celebration of wealth and prosperity in Hindu tradition. As the
+ name suggests - 'Dhan' meaning wealth and
+ 'Teras' ref
+
+
+
+
+
Popular Articles
+ {popularArticles.map((article, index) => (
+
+ ))}
+
+
+
+
+
+
Recent Blogs
+ {currentPosts.map((post, index) => (
+
+ ))}
+
+ {[...Array(Math.ceil(recentBlogPosts.length / postsPerPage))].map(
+ (_, index) => (
+ paginate(index + 1)}
+ variant={currentPage === index + 1 ? "default" : "outline"}
+ >
+ {index + 1}
+
+ )
+ )}
+
+
+
+
+
Popular Articles
+ {popularArticles.map((article, index) => (
+
+ ))}
+
+
+
+ );
+};
+
+export default BlogHome;
diff --git a/components/blog/SingleBlog.jsx b/components/blog/SingleBlog.jsx
new file mode 100644
index 0000000..9e81bbb
--- /dev/null
+++ b/components/blog/SingleBlog.jsx
@@ -0,0 +1,47 @@
+"use client";
+import Image from "next/image";
+import React, { useEffect, useState } from "react";
+import "./blog.css";
+
+const SingleBlog = () => {
+ const [blogResData, setResData] = useState(null);
+
+ useEffect(() => {
+ const fetchData = async () => {
+ try {
+ const response = await fetch("/api/blog");
+ const blog = await response.json();
+ setResData(blog.blogdata);
+ } catch (error) {
+ console.error("Error fetching blog data:", error);
+ }
+ };
+ fetchData();
+ }, []);
+
+ return (
+
+ {/* Blog Image */}
+
+
+
+
+ {/* Blog Content */}
+
+ {blogResData ? (
+
+ ) : (
+
Loading blog content...
+ )}
+
+
+ );
+};
+
+export default SingleBlog;
diff --git a/components/blog/blog.css b/components/blog/blog.css
new file mode 100644
index 0000000..7708291
--- /dev/null
+++ b/components/blog/blog.css
@@ -0,0 +1,187 @@
+/* General Blog Styles */
+.blog-content {
+ font-family: 'Arial', sans-serif;
+ color: #333;
+ line-height: 1.7;
+ margin: 20px;
+ margin: 0 auto;
+ padding: 0 20px;
+}
+
+.blog-content h1 {
+ font-size: 2.5em;
+ margin-bottom: 20px;
+ color: #c0392b;
+}
+
+.blog-content h2 {
+ font-size: 2.2em;
+ margin-bottom: 18px;
+ color: #2980b9;
+}
+
+.blog-content h3 {
+ font-size: 1.9em;
+ margin-bottom: 12px;
+ color: #27ae60;
+}
+
+.blog-content p {
+ font-size: 1.2em;
+ margin-bottom: 20px;
+ color: #555;
+}
+
+.blog-content ul {
+ list-style-type: disc;
+ padding-left: 25px;
+ margin-bottom: 20px;
+}
+
+.blog-content li {
+ margin-bottom: 10px;
+ font-size: 1.1em;
+}
+
+/* Section Backgrounds and Styles */
+.intro, .festival, .rudraksha, .recommendations, .rituals, .conclusion {
+ padding: 20px;
+ margin-bottom: 25px;
+ border-left: 6px solid;
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
+}
+
+.intro {
+ background-color: #f9f9f9;
+ border-color: #c0392b;
+}
+
+.festival {
+ background-color: #ecf0f1;
+ border-color: #2980b9;
+}
+
+.rudraksha {
+ background-color: #fdfefe;
+ border-color: #8e44ad;
+}
+
+.recommendations {
+ background-color: #f1c40f;
+ border-color: #e67e22;
+}
+
+.rituals {
+ background-color: #f8f9f9;
+ border-color: #16a085;
+}
+
+.conclusion {
+ background-color: #f0f3f4;
+ border-color: #27ae60;
+}
+
+/* Responsive Styles */
+@media (max-width: 1200px) {
+ .blog-content h1 {
+ font-size: 2.2em;
+ }
+
+ .blog-content h2 {
+ font-size: 2em;
+ }
+
+ .blog-content h3 {
+ font-size: 1.75em;
+ }
+
+ .blog-content p {
+ font-size: 1.15em;
+ }
+
+ .blog-content {
+ padding: 0 15px;
+ }
+
+ .intro, .festival, .rudraksha, .recommendations, .rituals, .conclusion {
+ padding: 18px;
+ }
+}
+
+@media (max-width: 992px) {
+ .blog-content h1 {
+ font-size: 2em;
+ }
+
+ .blog-content h2 {
+ font-size: 1.8em;
+ }
+
+ .blog-content h3 {
+ font-size: 1.6em;
+ }
+
+ .blog-content p {
+ font-size: 1.1em;
+ }
+
+ .blog-content {
+ padding: 0 12px;
+ }
+
+ .intro, .festival, .rudraksha, .recommendations, .rituals, .conclusion {
+ padding: 15px;
+ }
+}
+
+@media (max-width: 768px) {
+ .blog-content h1 {
+ font-size: 1.8em;
+ }
+
+ .blog-content h2 {
+ font-size: 1.6em;
+ }
+
+ .blog-content h3 {
+ font-size: 1.4em;
+ }
+
+ .blog-content p {
+ font-size: 1.05em;
+ }
+
+ .blog-content {
+ padding: 0 10px;
+ }
+
+ .intro, .festival, .rudraksha, .recommendations, .rituals, .conclusion {
+ padding: 12px;
+ }
+}
+
+@media (max-width: 576px) {
+ .blog-content h1 {
+ font-size: 1.6em;
+ }
+
+ .blog-content h2 {
+ font-size: 1.4em;
+ }
+
+ .blog-content h3 {
+ font-size: 1.2em;
+ }
+
+ .blog-content p {
+ font-size: 1em;
+ }
+
+ .blog-content {
+ padding: 0 8px;
+ }
+
+ .intro, .festival, .rudraksha, .recommendations, .rituals, .conclusion {
+ padding: 10px;
+ }
+}
diff --git a/components/buy-rudraksha/BuyRudrakshaOne.jsx b/components/buy-rudraksha/BuyRudrakshaOne.jsx
new file mode 100644
index 0000000..078926c
--- /dev/null
+++ b/components/buy-rudraksha/BuyRudrakshaOne.jsx
@@ -0,0 +1,35 @@
+import Image from "next/image";
+import React from "react";
+
+const BuyRudrakshaOne = () => {
+ return (
+
+
+ {" "}
+
+
+
Rudraksha
+
+ Rudraksha Gupta Rudraksha offers an extensive collection of A+ Grade,
+ high-quality, and X-ray certified Gupta Rudraksha, ranging from 1
+ Mukhi to 26 Mukhi, along with rare beads like Gaurishankar, Ganesha,
+ Garbha Gauri, and Trijuti Rudraksha. Rudraksha has been used as a tool
+ for professional and spiritual transformation since the beginning of
+ the time. Sanatana Dharma regards rudraksha as the most potent and
+ powerful tool to purify one's Karma and attract prosperity. As
+ the world's largest supplier of authentic Gupta Rudraksha, Gupta
+ Rudraksha ensures each bead is certified for authenticity and
+ energized for effectiveness following Vedic guidelines. Discover the
+ power of original Gupta Rudraksha at Gupta Rudraksha.
+
+
+
+ );
+};
+
+export default BuyRudrakshaOne;
diff --git a/components/buy-rudraksha/PopularRudrakshaCombination.jsx b/components/buy-rudraksha/PopularRudrakshaCombination.jsx
new file mode 100644
index 0000000..75359c9
--- /dev/null
+++ b/components/buy-rudraksha/PopularRudrakshaCombination.jsx
@@ -0,0 +1,55 @@
+import Link from "next/link";
+import React from "react";
+
+const PopularRudrakshaCombination = () => {
+ return (
+
+
+ Popular Rudraksha Combination
+
+
+
+
+ Zodiac Combination
+
+
+
+ Explore Combination
+
+
+
+
+
+
Combination by Goals
+ and Aspirations
+
+
+ Explore Combination
+
+
+
+
+
+
Combination for
+ Maha Dasha
+
+
+ Explore Combination
+
+
+
+
+
+
Rudraksha Kavach
+
+
+ Explore Combination
+
+
+
+
+
+ );
+};
+
+export default PopularRudrakshaCombination;
diff --git a/components/buy-rudraksha/ZodiacBasedSign.jsx b/components/buy-rudraksha/ZodiacBasedSign.jsx
new file mode 100644
index 0000000..3d7d3cb
--- /dev/null
+++ b/components/buy-rudraksha/ZodiacBasedSign.jsx
@@ -0,0 +1,77 @@
+import ZodiacBasedSignClient from "./ZodiacBasedSignClient";
+
+const zodiacSigns = [
+ {
+ name: "Aries",
+ rudraksha: { price: 200.0, type: "Medium", mukhi: 13 },
+ gaurishankar: { price: 200.0, type: "Medium", mukhi: 13 },
+ },
+ {
+ name: "Gemini",
+ rudraksha: { price: 65.0, type: "Medium", mukhi: 6 },
+ gaurishankar: { price: 200.0, type: "Collector", mukhi: 13 },
+ },
+ {
+ name: "Leo",
+ rudraksha: { price: 160.0, type: "Medium", mukhi: 12 },
+ gaurishankar: { price: 200.0, type: "Collector", mukhi: 12 },
+ },
+ {
+ name: "Libra",
+ rudraksha: { price: 160.0, type: "Medium", mukhi: 12 },
+ gaurishankar: { price: 400.0, type: "Collector", mukhi: 15 },
+ },
+ {
+ name: "Sagittarius",
+ rudraksha: { price: 65.0, type: "Medium", mukhi: 5 },
+ gaurishankar: { price: 400.0, type: "Collector", mukhi: 14 },
+ },
+ {
+ name: "Taurus",
+ rudraksha: { price: 160.0, type: "Medium", mukhi: 12 },
+ gaurishankar: { price: 400.0, type: "Collector", mukhi: 15 },
+ },
+ {
+ name: "Cancer",
+ rudraksha: { price: 300.0, type: "Medium", mukhi: 2 },
+ gaurishankar: { price: 200.0, type: "Collector", mukhi: 10 },
+ },
+ {
+ name: "Virgo",
+ rudraksha: { price: 55.0, type: "Medium", mukhi: 6 },
+ gaurishankar: { price: 200.0, type: "Collector", mukhi: 13 },
+ },
+ {
+ name: "Scorpio",
+ rudraksha: { price: 200.0, type: "Medium", mukhi: 13 },
+ gaurishankar: { price: 200.0, type: "Collector", mukhi: 13 },
+ },
+ {
+ name: "Capricorn",
+ rudraksha: { price: null, type: "Medium", mukhi: null },
+ gaurishankar: { price: 400.0, type: "Collector", mukhi: 14 },
+ },
+ {
+ name: "Aquarius",
+ rudraksha: { price: null, type: "Medium", mukhi: null },
+ gaurishankar: { price: 400.0, type: "Collector", mukhi: 14 },
+ },
+ {
+ name: "Pisces",
+ rudraksha: { price: 65.0, type: "Medium", mukhi: 5 },
+ gaurishankar: { price: 400.0, type: "Collector", mukhi: 14 },
+ },
+];
+
+const ZodiacBasedSign = () => {
+ return (
+
+
+ Rudraksha Based On Zodiac Signs
+
+
+
+ );
+};
+
+export default ZodiacBasedSign;
diff --git a/components/buy-rudraksha/ZodiacBasedSignClient.jsx b/components/buy-rudraksha/ZodiacBasedSignClient.jsx
new file mode 100644
index 0000000..d3ae5dc
--- /dev/null
+++ b/components/buy-rudraksha/ZodiacBasedSignClient.jsx
@@ -0,0 +1,70 @@
+"use client";
+
+import Link from "next/link";
+import React from "react";
+
+const ZodiacBasedSignClient = ({ zodiacSigns }) => {
+ return (
+
+
+ {zodiacSigns.map((sign) => (
+
+
+
+
+ {sign.name}
+
+
+
+
+
+
+
+
+ ))}
+
+
+ );
+};
+
+const MiniCard = ({ price, type, mukhi, name }) => (
+
+
+ {price !== null ? (
+
+ ${price.toFixed(2)} | {type}
+
+ ) : (
+
+ Price not available | {type}
+
+ )}
+
+
+ {mukhi !== null ? (
+
+ {mukhi} Mukhi {name}
+
+ ) : (
+
+ Mukhi not specified | {name}
+
+ )}
+
+
+);
+
+export default ZodiacBasedSignClient;
diff --git a/components/certification/CertificationBannerOne.jsx b/components/certification/CertificationBannerOne.jsx
new file mode 100644
index 0000000..d8c0895
--- /dev/null
+++ b/components/certification/CertificationBannerOne.jsx
@@ -0,0 +1,9 @@
+import React from "react";
+
+const CertificationBannerOne = () => {
+ return (
+
+ );
+};
+
+export default CertificationBannerOne;
diff --git a/components/certification/CertificationBannerTwo.jsx b/components/certification/CertificationBannerTwo.jsx
new file mode 100644
index 0000000..51f5138
--- /dev/null
+++ b/components/certification/CertificationBannerTwo.jsx
@@ -0,0 +1,68 @@
+'use client'
+import { ChevronRight } from 'lucide-react';
+import React, { useState } from 'react'
+
+const CertificationBannerTwo = () => {
+ const [selectedInfo, setSelectedInfo] = useState(0);
+
+ const infoItems = [
+ {
+ title: "Introduction",
+ description: "Since 1973, Gupta Rudraksha has been committed to maintaining the highest quality standards for all its Rudraksha and Shaligram. To take our commitment to quality assurance even further, we have successfully complied with all the quality standards set forward by the International Organization for Standardization (ISO), and Gupta Rudraksha has been recognized as Nepal's first and only ISO 9001:2015 certified Rudraksha organization."
+ },
+ {
+ title: "100% lifetime Moneyback Authenticity Guarantee",
+ description: "Gupta Rudraksha is dedicated to preserving the sacred and ancient tradition of Rudraksha while making it accessible to seekers worldwide. Our certification process reflects our unwavering commitment to authenticity, quality, and the spiritual well-being of our customers.Choose Rudraksha beads with the Gupta Rudraksha certification, and embark on your spiritual journey with confidence and trust."
+ },
+ {
+ title:"Book Premium Rudraksha Prana Pratistha Pooja",
+ description:"All Our Pooja done based on your Birth Chart and your specific details following Vedic principles. Video Recording of the entire ceremony will be shared with you (Live Pooja is available upon request)."
+ }
+
+ ];
+
+ const handleInfoClick = (index) => {
+ setSelectedInfo(index);
+ };
+ return (
+
+
+ Gupta Rudraksha Information
+
+
+
+ {infoItems.map((item, index) => (
+
handleInfoClick(index)}
+ >
+
+ {selectedInfo === index ? (
+
+ ) : (
+ ""
+ )}
+ {item.title}
+
+
+ ))}
+
+
+ {selectedInfo !== null && (
+
+
+
{infoItems[selectedInfo].title}
+
+ {infoItems[selectedInfo].description}
+
+
+
+ )}
+
+
+
+ )
+}
+
+export default CertificationBannerTwo
diff --git a/components/certification/CertificationGallery.jsx b/components/certification/CertificationGallery.jsx
new file mode 100644
index 0000000..ae5db05
--- /dev/null
+++ b/components/certification/CertificationGallery.jsx
@@ -0,0 +1,81 @@
+"use client";
+import React, { useState } from "react";
+import { X } from "lucide-react";
+import Image from "next/image";
+
+const CertificationGallerySection = () => {
+ const [selectedImage, setSelectedImage] = useState(null);
+
+ const images = [
+ "/certification/gallery10.jpeg",
+ "/certification/gallery5.png",
+ "/certification/gallery12.jpeg",
+ "/certification/gallery11.jpeg",
+ ];
+
+ const handleImageClick = (index) => {
+ setSelectedImage(index);
+ };
+
+ const handleClosePopup = () => {
+ setSelectedImage(null);
+ };
+
+ return (
+
+
+ Chamber of Commerce
+
+
+
+ {images.slice(0, 3).map((src, index) => (
+
+ handleImageClick(index)}
+ />
+
+ ))}
+
+
+
+ handleImageClick(4)}
+ />
+
+
+ {selectedImage !== null && (
+
+ )}
+
+ );
+};
+
+export default CertificationGallerySection;
diff --git a/components/common-components/FaqCard.jsx b/components/common-components/FaqCard.jsx
new file mode 100644
index 0000000..d2e56f4
--- /dev/null
+++ b/components/common-components/FaqCard.jsx
@@ -0,0 +1,96 @@
+"use client";
+import Image from "next/image";
+import React, { useState, useEffect } from "react";
+import {
+ Accordion,
+ AccordionContent,
+ AccordionItem,
+ AccordionTrigger,
+} from "@/components/ui/accordion";
+import Link from "next/link";
+import axios from "axios";
+import { backendUrl } from "@/utils/axios";
+
+const DEFAULT_IMAGE = "/sidhi-mala/Designer_30.png"; // Default image
+
+const FaqCard = ({ params }) => {
+ const [faq, setFaq] = useState([]);
+ const [loading, setLoading] = useState(true);
+ const [error, setError] = useState(null);
+
+ useEffect(() => {
+ const fetchFaq = async () => {
+ try {
+ const response = await axios.get(
+ `${backendUrl}/products/faq/${params.id}/`
+ );
+ setFaq(response.data);
+ } catch (err) {
+ setError("Failed to fetch FAQs. Please try again later.");
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ fetchFaq();
+ }, [params.id]);
+
+ if (loading) {
+ return Loading FAQs...
;
+ }
+
+ if (error) {
+ return {error}
;
+ }
+
+ if (!faq || faq.length === 0) {
+ return No FAQs available.
;
+ }
+
+ const hasImage = faq.some((item) => item.image !== null);
+ const imageToShow = hasImage
+ ? `${backendUrl}${faq.find((item) => item.image !== null).image}`
+ : DEFAULT_IMAGE;
+ return (
+
+
+ Frequently Asked Questions
+
+
+
+
+ {faq.map((item, index) => (
+
+
+
+ {item.question}
+
+
+ {item.answer}
+
+
+
+ ))}
+
+
+
+
+ Quick Answers to Some Frequently Asked Questions.
+
+
+
+ Get Support
+
+
+
+
+ );
+};
+
+export default FaqCard;
diff --git a/components/contact-us/ContactUs.jsx b/components/contact-us/ContactUs.jsx
new file mode 100644
index 0000000..96b9dc6
--- /dev/null
+++ b/components/contact-us/ContactUs.jsx
@@ -0,0 +1,164 @@
+"use client";
+
+import { useState } from "react";
+import { Mail, MapPin, Phone } from "lucide-react";
+
+export default function ContactUs() {
+ const [message, setMessage] = useState({
+ name: "",
+ email: "",
+ phone: "",
+ message: "",
+ });
+
+ const handleChange = (e) => {
+ const { name, value } = e.target;
+ setMessage((prevState) => ({
+ ...prevState,
+ [name]: value,
+ }));
+ };
+
+ const handleSubmit = (e) => {
+ e.preventDefault();
+
+ const whatsappNumber = "9779803287986";
+ const formattedMessage = `Name: ${message.name}%0AEmail: ${message.email}%0APhone: ${message.phone}%0AMessage: ${message.message}`;
+
+ const whatsappURL = `https://api.whatsapp.com/send?phone=${whatsappNumber}&text=${formattedMessage}`;
+
+ window.open(whatsappURL, "_blank");
+
+ setMessage({
+ name: "",
+ email: "",
+ phone: "",
+ message: "",
+ });
+ };
+
+ return (
+
+
+
+
+
+
+
+
+
+
+ Connecting Souls
+
+
+ Reach Out, Let's Share Spiritual Moments
+
+
+
+
+
+
+
+
+ );
+}
+
+function StoreInfo({ title, address, email, phone, note }) {
+ return (
+
+
{title}
+
+
+ {address}
+
+
+
+ Email: {email}
+
+ {phone && (
+
+ )}
+ {note && (
+
+ Note:
+
+ {note}
+
+ )}
+
+ );
+}
diff --git a/components/dynamic-navbar/currencySelect.jsx b/components/dynamic-navbar/currencySelect.jsx
new file mode 100644
index 0000000..4fc975d
--- /dev/null
+++ b/components/dynamic-navbar/currencySelect.jsx
@@ -0,0 +1,51 @@
+import React, { useState } from 'react';
+import { ChevronDown } from 'lucide-react';
+
+const CurrencySelect = ({ selectedCurrency, setSelectedCurrency, SUPPORTED_CURRENCIES }) => {
+ const [isOpen, setIsOpen] = useState(false);
+
+ return (
+
+
setIsOpen(!isOpen)}
+ className="w-full px-4 py-2.5 bg-white border border-gray-200 rounded-lg shadow-sm
+ flex items-center justify-between text-gray-700 text-sm font-medium
+ hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500
+ transition-all duration-200 group"
+ >
+ {SUPPORTED_CURRENCIES[selectedCurrency]?.country}
+
+
+
+ {isOpen && (
+
+
+ {Object.entries(SUPPORTED_CURRENCIES).map(([code, { country }]) => (
+ {
+ setSelectedCurrency(code);
+ setIsOpen(false);
+ }}
+ className={`w-full px-4 py-2.5 text-left text-sm transition-colors duration-150
+ hover:bg-gray-50 focus:outline-none focus:bg-gray-50
+ ${selectedCurrency === code ? 'bg-blue-50 text-blue-600 font-medium' : 'text-gray-700'}
+ ${selectedCurrency === code ? 'hover:bg-blue-50' : 'hover:bg-gray-50'}`}
+ >
+ {country}
+
+ ))}
+
+
+ )}
+
+ );
+};
+
+export default CurrencySelect;
\ No newline at end of file
diff --git a/components/dynamic-navbar/dynamicNavbar.jsx b/components/dynamic-navbar/dynamicNavbar.jsx
new file mode 100644
index 0000000..73fb507
--- /dev/null
+++ b/components/dynamic-navbar/dynamicNavbar.jsx
@@ -0,0 +1,54 @@
+import React, { useContext } from "react";
+import Link from "next/link";
+import {
+ NavigationMenu,
+ NavigationMenuItem,
+ NavigationMenuList,
+ NavigationMenuLink,
+ navigationMenuTriggerStyle,
+} from "@/components/ui/navigation-menu";
+import ProductContext from "@/app/contexts/productContext";
+
+const DynamicNavbar = ({ toggleMenu }) => {
+ const { category } = useContext(ProductContext);
+
+ if (!category) {
+ return null;
+ }
+
+ const categoryItems = category?.map((category) => ({
+ label: category.category_name,
+ url: `/collections/${category.id}`,
+ }));
+
+ const consultation = {
+ label: "Rudraksha consultation",
+ url: "/products/premium-rudraksha-consultation-astrology",
+ };
+
+ const visibleItems = [...categoryItems.slice(0, 4), consultation];
+
+ return (
+
+
+ {visibleItems.map((item) => (
+
+
+
+ {item.label}
+
+
+
+ ))}
+
+
+
+ More
+
+
+
+
+ );
+};
+
+export default DynamicNavbar;
\ No newline at end of file
diff --git a/components/exclusive-rudraksha/ExclusiveRudrakshaBanner.jsx b/components/exclusive-rudraksha/ExclusiveRudrakshaBanner.jsx
new file mode 100644
index 0000000..da0ab66
--- /dev/null
+++ b/components/exclusive-rudraksha/ExclusiveRudrakshaBanner.jsx
@@ -0,0 +1,20 @@
+import Image from 'next/image'
+import React from 'react'
+
+const ExclusiveRudrakshaBanner = () => {
+ return (
+
+
+
+
+
+
Exclusive and Rare Rudraksha Collection at Gupta Rudraksha ®️
+ Discover the exclusive and rare Rudraksha collection only at Gupta Rudraksha. Our lab-certified, high-quality beads channel ancient spiritual energies for peace, prosperity, and personal growth. Each bead is meticulously chosen to ensure authenticity and potency, providing powerful benefits. Experience genuine, transformative spiritual tools to enhance your life's journey with Gupta Rudraksha.
+
+
+
+
+ )
+}
+
+export default ExclusiveRudrakshaBanner
diff --git a/components/exclusive-rudraksha/ListofRudrakshaCard.jsx b/components/exclusive-rudraksha/ListofRudrakshaCard.jsx
new file mode 100644
index 0000000..15e8717
--- /dev/null
+++ b/components/exclusive-rudraksha/ListofRudrakshaCard.jsx
@@ -0,0 +1,13 @@
+import React from "react";
+
+const ListofRudrakshaCard = () => {
+ return (
+
+
+ World's Rare and Premium Collection of Rudraksha
+
+
+ );
+};
+
+export default ListofRudrakshaCard;
diff --git a/components/exclusive-rudraksha/WhyShouldChooseUs.jsx b/components/exclusive-rudraksha/WhyShouldChooseUs.jsx
new file mode 100644
index 0000000..cb9688c
--- /dev/null
+++ b/components/exclusive-rudraksha/WhyShouldChooseUs.jsx
@@ -0,0 +1,41 @@
+import { guranteeData } from "@/utils";
+import Image from "next/image";
+import React from "react";
+
+const WhyShouldChooseUs = () => {
+ return (
+
+
+
+ Why should you choose us?
+
+
+ Witness the ancient craft of harvesting and crafting these sacred
+ beads straight from the trees. Experience the authentic power and
+ beauty of genuine Rudraksha with our exclusive video.`
+
+
+
+ {guranteeData.map((item) => (
+
+
+
+ {item.title}
+
+
+ ))}
+
+
+ );
+};
+
+export default WhyShouldChooseUs;
diff --git a/components/footer/Footer.jsx b/components/footer/Footer.jsx
new file mode 100644
index 0000000..8116873
--- /dev/null
+++ b/components/footer/Footer.jsx
@@ -0,0 +1,107 @@
+import Link from "next/link"
+import { motion } from "framer-motion"
+import { Facebook, Twitter, Instagram, Youtube, PhoneIcon as Whatsapp, ArrowRight } from "lucide-react"
+
+
+const footerLinks = [
+ {
+ title: "Exclusive Services",
+ links: [
+ { name: "Return And Cancellation Policy", href: "/policies/refund-policy" },
+ { name: "Privacy Policy", href: "/policies/privacy-policy" },
+ { name: "Book a Consultation", href: "/products/premium-rudraksha-consultation-astrology" },
+ ],
+ },
+ {
+ title: "May We Help You?",
+ links: [
+ { name: "Help and Contact", href: "/pages/contact-us" },
+ { name: "Track Order", href: "/pages/track-order" },
+ { name: "Shipping Information", href: "/pages/shipping-information" },
+ ],
+ },
+ {
+ title: "Our Brands",
+ links: [
+ // { name: "Why Gupta Rudraksha?", href: "/pages/about-us" },
+ { name: "Certification and Guarantee", href: "/pages/certification-and-guarantee" },
+ { name: "Terms of Service", href: "/policies/terms-of-services" },
+ ],
+ },
+]
+
+const socialLinks = [
+ { name: "Facebook", icon: Facebook, href: "https://www.facebook.com/share/15qi5L1EsK/" },
+ { name: "Instagram", icon: Instagram, href: "https://www.instagram.com/grb.religiongoods?igsh=ejNqZXZmMTVudzk=" },
+ { name: "YouTube", icon: Youtube, href: "https://youtube.com/@guptarudrakshabeads?si=bCVPn8GsneXcFv0s" },
+ {
+ name: "WhatsApp",
+ icon: Whatsapp,
+ href: "https://api.whatsapp.com/send/?phone=9779803287986&text&type=phone_number&app_absent=0",
+ },
+]
+
+
+
+const Footer = () => {
+ return (
+
+
+
+ {footerLinks.map((column, index) => (
+
+ {column.title}
+
+ {column.links.map((link, linkIndex) => (
+
+
+ {link.name}
+
+
+ ))}
+
+
+ ))}
+
+
+ Stay Connected
+
+ {socialLinks.map((social, index) => (
+
+
+
+ ))}
+
+
+
+
+
+
+
+
+
+ © {new Date().getFullYear()} Gupta Rudraksha. All rights reserved.
+
+
+
+
+ )
+}
+
+export default Footer
+
diff --git a/components/header/FullWidthMenu.jsx b/components/header/FullWidthMenu.jsx
new file mode 100644
index 0000000..aa0dc30
--- /dev/null
+++ b/components/header/FullWidthMenu.jsx
@@ -0,0 +1,79 @@
+'use client'
+import React, { useContext, useEffect, useState } from "react";
+import Link from "next/link";
+import { menuItems } from "@/utils";
+import ProductContext from "@/app/contexts/productContext";
+
+const FullWidthMenu = ({ isOpen, onClose, isScrolled }) => {
+ const [isRendered, setIsRendered] = useState(false);
+ const { category } = useContext(ProductContext);
+
+
+
+ const categoryItems = category?.map((category) => ({
+ label: category.category_name,
+ url: `/collections/${category.id}`,
+ })) || []
+
+ useEffect(() => {
+ if (isOpen) {
+ setIsRendered(true);
+ } else {
+ const timer = setTimeout(() => setIsRendered(false), 300); // Match this with the transition duration
+ return () => clearTimeout(timer);
+ }
+ }, [isOpen]);
+
+ if (!isRendered && !isOpen) {
+ return null;
+ }
+
+ return (
+
+ {/* hidden items only show on mobile devices */}
+
+ {categoryItems.map((item) => (
+
+ {item.label}
+
+ ))}
+
+
+ {/* left section */}
+
+ {menuItems.map((menuItem, index) => (
+
+
+ {menuItem.name}
+
+
+ ))}
+
+
+ {/* right section */}
+
+ {categoryItems?.map((item) => (
+
+
+ {item.label}
+
+
+ ))}
+
+
+
+ );
+};
+
+export default FullWidthMenu;
diff --git a/components/header/Header.jsx b/components/header/Header.jsx
new file mode 100644
index 0000000..ed3f33d
--- /dev/null
+++ b/components/header/Header.jsx
@@ -0,0 +1,261 @@
+"use client";
+
+import React from "react";
+import "./Header.css"; // Include your styles
+
+import HeaderTwo from "./HeaderTwo";
+
+const Header = () => {
+ return (
+ <>
+
+
+ >
+ );
+};
+
+export default Header;
diff --git a/components/header/HeaderTwo.jsx b/components/header/HeaderTwo.jsx
new file mode 100644
index 0000000..7e89c0c
--- /dev/null
+++ b/components/header/HeaderTwo.jsx
@@ -0,0 +1,105 @@
+import React from "react";
+import "./HeaderTwo.css";
+import Image from "next/image";
+const HeaderTwo = () => {
+ return (
+
+
+
+
+
+
+ {/* search */}
+
+ {/* tt-search */}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ What are you Looking for?
+
+
+
+
+
+ {/* /tt-search */}
+
+ {/* /search */}
+ {/* cart */}
+
+ {/* /cart */}
+
+
+
+
+ );
+};
+
+export default HeaderTwo;
diff --git a/components/header/Navbar.jsx b/components/header/Navbar.jsx
new file mode 100644
index 0000000..143b031
--- /dev/null
+++ b/components/header/Navbar.jsx
@@ -0,0 +1,114 @@
+"use client"
+
+import React, { useContext, useEffect, useState } from "react"
+import { Menu, ShoppingBag, UserRound } from "lucide-react"
+import { IoMdClose } from "react-icons/io"
+import Link from "next/link"
+import { NavigationMenu, NavigationMenuList } from "@/components/ui/navigation-menu"
+import FullWidthMenu from "./FullWidthMenu"
+import MainContext from "@/app/contexts/mainContext"
+import DynamicNavbar from "../dynamic-navbar/dynamicNavbar"
+import SearchComponent from "../search/searchComponent"
+import { useCurrency } from "@/app/contexts/currencyContext"
+import CurrencySelect from "../dynamic-navbar/currencySelect"
+import Image from "next/image"
+
+const Navbar = () => {
+ const [isOpen, setIsOpen] = useState(false)
+ const [isScrolled, setIsScrolled] = useState(false)
+ const [isMounted, setIsMounted] = useState(false)
+ const { token } = useContext(MainContext)
+ const toggleMenu = () => setIsOpen(!isOpen)
+ const { selectedCurrency, setSelectedCurrency, SUPPORTED_CURRENCIES } = useCurrency()
+
+ useEffect(() => {
+ setIsMounted(true)
+ const handleScroll = () => {
+ setIsScrolled(window.scrollY > 60)
+ }
+
+ window.addEventListener("scroll", handleScroll)
+ return () => window.removeEventListener("scroll", handleScroll)
+ }, [])
+
+ if (!isMounted) {
+ return null // or a loading placeholder
+ }
+
+ return (
+ <>
+
+
+
+
+
+ {isOpen ? : }
+
+
+
+
+
+
+ {!isOpen && (
+
+
+
+
+
+
+
+ )}
+
+
+
+
+
+
+
+ {token ? (
+
+
+
+ ) : (
+
+
+ Login
+
+
+ )}
+
+
+
+
+
+
+ {!isOpen && (
+
+ )}
+
+
+
+
+
+ >
+ )
+}
+
+export default Navbar
+
diff --git a/components/header/TopBanner.jsx b/components/header/TopBanner.jsx
new file mode 100644
index 0000000..c4ec012
--- /dev/null
+++ b/components/header/TopBanner.jsx
@@ -0,0 +1,31 @@
+import React from "react";
+
+const TopBanner = () => {
+ return (
+
+
+
+
+
+
+
Place your order by September 26th to receive your items in Navaratri
+
+
+
+ );
+};
+
+export default TopBanner;
diff --git a/components/header/hover-content/HoverRudrakshaContent.jsx b/components/header/hover-content/HoverRudrakshaContent.jsx
new file mode 100644
index 0000000..b82a685
--- /dev/null
+++ b/components/header/hover-content/HoverRudrakshaContent.jsx
@@ -0,0 +1,98 @@
+import React, { useState } from 'react';
+import { ChevronRight } from 'lucide-react';
+
+const rudrakshaData = {
+ title: "Rudraksha",
+ subtitle: "Explore the World's largest collection of Authentic A+ Grade Gupta Rudraksha.",
+ buttonText: "View All Collection",
+ columns: [
+ [
+ { name: "Nirakar (0) Mukhi" },
+ { name: "1 Mukhi" },
+ { name: "2 Mukhi" },
+ { name: "3 Mukhi" },
+ { name: "4 Mukhi" },
+ { name: "5 Mukhi" },
+ { name: "6 Mukhi" }
+ ],
+ [
+ { name: "7 Mukhi" },
+ { name: "8 Mukhi" },
+ { name: "9 Mukhi" },
+ { name: "10 Mukhi" },
+ { name: "11 Mukhi" },
+ { name: "12 Mukhi" },
+ { name: "13 Mukhi" }
+ ],
+ [
+ { name: "14 Mukhi" },
+ { name: "15 Mukhi" },
+ { name: "16 Mukhi" },
+ { name: "17 Mukhi" },
+ { name: "18 Mukhi" },
+ { name: "19 Mukhi" },
+ { name: "20 Mukhi" }
+ ],
+ [
+ { name: "21 Mukhi" },
+ { name: "22 Mukhi" },
+ { name: "23 Mukhi" },
+ { name: "24 Mukhi" },
+ { name: "25 Mukhi" },
+ { name: "26 Mukhi" }
+ ],
+ [
+ { name: "Trijuti Rudraksha" },
+ { name: "Gauri Shankar Rudraksha" },
+ { name: "Ganesh Rudraksha" },
+ { name: "Garbha Gauri Rurdaksha" }
+ ]
+ ]
+};
+
+const HoverRudrakshaContent = () => {
+ const [selectedMukhi, setSelectedMukhi] = useState(null);
+
+ return (
+
+
+
+
+
{rudrakshaData.title}
+
{rudrakshaData.subtitle}
+
+ {rudrakshaData.buttonText}
+
+
+
+
+ {rudrakshaData.columns.map((column, columnIndex) => (
+
+ {column.map((item, itemIndex) => (
+
setSelectedMukhi(item.name)}
+ >
+
+
+ {item.name}
+
+
+ ))}
+
+ ))}
+
+
+
+ {selectedMukhi && (
+
+
Selected: {selectedMukhi}
+
+ )}
+
+
+ );
+};
+
+export default HoverRudrakshaContent;
\ No newline at end of file
diff --git a/components/header/hover-content/HoverShaligram.jsx b/components/header/hover-content/HoverShaligram.jsx
new file mode 100644
index 0000000..5f52887
--- /dev/null
+++ b/components/header/hover-content/HoverShaligram.jsx
@@ -0,0 +1,37 @@
+import React from 'react';
+import Link from 'next/link';
+
+const HoverShaligram = () => {
+ return (
+
+
+
Shaligram Types
+
+ Vishnu Shaligram
+ Lakshmi Shaligram
+ Narayan Shaligram
+ {/* Add more Shaligram types as needed */}
+
+
+
+
Benefits
+
+ Spiritual Growth
+ Protection
+ Prosperity
+ {/* Add more benefits as needed */}
+
+
+
+
Resources
+
+ Care Instructions
+ History of Shaligram
+ FAQ
+
+
+
+ );
+};
+
+export default HoverShaligram;
\ No newline at end of file
diff --git a/components/hero-page/Hero.jsx b/components/hero-page/Hero.jsx
new file mode 100644
index 0000000..d0fd4c3
--- /dev/null
+++ b/components/hero-page/Hero.jsx
@@ -0,0 +1,99 @@
+"use client";
+
+import Image from "next/image";
+import React, { useState, useEffect } from "react";
+import {
+ Carousel,
+ CarouselContent,
+ CarouselItem,
+ CarouselNext,
+ CarouselPrevious,
+} from "@/components/ui/carousel";
+import { Card, CardContent } from "@/components/ui/card";
+import Autoplay from "embla-carousel-autoplay";
+import Link from "next/link";
+import { ArrowRight } from "lucide-react";
+
+const Hero = () => {
+ const plugin = React.useRef(
+ Autoplay({ delay: 4000, stopOnInteraction: true })
+ );
+
+ const [isMobile, setIsMobile] = useState(false);
+
+ useEffect(() => {
+ const checkMobile = () => {
+ setIsMobile(window.innerWidth < 768);
+ };
+
+ checkMobile();
+ window.addEventListener("resize", checkMobile);
+
+ return () => window.removeEventListener("resize", checkMobile);
+ }, []);
+
+ const heroData = [
+ {
+ type: "image",
+ src: "/rudraksh banner image 2.avif",
+ overlay: {
+ title: "Sacred Collection",
+ subtitle: "Discover Authentic Rudraksha",
+ description: "Explore our curated selection of premium spiritual items",
+ link: "/collection",
+ },
+ },
+ {
+ type: "image",
+ src: "/rudraksha banner 1.png",
+ overlay: {
+ title: "Quality Assured",
+ subtitle: "Lifetime Authenticity Guarantee",
+ description: "Every piece comes with our exclusive certification",
+ link: "/products/premium-rudraksha-consultation-astrology",
+ },
+ },
+ {
+ type: "image",
+ src: "/rudraksha banner 2.png",
+ overlay: {
+ title: "Sacred Ceremonies",
+ subtitle: "Traditional Prana Pratistha",
+ description: "Blessed at the ancient Pashupatinath temple",
+ link: "/collection/online-pooja",
+ },
+ },
+ ];
+
+ return (
+
+
+
+ {heroData.map((item, index) => (
+
+
+
+
+
+
+ ))}
+
+
+
+
+
+ );
+};
+
+export default Hero;
diff --git a/components/hero-page/HeroFive.jsx b/components/hero-page/HeroFive.jsx
new file mode 100644
index 0000000..adf616b
--- /dev/null
+++ b/components/hero-page/HeroFive.jsx
@@ -0,0 +1,55 @@
+import React from "react";
+import Image from "next/image";
+import Link from "next/link";
+import { productsCards } from "@/utils";
+
+const ExclusiveProductCards = () => {
+
+
+ return (
+
+
+
+ Only at Gupta Rudraksha™
+
+
+ Explore divinity with Gupta Rudraksha's rare and authentic collection.
+ Step into a world of spiritual bliss.
+
+
+
+ {productsCards.map((product) => (
+
+
+
+ Exclusive
+
+
+
+
+
+
+ {product.title}
+
+
+
+
+ ))}
+
+
+
Shop Exclusive Products
+
+
+ );
+};
+
+export default ExclusiveProductCards;
diff --git a/components/hero-page/HeroFour.jsx b/components/hero-page/HeroFour.jsx
new file mode 100644
index 0000000..4222dc8
--- /dev/null
+++ b/components/hero-page/HeroFour.jsx
@@ -0,0 +1,30 @@
+import React from "react";
+
+const HeroFour = () => {
+ return (
+
+
+
+
+ Explore Gupta Rudraksha
+
+
+ Dive deep with us in our Gupta Rudraksha Journey and our get to know
+ us even more better.
+
+
+
VIDEO
+
+
+ );
+};
+
+export default HeroFour;
diff --git a/components/hero-page/HeroSeven.jsx b/components/hero-page/HeroSeven.jsx
new file mode 100644
index 0000000..7bbd767
--- /dev/null
+++ b/components/hero-page/HeroSeven.jsx
@@ -0,0 +1,30 @@
+import Link from "next/link";
+import React from "react";
+
+const HeroSeven = () => {
+ return (
+
+
+
+ Our Collections
+
+
+ Explore divinity with Gupta Rudraksha's rare and authentic collection. Step into a world of spiritual bliss.
+
+
+
+
+
+
Experience Divine Blessings
+
Anytime, Anywhere
+
+ Online Pooja Services by Certified Brahmans, Using Premium Materials, with 100% Satisfaction Guaranteed.
+
+
explore pooja services
+
+
+
+ );
+};
+
+export default HeroSeven;
\ No newline at end of file
diff --git a/components/hero-page/HeroSix.jsx b/components/hero-page/HeroSix.jsx
new file mode 100644
index 0000000..99baf08
--- /dev/null
+++ b/components/hero-page/HeroSix.jsx
@@ -0,0 +1,54 @@
+'use client'
+import { guranteeData } from "@/utils";
+import Image from "next/image";
+import React from "react";
+import { motion } from "framer-motion";
+
+const HeroSix = () => {
+ return (
+
+
+
+
+ Our Sacred Commitment
+
+
+ Certified Excellence in Rudraksha - Nepal's Premier ISO 9001:2015
+ Accredited Organization
+
+
+
+ {guranteeData.map((item, index) => (
+
+
+
+
+
+ {item.title}
+
+
+ ))}
+
+
+
+ );
+};
+
+export default HeroSix;
diff --git a/components/hero-page/HeroTwo.jsx b/components/hero-page/HeroTwo.jsx
new file mode 100644
index 0000000..e2bf617
--- /dev/null
+++ b/components/hero-page/HeroTwo.jsx
@@ -0,0 +1,100 @@
+"use client";
+import React, { useState, useEffect } from "react";
+
+const CountdownUnit = ({ value, label }) => (
+
+
+ {value !== undefined ? value : "0"}{" "}
+ {/* Display '0' if value is undefined */}
+
+
{label}
+
+);
+
+const Countdown = ({ targetDate }) => {
+ const [timeLeft, setTimeLeft] = useState(null); // Start with null
+
+ useEffect(() => {
+ const calculateTimeLeft = () => {
+ const difference = +new Date(targetDate) - +new Date();
+ let timeLeft = {};
+
+ if (difference > 0) {
+ timeLeft = {
+ days: Math.floor(difference / (1000 * 60 * 60 * 24)),
+ hours: Math.floor((difference / (1000 * 60 * 60)) % 24),
+ minutes: Math.floor((difference / 1000 / 60) % 60),
+ seconds: Math.floor((difference / 1000) % 60),
+ };
+ }
+
+ return timeLeft;
+ };
+
+ const timer = setInterval(() => {
+ setTimeLeft(calculateTimeLeft());
+ }, 1000);
+
+ // Initial calculation
+ setTimeLeft(calculateTimeLeft());
+
+ return () => clearInterval(timer);
+ }, [targetDate]);
+
+ const timeUnits = [
+ { key: "days", label: "Days" },
+ { key: "hours", label: "Hours" },
+ { key: "minutes", label: "Min" },
+ { key: "seconds", label: "Sec" },
+ ];
+
+ return (
+
+ {timeLeft &&
+ timeUnits.map(({ key, label }) => (
+
+ ))}
+
+ );
+};
+
+const HeroTwo = () => {
+ return (
+
+
+
+
+ {/* left count down */}
+
+
+ SHOP BEFORE
+
+
+
+ {/* right banner text content */}
+
+
+ Celebrate Diwali with Early Access
+
+
+ Place your orders by September 26th to receive your items in time
+ for Navaratri. Dive into the festive season with our exclusive
+ products!
+
+
+ GUARANTEED DELIVERY BEFORE NAVARATRI
+
+
+ Shop Now
+
+
+
+
+
+ );
+};
+
+export default HeroTwo;
diff --git a/components/instagram-section/Instasection.jsx b/components/instagram-section/Instasection.jsx
new file mode 100644
index 0000000..fb14843
--- /dev/null
+++ b/components/instagram-section/Instasection.jsx
@@ -0,0 +1,11 @@
+import React from 'react'
+
+const Instasection = () => {
+ return (
+
+
+
+ )
+}
+
+export default Instasection
diff --git a/components/maps/Maps.jsx b/components/maps/Maps.jsx
new file mode 100644
index 0000000..6a67482
--- /dev/null
+++ b/components/maps/Maps.jsx
@@ -0,0 +1,19 @@
+import React from "react";
+
+function EmbeddedMap() {
+ return (
+
+
+
+ );
+}
+
+export default EmbeddedMap;
diff --git a/components/online-pooja/ExplorePooja.jsx b/components/online-pooja/ExplorePooja.jsx
new file mode 100644
index 0000000..437e243
--- /dev/null
+++ b/components/online-pooja/ExplorePooja.jsx
@@ -0,0 +1,75 @@
+import Image from "next/image";
+import Link from "next/link";
+import React from "react";
+
+const ExplorePooja = () => {
+ const poojaServices = [
+ {
+ imgUrl: "/online-pooja/rudraksha-prana-pratishtha-pooja-246.webp",
+ title: "Rudraksha Prana Pratishtha Pooja",
+ price: "Rs. 25,500.00",
+ },
+ {
+ imgUrl: "/online-pooja/maha-mrityunjaya-pooja-397.webp",
+ title: "Maha Mrityunjaya Pooja",
+ price: "Rs. 17,000.00",
+ },
+ {
+ imgUrl: "/online-pooja/maha-shivaratri-pooja-at-pashupatinath-437.webp",
+ title: "Maha Shivaratri Pooja at Pashupatinath",
+ price: "Rs. 25,700.00",
+ },
+ {
+ imgUrl: "/online-pooja/karya-siddhi-ganesh-pooja-672.webp",
+ title: "Karya Siddhi Ganesh Pooja",
+ price: "Rs. 59,700.00",
+ },
+ {
+ imgUrl: "/online-pooja/lagu-rudri-path-12-brahmin-273.webp",
+ title: "Lagu Rudri Path (12 Brahmin)",
+ price: "Rs. 102,200.00",
+ },
+ {
+ imgUrl: "/online-pooja/navagraha-shanti-pooja-817.webp",
+ title: "Navagraha Shanti Pooja",
+ price: "Rs. 17,000.00",
+ },
+ {
+ imgUrl: "/online-pooja/rudra-abishek-pooja-778.webp",
+ title: "Rudra Abishek Pooja",
+ price: "Rs. 68,100.00",
+ },
+ {
+ imgUrl: "/online-pooja/laxmi-narayan-pooja-222.webp",
+ title: "Laxmi Narayan Pooja",
+ price: "Rs. 42,600.00",
+ },
+ {
+ imgUrl: "/online-pooja/lagu-rudri-path-12-brahmin-273.webp",
+ title: "Pooja Subscription",
+ price:
+ "Rs. 42,600.00",
+ },
+ ];
+
+ return (
+
+
Explore Pooja
+
+ {poojaServices.map((item,i) => {
+ return (
+
+
+
+
+
{item.title}
+
{item.price}
+
+ );
+ })}
+
+
+ );
+};
+
+export default ExplorePooja;
diff --git a/components/online-pooja/PoojaSubscription.jsx b/components/online-pooja/PoojaSubscription.jsx
new file mode 100644
index 0000000..0695b46
--- /dev/null
+++ b/components/online-pooja/PoojaSubscription.jsx
@@ -0,0 +1,85 @@
+import React from "react";
+import {
+ Card,
+ CardHeader,
+ CardContent,
+ CardFooter,
+} from "@/components/ui/card";
+
+const SubscriptionCard = ({ title, price, description, features, isDaily }) => (
+
+
+ {title}
+ {price}
+
+
+ {description}
+
+ {features.map((feature, index) => (
+
+ {feature}
+
+ ))}
+
+
+
+
+ Subscribe
+
+
+
+);
+
+const PoojaSubscription = () => (
+ <>
+
+ Pooja Subscription
+
+
+ Experience divine blessings at your doorstep. Subscribe to our Pooja
+ services for spiritual harmony.
+
+
+
+
+
+
+ >
+);
+
+export default PoojaSubscription;
diff --git a/components/payment/paymentComponent.jsx b/components/payment/paymentComponent.jsx
new file mode 100644
index 0000000..f3937e9
--- /dev/null
+++ b/components/payment/paymentComponent.jsx
@@ -0,0 +1,138 @@
+import React, { useState, useEffect } from "react";
+import { PayPalButtons, PayPalScriptProvider } from "@paypal/react-paypal-js";
+import axios from "axios";
+import authAxios from "@/utils/axios";
+
+const CACHE_DURATION = 24 * 60 * 60 * 1000; // 24 hours in milliseconds
+const EXCHANGE_RATE_KEY = "exchange_rate_cache";
+
+const PaymentComponent = ({ amount, onSuccess }) => {
+ const [error, setError] = useState(null);
+ const [isProcessing, setIsProcessing] = useState(false);
+ const [usdAmount, setUsdAmount] = useState(null);
+
+ useEffect(() => {
+ const fetchExchangeRate = async () => {
+ try {
+ const cachedData = localStorage.getItem(EXCHANGE_RATE_KEY);
+ if (cachedData) {
+ const { rate, timestamp } = JSON.parse(cachedData);
+ if (Date.now() - timestamp < CACHE_DURATION) {
+ setUsdAmount((amount * rate).toFixed(2));
+ return;
+ }
+ }
+
+ const response = await axios.get("https://apilayer.net/api/live", {
+ params: {
+ access_key: "9bcb30907dee1cda9866f7b49f0f8def",
+ currencies: "USD",
+ source: "INR",
+ format: 1,
+ },
+ });
+
+ if (response.data.success) {
+ const rate = response.data.quotes.INRUSD;
+ localStorage.setItem(
+ EXCHANGE_RATE_KEY,
+ JSON.stringify({
+ rate,
+ timestamp: Date.now(),
+ })
+ );
+ setUsdAmount((amount * rate).toFixed(2));
+ } else {
+ throw new Error("Failed to fetch exchange rate");
+ }
+ } catch (err) {
+ setError("Currency conversion failed. Please try again later.");
+ console.error("Exchange rate error:", err);
+ }
+ };
+
+ fetchExchangeRate();
+ }, [amount]);
+
+ const handleApprove = async (data, actions) => {
+ try {
+ setIsProcessing(true);
+ const order = await actions.order.capture();
+ onSuccess?.(order);
+ } catch (err) {
+ setError("Payment failed. Please try again.");
+ console.error("Payment error:", err);
+ } finally {
+ setIsProcessing(false);
+ }
+ };
+
+ if (!usdAmount) {
+ return Loading exchange rates...
;
+ }
+
+ return (
+
+ {error && (
+
+ {error}
+
+ )}
+
+ {
+ return actions.order.create({
+ purchase_units: [
+ {
+ amount: {
+ value: usdAmount,
+ currency_code: "USD",
+ },
+ },
+ ],
+ application_context: {
+ shipping_preference: "GET_FROM_FILE",
+ },
+ });
+ }}
+ onShippingChange={(data, actions) => {
+ const allowedCountries = ["IN", "MY", "NP"];
+ const shippingCountry = data.shipping_address.country_code;
+
+ if (!allowedCountries.includes(shippingCountry)) {
+ return actions.reject().then(() => {
+ setError(
+ "Shipping is only available for India, Malaysia, and Nepal. Please update your address."
+ );
+ });
+ }
+ return actions.resolve();
+ }}
+ onApprove={handleApprove}
+ onError={(err) => {
+ setError("Payment failed. Please try again.");
+ }}
+ />
+
+
+ Note: We only ship to addresses in India, Malaysia, and Nepal.
+
+
+
+ );
+};
+
+export default PaymentComponent;
diff --git a/components/premium-rudraksha/PremiumBanner.jsx b/components/premium-rudraksha/PremiumBanner.jsx
new file mode 100644
index 0000000..2bc29ad
--- /dev/null
+++ b/components/premium-rudraksha/PremiumBanner.jsx
@@ -0,0 +1,152 @@
+"use client";
+import React, { useState } from "react";
+import { ChevronRight, Gem } from "lucide-react";
+import authAxios from "@/utils/axios";
+import Image from "next/image";
+
+const PremiumBanner = () => {
+ const [formData, setFormData] = useState({
+ first_name: "",
+ last_name: "",
+ email: "",
+ phone_number: "",
+ });
+
+ const [message, setMessage] = useState("");
+
+ const handleInputChange = (e) => {
+ const { name, value } = e.target;
+ setFormData((prevState) => ({
+ ...prevState,
+ [name]: value,
+ }));
+ };
+
+ const handleSubmit = async (e) => {
+ e.preventDefault();
+ try {
+ const response = await authAxios.post(
+ "/consultation/booking/create/",
+ formData
+ );
+ if (response.status === 201) {
+ setFormData({
+ first_name: "",
+ last_name: "",
+ email: "",
+ phone_number: "",
+ });
+ setMessage("Consultation experts will contact you shortly.");
+ setTimeout(() => {
+ setMessage("");
+ }, 5000);
+ } else {
+ setMessage("An error occurred. Please try again.");
+ }
+ } catch (error) {
+ console.error("Error submitting form:", error);
+ setMessage("An error occurred. Please try again.");
+ }
+ };
+
+ return (
+
+
+
+ {/* Left: Form Section */}
+
+
+ {/* Right: Benefits & App Download */}
+
+
+ Why Choose Our Consultation?
+
+
+ Gain expert insights and personalized guidance.
+
+
+
+
+
+ Expert guidance from experienced professionals
+
+
+
+ Tailored advice for your specific needs
+
+
+
+ Unlock clarity and direction in life
+
+
+
+ Free initial text-based consultation
+
+
+
+
+
+
+ );
+};
+
+export default PremiumBanner;
diff --git a/components/premium-rudraksha/PremiumBannerLast.jsx b/components/premium-rudraksha/PremiumBannerLast.jsx
new file mode 100644
index 0000000..34b3b52
--- /dev/null
+++ b/components/premium-rudraksha/PremiumBannerLast.jsx
@@ -0,0 +1,115 @@
+"use client";
+import React, { useState } from "react";
+import { ChevronRight } from "lucide-react";
+import Image from "next/image";
+
+const PremiumBannerLast = () => {
+ const [selectedService, setSelectedService] = useState(0);
+
+ const services = [
+ {
+ title: "Expert Guidance",
+ description:
+ "Consultation provides access to expert advice and guidance from professionals who have in-depth knowledge and experience in their respective fields. We can offer valuable insights, strategies, and solutions tailored to your specific needs.",
+ imageUrl: ["/expert_guidance_1.jpg", "/expert_guidance_2.jpg"],
+ },
+ {
+ title: "Mantras For You",
+ description:
+ "Rudraksha experts can recommend specific mantras that align with your spiritual goals and intentions. Mantras are considered powerful tools for spiritual growth, and the right mantra can enhance the effectiveness of your Rudraksha.",
+ imageUrl: ["/mantra_1.jpg", "/mantra_2.jpg"],
+ },
+ {
+ title: "Your Birth Chart",
+ description:
+ "Rudraksha experts may also have knowledge of Vedic astrology. By analyzing your birth chart, they can provide insights into the planetary influences on your life and suggest Rudraksha combinations that may help balance and harmonize these influences.",
+ imageUrl: ["/birth_chart_1.jpg", "/birth_chart2.jpg"],
+ },
+ {
+ title: "Your Family Birth Chart",
+ description:
+ "Understanding the birth charts of family members can offer a holistic view of the energy dynamics within the family. Rudraksha experts can provide guidance on selecting Rudraksha beads that complement the energy of the entire family, fostering a harmonious environment.",
+ imageUrl: ["/family_chart1.jpg", "/family_chart_2.jpg"],
+ },
+ {
+ title: "Pooja Service Recommendation",
+ description:
+ "Rudraksha experts may recommend specific pooja services or rituals based on your spiritual needs and challenges. These rituals can be tailored to address specific concerns and promote positive energy flow in your life.",
+ imageUrl: ["/pooja_1.jpg", "/pooja_2.jpg"],
+ },
+ {
+ title: "Client Confidentiality",
+ description:
+ "Rudraksha experts, like other spiritual and holistic practitioners, typically uphold a strong code of client confidentiality. This ensures that personal and sensitive information shared during consultations is kept private and secure.",
+ imageUrl: ["/confidentiality_1.jpg", "/client_confidentiality_2.jpg"],
+ },
+ ];
+
+ const handleServiceClick = (index) => {
+ setSelectedService(index);
+ };
+
+ return (
+
+
+ Perks of Consulting an Expert
+
+
+
+ {services.map((service, index) => (
+
handleServiceClick(index)}
+ >
+
+ {selectedService === index ? (
+
+ ) : (
+ ""
+ )}
+ {service.title}
+
+
+ ))}
+
+
+ {selectedService !== null && (
+
+
+
+
+ {services[selectedService].imageUrl.map((url, index) => (
+
+ ))}
+
+
+
+ )}
+
+
+
+ );
+};
+
+export default PremiumBannerLast;
diff --git a/components/premium-rudraksha/PremiumBannerOne.jsx b/components/premium-rudraksha/PremiumBannerOne.jsx
new file mode 100644
index 0000000..1d253fc
--- /dev/null
+++ b/components/premium-rudraksha/PremiumBannerOne.jsx
@@ -0,0 +1,21 @@
+'use client'
+import { FaArrowRightLong } from "react-icons/fa6";
+import { FaWhatsapp } from "react-icons/fa";
+import { useRouter } from "next/navigation";
+
+const PremiumBannerOne = () => {
+ const router = useRouter()
+ return (
+
+
+
Personalized Rudraksha Consultation for Your Sacred Journey
+
Whether you seek clarity on selecting the right Rudraksha for your spiritual goals or a deeper understanding of the sacred beads, our consultations are crafted to provide you with the wisdom and direction you seek .
+
+ router.push('/products/premium-rudraksha-consultation-astrology')} className="bg-[#b68d40] sm:py-2 p-2 sm:px-5 font-bold text-white sm:text-xl justify-center sm:whitespace-nowrap flex items-center sm:gap-3">Book a consultation
+
+
+
+ )
+}
+
+export default PremiumBannerOne;
diff --git a/components/premium-rudraksha/PremiumBannerTwo.jsx b/components/premium-rudraksha/PremiumBannerTwo.jsx
new file mode 100644
index 0000000..5a907e3
--- /dev/null
+++ b/components/premium-rudraksha/PremiumBannerTwo.jsx
@@ -0,0 +1,24 @@
+import React from "react";
+
+const PremiumBannerTwo = () => {
+ return (
+
+
+ Three Generations of Expertise
+
+ VIDEO
+
+ );
+};
+
+export default PremiumBannerTwo;
diff --git a/components/premium-rudraksha/PremuimBannerThree.jsx b/components/premium-rudraksha/PremuimBannerThree.jsx
new file mode 100644
index 0000000..94e984c
--- /dev/null
+++ b/components/premium-rudraksha/PremuimBannerThree.jsx
@@ -0,0 +1,26 @@
+import { categoriesForPremiumThree } from '@/utils'
+import React from 'react'
+
+const PremuimBannerThree = () => {
+
+ return (
+
+
+ Who Should Book A Consultation?
+
+
+
+ {categoriesForPremiumThree.map((category, index) => (
+
+
{category.logo}
+
{category.title}
+
{category.description}
+
+ ))}
+
+
+
+ )
+}
+
+export default PremuimBannerThree
diff --git a/components/privacy-policy/PrivacyPolicy.jsx b/components/privacy-policy/PrivacyPolicy.jsx
new file mode 100644
index 0000000..300c0e9
--- /dev/null
+++ b/components/privacy-policy/PrivacyPolicy.jsx
@@ -0,0 +1,39 @@
+"use client";
+import React, { useEffect, useState } from 'react'
+import './privacy.css'
+const PrivacyPolicy = () => {
+ const [htmlContent, setHtmlContent] = useState("");
+ const [loading,setLoading] = useState(false)
+ const fetchdata = async () => {
+ setLoading(true);
+ try {
+ const response = await fetch("/api/privacy-policy", {
+ method: "GET",
+ });
+
+ const resData = await response.json();
+ setHtmlContent(resData.data);
+ } catch (error) {
+ console.error("Error fetching data:", error);
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ useEffect(() => {
+ fetchdata();
+ }, []);
+ return (
+
+ {loading ? (
+
Loading content, please wait...
+ ) : htmlContent ? (
+
+ ) : (
+
No content available
+ )}
+
+ )
+}
+
+export default PrivacyPolicy
diff --git a/components/privacy-policy/privacy.css b/components/privacy-policy/privacy.css
new file mode 100644
index 0000000..d4249f7
--- /dev/null
+++ b/components/privacy-policy/privacy.css
@@ -0,0 +1,60 @@
+/* Styles for the refund policy container */
+.privacy-policy-container {
+ margin: 0 auto;
+ padding: 20px;
+ max-width: 800px;
+ line-height: 1.6;
+ font-family: 'Arial', sans-serif;
+ }
+
+ /* General headings */
+ .privacy-policy-container h1 {
+ font-size: 2.5rem;
+ font-weight: bold;
+ margin-bottom: 20px;
+ text-align: center;
+ }
+
+ .privacy-policy-container h2 {
+ font-size: 1.75rem;
+ font-weight: 600;
+ margin-top: 30px;
+ margin-bottom: 15px;
+ color: #333;
+ }
+
+ /* Paragraph and text content */
+ .privacy-policy-container p {
+ font-size: 1rem;
+ margin-bottom: 15px;
+ color: #555;
+ }
+
+ /* Lists */
+ .privacy-policy-container ul {
+ padding-left: 20px;
+ margin-bottom: 20px;
+ }
+
+ .privacy-policy-container ul li {
+ margin-bottom: 10px;
+ font-size: 1rem;
+ }
+
+ /* Additional spacing and margins */
+ .privacy-policy-container .mt-5 {
+ margin-top: 1.5rem;
+ }
+
+ .privacy-policy-container .mb-5 {
+ margin-bottom: 1.5rem;
+ }
+
+ /* Add borders or backgrounds as needed */
+ .privacy-policy-container {
+ background-color: #f9f9f9;
+ border-radius: 10px;
+ padding: 25px;
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
+ }
+
\ No newline at end of file
diff --git a/components/product-category/ProductGallery.jsx b/components/product-category/ProductGallery.jsx
new file mode 100644
index 0000000..50de7e2
--- /dev/null
+++ b/components/product-category/ProductGallery.jsx
@@ -0,0 +1,128 @@
+import React from "react";
+import Image from "next/image";
+
+const ProductGallery = () => {
+ const galleryImg = [
+ {
+ id: 1,
+ src: "/gallery1.jpg",
+ alt: "Gallery image 1",
+ text: "All Rudraksha",
+ },
+ {
+ id: 2,
+ src: "/gallery3.jpg",
+ alt: "Gallery image 2",
+ text: "Siddha Mala",
+ },
+ {
+ id: 3,
+ src: "/gallery2.jpg",
+ alt: "Gallery image 3",
+ text: "Murti & Yantra",
+ },
+ {
+ id: 4,
+ src: "/gallery4.png",
+ alt: "Gallery image 4",
+ text: "Rudraksha Combination",
+ },
+ { id: 5, src: "/gallery5.webp", alt: "Gallery image 5", text: "Japa Mala" },
+ {
+ id: 6,
+ src: "/gallery6.jpg",
+ alt: "Gallery image 6",
+ text: "Kantha Mala",
+ },
+ { id: 7, src: "/gallery7.webp", alt: "Gallery image 7", text: "Shaligram" },
+ ];
+
+ const ImageWithOverlay = ({ src, alt, text, className }) => (
+
+ );
+
+ return (
+
+
+
+
+ Product Categories
+
+
+ Discover the Essence: Explore our Diverse Product Categories
+
+
+
+ {/* Left column */}
+
+
+ {/* Middle column */}
+
+
+ {/* Right column */}
+
+
+
+
+ );
+};
+
+export default ProductGallery;
diff --git a/components/product-category/SecondGallery.jsx b/components/product-category/SecondGallery.jsx
new file mode 100644
index 0000000..e2a4781
--- /dev/null
+++ b/components/product-category/SecondGallery.jsx
@@ -0,0 +1,53 @@
+import React from "react";
+import Image from "next/image";
+
+const SecondGallery = () => {
+ return (
+
+ {/* Left Image */}
+
+
+
+
+ {/* Right content */}
+
+
+ Nepal's 1st & only
+
+ ISO Certified
+
+ Rudraksha Organization
+
+
+ Explore the largest collection of authentic Gupta Rudraksha energized
+ as per our vedic process. For nearly 3+ generations Gupta Rudraksha
+ has been the pioneer of Rudraksha and Shaligram and has supported
+ millions of devotees attain spiritual and professional goals.
+
+
+ Gupta Rudraksha - The Only Vendor in the World To 100% Lifetime Money
+ Back Authenticity Guarantee.
+
+
+
+ {/* Right Image */}
+
+
+
+
+ );
+};
+
+export default SecondGallery;
diff --git a/components/products/AddToCardLeftSection.jsx b/components/products/AddToCardLeftSection.jsx
new file mode 100644
index 0000000..35bbbf4
--- /dev/null
+++ b/components/products/AddToCardLeftSection.jsx
@@ -0,0 +1,94 @@
+"use client";
+import React, { useContext, useState } from "react";
+import { Button } from "@/components/ui/button";
+import { Card } from "@/components/ui/card";
+import { ChevronLeft, ChevronRight } from "lucide-react";
+import ProductContext from "@/app/contexts/productContext";
+import { backendUrl } from "@/utils/axios";
+import Image from "next/image";
+
+const ProductGallery = ({ productId }) => {
+ const { products } = useContext(ProductContext);
+
+ const [currentImageIndex, setCurrentImageIndex] = useState(0);
+
+ const nextImage = () => {
+ setCurrentImageIndex((prevIndex) => (prevIndex + 1) % productImages.length);
+ };
+
+ const prevImage = () => {
+ setCurrentImageIndex(
+ (prevIndex) =>
+ (prevIndex - 1 + productImages.length) % productImages.length
+ );
+ };
+ const product = products?.find((pr) => pr.id == productId);
+ if (!product) {
+ return null;
+ }
+ const productImages = product?.images?.map((img) => img.image) || [];
+
+ return (
+
+
+ {productImages?.map((src, index) => (
+ setCurrentImageIndex(index)}
+ />
+ ))}
+
+
+
+ {/* Main image with carousel controls */}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A+ Grade
+
+
+ IRL Certified
+
+
+ Expert Rating
+
+
+
Note: Free Shipping on order above $ 300
+
100% Secured Payment
+
Authenticity Guaranteed
+
+
+
+ );
+};
+
+export default ProductGallery;
diff --git a/components/products/AddToCardRightSection.jsx b/components/products/AddToCardRightSection.jsx
new file mode 100644
index 0000000..d82f5c4
--- /dev/null
+++ b/components/products/AddToCardRightSection.jsx
@@ -0,0 +1,207 @@
+"use client";
+import React, { useContext, useState } from "react";
+import { Plus, Minus } from "lucide-react";
+import ProductContext from "@/app/contexts/productContext";
+import { backendUrl } from "@/utils/axios";
+import { useCurrency } from "@/app/contexts/currencyContext";
+import Link from "next/link";
+import Image from "next/image";
+
+function ProductDetails({ productId }) {
+ const [quantity, setQuantity] = useState(1);
+ const [selectedSize, setSelectedSize] = useState(null);
+ const [selectedDesign, setSelectedDesign] = useState(null);
+ const [termsAccepted, setTermsAccepted] = useState(false);
+ const { products, cartFn } = useContext(ProductContext);
+ const { formatPrice, isLoading } = useCurrency();
+
+ const product = products?.find((pr) => pr.id == productId);
+ React.useEffect(() => {
+ if (product && product.variants?.length > 0) {
+ setSelectedSize(product.variants[0]?.size?.size_name || "");
+ setSelectedDesign(product.design_associations?.[0]?.design?.id || "");
+ }
+ }, [product]);
+
+ if (!product) return null;
+
+ const hasVariants = product.variants?.length > 0;
+ const hasDesigns = product.design_associations?.length > 0;
+
+ const selectedVariant = hasVariants
+ ? product.variants.find((v) => v.size.size_name === selectedSize)
+ : null;
+
+ const currentPrice = selectedVariant?.price || product.price || 0;
+ const designPrice = hasDesigns
+ ? product.design_associations.find((d) => d.design.id === selectedDesign)
+ ?.design.design_price || 0
+ : 0;
+
+ const totalPrice = currentPrice + designPrice;
+
+ return (
+
+
+
{product.product_name}
+
+
+ {hasVariants ? (
+
+
+ {isLoading ? (
+ Loading...
+ ) : (
+ {formatPrice(totalPrice)}
+ )}
+
+ INR
+
+ ) : (
+
Price on request
+ )}
+
+
+ {hasVariants && (
+
+
Select Size
+
+ {product.variants.map((variant) => (
+ setSelectedSize(variant.size.size_name)}
+ >
+ {variant.size.size_name}
+
+ ))}
+
+
+ )}
+
+ {hasDesigns && (
+
+
Select Your Design
+
+ {product.design_associations.map((design) => (
+
setSelectedDesign(design.design.id)}
+ >
+
+
+
+ {design.design.design_name}
+
+ {isLoading ? (
+ Loading...
+ ) : (
+ {formatPrice(design.design.design_price)}
+ )}
+
+
+ ))}
+
+
+ )}
+
+
+ {product?.product_category?.category_name && (
+
+ Category: {product.product_category.category_name}
+
+ )}
+ {product?.product_subcategory?.subcategory_name && (
+
+ Subcategory: {product.product_subcategory.subcategory_name}
+
+ )}
+
+
+ {hasVariants && (
+ <>
+
+
setQuantity(Math.max(1, quantity - 1))}
+ className="p-2"
+ >
+
+
+
{quantity}
+
setQuantity(quantity + 1)}
+ className="p-2"
+ disabled={quantity >= selectedVariant?.stock}
+ >
+
+
+
+
+ Stock:{" "}
+ {selectedVariant?.stock > 0 ? "available" : "Not Available"}
+
+ >
+ )}
+
+ setTermsAccepted(e.target.checked)}
+ />
+ I agree with the
+
+ terms of services
+
+ and
+
+ return And Cancellation policy
+
+
+
+ {hasVariants && selectedVariant?.stock > 0 ? (
+
cartFn(selectedVariant.id, selectedDesign, quantity)}
+ disabled={!termsAccepted}
+ className={`w-full py-3 rounded-md ${
+ termsAccepted
+ ? "bg-[#C17A0F] text-white cursor-pointer"
+ : "bg-gray-300 text-gray-500 cursor-not-allowed"
+ }`}
+ >
+ ADD TO CART
+
+ ) : (
+
+ REQUEST PRICE
+
+ )}
+
+
+
Product Description
+
+
+
+
+ );
+}
+
+export default ProductDetails;
diff --git a/components/products/RelatedProductCards.jsx b/components/products/RelatedProductCards.jsx
new file mode 100644
index 0000000..dade42d
--- /dev/null
+++ b/components/products/RelatedProductCards.jsx
@@ -0,0 +1,63 @@
+"use client";
+import React, { useContext } from "react";
+import Image from "next/image";
+import Link from "next/link";
+import { productsCards } from "@/utils";
+import ProductContext from "@/app/contexts/productContext";
+import { backendUrl } from "@/utils/axios";
+
+const RelatedProductCards = ({ productId }) => {
+ const { products } = useContext(ProductContext);
+
+ if (!products) {
+ return null;
+ }
+
+ const product = products?.find((pr) => pr.id == productId);
+ const relatedProducts = products?.filter(
+ (prod) => prod.product_category.id == product.id && prod.id != productId
+ );
+
+ if (relatedProducts.length == 0) {
+ return null;
+ }
+ return (
+
+
+
+ You may also like
+
+
+
+ {relatedProducts.map((product) => (
+
+
+
+ Exclusive
+
+
+
+
+
+
+ {product.title}
+
+
+
+
+ ))}
+
+
+ );
+};
+
+export default RelatedProductCards;
diff --git a/components/products/RelatedVideos.jsx b/components/products/RelatedVideos.jsx
new file mode 100644
index 0000000..c567dbb
--- /dev/null
+++ b/components/products/RelatedVideos.jsx
@@ -0,0 +1,49 @@
+import React from 'react';
+
+const RelatedVideos = () => {
+ return (
+ <>
+ Videos of Related Products
+
+ VIDEO
+ VIDEO
+ VIDEO
+ VIDEO
+
+ >
+ );
+};
+
+export default RelatedVideos;
\ No newline at end of file
diff --git a/components/refund-policy/RefundPolicy.jsx b/components/refund-policy/RefundPolicy.jsx
new file mode 100644
index 0000000..0856423
--- /dev/null
+++ b/components/refund-policy/RefundPolicy.jsx
@@ -0,0 +1,136 @@
+"use client";
+import React from "react";
+
+const RefundPolicy = () => {
+ return (
+
+
+
+ Return and Cancellation Policy
+
+
+ At Gupta Rudraksha and Beads , we are committed to
+ providing you with a divine and satisfying shopping experience for all
+ your sacred needs, including Rudraksha beads, Shaligrams, and Japa
+ Malas. Our policy ensures your peace of mind and convenience.
+
+
+
+
+
+ Returns and Exchanges
+
+
+
+ Eligibility: If you are not completely satisfied
+ with your purchase, you may return or exchange the item within{" "}
+ 10 days of delivery . To qualify:
+
+ The item must be unused and in its original condition.
+
+ It should include the original packaging and proof of purchase.
+
+
+
+
+ Process: To initiate a return or exchange, please
+ email us at nepali.rudrakshabeads@gmail.com with
+ your order details. Our team will guide you through the process
+ promptly.
+
+
+ Refunds:
+
+
+ Once we receive and inspect the returned item, we will notify
+ you of the approval or rejection of your refund.
+
+
+ If approved, the refund will be processed to your original
+ payment method within 7-10 business days .
+
+
+
+
+
+
+
+
+ Order Cancellations
+
+
+
+ Cancellation Window: You can cancel your order
+ within 24 hours of placing it by emailing us at{" "}
+ nepali.rudrakshabeads@gmail.com .
+
+
+ After 24 Hours: If the order has already been
+ processed or shipped, cancellations will not be accepted, but you
+ may proceed with a return after delivery (refer to the Returns
+ policy).
+
+
+
+
+
+
+ Non-Returnable Items
+
+
+ Customized or personalized products.
+ Items damaged due to mishandling after delivery.
+
+
+ For more clarity, feel free to contact us before purchasing.
+
+
+
+
+
+ Shipping Costs
+
+
+
+ Returns: Customers are responsible for the shipping
+ costs associated with returning items. Shipping fees are
+ non-refundable.
+
+
+ Exchanges: If you receive a defective or incorrect
+ item, Gupta Rudraksha and Beads will cover the
+ shipping costs for the return and replacement.
+
+
+
+
+
+
+ Contact Us
+
+
+ Your satisfaction is our utmost priority. For any queries or
+ assistance regarding returns, exchanges, or cancellations, please
+ contact us at:
+
+
+ 📧 nepali.rudrakshabeads@gmail.com
+
+
+ We are here to ensure your experience with{" "}
+ Gupta Rudraksha and Beads is as spiritual and
+ fulfilling as the sacred items you purchase.
+
+
+
+
+
+ *Note: This policy is subject to updates without prior notice. Please
+ review it periodically for any changes.*
+
+
+
+ );
+};
+
+export default RefundPolicy;
diff --git a/components/refund-policy/refund.css b/components/refund-policy/refund.css
new file mode 100644
index 0000000..3f63af2
--- /dev/null
+++ b/components/refund-policy/refund.css
@@ -0,0 +1,60 @@
+/* Styles for the refund policy container */
+.refund-policy-container {
+ margin: 0 auto;
+ padding: 20px;
+ max-width: 800px;
+ line-height: 1.6;
+ font-family: 'Arial', sans-serif;
+ }
+
+ /* General headings */
+ .refund-policy-container h1 {
+ font-size: 2.5rem;
+ font-weight: bold;
+ margin-bottom: 20px;
+ text-align: center;
+ }
+
+ .refund-policy-container h2 {
+ font-size: 1.75rem;
+ font-weight: 600;
+ margin-top: 30px;
+ margin-bottom: 15px;
+ color: #333;
+ }
+
+ /* Paragraph and text content */
+ .refund-policy-container p {
+ font-size: 1rem;
+ margin-bottom: 15px;
+ color: #555;
+ }
+
+ /* Lists */
+ .refund-policy-container ul {
+ padding-left: 20px;
+ margin-bottom: 20px;
+ }
+
+ .refund-policy-container ul li {
+ margin-bottom: 10px;
+ font-size: 1rem;
+ }
+
+ /* Additional spacing and margins */
+ .refund-policy-container .mt-5 {
+ margin-top: 1.5rem;
+ }
+
+ .refund-policy-container .mb-5 {
+ margin-bottom: 1.5rem;
+ }
+
+ /* Add borders or backgrounds as needed */
+ .refund-policy-container {
+ background-color: #f9f9f9;
+ border-radius: 10px;
+ padding: 25px;
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
+ }
+
\ No newline at end of file
diff --git a/components/search/searchComponent.jsx b/components/search/searchComponent.jsx
new file mode 100644
index 0000000..388b737
--- /dev/null
+++ b/components/search/searchComponent.jsx
@@ -0,0 +1,149 @@
+import React, { useState, useContext, useRef, useEffect } from "react";
+import { Search } from "lucide-react";
+import Link from "next/link";
+import ProductContext from "@/app/contexts/productContext";
+import { backendUrl } from "@/utils/axios";
+import Image from "next/image";
+
+const SearchComponent = ({ isScrolled }) => {
+ const [searchTerm, setSearchTerm] = useState("");
+ const [showSuggestions, setShowSuggestions] = useState(false);
+ const [isExpanded, setIsExpanded] = useState(false);
+ const { products, category } = useContext(ProductContext);
+ const searchRef = useRef(null);
+
+ const filteredProducts = products
+ ?.filter((product) =>
+ product.product_name.toLowerCase().includes(searchTerm.toLowerCase())
+ )
+ .slice(0, 5);
+
+ const filteredCategories = category
+ ?.filter((category) =>
+ category.category_name.toLowerCase().includes(searchTerm.toLowerCase())
+ )
+ .slice(0, 3);
+
+ useEffect(() => {
+ const handleClickOutside = (event) => {
+ if (searchRef.current && !searchRef.current.contains(event.target)) {
+ setShowSuggestions(false);
+ if (isScrolled) setIsExpanded(false);
+ }
+ };
+
+ document.addEventListener("mousedown", handleClickOutside);
+ return () => document.removeEventListener("mousedown", handleClickOutside);
+ }, [isScrolled]);
+
+ const handleSearchChange = (e) => {
+ setSearchTerm(e.target.value);
+ setShowSuggestions(true);
+ };
+
+ const SearchInput = () => (
+
+ setShowSuggestions(true)}
+ placeholder="Search products..."
+ className="p-2 outline-none w-full"
+ />
+
+
+ );
+
+ const Suggestions = () => {
+ if (!showSuggestions || !searchTerm) return null;
+
+ const hasResults =
+ filteredCategories?.length > 0 || filteredProducts?.length > 0;
+
+ return (
+
+ {!hasResults && searchTerm && (
+
No results found
+ )}
+
+ {filteredCategories?.length > 0 && (
+
+
Categories
+ {filteredCategories.map((category) => (
+
{
+ setShowSuggestions(false);
+ setIsExpanded(false);
+ }}
+ >
+ {category.category_name}
+
+ ))}
+
+ )}
+
+ {filteredProducts?.length > 0 && (
+
+
Products
+ {filteredProducts.map((product) => (
+
{
+ setShowSuggestions(false);
+ setIsExpanded(false);
+ }}
+ >
+
+ {product.images?.[0] && (
+
+ )}
+ {product.product_name}
+
+
+ ))}
+
+ )}
+
+ );
+ };
+
+ return (
+
+ {isScrolled ? (
+ <>
+
setIsExpanded(!isExpanded)}
+ className="cursor-pointer"
+ >
+
+
+ {isExpanded && (
+
+
+
+
+ )}
+ >
+ ) : (
+
+
+
+
+ )}
+
+ );
+};
+
+export default SearchComponent;
diff --git a/components/shaligram/ListOfShaligram.jsx b/components/shaligram/ListOfShaligram.jsx
new file mode 100644
index 0000000..b03db01
--- /dev/null
+++ b/components/shaligram/ListOfShaligram.jsx
@@ -0,0 +1,63 @@
+import Image from "next/image";
+import Link from "next/link";
+import React from "react";
+
+const ListOfShaligram = () => {
+ const shaligrams = [
+ {
+ title: "Buddha Shaligram",
+ imageUrl: "/shaligram/buddha-shaligram-829.webp",
+ },
+ {
+ title: "Matsya Shaligram",
+ imageUrl: "/shaligram/matsya-shaligram-614.webp",
+ },
+ {
+ title: "Narsimha Shaligram",
+ imageUrl: "/shaligram/narasimha-shaligram-977.webp",
+ },
+ {
+ title: "Parashurama Shaligram",
+ imageUrl: "/shaligram/parashurama-shaligram-855.webp",
+ },
+ {
+ title: "Rama Shaligram",
+ imageUrl: "/shaligram/rama-shaligram-313.webp",
+ },
+ {
+ title: "Vamana Shaligram",
+ imageUrl: "/shaligram/vamana-shaligram-750.webp",
+ },
+ ];
+
+ return (
+
+
+ Vishnu Dashavatar Shaligrams
+
+
+ {shaligrams.map((item, index) => (
+ <>
+
+
+
+
+
+
+
+
{item.title}
+
+ >
+ ))}
+
+
+ );
+};
+
+export default ListOfShaligram;
diff --git a/components/shipping-policy/ShippingPolicy.jsx b/components/shipping-policy/ShippingPolicy.jsx
new file mode 100644
index 0000000..bd11fa3
--- /dev/null
+++ b/components/shipping-policy/ShippingPolicy.jsx
@@ -0,0 +1,91 @@
+import React from "react";
+
+const ShippingPolicy = () => {
+ return (
+
+
+
+ Gupta Rudraksha Shipping Policy
+
+
+
+ Welcome to Gupta Rudraksha, where we are committed to providing our
+ customers with an exceptional shopping experience. Our dedication
+ extends beyond just offering high-quality Rudraksha beads and
+ accessories; we ensure that every part of your journey with us,
+ especially shipping, is handled with care and precision.
+
+
+
+ Our Commitment to Fast & Secure Delivery
+
+
+ We understand that receiving your products safely and promptly is
+ crucial. To achieve this, Gupta Rudraksha has partnered with leading
+ global delivery services, renowned for their efficiency and
+ reliability. Our logistics partners are carefully selected to uphold
+ our high standards of delivery, ensuring that every package reaches
+ its destination in perfect condition.
+
+
+
+ Defined Shipping Timelines
+
+
+ We strive to make our delivery process as transparent and predictable
+ as possible. Our shipping timelines are specifically designed to
+ inform you of when to expect your order:
+
+
+
+ Minimum Delivery Time: 5 days
+ Maximum Delivery Time: 10 days
+
+
+
+ This accounts for any unforeseen circumstances that may affect transit
+ times, including geographic distance, customs clearances for
+ international orders, and carrier operational delays.
+
+
+
+ Tracking Your Order
+
+
+ Once your order is dispatched, you will receive a tracking number that
+ allows you to follow the progress of your shipment. This service is
+ part of our commitment to provide you with peace of mind from the
+ moment you complete your purchase until your package is safely
+ delivered.
+
+
+
+ Customer Support
+
+
+ Should you have any questions about your order's shipping status or
+ our shipping practices, our customer service team is here to assist
+ you. We pride ourselves on our responsive and helpful customer support
+ that is ready to solve any issue and answer any query.
+
+
+
+ We appreciate your trust in Gupta Rudraksha, and we pledge to
+ continually optimize our shipping practices to enhance your overall
+ experience with us.
+
+
+ Delivery Services Used:
+
+
+ Note: Gupta Rudraksha only uses the expedited shipping options and
+ ensures the fastest delivery using any of the above courier services
+ based on their estimated delivery date. BlueDart is used for
+ deliveries all over India.
+
+
+
+ );
+};
+
+export default ShippingPolicy;
diff --git a/components/shopping-cart/emptyCart.jsx b/components/shopping-cart/emptyCart.jsx
new file mode 100644
index 0000000..fddedef
--- /dev/null
+++ b/components/shopping-cart/emptyCart.jsx
@@ -0,0 +1,37 @@
+import React from 'react';
+import { ShoppingBag } from 'lucide-react';
+import Link from 'next/link';
+
+const EmptyCart = () => {
+ return (
+
+
+
+ SHOPPING CART
+
+
+
+
+
+
+
Your cart is empty
+
Looks like you haven't added any items to your cart yet
+
+
+
+ Continue Shopping
+
+
+
+
+ );
+};
+
+export default EmptyCart;
\ No newline at end of file
diff --git a/components/shopping-cart/shoppingCart.jsx b/components/shopping-cart/shoppingCart.jsx
new file mode 100644
index 0000000..09645e7
--- /dev/null
+++ b/components/shopping-cart/shoppingCart.jsx
@@ -0,0 +1,245 @@
+"use client";
+import React, { useContext, useEffect, useState } from "react";
+import { Trash2, Plus } from "lucide-react";
+import authAxios, { backendUrl } from "@/utils/axios";
+import ProductContext from "@/app/contexts/productContext";
+import EmptyCart from "./emptyCart";
+import { PayPalScriptProvider, PayPalButtons } from "@paypal/react-paypal-js";
+import axios from "axios";
+import { useRouter } from "next/navigation";
+import PaymentComponent from "../payment/paymentComponent";
+import { useCurrency } from "@/app/contexts/currencyContext";
+import Link from "next/link";
+import Image from "next/image";
+import toast from "react-hot-toast";
+
+const ShoppingCart = () => {
+ const [cartItems, setCartItems] = useState(null);
+
+ const [error, setError] = useState(null);
+ const router = useRouter();
+ const { cartFn } = useContext(ProductContext);
+ const { formatPrice } = useCurrency();
+
+ const getCart = async () => {
+ const response = await authAxios.get("/orders/cart/");
+ setCartItems(response.data);
+ };
+ useEffect(() => {
+ getCart();
+ }, []);
+
+ const handleQuantityChange = async (variantId, designId, quantityChange) => {
+ const response = await cartFn(variantId, designId, quantityChange);
+ console.log(response)
+ if (response?.status == 200) {
+ setCartItems((prev) => {
+ if (!prev) return prev;
+
+ const updatedItems = prev[0].items.map((item) => {
+ if (item.variant.id === variantId && item?.design?.id === designId) {
+ const updatedQuantity = item.quantity + quantityChange;
+ const updatedTotalPrice =
+ (item.variant.price + (item?.design?.design_price || 0)) *
+ updatedQuantity;
+
+ if (updatedQuantity <= 0) {
+ return null;
+ }
+
+ return {
+ ...item,
+ quantity: updatedQuantity,
+ total_price: updatedTotalPrice,
+ };
+ }
+ return item;
+ });
+
+ const filteredItems = updatedItems.filter((item) => item !== null);
+
+ return [
+ {
+ ...prev[0],
+ items: filteredItems,
+ total_amount: filteredItems.reduce(
+ (sum, item) => sum + item.total_price,
+ 0
+ ),
+ },
+ ];
+ });
+ }
+ };
+
+ if (!cartItems) {
+ return null;
+ }
+
+ if (!cartItems[0]?.items?.length) {
+ return ;
+ }
+
+ const handlePaymentSuccess = async (order) => {
+ console.log("Payment SuccessFul", order);
+ const response = await authAxios.post("/orders/payment/", {
+ orderId: order.id,
+ payer_mail: order.payer.email_address,
+ address: order.purchase_units[0].shipping.address,
+ name: order.purchase_units[0].shipping.name.full_name,
+ cartId: cartItems[0].id,
+ });
+ router.push('/accounts/profile/orders')
+ toast.success('You Order Is Successfull!')
+ console.log(response);
+ };
+ return (
+
+
+
+ SHOPPING CART
+
+
+
+
+
+
Price
+
Quantity
+
Total
+
+
+
+ {cartItems[0]?.items?.map((item) => (
+
+
+
+
+
+
+ {item.variant.product.product_name}
+
+ {item.variant.size?.size_name && (
+
+ Size: {item.variant.size.size_name}
+
+ )}
+ {item?.design?.design_name && (
+
+ Your Design: {item.design.design_name}
+
+ )}
+
+
+
+
+ {formatPrice(
+ item.variant.price + (item.design?.design_price || 0)
+ )}
+
+
+ {item.quantity > 1 && (
+
+ handleQuantityChange(
+ item.variant.id,
+ item?.design?.id,
+ -1
+ )
+ }
+ className="px-2 py-2 text-[#c19a5b] hover:text-[#ab885b]"
+ >
+ -
+
+ )}
+ {item.quantity}
+
+ handleQuantityChange(
+ item.variant.id,
+ item?.design?.id,
+ +1
+ )
+ }
+ className="px-2 py-2 text-[#c19a5b] hover:text-[#ab885b]"
+ >
+ +
+
+
+
+ {formatPrice(item.total_price)}
+
+
+
+ handleQuantityChange(
+ item.variant.id,
+ item.design.id,
+ -item.quantity
+ )
+ }
+ />
+
+
+
+
+
+ ))}
+
+
+
+
+ ← CONTINUE SHOPPING
+
+
+ CLEAR SHOPPING CART
+
+
+
+
+
+
+ SUBTOTAL
+ {formatPrice(cartItems[0].total_amount)}
+
+
+ GRAND TOTAL
+
+ {formatPrice(cartItems[0].total_amount)}
+
+
+
+
+
+ I agree with the{" "}
+
+ terms of services
+ {" "}
+ and{" "}
+
+ return And Cancellation policy.
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default ShoppingCart;
diff --git a/components/siddha-mala/ExploreSiddhamala.jsx b/components/siddha-mala/ExploreSiddhamala.jsx
new file mode 100644
index 0000000..934bd9c
--- /dev/null
+++ b/components/siddha-mala/ExploreSiddhamala.jsx
@@ -0,0 +1,69 @@
+"use client";
+
+import Link from "next/link";
+import React, { useContext } from "react";
+import { backendUrl } from "@/utils/axios";
+import Image from "next/image";
+import { useCurrency } from "@/app/contexts/currencyContext";
+import ProductContext from "@/app/contexts/productContext";
+
+export default function ExploreSiddhaMala({ params }) {
+ const { products, category } = useContext(ProductContext);
+ const { formatPrice, isLoading } = useCurrency();
+
+ const filteredProducts = products?.filter(
+ (product) => product.product_category?.id == params.id
+ );
+ const selectedCategory = category?.find((cat) => cat.id == params.id);
+
+ return (
+
+
+
+ Explore{" "}
+ {selectedCategory ? selectedCategory.category_name : "Products"}
+
+
+ {filteredProducts?.map((product) => (
+
+
+
+
+
+
+
+
+ {product.product_name}
+
+ {product.variants?.length > 0 ? (
+
+ {isLoading
+ ? "Loading..."
+ : formatPrice(
+ Math.min(
+ ...product.variants.map((variant) => variant.price)
+ )
+ )}
+
+ ) : (
+
+ Price on request
+
+ )}
+
+
+ ))}
+
+
+
+ );
+}
diff --git a/components/siddha-mala/SiddhaThree.jsx b/components/siddha-mala/SiddhaThree.jsx
new file mode 100644
index 0000000..e5f948e
--- /dev/null
+++ b/components/siddha-mala/SiddhaThree.jsx
@@ -0,0 +1,56 @@
+import React from "react";
+
+const SiddhaThree = () => {
+ return (
+
+
+ Design Available
+
+
+ {[
+ {
+ title: "Loose Beads/Red Thread",
+ description:
+ "Loose beads provide flexibility in crafting your own unique Rudraksha accessories. Ideal for those who wish to design custom malas or incorporate Rudraksha beads into existing jewelry pieces.",
+ image: "/sidhi-mala/1.webp",
+ },
+ {
+ title: "Silver Capped",
+ description:
+ "Silver-capped Rudraksha beads add an elegant touch to your spiritual accessories. The silver caps not only enhance the aesthetics but also provide additional durability.",
+ image: "/sidhi-mala/2_01d4b37c-ade7-44a1-8847-b63ca7945b5b.webp",
+ },
+ {
+ title: "Silver Chain",
+ description:
+ "A Rudraksha chain with silver links combines the sacred energy of Rudraksha with the elegance of silver. The chain design allows for a more versatile and adjustable accessory, suitable for daily wear.",
+ image: "/sidhi-mala/3_4bb67323-1af4-4167-9f11-34cdab60e320.webp",
+ },
+ {
+ title: "Rudraksha Chain",
+ description:
+ "A Rudraksha chain with silver links combines the sacred energy of Rudraksha with the elegance of silver. The chain design allows for a more versatile and adjustable accessory, suitable for daily wear.",
+ image: "/sidhi-mala/4_b5f14d83-0ef5-4e47-8e96-d36db882aadc.webp",
+ },
+ ].map((item, index) => (
+
+
+
+ {item.title}
+
+
+ {item.description}
+
+
+
+ ))}
+
+
+ );
+};
+
+export default SiddhaThree;
diff --git a/components/siddha-mala/categoryHero.jsx b/components/siddha-mala/categoryHero.jsx
new file mode 100644
index 0000000..55dd0df
--- /dev/null
+++ b/components/siddha-mala/categoryHero.jsx
@@ -0,0 +1,65 @@
+"use client";
+
+import { useContext } from "react";
+import Image from "next/image";
+import { motion } from "framer-motion";
+import ProductContext from "@/app/contexts/productContext";
+import { Button } from "@/components/ui/button";
+
+const cleanHTML = (html) => {
+ if (!html) return "";
+ return html.replace(/style="[^"]*color:[^;]*;?"/gi, "");
+};
+
+const CategoryHero = ({ params }) => {
+ const { category } = useContext(ProductContext);
+ const selectedCategory = category?.find((cat) => cat.id == params.id);
+
+ // Fallback values
+ const fallbackImage = "/placeholder-image.jpg";
+ const fallbackDescription =
+ "Explore our curated collection of spiritual items designed to enhance your journey of self-discovery and inner peace.";
+ const fallbackCategoryName = "Spiritual Essentials";
+
+ return (
+
+
+
+
+
+
+
+ {selectedCategory?.category_name || fallbackCategoryName}
+
+
+
+
+
+
+ );
+};
+
+export default CategoryHero;
diff --git a/components/sliders/BannerSlider.jsx b/components/sliders/BannerSlider.jsx
new file mode 100644
index 0000000..0be222a
--- /dev/null
+++ b/components/sliders/BannerSlider.jsx
@@ -0,0 +1,86 @@
+"use client";
+import React from "react";
+import Image from "next/image";
+import { motion } from "framer-motion";
+import { ArrowRight } from "lucide-react";
+
+const categories = [
+ { title: "Spirituality", image: "/one-two.jpg" },
+ { title: "Meditation", image: "/gallery1.jpg" },
+ { title: "Wellness", image: "/pooja_image.webp" },
+];
+
+const BannerSlider = () => {
+ return (
+
+ {/* Background image */}
+
+
+
+
+ {/* Text content */}
+
+
+ Discover Your Path
+
+
+ Astrology-Guided Personal Growth
+
+
+ Unlock your potential with our expert-led consultations and sacred
+ Rudraksha beads.
+
+
+ Book a Consultation
+
+
+
+
+ {/* Static Cards */}
+
+ {categories.map((category, index) => (
+
+
+
+
+ {category.title}
+
+
+
+ ))}
+
+
+
+
+ );
+};
+
+export default BannerSlider;
diff --git a/components/sliders/SliderTwo.jsx b/components/sliders/SliderTwo.jsx
new file mode 100644
index 0000000..4c9356d
--- /dev/null
+++ b/components/sliders/SliderTwo.jsx
@@ -0,0 +1,109 @@
+"use client";
+
+import React, { useContext } from "react";
+import {
+ Carousel,
+ CarouselContent,
+ CarouselItem,
+ CarouselNext,
+ CarouselPrevious,
+} from "@/components/ui/carousel";
+import Link from "next/link";
+import ProductContext from "@/app/contexts/productContext";
+import { backendUrl } from "@/utils/axios";
+import Image from "next/image";
+import { motion } from "framer-motion";
+import { ArrowRight } from "lucide-react";
+
+const EnhancedSlider = () => {
+ const { category, products } = useContext(ProductContext);
+
+ const selectedCategories = category?.slice(0, 2);
+ const categorizedProducts = selectedCategories?.map((cat) => ({
+ category: cat,
+ products: products
+ ?.filter((product) => product.product_category?.id === cat.id)
+ .slice(0, 3),
+ }));
+
+ return (
+
+
+ {categorizedProducts?.map((catData, index) => (
+
+
+
+
+ Best-Selling {catData.category?.category_name}
+
+
+
+ Explore Collection
+
+
+
+
+
+
+
+
+ {catData.products?.map((product, idx) => (
+
+
+
+
+
+
+
+
+ {product.product_name}
+
+
+ {product.short_description ||
+ "Discover more about this product"}
+
+
+
+
+
+ ))}
+
+
+
+
+
+ ))}
+
+
+ );
+};
+
+export default EnhancedSlider;
diff --git a/components/sliders/categorySlider.jsx b/components/sliders/categorySlider.jsx
new file mode 100644
index 0000000..880e323
--- /dev/null
+++ b/components/sliders/categorySlider.jsx
@@ -0,0 +1,51 @@
+import React, { useContext } from "react";
+import {
+ Carousel,
+ CarouselContent,
+ CarouselItem,
+ CarouselNext,
+ CarouselPrevious,
+} from "@/components/ui/carousel";
+import Link from "next/link";
+import Image from "next/image";
+
+const CategorySlider = ({ categoryData, products }) => {
+ return (
+
+
+ Top Selling {categoryData?.category_name}
+
+
+
+ {products?.slice(0, 3).map((product, index) => (
+
+
+
+
+
+ {product.product_name}
+
+
+
+
+ ))}
+
+
+
+
+
+ );
+};
+
+export default CategorySlider;
diff --git a/components/terms-services/TermsOfService.jsx b/components/terms-services/TermsOfService.jsx
new file mode 100644
index 0000000..21ad881
--- /dev/null
+++ b/components/terms-services/TermsOfService.jsx
@@ -0,0 +1,67 @@
+import Link from 'next/link';
+import React from 'react';
+
+const TermsOfService = () => {
+ return (
+
+
+
Terms of Service
+
+
+ Welcome to Gupta Rudraksha and Beads . By accessing or using our website, you agree to comply with and be bound by the following terms and conditions. Please review them carefully before engaging with our services.
+
+
+
+ 1. Acceptance of Terms
+ By accessing our website, you acknowledge that you have read, understood, and agree to be bound by these Terms of Service, along with our Privacy Policy and Return and Cancellation Policy.
+
+ 2. Use of Our Website
+
+ Eligibility: You must be at least 18 years old to use our website. By using our site, you represent that you meet this age requirement.
+ Account Responsibility: If you create an account, you are responsible for maintaining the confidentiality of your account information and for all activities that occur under your account.
+
+
+ 3. Product Information
+ We strive to provide accurate descriptions of our products, including Rudraksha beads, Shaligrams, and Japa Malas. However, we do not warrant that product descriptions or other content are entirely accurate, complete, or error-free. If a product offered by us is not as described, your sole remedy is to return it in unused condition, in accordance with our Return and Cancellation Policy.
+
+ 4. Pricing and Payment
+
+ Pricing: All prices are listed in [Currency] and are subject to change without notice. We are not responsible for typographical errors in pricing.
+ Payment: We accept [list of payment methods]. Payment must be received before your order is processed and shipped.
+
+
+ 5. Shipping and Delivery
+
+ Shipping: We offer shipping to various locations. Shipping costs and delivery times are specified during the checkout process.
+ Delivery: Delivery times are estimates and not guaranteed. We are not liable for delays caused by carriers or unforeseen circumstances.
+
+
+ 6. Intellectual Property
+ All content on our website, including text, graphics, logos, images, and software, is the property of Gupta Rudraksha and Beads or its content suppliers and is protected by applicable intellectual property laws. Unauthorized use of any content is prohibited.
+
+ 7. Limitation of Liability
+ To the fullest extent permitted by law, Gupta Rudraksha and Beads shall not be liable for any indirect, incidental, special, or consequential damages arising from the use of our website or products.
+
+ 8. Governing Law
+ These terms are governed by and construed in accordance with the laws of [Your Jurisdiction], without regard to its conflict of law principles.
+
+ 9. Changes to Terms
+ We reserve the right to modify these Terms of Service at any time. Changes will be effective immediately upon posting on our website. Your continued use of the site constitutes your acceptance of any revised terms.
+
+ 10. Contact Information
+ For any questions or concerns regarding these Terms of Service, please contact us at:
+
+ Gupta Rudraksha and Beads
+ Email: nepali.rudrakshabeads@gmail.com
+
+
+
+
+ *Note: This document is subject to change without prior notice. Please review it periodically for any updates.*
+
+
+
+ );
+};
+
+export default TermsOfService;
diff --git a/components/terms-services/TermsPage.jsx b/components/terms-services/TermsPage.jsx
new file mode 100644
index 0000000..953b1ad
--- /dev/null
+++ b/components/terms-services/TermsPage.jsx
@@ -0,0 +1,27 @@
+"use client";
+import React from "react";
+import { useState, useEffect } from "react";
+import "./termsService.css";
+const TermsPage = () => {
+ const [termsdata, setTermsdata] = useState(null);
+
+ const fetchdata = async () => {
+ const dataObj = await fetch("/api/terms-of-service");
+ const response = await dataObj.json();
+ setTermsdata(response.data);
+ };
+ useEffect(() => {
+ fetchdata();
+ }, []);
+
+ return (
+
+ );
+};
+
+export default TermsPage;
diff --git a/components/terms-services/termsService.css b/components/terms-services/termsService.css
new file mode 100644
index 0000000..d82fe4d
--- /dev/null
+++ b/components/terms-services/termsService.css
@@ -0,0 +1,63 @@
+.termspage {
+ max-width: 900px;
+ margin: 30px auto;
+ padding: 20px;
+ background-color: #fff;
+ box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
+ border-radius: 8px;
+}
+
+.termspage .heading {
+ font-size: 2rem;
+ font-weight: 700;
+}
+.termspage h1,
+h2 {
+ color: #333;
+ font-weight: bold;
+}
+
+.termspage h1 {
+ font-size: 28px;
+ margin-bottom: 10px;
+ text-align: center;
+ padding-bottom: 20px;
+ border-bottom: 1px solid #e0e0e0;
+}
+
+.termspage h2 {
+ font-size: 22px;
+ margin-top: 20px;
+ margin-bottom: 15px;
+}
+
+.termspage p {
+ color: #555;
+ font-size: 16px;
+ margin-bottom: 15px;
+ text-align: justify;
+}
+
+.termspage a {
+ color: #007bff;
+ text-decoration: none;
+}
+
+.termspage a:hover {
+ text-decoration: underline;
+}
+
+.termspage ul {
+ padding-left: 20px;
+}
+
+.termspage li {
+ margin-bottom: 10px;
+ line-height: 1.5;
+}
+
+.termspage hr {
+ border: 0;
+ border-top: 1px solid #e0e0e0;
+ margin: 30px 0;
+}
diff --git a/components/testimonials/Testimonials.jsx b/components/testimonials/Testimonials.jsx
new file mode 100644
index 0000000..d159091
--- /dev/null
+++ b/components/testimonials/Testimonials.jsx
@@ -0,0 +1,119 @@
+'use client'
+import React from "react";
+import { Star } from "lucide-react";
+import {
+ Carousel,
+ CarouselContent,
+ CarouselItem,
+ CarouselNext,
+ CarouselPrevious,
+} from "@/components/ui/carousel";
+import { Card, CardContent } from "@/components/ui/card";
+import { testimonials } from "@/utils";
+import Image from "next/image";
+import { motion } from "framer-motion";
+
+const TestimonialCard = ({ testimonial }) => (
+
+
+
+
+
+
+ {[...Array(5)].map((_, i) => (
+
+ ))}
+
+
+ {testimonial.daysAgo} days ago
+
+
+
+ "{testimonial.review}"
+
+
+
+
+
+
+
+
{testimonial.name}
+
+ {testimonial.location || "Verified Customer"}
+
+
+
+
+
+
+);
+
+const TestimonialCarousel = () => {
+ return (
+
+
+
+
+ Transformative Experiences with Gupta Rudraksha
+
+
+ Discover how our sacred beads have touched lives -
+
+ See All Testimonials
+
+
+
+
+
+
+ {testimonials.map((testimonial, index) => (
+
+
+
+
+
+ ))}
+
+
+
+
+
+
+
+
+ );
+};
+
+export default TestimonialCarousel;
diff --git a/components/track-order/TrackOrder.jsx b/components/track-order/TrackOrder.jsx
new file mode 100644
index 0000000..7de13ae
--- /dev/null
+++ b/components/track-order/TrackOrder.jsx
@@ -0,0 +1,85 @@
+"use client";
+import React, { useState } from "react";
+
+const TrackOrder = () => {
+ const [orderNumber, setOrderNumber] = useState("");
+ const [countryCode, setCountryCode] = useState("");
+ const [phoneNumber, setPhoneNumber] = useState("");
+
+ const handleSubmit = (e) => {
+ e.preventDefault();
+ setCountryCode("");
+ setOrderNumber("");
+ setPhoneNumber("");
+
+ // Handle form submission here
+ console.log("Form submitted:", { orderNumber, countryCode, phoneNumber });
+ };
+
+ return (
+
+
Order Lookup
+
+
+
+ Order Number *
+
+ setOrderNumber(e.target.value)}
+ />
+
+
+
+
+
+
+ Track
+
+
+
+
+ );
+};
+
+export default TrackOrder;
diff --git a/components/ui/accordion.jsx b/components/ui/accordion.jsx
new file mode 100644
index 0000000..155cc88
--- /dev/null
+++ b/components/ui/accordion.jsx
@@ -0,0 +1,43 @@
+"use client"
+
+import * as React from "react"
+import * as AccordionPrimitive from "@radix-ui/react-accordion"
+import { ChevronDownIcon } from "@radix-ui/react-icons"
+
+import { cn } from "@/lib/utils"
+
+const Accordion = AccordionPrimitive.Root
+
+const AccordionItem = React.forwardRef(({ className, ...props }, ref) => (
+
+))
+AccordionItem.displayName = "AccordionItem"
+
+const AccordionTrigger = React.forwardRef(({ className, children, ...props }, ref) => (
+
+ svg]:rotate-180",
+ className
+ )}
+ {...props}>
+ {children}
+
+
+
+))
+AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName
+
+const AccordionContent = React.forwardRef(({ className, children, ...props }, ref) => (
+
+ {children}
+
+))
+AccordionContent.displayName = AccordionPrimitive.Content.displayName
+
+export { Accordion, AccordionItem, AccordionTrigger, AccordionContent }
diff --git a/components/ui/button.jsx b/components/ui/button.jsx
new file mode 100644
index 0000000..ed31cc6
--- /dev/null
+++ b/components/ui/button.jsx
@@ -0,0 +1,48 @@
+import * as React from "react"
+import { Slot } from "@radix-ui/react-slot"
+import { cva } from "class-variance-authority";
+
+import { cn } from "@/lib/utils"
+
+const buttonVariants = cva(
+ "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",
+ {
+ variants: {
+ variant: {
+ default:
+ "bg-primary text-primary-foreground shadow hover:bg-primary/90",
+ destructive:
+ "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
+ outline:
+ "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
+ secondary:
+ "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
+ ghost: "hover:bg-accent hover:text-accent-foreground",
+ link: "text-primary underline-offset-4 hover:underline",
+ },
+ size: {
+ default: "h-9 px-4 py-2",
+ sm: "h-8 rounded-md px-3 text-xs",
+ lg: "h-10 rounded-md px-8",
+ icon: "h-9 w-9",
+ },
+ },
+ defaultVariants: {
+ variant: "default",
+ size: "default",
+ },
+ }
+)
+
+const Button = React.forwardRef(({ className, variant, size, asChild = false, ...props }, ref) => {
+ const Comp = asChild ? Slot : "button"
+ return (
+ ( )
+ );
+})
+Button.displayName = "Button"
+
+export { Button, buttonVariants }
diff --git a/components/ui/card.jsx b/components/ui/card.jsx
new file mode 100644
index 0000000..4af349a
--- /dev/null
+++ b/components/ui/card.jsx
@@ -0,0 +1,50 @@
+import * as React from "react"
+
+import { cn } from "@/lib/utils"
+
+const Card = React.forwardRef(({ className, ...props }, ref) => (
+
+))
+Card.displayName = "Card"
+
+const CardHeader = React.forwardRef(({ className, ...props }, ref) => (
+
+))
+CardHeader.displayName = "CardHeader"
+
+const CardTitle = React.forwardRef(({ className, ...props }, ref) => (
+
+))
+CardTitle.displayName = "CardTitle"
+
+const CardDescription = React.forwardRef(({ className, ...props }, ref) => (
+
+))
+CardDescription.displayName = "CardDescription"
+
+const CardContent = React.forwardRef(({ className, ...props }, ref) => (
+
+))
+CardContent.displayName = "CardContent"
+
+const CardFooter = React.forwardRef(({ className, ...props }, ref) => (
+
+))
+CardFooter.displayName = "CardFooter"
+
+export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }
diff --git a/components/ui/carousel.jsx b/components/ui/carousel.jsx
new file mode 100644
index 0000000..a5bbe26
--- /dev/null
+++ b/components/ui/carousel.jsx
@@ -0,0 +1,194 @@
+"use client";
+import * as React from "react"
+import { ArrowLeftIcon, ArrowRightIcon } from "@radix-ui/react-icons"
+import useEmblaCarousel from "embla-carousel-react";
+
+import { cn } from "@/lib/utils"
+import { Button } from "@/components/ui/button"
+
+const CarouselContext = React.createContext(null)
+
+function useCarousel() {
+ const context = React.useContext(CarouselContext)
+
+ if (!context) {
+ throw new Error("useCarousel must be used within a ")
+ }
+
+ return context
+}
+
+const Carousel = React.forwardRef((
+ {
+ orientation = "horizontal",
+ opts,
+ setApi,
+ plugins,
+ className,
+ children,
+ ...props
+ },
+ ref
+) => {
+ const [carouselRef, api] = useEmblaCarousel({
+ ...opts,
+ axis: orientation === "horizontal" ? "x" : "y",
+ }, plugins)
+ const [canScrollPrev, setCanScrollPrev] = React.useState(false)
+ const [canScrollNext, setCanScrollNext] = React.useState(false)
+
+ const onSelect = React.useCallback((api) => {
+ if (!api) {
+ return
+ }
+
+ setCanScrollPrev(api.canScrollPrev())
+ setCanScrollNext(api.canScrollNext())
+ }, [])
+
+ const scrollPrev = React.useCallback(() => {
+ api?.scrollPrev()
+ }, [api])
+
+ const scrollNext = React.useCallback(() => {
+ api?.scrollNext()
+ }, [api])
+
+ const handleKeyDown = React.useCallback((event) => {
+ if (event.key === "ArrowLeft") {
+ event.preventDefault()
+ scrollPrev()
+ } else if (event.key === "ArrowRight") {
+ event.preventDefault()
+ scrollNext()
+ }
+ }, [scrollPrev, scrollNext])
+
+ React.useEffect(() => {
+ if (!api || !setApi) {
+ return
+ }
+
+ setApi(api)
+ }, [api, setApi])
+
+ React.useEffect(() => {
+ if (!api) {
+ return
+ }
+
+ onSelect(api)
+ api.on("reInit", onSelect)
+ api.on("select", onSelect)
+
+ return () => {
+ api?.off("select", onSelect)
+ };
+ }, [api, onSelect])
+
+ return (
+ (
+
+ {children}
+
+ )
+ );
+})
+Carousel.displayName = "Carousel"
+
+const CarouselContent = React.forwardRef(({ className, ...props }, ref) => {
+ const { carouselRef, orientation } = useCarousel()
+
+ return (
+ ()
+ );
+})
+CarouselContent.displayName = "CarouselContent"
+
+const CarouselItem = React.forwardRef(({ className, ...props }, ref) => {
+ const { orientation } = useCarousel()
+
+ return (
+ (
)
+ );
+})
+CarouselItem.displayName = "CarouselItem"
+
+const CarouselPrevious = React.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
+ const { orientation, scrollPrev, canScrollPrev } = useCarousel()
+
+ return (
+ (
+
+ Previous slide
+ )
+ );
+})
+CarouselPrevious.displayName = "CarouselPrevious"
+
+const CarouselNext = React.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
+ const { orientation, scrollNext, canScrollNext } = useCarousel()
+
+ return (
+ (
+
+ Next slide
+ )
+ );
+})
+CarouselNext.displayName = "CarouselNext"
+
+export { Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext };
diff --git a/components/ui/dropdown-menu.jsx b/components/ui/dropdown-menu.jsx
new file mode 100644
index 0000000..055aa96
--- /dev/null
+++ b/components/ui/dropdown-menu.jsx
@@ -0,0 +1,157 @@
+"use client"
+
+import * as React from "react"
+import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"
+import { cn } from "@/lib/utils"
+import { CheckIcon, ChevronRightIcon, DotFilledIcon } from "@radix-ui/react-icons"
+
+const DropdownMenu = DropdownMenuPrimitive.Root
+
+const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger
+
+const DropdownMenuGroup = DropdownMenuPrimitive.Group
+
+const DropdownMenuPortal = DropdownMenuPrimitive.Portal
+
+const DropdownMenuSub = DropdownMenuPrimitive.Sub
+
+const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup
+
+const DropdownMenuSubTrigger = React.forwardRef(({ className, inset, children, ...props }, ref) => (
+
+ {children}
+
+
+))
+DropdownMenuSubTrigger.displayName =
+ DropdownMenuPrimitive.SubTrigger.displayName
+
+const DropdownMenuSubContent = React.forwardRef(({ className, ...props }, ref) => (
+
+))
+DropdownMenuSubContent.displayName =
+ DropdownMenuPrimitive.SubContent.displayName
+
+const DropdownMenuContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => (
+
+
+
+))
+DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName
+
+const DropdownMenuItem = React.forwardRef(({ className, inset, ...props }, ref) => (
+ svg]:size-4 [&>svg]:shrink-0",
+ inset && "pl-8",
+ className
+ )}
+ {...props} />
+))
+DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName
+
+const DropdownMenuCheckboxItem = React.forwardRef(({ className, children, checked, ...props }, ref) => (
+
+
+
+
+
+
+ {children}
+
+))
+DropdownMenuCheckboxItem.displayName =
+ DropdownMenuPrimitive.CheckboxItem.displayName
+
+const DropdownMenuRadioItem = React.forwardRef(({ className, children, ...props }, ref) => (
+
+
+
+
+
+
+ {children}
+
+))
+DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName
+
+const DropdownMenuLabel = React.forwardRef(({ className, inset, ...props }, ref) => (
+
+))
+DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName
+
+const DropdownMenuSeparator = React.forwardRef(({ className, ...props }, ref) => (
+
+))
+DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName
+
+const DropdownMenuShortcut = ({
+ className,
+ ...props
+}) => {
+ return (
+ ( )
+ );
+}
+DropdownMenuShortcut.displayName = "DropdownMenuShortcut"
+
+export {
+ DropdownMenu,
+ DropdownMenuTrigger,
+ DropdownMenuContent,
+ DropdownMenuItem,
+ DropdownMenuCheckboxItem,
+ DropdownMenuRadioItem,
+ DropdownMenuLabel,
+ DropdownMenuSeparator,
+ DropdownMenuShortcut,
+ DropdownMenuGroup,
+ DropdownMenuPortal,
+ DropdownMenuSub,
+ DropdownMenuSubContent,
+ DropdownMenuSubTrigger,
+ DropdownMenuRadioGroup,
+}
diff --git a/components/ui/input.jsx b/components/ui/input.jsx
new file mode 100644
index 0000000..41ec05e
--- /dev/null
+++ b/components/ui/input.jsx
@@ -0,0 +1,19 @@
+import * as React from "react"
+
+import { cn } from "@/lib/utils"
+
+const Input = React.forwardRef(({ className, type, ...props }, ref) => {
+ return (
+ ( )
+ );
+})
+Input.displayName = "Input"
+
+export { Input }
diff --git a/components/ui/navigation-menu.jsx b/components/ui/navigation-menu.jsx
new file mode 100644
index 0000000..55ddeb8
--- /dev/null
+++ b/components/ui/navigation-menu.jsx
@@ -0,0 +1,104 @@
+import * as React from "react"
+import { ChevronDownIcon } from "@radix-ui/react-icons"
+import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu"
+import { cva } from "class-variance-authority"
+
+import { cn } from "@/lib/utils"
+
+const NavigationMenu = React.forwardRef(({ className, children, ...props }, ref) => (
+
+ {children}
+
+
+))
+NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName
+
+const NavigationMenuList = React.forwardRef(({ className, ...props }, ref) => (
+
+))
+NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName
+
+const NavigationMenuItem = NavigationMenuPrimitive.Item
+
+const navigationMenuTriggerStyle = cva(
+ "group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"
+)
+
+const NavigationMenuTrigger = React.forwardRef(({ className, children, ...props }, ref) => (
+
+ {children}{" "}
+
+
+))
+NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName
+
+const NavigationMenuContent = React.forwardRef(({ className, ...props }, ref) => (
+
+))
+NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName
+
+const NavigationMenuLink = NavigationMenuPrimitive.Link
+
+const NavigationMenuViewport = React.forwardRef(({ className, ...props }, ref) => (
+
+
+
+))
+NavigationMenuViewport.displayName =
+ NavigationMenuPrimitive.Viewport.displayName
+
+const NavigationMenuIndicator = React.forwardRef(({ className, ...props }, ref) => (
+
+
+
+))
+NavigationMenuIndicator.displayName =
+ NavigationMenuPrimitive.Indicator.displayName
+
+export {
+ navigationMenuTriggerStyle,
+ NavigationMenu,
+ NavigationMenuList,
+ NavigationMenuItem,
+ NavigationMenuContent,
+ NavigationMenuTrigger,
+ NavigationMenuLink,
+ NavigationMenuIndicator,
+ NavigationMenuViewport,
+}
diff --git a/components/ui/skeleton.jsx b/components/ui/skeleton.jsx
new file mode 100644
index 0000000..9c864f3
--- /dev/null
+++ b/components/ui/skeleton.jsx
@@ -0,0 +1,14 @@
+import { cn } from "@/lib/utils"
+
+function Skeleton({
+ className,
+ ...props
+}) {
+ return (
+ (
)
+ );
+}
+
+export { Skeleton }
diff --git a/jsconfig.json b/jsconfig.json
new file mode 100644
index 0000000..2a2e4b3
--- /dev/null
+++ b/jsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "paths": {
+ "@/*": ["./*"]
+ }
+ }
+}
diff --git a/lib/utils.js b/lib/utils.js
new file mode 100644
index 0000000..b20bf01
--- /dev/null
+++ b/lib/utils.js
@@ -0,0 +1,6 @@
+import { clsx } from "clsx";
+import { twMerge } from "tailwind-merge"
+
+export function cn(...inputs) {
+ return twMerge(clsx(inputs));
+}
diff --git a/next.config.mjs b/next.config.mjs
new file mode 100644
index 0000000..e46f37c
--- /dev/null
+++ b/next.config.mjs
@@ -0,0 +1,8 @@
+/** @type {import('next').NextConfig} */
+const nextConfig = {
+ images: {
+ domains: ["127.0.0.1","admin.guptarudraksha.com"],
+ },
+};
+
+export default nextConfig;
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..c9c58a4
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,6902 @@
+{
+ "name": "rudra",
+ "version": "0.1.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "rudra",
+ "version": "0.1.0",
+ "dependencies": {
+ "@paypal/react-paypal-js": "^8.8.1",
+ "@radix-ui/react-accordion": "^1.2.0",
+ "@radix-ui/react-dropdown-menu": "^2.1.5",
+ "@radix-ui/react-icons": "^1.3.0",
+ "@radix-ui/react-navigation-menu": "^1.2.0",
+ "@radix-ui/react-slot": "^1.1.0",
+ "@react-google-maps/api": "^2.19.3",
+ "@tailwindcss/aspect-ratio": "^0.4.2",
+ "axios": "^1.7.9",
+ "class-variance-authority": "^0.7.0",
+ "clsx": "^2.1.1",
+ "embla-carousel-autoplay": "^8.3.0",
+ "embla-carousel-react": "^8.3.0",
+ "framer-motion": "^12.0.6",
+ "lucide-react": "^0.445.0",
+ "next": "14.2.13",
+ "react": "^18",
+ "react-dom": "^18",
+ "react-hot-toast": "^2.4.1",
+ "react-icons": "^5.3.0",
+ "tailwind-merge": "^2.5.2",
+ "tailwindcss-animate": "^1.0.7"
+ },
+ "devDependencies": {
+ "eslint": "^8",
+ "eslint-config-next": "14.2.13",
+ "postcss": "^8",
+ "tailwindcss": "^3.4.1"
+ }
+ },
+ "node_modules/@alloc/quick-lru": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
+ "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.11.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz",
+ "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
+ "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "@floating-ui/utils": "^0.2.9"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "@floating-ui/core": "^1.6.0",
+ "@floating-ui/utils": "^0.2.9"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "@floating-ui/dom": "^1.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
+ }
+ },
+ "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=="
+ },
+ "node_modules/@googlemaps/js-api-loader": {
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/@googlemaps/js-api-loader/-/js-api-loader-1.16.2.tgz",
+ "integrity": "sha512-psGw5u0QM6humao48Hn4lrChOM2/rA43ZCm3tKK9qQsEj1/VzqkCqnvGfEOshDbBQflydfaRovbKwZMF4AyqbA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
+ }
+ },
+ "node_modules/@googlemaps/markerclusterer": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/@googlemaps/markerclusterer/-/markerclusterer-2.5.3.tgz",
+ "integrity": "sha512-x7lX0R5yYOoiNectr10wLgCBasNcXFHiADIBdmn7jQllF2B5ENQw5XtZK+hIw4xnV0Df0xhN4LN98XqA5jaiOw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "supercluster": "^8.0.1"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
+ "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
+ "deprecated": "Use @eslint/config-array instead",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^2.0.3",
+ "debug": "^4.3.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
+ "deprecated": "Use @eslint/object-schema instead",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@next/env": {
+ "version": "14.2.13",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.13.tgz",
+ "integrity": "sha512-s3lh6K8cbW1h5Nga7NNeXrbe0+2jIIYK9YaA9T7IufDWnZpozdFUp6Hf0d5rNWUKu4fEuSX2rCKlGjCrtylfDw==",
+ "license": "MIT"
+ },
+ "node_modules/@next/eslint-plugin-next": {
+ "version": "14.2.13",
+ "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.13.tgz",
+ "integrity": "sha512-z8Mk0VljxhIzsSiZUSdt3wp+t2lKd+jk5a9Jsvh3zDGkItgDMfjv/ZbET6HsxEl/fSihVoHGsXV6VLyDH0lfTQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "glob": "10.3.10"
+ }
+ },
+ "node_modules/@next/swc-darwin-arm64": {
+ "version": "14.2.13",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.13.tgz",
+ "integrity": "sha512-IkAmQEa2Htq+wHACBxOsslt+jMoV3msvxCn0WFSfJSkv/scy+i/EukBKNad36grRxywaXUYJc9mxEGkeIs8Bzg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-darwin-x64": {
+ "version": "14.2.13",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.13.tgz",
+ "integrity": "sha512-Dv1RBGs2TTjkwEnFMVL5XIfJEavnLqqwYSD6LXgTPdEy/u6FlSrLBSSfe1pcfqhFEXRAgVL3Wpjibe5wXJzWog==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-gnu": {
+ "version": "14.2.13",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.13.tgz",
+ "integrity": "sha512-yB1tYEFFqo4ZNWkwrJultbsw7NPAAxlPXURXioRl9SdW6aIefOLS+0TEsKrWBtbJ9moTDgU3HRILL6QBQnMevg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-musl": {
+ "version": "14.2.13",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.13.tgz",
+ "integrity": "sha512-v5jZ/FV/eHGoWhMKYrsAweQ7CWb8xsWGM/8m1mwwZQ/sutJjoFaXchwK4pX8NqwImILEvQmZWyb8pPTcP7htWg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-gnu": {
+ "version": "14.2.13",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.13.tgz",
+ "integrity": "sha512-aVc7m4YL7ViiRv7SOXK3RplXzOEe/qQzRA5R2vpXboHABs3w8vtFslGTz+5tKiQzWUmTmBNVW0UQdhkKRORmGA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-musl": {
+ "version": "14.2.13",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.13.tgz",
+ "integrity": "sha512-4wWY7/OsSaJOOKvMsu1Teylku7vKyTuocvDLTZQq0TYv9OjiYYWt63PiE1nTuZnqQ4RPvME7Xai+9enoiN0Wrg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-arm64-msvc": {
+ "version": "14.2.13",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.13.tgz",
+ "integrity": "sha512-uP1XkqCqV2NVH9+g2sC7qIw+w2tRbcMiXFEbMihkQ8B1+V6m28sshBwAB0SDmOe0u44ne1vFU66+gx/28RsBVQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-ia32-msvc": {
+ "version": "14.2.13",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.13.tgz",
+ "integrity": "sha512-V26ezyjPqQpDBV4lcWIh8B/QICQ4v+M5Bo9ykLN+sqeKKBxJVDpEc6biDVyluTXTC40f5IqCU0ttth7Es2ZuMw==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-x64-msvc": {
+ "version": "14.2.13",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.13.tgz",
+ "integrity": "sha512-WwzOEAFBGhlDHE5Z73mNU8CO8mqMNLqaG+AO9ETmzdCQlJhVtWZnOl2+rqgVQS+YHunjOWptdFmNfbpwcUuEsw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nolyfill/is-core-module": {
+ "version": "1.0.39",
+ "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz",
+ "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.4.0"
+ }
+ },
+ "node_modules/@paypal/paypal-js": {
+ "version": "8.1.3",
+ "resolved": "https://registry.npmjs.org/@paypal/paypal-js/-/paypal-js-8.1.3.tgz",
+ "integrity": "sha512-DBqg0e0Q49RvW0rTkJUCR4BCGt9pz81kUwq8oKOBZBlBd7okA56NvG0ViTqdFLTRpbS1tnbfod4ePCgOq/nQyA==",
+ "dependencies": {
+ "promise-polyfill": "^8.3.0"
+ }
+ },
+ "node_modules/@paypal/react-paypal-js": {
+ "version": "8.8.1",
+ "resolved": "https://registry.npmjs.org/@paypal/react-paypal-js/-/react-paypal-js-8.8.1.tgz",
+ "integrity": "sha512-Nz/1XkW71NbcV1RTp++9rICTV2xhnyue9iHPtO5ZGVjkwYaBkGeDO2WWumpt7TAFy1Eyh2reFGJ4NNEeYi/akw==",
+ "dependencies": {
+ "@paypal/paypal-js": "^8.1.2",
+ "@paypal/sdk-constants": "^1.0.122"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17 || ^18 || ^19",
+ "react-dom": "^16.8.0 || ^17 || ^18 || ^19"
+ }
+ },
+ "node_modules/@paypal/sdk-constants": {
+ "version": "1.0.151",
+ "resolved": "https://registry.npmjs.org/@paypal/sdk-constants/-/sdk-constants-1.0.151.tgz",
+ "integrity": "sha512-mmGLiMt7BYAKtoK1gxhUakvP1ua7lnbCR7LAaHsPc1KETWw9yMMARlpVEdfz9XGHrbzzNQep6U02zUtzXuncIA==",
+ "dependencies": {
+ "hi-base32": "^0.5.0"
+ }
+ },
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@radix-ui/primitive": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz",
+ "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==",
+ "license": "MIT"
+ },
+ "node_modules/@radix-ui/react-accordion": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.0.tgz",
+ "integrity": "sha512-HJOzSX8dQqtsp/3jVxCU3CXEONF7/2jlGAB28oX8TTw1Dz8JYbEI1UcL8355PuLBE41/IRRMvCw7VkiK/jcUOQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.0",
+ "@radix-ui/react-collapsible": "1.1.0",
+ "@radix-ui/react-collection": "1.1.0",
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-context": "1.1.0",
+ "@radix-ui/react-direction": "1.1.0",
+ "@radix-ui/react-id": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@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-arrow": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.1.tgz",
+ "integrity": "sha512-NaVpZfmv8SKeZbn4ijN2V3jlHA9ngBG16VnIIm22nUR0Yk8KUALyBxT3KYEUnNuch9sTE8UTsS3whzBgKOL30w==",
+ "dependencies": {
+ "@radix-ui/react-primitive": "2.0.1"
+ },
+ "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-arrow/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==",
+ "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-arrow/node_modules/@radix-ui/react-primitive": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.1.tgz",
+ "integrity": "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==",
+ "dependencies": {
+ "@radix-ui/react-slot": "1.1.1"
+ },
+ "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-arrow/node_modules/@radix-ui/react-slot": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.1.tgz",
+ "integrity": "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==",
+ "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.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.0.tgz",
+ "integrity": "sha512-zQY7Epa8sTL0mq4ajSJpjgn2YmCgyrG7RsQgLp3C0LQVkG7+Tf6Pv1CeNWZLyqMjhdPkBa5Lx7wYBeSu7uCSTA==",
+ "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-id": "1.1.0",
+ "@radix-ui/react-presence": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-use-controllable-state": "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-collection": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.0.tgz",
+ "integrity": "sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-context": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-slot": "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-compose-refs": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz",
+ "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==",
+ "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-context": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz",
+ "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==",
+ "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-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": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-dismissable-layer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.0.tgz",
+ "integrity": "sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==",
+ "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/react-use-callback-ref": "1.1.0",
+ "@radix-ui/react-use-escape-keydown": "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-dropdown-menu": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.5.tgz",
+ "integrity": "sha512-50ZmEFL1kOuLalPKHrLWvPFMons2fGx9TqQCWlPwDVpbAnaUJ1g4XNcKqFNMQymYU0kKWR4MDDi+9vUQBGFgcQ==",
+ "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.5",
+ "@radix-ui/react-primitive": "2.0.1",
+ "@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-dropdown-menu/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=="
+ },
+ "node_modules/@radix-ui/react-dropdown-menu/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==",
+ "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-dropdown-menu/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==",
+ "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-dropdown-menu/node_modules/@radix-ui/react-primitive": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.1.tgz",
+ "integrity": "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==",
+ "dependencies": {
+ "@radix-ui/react-slot": "1.1.1"
+ },
+ "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-dropdown-menu/node_modules/@radix-ui/react-slot": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.1.tgz",
+ "integrity": "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==",
+ "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-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==",
+ "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-focus-scope": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.1.tgz",
+ "integrity": "sha512-01omzJAYRxXdG2/he/+xy+c8a8gCydoQ1yOxnWNcRhrrBW5W+RQJ22EK1SaO8tb3WoUsuEw7mJjBozPzihDFjA==",
+ "dependencies": {
+ "@radix-ui/react-compose-refs": "1.1.1",
+ "@radix-ui/react-primitive": "2.0.1",
+ "@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-focus-scope/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==",
+ "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-focus-scope/node_modules/@radix-ui/react-primitive": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.1.tgz",
+ "integrity": "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==",
+ "dependencies": {
+ "@radix-ui/react-slot": "1.1.1"
+ },
+ "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-scope/node_modules/@radix-ui/react-slot": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.1.tgz",
+ "integrity": "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==",
+ "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-icons": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.0.tgz",
+ "integrity": "sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "^16.x || ^17.x || ^18.x"
+ }
+ },
+ "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"
+ },
+ "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-menu": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.5.tgz",
+ "integrity": "sha512-uH+3w5heoMJtqVCgYOtYVMECk1TOrkUn0OG0p5MqXC0W2ppcuVeESbou8PTHoqAjbdTEK19AGXBWcEtR5WpEQg==",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.1",
+ "@radix-ui/react-collection": "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-dismissable-layer": "1.1.4",
+ "@radix-ui/react-focus-guards": "1.1.1",
+ "@radix-ui/react-focus-scope": "1.1.1",
+ "@radix-ui/react-id": "1.1.0",
+ "@radix-ui/react-popper": "1.2.1",
+ "@radix-ui/react-portal": "1.1.3",
+ "@radix-ui/react-presence": "1.1.2",
+ "@radix-ui/react-primitive": "2.0.1",
+ "@radix-ui/react-roving-focus": "1.1.1",
+ "@radix-ui/react-slot": "1.1.1",
+ "@radix-ui/react-use-callback-ref": "1.1.0",
+ "aria-hidden": "^1.2.4",
+ "react-remove-scroll": "^2.6.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-menu/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=="
+ },
+ "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-collection": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.1.tgz",
+ "integrity": "sha512-LwT3pSho9Dljg+wY2KN2mrrh6y3qELfftINERIzBUO9e0N+t0oMTyn3k9iv+ZqgrwGkRnLpNJrsMv9BZlt2yuA==",
+ "dependencies": {
+ "@radix-ui/react-compose-refs": "1.1.1",
+ "@radix-ui/react-context": "1.1.1",
+ "@radix-ui/react-primitive": "2.0.1",
+ "@radix-ui/react-slot": "1.1.1"
+ },
+ "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-menu/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==",
+ "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-menu/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==",
+ "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-menu/node_modules/@radix-ui/react-dismissable-layer": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.4.tgz",
+ "integrity": "sha512-XDUI0IVYVSwjMXxM6P4Dfti7AH+Y4oS/TB+sglZ/EXc7cqLwGAmp1NlMrcUjj7ks6R5WTZuWKv44FBbLpwU3sA==",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.1",
+ "@radix-ui/react-compose-refs": "1.1.1",
+ "@radix-ui/react-primitive": "2.0.1",
+ "@radix-ui/react-use-callback-ref": "1.1.0",
+ "@radix-ui/react-use-escape-keydown": "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-menu/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==",
+ "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-menu/node_modules/@radix-ui/react-primitive": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.1.tgz",
+ "integrity": "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==",
+ "dependencies": {
+ "@radix-ui/react-slot": "1.1.1"
+ },
+ "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-menu/node_modules/@radix-ui/react-slot": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.1.tgz",
+ "integrity": "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==",
+ "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-navigation-menu": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.0.tgz",
+ "integrity": "sha512-OQ8tcwAOR0DhPlSY3e4VMXeHiol7la4PPdJWhhwJiJA+NLX0SaCaonOkRnI3gCDHoZ7Fo7bb/G6q25fRM2Y+3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.0",
+ "@radix-ui/react-collection": "1.1.0",
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-context": "1.1.0",
+ "@radix-ui/react-direction": "1.1.0",
+ "@radix-ui/react-dismissable-layer": "1.1.0",
+ "@radix-ui/react-id": "1.1.0",
+ "@radix-ui/react-presence": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@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"
+ },
+ "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.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.1.tgz",
+ "integrity": "sha512-3kn5Me69L+jv82EKRuQCXdYyf1DqHwD2U/sxoNgBGCB7K9TRc3bQamQ+5EPM9EvyPdli0W41sROd+ZU1dTCztw==",
+ "dependencies": {
+ "@floating-ui/react-dom": "^2.0.0",
+ "@radix-ui/react-arrow": "1.1.1",
+ "@radix-ui/react-compose-refs": "1.1.1",
+ "@radix-ui/react-context": "1.1.1",
+ "@radix-ui/react-primitive": "2.0.1",
+ "@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-popper/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==",
+ "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-popper/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==",
+ "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-popper/node_modules/@radix-ui/react-primitive": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.1.tgz",
+ "integrity": "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==",
+ "dependencies": {
+ "@radix-ui/react-slot": "1.1.1"
+ },
+ "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/node_modules/@radix-ui/react-slot": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.1.tgz",
+ "integrity": "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==",
+ "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-portal": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.3.tgz",
+ "integrity": "sha512-NciRqhXnGojhT93RPyDaMPfLH3ZSl4jjIFbZQ1b/vxvZEdHsBZ49wP9w8L3HzUQwep01LcWtkUvm0OVB5JAHTw==",
+ "dependencies": {
+ "@radix-ui/react-primitive": "2.0.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-portal/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==",
+ "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-portal/node_modules/@radix-ui/react-primitive": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.1.tgz",
+ "integrity": "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==",
+ "dependencies": {
+ "@radix-ui/react-slot": "1.1.1"
+ },
+ "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-portal/node_modules/@radix-ui/react-slot": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.1.tgz",
+ "integrity": "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==",
+ "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-presence": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.0.tgz",
+ "integrity": "sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-compose-refs": "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-primitive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz",
+ "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-slot": "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-roving-focus": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.1.tgz",
+ "integrity": "sha512-QE1RoxPGJ/Nm8Qmk0PxP8ojmoaS67i0s7hVssS7KuI2FQoc/uzVlZsqKfQvxPE6D8hICCPHJ4D88zNhT3OOmkw==",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.1",
+ "@radix-ui/react-collection": "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-id": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.1",
+ "@radix-ui/react-use-callback-ref": "1.1.0",
+ "@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-roving-focus/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=="
+ },
+ "node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-collection": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.1.tgz",
+ "integrity": "sha512-LwT3pSho9Dljg+wY2KN2mrrh6y3qELfftINERIzBUO9e0N+t0oMTyn3k9iv+ZqgrwGkRnLpNJrsMv9BZlt2yuA==",
+ "dependencies": {
+ "@radix-ui/react-compose-refs": "1.1.1",
+ "@radix-ui/react-context": "1.1.1",
+ "@radix-ui/react-primitive": "2.0.1",
+ "@radix-ui/react-slot": "1.1.1"
+ },
+ "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/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==",
+ "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-roving-focus/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==",
+ "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-roving-focus/node_modules/@radix-ui/react-primitive": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.1.tgz",
+ "integrity": "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==",
+ "dependencies": {
+ "@radix-ui/react-slot": "1.1.1"
+ },
+ "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/node_modules/@radix-ui/react-slot": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.1.tgz",
+ "integrity": "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==",
+ "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-slot": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz",
+ "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-compose-refs": "1.1.0"
+ },
+ "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-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": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "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"
+ },
+ "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-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"
+ },
+ "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-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": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "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": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "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==",
+ "dependencies": {
+ "@radix-ui/rect": "1.1.0"
+ },
+ "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-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==",
+ "dependencies": {
+ "@radix-ui/react-use-layout-effect": "1.1.0"
+ },
+ "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": {
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-primitive": "2.0.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/rect": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz",
+ "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg=="
+ },
+ "node_modules/@react-google-maps/api": {
+ "version": "2.19.3",
+ "resolved": "https://registry.npmjs.org/@react-google-maps/api/-/api-2.19.3.tgz",
+ "integrity": "sha512-jiLqvuOt5lOowkLeq7d077AByTyJp+s6hZVlLhlq7SBacBD37aUNpXBz2OsazfeR6Aw4a+9RRhAEjEFvrR1f5A==",
+ "license": "MIT",
+ "dependencies": {
+ "@googlemaps/js-api-loader": "1.16.2",
+ "@googlemaps/markerclusterer": "2.5.3",
+ "@react-google-maps/infobox": "2.19.2",
+ "@react-google-maps/marker-clusterer": "2.19.2",
+ "@types/google.maps": "3.55.2",
+ "invariant": "2.2.4"
+ },
+ "peerDependencies": {
+ "react": "^16.8 || ^17 || ^18",
+ "react-dom": "^16.8 || ^17 || ^18"
+ }
+ },
+ "node_modules/@react-google-maps/infobox": {
+ "version": "2.19.2",
+ "resolved": "https://registry.npmjs.org/@react-google-maps/infobox/-/infobox-2.19.2.tgz",
+ "integrity": "sha512-6wvBqeJsQ/eFSvoxg+9VoncQvNoVCdmxzxRpLvmjPD+nNC6mHM0vJH1xSqaKijkMrfLJT0nfkTGpovrF896jwg==",
+ "license": "MIT"
+ },
+ "node_modules/@react-google-maps/marker-clusterer": {
+ "version": "2.19.2",
+ "resolved": "https://registry.npmjs.org/@react-google-maps/marker-clusterer/-/marker-clusterer-2.19.2.tgz",
+ "integrity": "sha512-x9ibmsP0ZVqzyCo1Pitbw+4b6iEXRw/r1TCy3vOUR3eKrzWLnHYZMR325BkZW2r8fnuWE/V3Fp4QZOP9qYORCw==",
+ "license": "MIT"
+ },
+ "node_modules/@rtsao/scc": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz",
+ "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@rushstack/eslint-patch": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz",
+ "integrity": "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@swc/counter": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz",
+ "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@swc/helpers": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz",
+ "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@swc/counter": "^0.1.3",
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@tailwindcss/aspect-ratio": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/aspect-ratio/-/aspect-ratio-0.4.2.tgz",
+ "integrity": "sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "tailwindcss": ">=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1"
+ }
+ },
+ "node_modules/@types/google.maps": {
+ "version": "3.55.2",
+ "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.55.2.tgz",
+ "integrity": "sha512-JcTwzkxskR8DN/nnX96Pie3gGN3WHiPpuxzuQ9z3516o1bB243d8w8DHUJ8BohuzoT1o3HUFta2ns/mkZC8KRw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/json5": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
+ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.6.0.tgz",
+ "integrity": "sha512-UOaz/wFowmoh2G6Mr9gw60B1mm0MzUtm6Ic8G2yM1Le6gyj5Loi/N+O5mocugRGY+8OeeKmkMmbxNqUCq3B4Sg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.10.0",
+ "@typescript-eslint/scope-manager": "8.6.0",
+ "@typescript-eslint/type-utils": "8.6.0",
+ "@typescript-eslint/utils": "8.6.0",
+ "@typescript-eslint/visitor-keys": "8.6.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.3.1",
+ "natural-compare": "^1.4.0",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0",
+ "eslint": "^8.57.0 || ^9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.6.0.tgz",
+ "integrity": "sha512-eQcbCuA2Vmw45iGfcyG4y6rS7BhWfz9MQuk409WD47qMM+bKCGQWXxvoOs1DUp+T7UBMTtRTVT+kXr7Sh4O9Ow==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "8.6.0",
+ "@typescript-eslint/types": "8.6.0",
+ "@typescript-eslint/typescript-estree": "8.6.0",
+ "@typescript-eslint/visitor-keys": "8.6.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.6.0.tgz",
+ "integrity": "sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.6.0",
+ "@typescript-eslint/visitor-keys": "8.6.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.6.0.tgz",
+ "integrity": "sha512-dtePl4gsuenXVwC7dVNlb4mGDcKjDT/Ropsk4za/ouMBPplCLyznIaR+W65mvCvsyS97dymoBRrioEXI7k0XIg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "8.6.0",
+ "@typescript-eslint/utils": "8.6.0",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.6.0.tgz",
+ "integrity": "sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.6.0.tgz",
+ "integrity": "sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@typescript-eslint/types": "8.6.0",
+ "@typescript-eslint/visitor-keys": "8.6.0",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.3.2",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.6.0.tgz",
+ "integrity": "sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@typescript-eslint/scope-manager": "8.6.0",
+ "@typescript-eslint/types": "8.6.0",
+ "@typescript-eslint/typescript-estree": "8.6.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.6.0.tgz",
+ "integrity": "sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.6.0",
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
+ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/acorn": {
+ "version": "8.12.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
+ "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
+ "license": "MIT"
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "license": "ISC",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/arg": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
+ "license": "MIT"
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true,
+ "license": "Python-2.0"
+ },
+ "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==",
+ "dependencies": {
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/aria-query": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz",
+ "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "deep-equal": "^2.0.5"
+ }
+ },
+ "node_modules/array-buffer-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
+ "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "is-array-buffer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-includes": {
+ "version": "3.1.8",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz",
+ "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-object-atoms": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
+ "is-string": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.findlast": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz",
+ "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "es-shim-unscopables": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.findlastindex": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz",
+ "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "es-shim-unscopables": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flat": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz",
+ "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flatmap": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz",
+ "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.tosorted": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz",
+ "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.3",
+ "es-errors": "^1.3.0",
+ "es-shim-unscopables": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/arraybuffer.prototype.slice": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
+ "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.22.3",
+ "es-errors": "^1.2.1",
+ "get-intrinsic": "^1.2.3",
+ "is-array-buffer": "^3.0.4",
+ "is-shared-array-buffer": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/ast-types-flow": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz",
+ "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/axe-core": {
+ "version": "4.10.0",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz",
+ "integrity": "sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==",
+ "dev": true,
+ "license": "MPL-2.0",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/axios": {
+ "version": "1.7.9",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz",
+ "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==",
+ "dependencies": {
+ "follow-redirects": "^1.15.6",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "node_modules/axobject-query": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
+ "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "license": "MIT"
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/busboy": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
+ "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
+ "dependencies": {
+ "streamsearch": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=10.16.0"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase-css": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
+ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001662",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001662.tgz",
+ "integrity": "sha512-sgMUVwLmGseH8ZIrm1d51UbrhqMCH3jvS7gF/M6byuHOnKyLOBL7W8yz5V02OHwgLGA36o/AFhWzzh4uc5aqTA==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chokidar/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/class-variance-authority": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.0.tgz",
+ "integrity": "sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "clsx": "2.0.0"
+ },
+ "funding": {
+ "url": "https://joebell.co.uk"
+ }
+ },
+ "node_modules/class-variance-authority/node_modules/clsx": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz",
+ "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/client-only": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
+ "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==",
+ "license": "MIT"
+ },
+ "node_modules/clsx": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "license": "MIT"
+ },
+ "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==",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/commander": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "license": "MIT",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
+ "peer": true
+ },
+ "node_modules/damerau-levenshtein": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
+ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
+ "dev": true,
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/data-view-buffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
+ "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz",
+ "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-offset": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz",
+ "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/deep-equal": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz",
+ "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.0",
+ "call-bind": "^1.0.5",
+ "es-get-iterator": "^1.1.3",
+ "get-intrinsic": "^1.2.2",
+ "is-arguments": "^1.1.1",
+ "is-array-buffer": "^3.0.2",
+ "is-date-object": "^1.0.5",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "isarray": "^2.0.5",
+ "object-is": "^1.1.5",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.4",
+ "regexp.prototype.flags": "^1.5.1",
+ "side-channel": "^1.0.4",
+ "which-boxed-primitive": "^1.0.2",
+ "which-collection": "^1.0.1",
+ "which-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "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=="
+ },
+ "node_modules/didyoumean": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/dlv": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
+ "license": "MIT"
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "license": "MIT"
+ },
+ "node_modules/embla-carousel": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.3.0.tgz",
+ "integrity": "sha512-Ve8dhI4w28qBqR8J+aMtv7rLK89r1ZA5HocwFz6uMB/i5EiC7bGI7y+AM80yAVUJw3qqaZYK7clmZMUR8kM3UA==",
+ "license": "MIT"
+ },
+ "node_modules/embla-carousel-autoplay": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/embla-carousel-autoplay/-/embla-carousel-autoplay-8.3.0.tgz",
+ "integrity": "sha512-h7DFJLf9uQD+XDxr1NwA3/oFIjsnj/iED2RjET5u6/svMec46IbF1CYPhmB5Q/1Fc0WkcvhPpsEsrtVXQLxNzA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "embla-carousel": "8.3.0"
+ }
+ },
+ "node_modules/embla-carousel-react": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/embla-carousel-react/-/embla-carousel-react-8.3.0.tgz",
+ "integrity": "sha512-P1FlinFDcIvggcErRjNuVqnUR8anyo8vLMIH8Rthgofw7Nj8qTguCa2QjFAbzxAUTQTPNNjNL7yt0BGGinVdFw==",
+ "license": "MIT",
+ "dependencies": {
+ "embla-carousel": "8.3.0",
+ "embla-carousel-reactive-utils": "8.3.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.1 || ^18.0.0"
+ }
+ },
+ "node_modules/embla-carousel-reactive-utils": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.3.0.tgz",
+ "integrity": "sha512-EYdhhJ302SC4Lmkx8GRsp0sjUhEN4WyFXPOk0kGu9OXZSRMmcBlRgTvHcq8eKJE1bXWBsOi1T83B+BSSVZSmwQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "embla-carousel": "8.3.0"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "license": "MIT"
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.17.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
+ "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/es-abstract": {
+ "version": "1.23.3",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
+ "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "arraybuffer.prototype.slice": "^1.0.3",
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "data-view-buffer": "^1.0.1",
+ "data-view-byte-length": "^1.0.1",
+ "data-view-byte-offset": "^1.0.0",
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "es-set-tostringtag": "^2.0.3",
+ "es-to-primitive": "^1.2.1",
+ "function.prototype.name": "^1.1.6",
+ "get-intrinsic": "^1.2.4",
+ "get-symbol-description": "^1.0.2",
+ "globalthis": "^1.0.3",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2",
+ "has-proto": "^1.0.3",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.2",
+ "internal-slot": "^1.0.7",
+ "is-array-buffer": "^3.0.4",
+ "is-callable": "^1.2.7",
+ "is-data-view": "^1.0.1",
+ "is-negative-zero": "^2.0.3",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.3",
+ "is-string": "^1.0.7",
+ "is-typed-array": "^1.1.13",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.13.1",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.5",
+ "regexp.prototype.flags": "^1.5.2",
+ "safe-array-concat": "^1.1.2",
+ "safe-regex-test": "^1.0.3",
+ "string.prototype.trim": "^1.2.9",
+ "string.prototype.trimend": "^1.0.8",
+ "string.prototype.trimstart": "^1.0.8",
+ "typed-array-buffer": "^1.0.2",
+ "typed-array-byte-length": "^1.0.1",
+ "typed-array-byte-offset": "^1.0.2",
+ "typed-array-length": "^1.0.6",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.15"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-get-iterator": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz",
+ "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.3",
+ "has-symbols": "^1.0.3",
+ "is-arguments": "^1.1.1",
+ "is-map": "^2.0.2",
+ "is-set": "^2.0.2",
+ "is-string": "^1.0.7",
+ "isarray": "^2.0.5",
+ "stop-iteration-iterator": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-iterator-helpers": {
+ "version": "1.0.19",
+ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz",
+ "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.3",
+ "es-errors": "^1.3.0",
+ "es-set-tostringtag": "^2.0.3",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "globalthis": "^1.0.3",
+ "has-property-descriptors": "^1.0.2",
+ "has-proto": "^1.0.3",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.7",
+ "iterator.prototype": "^1.1.2",
+ "safe-array-concat": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
+ "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz",
+ "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.2.4",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-shim-unscopables": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz",
+ "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.0"
+ }
+ },
+ "node_modules/es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
+ "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.4",
+ "@eslint/js": "8.57.1",
+ "@humanwhocodes/config-array": "^0.13.0",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "@ungap/structured-clone": "^1.2.0",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
+ "esquery": "^1.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-config-next": {
+ "version": "14.2.13",
+ "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.13.tgz",
+ "integrity": "sha512-aro1EKAoyYchnO/3Tlo91hnNBO7QO7qnv/79MAFC+4Jq8TdUVKQlht5d2F+YjrePjdpOvfL+mV9JPfyYNwkk1g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@next/eslint-plugin-next": "14.2.13",
+ "@rushstack/eslint-patch": "^1.3.3",
+ "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0",
+ "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0",
+ "eslint-import-resolver-node": "^0.3.6",
+ "eslint-import-resolver-typescript": "^3.5.2",
+ "eslint-plugin-import": "^2.28.1",
+ "eslint-plugin-jsx-a11y": "^6.7.1",
+ "eslint-plugin-react": "^7.33.2",
+ "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705"
+ },
+ "peerDependencies": {
+ "eslint": "^7.23.0 || ^8.0.0",
+ "typescript": ">=3.3.1"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-import-resolver-node": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
+ "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^3.2.7",
+ "is-core-module": "^2.13.0",
+ "resolve": "^1.22.4"
+ }
+ },
+ "node_modules/eslint-import-resolver-node/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-import-resolver-typescript": {
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz",
+ "integrity": "sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@nolyfill/is-core-module": "1.0.39",
+ "debug": "^4.3.5",
+ "enhanced-resolve": "^5.15.0",
+ "eslint-module-utils": "^2.8.1",
+ "fast-glob": "^3.3.2",
+ "get-tsconfig": "^4.7.5",
+ "is-bun-module": "^1.0.2",
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts"
+ },
+ "peerDependencies": {
+ "eslint": "*",
+ "eslint-plugin-import": "*",
+ "eslint-plugin-import-x": "*"
+ },
+ "peerDependenciesMeta": {
+ "eslint-plugin-import": {
+ "optional": true
+ },
+ "eslint-plugin-import-x": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-module-utils": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.11.0.tgz",
+ "integrity": "sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^3.2.7"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-import": {
+ "version": "2.30.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz",
+ "integrity": "sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@rtsao/scc": "^1.1.0",
+ "array-includes": "^3.1.8",
+ "array.prototype.findlastindex": "^1.2.5",
+ "array.prototype.flat": "^1.3.2",
+ "array.prototype.flatmap": "^1.3.2",
+ "debug": "^3.2.7",
+ "doctrine": "^2.1.0",
+ "eslint-import-resolver-node": "^0.3.9",
+ "eslint-module-utils": "^2.9.0",
+ "hasown": "^2.0.2",
+ "is-core-module": "^2.15.1",
+ "is-glob": "^4.0.3",
+ "minimatch": "^3.1.2",
+ "object.fromentries": "^2.0.8",
+ "object.groupby": "^1.0.3",
+ "object.values": "^1.2.0",
+ "semver": "^6.3.1",
+ "tsconfig-paths": "^3.15.0"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/eslint-plugin-jsx-a11y": {
+ "version": "6.10.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.0.tgz",
+ "integrity": "sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "aria-query": "~5.1.3",
+ "array-includes": "^3.1.8",
+ "array.prototype.flatmap": "^1.3.2",
+ "ast-types-flow": "^0.0.8",
+ "axe-core": "^4.10.0",
+ "axobject-query": "^4.1.0",
+ "damerau-levenshtein": "^1.0.8",
+ "emoji-regex": "^9.2.2",
+ "es-iterator-helpers": "^1.0.19",
+ "hasown": "^2.0.2",
+ "jsx-ast-utils": "^3.3.5",
+ "language-tags": "^1.0.9",
+ "minimatch": "^3.1.2",
+ "object.fromentries": "^2.0.8",
+ "safe-regex-test": "^1.0.3",
+ "string.prototype.includes": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9"
+ }
+ },
+ "node_modules/eslint-plugin-react": {
+ "version": "7.36.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.36.1.tgz",
+ "integrity": "sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-includes": "^3.1.8",
+ "array.prototype.findlast": "^1.2.5",
+ "array.prototype.flatmap": "^1.3.2",
+ "array.prototype.tosorted": "^1.1.4",
+ "doctrine": "^2.1.0",
+ "es-iterator-helpers": "^1.0.19",
+ "estraverse": "^5.3.0",
+ "hasown": "^2.0.2",
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.8",
+ "object.fromentries": "^2.0.8",
+ "object.values": "^1.2.0",
+ "prop-types": "^15.8.1",
+ "resolve": "^2.0.0-next.5",
+ "semver": "^6.3.1",
+ "string.prototype.matchall": "^4.0.11",
+ "string.prototype.repeat": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7"
+ }
+ },
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz",
+ "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/resolve": {
+ "version": "2.0.0-next.5",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
+ "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
+ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "license": "MIT"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fastq": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
+ "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "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",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
+ "node_modules/foreground-child": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
+ "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
+ "license": "ISC",
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/framer-motion": {
+ "version": "12.0.6",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.0.6.tgz",
+ "integrity": "sha512-LmrXbXF6Vv5WCNmb+O/zn891VPZrH7XbsZgRLBROw6kFiP+iTK49gxTv2Ur3F0Tbw6+sy9BVtSqnWfMUpH+6nA==",
+ "dependencies": {
+ "motion-dom": "^12.0.0",
+ "motion-utils": "^12.0.0",
+ "tslib": "^2.4.0"
+ },
+ "peerDependencies": {
+ "@emotion/is-prop-valid": "*",
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/is-prop-valid": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": 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",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/function.prototype.name": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
+ "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "functions-have-names": "^1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
+ "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-tsconfig": {
+ "version": "4.8.1",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz",
+ "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "resolve-pkg-maps": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
+ }
+ },
+ "node_modules/glob": {
+ "version": "10.3.10",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
+ "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
+ "license": "ISC",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.3.5",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
+ "path-scurry": "^1.10.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/glob/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/glob/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-properties": "^1.2.1",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/goober": {
+ "version": "2.1.16",
+ "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.16.tgz",
+ "integrity": "sha512-erjk19y1U33+XAMe1VTvIONHYoSqE4iS7BYUZfHaqeohLmnC0FdxEh7rQU+6MZ4OajItzjZFSRtVANrQwNq6/g==",
+ "peerDependencies": {
+ "csstype": "^3.0.10"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "license": "ISC"
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/has-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hi-base32": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/hi-base32/-/hi-base32-0.5.1.tgz",
+ "integrity": "sha512-EmBBpvdYh/4XxsnUybsPag6VikPYnN30td+vQk+GI3qpahVEG9+gTkG0aXVxTjBqQ5T6ijbWIu77O+C5WFWsnA=="
+ },
+ "node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/internal-slot": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
+ "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "hasown": "^2.0.0",
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "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==",
+ "license": "MIT",
+ "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",
+ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-array-buffer": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
+ "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-async-function": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz",
+ "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-bigints": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "license": "MIT",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-bun-module": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.2.1.tgz",
+ "integrity": "sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^7.6.3"
+ }
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.15.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
+ "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==",
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-data-view": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz",
+ "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-finalizationregistry": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz",
+ "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-map": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
+ "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-negative-zero": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
+ "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-number-object": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-set": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
+ "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
+ "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typed-array": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
+ "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "which-typed-array": "^1.1.14"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakmap": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
+ "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakset": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz",
+ "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "license": "ISC"
+ },
+ "node_modules/iterator.prototype": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz",
+ "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-properties": "^1.2.1",
+ "get-intrinsic": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "reflect.getprototypeof": "^1.0.4",
+ "set-function-name": "^2.0.1"
+ }
+ },
+ "node_modules/jackspeak": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
+ "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/jiti": {
+ "version": "1.21.6",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz",
+ "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==",
+ "license": "MIT",
+ "bin": {
+ "jiti": "bin/jiti.js"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "license": "MIT"
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/jsx-ast-utils": {
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
+ "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==",
+ "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/kdbush": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.0.2.tgz",
+ "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==",
+ "license": "ISC"
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/language-subtag-registry": {
+ "version": "0.3.23",
+ "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz",
+ "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==",
+ "dev": true,
+ "license": "CC0-1.0"
+ },
+ "node_modules/language-tags": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz",
+ "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "language-subtag-registry": "^0.3.20"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lilconfig": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
+ "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "license": "MIT"
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "license": "ISC"
+ },
+ "node_modules/lucide-react": {
+ "version": "0.445.0",
+ "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.445.0.tgz",
+ "integrity": "sha512-YrLf3aAHvmd4dZ8ot+mMdNFrFpJD7YRwQ2pUcBhgqbmxtrMP4xDzIorcj+8y+6kpuXBF4JB0NOCTUWIYetJjgA==",
+ "license": "ISC",
+ "peerDependencies": {
+ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "motion-utils": "^12.0.0"
+ }
+ },
+ "node_modules/motion-utils": {
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.0.0.tgz",
+ "integrity": "sha512-MNFiBKbbqnmvOjkPyOKgHUp3Q6oiokLkI1bEwm5QA28cxMZrv0CbbBGDNmhF6DIXsi1pCQBSs0dX8xjeER1tmA=="
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+ "license": "MIT",
+ "dependencies": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/next": {
+ "version": "14.2.13",
+ "resolved": "https://registry.npmjs.org/next/-/next-14.2.13.tgz",
+ "integrity": "sha512-BseY9YNw8QJSwLYD7hlZzl6QVDoSFHL/URN5K64kVEVpCsSOWeyjbIGK+dZUaRViHTaMQX8aqmnn0PHBbGZezg==",
+ "license": "MIT",
+ "dependencies": {
+ "@next/env": "14.2.13",
+ "@swc/helpers": "0.5.5",
+ "busboy": "1.6.0",
+ "caniuse-lite": "^1.0.30001579",
+ "graceful-fs": "^4.2.11",
+ "postcss": "8.4.31",
+ "styled-jsx": "5.1.1"
+ },
+ "bin": {
+ "next": "dist/bin/next"
+ },
+ "engines": {
+ "node": ">=18.17.0"
+ },
+ "optionalDependencies": {
+ "@next/swc-darwin-arm64": "14.2.13",
+ "@next/swc-darwin-x64": "14.2.13",
+ "@next/swc-linux-arm64-gnu": "14.2.13",
+ "@next/swc-linux-arm64-musl": "14.2.13",
+ "@next/swc-linux-x64-gnu": "14.2.13",
+ "@next/swc-linux-x64-musl": "14.2.13",
+ "@next/swc-win32-arm64-msvc": "14.2.13",
+ "@next/swc-win32-ia32-msvc": "14.2.13",
+ "@next/swc-win32-x64-msvc": "14.2.13"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.1.0",
+ "@playwright/test": "^1.41.2",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "sass": "^1.3.0"
+ },
+ "peerDependenciesMeta": {
+ "@opentelemetry/api": {
+ "optional": true
+ },
+ "@playwright/test": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/next/node_modules/postcss": {
+ "version": "8.4.31",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+ "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-hash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
+ "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-is": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz",
+ "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
+ "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.entries": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz",
+ "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.fromentries": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz",
+ "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.groupby": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz",
+ "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.values": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz",
+ "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "license": "MIT"
+ },
+ "node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
+ "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pirates": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/possible-typed-array-names": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
+ "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.47",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz",
+ "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.1.0",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-import": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
+ "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.0.0",
+ "read-cache": "^1.0.0",
+ "resolve": "^1.1.7"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "node_modules/postcss-js": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
+ "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
+ "license": "MIT",
+ "dependencies": {
+ "camelcase-css": "^2.0.1"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >= 16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.21"
+ }
+ },
+ "node_modules/postcss-load-config": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
+ "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "lilconfig": "^3.0.0",
+ "yaml": "^2.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ },
+ "peerDependencies": {
+ "postcss": ">=8.0.9",
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
+ },
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/postcss-load-config/node_modules/lilconfig": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz",
+ "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antonk52"
+ }
+ },
+ "node_modules/postcss-nested": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz",
+ "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "postcss-selector-parser": "^6.1.1"
+ },
+ "engines": {
+ "node": ">=12.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.14"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "license": "MIT"
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/promise-polyfill": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.3.0.tgz",
+ "integrity": "sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg=="
+ },
+ "node_modules/prop-types": {
+ "version": "15.8.1",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
+ }
+ },
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/react": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
+ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
+ "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.2"
+ },
+ "peerDependencies": {
+ "react": "^18.3.1"
+ }
+ },
+ "node_modules/react-hot-toast": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.4.1.tgz",
+ "integrity": "sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ==",
+ "dependencies": {
+ "goober": "^2.1.10"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "react": ">=16",
+ "react-dom": ">=16"
+ }
+ },
+ "node_modules/react-icons": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.3.0.tgz",
+ "integrity": "sha512-DnUk8aFbTyQPSkCfF8dbX6kQjXA9DktMeJqfjrg6cK9vwQVMxmcA3BfP4QoiztVmEHtwlTgLFsPuH2NskKT6eg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "*"
+ }
+ },
+ "node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "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==",
+ "dependencies": {
+ "react-remove-scroll-bar": "^2.3.7",
+ "react-style-singleton": "^2.2.3",
+ "tslib": "^2.1.0",
+ "use-callback-ref": "^1.3.3",
+ "use-sidecar": "^1.1.3"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "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==",
+ "dependencies": {
+ "react-style-singleton": "^2.2.2",
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "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==",
+ "dependencies": {
+ "get-nonce": "^1.0.0",
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/read-cache": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+ "license": "MIT",
+ "dependencies": {
+ "pify": "^2.3.0"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/reflect.getprototypeof": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz",
+ "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.1",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "globalthis": "^1.0.3",
+ "which-builtin-type": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz",
+ "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "define-properties": "^1.2.1",
+ "es-errors": "^1.3.0",
+ "set-function-name": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/resolve-pkg-maps": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
+ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/rimraf/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-array-concat": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz",
+ "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "get-intrinsic": "^1.2.4",
+ "has-symbols": "^1.0.3",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">=0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-regex-test": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz",
+ "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-regex": "^1.1.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/scheduler": {
+ "version": "0.23.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/set-function-name": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
+ "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "functions-have-names": "^1.2.3",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/stop-iteration-iterator": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
+ "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "internal-slot": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/streamsearch": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
+ "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/string-width/node_modules/ansi-regex": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/string-width/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/string.prototype.includes": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz",
+ "integrity": "sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.5"
+ }
+ },
+ "node_modules/string.prototype.matchall": {
+ "version": "4.0.11",
+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz",
+ "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.7",
+ "regexp.prototype.flags": "^1.5.2",
+ "set-function-name": "^2.0.2",
+ "side-channel": "^1.0.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.repeat": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz",
+ "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.5"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
+ "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.0",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz",
+ "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
+ "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/styled-jsx": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
+ "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==",
+ "license": "MIT",
+ "dependencies": {
+ "client-only": "0.0.1"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ },
+ "babel-plugin-macros": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/sucrase": {
+ "version": "3.35.0",
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
+ "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "commander": "^4.0.0",
+ "glob": "^10.3.10",
+ "lines-and-columns": "^1.1.6",
+ "mz": "^2.7.0",
+ "pirates": "^4.0.1",
+ "ts-interface-checker": "^0.1.9"
+ },
+ "bin": {
+ "sucrase": "bin/sucrase",
+ "sucrase-node": "bin/sucrase-node"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/supercluster": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-8.0.1.tgz",
+ "integrity": "sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==",
+ "license": "ISC",
+ "dependencies": {
+ "kdbush": "^4.0.2"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/tailwind-merge": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.5.2.tgz",
+ "integrity": "sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/dcastil"
+ }
+ },
+ "node_modules/tailwindcss": {
+ "version": "3.4.12",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.12.tgz",
+ "integrity": "sha512-Htf/gHj2+soPb9UayUNci/Ja3d8pTmu9ONTfh4QY8r3MATTZOzmv6UYWF7ZwikEIC8okpfqmGqrmDehua8mF8w==",
+ "license": "MIT",
+ "dependencies": {
+ "@alloc/quick-lru": "^5.2.0",
+ "arg": "^5.0.2",
+ "chokidar": "^3.5.3",
+ "didyoumean": "^1.2.2",
+ "dlv": "^1.1.3",
+ "fast-glob": "^3.3.0",
+ "glob-parent": "^6.0.2",
+ "is-glob": "^4.0.3",
+ "jiti": "^1.21.0",
+ "lilconfig": "^2.1.0",
+ "micromatch": "^4.0.5",
+ "normalize-path": "^3.0.0",
+ "object-hash": "^3.0.0",
+ "picocolors": "^1.0.0",
+ "postcss": "^8.4.23",
+ "postcss-import": "^15.1.0",
+ "postcss-js": "^4.0.1",
+ "postcss-load-config": "^4.0.1",
+ "postcss-nested": "^6.0.1",
+ "postcss-selector-parser": "^6.0.11",
+ "resolve": "^1.22.2",
+ "sucrase": "^3.32.0"
+ },
+ "bin": {
+ "tailwind": "lib/cli.js",
+ "tailwindcss": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/tailwindcss-animate": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz",
+ "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "tailwindcss": ">=3.0.0 || insiders"
+ }
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/thenify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+ "license": "MIT",
+ "dependencies": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "node_modules/thenify-all": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
+ "license": "MIT",
+ "dependencies": {
+ "thenify": ">= 3.1.0 < 4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/ts-api-utils": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
+ "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.2.0"
+ }
+ },
+ "node_modules/ts-interface-checker": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/tsconfig-paths": {
+ "version": "3.15.0",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
+ "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/json5": "^0.0.29",
+ "json5": "^1.0.2",
+ "minimist": "^1.2.6",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz",
+ "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==",
+ "license": "0BSD"
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typed-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/typed-array-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz",
+ "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-byte-offset": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz",
+ "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-length": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz",
+ "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13",
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz",
+ "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/unbox-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "punycode": "^2.1.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==",
+ "dependencies": {
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "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==",
+ "dependencies": {
+ "detect-node-es": "^1.1.0",
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "license": "MIT"
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-builtin-type": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz",
+ "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "function.prototype.name": "^1.1.6",
+ "has-tostringtag": "^1.0.2",
+ "is-async-function": "^2.0.0",
+ "is-date-object": "^1.0.5",
+ "is-finalizationregistry": "^1.0.2",
+ "is-generator-function": "^1.0.10",
+ "is-regex": "^1.1.4",
+ "is-weakref": "^1.0.2",
+ "isarray": "^2.0.5",
+ "which-boxed-primitive": "^1.0.2",
+ "which-collection": "^1.0.2",
+ "which-typed-array": "^1.1.15"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-collection": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
+ "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-map": "^2.0.3",
+ "is-set": "^2.0.3",
+ "is-weakmap": "^2.0.2",
+ "is-weakset": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-typed-array": {
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
+ "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-regex": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/yaml": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz",
+ "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==",
+ "license": "ISC",
+ "bin": {
+ "yaml": "bin.mjs"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..79f8b74
--- /dev/null
+++ b/package.json
@@ -0,0 +1,42 @@
+{
+ "name": "rudra",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "dev": "next dev",
+ "build": "next build",
+ "start": "next start",
+ "lint": "next lint",
+ "export": "next export"
+ },
+ "dependencies": {
+ "@paypal/react-paypal-js": "^8.8.1",
+ "@radix-ui/react-accordion": "^1.2.0",
+ "@radix-ui/react-dropdown-menu": "^2.1.5",
+ "@radix-ui/react-icons": "^1.3.0",
+ "@radix-ui/react-navigation-menu": "^1.2.0",
+ "@radix-ui/react-slot": "^1.1.0",
+ "@react-google-maps/api": "^2.19.3",
+ "@tailwindcss/aspect-ratio": "^0.4.2",
+ "axios": "^1.7.9",
+ "class-variance-authority": "^0.7.0",
+ "clsx": "^2.1.1",
+ "embla-carousel-autoplay": "^8.3.0",
+ "embla-carousel-react": "^8.3.0",
+ "framer-motion": "^12.0.6",
+ "lucide-react": "^0.445.0",
+ "next": "14.2.13",
+ "react": "^18",
+ "react-dom": "^18",
+ "react-hot-toast": "^2.4.1",
+ "react-icons": "^5.3.0",
+ "tailwind-merge": "^2.5.2",
+ "tailwindcss-animate": "^1.0.7"
+ },
+ "devDependencies": {
+ "eslint": "^8",
+ "eslint-config-next": "14.2.13",
+ "postcss": "^8",
+ "tailwindcss": "^3.4.1"
+ }
+}
diff --git a/postcss.config.mjs b/postcss.config.mjs
new file mode 100644
index 0000000..1a69fd2
--- /dev/null
+++ b/postcss.config.mjs
@@ -0,0 +1,8 @@
+/** @type {import('postcss-load-config').Config} */
+const config = {
+ plugins: {
+ tailwindcss: {},
+ },
+};
+
+export default config;
diff --git a/public/17-mukhi34.png b/public/17-mukhi34.png
new file mode 100644
index 0000000..6f2fe59
Binary files /dev/null and b/public/17-mukhi34.png differ
diff --git a/public/17mukhi-31.png b/public/17mukhi-31.png
new file mode 100644
index 0000000..d1c2d3b
Binary files /dev/null and b/public/17mukhi-31.png differ
diff --git a/public/18-mukhi-rudraksha-27mm-2158-224.png b/public/18-mukhi-rudraksha-27mm-2158-224.png
new file mode 100644
index 0000000..0cc202b
Binary files /dev/null and b/public/18-mukhi-rudraksha-27mm-2158-224.png differ
diff --git a/public/18-mukhi-rudraksha-33mm-2918-111.png b/public/18-mukhi-rudraksha-33mm-2918-111.png
new file mode 100644
index 0000000..ed4c0cd
Binary files /dev/null and b/public/18-mukhi-rudraksha-33mm-2918-111.png differ
diff --git a/public/21-mukhi-34mm-322.png b/public/21-mukhi-34mm-322.png
new file mode 100644
index 0000000..cd29a73
Binary files /dev/null and b/public/21-mukhi-34mm-322.png differ
diff --git a/public/21-mukhi-rudraksha-29mm-2930-259.png b/public/21-mukhi-rudraksha-29mm-2930-259.png
new file mode 100644
index 0000000..9d52767
Binary files /dev/null and b/public/21-mukhi-rudraksha-29mm-2930-259.png differ
diff --git a/public/22-mukhi-rudraksha-35mm-1177-439.png b/public/22-mukhi-rudraksha-35mm-1177-439.png
new file mode 100644
index 0000000..56887ea
Binary files /dev/null and b/public/22-mukhi-rudraksha-35mm-1177-439.png differ
diff --git a/public/24-mukhi-rudraksha-38mm-1176-309.png b/public/24-mukhi-rudraksha-38mm-1176-309.png
new file mode 100644
index 0000000..21ea34e
Binary files /dev/null and b/public/24-mukhi-rudraksha-38mm-1176-309.png differ
diff --git a/public/25-mukhi-rudraksha-35mm-1178-144.png b/public/25-mukhi-rudraksha-35mm-1178-144.png
new file mode 100644
index 0000000..35ef783
Binary files /dev/null and b/public/25-mukhi-rudraksha-35mm-1178-144.png differ
diff --git a/public/IRL.webp b/public/IRL.webp
new file mode 100644
index 0000000..c5484fb
Binary files /dev/null and b/public/IRL.webp differ
diff --git a/public/Japa.jpg b/public/Japa.jpg
new file mode 100644
index 0000000..90e71a9
Binary files /dev/null and b/public/Japa.jpg differ
diff --git a/public/Mobile-app.png b/public/Mobile-app.png
new file mode 100644
index 0000000..3fb6e1c
Binary files /dev/null and b/public/Mobile-app.png differ
diff --git a/public/Shaligram banner.webp b/public/Shaligram banner.webp
new file mode 100644
index 0000000..d1832d5
Binary files /dev/null and b/public/Shaligram banner.webp differ
diff --git a/public/about-us/img-one.jpg b/public/about-us/img-one.jpg
new file mode 100644
index 0000000..a9546a1
Binary files /dev/null and b/public/about-us/img-one.jpg differ
diff --git a/public/about-us/img-three.jpg b/public/about-us/img-three.jpg
new file mode 100644
index 0000000..bf60b76
Binary files /dev/null and b/public/about-us/img-three.jpg differ
diff --git a/public/about-us/img-two.jpg b/public/about-us/img-two.jpg
new file mode 100644
index 0000000..c0fe63f
Binary files /dev/null and b/public/about-us/img-two.jpg differ
diff --git a/public/banner.png b/public/banner.png
new file mode 100644
index 0000000..feef413
Binary files /dev/null and b/public/banner.png differ
diff --git a/public/banner1.webp b/public/banner1.webp
new file mode 100644
index 0000000..06c1e61
Binary files /dev/null and b/public/banner1.webp differ
diff --git a/public/birth_chart2.jpg b/public/birth_chart2.jpg
new file mode 100644
index 0000000..c510303
Binary files /dev/null and b/public/birth_chart2.jpg differ
diff --git a/public/birth_chart_1.jpg b/public/birth_chart_1.jpg
new file mode 100644
index 0000000..1f86243
Binary files /dev/null and b/public/birth_chart_1.jpg differ
diff --git a/public/blogs/navaratri-siginificance.webp b/public/blogs/navaratri-siginificance.webp
new file mode 100644
index 0000000..041ddf2
Binary files /dev/null and b/public/blogs/navaratri-siginificance.webp differ
diff --git a/public/blogs/rudraksha-pran-pratishtha-pooja.webp b/public/blogs/rudraksha-pran-pratishtha-pooja.webp
new file mode 100644
index 0000000..4f5bd7e
Binary files /dev/null and b/public/blogs/rudraksha-pran-pratishtha-pooja.webp differ
diff --git a/public/blogs/significance-of-dhanteras.webp b/public/blogs/significance-of-dhanteras.webp
new file mode 100644
index 0000000..46aef4e
Binary files /dev/null and b/public/blogs/significance-of-dhanteras.webp differ
diff --git a/public/buy-rudraksha/goals_aspirations_combo_1x_1_6da0bb78-1e20-4c48-b7a5-de4d6995b51c.webp b/public/buy-rudraksha/goals_aspirations_combo_1x_1_6da0bb78-1e20-4c48-b7a5-de4d6995b51c.webp
new file mode 100644
index 0000000..74c3373
Binary files /dev/null and b/public/buy-rudraksha/goals_aspirations_combo_1x_1_6da0bb78-1e20-4c48-b7a5-de4d6995b51c.webp differ
diff --git a/public/buy-rudraksha/maha_dasha_1x_1_e12fc2ae-e143-45fd-9199-33e0012f1b2c.webp b/public/buy-rudraksha/maha_dasha_1x_1_e12fc2ae-e143-45fd-9199-33e0012f1b2c.webp
new file mode 100644
index 0000000..98217fd
Binary files /dev/null and b/public/buy-rudraksha/maha_dasha_1x_1_e12fc2ae-e143-45fd-9199-33e0012f1b2c.webp differ
diff --git a/public/buy-rudraksha/rudraksha_kavach_1x_1_1d5d5deb-91bb-4e92-9a42-76a7b84aef11.webp b/public/buy-rudraksha/rudraksha_kavach_1x_1_1d5d5deb-91bb-4e92-9a42-76a7b84aef11.webp
new file mode 100644
index 0000000..5840f0c
Binary files /dev/null and b/public/buy-rudraksha/rudraksha_kavach_1x_1_1d5d5deb-91bb-4e92-9a42-76a7b84aef11.webp differ
diff --git a/public/buy-rudraksha/zodiac_combo_1x_1_f7d5771c-e186-4efe-93ec-f985fd30178d.webp b/public/buy-rudraksha/zodiac_combo_1x_1_f7d5771c-e186-4efe-93ec-f985fd30178d.webp
new file mode 100644
index 0000000..dcf3483
Binary files /dev/null and b/public/buy-rudraksha/zodiac_combo_1x_1_f7d5771c-e186-4efe-93ec-f985fd30178d.webp differ
diff --git a/public/certification/certification-one.jpg b/public/certification/certification-one.jpg
new file mode 100644
index 0000000..4f1bb38
Binary files /dev/null and b/public/certification/certification-one.jpg differ
diff --git a/public/certification/gallery1.png b/public/certification/gallery1.png
new file mode 100644
index 0000000..7a5e53b
Binary files /dev/null and b/public/certification/gallery1.png differ
diff --git a/public/certification/gallery10.jpeg b/public/certification/gallery10.jpeg
new file mode 100644
index 0000000..7af61dd
Binary files /dev/null and b/public/certification/gallery10.jpeg differ
diff --git a/public/certification/gallery11.jpeg b/public/certification/gallery11.jpeg
new file mode 100644
index 0000000..4fefd66
Binary files /dev/null and b/public/certification/gallery11.jpeg differ
diff --git a/public/certification/gallery12.jpeg b/public/certification/gallery12.jpeg
new file mode 100644
index 0000000..d7ba913
Binary files /dev/null and b/public/certification/gallery12.jpeg differ
diff --git a/public/certification/gallery13.jpeg b/public/certification/gallery13.jpeg
new file mode 100644
index 0000000..f405d37
Binary files /dev/null and b/public/certification/gallery13.jpeg differ
diff --git a/public/certification/gallery2.png b/public/certification/gallery2.png
new file mode 100644
index 0000000..9250e9f
Binary files /dev/null and b/public/certification/gallery2.png differ
diff --git a/public/certification/gallery3.png b/public/certification/gallery3.png
new file mode 100644
index 0000000..1256dc2
Binary files /dev/null and b/public/certification/gallery3.png differ
diff --git a/public/certification/gallery4.png b/public/certification/gallery4.png
new file mode 100644
index 0000000..178d36c
Binary files /dev/null and b/public/certification/gallery4.png differ
diff --git a/public/certification/gallery5.png b/public/certification/gallery5.png
new file mode 100644
index 0000000..48d9ebc
Binary files /dev/null and b/public/certification/gallery5.png differ
diff --git a/public/client_confidentiality_2.jpg b/public/client_confidentiality_2.jpg
new file mode 100644
index 0000000..d0ed444
Binary files /dev/null and b/public/client_confidentiality_2.jpg differ
diff --git a/public/confidentiality_1.jpg b/public/confidentiality_1.jpg
new file mode 100644
index 0000000..384f798
Binary files /dev/null and b/public/confidentiality_1.jpg differ
diff --git a/public/consultation_banner_1.webp b/public/consultation_banner_1.webp
new file mode 100644
index 0000000..17f0440
Binary files /dev/null and b/public/consultation_banner_1.webp differ
diff --git a/public/demo/21-mukhi-rudraksha-33mm-2692-214_1024x1024.jpeg b/public/demo/21-mukhi-rudraksha-33mm-2692-214_1024x1024.jpeg
new file mode 100644
index 0000000..5e7fb35
Binary files /dev/null and b/public/demo/21-mukhi-rudraksha-33mm-2692-214_1024x1024.jpeg differ
diff --git a/public/demo/21-mukhi-rudraksha-33mm-2692-356_1024x1024.png b/public/demo/21-mukhi-rudraksha-33mm-2692-356_1024x1024.png
new file mode 100644
index 0000000..e748119
Binary files /dev/null and b/public/demo/21-mukhi-rudraksha-33mm-2692-356_1024x1024.png differ
diff --git a/public/demo/21-mukhi-rudraksha-33mm-2692-637_1024x1024.jpeg b/public/demo/21-mukhi-rudraksha-33mm-2692-637_1024x1024.jpeg
new file mode 100644
index 0000000..7bb9bbe
Binary files /dev/null and b/public/demo/21-mukhi-rudraksha-33mm-2692-637_1024x1024.jpeg differ
diff --git a/public/demo/21-mukhi-rudraksha-33mm-2692-868_1024x1024.jpeg b/public/demo/21-mukhi-rudraksha-33mm-2692-868_1024x1024.jpeg
new file mode 100644
index 0000000..cdae8ef
Binary files /dev/null and b/public/demo/21-mukhi-rudraksha-33mm-2692-868_1024x1024.jpeg differ
diff --git a/public/diwali.jpg b/public/diwali.jpg
new file mode 100644
index 0000000..a59b4cf
Binary files /dev/null and b/public/diwali.jpg differ
diff --git a/public/diwali2.jpg b/public/diwali2.jpg
new file mode 100644
index 0000000..4eb55e6
Binary files /dev/null and b/public/diwali2.jpg differ
diff --git a/public/exclusive/exclusive_banner.webp b/public/exclusive/exclusive_banner.webp
new file mode 100644
index 0000000..b519e93
Binary files /dev/null and b/public/exclusive/exclusive_banner.webp differ
diff --git a/public/exclusive/medium.avif b/public/exclusive/medium.avif
new file mode 100644
index 0000000..fa3fc4a
Binary files /dev/null and b/public/exclusive/medium.avif differ
diff --git a/public/expert_guidance_1.jpg b/public/expert_guidance_1.jpg
new file mode 100644
index 0000000..3afa380
Binary files /dev/null and b/public/expert_guidance_1.jpg differ
diff --git a/public/expert_guidance_2.jpg b/public/expert_guidance_2.jpg
new file mode 100644
index 0000000..4faadf3
Binary files /dev/null and b/public/expert_guidance_2.jpg differ
diff --git a/public/family_chart1.jpg b/public/family_chart1.jpg
new file mode 100644
index 0000000..e789a67
Binary files /dev/null and b/public/family_chart1.jpg differ
diff --git a/public/family_chart_2.jpg b/public/family_chart_2.jpg
new file mode 100644
index 0000000..72291b1
Binary files /dev/null and b/public/family_chart_2.jpg differ
diff --git a/public/favicon.jpeg b/public/favicon.jpeg
new file mode 100644
index 0000000..e48912a
Binary files /dev/null and b/public/favicon.jpeg differ
diff --git a/public/footer2.webp b/public/footer2.webp
new file mode 100644
index 0000000..b789f74
Binary files /dev/null and b/public/footer2.webp differ
diff --git a/public/footer3.jpg b/public/footer3.jpg
new file mode 100644
index 0000000..1e4fa26
Binary files /dev/null and b/public/footer3.jpg differ
diff --git a/public/footer4.webp b/public/footer4.webp
new file mode 100644
index 0000000..adb418a
Binary files /dev/null and b/public/footer4.webp differ
diff --git a/public/g-1_medium.png b/public/g-1_medium.png
new file mode 100644
index 0000000..1033867
Binary files /dev/null and b/public/g-1_medium.png differ
diff --git a/public/g-2_medium.png b/public/g-2_medium.png
new file mode 100644
index 0000000..623e059
Binary files /dev/null and b/public/g-2_medium.png differ
diff --git a/public/g-3_medium.png b/public/g-3_medium.png
new file mode 100644
index 0000000..eb73208
Binary files /dev/null and b/public/g-3_medium.png differ
diff --git a/public/g-4_medium.png b/public/g-4_medium.png
new file mode 100644
index 0000000..2daaf5a
Binary files /dev/null and b/public/g-4_medium.png differ
diff --git a/public/g-5_medium.png b/public/g-5_medium.png
new file mode 100644
index 0000000..b3d3ab7
Binary files /dev/null and b/public/g-5_medium.png differ
diff --git a/public/gallery1.jpg b/public/gallery1.jpg
new file mode 100644
index 0000000..e34bc55
Binary files /dev/null and b/public/gallery1.jpg differ
diff --git a/public/gallery2.jpg b/public/gallery2.jpg
new file mode 100644
index 0000000..97beb4b
Binary files /dev/null and b/public/gallery2.jpg differ
diff --git a/public/gallery3.jpg b/public/gallery3.jpg
new file mode 100644
index 0000000..e98ad51
Binary files /dev/null and b/public/gallery3.jpg differ
diff --git a/public/gallery4.png b/public/gallery4.png
new file mode 100644
index 0000000..8385422
Binary files /dev/null and b/public/gallery4.png differ
diff --git a/public/gallery5.webp b/public/gallery5.webp
new file mode 100644
index 0000000..5efcd95
Binary files /dev/null and b/public/gallery5.webp differ
diff --git a/public/gallery6.jpg b/public/gallery6.jpg
new file mode 100644
index 0000000..b33d2a6
Binary files /dev/null and b/public/gallery6.jpg differ
diff --git a/public/gallery7.webp b/public/gallery7.webp
new file mode 100644
index 0000000..2c7e4f9
Binary files /dev/null and b/public/gallery7.webp differ
diff --git a/public/googleplay.svg b/public/googleplay.svg
new file mode 100644
index 0000000..df4fd10
--- /dev/null
+++ b/public/googleplay.svg
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/googleplay2.svg b/public/googleplay2.svg
new file mode 100644
index 0000000..9f37e90
--- /dev/null
+++ b/public/googleplay2.svg
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/hdfc_footer.avif b/public/hdfc_footer.avif
new file mode 100644
index 0000000..4ec53de
Binary files /dev/null and b/public/hdfc_footer.avif differ
diff --git a/public/hero-video.mp4 b/public/hero-video.mp4
new file mode 100644
index 0000000..0262d81
Binary files /dev/null and b/public/hero-video.mp4 differ
diff --git a/public/hero-video2.mp4 b/public/hero-video2.mp4
new file mode 100644
index 0000000..fffd377
Binary files /dev/null and b/public/hero-video2.mp4 differ
diff --git a/public/herothree.jpg b/public/herothree.jpg
new file mode 100644
index 0000000..c51f28b
Binary files /dev/null and b/public/herothree.jpg differ
diff --git a/public/herotwobanner.jpg b/public/herotwobanner.jpg
new file mode 100644
index 0000000..e5dfaa1
Binary files /dev/null and b/public/herotwobanner.jpg differ
diff --git a/public/loginvideo.mp4 b/public/loginvideo.mp4
new file mode 100644
index 0000000..1fe7f17
Binary files /dev/null and b/public/loginvideo.mp4 differ
diff --git a/public/logo.jpg b/public/logo.jpg
new file mode 100644
index 0000000..1134502
Binary files /dev/null and b/public/logo.jpg differ
diff --git a/public/logo.svg b/public/logo.svg
new file mode 100644
index 0000000..559e9b5
--- /dev/null
+++ b/public/logo.svg
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/logo1.jpg b/public/logo1.jpg
new file mode 100644
index 0000000..1d8da04
Binary files /dev/null and b/public/logo1.jpg differ
diff --git a/public/mantra_1.jpg b/public/mantra_1.jpg
new file mode 100644
index 0000000..cdf3f71
Binary files /dev/null and b/public/mantra_1.jpg differ
diff --git a/public/mantra_2.jpg b/public/mantra_2.jpg
new file mode 100644
index 0000000..7b93fc4
Binary files /dev/null and b/public/mantra_2.jpg differ
diff --git a/public/metaicon.png b/public/metaicon.png
new file mode 100644
index 0000000..d29ce49
Binary files /dev/null and b/public/metaicon.png differ
diff --git a/public/moneyback_banner2_1_1.webp b/public/moneyback_banner2_1_1.webp
new file mode 100644
index 0000000..57f5db0
Binary files /dev/null and b/public/moneyback_banner2_1_1.webp differ
diff --git a/public/moneyback_banner_1.webp b/public/moneyback_banner_1.webp
new file mode 100644
index 0000000..89adb27
Binary files /dev/null and b/public/moneyback_banner_1.webp differ
diff --git a/public/navaratri_banner.png b/public/navaratri_banner.png
new file mode 100644
index 0000000..843bec6
Binary files /dev/null and b/public/navaratri_banner.png differ
diff --git a/public/one-one.jpg b/public/one-one.jpg
new file mode 100644
index 0000000..7f6609e
Binary files /dev/null and b/public/one-one.jpg differ
diff --git a/public/one-three.jpg b/public/one-three.jpg
new file mode 100644
index 0000000..c5f3024
Binary files /dev/null and b/public/one-three.jpg differ
diff --git a/public/one-two.jpg b/public/one-two.jpg
new file mode 100644
index 0000000..c5f3024
Binary files /dev/null and b/public/one-two.jpg differ
diff --git a/public/online-pooja/karya-siddhi-ganesh-pooja-672.webp b/public/online-pooja/karya-siddhi-ganesh-pooja-672.webp
new file mode 100644
index 0000000..a44eae6
Binary files /dev/null and b/public/online-pooja/karya-siddhi-ganesh-pooja-672.webp differ
diff --git a/public/online-pooja/lagu-rudri-path-12-brahmin-273.webp b/public/online-pooja/lagu-rudri-path-12-brahmin-273.webp
new file mode 100644
index 0000000..8b750eb
Binary files /dev/null and b/public/online-pooja/lagu-rudri-path-12-brahmin-273.webp differ
diff --git a/public/online-pooja/laxmi-narayan-pooja-222.webp b/public/online-pooja/laxmi-narayan-pooja-222.webp
new file mode 100644
index 0000000..126dc92
Binary files /dev/null and b/public/online-pooja/laxmi-narayan-pooja-222.webp differ
diff --git a/public/online-pooja/maha-mrityunjaya-pooja-397.webp b/public/online-pooja/maha-mrityunjaya-pooja-397.webp
new file mode 100644
index 0000000..6c74e0e
Binary files /dev/null and b/public/online-pooja/maha-mrityunjaya-pooja-397.webp differ
diff --git a/public/online-pooja/maha-shivaratri-pooja-at-pashupatinath-437.webp b/public/online-pooja/maha-shivaratri-pooja-at-pashupatinath-437.webp
new file mode 100644
index 0000000..f39254b
Binary files /dev/null and b/public/online-pooja/maha-shivaratri-pooja-at-pashupatinath-437.webp differ
diff --git a/public/online-pooja/navagraha-shanti-pooja-817.webp b/public/online-pooja/navagraha-shanti-pooja-817.webp
new file mode 100644
index 0000000..7d4ea52
Binary files /dev/null and b/public/online-pooja/navagraha-shanti-pooja-817.webp differ
diff --git a/public/online-pooja/rudra-abishek-pooja-778.webp b/public/online-pooja/rudra-abishek-pooja-778.webp
new file mode 100644
index 0000000..8d89390
Binary files /dev/null and b/public/online-pooja/rudra-abishek-pooja-778.webp differ
diff --git a/public/online-pooja/rudraksha-prana-pratishtha-pooja-246.webp b/public/online-pooja/rudraksha-prana-pratishtha-pooja-246.webp
new file mode 100644
index 0000000..2c7c30a
Binary files /dev/null and b/public/online-pooja/rudraksha-prana-pratishtha-pooja-246.webp differ
diff --git a/public/pooja_1.jpg b/public/pooja_1.jpg
new file mode 100644
index 0000000..0750631
Binary files /dev/null and b/public/pooja_1.jpg differ
diff --git a/public/pooja_2.jpg b/public/pooja_2.jpg
new file mode 100644
index 0000000..07433ae
Binary files /dev/null and b/public/pooja_2.jpg differ
diff --git a/public/pooja_banner_1.webp b/public/pooja_banner_1.webp
new file mode 100644
index 0000000..6716c02
Binary files /dev/null and b/public/pooja_banner_1.webp differ
diff --git a/public/pooja_banner_3.png b/public/pooja_banner_3.png
new file mode 100644
index 0000000..b6da2e6
Binary files /dev/null and b/public/pooja_banner_3.png differ
diff --git a/public/pooja_image.webp b/public/pooja_image.webp
new file mode 100644
index 0000000..e52e6a8
Binary files /dev/null and b/public/pooja_image.webp differ
diff --git a/public/product_swami.jpeg b/public/product_swami.jpeg
new file mode 100644
index 0000000..95c108a
Binary files /dev/null and b/public/product_swami.jpeg differ
diff --git a/public/rudraksh banner image 2.avif b/public/rudraksh banner image 2.avif
new file mode 100644
index 0000000..91b0372
Binary files /dev/null and b/public/rudraksh banner image 2.avif differ
diff --git a/public/rudraksha banner 1.png b/public/rudraksha banner 1.png
new file mode 100644
index 0000000..7a590f7
Binary files /dev/null and b/public/rudraksha banner 1.png differ
diff --git a/public/rudraksha banner 2.png b/public/rudraksha banner 2.png
new file mode 100644
index 0000000..f552309
Binary files /dev/null and b/public/rudraksha banner 2.png differ
diff --git a/public/shaligram/buddha-shaligram-829.webp b/public/shaligram/buddha-shaligram-829.webp
new file mode 100644
index 0000000..d7f9ad4
Binary files /dev/null and b/public/shaligram/buddha-shaligram-829.webp differ
diff --git a/public/shaligram/matsya-shaligram-614.webp b/public/shaligram/matsya-shaligram-614.webp
new file mode 100644
index 0000000..848b09f
Binary files /dev/null and b/public/shaligram/matsya-shaligram-614.webp differ
diff --git a/public/shaligram/narasimha-shaligram-977.webp b/public/shaligram/narasimha-shaligram-977.webp
new file mode 100644
index 0000000..4a9ac4c
Binary files /dev/null and b/public/shaligram/narasimha-shaligram-977.webp differ
diff --git a/public/shaligram/parashurama-shaligram-855.webp b/public/shaligram/parashurama-shaligram-855.webp
new file mode 100644
index 0000000..3393505
Binary files /dev/null and b/public/shaligram/parashurama-shaligram-855.webp differ
diff --git a/public/shaligram/rama-shaligram-313.webp b/public/shaligram/rama-shaligram-313.webp
new file mode 100644
index 0000000..1337da8
Binary files /dev/null and b/public/shaligram/rama-shaligram-313.webp differ
diff --git a/public/shaligram/vamana-shaligram-750.webp b/public/shaligram/vamana-shaligram-750.webp
new file mode 100644
index 0000000..afebad1
Binary files /dev/null and b/public/shaligram/vamana-shaligram-750.webp differ
diff --git a/public/shaligram/varaha-shaligram-116.webp b/public/shaligram/varaha-shaligram-116.webp
new file mode 100644
index 0000000..d927b43
Binary files /dev/null and b/public/shaligram/varaha-shaligram-116.webp differ
diff --git a/public/sidhi-mala/1.webp b/public/sidhi-mala/1.webp
new file mode 100644
index 0000000..37ec9e8
Binary files /dev/null and b/public/sidhi-mala/1.webp differ
diff --git a/public/sidhi-mala/2_01d4b37c-ade7-44a1-8847-b63ca7945b5b.webp b/public/sidhi-mala/2_01d4b37c-ade7-44a1-8847-b63ca7945b5b.webp
new file mode 100644
index 0000000..77b46d8
Binary files /dev/null and b/public/sidhi-mala/2_01d4b37c-ade7-44a1-8847-b63ca7945b5b.webp differ
diff --git a/public/sidhi-mala/3_4bb67323-1af4-4167-9f11-34cdab60e320.webp b/public/sidhi-mala/3_4bb67323-1af4-4167-9f11-34cdab60e320.webp
new file mode 100644
index 0000000..3d8ef0d
Binary files /dev/null and b/public/sidhi-mala/3_4bb67323-1af4-4167-9f11-34cdab60e320.webp differ
diff --git a/public/sidhi-mala/4_b5f14d83-0ef5-4e47-8e96-d36db882aadc.webp b/public/sidhi-mala/4_b5f14d83-0ef5-4e47-8e96-d36db882aadc.webp
new file mode 100644
index 0000000..bc5f717
Binary files /dev/null and b/public/sidhi-mala/4_b5f14d83-0ef5-4e47-8e96-d36db882aadc.webp differ
diff --git a/public/sidhi-mala/Artboard_1_bf5ccd46-7152-4355-82a8-9e9f27c1bfc2.jpg b/public/sidhi-mala/Artboard_1_bf5ccd46-7152-4355-82a8-9e9f27c1bfc2.jpg
new file mode 100644
index 0000000..fcc0427
Binary files /dev/null and b/public/sidhi-mala/Artboard_1_bf5ccd46-7152-4355-82a8-9e9f27c1bfc2.jpg differ
diff --git a/public/sidhi-mala/Designer_30.png b/public/sidhi-mala/Designer_30.png
new file mode 100644
index 0000000..f0522d0
Binary files /dev/null and b/public/sidhi-mala/Designer_30.png differ
diff --git a/public/sidhi-mala/gauri-shankar-siddha-mala-555.webp b/public/sidhi-mala/gauri-shankar-siddha-mala-555.webp
new file mode 100644
index 0000000..e42b84d
Binary files /dev/null and b/public/sidhi-mala/gauri-shankar-siddha-mala-555.webp differ
diff --git a/public/sidhi-mala/gayatri-siddha-mala-909.webp b/public/sidhi-mala/gayatri-siddha-mala-909.webp
new file mode 100644
index 0000000..53adce7
Binary files /dev/null and b/public/sidhi-mala/gayatri-siddha-mala-909.webp differ
diff --git a/public/sidhi-mala/indonesian-siddha-mala-792.webp b/public/sidhi-mala/indonesian-siddha-mala-792.webp
new file mode 100644
index 0000000..0c8d0a1
Binary files /dev/null and b/public/sidhi-mala/indonesian-siddha-mala-792.webp differ
diff --git a/public/sidhi-mala/indramala.jpg b/public/sidhi-mala/indramala.jpg
new file mode 100644
index 0000000..67f07b2
Binary files /dev/null and b/public/sidhi-mala/indramala.jpg differ
diff --git a/public/sidhi-mala/karya-siddha-mala-701.webp b/public/sidhi-mala/karya-siddha-mala-701.webp
new file mode 100644
index 0000000..cffbbce
Binary files /dev/null and b/public/sidhi-mala/karya-siddha-mala-701.webp differ
diff --git a/public/sidhi-mala/maha-mrityunjaya-siddha-mala-595.webp b/public/sidhi-mala/maha-mrityunjaya-siddha-mala-595.webp
new file mode 100644
index 0000000..7e90bc9
Binary files /dev/null and b/public/sidhi-mala/maha-mrityunjaya-siddha-mala-595.webp differ
diff --git a/public/sidhi-mala/mangal-siddha-mala-228.webp b/public/sidhi-mala/mangal-siddha-mala-228.webp
new file mode 100644
index 0000000..987d003
Binary files /dev/null and b/public/sidhi-mala/mangal-siddha-mala-228.webp differ
diff --git a/public/sidhi-mala/sarva-siddha-mala-596.webp b/public/sidhi-mala/sarva-siddha-mala-596.webp
new file mode 100644
index 0000000..dcda140
Binary files /dev/null and b/public/sidhi-mala/sarva-siddha-mala-596.webp differ
diff --git a/public/sidhi-mala/siddha-mala-basic-532.webp b/public/sidhi-mala/siddha-mala-basic-532.webp
new file mode 100644
index 0000000..2438f1d
Binary files /dev/null and b/public/sidhi-mala/siddha-mala-basic-532.webp differ
diff --git a/public/sidhi-mala/siddha-mala-economy-371.webp b/public/sidhi-mala/siddha-mala-economy-371.webp
new file mode 100644
index 0000000..476fd0b
Binary files /dev/null and b/public/sidhi-mala/siddha-mala-economy-371.webp differ
diff --git a/public/sidhi-mala/sidhha-feature-2_medium.png b/public/sidhi-mala/sidhha-feature-2_medium.png
new file mode 100644
index 0000000..7a2a3b7
Binary files /dev/null and b/public/sidhi-mala/sidhha-feature-2_medium.png differ
diff --git a/public/since_1970.webp b/public/since_1970.webp
new file mode 100644
index 0000000..8f14c7e
Binary files /dev/null and b/public/since_1970.webp differ
diff --git a/public/support_banner.jpg b/public/support_banner.jpg
new file mode 100644
index 0000000..4f3f398
Binary files /dev/null and b/public/support_banner.jpg differ
diff --git a/public/temple.jpeg b/public/temple.jpeg
new file mode 100644
index 0000000..9fb501d
Binary files /dev/null and b/public/temple.jpeg differ
diff --git a/tailwind.config.js b/tailwind.config.js
new file mode 100644
index 0000000..d0621b6
--- /dev/null
+++ b/tailwind.config.js
@@ -0,0 +1,87 @@
+/** @type {import('tailwindcss').Config} */
+module.exports = {
+ darkMode: ["class"],
+ content: [
+ "./pages/**/*.{js,ts,jsx,tsx,mdx}",
+ "./components/**/*.{js,ts,jsx,tsx,mdx}",
+ "./app/**/*.{js,ts,jsx,tsx,mdx}",
+ ],
+ theme: {
+ extend: {
+ fontFamily: {
+ serif: ["Questrial", "serif"],
+ emilys: ['"Emilys Candy"', 'cursive'],
+ },
+ colors: {
+ background: "hsl(var(--background))",
+ foreground: "hsl(var(--foreground))",
+ card: {
+ DEFAULT: "hsl(var(--card))",
+ foreground: "hsl(var(--card-foreground))",
+ },
+ popover: {
+ DEFAULT: "hsl(var(--popover))",
+ foreground: "hsl(var(--popover-foreground))",
+ },
+ primary: {
+ DEFAULT: "hsl(var(--primary))",
+ foreground: "hsl(var(--primary-foreground))",
+ },
+ secondary: {
+ DEFAULT: "hsl(var(--secondary))",
+ foreground: "hsl(var(--secondary-foreground))",
+ },
+ muted: {
+ DEFAULT: "hsl(var(--muted))",
+ foreground: "hsl(var(--muted-foreground))",
+ },
+ accent: {
+ DEFAULT: "hsl(var(--accent))",
+ foreground: "hsl(var(--accent-foreground))",
+ },
+ destructive: {
+ DEFAULT: "hsl(var(--destructive))",
+ foreground: "hsl(var(--destructive-foreground))",
+ },
+ border: "hsl(var(--border))",
+ input: "hsl(var(--input))",
+ ring: "hsl(var(--ring))",
+ chart: {
+ 1: "hsl(var(--chart-1))",
+ 2: "hsl(var(--chart-2))",
+ 3: "hsl(var(--chart-3))",
+ 4: "hsl(var(--chart-4))",
+ 5: "hsl(var(--chart-5))",
+ },
+ },
+ borderRadius: {
+ lg: "var(--radius)",
+ md: "calc(var(--radius) - 2px)",
+ sm: "calc(var(--radius) - 4px)",
+ },
+ keyframes: {
+ "accordion-down": {
+ from: {
+ height: "0",
+ },
+ to: {
+ height: "var(--radix-accordion-content-height)",
+ },
+ },
+ "accordion-up": {
+ from: {
+ height: "var(--radix-accordion-content-height)",
+ },
+ to: {
+ height: "0",
+ },
+ },
+ },
+ animation: {
+ "accordion-down": "accordion-down 0.2s ease-out",
+ "accordion-up": "accordion-up 0.2s ease-out",
+ },
+ },
+ },
+ plugins: [require("tailwindcss-animate")],
+};
diff --git a/utils/axios.js b/utils/axios.js
new file mode 100644
index 0000000..66627e7
--- /dev/null
+++ b/utils/axios.js
@@ -0,0 +1,23 @@
+import axios from 'axios';
+
+export const backendUrl = process.env.NEXT_PUBLIC_BACKEND_URL;
+
+const authAxios = axios.create({
+ baseURL: backendUrl,
+});
+
+authAxios.interceptors.request.use(
+ (config) => {
+ const token = localStorage.getItem('token');
+ if (token) {
+ config.headers.Authorization = `Token ${token}`;
+ }
+ return config;
+ },
+ (error) => {
+ console.error("Error in request interceptor:", error);
+ return Promise.reject(error);
+ }
+);
+
+export default authAxios;
diff --git a/utils/index.js b/utils/index.js
new file mode 100644
index 0000000..c273408
--- /dev/null
+++ b/utils/index.js
@@ -0,0 +1,187 @@
+import {
+ Grid,
+ Briefcase,
+ User,
+ Heart,
+ DollarSign,
+ LifeBuoy,
+ Target,
+ Activity,
+ Compass,
+} from "lucide-react";
+
+export const categoriesForPremiumThree = [
+ {
+ title: "Personal Growth Seekers",
+ description:
+ "Enhance personal growth, gain clarity, and overcome obstacles.",
+ logo: ,
+ },
+ {
+ title: "Business Owners and Entrepreneurs",
+ description:
+ "Scale your business, improve operations, and navigate challenges.",
+ logo: ,
+ },
+ {
+ title: "Professionals Seeking Career Development",
+ description:
+ "Plan your career, enhance job search strategies, and build professional skills.",
+ logo: ,
+ },
+ {
+ title: "Individuals Facing Life Transitions",
+ description:
+ "Navigate significant life changes and find new directions for personal fulfillment.",
+ logo: ,
+ },
+ {
+ title: "Health and Wellness Enthusiasts",
+ description: "Optimize health, wellness, and live a balanced lifestyle.",
+ logo: ,
+ },
+ {
+ title: "Individuals Seeking Relationship Support",
+ description:
+ "Resolve conflicts, improve communication, and build healthier relationships.",
+ logo: ,
+ },
+ {
+ title: "Financial Planning and Wealth Management",
+ description: "Optimize finances, plan for retirement, and grow wealth.",
+ logo: ,
+ },
+ {
+ title: "Anyone Seeking Clarity and Direction",
+ description: "Overcome feeling stuck, gain perspective, and find purpose.",
+ logo: ,
+ },
+];
+
+export const productsCards = [
+ {
+ id: 1,
+ title: "17 Mukhi Rudraksha 34MM",
+ logo: "/17-mukhi34.png",
+ },
+ {
+ id: 2,
+ title: "17 Mukhi Rudraksha 31MM",
+ logo: "/17mukhi-31.png",
+ },
+ {
+ id: 3,
+ title: "18 Mukhi Rudraksha 33MM",
+ logo: "/18-mukhi-rudraksha-27mm-2158-224.png",
+ },
+ {
+ id: 4,
+ title: "25 Mukhi Rudraksha 35mm",
+ logo: "/25-mukhi-rudraksha-35mm-1178-144.png",
+ },
+ {
+ id: 5,
+ title: "24 Mukhi Rudraksha 38mm",
+ logo: "/24-mukhi-rudraksha-38mm-1176-309.png",
+ },
+ {
+ id: 6,
+ title: "22 Mukhi Rudraksha 35mm",
+ logo: "/22-mukhi-rudraksha-35mm-1177-439.png",
+ },
+ {
+ id: 7,
+ title: "21 Mukhi Rudraksha 29mm",
+ logo: "/21-mukhi-rudraksha-29mm-2930-259.png",
+ },
+ {
+ id: 8,
+ title: "21 Mukhi Rudraksha 34mm",
+ logo: "/21-mukhi-34mm-322.png",
+ },
+];
+
+export const guranteeData = [
+ {
+ id: 1,
+ title: "Since 1973",
+ imageUrl: "/g-1_medium.png",
+ },
+ {
+ id: 2,
+ title: "Vedic Energization",
+ imageUrl: "/g-2_medium.png",
+ },
+ {
+ id: 3,
+ title: "Lab Certification",
+ imageUrl: "/g-3_medium.png",
+ },
+ {
+ id: 4,
+ title: "ISO 9001:2015 certified",
+ imageUrl: "/g-4_medium.png",
+ },
+ {
+ id: 5,
+ title: "Secure Payment",
+ imageUrl: "/g-5_medium.png",
+ },
+];
+
+export const menuItems = [
+ {
+ name: "Get a Consultation",
+ link: "/products/premium-rudraksha-consultation-astrology",
+ },
+ {
+ name: "Certification and Guarantee",
+ link: "/pages/certification-and-guarantee",
+ },
+ // { name: "Why Gupta Rudraksha?", link: "/pages/about-us" },
+ { name: "Contact Us", link: "/pages/contact-us" },
+ { name: "Blogs", link: "/blogs/blog" },
+];
+
+export const testimonials = [
+ {
+ id: 1,
+ rating: 5,
+ daysAgo: 3,
+ review: "Excellent product! It exceeded my expectations in every way.",
+ profileImg: "/api/placeholder/50/50",
+ name: "John Doe",
+ },
+ {
+ id: 2,
+ rating: 4,
+ daysAgo: 7,
+ review: "Very good quality. I'm satisfied with my purchase.",
+ profileImg: "/api/placeholder/50/50",
+ name: "Jane Smith",
+ },
+ {
+ id: 3,
+ rating: 5,
+ daysAgo: 2,
+ review: "Amazing service and product. Highly recommended!",
+ profileImg: "/api/placeholder/50/50",
+ name: "Bob Johnson",
+ },
+ {
+ id: 4,
+ rating: 5,
+ daysAgo: 5,
+ review: "Outstanding experience. Will definitely buy again!",
+ profileImg: "/api/placeholder/50/50",
+ name: "Alice Brown",
+ },
+ {
+ id: 5,
+ rating: 4,
+ daysAgo: 10,
+ review: "Great product, fast shipping. Very pleased overall.",
+ profileImg: "/api/placeholder/50/50",
+ name: "Charlie Wilson",
+ },
+];