diff --git a/.DS_Store b/.DS_Store
index a897700..db924df 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/Backend/.DS_Store b/Backend/.DS_Store
new file mode 100644
index 0000000..21361e9
Binary files /dev/null and b/Backend/.DS_Store differ
diff --git a/Dockerfile b/Backend/Dockerfile
similarity index 100%
rename from Dockerfile
rename to Backend/Dockerfile
diff --git a/README.md b/Backend/README.md
similarity index 100%
rename from README.md
rename to Backend/README.md
diff --git a/bin/app-amd64-linux b/Backend/bin/app-amd64-linux
similarity index 100%
rename from bin/app-amd64-linux
rename to Backend/bin/app-amd64-linux
diff --git a/go.mod b/Backend/go.mod
similarity index 100%
rename from go.mod
rename to Backend/go.mod
diff --git a/go.sum b/Backend/go.sum
similarity index 100%
rename from go.sum
rename to Backend/go.sum
diff --git a/main.go b/Backend/main.go
similarity index 100%
rename from main.go
rename to Backend/main.go
diff --git a/pb_bootstrap/pb_schema.json b/Backend/pb_bootstrap/pb_schema.json
similarity index 100%
rename from pb_bootstrap/pb_schema.json
rename to Backend/pb_bootstrap/pb_schema.json
diff --git a/script.sh b/Backend/script.sh
similarity index 100%
rename from script.sh
rename to Backend/script.sh
diff --git a/stripe_bootstrap/stripe-fixtures.json b/Backend/stripe_bootstrap/stripe-fixtures.json
similarity index 100%
rename from stripe_bootstrap/stripe-fixtures.json
rename to Backend/stripe_bootstrap/stripe-fixtures.json
diff --git a/Frontend/.eslintrc.json b/Frontend/.eslintrc.json
new file mode 100644
index 0000000..bffb357
--- /dev/null
+++ b/Frontend/.eslintrc.json
@@ -0,0 +1,3 @@
+{
+ "extends": "next/core-web-vitals"
+}
diff --git a/Frontend/.gitignore b/Frontend/.gitignore
new file mode 100644
index 0000000..259e99a
--- /dev/null
+++ b/Frontend/.gitignore
@@ -0,0 +1,38 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# local env files
+.env*.local
+
+# vercel
+.vercel
+
+# typescript
+*.tsbuildinfo
+next-env.d.ts
+
+# Local Netlify folder
+.netlify
diff --git a/Frontend/.nvmrc b/Frontend/.nvmrc
new file mode 100644
index 0000000..016efd8
--- /dev/null
+++ b/Frontend/.nvmrc
@@ -0,0 +1 @@
+v20.10.0
\ No newline at end of file
diff --git a/Frontend/README.md b/Frontend/README.md
new file mode 100644
index 0000000..f4da3c4
--- /dev/null
+++ b/Frontend/README.md
@@ -0,0 +1,34 @@
+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
+```
+
+Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
+
+You can start editing the page by modifying `app/page.tsx`. 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/Frontend/app/(admin)/blogs/[slug]/page.tsx b/Frontend/app/(admin)/blogs/[slug]/page.tsx
new file mode 100644
index 0000000..359bbf5
--- /dev/null
+++ b/Frontend/app/(admin)/blogs/[slug]/page.tsx
@@ -0,0 +1,84 @@
+import fs from "fs";
+import matter from "gray-matter";
+import BlogContent from "@/sections/BlogContent";
+import Link from "next/link";
+import Image from "next/image";
+import xButton from "@/images/icon-x.svg";
+import getPostMetadata from "@/utils/getPostMetaData";
+import { headers } from "next/headers";
+import React from "react";
+
+const getPostContent = (slug: string) => {
+ const folder = "blogs/";
+ const file = `${folder}${slug}.md`;
+ const content = fs.readFileSync(file, "utf8");
+ const matterResult = matter(content);
+ return matterResult;
+};
+
+export async function generateMetadata({
+ params,
+}: {
+ params: { slug: string };
+}) {
+ const { slug } = params;
+ const headersList = headers();
+ const siteURL = headersList.get("host");
+ const post = getPostContent(slug);
+
+ return {
+ title: `${post.data.title}`,
+ description: `${post.data.subtitle}`,
+ alternates: {
+ canonical: `https://${siteURL}/blogs/${slug}`,
+ },
+ };
+}
+
+export const generateStaticParams = async () => {
+ const posts = getPostMetadata();
+ return posts.map((post) => ({
+ slug: post.slug,
+ }));
+};
+
+const PostPage = (props: any) => {
+ const slug = props.params.slug;
+ const post = getPostContent(slug);
+ const showModal = props.searchParams?.modal;
+ return (
+ <>
+ {showModal ? (
+
+
+
+
+ ← Back to Blogs
+
+
+
+
+
+
+
+
+
+
+
+
+ ) : (
+
+ )}
+ >
+ );
+};
+
+export default PostPage;
diff --git a/Frontend/app/(admin)/blogs/page.tsx b/Frontend/app/(admin)/blogs/page.tsx
new file mode 100644
index 0000000..5ae41e7
--- /dev/null
+++ b/Frontend/app/(admin)/blogs/page.tsx
@@ -0,0 +1,34 @@
+import PageHeader from "@/sections/PageHeader";
+import BlogCard from "@/components/BlogCard";
+import getPostMetadata from "@/utils/getPostMetaData";
+import React from "react";
+
+export default function BlogsPage() {
+ const postMetadata = getPostMetadata();
+
+ const postPreviews = postMetadata
+ .sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime())
+ .map((post) => );
+ return (
+ <>
+ {/* Page sections */}
+
+ {" "}
+
+ Find case studies and information for how Sign365 is giving
+ businesses superpowers
+
+ >
+ }
+ />
+
+ >
+ );
+}
diff --git a/Frontend/app/(admin)/layout.tsx b/Frontend/app/(admin)/layout.tsx
new file mode 100644
index 0000000..b64798e
--- /dev/null
+++ b/Frontend/app/(admin)/layout.tsx
@@ -0,0 +1,11 @@
+import React from "react";
+
+function layout({ children }: { children: React.ReactNode }) {
+ return (
+ <>
+ {children}
+ >
+ );
+}
+
+export default layout;
diff --git a/Frontend/app/(admin)/pricing/actions.ts b/Frontend/app/(admin)/pricing/actions.ts
new file mode 100644
index 0000000..75e8a42
--- /dev/null
+++ b/Frontend/app/(admin)/pricing/actions.ts
@@ -0,0 +1,45 @@
+"use server";
+
+import { Product, Price } from "@/types";
+import pb from "@/lib/pocketbase";
+import { getAuthCookie } from "@/app/(auth)/actions";
+
+export async function apiPrices() {
+ console.log('prices')
+ try {
+ const pocketbaseUrl = process.env.NEXT_PUBLIC_POCKETBASE_URL_STRING;
+ if (!pocketbaseUrl) {
+ throw Error('Connection Timeout');
+ }
+ const productRequest = await fetch(
+ `${pocketbaseUrl}/api/collections/product/records?filter=(active=true)`,
+ {
+ cache: 'no-cache',
+ method: "GET",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ }
+ );
+ const productResponse = await productRequest.json();
+ const unsortedProducts: Product[] = productResponse.items;
+ const prices = await pb.collection("price").getFullList();
+ for (const product of unsortedProducts) {
+ product.metadata.benefits = JSON.parse(product.metadata.benefits as any);
+ const pricesOfProduct = prices.filter(price => price.product_id === product.product_id);
+ for (const priceOfProduct of pricesOfProduct){
+ if (priceOfProduct.interval === "year"){
+ product.yearlyPrice = priceOfProduct;
+ } else {
+ product.monthlyPrice = priceOfProduct;
+ }
+ }
+ }
+
+ const sortedProducts = unsortedProducts.sort((a: Product, b: Product) => a.product_order - b.product_order)
+ return sortedProducts;
+ } catch (error) {
+ console.log(error);
+ return [];
+ }
+}
\ No newline at end of file
diff --git a/Frontend/app/(admin)/pricing/page.tsx b/Frontend/app/(admin)/pricing/page.tsx
new file mode 100644
index 0000000..ea8a1c1
--- /dev/null
+++ b/Frontend/app/(admin)/pricing/page.tsx
@@ -0,0 +1,192 @@
+"use client";
+
+import React, { useEffect } from "react";
+import PageHeader from "@/sections/PageHeader";
+import { Price, Product, SourceModal } from "@/types";
+import { Check } from "@styled-icons/entypo/Check";
+import { ChangeEventHandler, useState } from "react";
+import { apiPrices } from "./actions";
+import Newsletter from "@/sections/Newsletter/Newsletter";
+import { createCheckoutSession, isAuthenticated } from "@/app/(auth)/actions";
+import { toast } from "react-toastify";
+import { useRouter } from "next/navigation";
+
+export default function PricingPage() {
+ const [isAnnual, setIsAnnual] = useState(false);
+ const [products, setProducts] = useState([]);
+
+ const handleToggle = () => {
+ setIsAnnual((prev) => !prev);
+ };
+ useEffect(() => {
+ (async () => {
+ const resposeProducts: Product[] = await apiPrices();
+ setProducts(resposeProducts);
+ })();
+ }, []);
+
+ return (
+ <>
+
+ {" "}
+
+ Select a subscription plan for your team or try advanced
+ functionality for free.
+
+ >
+ }
+ />
+
+
+
+ {products.map((x, i) => (
+
+ ))}
+
+
+
+ >
+ );
+}
+
+function PriceCard({
+ product,
+ isAnnual,
+}: {
+ product: Product;
+ isAnnual: boolean;
+}) {
+ const router = useRouter();
+ const openSignUpModalOnPriceClick = (price: Price) => {
+ const signUpModal = document.getElementById("sign-up-modal");
+ if (!signUpModal) return;
+ signUpModal.setAttribute("price_id", price.price_id);
+ signUpModal.setAttribute("name", SourceModal.SignUpViaPurchase);
+ signUpModal.click();
+ };
+ const generateCheckoutPage = async (price: Price) => {
+ try {
+ const checkoutSessionResponse = await createCheckoutSession(
+ price.price_id
+ );
+ router.push(checkoutSessionResponse.url);
+ } catch (error) {
+ if (error instanceof Error) {
+ toast.error(error.message, {
+ position: "bottom-left",
+ autoClose: 5000,
+ hideProgressBar: false,
+ closeOnClick: true,
+ pauseOnHover: true,
+ draggable: true,
+ progress: undefined,
+ theme: "colored",
+ });
+ }
+ }
+ };
+ const submitForm = async (price: Price) => {
+ const userIsAuthenticated = await isAuthenticated();
+ if (userIsAuthenticated) {
+ await generateCheckoutPage(price);
+ } else {
+ openSignUpModalOnPriceClick(price);
+ }
+ };
+ return (
+
+
+
+ {false && (
+
+ Popular
+
+ )}
+
+
+ {product.name}
+
+
+ {product.description}
+
+
+
+
+ {product.metadata?.benefits?.map((x, i) => (
+
+
+
+
+ {x}
+
+
+ ))}
+
+
+
+
+
+ $
+ {isAnnual
+ ? product.yearlyPrice.unit_amount / 100
+ : product.monthlyPrice.unit_amount / 100}
+
+
+ per user per {isAnnual ? "year" : "month"}
+
+
+
+ submitForm(isAnnual ? product.yearlyPrice : product.monthlyPrice)
+ }
+ className=" mx-auto flex text-sm font-semibold py-2 px-20 m-2 text-white bg-gradient-to-r from-pink-default to-purple-default rounded-full mb-4 cursor-pointer group-hover:animate-bounce"
+ >
+ Try it!
+
+
+
+
+ );
+}
+
+function PriceToggle({
+ isAnnual,
+ onChange,
+}: {
+ isAnnual: boolean;
+ onChange?: ChangeEventHandler;
+}) {
+ return (
+ <>
+
+
+
+ Monthly Billing
+
+
+ Yearly Billing
+
+
+ >
+ );
+}
diff --git a/Frontend/app/(admin)/signup/page.tsx b/Frontend/app/(admin)/signup/page.tsx
new file mode 100644
index 0000000..47e5da3
--- /dev/null
+++ b/Frontend/app/(admin)/signup/page.tsx
@@ -0,0 +1,37 @@
+"use client";
+import HeroHome from "@/sections/HeroHome";
+import FeaturesBlocks from "@/sections/FeaturesBlocks";
+import FeaturesZigZag from "@/sections/FeaturesZigzag";
+import Newsletter from "@/sections/Newsletter/Newsletter";
+import HeroVideo from "@/sections/HeroVideo";
+import Aos from "aos";
+import "aos/dist/aos.css";
+import { useEffect } from "react";
+import React from "react";
+import { SourceModal } from "@/types";
+
+export default function Home() {
+ useEffect(() => {
+ Aos.init({
+ delay: 50,
+ easing: "ease-out-cubic",
+ once: true,
+ offset: 50,
+ });
+ }, []);
+ useEffect(() => {
+ document.getElementById("sign-up-modal")?.setAttribute("name", SourceModal.SignUp);
+ document.getElementById("sign-up-modal")?.removeAttribute("price_id");
+ document.getElementById("sign-up-modal")?.click();
+ }, []);
+ return (
+ <>
+ {/* Page sections */}
+
+
+
+
+
+ >
+ );
+}
diff --git a/Frontend/app/(auth)/account/page.tsx b/Frontend/app/(auth)/account/page.tsx
new file mode 100644
index 0000000..ec3b7a5
--- /dev/null
+++ b/Frontend/app/(auth)/account/page.tsx
@@ -0,0 +1,25 @@
+import React from "react";
+import PageHeader from "@/sections/PageHeader";
+import { cookies } from "next/headers";
+import { getUserFromCookie } from "@/lib/auth";
+import { User } from "@/types";
+import AccountContent from "@/sections/AccountContent";
+import { redirect } from "next/navigation";
+import pb from "@/lib/pocketbase";
+
+export default async function AccountPage() {
+ const user = (await getUserFromCookie(cookies())) as User;
+ const cookie = cookies().get("pb_auth");
+ //server side
+ pb.authStore.loadFromCookie(cookie?.value || "");
+ !pb.authStore.isValid && redirect("/");
+ return (
+ user && (
+ <>
+ >} />
+
+
+ >
+ )
+ );
+}
diff --git a/Frontend/app/(auth)/actions.ts b/Frontend/app/(auth)/actions.ts
new file mode 100644
index 0000000..067488c
--- /dev/null
+++ b/Frontend/app/(auth)/actions.ts
@@ -0,0 +1,254 @@
+"use server";
+
+import { redirect } from "next/navigation";
+import pb from "@/lib/pocketbase";
+import { cookies } from "next/headers";
+import CryptoJS from 'crypto-js';
+
+import { CheckoutSession, SignUpForm, SourceModal, Subscription, SubscriptionSession, User } from "@/types";
+import { apiPrices } from "../(admin)/pricing/actions";
+
+export async function mailchimp(formData: {
+ email: string;
+ first_name: string;
+ last_name: string;
+ phone_number?: string;
+ company_size: string;
+ source?: SourceModal;
+}) {
+ const email = formData.email;
+ const mailchimpBaseUrl = process.env.NEXT_PUBLIC_MAILCHIMP_BASE_URL;
+ const mailchimpApiKey = process.env.NEXT_PUBLIC_MAILCHIMP_BASE64_API_KEY;
+ const mailchimpList = process.env.NEXT_PUBLIC_MAILCHIMP_LIST_ID;
+ if (!mailchimpApiKey) return;
+ try {
+ const subscriberHash = CryptoJS.MD5(email.toLocaleLowerCase());
+ const mailchimpResponse = await fetch(`${mailchimpBaseUrl}/3.0/lists/${mailchimpList}/members/${subscriberHash}`,
+ {
+ method: 'PUT',
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: mailchimpApiKey,
+ },
+ body: JSON.stringify(
+ {
+ "email_address": email,
+ status: "subscribed",
+ merge_fields: {
+ EMAIL: formData.email,
+ FNAME: formData.first_name,
+ LNAME: formData.last_name,
+ PHONE: !formData.phone_number ? '' : formData.phone_number,
+ CSIZE: formData.company_size,
+ SOURCE: formData.source
+ }
+ }
+ )
+ })
+ if (mailchimpResponse.status !== 200) {
+ throw new Error("couldn't complete the request");
+ }
+ return mailchimpResponse.json();
+ } catch (err) {
+ throw new Error("couldn't complete the request");
+ }
+}
+
+export async function signup(formData: SignUpForm) {
+ const email = formData.email;
+ const password = formData.password;
+ const organisation = formData.organisation;
+ const pocketbaseUrl = process.env.NEXT_PUBLIC_POCKETBASE_URL_STRING as string;
+ const adminToken = process.env.NEXT_PUBLIC_POCKETBASE_ADMIN_TOKEN as string;
+ try {
+ const orgRes = await fetch(
+ `${pocketbaseUrl}/api/collections/organisation/records`,
+ {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: adminToken,
+ },
+ body: JSON.stringify({
+ name: organisation,
+ }),
+ }
+ );
+ console.log("orgRes.status: ", orgRes.status);
+ if (orgRes.status !== 200) {
+ throw new Error("Failed to create organisation");
+ }
+ const orgData = await orgRes.json();
+ console.log(orgData);
+ const userRes = await fetch(
+ `${pocketbaseUrl}/api/collections/user/records`,
+ {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: adminToken,
+ },
+ body: JSON.stringify({
+ firstName: formData.first_name,
+ lastName: formData.last_name,
+ displayName: formData.first_name + ' ' + formData.last_name,
+ email: email,
+ password: password,
+ passwordConfirm: password,
+ organisation: orgData?.id,
+ role: "Admin",
+ lastSeen: new Date(),
+ }),
+ }
+ );
+ console.log("userRes.status: ", userRes.status);
+ if (userRes.status !== 200) {
+ console.log(userRes);
+ throw new Error("Failed to create user");
+ }
+ } catch (err) {
+ if (err instanceof Error) {
+ throw new Error(err.message);
+ }
+ }
+}
+
+export async function login(formData: { email: string; password: string }) {
+ console.log('login')
+ const email = formData.email as string;
+ const password = formData.password as string;
+ try {
+ const { token, record: data } = await pb
+ .collection("user")
+ .authWithPassword(email, password);
+ if (pb.authStore.isValid) {
+ const cookie = pb.authStore.exportToCookie();
+
+ cookies().set("pb_auth", cookie, {
+ secure: true,
+ path: "/",
+ sameSite: "strict",
+ httpOnly: true,
+ });
+ }
+ return { success: true, error: "Failed to log in", token: token, data: data };
+ } catch (error) {
+ throw error;
+ }
+}
+
+export async function getAuthCookie() {
+ try {
+ const cookie = cookies().get('pb_auth');
+ pb.authStore.loadFromCookie(cookie?.value || '');
+ return pb.authStore.token;
+ } catch (error) {
+ return undefined;
+ }
+}
+
+export async function isAuthenticated() {
+ try {
+ const cookie = cookies().get('pb_auth');
+ if(!cookie) return false;
+ pb.authStore.loadFromCookie(cookie?.value || '');
+ return pb.authStore.isValid || false;
+ } catch (error) {
+ return undefined;
+ }
+}
+
+export async function logout() {
+ cookies().delete("pb_auth");
+ redirect('/blogs');
+}
+
+export async function createCheckoutSession(price_id: string) {
+ const pocketbaseUrl = process.env.NEXT_PUBLIC_POCKETBASE_URL_STRING;
+ if (!pocketbaseUrl) {
+ throw Error('Connection Timeout');
+ }
+ if (!price_id) {
+ throw Error('There was an error during the payment processing');
+ }
+ const token = await getAuthCookie();
+ if (!token) {
+ throw Error('Could not authenticate');
+ }
+ console.log('token', token);
+ console.log('url ', `${pocketbaseUrl}/create-checkout-session`);
+ try{
+ const createCheckoutSessionResponse = await fetch(
+ `${pocketbaseUrl}/create-checkout-session`,
+ {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: token,
+ },
+ body: JSON.stringify({
+ price: {
+ id: price_id,
+ type: "recurring"
+ },
+ quantity: 1
+ }),
+ }
+ );
+ console.log('createCheckoutSessionResponse.status', createCheckoutSessionResponse.status)
+ if (createCheckoutSessionResponse.status !== 200) {
+ throw new Error("Failed to process Request");
+ }
+ const createCheckoutSessionData: CheckoutSession = await createCheckoutSessionResponse.json();
+ return createCheckoutSessionData;
+ } catch (error) {
+ throw error;
+ }
+}
+
+export async function getSubscriptions() {
+ const cookie = cookies().get('pb_auth');
+ pb.authStore.loadFromCookie(cookie?.value || '');
+ const userId = (pb.authStore.model as User).id
+ const subscriptions = await pb.collection("subscription").getFullList({filter: `user_id="${userId}" && status="active"`});
+ if (subscriptions.length === 0){
+ return [];
+ }
+ const products = await apiPrices();
+ const subscriptionWithProducts = subscriptions.map(subscription => {return {...subscription, product: products.find(product => product?.yearlyPrice?.price_id === subscription.price_id || product?.monthlyPrice?.price_id === subscription.price_id)}}) as Subscription[]
+ return subscriptionWithProducts;
+}
+
+export async function createManagementSubscriptionSession() {
+ const pocketbaseUrl = process.env.NEXT_PUBLIC_POCKETBASE_URL_STRING;
+ if (!pocketbaseUrl) {
+ throw Error('Connection Timeout');
+ }
+ const token = await getAuthCookie();
+ if (!token) {
+ throw Error('Could not authenticate');
+ }
+ console.log('token', token);
+ console.log('url ', `${pocketbaseUrl}/create-checkout-session`);
+ try{
+ const createManagementSessionResponse = await fetch(
+ `${pocketbaseUrl}/create-portal-link`,
+ {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: token,
+ },
+ body: JSON.stringify({}),
+ }
+ );
+ console.log('createCheckoutSessionResponse.status', createManagementSessionResponse.status)
+ if (createManagementSessionResponse.status !== 200) {
+ throw new Error("Failed to process Request");
+ }
+ const createManagementSessionData: SubscriptionSession = await createManagementSessionResponse.json();
+ return createManagementSessionData;
+ } catch (error) {
+ throw error;
+ }
+}
\ No newline at end of file
diff --git a/Frontend/app/favicon.ico b/Frontend/app/favicon.ico
new file mode 100644
index 0000000..cea8d6a
Binary files /dev/null and b/Frontend/app/favicon.ico differ
diff --git a/Frontend/app/globals.css b/Frontend/app/globals.css
new file mode 100644
index 0000000..dad9ac6
--- /dev/null
+++ b/Frontend/app/globals.css
@@ -0,0 +1,29 @@
+
+
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+:root {
+ --foreground-rgb: 0, 0, 0;
+ --background-start-rgb: 214, 219, 220;
+ --background-end-rgb: 255, 255, 255;
+}
+
+@media (prefers-color-scheme: dark) {
+ :root {
+ --foreground-rgb: 255, 255, 255;
+ --background-start-rgb: 0, 0, 0;
+ --background-end-rgb: 0, 0, 0;
+ }
+}
+
+body {
+ color: rgb(var(--foreground-rgb));
+ background: linear-gradient(
+ to bottom,
+ transparent,
+ rgb(var(--background-end-rgb))
+ )
+ rgb(var(--background-start-rgb));
+}
diff --git a/Frontend/app/layout.tsx b/Frontend/app/layout.tsx
new file mode 100644
index 0000000..7476d5d
--- /dev/null
+++ b/Frontend/app/layout.tsx
@@ -0,0 +1,77 @@
+import "./globals.css";
+import type { Metadata } from "next";
+import "@/styles/style.css";
+import { Arimo, Raleway } from "next/font/google";
+import { ToastContainer, toast } from "react-toastify";
+import "react-toastify/dist/ReactToastify.css";
+import Footer from "@/components/Footer";
+import Header from "@/components/Header";
+import { cookies } from "next/headers";
+import { isAuthenticated } from "@/lib/auth";
+import Script from "next/script";
+import React from "react";
+import { PHProvider } from "./providers";
+import GoogleAnalytics from "@/components/GoogleAnalytics";
+import PrelineScript from "@/components/PrelineScript";
+
+const raleway = Raleway({
+ variable: "--display-font",
+ subsets: ["latin"],
+});
+
+const arimo = Arimo({
+ variable: "--body-font",
+ subsets: ["latin"],
+});
+
+export const metadata: Metadata = {
+ title: "Sign365",
+ description:
+ "Sign365 is your window into freedom from paper work. Get the paper work to do itself",
+};
+
+export default async function RootLayout({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ const isUserLoggedIn = await isAuthenticated(cookies());
+ return (
+
+
+
+ {process.env.NEXT_PUBLIC_GOOGLE_ANALYTICS ? (
+
+ ) : null}
+
+ {/* Page content */}
+
+ {/* Site header */}
+
+
+
+ {children}
+
+
+
+
+
+ {/* Site footer */}
+
+
+
+
+
+ );
+}
diff --git a/Frontend/app/page.tsx b/Frontend/app/page.tsx
new file mode 100644
index 0000000..d07e0bc
--- /dev/null
+++ b/Frontend/app/page.tsx
@@ -0,0 +1,36 @@
+"use client";
+import HeroHome from "@/sections/HeroHome";
+import FeaturesBlocks from "@/sections/FeaturesBlocks";
+import FeaturesZigZag from "@/sections/FeaturesZigzag";
+import Newsletter from "@/sections/Newsletter/Newsletter";
+import HeroVideo from "@/sections/HeroVideo";
+import Aos from "aos";
+import "aos/dist/aos.css";
+import { useEffect } from "react";
+import React from "react";
+import { FrequentlyAsked } from "@/sections/FrequentlyAsked";
+import { Testimonial } from "@/sections/Testimonial";
+
+export default function Home() {
+ useEffect(() => {
+ Aos.init({
+ delay: 50,
+ easing: "ease-out-cubic",
+ once: true,
+ offset: 50,
+ });
+ }, []);
+
+ return (
+ <>
+ {/* Page sections */}
+
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/Frontend/app/providers.js b/Frontend/app/providers.js
new file mode 100644
index 0000000..19216f4
--- /dev/null
+++ b/Frontend/app/providers.js
@@ -0,0 +1,13 @@
+'use client'
+import posthog from 'posthog-js'
+import { PostHogProvider } from 'posthog-js/react'
+
+if (typeof window !== 'undefined') {
+ posthog.init(process.env.NEXT_PUBLIC_POSTHOG_KEY, {
+ api_host: process.env.NEXT_PUBLIC_POSTHOG_HOST
+ })
+}
+
+export function PHProvider({ children }) {
+ return {children}
+}
\ No newline at end of file
diff --git a/Frontend/blogs/a-founders-message-to-group-training-organisations.md b/Frontend/blogs/a-founders-message-to-group-training-organisations.md
new file mode 100644
index 0000000..4ea6e39
--- /dev/null
+++ b/Frontend/blogs/a-founders-message-to-group-training-organisations.md
@@ -0,0 +1,30 @@
+---
+title: "A Founder Message To Group Training Organisations"
+subtitle: "Are you tired of the endless paperwork and manual processes that come with managing documents in your organization? It's time to revolutionize the way we handle these tasks and focus on what truly matters – growing your business and nurturing your apprentices."
+date: "2024-02-3"
+image: "/images/a-founders-message-to-group-training-organisations-0.png"
+---
+
+Are you tired of the endless paperwork and manual processes that come with managing documents in your organization? It's time to revolutionize the way we handle these tasks and focus on what truly matters – growing your business and nurturing your apprentices.
+
+
+
+At Sign 365, we're on a mission to transform the document management landscape. We understand the struggles that Group Training Organizations (GTOs) across Australia face daily. The busy work of collecting apprentice information, scanning documents, and dealing with cumbersome contract signing processes can be overwhelming. That's why we're here to streamline these tasks and give you back your valuable time.
+
+Imagine a world where supervisors can easily gather data on-site without the hassle of offline issues or complicated software. Where admin staff no longer spend countless hours inputting data into systems like Workforce One or various CRM and payroll systems. That's the world Sign 365 is creating.
+
+# Built for Group Training Orginisations
+
+Our first client, a medium-sized GTO with about 300 apprentices, faced these exact challenges. They needed a solution that was not only effective but simple for their supervisors to use. By working closely with them, we were able to automate their paper flow and reduce the time spent on manual data entry by an astounding 80%. That's turning 20 hours of work into just 4 hours – a true game-changer.
+
+Sign 365 isn't just an app; it's a powerful software designed to automate your systems, ensuring accuracy and eliminating the need for double-handling data. With our solution, information entered by supervisors on-site will seamlessly integrate into your existing systems, such as Workforce One or Xero.
+
+# Upgraded Workflows
+
+If you're interested in upgrading your workflow and freeing up time to focus on what's important, Sign 365 is the answer. Contact us at [hello@sign365.com.au](mailto:hello@sign365.com.au) to discuss how we can help you automate your paperwork and create a more efficient workflow for your organization. to discuss how we can help you automate your paperwork and create a more efficient workflow for your organization.
+
+Let's work smarter, not harder, and let Sign 365 take the burden of paperwork off your shoulders. Reach out today and take the first step towards a more streamlined and productive future. Cheers to less paperwork and more progress!
diff --git a/Frontend/blogs/adobe-fill-and-sign-vs-docusign.md b/Frontend/blogs/adobe-fill-and-sign-vs-docusign.md
new file mode 100644
index 0000000..f3be671
--- /dev/null
+++ b/Frontend/blogs/adobe-fill-and-sign-vs-docusign.md
@@ -0,0 +1,42 @@
+---
+title: "Adobe Fill and Sign vs Docusign"
+subtitle: "Adobe Fill and Sign vs Docusign comparison"
+date: "2021-08-14"
+image: "/images/blog/adobedocusign.png"
+---
+
+In the digital age, eSignature solutions have become a necessity for businesses of all sizes. Two of the leading players in this field are Adobe Fill And Sign and DocuSign. This blog post will provide a comprehensive comparison of these two platforms, focusing on their features, document generation and management, security and compliance, integrations, and customer support.
+
+## Features
+
+Adobe Fill And Sign is a simple, straightforward tool that enables users to fill, sign, and send forms from their desktop or mobile device. It supports PDF, Word, and Excel formats, and allows users to create their own signature.
+
+On the other hand, DocuSign offers a more robust set of features. In addition to eSignature capabilities, it provides advanced form tooling, which is particularly beneficial for small businesses. Users can create custom fields, set up automatic reminders, and track document status in real-time.
+
+## Document Generation and Management Features
+
+Adobe Fill And Sign allows users to upload documents from their device or cloud storage, fill them out, and sign them. However, it lacks advanced document management features.
+
+DocuSign, in contrast, offers a comprehensive document management system. Users can generate, send, and manage documents from one central location. They can also set up workflows to automate the signing process, saving time and reducing errors.
+
+## Security and Compliance
+
+Both Adobe Fill And Sign and DocuSign prioritize security. They use encryption to protect documents and comply with global eSignature laws. However, DocuSign goes a step further by offering advanced security features like secure fields, audit trails, and multi-factor authentication.
+
+## Integrations
+
+Adobe Fill And Sign integrates with Adobe's own suite of products. DocuSign, however, offers a wider range of integrations, including popular business tools like Salesforce, Google Drive, and Microsoft Office 365. This makes it easier for small businesses to streamline their workflows and improve efficiency.
+
+## Customer Support
+
+Both platforms offer customer support, but DocuSign's support is more comprehensive. It includes 24/7 phone and email support, a knowledge base, and community forums.
+
+## So Which eSignature Solution is Right for You?
+
+While both Adobe Fill And Sign and DocuSign offer valuable eSignature solutions, DocuSign stands out for its advanced features, comprehensive document management, robust security, and wide range of integrations. It's particularly beneficial for small businesses that need better form tooling.
+
+## Ready to Switch from Adobe Fill And Sign to DocuSign?
+
+If you're a small business looking to streamline your document management and improve efficiency, DocuSign is the clear choice. Its advanced features and integrations make it a powerful tool for businesses of all sizes.
+
+In conclusion, while Adobe Fill And Sign is a solid eSignature solution, DocuSign offers more comprehensive features that can help small businesses thrive in the digital age.
diff --git a/Frontend/blogs/adobe-fill-and-sign-vs-sign-now.md b/Frontend/blogs/adobe-fill-and-sign-vs-sign-now.md
new file mode 100644
index 0000000..2f4517d
--- /dev/null
+++ b/Frontend/blogs/adobe-fill-and-sign-vs-sign-now.md
@@ -0,0 +1,36 @@
+---
+title: "Adobe Fill and Sign vs Sign Now"
+subtitle: "I used GPT-3 to generate poetry and other creative content."
+date: "2021-08-27"
+image: "/images/blog/adobesignnow.png"
+---
+
+When it comes to digital document management and eSignature solutions, Adobe Fill And Sign and signNow are two of the leading contenders. But which one is the best fit for your small business? Let's delve into a detailed comparison to help you make an informed decision.
+
+## Features
+
+Adobe Fill And Sign offers a basic set of features, including form filling and signing, sending for signature, and tracking. However, signNow goes beyond the basics, providing advanced features like bulk sending, document groups, and conditional fields. These features make signNow a more robust and flexible solution, particularly for small businesses that need better form tooling.
+
+## Document Generation and Management Features
+
+Both Adobe Fill And Sign and signNow offer document generation and management features. However, signNow stands out with its superior form tooling capabilities. It allows users to create complex forms with ease, thanks to its intuitive and user-friendly interface. signNow's document management system is also more comprehensive, enabling users to organize, track, and store documents efficiently.
+
+## Security and Compliance
+
+Security is paramount in any eSignature solution. Both Adobe Fill And Sign and signNow offer robust security measures, including SSL encryption and compliance with global eSignature laws. However, signNow takes security a step further with its SOC 2 Type II certification, ensuring your documents are secure and your data is protected.
+
+## Integrations
+
+While Adobe Fill And Sign integrates with Adobe's suite of products, signNow offers a broader range of integrations. It seamlessly integrates with popular business tools like Salesforce, Google Suite, and Office 365, making it a more versatile solution for small businesses.
+
+## Customer Support
+
+Customer support is another critical factor to consider. While Adobe Fill And Sign offers basic support options, signNow offers 24/7 customer support, ensuring you get the help you need, whenever you need it.
+
+## So Which eSignature Solution is Right for You?
+
+When it comes to choosing the right eSignature solution for your small business, it's clear that signNow offers more advanced features, better form tooling, superior security, more integrations, and better customer support. It's a comprehensive solution designed to meet the unique needs of small businesses.
+
+## Ready to Switch from Adobe Fill And Sign to signNow?
+
+If you're ready to take your document management to the next level, it's time to switch to signNow. With its robust features, superior form tooling, and excellent customer support, signNow is the ideal eSignature solution for small businesses. Make the switch today and experience the signNow difference for yourself.
diff --git a/Frontend/blogs/creating-custom-forms-a-step-by-step-guide.md b/Frontend/blogs/creating-custom-forms-a-step-by-step-guide.md
new file mode 100644
index 0000000..91c5ce3
--- /dev/null
+++ b/Frontend/blogs/creating-custom-forms-a-step-by-step-guide.md
@@ -0,0 +1,42 @@
+---
+title: "Creating Custom Forms: A Step-by-Step Guide"
+subtitle: "Creating custom forms for your day-to-day occupation in different industries particularly in businesses can be a valuable skill, yet many businesses struggle to find the right software to develop and use these forms effectively. In this blog post, we are going to dive into a powerful tool called Wondershare PDFelement that allows you to instantly create and customize your own PDF forms. Follow along as we break down the process step-by-step."
+date: "2024-01-16"
+image: "/images/creating-custom-forms-a-step-by-step-guide-0.png"
+---
+
+Creating custom forms for your day-to-day occupation in different industries particularly in businesses can be a valuable skill, yet many businesses struggle to find the right software to develop and use these forms effectively. In this blog post, we are going to dive into a powerful tool called Wondershare PDFelement that allows you to instantly create and customize your own PDF forms. Follow along as we break down the process step-by-step.
+
+# Step 1: Downloading Wondershare PDFelement
+
+To begin, search for "Wondershare PDFelement" on your preferred search engine. Visit the official website and click on the "Free Download" button. The software is available for both Mac and Windows systems. Once the download is complete, follow the prompts to install PDFelement on your computer.
+
+
+
+# Step 2: Opening the PDF in PDFelement
+
+Now that you successfully download the software. You can proceed to Open PDFelement, click on "Open a PDF," and locate the desired PDF you wanted to customize. Open the PDF in PDFelement and make any necessary adjustments to the layout or formatting.
+
+
+
+# Step 3: Adding Form Elements
+
+To make your PDF form fillable, you need to add form elements such as text fields and checkboxes. In PDFelement, select the form element you want to add, such as a checkbox, and overlay it onto your form. Adjust the sizing and position until it meets your requirements. Copy and paste the form element to add more fields as needed.
+
+
+
+# Step 4: Customizing Form Elements and Naming Fields
+
+To ensure each form element is unique and identifiable, customize the appearance and name of each field. Renaming fields is especially important if you plan to collect data using a form processing application like Sign 365. Double-check that each checkbox or text field has a unique name under the "General" tab in PDFelement.
+
+
+
+# Step 5: Preview and Finalize Your Form
+
+Once you have added all the necessary form elements, preview your form to ensure everything is functioning correctly. Make any additional adjustments to the layout or appearance if needed. Save your customized form in PDF format.
+
+
+
+# Conclusion
+
+Creating custom forms for your business or work doesn't have to be a daunting task. With tools like Wondershare PDFelement you can develop professional and user-friendly PDF forms. By following the steps outlined in this blog post, you’ll be able do well on your way to customs such forms that bring further value to your business.
diff --git a/Frontend/blogs/docusign-vs-signnow.md b/Frontend/blogs/docusign-vs-signnow.md
new file mode 100644
index 0000000..ae7ace0
--- /dev/null
+++ b/Frontend/blogs/docusign-vs-signnow.md
@@ -0,0 +1,40 @@
+---
+title: "Docusign vs. signNow"
+subtitle: "Docusign vs. signNow comparison"
+date: "2021-08-14"
+image: "/images/blog/docusignsignnow.png"
+---
+
+In the digital age, eSignature solutions have become a necessity for businesses of all sizes. Today, we're comparing two popular platforms: Adobe Fill And Sign and Sign365.
+
+## Features
+
+Adobe Fill And Sign offers a straightforward, user-friendly interface for signing documents. It allows users to fill, sign, and send forms quickly. However, it lacks advanced features like document tracking and custom branding.
+
+On the other hand, Sign365 provides a comprehensive suite of features, including document tracking, custom branding, and bulk sending. It also offers a unique feature called 'conditional fields,' which allows you to customize your documents based on the recipient's responses.
+
+## Document Generation and Management Features
+
+Adobe Fill And Sign allows users to create and manage documents, but it lacks the advanced document generation and management features offered by Sign365. With Sign365, you can generate documents from templates, organize them into folders, and track their status in real-time.
+
+## Security and Compliance
+
+Both Adobe Fill And Sign and Sign365 prioritize security. Adobe uses Adobe Document Cloud to store documents, while Sign365 uses a secure cloud storage system. However, Sign365 goes a step further by offering advanced security features like two-factor authentication and audit trails.
+
+## Integrations
+
+Adobe Fill And Sign integrates with Adobe's suite of products but lacks integration with other business tools. Conversely, Sign365 integrates with a wide range of business tools, including Salesforce, Google Drive, and Dropbox, making it a more versatile solution.
+
+## Customer Support
+
+While Adobe offers customer support, some users have reported slow response times. Sign365, however, is known for its excellent customer support, offering 24/7 assistance via phone, email, and live chat.
+
+## So Which eSignature Solution is Right for You?
+
+If you're looking for a simple, user-friendly solution, Adobe Fill And Sign may be the right choice. However, if you need advanced features, integrations, and excellent customer support, Sign365 is the superior option.
+
+## Ready to Switch from Adobe Fill And Sign to Sign365?
+
+If you're ready to make the switch, Sign365 offers a seamless transition process. With its robust features, excellent customer support, and advanced security measures, Sign365 is a powerful eSignature solution that can meet the needs of any business.
+
+In conclusion, while Adobe Fill And Sign offers a simple solution for signing documents, Sign365 provides a more comprehensive and versatile platform for businesses.
diff --git a/Frontend/blogs/does-microsoft-forms-work-offline.md b/Frontend/blogs/does-microsoft-forms-work-offline.md
new file mode 100644
index 0000000..209ae74
--- /dev/null
+++ b/Frontend/blogs/does-microsoft-forms-work-offline.md
@@ -0,0 +1,36 @@
+---
+title: "Does Microsoft Forms Work Offline?"
+subtitle: "CodeHouse is a leading provider of services for group training organizations in Australia, handling around 80% of these groups. Their expertise helps ensure that apprenticeship training is high quality and effective. "
+date: "2024-02-6"
+image: "/images/does-microsoft-forms-work-offline-0.png"
+---
+
+Microsoft Forms, previously known as Microsoft InfoPath, allows users to create and distribute forms that can be filled out online. However, Microsoft Forms itself does not have native offline capabilities. The service is designed to work in conjunction with other services like SharePoint and SQL databases, allowing forms to be filled out online and then synced back to the central database once an internet connection is restored.
+
+# Microsoft Forms Doesn't Support Offline Data Collection
+
+For scenarios where offline capabilities are needed, InfoPath, which is now deprecated, allowed users to design templates that could be filled out offline. These templates contained secondary data connections that provided data from an external database, and the forms could be filled out and later submitted when the user returned to a networked environment. The data required to fill out the forms had to be available locally, either within the form template or in a cache on the user's computer 1.
+
+If you require offline functionality similar to what InfoPath offered, you would need to implement custom solutions or explore third-party tools that can replicate this behavior. As of my knowledge cutoff in April 2023, Microsoft has not released a successor to InfoPath with built-in offline capabilities. Therefore, for modern applications requiring offline form functionality, developers typically build mobile apps or web applications that sync data when online.
+
+## What are some offline form options:
+
+### Jotform:
+
+Jotform emerges as a versatile solution, boasting an extensive array of templates that cater to diverse data collection needs. Its kiosk mode enhances user-friendliness in offline scenarios, ensuring that data collection remains unhindered. The platform supports both offline and online modes, allowing for seamless transitions between connectivity states. Jotform offers a free version that accommodates up to 5 forms, while more advanced features come at a cost of $39 USD/user/month. Additionally, the platform provides responsive chat and email support, enhancing its appeal for users seeking a comprehensive solution.
+
+### Clappia:
+
+Clappia takes a unique approach by offering users the ability to create custom apps tailored to their specific requirements. Beyond just forms, Clappia expands its utility by providing additional app options. This flexibility ensures that users can design solutions that go beyond standard form functionalities. Clappia's pricing structure includes a free option for a single form, with more advanced features available at $6 USD/user/month. The platform distinguishes itself further by offering responsive chat and email support, emphasizing its commitment to user satisfaction.
+
+### Google Forms Synchronise:
+
+For users deeply ingrained in the Google ecosystem, the Google Forms Synchronise option provides a bridge between the familiarity of Google Forms and the need for offline functionality. While this solution may serve adequately for those with moderate offline data collection requirements, its capabilities may not match the dedicated offline solutions offered by other alternatives.
+
+### Sign365:
+
+Sign365 stands out for its simplicity in user interface and customization options, making it a user-friendly choice for those seeking efficiency. By enabling the creation of custom forms using PDFs, Sign365 provides a straightforward integration step for transmitting data to systems once internet connectivity is restored. Priced at $5 AUD/user/month, the platform offers the enticing feature of unlimited forms, accompanied by the added advantage of phone support. This combination of simplicity, unlimited forms, and phone support positions Sign365 as an attractive choice for users seeking a cost-effective and well-supported solution.
+
+## What Option is Best:
+
+The decision-making process among these alternatives revolves around a careful consideration of specific needs, preferences, and constraints. Jotform, with its extensive templates, is an ideal choice for those seeking a feature-rich solution. On the other hand, Clappia appeals to users valuing the ability to create custom apps beyond traditional forms. Google Forms Synchronise caters to individuals deeply integrated into the Google ecosystem, offering a bridge between familiarity and offline functionality. Sign365, with its simplicity, unlimited forms, and phone support, presents a compelling choice for users looking for a cost-effective solution.
diff --git a/Frontend/blogs/free-group-training-forms.md b/Frontend/blogs/free-group-training-forms.md
new file mode 100644
index 0000000..d20dbf9
--- /dev/null
+++ b/Frontend/blogs/free-group-training-forms.md
@@ -0,0 +1,59 @@
+---
+title: "Free Group Training Forms"
+subtitle: "In the dynamic landscape of labor hire, efficiency is paramount, and innovation is the key to staying ahead. As forward-thinking pioneers in the industry, your commitment to streamlining processes is crucial. One way to achieve this is by leveraging the power of free templates and creating customized forms that meet the unique needs of your labor hire company. If you are interested in doing this keep reading and we will give you a special template to help you get started in your form filling."
+date: "2024-01-19"
+image: "/images/example-training-form-template-0.png"
+---
+
+In the dynamic landscape of labor hire, efficiency is paramount, and innovation is the key to staying ahead. As forward-thinking pioneers in the industry, your commitment to streamlining processes is crucial. One way to achieve this is by leveraging the power of free templates and creating customized forms that meet the unique needs of your labor hire company. If you are interested in doing this keep reading and we will give you a special template to help you get started in your form filling.
+
+## The Power of Free Templates:
+
+Free templates are invaluable resources for labor hire companies seeking simplicity and effectiveness in their operations. Whether you're onboarding new hires, conducting training sessions, or managing workforce logistics, having ready-made templates can significantly boost your efficiency. They serve as a solid foundation, allowing you to focus on what matters most – your workforce.
+
+## Building Templates on Canva: A Simple Guide:
+
+1. **Accessing Canva:**
+
+ - Begin by visiting Canva's user-friendly platform.
+ - Sign in or create a new account to get started.
+
+2. **Selecting a Template:**
+
+ - Explore Canva's extensive template library.
+ - Choose a category or use the search bar to find templates relevant to your labor hire business.
+
+3. **Customizing Your Template:**
+
+ - Click on the chosen template to enter the editing interface.
+ - Replace placeholder text with your labor hire company's details.
+ - Add your logo for a branded touch.
+
+4. **Incorporating Elements:**
+
+ - Enhance your template by adding elements such as images, icons, or dividers.
+ - Ensure the design aligns with your company's aesthetic.
+
+5. **Saving and Sharing:**
+ - Once satisfied with your template, save it.
+ - Share the template link with your team or download it for future use.
+
+## Seamless Workflow, Empowered Workforce:
+
+By harnessing the capabilities of Canva, you're not just creating forms; you're paving the way for a more streamlined workflow. Imagine a process where onboarding and training become seamless, allowing you to focus on the growth and development of your workforce. Canva's intuitive interface ensures that you don't need to be a design expert – simplicity is at the core of their platform. If you are a visual person you should also check out a video tutorial to do it:
+
+
+
+## A Template Offer for You:
+
+As a gesture of support to fellow labor hire companies, we are excited to offer a free group training form template on Canva. This template is crafted with simplicity and functionality in mind, designed to make your training sessions more efficient. To access this complimentary template, simply [right click this link > save link as](/assets/training-form.pdf) and download it.
+
+
+
+## In Conclusion:
+
+As pioneers in the labor hire industry, embracing innovation is the pathway to success. Utilizing free templates on Canva is a step towards a more efficient and streamlined operation. Empower your labor hire business by simplifying your processes and focusing on what truly matters – building a skilled and motivated workforce. Your journey to seamless operations begins with a template. Try Canva today and experience the transformative power of simplicity in design.
diff --git a/Frontend/blogs/how-sign365-reduced-supervisor-form-processing-by-80-percent.md b/Frontend/blogs/how-sign365-reduced-supervisor-form-processing-by-80-percent.md
new file mode 100644
index 0000000..28956fa
--- /dev/null
+++ b/Frontend/blogs/how-sign365-reduced-supervisor-form-processing-by-80-percent.md
@@ -0,0 +1,38 @@
+---
+title: "How we reduced supervisor paperwork by 80% "
+subtitle: "For Group Training Organizations (GTOs) across Regional Australia, the challenge of managing surveys and site visits, and collecting information, has never been more pressing. Amidst rising employee costs and growing administrative overhead, Sign365 has emerged as a forward-thinking solution to automate and digitise your document and signing process, propelling businesses towards a future where document workflows are not just streamlined, but seamless."
+date: "2024-02-01"
+image: "/images/how-sign365-reduced-supervisor-form-processing-by-80-percent-0.png"
+---
+
+For Group Training Organizations (GTOs) across Regional Australia, the challenge of managing surveys and site visits, and collecting information, has never been more pressing. Amidst rising employee costs and growing administrative overhead, Sign365 has emerged as a forward-thinking solution to automate and digitise your document and signing process, propelling businesses towards a future where document workflows are not just streamlined, but seamless.
+
+# Context and Challenge
+
+In 2018 we saw that many organisations were struggling with the amount of paperwork they were doing. With offline Google forms and related offline form software lagging behind in the ability to provide an easy custom form experience, we looked to make a system to reduce time in how GTOs performed administrative tasks. Our encounters with clients revealed a single, glaring constraint: the exponential time drained in transmuting information from offline forms into payroll systems, a fundamental operation for the continued functioning of these organizations.
+
+This complexity translated into an incessant cycle of validating, checking, and locating documents, encapsulating precious time in tasks that, although crucial to the business's heartbeat, did not require the expertise of its workforce. The rising post-COVID employee costs predicted for the coming years only intensified the need for a sustainable resolution.
+
+# Solution: Sign365 at Your Service
+
+The inception of Sign365 was to address these exact predicaments. It sprung forth as a data entry automation tool specifically designed for iPadOS, offering a triad of benefits: error management, document tracking, and cross-system document administration. By allowing the creation of customized, actionable forms that directly feed into business applications in defined ways, Sign365 streamlined the once-tedious workflow, liberating administrators from the clutches of mundane, repetitive tasks.
+
+The statistics were evident, with studies showcasing that 59% to 60% of knowledge workers craved automation in day-to-day operations like data input and email management. Sign365's philosophy pivoted on transitioning administrators from data processors to data overseers. This strategic repurposing saw a significant reduction in time spent on data entry tasks, with clients reclaiming 1-2 hours per day that traditionally squandered on manual form management.
+
+# Business Impact and Results
+
+Our implementation of Sign365 within a prominent GTO marked a turning point. By seamlessly integrating into their hefty payroll management system, we mitigated the arduous process of onboarding and assessing trainees through offline forms, promoting the effortless migration of documents. The augmentation enabled by Sign365’s robust reporting tools granted unparalleled visibility into the client's informational flow.
+
+Furthermore, the data substantiates the transformative power of transitioning from human to machine-processed data—the reduction in error rates from 40% to a mere 1% alone echoes the magnitude of this shift, not to mention the curtailing of costs associated to human error, which could accrue to an average of $3000 per incident.
+
+# Looking to the Future
+
+The trajectory of staff employment costs rings a bell of impending challenges—with the Conference Board forecasting a steep rise in wages, the highest since 2008, the onus is on businesses to wield tools like Sign365 to recoup their investments in human capital.
+
+Sign365 has laid the groundwork for a paradigm shift in processing offline forms. By extricating workers from the shackles of redundant tasks and enabling direct transmission of documented information to business apps, the platform has catalyzed a significant contraction in overhead, leading to monumental savings in time and financial resources.
+
+# Invitation to Action
+
+Is your document workflow streamlined? Is it seamless? As pioneers in the industry, we invite you to experience the world where offline form automation is not just a possibility but a reality. Try Sign365 and join a myriad of organizations in Regional Australia redefining their administrative landscape, making every second count, every form process matter—seamlessly.
+
+Sited Sources [Refer to provided text]
diff --git a/Frontend/blogs/how-to-electronically-fill-a-document.md b/Frontend/blogs/how-to-electronically-fill-a-document.md
new file mode 100644
index 0000000..7ad795b
--- /dev/null
+++ b/Frontend/blogs/how-to-electronically-fill-a-document.md
@@ -0,0 +1,26 @@
+---
+title: "How to Electronically Fill A Document"
+subtitle: "Are you tired of the endless cycle of printing, signing, and scanning documents? Do you find yourself spending more time on paperwork than on the tasks that truly matter to your business? If so, it's time to discover the game-changing solution that is Sign365."
+date: "2024-01-25"
+image: "/images/how-to-electronically-fill-a-document-0.png"
+---
+
+Are you tired of the endless cycle of printing, signing, and scanning documents? Do you find yourself spending more time on paperwork than on the tasks that truly matter to your business? If so, it's time to discover the game-changing solution that is Sign365.
+
+Sign365 is an innovative app designed to simplify and expedite the document signing process. With Sign365, you can easily upload and sign documents, ensuring a smooth and efficient workflow that saves you time and resources. This powerful tool is perfect for businesses looking to secure that all-important AAA client and streamline their administrative tasks.
+
+The user-friendly interface of Sign365 welcomes you with a prompt to add a form, making it straightforward to get started. Once you've added a form, filling it out is a breeze. The app guides you through each section, ensuring that every box is ticked and every signature is captured accurately.
+
+One of the standout features of Sign365 is its customization options. Supervisors can rename forms to better suit their needs, making organization a snap. Additionally, Sign365 integrates seamlessly with popular Group Training software like Workforce One, which is widely used in Australia for payroll management. This integration means that completed forms can be sent directly to the relevant area, be it an apprentice's file or a host client's records, with minimal effort on your part.
+
+
+
+But it's not just about convenience. Sign365 is also about significant time and cost savings. One of our Group Training Organizations (GTOs) reported an astonishing 80% reduction in administrative processing time. This translates to a considerable amount of money saved, allowing businesses to reinvest in areas that truly impact their growth, such as acquiring more apprentices.
+
+In summary, Sign365 is more than just a document signing app—it's a comprehensive solution that alleviates the administrative burden, enhances efficiency, and ultimately contributes to the success of your business. Say goodbye to the hassle of traditional document handling and embrace the simplicity and effectiveness of Sign365.
+
+Experience the difference for yourself and take the first step towards a more productive and profitable future. With Sign365, you're not just signing documents; you're signing up for success.
diff --git a/Frontend/blogs/how-to-setup-supervisor-forms-with-workforce-one.md b/Frontend/blogs/how-to-setup-supervisor-forms-with-workforce-one.md
new file mode 100644
index 0000000..7e6b2f7
--- /dev/null
+++ b/Frontend/blogs/how-to-setup-supervisor-forms-with-workforce-one.md
@@ -0,0 +1,28 @@
+---
+title: "Streamlining Apprenticeship Training with CodeHouse Workforce One"
+subtitle: "CodeHouse is a leading provider of services for group training organizations in Australia, handling around 80% of these groups. Their expertise helps ensure that apprenticeship training is high quality and effective. "
+date: "2024-02-6"
+image: "/images/how-to-setup-supervisor-forms-with-workforce-one-0.png"
+---
+
+CodeHouse is a leading provider of services for group training organizations in Australia, handling around 80% of these groups. Their expertise helps ensure that apprenticeship training is high quality and effective.
+
+# Payroll Management Simplified
+
+[Workforce One](https://www.workforceone.com.au/) is a service provided by CodeHouse that makes managing payroll for apprentices easier. It's a tool that helps keep track of money spent on apprenticeship training, allowing organizations to focus on teaching and learning.
+
+# Creating Surveys and Questionnaires
+
+[Workforce One](https://www.workforceone.com.au/) lets you create your own surveys and questionnaires right inside the system. This is useful for getting feedback from supervisors and apprentices, helping to make sure that the training is going well. It is able to do this online with it's own in built systems that directly link to Workforce One
+
+# Offline Solutions
+
+If you need to work without an internet connection, CodeHouse has partnered with Sign365. It's a tool that works like paper but is easier to use and safer. It keeps important information safe and organized, no matter if you're connected to the internet or not. It does this by using your iPhone or iPad to store your forms until you get back online where it will automatically send those forms to Workforce One
+
+# Automating Tasks
+
+Sign365 can also connect with other systems, making it easier to work with different tools. This helps save time and reduce mistakes, making everything run more smoothly. Most tasks that you do to get useful documents are not necessary with Sign365's automation tools. You will be able to save 20 hours or more per staff member per week
+
+# Conclusion
+
+Choosing the right payroll management system is important for running successful apprenticeship programs. CodeHouse [Workforce One](https://www.workforceone.com.au/), along with Sign365, gives organizations the tools they need to manage payroll, collect feedback, and work efficiently. This helps ensure that apprentices get the best training possible.
diff --git a/Frontend/blogs/offline-google-forms.md b/Frontend/blogs/offline-google-forms.md
new file mode 100644
index 0000000..f5712d7
--- /dev/null
+++ b/Frontend/blogs/offline-google-forms.md
@@ -0,0 +1,62 @@
+---
+title: "How to use Google Forms offline?"
+subtitle: "We'll explore the various solutions available for offline data collection in Google Forms. We'll delve into the intricacies of Google Forms, including its limitations and how to overcome them. We'll also explore the various alternatives available for offline data collection."
+date: "2024-01-15"
+image: "https://images2.imgbox.com/91/e5/zDzlf3s5_o.png"
+---
+
+In today's data-driven landscape, the seamless collection of information is a critical component for individuals and organizations. However, the omnipresence of internet connectivity is not guaranteed, leading to challenges in situations where offline data collection becomes necessary. In this article, we delve into the complexities of offline data collection, exploring solutions beyond the limitations of popular tools like Google Forms. From understanding the nature of offline and online forms to evaluating various alternatives, we aim to provide a comprehensive guide for those seeking efficient methods of data gathering regardless of their connectivity status.
+
+## Can Google Forms be used offline?
+
+Google Forms, a widely utilized platform for creating surveys and forms, has earned its popularity for its ease of use and integration with other Google services. However, its Achilles' heel lies in its dependency on internet connectivity. When faced with the need for offline data collection, Google Forms may not be the most reliable solution. This limitation prompts us to explore alternative avenues that specifically cater to the challenges of offline environments.
+
+## What is an offline form?
+
+Before we delve into alternatives, it's essential to understand what constitutes an offline form. In essence, an offline form is a digital or physical document designed to collect information in environments where a stable internet connection cannot be guaranteed. These forms empower users to capture and store data locally, providing a workaround for situations where real-time online interactions are not feasible.
+
+## What is an online form?
+
+In contrast, an online form relies on consistent internet connectivity to capture and transmit data in real-time. While effective in connected environments, these forms face limitations when deployed in offline scenarios. Understanding the distinction between online and offline forms is crucial for selecting the right tool for the job.
+
+## What are some offline form options:
+
+### Jotform:
+
+Jotform emerges as a versatile solution, boasting an extensive array of templates that cater to diverse data collection needs. Its kiosk mode enhances user-friendliness in offline scenarios, ensuring that data collection remains unhindered. The platform supports both offline and online modes, allowing for seamless transitions between connectivity states. Jotform offers a free version that accommodates up to 5 forms, while more advanced features come at a cost of $39 USD/user/month. Additionally, the platform provides responsive chat and email support, enhancing its appeal for users seeking a comprehensive solution.
+
+### Clappia:
+
+Clappia takes a unique approach by offering users the ability to create custom apps tailored to their specific requirements. Beyond just forms, Clappia expands its utility by providing additional app options. This flexibility ensures that users can design solutions that go beyond standard form functionalities. Clappia's pricing structure includes a free option for a single form, with more advanced features available at $6 USD/user/month. The platform distinguishes itself further by offering responsive chat and email support, emphasizing its commitment to user satisfaction.
+
+### Google Forms Synchronise:
+
+For users deeply ingrained in the Google ecosystem, the Google Forms Synchronise option provides a bridge between the familiarity of Google Forms and the need for offline functionality. While this solution may serve adequately for those with moderate offline data collection requirements, its capabilities may not match the dedicated offline solutions offered by other alternatives.
+
+### Sign365:
+
+Sign365 stands out for its simplicity in user interface and customization options, making it a user-friendly choice for those seeking efficiency. By enabling the creation of custom forms using PDFs, Sign365 provides a straightforward integration step for transmitting data to systems once internet connectivity is restored. Priced at $5 AUD/user/month, the platform offers the enticing feature of unlimited forms, accompanied by the added advantage of phone support. This combination of simplicity, unlimited forms, and phone support positions Sign365 as an attractive choice for users seeking a cost-effective and well-supported solution.
+
+## What Option is Best:
+
+The decision-making process among these alternatives revolves around a careful consideration of specific needs, preferences, and constraints. Jotform, with its extensive templates, is an ideal choice for those seeking a feature-rich solution. On the other hand, Clappia appeals to users valuing the ability to create custom apps beyond traditional forms. Google Forms Synchronise caters to individuals deeply integrated into the Google ecosystem, offering a bridge between familiarity and offline functionality. Sign365, with its simplicity, unlimited forms, and phone support, presents a compelling choice for users looking for a cost-effective solution.
+
+### Digging Deeper into Alternatives:
+
+Beyond the outlined options, it's essential to consider additional factors that might influence the decision-making process. Integration capabilities, scalability, and security features are crucial aspects to evaluate.
+
+### Integration Capabilities:
+
+Jotform and Clappia offer integrations that enhance their capabilities. The ability to seamlessly connect with other tools and systems can significantly streamline workflows, providing a more comprehensive solution for users with complex data management needs.
+
+### Scalability:
+
+Consideration of scalability is paramount, especially for organizations experiencing growth. Clappia, with its custom app creation feature, may provide a scalable solution tailored to evolving requirements. Jotform's diverse template library also contributes to its scalability, accommodating a range of data collection needs.
+
+### Security Features:
+
+As data security becomes an increasingly important concern, examining the security features of each platform is crucial. Users handling sensitive information may prioritize platforms that offer robust security measures. Ensuring compliance with data protection regulations is imperative, and understanding how each platform handles data encryption and storage is essential.
+
+## Conclusion:
+
+In conclusion, the quest for the best offline data collection solution requires a nuanced understanding of individual needs and preferences. The alternatives explored - Jotform, Clappia, Google Forms Synchronise, and Sign365 - each bring unique strengths to the table. The decision-making process involves a delicate balance between functionality, pricing, and support. Additionally, factors such as integration capabilities, scalability, and security features contribute to the overall suitability of each platform for diverse use cases. As technology continues to evolve, users can expect more innovative solutions that further enhance the efficiency and effectiveness of offline data collection.
diff --git a/Frontend/blogs/sign365-vs-adobe-fill-and-sign.md b/Frontend/blogs/sign365-vs-adobe-fill-and-sign.md
new file mode 100644
index 0000000..2181ca0
--- /dev/null
+++ b/Frontend/blogs/sign365-vs-adobe-fill-and-sign.md
@@ -0,0 +1,59 @@
+---
+title: "Sign365 vs Adobe Fill and Sign"
+subtitle: "Sign365 vs Adobe Fill and Sign comparison"
+date: "2020-12-27"
+image: "/images/blog/sign365adobe.png"
+---
+
+Over the last few years, Adobe has been pushing for a new way to sign documents. Called fill and Sign. This is 100% free and is a fantastic way to sign documents. The problem is for admin staff there is no way to manage the documents that are coming through in a centralized way. Furthermore offline signing and management isn't well supported in Adobe fill and sign.
+
+In the digital age, eSignature solutions have become an essential tool for businesses. Two popular options are Adobe Fill And Sign and Sign365. But which one is the best offline, in-person document signing tool for businesses? Let's delve into the details.
+
+# Features
+
+Adobe Fill And Sign offers a simple and intuitive interface that allows users to fill, sign, and send forms quickly. It supports various file formats and enables users to create personalized signatures. However, it lacks advanced features like document tracking and multi-user collaboration.
+✅ Electronic document signing
+✅ In-person signature collection via a mobile device
+✅ Easy-to-use fillable forms
+✅ Basic PDF editing tools
+✅ Mobile-friendly signing
+
+On the other hand, Sign365 stands out with its robust features. It offers offline, in-person signing, document tracking, multi-user collaboration, and more. It also supports a wide range of file formats and allows users to create personalized signatures.
+✅ Electronic document signing
+✅ Offline signing and document routing
+✅ Configuring document routing
+✅ In-person signature collection via a mobile device
+✅ Automatic reminders and notifications
+✅ Easy-to-use fillable forms
+✅ Data validation for fillable fields
+✅ Basic PDF editing tools
+✅ Managing documents in the cloud
+✅ Reusable templates
+✅ Audit Trail and document history
+✅ Mobile-friendly signing (iOS only for Sign365)
+
+# Document Generation and Management Features
+
+Adobe Fill And Sign provides basic document generation and management features. It allows users to fill and sign documents but lacks advanced document management features like version control and document tracking.
+
+Sign365, however, offers comprehensive document generation and management features. It not only allows users to fill and sign documents but also provides version control, document tracking, and multi-user collaboration. These features make it easier for businesses to manage their documents efficiently.
+
+# Security and Compliance
+
+Both Adobe Fill And Sign and Sign365 prioritize security and compliance. Adobe Fill And Sign uses Adobe's secure cloud services to store documents, while Sign365 uses Microsoft's secure cloud services. Both solutions comply with major regulations like GDPR and HIPAA.
+
+# Integrations
+
+Adobe Fill And Sign integrates with Adobe's suite of products, but it lacks integration with other popular business tools. Sign365, however, integrates seamlessly with a wide range of business tools, including Microsoft Office, Google Workspace, and more.
+
+# Customer Support
+
+Adobe Fill And Sign offers customer support via email and community forums. Sign365, however, provides Perth based customer services with a focus on client relations ensuring that your needs are personally dealt with.
+
+# So Which eSignature Solution is Right for You?
+
+While both Adobe Fill And Sign and Sign365 offer valuable features, Sign365 stands out as the best offline, in-person document signing tool for businesses. Its robust document generation and management features, seamless integrations, and excellent customer support make it a superior choice for businesses of all sizes.
+
+# Ready to Switch from Adobe Fill And Sign to Sign365?
+
+If you're ready to switch from Adobe Fill And Sign to Sign365, you're making a wise decision. Sign365 offers more advanced features, better integrations, and superior customer support. Plus, its offline, in-person signing capability makes it the perfect tool for businesses that need to sign documents in person. Make the switch today and take your document signing process to the next level with Sign365.
diff --git a/Frontend/blogs/sign365-vs-docusign.md b/Frontend/blogs/sign365-vs-docusign.md
new file mode 100644
index 0000000..7d3438a
--- /dev/null
+++ b/Frontend/blogs/sign365-vs-docusign.md
@@ -0,0 +1,132 @@
+---
+title: "Sign365 vs Docusign"
+subtitle: "Sign365 vs Docusign comparison"
+date: "2023-01-27"
+image: "/images/blog/sign365docusign.png"
+author: "Samuel Wyndham"
+---
+
+When it comes to eSignatures, Sign365 stands out as a top-notch solution, which while not comparable to industry giants like DocuSign. Offers a robust alternative, catering more to small and medium-sized businesses who need to sign documents offline and need a simple user interface to do it
+
+Sign365 excels in delivering powerful eSignature capabilities at competitive prices, making it a strong contender against DocuSign for businesses who just need simplicity. Particularly suited for daily business needs, its offline functionality on iOS, coupled with streamlined data integration and rapid data input, positions it as a favorable choice.
+
+**Note:** Seeking an efficient eSignature solution for your business? Explore Sign365, a compelling alternative to DocuSign.
+
+# Product overview: DocuSign vs. Sign365
+
+✅ DocuSign, an established player since 2003, has solidified its position as a leading eSignature solution with a massive global user base. Widely adopted in finance, healthcare, life sciences, and real estate, DocuSign boasts a refined interface and robust functionalities, albeit at a premium price point compared to competitors, often charging extra for advanced features.
+
+✅ Sign365 emerges as a strong contender, especially tailored for the GTO (Group Training Organisation) market seeking modern PDF solutions. Built from the ground up as a modern PDF app, Sign365 caters specifically to businesses aiming to capture, report, and automate their data seamlessly. Positioned as an efficient tool for businesses looking to digitize their document workflows and streamline operations, Sign365 marks a purpose-driven approach towards facilitating efficient data handling for modern enterprises.
+
+In the battle between eSignature solutions, while DocuSign reigns with its established reputation and features, Sign365 offers a focused, tailor-made approach for businesses seeking optimized data management solutions within the GTO landscape.
+
+# Pricing
+
+Sign365 simplifies its pricing into three tiers: Business Basic, Business Premium, and Business Ultimate. Business Basic suits small teams with its app-based document signing, fillable fields, and customizable templates. Business Premium adds advanced reporting and prebuilt automation, while Business Ultimate includes everything in Premium, along with tailored custom automations for complex needs. Sign365 permits allowing additional user seats taylored to your business growth (think as many as possible), allowing scalability for growing teams.
+
+Contrastingly, DocuSign provides four subscription tiers with limited publicly available information and allows up to 5 user seats per subscription, starting from the Standard plan. However, DocuSign lacks transparent pricing for its highest-tier subscription, determining costs on a per-customer basis.
+
+
+
+# Features
+
+In terms of technology, DocuSign is rightfully considered the industry leader. Over 20 years of continuous development and innovations allowed the product to grow into an advanced contract management platform suited to the largest of enterprises.
+
+Meanwhile, Sign365 isn’t lagging far behind. Users across multiple review platforms confirm that Sign365 has everything they need to get documents signed electronically – at a much lower price than DocuSign. Furthermore where Sign365 shines is in its ability to do offline signing and workflow tagging to ensure your data reaches the right places
+
+eSignature features
+
+Both Sign365 and DocuSign offer all the standard features you would expect from an eSignature app:
+
+✅ Electronic document signing
+✅ Configuring document routing
+✅ In-person signature collection via a mobile device
+✅ Automatic reminders and notifications
+✅ Easy-to-use fillable forms
+✅ Data validation for fillable fields
+✅ Basic PDF editing tools
+✅ Managing documents in the cloud
+✅ Reusable templates
+✅ Audit Trail and document history
+✅ Mobile-friendly signing (iOS only for Sign365)
+Both products support an array of enterprise-grade features, including:
+
+✅ Admin dashboard for managing multiple user accounts
+✅ Collaboration tools and asset sharing
+✅ Custom branding
+✅ Rich API for seamless integration with any stack
+
+On top of that, DocuSign boasts some features that Sign365 is currently lacking:
+✅ Sending documents for eSignature to one or multiple recipients
+✅ Payment collection
+✅ Bulk-sending documents for signature
+✅ Signature collection via shareable links
+✅ Real-time signature tracking
+✅ Signing groups
+✅ Setting a signing order
+✅ Assigning and configuring signer roles
+✅ Business fields
+✅ Document markup and collaborative fields
+✅ Smart sections
+✅ Self-service web forms
+✅ Signer identity verification
+✅ Cloud signatures
+✅ Requesting attachments
+✅ QES (qualified electronic signatures)
+
+Enhanced capabilities for digital signature make DocuSign a more suitable solution for highly regulated industries and countries where specific methods of identity validation are required. However, Sign365 is already taking steps toward closing that gap by introducing PKI-based digital signatures (AES). Therefore, if you are looking to collect authentic digital signatures verified by unique ID certificates and have offline functionality, you may find Sign365 to be a viable alternative to DocuSign.
+
+# Document generation and management features
+
+Both Sign365 and DocuSign enable users to upload documents from various sources, preparing them for signatures using basic editing tools and a range of fillable fields. These platforms allow easy modification of documents by adding elements like text, date, checkmarks, signatures, initials, stamps, and fillable fields. Furthermore, users can convert a fillable form into a reusable template, store it within their account, or export it to the cloud.
+
+However, if advanced document generation and management tools are required, the options differ between Sign365 and DocuSign. Unlike DocuSign, Sign365 does not include document generation capabilities in any of its subscription plans. Both platforms, however, offer additional solutions for enhanced document management, available at an additional cost.
+
+DocuSign provides intelligent automation systems specifically designed for agreement generation and management:
+
+✅ DocuSign CLM: A contract lifecycle management system for generating, negotiating, and automating agreement workflows, along with centralized agreement storage and searches.
+✅ DocuSign Negotiate: A solution automating the generation, negotiation, and approval of agreements within your CRM.
+✅ DocuSign Gen: Automation of agreement generation within your CRM.
+✅ DocuSign Click: Enables embedding consent capture to agreement terms on websites and apps.
+
+✅ Intelligent Insights by Seal Software: AI-driven concept searching, clause identification, and analytics.
+✅ Guided Forms by Intelledox: A user-friendly “wizard-style” experience replacing complex forms.
+In summary, Sign365 primarily focuses on eSignature capabilities. DocuSign, however, incorporates intelligent automation systems tailored for agreement generation and management purposes.
+
+# Security and compliance
+
+Is Sign365 as legitimate as DocuSign? Absolutely. Both Sign365 and DocuSign provide legally-binding electronic signatures that hold up in courts within the US, Europe, and other regions globally where eSignatures are accepted. Sign365 and DocuSign adhere to the following standards and regulations:
+
+✅ ESIGN (Electronic Signatures in Global and National Commerce Act)
+✅ UETA (Uniform Electronic Transactions Act)
+✅ eIDAS (electronic IDentification, Authentication and trust Services)
+✅ GDPR (General Data Protection Regulation)
+✅ CCPA (California Consumers Protection Act of 2018)
+
+# Integrations
+
+Integrations are crucial for constructing efficient and seamless eSignature workflows within various software environments, and both Sign365 and DocuSign recognize this significance.
+
+Throughout its extensive history, DocuSign has amassed a relatively wider array of pre-built integrations. Nevertheless, Sign365 integrations are well-suited for the most popular CRM systems, productivity applications, and cloud storage services.
+
+In addition to their off-the-shelf integrations, both companies provide robust APIs and connections via Zapier. This implies virtually limitless possibilities for constructing customized eSignature workflows.
+
+# Customer support
+
+Customer support is key for both Sign365 and Docusign with Docusign offering various self-service options.
+
+In terms of support options, both DocuSign and Sign365 offer live chat and ticket-based assistance. Sign365 distinguishes itself by providing phone support and personal integration support specifically catered to customers with its top-tier subscription.
+
+Notably, the key distinction between DocuSign and Sign365 lies in their customer service approach. Sign365 has all customer service operations located in Australia, emphasizing in-person service and prioritizing the customer experience as a primary focus. This approach aligns with Sign365's belief that placing the customer first is paramount. Conversely, DocuSign has transformed its customer service into a separate paid product, offering enhanced support plans featuring additional channels and improved response times for an extra fee.
+
+# So which eSignature solution is right for you?
+
+Both Sign365 and DocuSign serve as excellent tools that streamline daily operations and reduce the time spent on paperwork. DocuSign caters best to larger companies seeking its innovative features and willing to make substantial investments. Enterprises stand to gain from DocuSign's AI-driven contract management solutions, advanced compliances, and a wide array of pre-built integrations.
+
+While DocuSign remains at the forefront of the market, Sign365 is steadily broadening its scope within the enterprise segment. The company is continually enhancing its value-added features tailored for organizations of all sizes and refining its API, facilitating integration with a broader range of products into its eSignature software.
+
+For those seeking a more cost-effective alternative to DocuSign, Sign365 offers significant value at a reduced cost. With robust eSignature functionality, high standards of security and compliance, and transparent pricing, Sign365 boasts numerous success stories from satisfied customers
+
+# Ready to switch from DocuSign to Sign365?
+
+Sign365 ensures a painless transition. You can migrate from DocuSign to Sign365 hassle-free by contacting our customer support today
diff --git a/Frontend/blogs/sign365-vs-sign-now.md b/Frontend/blogs/sign365-vs-sign-now.md
new file mode 100644
index 0000000..1d1e9fc
--- /dev/null
+++ b/Frontend/blogs/sign365-vs-sign-now.md
@@ -0,0 +1,133 @@
+---
+title: "Sign365 vs signNow"
+subtitle: "Sign365 vs signNow comparison"
+date: "2023-01-27"
+image: "/images/blog/sign365signnow.png"
+author: "Samuel Wyndham"
+---
+
+When it comes to eSignatures, Sign365 stands out as a top-notch solution, comparable to industry giants like signNow. While signNow has long dominated the field, especially among enterprise clients, Sign365 offers a robust alternative, catering more to small and medium-sized businesses.
+
+Sign365 excels in delivering powerful eSignature capabilities at competitive prices, making it a strong contender against signNow. Particularly suited for daily business needs, its offline functionality on iOS, coupled with streamlined data integration and rapid data input, positions it as a favorable choice.
+
+**Note:** Seeking an efficient eSignature solution for your business? Explore Sign365, a compelling alternative to signNow.
+
+# Product overview: signNow vs. Sign365
+
+✅ signNow: Established as an eSignature solution, signNow has gained prominence for its intuitive interface and ease of use. It's well-suited for businesses of varying sizes and industries, providing a comprehensive range of features to streamline document signing processes. signNow's platform emphasizes seamless integrations, document management, and user-friendly functionalities.
+
+✅ Sign365: Tailored for Group Training Organizations (GTOs), Sign365 focuses on modern PDF solutions, aiming to capture, report, and automate data efficiently. It caters specifically to businesses seeking to digitize document workflows and streamline operations. Sign365's core strength lies in its data management capabilities and offline functionality on iOS devices, facilitating efficient document handling.
+
+In comparing Sign365 and signNow, while both offer eSignature solutions, Sign365 targets a niche market with specialized features, whereas signNow caters to a broader audience, emphasizing its ease of use and integrations.
+
+# Pricing
+
+Sign365 Offers three pricing tiers - Business Basic, Business Premium, and Business Ultimate, each with varying features catering to different business needs. The plans are designed for scalability, allowing additional user seats taylored to your business growth (think as many as possible), making it suitable for growing teams within the GTO landscape.
+
+signNow: signNow offers a tiered pricing model based on user requirements, catering to individual users, small businesses, and larger enterprises. The pricing structure includes features such as document sending, templates, and custom branding. signNow allows for an additional 10 seats.
+
+
+
+# Features
+
+In terms of technology, signNow is rightfully considered the more comprehensive e-signature soltion. Over years of continuous development and innovation, signNow has evolved into an advanced contract management platform suitable for enterprises of all sizes.
+
+Meanwhile, Sign365 isn’t lagging far behind. Users across multiple review platforms confirm that Sign365 has everything they need to get documents signed electronically – at a much lower price than signNow. Furthermore, where Sign365 shines is in its ability to perform offline signing and workflow tagging to ensure data reaches the right places.
+
+Both Sign365 and signNow offer all the standard features you would expect from an eSignature app:
+
+✅ Electronic document signing
+✅ Configuring document routing
+✅ In-person signature collection via a mobile device
+✅ Automatic reminders and notifications
+✅ Easy-to-use fillable forms
+✅ Data validation for fillable fields
+✅ Basic PDF editing tools
+✅ Managing documents in the cloud
+✅ Reusable templates
+✅ Audit Trail and document history
+✅ Mobile-friendly signing (iOS only for Sign365)
+Both products support an array of enterprise-grade features, including:
+
+✅ Admin dashboard for managing multiple user accounts
+✅ Collaboration tools and asset sharing
+✅ Custom branding
+✅ Rich API for seamless integration with any stack
+
+On top of that, signNow boasts some features that Sign365 is currently lacking:
+✅ Bulk-sending documents for signature
+✅ Real-time signature tracking
+✅ Sending documents for eSignature to one or multiple recipients
+✅ Signature collection via shareable links
+✅ Signing groups
+✅ Setting a signing order
+✅ Payment collection
+✅ Assigning and configuring signer roles
+✅ Business fields
+✅ Document markup and collaborative fields
+✅ Smart sections
+✅ Self-service web forms
+✅ Signer identity verification
+✅ Cloud signatures
+✅ Requesting attachments
+✅ QES (qualified electronic signatures)
+
+Enhanced capabilities for digital signature make signNow a more suitable solution for highly regulated industries and countries where specific methods of identity validation are required. However, Sign365 is already taking steps toward closing that gap by introducing PKI-based digital signatures (AES). Therefore, if you are looking to collect authentic digital signatures verified by unique ID certificates and have offline functionality, you may find Sign365 to be a viable alternative to signNow.
+
+# Document generation and management features
+
+Both Sign365 and signNow enable users to upload documents from various sources, preparing them for signatures using basic editing tools and a range of fillable fields. These platforms allow easy modification of documents by adding elements like text, date, checkmarks, signatures, initials, stamps, and fillable fields. Furthermore, users can convert a fillable form into a reusable template, store it within their account, or export it to the cloud.
+
+However, if advanced document generation and management tools are required, the options differ between Sign365 and signNow. Unlike signNow, Sign365 does not include document generation capabilities in any of its subscription plans. signNow provides these features through a suite of products offering enhanced document management solutions, available at an additional cost.
+
+signNow offers intelligent automation systems specifically designed for agreement generation and management:
+
+✅ signNow CLM: A contract lifecycle management system for generating, negotiating, and automating agreement workflows, along with centralized agreement storage and searches.
+✅ signNow Negotiate: A solution automating the generation, negotiation, and approval of agreements within your CRM.
+✅ signNow Gen: Automation of agreement generation within your CRM.
+✅ signNow Click: Enables embedding consent capture to agreement terms on websites and apps.
+
+✅ Intelligent Insights by Seal Software: AI-driven concept searching, clause identification, and analytics.
+✅ Guided Forms by Intelledox: A user-friendly “wizard-style” experience replacing complex forms.
+
+In summary, Sign365 primarily focuses on eSignature capabilities. signNow, however, incorporates intelligent automation systems tailored for agreement generation and management purposes through its suite of products.
+
+# Security and compliance
+
+Is Sign365 as legitimate as signNow? Absolutely. Both Sign365 and signNow provide legally-binding electronic signatures that hold up in courts within the US, Europe, and other regions globally where eSignatures are accepted. Sign365 and signNow adhere to the following standards and regulations:
+
+✅ ESIGN (Electronic Signatures in Global and National Commerce Act)
+✅ UETA (Uniform Electronic Transactions Act)
+✅ eIDAS (electronic IDentification, Authentication, and trust Services)
+✅ GDPR (General Data Protection Regulation)
+✅ CCPA (California Consumers Protection Act of 2018)
+
+# Integrations
+
+Integrations are crucial for constructing efficient and seamless eSignature workflows within various software environments, and both Sign365 and signNow recognize this significance.
+
+Throughout its extensive history, signNow has amassed a relatively wider array of pre-built integrations. Nevertheless, Sign365 integrations are well-suited for the most popular CRM systems, productivity applications, and cloud storage services.
+
+In addition to their off-the-shelf integrations, both companies provide robust APIs and connections via Zapier. This implies virtually limitless possibilities for constructing customized eSignature workflows.
+
+# Customer support
+
+Customer support is key for both Sign365 and signNow, with signNow offering various self-service options.
+
+In terms of support options, both signNow and Sign365 offer live chat and ticket-based assistance. Sign365 distinguishes itself by providing phone support and personal integration support specifically catered to customers with its top-tier subscription.
+
+Notably, the key distinction between signNow and Sign365 lies in their customer service approach. Sign365 has all customer service operations located in Australia, emphasizing in-person service and prioritizing the customer experience as a primary focus. This approach aligns with Sign365's belief that placing the customer first is paramount. Conversely, signNow has transformed its customer service into a separate paid product, offering enhanced support plans featuring additional channels and improved response times for an extra fee.
+
+# So which eSignature solution is right for you?
+
+Both Sign365 and signNow serve as excellent tools that streamline daily operations and reduce the time spent on paperwork. signNow caters best to larger companies seeking a more comprehensive suite of features and willing to make substantial investments. Enterprises benefit from signNow's comprehensive suite that includes AI-driven contract management solutions, advanced compliances, and a wide array of pre-built integrations.
+
+While signNow remains at the forefront of the market with its comprehensive offerings, Sign365 focuses primarily on creating a great eSignature experience with a ground-up approach to integrations and emphasizing its offline functionality. Sign365's best competing point is their approach to integrations and their offline functionality, aiming to provide a streamlined and user-friendly experience specifically tailored to different business needs.
+
+The company, Sign365, is steadily broadening its scope within the enterprise segment, continually enhancing its eSignature functionalities, and refining its API for seamless integrations with a broader range of products. It strives to deliver value-added features tailored for organizations of all sizes, aiming to optimize document workflows efficiently.
+
+For those seeking a more cost-effective alternative to signNow's comprehensive suite, Sign365 offers significant value at a reduced cost. With robust eSignature functionality, high standards of security and compliance, and transparent pricing, Sign365 boasts numerous success stories from satisfied customers who appreciate its focused approach to eSignature solutions.
+
+# Ready to switch from signNow to Sign365?
+
+Sign365 ensures a painless transition. You can migrate from signNow to Sign365 hassle-free by contacting our customer support today
diff --git a/Frontend/blogs/top-5-best-document-automation-software.md b/Frontend/blogs/top-5-best-document-automation-software.md
new file mode 100644
index 0000000..bb47e45
--- /dev/null
+++ b/Frontend/blogs/top-5-best-document-automation-software.md
@@ -0,0 +1,45 @@
+---
+title: "Top 5 Best Document Automation Software"
+subtitle: "Document automation software is revolutionizing the way businesses create, manage, and distribute documents. With the right tool, you can save time, reduce errors, and improve productivity by automating repetitive tasks involved in document preparation. However, with so many options available, choosing the best one for your needs can be a challenge. To help you make an informed decision, we have rounded up the top 5 best document automation software on the market."
+date: "2024-01-24"
+image: "/images/top-5-best-document-automation-software-0.png"
+---
+
+Document automation software is revolutionizing the way businesses create, manage, and distribute documents. With the right tool, you can save time, reduce errors, and improve productivity by automating repetitive tasks involved in document preparation. However, with so many options available, choosing the best one for your needs can be a challenge. To help you make an informed decision, we have rounded up the top 5 best document automation software on the market.
+
+## DocuSign
+
+DocuSign is a leader in the field of electronic signature technology, but it's also a powerful document automation platform. It streamlines the process of collecting signatures and approvals through automated workflow, making it a staple in contract management and other document-heavy processes.
+
+- ✅ DocuSign offers a high level of security and is widely accepted for legal documents, with robust compliance standards.
+- ❌ The pricing might be steep for smaller businesses that only require basic document automation features.
+
+## PandaDoc
+
+PandaDoc is not just about getting documents signed; it also offers comprehensive features for creating, tracking, and managing documents across various stages. Designed to accelerate the deal cycle, PandaDoc can produce proposals, quotes, and contracts with ease.
+
+- ✅ It has a user-friendly interface and a plethora of templates that make document creation a breeze for users at any skill level.
+- ❌ While the tool is highly versatile, some users may find the template customization options limited compared to other platforms.
+
+## Zoho Writer
+
+Part of the Zoho Office Suite, Zoho Writer is a powerful word processor that brings a strong suite of document automation features. Collaborative editing, real-time tracking, and seamless integration with Zoho CRM make it a solid choice for businesses immersed in the Zoho ecosystem.
+
+- ✅ The affordability and integration with other Zoho apps provide a holistic approach to document automation.
+- ❌ Those not using other Zoho products might not get the full benefits from its ecosystem-oriented design.
+
+## Adobe Sign
+
+From the iconic Adobe family, Adobe Sign focuses on streamlining electronic agreements and approvals with trusted digital signatures. Its integration with Adobe's PDF tools provides a seamless document experience for users familiar with Adobe products.
+
+- ✅ Adobe Sign's widespread recognition and trust factor make it a go-to for businesses that prioritize brand reputation and universal c\* ompatibility.
+ ❌ The software might be overwhelming for those who only need basic document automation and do not require the powerful suite of Adobe features.
+
+## Formstack Documents (formerly WebMerge)
+
+Formstack Documents specializes in generating personalized, on-demand documents. It can pull data from numerous sources, including CRM systems, to automate document creation for various purposes such as invoices, reports, and more.
+
+- ✅ The ability to connect with numerous data sources ensures that Formstack Documents can adapt to many business processes and workflows.
+- ❌ There can be a learning curve to mastering the full capabilities of the software, and the cost may be a factor for smaller operations.
+
+Choosing the best document automation software requires you to consider your specific needs, budget, and the level of complexity you can handle. Whether you prioritize ease of use, specific features, or integration with your current systems, there's a solution out there that can automate your documents efficiently and effectively. Start with these top contenders, and you'll be on your way to a more streamlined, productive business in no time.
diff --git a/Frontend/blogs/your-forms-on-sign365-in-5-minutes.md b/Frontend/blogs/your-forms-on-sign365-in-5-minutes.md
new file mode 100644
index 0000000..73e0059
--- /dev/null
+++ b/Frontend/blogs/your-forms-on-sign365-in-5-minutes.md
@@ -0,0 +1,26 @@
+---
+title: "Your Forms On Sign365 In 5 Minutes"
+subtitle: "In the dynamic landscape of labor hire, efficiency is paramount, and innovation is the key to staying ahead. As forward-thinking pioneers in the industry, your commitment to streamlining processes is crucial. One way to achieve this is by leveraging the power of free templates and creating customized forms that meet the unique needs of your labor hire company. If you are interested in doing this keep reading and we will give you a special template to help you get started in your form filling."
+date: "2024-01-22"
+image: "/images/your-forms-on-sign365-in-5-minutes-0.png"
+---
+
+Are you tired of the tedious task of managing PDFs? At Sign 365, we understand that your time is valuable, which is why we've revolutionized the upload and management process with our seamless offline form software. Our platform is designed to simplify your document workflow, making it more efficient and less time-consuming. Check out the video below
+
+
+
+Our intuitive S365 Admin Center is the epitome of simplicity and forward-thinking design. When you first join, you'll be greeted with an easy-to-navigate interface that guides you to access your templates with just a few clicks. This streamlined approach ensures that setting up forms is a matter of minutes, not hours.
+
+With a variety of templates already available, you can manage each one with a set of customizable rules. The platform also offers select features such as bulk forwarding, which is a pioneer in offline form automation. This means that every time a form is submitted, it can be automatically forwarded to a designated email address, ensuring you never miss out on important submissions.
+
+Moreover, our offline form software allows you to enable or disable rules with ease, giving you complete control over your document workflow. And if you're in need of a template, we've got you covered with free templates provided for training purposes.
+
+Uploading a new template is as simple as a few clicks, and just like that, you have a fully functional offline form ready to use. This is the power of Sign 365 - we make offline google forms management a breeze.
+
+If you've been struggling with other systems or are looking for a more efficient way to manage your PDFs, Sign 365 is the solution you've been searching for. Our platform is not just about managing forms; it's about simplifying your entire document workflow.
+
+Try it out and experience the difference for yourself. With Sign 365, managing offline forms is no longer a chore; it's a seamless, streamlined process that saves you time and hassle. Say goodbye to the mundane and hello to the future of offline form automation with Sign 365. Cheers to a simpler document management experience!
diff --git a/Frontend/components/BlogCard.tsx b/Frontend/components/BlogCard.tsx
new file mode 100644
index 0000000..5685e2f
--- /dev/null
+++ b/Frontend/components/BlogCard.tsx
@@ -0,0 +1,33 @@
+import React from "react";
+
+import { PostMetadata } from "@/types";
+import Image from "next/image";
+import Link from "next/link";
+
+function BlogCard({ title, slug, subtitle, image }: PostMetadata) {
+ return (
+ <>
+
+
+
+
+
+
+ {title}
+
+
{subtitle}
+
+
+ >
+ );
+}
+
+export default BlogCard;
diff --git a/Frontend/components/Button.tsx b/Frontend/components/Button.tsx
new file mode 100644
index 0000000..c837e93
--- /dev/null
+++ b/Frontend/components/Button.tsx
@@ -0,0 +1,61 @@
+import { ModalStatus } from "@/types";
+import React from "react";
+
+interface ButtonProps {
+ status: ModalStatus;
+ text: string;
+}
+export const Button = ({ status, text }: ButtonProps) => {
+ const className = (() => {
+ switch (status) {
+ case ModalStatus.Loading:
+ return "btn text-purple-default bg-white hover:bg-white shadow disabled:text-white disabled:shadow-none";
+
+ case ModalStatus.Success:
+ return "btn text-purple-default bg-white hover:bg-white shadow disabled:text-white disabled:shadow-none";
+
+ case ModalStatus.Default:
+ return "btn text-purple-default bg-white hover:bg-white shadow";
+
+ default:
+ return "btn text-purple-default bg-white hover:bg-white shadow";
+ }
+ })();
+ return (
+
+ {status === ModalStatus.Loading ? (
+
+
+
+
+ ) : (
+ <>>
+ )}
+ {text}
+
+ );
+};
+
+export default Button;
diff --git a/Frontend/components/FAQQuestion.tsx b/Frontend/components/FAQQuestion.tsx
new file mode 100644
index 0000000..271fb79
--- /dev/null
+++ b/Frontend/components/FAQQuestion.tsx
@@ -0,0 +1,61 @@
+import Link from "next/link";
+import React from "react";
+
+const FAQQuestion = ({
+ title,
+ children,
+}: {
+ title: string;
+ children: React.ReactNode;
+}) => {
+ return (
+
+
+ {title}
+
+
+
+
+
+
+
+
+ {children}
+
+
+ );
+};
+
+export default FAQQuestion;
diff --git a/Frontend/components/Footer.tsx b/Frontend/components/Footer.tsx
new file mode 100644
index 0000000..521bc20
--- /dev/null
+++ b/Frontend/components/Footer.tsx
@@ -0,0 +1,29 @@
+import React from "react";
+import Logo from "../sections/Logo";
+
+function Footer() {
+ return (
+
+
+
+ {/* Bottom area */}
+
+ {/* Social links */}
+
+
+
+ {/* Copyrights note */}
+
+ © 2024 Sign365.
+
+
+
+
+ );
+}
+
+export default Footer;
diff --git a/Frontend/components/GetStartedSectionButton.tsx b/Frontend/components/GetStartedSectionButton.tsx
new file mode 100644
index 0000000..e7d8b31
--- /dev/null
+++ b/Frontend/components/GetStartedSectionButton.tsx
@@ -0,0 +1,46 @@
+"use client";
+
+import React, { useEffect, useState } from "react";
+import { Subscription, User } from "@/types";
+import { getSubscriptions } from "@/app/(auth)/actions";
+import { useRouter } from "next/navigation";
+
+interface GetStartedSectionButtonProps {
+ user: User;
+}
+export const GetStartedSectionButton = ({
+ user,
+}: GetStartedSectionButtonProps) => {
+ const router = useRouter();
+ const portalWebsite = process.env
+ .NEXT_PUBLIC_PORTAL_SIGN365_WEBSITE as string;
+ const [subscription, setSubscription] = useState();
+ useEffect(() => {
+ (async () => {
+ if (!user) {
+ return;
+ }
+ const subscriptions = await getSubscriptions();
+ if (subscriptions.length > 0) {
+ setSubscription(subscriptions[0]);
+ }
+ })();
+ }, [user]);
+
+ return subscription ? (
+
+
+ Management Portal
+
+
+ ) : (
+ router.push("/pricing")}
+ className="px-10 py-2 text-base capitalize !rounded-3xl text-white bg-gradient-to-r from-pink-default to-purple-default hover:bg-gray-900 w-full sm:w-auto"
+ >
+ Upgrade
+
+ );
+};
+
+export default GetStartedSectionButton;
diff --git a/Frontend/components/GoogleAnalytics.tsx b/Frontend/components/GoogleAnalytics.tsx
new file mode 100644
index 0000000..6711b13
--- /dev/null
+++ b/Frontend/components/GoogleAnalytics.tsx
@@ -0,0 +1,24 @@
+import Script from "next/script";
+
+const GoogleAnalytics = ({ ga_id }: { ga_id: string }) => (
+ <>
+
+
+ >
+);
+export default GoogleAnalytics;
diff --git a/Frontend/components/Header.tsx b/Frontend/components/Header.tsx
new file mode 100644
index 0000000..a49eefd
--- /dev/null
+++ b/Frontend/components/Header.tsx
@@ -0,0 +1,88 @@
+"use client";
+
+import React from "react";
+import Navigation from "./Navigation";
+import ModalSignUp from "@/sections/ModalSignUp/ModalSignUp";
+import ModalSignIn from "@/sections/ModalSignIn/ModalSignIn";
+import { logout } from "@/app/(auth)/actions";
+import { useRouter } from "next/navigation";
+import { getAuthCookie } from "@/app/(auth)/actions";
+import { SourceModal } from "@/types";
+import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime";
+import pb from "@/lib/pocketbase";
+
+interface HeaderProps {
+ isUserLoggedIn: boolean;
+}
+
+const signUpButton = {
+ onClick: () => {
+ document
+ .getElementById("sign-up-modal")
+ ?.setAttribute("name", SourceModal.SignUp);
+ document.getElementById("sign-up-modal")?.removeAttribute("price_id");
+ document.getElementById("sign-up-modal")?.click();
+ },
+ text: "Sign Up",
+ buttonColor: "bg-pink-700",
+ buttonHover: "hover:bg-pink-700",
+};
+const signOutButton = {
+ onClick: () => logout(),
+ text: "Logout",
+ buttonColor: "bg-red-300",
+ buttonHover: "hover:bg-red-600",
+};
+const signInButton = {
+ onClick: async (router?: AppRouterInstance) => {
+ const authCookie = await getAuthCookie();
+ pb.authStore.loadFromCookie(authCookie || "");
+ if (!authCookie || !pb.authStore.isValid) {
+ document.getElementById("sign-in-modal")?.setAttribute("name", "signIn");
+ document.getElementById("sign-in-modal")?.click();
+ } else {
+ router?.push("/account");
+ }
+ },
+ text: "SignIn",
+ buttonColor: "text-pink-500",
+ buttonHover: "hover:text-pink-700",
+};
+function Header({ isUserLoggedIn }: HeaderProps) {
+ const router = useRouter();
+ const button = isUserLoggedIn ? signOutButton : signUpButton;
+ return (
+
+
+
+
+
+ {/* Desktop navigation */}
+
+ {/* Desktop sign in links */}
+
+ {!isUserLoggedIn && (
+ signInButton.onClick(router)}
+ className={`btn-sm cursor-pointer rounded py-5 w-24 ${signInButton.buttonColor} ${signInButton.buttonHover}`}
+ >
+ {signInButton.text}
+
+ )}
+
+ {button.text}
+
+
+
+
+
+
+
+
+ );
+}
+
+export default Header;
diff --git a/Frontend/components/Navigation.tsx b/Frontend/components/Navigation.tsx
new file mode 100644
index 0000000..97735af
--- /dev/null
+++ b/Frontend/components/Navigation.tsx
@@ -0,0 +1,101 @@
+"use client";
+
+import Logo from "@/sections/Logo";
+import React, { useState } from "react";
+import { Menu } from "@styled-icons/entypo/Menu";
+import Link from "next/link";
+
+function Navigation({ isUserLoggedIn }: { isUserLoggedIn: boolean }) {
+ const [checked, setChecked] = useState();
+ const handleClick = () => {
+ checked ? setChecked(!checked) : setChecked(checked);
+ };
+ return (
+
+
+
+ {/* Navbar */}
+
+
+
+
+
+
+
+
+
+ {/* Site branding */}
+
+ {/* Logo */}
+
+
+ {/* Navbar menu content here */}
+
+
+ Pricing
+
+
+
+
+ Blogs
+
+
+
+ Climate
+
+ {isUserLoggedIn ? (
+
+
+ Account
+
+
+ ) : (
+ <>>
+ )}
+
+
+
+ {/* Page content here */}
+
+
+
+
+
+ {/* Sidebar content here */}
+
+ {/* Logo */}
+
+
+
+ Pricing
+
+
+ Blogs
+
+
+ Climate
+
+ {isUserLoggedIn ? (
+
+
+ Account
+
+
+ ) : (
+ <>>
+ )}
+
+
+
+ );
+}
+
+export default Navigation;
diff --git a/Frontend/components/PrelineScript.tsx b/Frontend/components/PrelineScript.tsx
new file mode 100644
index 0000000..52c142d
--- /dev/null
+++ b/Frontend/components/PrelineScript.tsx
@@ -0,0 +1,27 @@
+"use client";
+
+import { usePathname } from "next/navigation";
+import { useEffect } from "react";
+
+import { IStaticMethods } from "preline/preline";
+declare global {
+ interface Window {
+ HSStaticMethods: IStaticMethods;
+ }
+}
+
+export default function PrelineScript() {
+ const path = usePathname();
+
+ useEffect(() => {
+ import("preline/preline");
+ }, []);
+
+ useEffect(() => {
+ setTimeout(() => {
+ window?.HSStaticMethods?.autoInit();
+ }, 100);
+ }, [path]);
+
+ return null;
+}
diff --git a/Frontend/components/YoutubeEmbed.tsx b/Frontend/components/YoutubeEmbed.tsx
new file mode 100644
index 0000000..3f90bb8
--- /dev/null
+++ b/Frontend/components/YoutubeEmbed.tsx
@@ -0,0 +1,33 @@
+import React, { useState } from "react";
+
+import { MediaPlayer, MediaProvider } from "@vidstack/react";
+import {
+ DefaultAudioLayout,
+ defaultLayoutIcons,
+ DefaultVideoLayout,
+} from "@vidstack/react/player/layouts/default";
+import "@vidstack/react/player/styles/base.css";
+export type Props = {
+ videotitle: string;
+ video: string;
+ width: number;
+ height: number;
+};
+
+export default function YouTubeFrame({ video, width, height }: Props) {
+ return (
+
+
+
+
+
+ );
+}
diff --git a/Frontend/emails/BookNow/index.html b/Frontend/emails/BookNow/index.html
new file mode 100644
index 0000000..da7e34a
--- /dev/null
+++ b/Frontend/emails/BookNow/index.html
@@ -0,0 +1,572 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Thanks For Booking
+
+
+
+
+
+
+
+
+ Our Sales People Will Be In Touch! We know you are going to love Sign365!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Unit 5 17-19 Foundry Rd, Midland, 6056, Western
+ Australia © Sign365 2024
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Frontend/emails/SignUp/index.html b/Frontend/emails/SignUp/index.html
new file mode 100644
index 0000000..297ce27
--- /dev/null
+++ b/Frontend/emails/SignUp/index.html
@@ -0,0 +1,270 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Thanks For Signing Up
+
+
+
+
+
+
+
+ Our Sales People Will Be In Touch! We
+ know you are going to love Sign365!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Unit 5 17-19 Foundry Rd, Midland, 6056, Western
+ Australia ©
+ Sign365 2024
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Frontend/emails/WhitePaper/index.html b/Frontend/emails/WhitePaper/index.html
new file mode 100644
index 0000000..a0330c5
--- /dev/null
+++ b/Frontend/emails/WhitePaper/index.html
@@ -0,0 +1,288 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Our White Paper Is Attached To This Email Discover
+ The Benefits of Using Sign365 For Your Business
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Book A Demo
+
+
+
+
+
+
+
+
+
+
+ Unit 5 17-19 Foundry Rd, Midland, 6056, Western
+ Australia ©
+ Sign365 2024
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Frontend/images/IconLoading.tsx b/Frontend/images/IconLoading.tsx
new file mode 100644
index 0000000..0e1d7c4
--- /dev/null
+++ b/Frontend/images/IconLoading.tsx
@@ -0,0 +1,10 @@
+export const IconLoading = () => {
+ return (
+
+
+
+
+ )
+}
+
+export default IconLoading;
\ No newline at end of file
diff --git a/Frontend/images/check-box.svg b/Frontend/images/check-box.svg
new file mode 100644
index 0000000..51a2383
--- /dev/null
+++ b/Frontend/images/check-box.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/Frontend/images/icon-clipboard.svg b/Frontend/images/icon-clipboard.svg
new file mode 100644
index 0000000..3ef4b02
--- /dev/null
+++ b/Frontend/images/icon-clipboard.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/Frontend/images/icon-clock.svg b/Frontend/images/icon-clock.svg
new file mode 100644
index 0000000..cf6d315
--- /dev/null
+++ b/Frontend/images/icon-clock.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/Frontend/images/icon-link.svg b/Frontend/images/icon-link.svg
new file mode 100644
index 0000000..f7f0ff2
--- /dev/null
+++ b/Frontend/images/icon-link.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/Frontend/images/icon-loading.svg b/Frontend/images/icon-loading.svg
new file mode 100644
index 0000000..e69de29
diff --git a/Frontend/images/icon-us-dollar.svg b/Frontend/images/icon-us-dollar.svg
new file mode 100644
index 0000000..b89ba2f
--- /dev/null
+++ b/Frontend/images/icon-us-dollar.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/Frontend/images/icon-user.svg b/Frontend/images/icon-user.svg
new file mode 100644
index 0000000..4182e38
--- /dev/null
+++ b/Frontend/images/icon-user.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/Frontend/images/icon-vector.svg b/Frontend/images/icon-vector.svg
new file mode 100644
index 0000000..7fdb780
--- /dev/null
+++ b/Frontend/images/icon-vector.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/Frontend/images/icon-x.svg b/Frontend/images/icon-x.svg
new file mode 100644
index 0000000..e2ca73a
--- /dev/null
+++ b/Frontend/images/icon-x.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/Frontend/images/icon.svg b/Frontend/images/icon.svg
new file mode 100644
index 0000000..e1c82f3
--- /dev/null
+++ b/Frontend/images/icon.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/Frontend/images/logo-rounded-arrow.svg b/Frontend/images/logo-rounded-arrow.svg
new file mode 100644
index 0000000..7932921
--- /dev/null
+++ b/Frontend/images/logo-rounded-arrow.svg
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Frontend/images/logo-traces.svg b/Frontend/images/logo-traces.svg
new file mode 100644
index 0000000..dcd80a8
--- /dev/null
+++ b/Frontend/images/logo-traces.svg
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Frontend/images/video-thumb.png b/Frontend/images/video-thumb.png
new file mode 100644
index 0000000..0254436
Binary files /dev/null and b/Frontend/images/video-thumb.png differ
diff --git a/Frontend/images/zigzag-connection.png b/Frontend/images/zigzag-connection.png
new file mode 100644
index 0000000..70485a7
Binary files /dev/null and b/Frontend/images/zigzag-connection.png differ
diff --git a/Frontend/images/zigzag-connection2.png b/Frontend/images/zigzag-connection2.png
new file mode 100644
index 0000000..6e4d7f7
Binary files /dev/null and b/Frontend/images/zigzag-connection2.png differ
diff --git a/Frontend/images/zigzag-graph.png b/Frontend/images/zigzag-graph.png
new file mode 100644
index 0000000..175b328
Binary files /dev/null and b/Frontend/images/zigzag-graph.png differ
diff --git a/Frontend/images/zigzag-streamline.png b/Frontend/images/zigzag-streamline.png
new file mode 100644
index 0000000..c58934d
Binary files /dev/null and b/Frontend/images/zigzag-streamline.png differ
diff --git a/Frontend/lib/auth.ts b/Frontend/lib/auth.ts
new file mode 100644
index 0000000..51e1481
--- /dev/null
+++ b/Frontend/lib/auth.ts
@@ -0,0 +1,21 @@
+import { ReadonlyRequestCookies } from "next/dist/server/web/spec-extension/adapters/request-cookies";
+import pb from "./pocketbase";
+import { redirect } from "next/navigation";
+
+export const getUserFromCookie = async (cookies: ReadonlyRequestCookies) => {
+ const cookie = cookies.get('pb_auth');
+ if (!cookie) {
+ redirect('/');
+ //throw new Error("No authenticated user");
+ } else {
+ pb.authStore.loadFromCookie(cookie?.value || '');
+ return pb.authStore.model;
+ }
+}
+
+export const isAuthenticated = async (cookieStore: ReadonlyRequestCookies) => {
+ const cookie = cookieStore.get('pb_auth');
+ if(!cookie) return false;
+ pb.authStore.loadFromCookie(cookie?.value || '');
+ return pb.authStore.isValid || false;
+}
\ No newline at end of file
diff --git a/Frontend/lib/pocketbase.ts b/Frontend/lib/pocketbase.ts
new file mode 100644
index 0000000..087e628
--- /dev/null
+++ b/Frontend/lib/pocketbase.ts
@@ -0,0 +1,8 @@
+import PocketBase from 'pocketbase';
+
+const pb = (() => {
+ const POCKETBASE_URL = process.env.NEXT_PUBLIC_POCKETBASE_URL;
+ return new PocketBase(POCKETBASE_URL);
+})();
+
+export default pb;
\ No newline at end of file
diff --git a/Frontend/middleware.ts b/Frontend/middleware.ts
new file mode 100644
index 0000000..83e735a
--- /dev/null
+++ b/Frontend/middleware.ts
@@ -0,0 +1,24 @@
+import { NextRequest, NextResponse } from "next/server";
+import pb from "./lib/pocketbase";
+import { isAuthenticated } from "./lib/auth";
+
+export async function middleware(request: NextRequest) {
+ const { pathname } = request.nextUrl;
+ if (
+ pathname.startsWith("/_next") ||
+ pathname.startsWith("/api") ||
+ pathname.startsWith("/static")
+ ) {
+ return NextResponse.next();
+ }
+ // const isLoggedIn = await isAuthenticated(request.cookies as any);
+ // if (pathname.startsWith("/account")) {
+ // if (isLoggedIn) {
+ // return NextResponse.next();
+ // } else {
+ // request.nextUrl.pathname = "/"
+ // }
+ // return NextResponse.redirect(request.nextUrl);
+ // }
+ // return NextResponse.next();
+}
diff --git a/Frontend/netlify.toml b/Frontend/netlify.toml
new file mode 100644
index 0000000..1f3b68e
--- /dev/null
+++ b/Frontend/netlify.toml
@@ -0,0 +1,2 @@
+[build]
+ functions = "./netlify/functions"
\ No newline at end of file
diff --git a/Frontend/netlify/functions/triggerBookNowEmail/index.js b/Frontend/netlify/functions/triggerBookNowEmail/index.js
new file mode 100644
index 0000000..1e6d703
--- /dev/null
+++ b/Frontend/netlify/functions/triggerBookNowEmail/index.js
@@ -0,0 +1,35 @@
+const fetch = require('node-fetch-commonjs')
+
+exports.handler = async function (event) {
+ if (event.body === null) {
+ return {
+ statusCode: 400,
+ body: JSON.stringify("Payload required"),
+ };
+ }
+
+ const requestBody = JSON.parse(event.body)
+
+ //automatically generated snippet from the email preview
+ //sends a request to an email handler for a subscribed email
+ await fetch(`${process.env.URL}/.netlify/functions/emails/BookNow`, {
+ headers: {
+ "netlify-emails-secret": process.env.NEXT_PUBLIC_NETLIFY_EMAILS_SECRET,
+ },
+ method: "POST",
+ body: JSON.stringify({
+ from: process.env.NEXT_PUBLIC_NETLIFY_FROM_EMAIL,
+ to: requestBody.subscriberEmail,
+ subject: "Thanks For Booking on Sign365",
+ parameters: {
+ email: requestBody.subscriberEmail,
+ },
+ }),
+ }
+ );
+
+ return {
+ statusCode: 200,
+ body: JSON.stringify("SignUp email sent!"),
+ };
+}
\ No newline at end of file
diff --git a/Frontend/netlify/functions/triggerLearnMoreEmail/assets/Whitepaper.pdf b/Frontend/netlify/functions/triggerLearnMoreEmail/assets/Whitepaper.pdf
new file mode 100644
index 0000000..008b5f8
Binary files /dev/null and b/Frontend/netlify/functions/triggerLearnMoreEmail/assets/Whitepaper.pdf differ
diff --git a/Frontend/netlify/functions/triggerLearnMoreEmail/index.js b/Frontend/netlify/functions/triggerLearnMoreEmail/index.js
new file mode 100644
index 0000000..4f2e33d
--- /dev/null
+++ b/Frontend/netlify/functions/triggerLearnMoreEmail/index.js
@@ -0,0 +1,44 @@
+const fetch = require('node-fetch-commonjs')
+const fs = require('fs');
+const path = require('path');
+
+exports.handler = async function (event) {
+ if (event.body === null) {
+ return {
+ statusCode: 400,
+ body: JSON.stringify("Payload required"),
+ };
+ }
+
+ const requestBody = JSON.parse(event.body)
+
+ const file = fs.readFileSync(path.resolve("./netlify/functions/triggerLearnMoreEmail/assets/Whitepaper.pdf")).toString("base64");
+
+ //automatically generated snippet from the email preview
+ //sends a request to an email handler for a subscribed email
+ await fetch(`${process.env.URL}/.netlify/functions/emails/WhitePaper`, {
+ headers: {
+ "netlify-emails-secret": process.env.NEXT_PUBLIC_NETLIFY_EMAILS_SECRET,
+ },
+ method: "POST",
+ body: JSON.stringify({
+ from: process.env.NEXT_PUBLIC_NETLIFY_FROM_EMAIL,
+ to: requestBody.subscriberEmail,
+ subject: "Thanks For Visiting Sign365",
+ attachments: [{
+ content: file,
+ filename: "Whitepaper.pdf",
+ type: "pdf",
+ }],
+ parameters: {
+ email: requestBody.subscriberEmail,
+ },
+ }),
+ }
+ );
+
+ return {
+ statusCode: 200,
+ body: JSON.stringify("WhitePaper email sent!"),
+ };
+}
\ No newline at end of file
diff --git a/Frontend/netlify/functions/triggerSignUpEmail/index.ts b/Frontend/netlify/functions/triggerSignUpEmail/index.ts
new file mode 100644
index 0000000..d94098c
--- /dev/null
+++ b/Frontend/netlify/functions/triggerSignUpEmail/index.ts
@@ -0,0 +1,63 @@
+exports.handler = async function (event: Event) {
+ console.log(event);
+ return {
+ statusCode: 200,
+ body: "Hello, World!",
+ headers: {
+ "Access-Control-Allow-Origin": "http://localhost:3000", // <-- This allows any domain
+ // "Access-Control-Allow-Headers": "Content-Type",
+ },
+ };
+};
+
+// import fetch from 'node-fetch-commonjs';
+
+// export async function handler(event) {
+// if (event.body === null) {
+// return {
+// statusCode: 400,
+// body: JSON.stringify("Payload required"),
+// headers: {
+// "Access-Control-Allow-Origin": "*",
+// "Access-Control-Allow-Headers": "Content-Type"
+// }
+// };
+// }
+// console.log("Incoming event.body:", event.body);
+// const requestBody = JSON.parse(event.body);
+// if(!requestBody){
+// console.log("No Body")
+// }
+// const url = `./.netlify/functions/emails/SignUp`;
+// const email = requestBody.subscriberEmail;
+// console.log("Using URL:", url);
+// //automatically generated snippet from the email preview
+// //sends a request to an email handler for a subscribed email
+// try {
+// await fetch(`/.netlify/functions/emails/SignUp`, {
+// headers: {
+// "netlify-emails-secret": process.env.NEXT_PUBLIC_NETLIFY_EMAILS_SECRET,
+// },
+// method: "POST",
+// body: JSON.stringify({
+// from: process.env.NEXT_PUBLIC_NETLIFY_FROM_EMAIL,
+// to: email,
+// subject: "Thanks For Signing Up on Sign365",
+// parameters: {
+// email: email,
+// },
+// }),
+// });
+// } catch (err) {
+// console.log("Error sending Mailchimp email", err.message);
+// return {
+// statusCode: 500,
+// body: JSON.stringify("Failed to send Mailchimp email."),
+// headers: {
+// "Access-Control-Allow-Origin": "*",
+// "Access-Control-Allow-Headers": "Content-Type"
+// }
+// };
+// }
+
+// }
diff --git a/Frontend/next.config.js b/Frontend/next.config.js
new file mode 100644
index 0000000..446c453
--- /dev/null
+++ b/Frontend/next.config.js
@@ -0,0 +1,31 @@
+/** @type {import('next').NextConfig} */
+const nextConfig = {
+ compiler: {
+ // Enables the styled-components SWC transform
+ styledComponents: true
+ },
+
+ webpack(config) {
+ config.resolve.fallback = {
+ // if you miss it, all the other options in fallback, specified
+ // by next.js will be dropped.
+ ...config.resolve.fallback,
+
+ fs: false, // the solution
+ };
+
+ return config;
+ },
+ images: {
+ remotePatterns: [
+ {
+ protocol: "https",
+ hostname: "**",
+ port: "",
+ pathname: "**",
+ },
+ ],
+ },
+};
+
+module.exports = nextConfig;
diff --git a/Frontend/package-lock.json b/Frontend/package-lock.json
new file mode 100644
index 0000000..fe45471
--- /dev/null
+++ b/Frontend/package-lock.json
@@ -0,0 +1,9991 @@
+{
+ "name": "sign365website",
+ "version": "0.1.0",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "sign365website",
+ "version": "0.1.0",
+ "dependencies": {
+ "@hookform/resolvers": "^3.2.0",
+ "@netlify/functions": "^2.1.0",
+ "@next/third-parties": "^14.1.0",
+ "@tailwindcss/forms": "^0.5.4",
+ "@vidstack/react": "^1.9.8",
+ "aos": "^2.3.4",
+ "autoprefixer": "10.4.15",
+ "crypto-js": "^4.2.0",
+ "daisyui": "^3.5.1",
+ "eslint": "8.47.0",
+ "eslint-config-next": "13.4.17",
+ "gray-matter": "^4.0.3",
+ "next": "^14.1.0",
+ "next-qrcode": "^2.5.1",
+ "node-fetch-commonjs": "^3.3.2",
+ "pocketbase": "^0.18.0",
+ "postcss": "^8.4.33",
+ "posthog-js": "^1.105.0",
+ "preline": "^2.0.3",
+ "react": "18.2.0",
+ "react-dom": "18.2.0",
+ "react-hook-form": "^7.45.4",
+ "react-icons": "^4.11.0",
+ "react-toastify": "^9.1.3",
+ "sharp": "^0.32.6",
+ "styled-icons": "^10.47.0",
+ "tailwindcss": "3.3.3",
+ "typescript": "5.1.6",
+ "yup": "^1.2.0",
+ "yup-password": "^0.2.2"
+ },
+ "devDependencies": {
+ "@tailwindcss/typography": "^0.5.9",
+ "@types/aos": "^3.0.4",
+ "@types/crypto-js": "^4.2.1",
+ "@types/node": "20.5.0",
+ "@types/react": "18.2.20",
+ "markdown-to-jsx": "^7.3.2"
+ }
+ },
+ "node_modules/@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@alloc/quick-lru": {
+ "version": "5.2.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
+ "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
+ "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
+ "peer": true,
+ "dependencies": {
+ "@babel/highlight": "^7.23.4",
+ "chalk": "^2.4.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "peer": true,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "peer": true
+ },
+ "node_modules/@babel/code-frame/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "peer": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "peer": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz",
+ "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==",
+ "peer": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.23.7",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz",
+ "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==",
+ "peer": true,
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.23.5",
+ "@babel/generator": "^7.23.6",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helpers": "^7.23.7",
+ "@babel/parser": "^7.23.6",
+ "@babel/template": "^7.22.15",
+ "@babel/traverse": "^7.23.7",
+ "@babel/types": "^7.23.6",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/core/node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "peer": true,
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "peer": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
+ "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
+ "peer": true,
+ "dependencies": {
+ "@babel/types": "^7.23.6",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jsesc": "^2.5.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
+ "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
+ "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
+ "peer": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.23.5",
+ "@babel/helper-validator-option": "^7.23.5",
+ "browserslist": "^4.22.2",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "peer": true,
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "peer": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "peer": true
+ },
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+ "peer": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-function-name": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
+ "peer": true,
+ "dependencies": {
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+ "peer": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
+ "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
+ "peer": true,
+ "dependencies": {
+ "@babel/types": "^7.22.15"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
+ "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-simple-access": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/helper-validator-identifier": "^7.22.20"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
+ "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
+ "peer": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
+ "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+ "peer": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
+ "peer": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
+ "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
+ "peer": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+ "peer": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
+ "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
+ "peer": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.23.8",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.8.tgz",
+ "integrity": "sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==",
+ "peer": true,
+ "dependencies": {
+ "@babel/template": "^7.22.15",
+ "@babel/traverse": "^7.23.7",
+ "@babel/types": "^7.23.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
+ "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "peer": true,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "peer": true
+ },
+ "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "peer": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "peer": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz",
+ "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==",
+ "peer": true,
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz",
+ "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.23.4",
+ "license": "MIT",
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
+ "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
+ "peer": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.22.13",
+ "@babel/parser": "^7.22.15",
+ "@babel/types": "^7.22.15"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.23.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz",
+ "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.23.5",
+ "@babel/generator": "^7.23.6",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/parser": "^7.23.6",
+ "@babel/types": "^7.23.6",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "peer": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz",
+ "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.23.4",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@emotion/is-prop-valid": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz",
+ "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==",
+ "peer": true,
+ "dependencies": {
+ "@emotion/memoize": "^0.8.1"
+ }
+ },
+ "node_modules/@emotion/memoize": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
+ "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==",
+ "peer": true
+ },
+ "node_modules/@emotion/stylis": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz",
+ "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==",
+ "peer": true
+ },
+ "node_modules/@emotion/unitless": {
+ "version": "0.7.5",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
+ "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==",
+ "peer": true
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "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.10.0",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.3",
+ "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.54.0",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@hookform/resolvers": {
+ "version": "3.3.2",
+ "license": "MIT",
+ "peerDependencies": {
+ "react-hook-form": "^7.0.0"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.11.13",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^2.0.1",
+ "debug": "^4.1.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "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.1",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.3",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.1.2",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.20",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@netlify/functions": {
+ "version": "2.4.0",
+ "license": "MIT",
+ "dependencies": {
+ "@netlify/serverless-functions-api": "1.11.0",
+ "is-promise": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@netlify/node-cookies": {
+ "version": "0.1.0",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.16.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@netlify/serverless-functions-api": {
+ "version": "1.11.0",
+ "license": "MIT",
+ "dependencies": {
+ "@netlify/node-cookies": "^0.1.0",
+ "urlpattern-polyfill": "8.0.2"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@next/env": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-14.1.0.tgz",
+ "integrity": "sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw=="
+ },
+ "node_modules/@next/eslint-plugin-next": {
+ "version": "13.4.17",
+ "license": "MIT",
+ "dependencies": {
+ "glob": "7.1.7"
+ }
+ },
+ "node_modules/@next/eslint-plugin-next/node_modules/glob": {
+ "version": "7.1.7",
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@next/swc-darwin-arm64": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.1.0.tgz",
+ "integrity": "sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-darwin-x64": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.1.0.tgz",
+ "integrity": "sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-gnu": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.1.0.tgz",
+ "integrity": "sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-musl": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.1.0.tgz",
+ "integrity": "sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-gnu": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.1.0.tgz",
+ "integrity": "sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-musl": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.1.0.tgz",
+ "integrity": "sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-arm64-msvc": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.1.0.tgz",
+ "integrity": "sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-ia32-msvc": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.1.0.tgz",
+ "integrity": "sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-x64-msvc": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.1.0.tgz",
+ "integrity": "sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/third-parties": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/third-parties/-/third-parties-14.1.0.tgz",
+ "integrity": "sha512-f55SdvQ1WWxi4mb5QqtYQh5wRzbm1XaeP7s39DPn4ks3re+n9VlFccbMxBRHqkE62zAyIKmvkUB2cByT/gugGA==",
+ "dependencies": {
+ "third-party-capital": "1.0.20"
+ },
+ "peerDependencies": {
+ "next": "^13.0.0 || ^14.0.0",
+ "react": "^18.2.0"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "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",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@popperjs/core": {
+ "version": "2.11.8",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+ "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
+ },
+ "node_modules/@rushstack/eslint-patch": {
+ "version": "1.6.0",
+ "license": "MIT"
+ },
+ "node_modules/@styled-icons/bootstrap": {
+ "version": "10.47.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/boxicons-logos": {
+ "version": "10.47.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/boxicons-regular": {
+ "version": "10.47.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/boxicons-solid": {
+ "version": "10.47.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/crypto": {
+ "version": "10.47.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/entypo": {
+ "version": "10.46.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/entypo-social": {
+ "version": "10.46.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/evaicons-outline": {
+ "version": "10.46.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/evaicons-solid": {
+ "version": "10.46.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/evil": {
+ "version": "10.46.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/fa-brands": {
+ "version": "10.47.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/fa-regular": {
+ "version": "10.47.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/fa-solid": {
+ "version": "10.47.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/feather": {
+ "version": "10.47.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/fluentui-system-filled": {
+ "version": "10.47.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/fluentui-system-regular": {
+ "version": "10.47.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/foundation": {
+ "version": "10.46.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/heroicons-outline": {
+ "version": "10.47.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/heroicons-solid": {
+ "version": "10.47.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/icomoon": {
+ "version": "10.46.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/ionicons-outline": {
+ "version": "10.46.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/ionicons-sharp": {
+ "version": "10.46.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/ionicons-solid": {
+ "version": "10.46.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/material": {
+ "version": "10.47.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/material-outlined": {
+ "version": "10.47.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/material-rounded": {
+ "version": "10.47.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/material-sharp": {
+ "version": "10.47.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/material-twotone": {
+ "version": "10.47.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/octicons": {
+ "version": "10.47.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/open-iconic": {
+ "version": "10.46.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/remix-editor": {
+ "version": "10.46.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/remix-fill": {
+ "version": "10.46.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/remix-line": {
+ "version": "10.46.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/simple-icons": {
+ "version": "10.46.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/styled-icon": {
+ "version": "10.7.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.19.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": ">=4.1.0 <6"
+ }
+ },
+ "node_modules/@styled-icons/typicons": {
+ "version": "10.46.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@styled-icons/zondicons": {
+ "version": "10.46.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": "*"
+ }
+ },
+ "node_modules/@swc/helpers": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz",
+ "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==",
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@tailwindcss/forms": {
+ "version": "0.5.7",
+ "license": "MIT",
+ "dependencies": {
+ "mini-svg-data-uri": "^1.2.3"
+ },
+ "peerDependencies": {
+ "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1"
+ }
+ },
+ "node_modules/@tailwindcss/typography": {
+ "version": "0.5.10",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "lodash.castarray": "^4.4.0",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.merge": "^4.6.2",
+ "postcss-selector-parser": "6.0.10"
+ },
+ "peerDependencies": {
+ "tailwindcss": ">=3.0.0 || insiders"
+ }
+ },
+ "node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": {
+ "version": "6.0.10",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@types/aos": {
+ "version": "3.0.7",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/crypto-js": {
+ "version": "4.2.1",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/json5": {
+ "version": "0.0.29",
+ "license": "MIT"
+ },
+ "node_modules/@types/node": {
+ "version": "20.5.0",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/prop-types": {
+ "version": "15.7.11",
+ "license": "MIT"
+ },
+ "node_modules/@types/react": {
+ "version": "18.2.20",
+ "license": "MIT",
+ "dependencies": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@types/scheduler": {
+ "version": "0.16.8",
+ "license": "MIT"
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "6.13.0",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "6.13.0",
+ "@typescript-eslint/types": "6.13.0",
+ "@typescript-eslint/typescript-estree": "6.13.0",
+ "@typescript-eslint/visitor-keys": "6.13.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "6.13.0",
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "6.13.0",
+ "@typescript-eslint/visitor-keys": "6.13.0"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "6.13.0",
+ "license": "MIT",
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "6.13.0",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@typescript-eslint/types": "6.13.0",
+ "@typescript-eslint/visitor-keys": "6.13.0",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "6.13.0",
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "6.13.0",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@vidstack/react": {
+ "version": "1.9.8",
+ "resolved": "https://registry.npmjs.org/@vidstack/react/-/react-1.9.8.tgz",
+ "integrity": "sha512-1gGlCXpmGriKZ+sgP1WLgm4tpkU2buXeAIPFoh8t7V4X3jV1l15oZS4whfPswCY6/9jAwVKq0jQBLryAuBYZww==",
+ "dependencies": {
+ "media-captions": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/react": "^18.0.0",
+ "react": "^18.0.0"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.11.2",
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "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",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "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",
+ "license": "MIT"
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "license": "ISC",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/aos": {
+ "version": "2.3.4",
+ "license": "MIT",
+ "dependencies": {
+ "classlist-polyfill": "^1.0.3",
+ "lodash.debounce": "^4.0.6",
+ "lodash.throttle": "^4.0.1"
+ }
+ },
+ "node_modules/arg": {
+ "version": "5.0.2",
+ "license": "MIT"
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "license": "Python-2.0"
+ },
+ "node_modules/aria-query": {
+ "version": "5.3.0",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "dequal": "^2.0.3"
+ }
+ },
+ "node_modules/array-buffer-byte-length": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "is-array-buffer": "^3.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-includes": {
+ "version": "3.1.7",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "is-string": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/array.prototype.findlastindex": {
+ "version": "1.2.3",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0",
+ "get-intrinsic": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flat": {
+ "version": "1.3.2",
+ "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",
+ "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.2",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0",
+ "get-intrinsic": "^1.2.1"
+ }
+ },
+ "node_modules/arraybuffer.prototype.slice": {
+ "version": "1.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.0",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "is-array-buffer": "^3.0.2",
+ "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",
+ "license": "MIT"
+ },
+ "node_modules/asynciterator.prototype": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ }
+ },
+ "node_modules/autoprefixer": {
+ "version": "10.4.15",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.21.10",
+ "caniuse-lite": "^1.0.30001520",
+ "fraction.js": "^4.2.0",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.5",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/axe-core": {
+ "version": "4.7.0",
+ "license": "MPL-2.0",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/axobject-query": {
+ "version": "3.2.1",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "dequal": "^2.0.3"
+ }
+ },
+ "node_modules/b4a": {
+ "version": "1.6.4",
+ "license": "ISC"
+ },
+ "node_modules/babel-plugin-styled-components": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz",
+ "integrity": "sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-module-imports": "^7.22.5",
+ "@babel/plugin-syntax-jsx": "^7.22.5",
+ "lodash": "^4.17.21",
+ "picomatch": "^2.3.1"
+ },
+ "peerDependencies": {
+ "styled-components": ">= 2"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "license": "MIT"
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "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/binary-extensions": {
+ "version": "2.2.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/bl": {
+ "version": "4.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "buffer": "^5.5.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.22.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz",
+ "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001565",
+ "electron-to-chromium": "^1.4.601",
+ "node-releases": "^2.0.14",
+ "update-browserslist-db": "^1.0.13"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/buffer": {
+ "version": "5.7.1",
+ "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": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "node_modules/busboy": {
+ "version": "1.6.0",
+ "dependencies": {
+ "streamsearch": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=10.16.0"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.5",
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.1",
+ "set-function-length": "^1.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "5.3.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase-css": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/camelize": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
+ "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==",
+ "peer": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001579",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz",
+ "integrity": "sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==",
+ "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"
+ }
+ ]
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "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.5.3",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "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"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chokidar/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/chownr": {
+ "version": "1.1.4",
+ "license": "ISC"
+ },
+ "node_modules/classlist-polyfill": {
+ "version": "1.2.0",
+ "license": "Unlicense"
+ },
+ "node_modules/client-only": {
+ "version": "0.0.1",
+ "license": "MIT"
+ },
+ "node_modules/cliui": {
+ "version": "6.0.0",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ }
+ },
+ "node_modules/clsx": {
+ "version": "1.2.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/color": {
+ "version": "4.2.3",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1",
+ "color-string": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=12.5.0"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "license": "MIT"
+ },
+ "node_modules/color-string": {
+ "version": "1.9.1",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "node_modules/colord": {
+ "version": "2.9.3",
+ "license": "MIT"
+ },
+ "node_modules/commander": {
+ "version": "4.1.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "license": "MIT"
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "peer": true
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/crypto-js": {
+ "version": "4.2.0",
+ "license": "MIT"
+ },
+ "node_modules/css-color-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
+ "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==",
+ "peer": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/css-selector-tokenizer": {
+ "version": "0.8.0",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "fastparse": "^1.1.2"
+ }
+ },
+ "node_modules/css-to-react-native": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz",
+ "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==",
+ "peer": true,
+ "dependencies": {
+ "camelize": "^1.0.0",
+ "css-color-keywords": "^1.0.0",
+ "postcss-value-parser": "^4.0.2"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.1.2",
+ "license": "MIT"
+ },
+ "node_modules/daisyui": {
+ "version": "3.9.4",
+ "license": "MIT",
+ "dependencies": {
+ "colord": "^2.9",
+ "css-selector-tokenizer": "^0.8",
+ "postcss": "^8",
+ "postcss-js": "^4",
+ "tailwindcss": "^3.1"
+ },
+ "engines": {
+ "node": ">=16.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/daisyui"
+ }
+ },
+ "node_modules/daisyui/node_modules/postcss-import": {
+ "version": "15.1.0",
+ "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/daisyui/node_modules/postcss-js": {
+ "version": "4.0.1",
+ "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/daisyui/node_modules/postcss-load-config": {
+ "version": "4.0.2",
+ "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/daisyui/node_modules/postcss-load-config/node_modules/lilconfig": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/daisyui/node_modules/postcss-nested": {
+ "version": "6.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.11"
+ },
+ "engines": {
+ "node": ">=12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.14"
+ }
+ },
+ "node_modules/daisyui/node_modules/tailwindcss": {
+ "version": "3.3.5",
+ "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.19.1",
+ "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/damerau-levenshtein": {
+ "version": "1.0.8",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decamelize": {
+ "version": "1.2.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decompress-response": {
+ "version": "6.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-response": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/deep-extend": {
+ "version": "0.6.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "license": "MIT"
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.1",
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.2.1",
+ "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/dequal": {
+ "version": "2.0.3",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "2.0.2",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/didyoumean": {
+ "version": "1.2.2",
+ "license": "Apache-2.0"
+ },
+ "node_modules/dijkstrajs": {
+ "version": "1.0.3",
+ "license": "MIT"
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dlv": {
+ "version": "1.1.3",
+ "license": "MIT"
+ },
+ "node_modules/doctrine": {
+ "version": "2.1.0",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.613",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.613.tgz",
+ "integrity": "sha512-r4x5+FowKG6q+/Wj0W9nidx7QO31BJwmR2uEo+Qh3YLGQ8SbBAFuDFpTxzly/I2gsbrFwBuIjrMp423L3O5U3w=="
+ },
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "license": "MIT"
+ },
+ "node_modules/encode-utf8": {
+ "version": "1.0.3",
+ "license": "MIT"
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.4",
+ "license": "MIT",
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.15.0",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/es-abstract": {
+ "version": "1.22.3",
+ "license": "MIT",
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.0",
+ "arraybuffer.prototype.slice": "^1.0.2",
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.5",
+ "es-set-tostringtag": "^2.0.1",
+ "es-to-primitive": "^1.2.1",
+ "function.prototype.name": "^1.1.6",
+ "get-intrinsic": "^1.2.2",
+ "get-symbol-description": "^1.0.0",
+ "globalthis": "^1.0.3",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0",
+ "internal-slot": "^1.0.5",
+ "is-array-buffer": "^3.0.2",
+ "is-callable": "^1.2.7",
+ "is-negative-zero": "^2.0.2",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "is-string": "^1.0.7",
+ "is-typed-array": "^1.1.12",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.13.1",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.4",
+ "regexp.prototype.flags": "^1.5.1",
+ "safe-array-concat": "^1.0.1",
+ "safe-regex-test": "^1.0.0",
+ "string.prototype.trim": "^1.2.8",
+ "string.prototype.trimend": "^1.0.7",
+ "string.prototype.trimstart": "^1.0.7",
+ "typed-array-buffer": "^1.0.0",
+ "typed-array-byte-length": "^1.0.0",
+ "typed-array-byte-offset": "^1.0.0",
+ "typed-array-length": "^1.0.4",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-iterator-helpers": {
+ "version": "1.0.15",
+ "license": "MIT",
+ "dependencies": {
+ "asynciterator.prototype": "^1.0.0",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.22.1",
+ "es-set-tostringtag": "^2.0.1",
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.2.1",
+ "globalthis": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.5",
+ "iterator.prototype": "^1.1.2",
+ "safe-array-concat": "^1.0.1"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.2.2",
+ "has-tostringtag": "^1.0.0",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-shim-unscopables": {
+ "version": "1.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.0"
+ }
+ },
+ "node_modules/es-to-primitive": {
+ "version": "1.2.1",
+ "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/escalade": {
+ "version": "3.1.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.47.0",
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.2",
+ "@eslint/js": "^8.47.0",
+ "@humanwhocodes/config-array": "^0.11.10",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "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": "13.4.17",
+ "license": "MIT",
+ "dependencies": {
+ "@next/eslint-plugin-next": "13.4.17",
+ "@rushstack/eslint-patch": "^1.1.3",
+ "@typescript-eslint/parser": "^5.4.2 || ^6.0.0",
+ "eslint-import-resolver-node": "^0.3.6",
+ "eslint-import-resolver-typescript": "^3.5.2",
+ "eslint-plugin-import": "^2.26.0",
+ "eslint-plugin-jsx-a11y": "^6.5.1",
+ "eslint-plugin-react": "^7.31.7",
+ "eslint-plugin-react-hooks": "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",
+ "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",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-import-resolver-node/node_modules/ms": {
+ "version": "2.1.3",
+ "license": "MIT"
+ },
+ "node_modules/eslint-import-resolver-typescript": {
+ "version": "3.6.1",
+ "license": "ISC",
+ "dependencies": {
+ "debug": "^4.3.4",
+ "enhanced-resolve": "^5.12.0",
+ "eslint-module-utils": "^2.7.4",
+ "fast-glob": "^3.3.1",
+ "get-tsconfig": "^4.5.0",
+ "is-core-module": "^2.11.0",
+ "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": "*"
+ }
+ },
+ "node_modules/eslint-module-utils": {
+ "version": "2.8.0",
+ "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",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/ms": {
+ "version": "2.1.3",
+ "license": "MIT"
+ },
+ "node_modules/eslint-plugin-import": {
+ "version": "2.29.0",
+ "license": "MIT",
+ "dependencies": {
+ "array-includes": "^3.1.7",
+ "array.prototype.findlastindex": "^1.2.3",
+ "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.8.0",
+ "hasown": "^2.0.0",
+ "is-core-module": "^2.13.1",
+ "is-glob": "^4.0.3",
+ "minimatch": "^3.1.2",
+ "object.fromentries": "^2.0.7",
+ "object.groupby": "^1.0.1",
+ "object.values": "^1.1.7",
+ "semver": "^6.3.1",
+ "tsconfig-paths": "^3.14.2"
+ },
+ "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",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/ms": {
+ "version": "2.1.3",
+ "license": "MIT"
+ },
+ "node_modules/eslint-plugin-import/node_modules/semver": {
+ "version": "6.3.1",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/eslint-plugin-jsx-a11y": {
+ "version": "6.8.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.23.2",
+ "aria-query": "^5.3.0",
+ "array-includes": "^3.1.7",
+ "array.prototype.flatmap": "^1.3.2",
+ "ast-types-flow": "^0.0.8",
+ "axe-core": "=4.7.0",
+ "axobject-query": "^3.2.1",
+ "damerau-levenshtein": "^1.0.8",
+ "emoji-regex": "^9.2.2",
+ "es-iterator-helpers": "^1.0.15",
+ "hasown": "^2.0.0",
+ "jsx-ast-utils": "^3.3.5",
+ "language-tags": "^1.0.9",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.7",
+ "object.fromentries": "^2.0.7"
+ },
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-react": {
+ "version": "7.33.2",
+ "license": "MIT",
+ "dependencies": {
+ "array-includes": "^3.1.6",
+ "array.prototype.flatmap": "^1.3.1",
+ "array.prototype.tosorted": "^1.1.1",
+ "doctrine": "^2.1.0",
+ "es-iterator-helpers": "^1.0.12",
+ "estraverse": "^5.3.0",
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.6",
+ "object.fromentries": "^2.0.6",
+ "object.hasown": "^1.1.2",
+ "object.values": "^1.1.6",
+ "prop-types": "^15.8.1",
+ "resolve": "^2.0.0-next.4",
+ "semver": "^6.3.1",
+ "string.prototype.matchall": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "5.0.0-canary-7118f5dd7-20230705",
+ "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/resolve": {
+ "version": "2.0.0-next.5",
+ "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",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "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",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/doctrine": {
+ "version": "3.0.0",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "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/esprima": {
+ "version": "4.0.1",
+ "license": "BSD-2-Clause",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.5.0",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-template": {
+ "version": "2.0.3",
+ "license": "(MIT OR WTFPL)",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "license": "MIT"
+ },
+ "node_modules/fast-fifo": {
+ "version": "1.3.2",
+ "license": "MIT"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "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",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "license": "MIT"
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "license": "MIT"
+ },
+ "node_modules/fastparse": {
+ "version": "1.1.2",
+ "license": "MIT"
+ },
+ "node_modules/fastq": {
+ "version": "1.15.0",
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fflate": {
+ "version": "0.4.8",
+ "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz",
+ "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA=="
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "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",
+ "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.2.9",
+ "license": "ISC"
+ },
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "license": "MIT",
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
+ "node_modules/fraction.js": {
+ "version": "4.3.7",
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "type": "patreon",
+ "url": "https://github.com/sponsors/rawify"
+ }
+ },
+ "node_modules/fs-constants": {
+ "version": "1.0.0",
+ "license": "MIT"
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "license": "ISC"
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/function.prototype.name": {
+ "version": "1.1.6",
+ "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",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "peer": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.2",
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-tsconfig": {
+ "version": "4.7.2",
+ "license": "MIT",
+ "dependencies": {
+ "resolve-pkg-maps": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
+ }
+ },
+ "node_modules/github-from-package": {
+ "version": "0.0.0",
+ "license": "MIT"
+ },
+ "node_modules/glob": {
+ "version": "7.1.6",
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/globals": {
+ "version": "13.23.0",
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globals/node_modules/type-fest": {
+ "version": "0.20.2",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.3",
+ "license": "MIT",
+ "dependencies": {
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "license": "ISC"
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "license": "MIT"
+ },
+ "node_modules/gray-matter": {
+ "version": "4.0.3",
+ "license": "MIT",
+ "dependencies": {
+ "js-yaml": "^3.13.1",
+ "kind-of": "^6.0.2",
+ "section-matter": "^1.0.0",
+ "strip-bom-string": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/gray-matter/node_modules/argparse": {
+ "version": "1.0.10",
+ "license": "MIT",
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/gray-matter/node_modules/js-yaml": {
+ "version": "3.14.1",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/has-bigints": {
+ "version": "1.0.2",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.2.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "peer": true,
+ "dependencies": {
+ "react-is": "^16.7.0"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "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": "BSD-3-Clause"
+ },
+ "node_modules/ignore": {
+ "version": "5.3.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "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",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "license": "ISC",
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "license": "ISC"
+ },
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "license": "ISC"
+ },
+ "node_modules/internal-slot": {
+ "version": "1.0.6",
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.2.2",
+ "hasown": "^2.0.0",
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-array-buffer": {
+ "version": "3.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.0",
+ "is-typed-array": "^1.1.10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.3.2",
+ "license": "MIT"
+ },
+ "node_modules/is-async-function": {
+ "version": "2.0.0",
+ "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",
+ "license": "MIT",
+ "dependencies": {
+ "has-bigints": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.1.2",
+ "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-callable": {
+ "version": "1.2.7",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.13.1",
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-date-object": {
+ "version": "1.0.5",
+ "license": "MIT",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-extendable": {
+ "version": "0.1.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-finalizationregistry": {
+ "version": "1.0.2",
+ "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",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-generator-function": {
+ "version": "1.0.10",
+ "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",
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-map": {
+ "version": "2.0.2",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-negative-zero": {
+ "version": "2.0.2",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-number-object": {
+ "version": "1.0.7",
+ "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",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-promise": {
+ "version": "4.0.0",
+ "license": "MIT"
+ },
+ "node_modules/is-regex": {
+ "version": "1.1.4",
+ "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.2",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.0.7",
+ "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",
+ "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.12",
+ "license": "MIT",
+ "dependencies": {
+ "which-typed-array": "^1.1.11"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakmap": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakref": {
+ "version": "1.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakset": {
+ "version": "2.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "2.0.5",
+ "license": "MIT"
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "license": "ISC"
+ },
+ "node_modules/iterator.prototype": {
+ "version": "1.1.2",
+ "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/jiti": {
+ "version": "1.21.0",
+ "license": "MIT",
+ "bin": {
+ "jiti": "bin/jiti.js"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "license": "MIT"
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "peer": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "license": "MIT"
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "license": "MIT"
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "license": "MIT"
+ },
+ "node_modules/json5": {
+ "version": "1.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/jsx-ast-utils": {
+ "version": "3.3.5",
+ "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/keyv": {
+ "version": "4.5.4",
+ "license": "MIT",
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/language-subtag-registry": {
+ "version": "0.3.22",
+ "license": "CC0-1.0"
+ },
+ "node_modules/language-tags": {
+ "version": "1.0.9",
+ "license": "MIT",
+ "dependencies": {
+ "language-subtag-registry": "^0.3.20"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "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",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "license": "MIT"
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "peer": true
+ },
+ "node_modules/lodash.castarray": {
+ "version": "4.4.0",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "license": "MIT"
+ },
+ "node_modules/lodash.isplainobject": {
+ "version": "4.0.6",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "license": "MIT"
+ },
+ "node_modules/lodash.throttle": {
+ "version": "4.1.1",
+ "license": "MIT"
+ },
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "license": "MIT",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "6.0.0",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/markdown-to-jsx": {
+ "version": "7.3.2",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ },
+ "peerDependencies": {
+ "react": ">= 0.14.0"
+ }
+ },
+ "node_modules/media-captions": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/media-captions/-/media-captions-1.0.2.tgz",
+ "integrity": "sha512-QxAFc+XTGZeMx+ZvLtMxEDgAjd0kr1LJ2NekLr1cw/UKENOxK7B9g6HwtuTQzCXxmb4Dknd4T8M7FOqqCK9buA==",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mimic-response": {
+ "version": "3.1.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mini-svg-data-uri": {
+ "version": "1.4.4",
+ "license": "MIT",
+ "bin": {
+ "mini-svg-data-uri": "cli.js"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/mkdirp-classic": {
+ "version": "0.5.3",
+ "license": "MIT"
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "license": "MIT"
+ },
+ "node_modules/mz": {
+ "version": "2.7.0",
+ "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",
+ "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/napi-build-utils": {
+ "version": "1.0.2",
+ "license": "MIT"
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "license": "MIT"
+ },
+ "node_modules/next": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/next/-/next-14.1.0.tgz",
+ "integrity": "sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==",
+ "dependencies": {
+ "@next/env": "14.1.0",
+ "@swc/helpers": "0.5.2",
+ "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.1.0",
+ "@next/swc-darwin-x64": "14.1.0",
+ "@next/swc-linux-arm64-gnu": "14.1.0",
+ "@next/swc-linux-arm64-musl": "14.1.0",
+ "@next/swc-linux-x64-gnu": "14.1.0",
+ "@next/swc-linux-x64-musl": "14.1.0",
+ "@next/swc-win32-arm64-msvc": "14.1.0",
+ "@next/swc-win32-ia32-msvc": "14.1.0",
+ "@next/swc-win32-x64-msvc": "14.1.0"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.1.0",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "sass": "^1.3.0"
+ },
+ "peerDependenciesMeta": {
+ "@opentelemetry/api": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/next-qrcode": {
+ "version": "2.5.1",
+ "license": "MIT",
+ "dependencies": {
+ "qrcode": "^1.5.3"
+ },
+ "engines": {
+ "node": ">=8",
+ "npm": ">=5"
+ },
+ "peerDependencies": {
+ "react": ">=17.0.0"
+ }
+ },
+ "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"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/node-abi": {
+ "version": "3.51.0",
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/node-addon-api": {
+ "version": "6.1.0",
+ "license": "MIT"
+ },
+ "node_modules/node-domexception": {
+ "version": "1.0.0",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/jimmywarting"
+ },
+ {
+ "type": "github",
+ "url": "https://paypal.me/jimmywarting"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.5.0"
+ }
+ },
+ "node_modules/node-fetch-commonjs": {
+ "version": "3.3.2",
+ "license": "MIT",
+ "dependencies": {
+ "node-domexception": "^1.0.0",
+ "web-streams-polyfill": "^3.0.3"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/node-fetch"
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw=="
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-range": {
+ "version": "0.1.2",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-hash": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.1",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.4",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "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.7",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.fromentries": {
+ "version": "2.0.7",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.groupby": {
+ "version": "1.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1"
+ }
+ },
+ "node_modules/object.hasown": {
+ "version": "1.1.3",
+ "license": "MIT",
+ "dependencies": {
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.values": {
+ "version": "1.1.7",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "license": "ISC",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.3",
+ "license": "MIT",
+ "dependencies": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "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",
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "2.2.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "license": "MIT"
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pirates": {
+ "version": "4.0.6",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/pngjs": {
+ "version": "5.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/pocketbase": {
+ "version": "0.18.3",
+ "license": "MIT"
+ },
+ "node_modules/postcss": {
+ "version": "8.4.33",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz",
+ "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==",
+ "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"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.0.13",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "license": "MIT"
+ },
+ "node_modules/posthog-js": {
+ "version": "1.105.0",
+ "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.105.0.tgz",
+ "integrity": "sha512-1pE4nuDphxHx1oxezvYB3jjSQgH9LYGwel5ys5+vw9N5+KggXuzwZ9sVIFTHo5/4Wox+OmM7w5j7b6h62OrOHQ==",
+ "dependencies": {
+ "fflate": "^0.4.8",
+ "preact": "^10.19.3"
+ }
+ },
+ "node_modules/preact": {
+ "version": "10.19.3",
+ "resolved": "https://registry.npmjs.org/preact/-/preact-10.19.3.tgz",
+ "integrity": "sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/preact"
+ }
+ },
+ "node_modules/prebuild-install": {
+ "version": "7.1.1",
+ "license": "MIT",
+ "dependencies": {
+ "detect-libc": "^2.0.0",
+ "expand-template": "^2.0.3",
+ "github-from-package": "0.0.0",
+ "minimist": "^1.2.3",
+ "mkdirp-classic": "^0.5.3",
+ "napi-build-utils": "^1.0.1",
+ "node-abi": "^3.3.0",
+ "pump": "^3.0.0",
+ "rc": "^1.2.7",
+ "simple-get": "^4.0.0",
+ "tar-fs": "^2.0.0",
+ "tunnel-agent": "^0.6.0"
+ },
+ "bin": {
+ "prebuild-install": "bin.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/prebuild-install/node_modules/tar-fs": {
+ "version": "2.1.1",
+ "license": "MIT",
+ "dependencies": {
+ "chownr": "^1.1.1",
+ "mkdirp-classic": "^0.5.2",
+ "pump": "^3.0.0",
+ "tar-stream": "^2.1.4"
+ }
+ },
+ "node_modules/prebuild-install/node_modules/tar-stream": {
+ "version": "2.2.0",
+ "license": "MIT",
+ "dependencies": {
+ "bl": "^4.0.3",
+ "end-of-stream": "^1.4.1",
+ "fs-constants": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/preline": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/preline/-/preline-2.0.3.tgz",
+ "integrity": "sha512-V/sLmRIHd23UCdvJNRKKszntgUqA0381erVzRpQ48NjjMOgI7DyFW4mr+lg387V0oeBc5Dx9Jxa5voppVoH9GA==",
+ "dependencies": {
+ "@popperjs/core": "^2.11.2"
+ }
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prop-types": {
+ "version": "15.8.1",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
+ }
+ },
+ "node_modules/property-expr": {
+ "version": "2.0.6",
+ "license": "MIT"
+ },
+ "node_modules/pump": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/qrcode": {
+ "version": "1.5.3",
+ "license": "MIT",
+ "dependencies": {
+ "dijkstrajs": "^1.0.1",
+ "encode-utf8": "^1.0.3",
+ "pngjs": "^5.0.0",
+ "yargs": "^15.3.1"
+ },
+ "bin": {
+ "qrcode": "bin/qrcode"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "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/queue-tick": {
+ "version": "1.0.1",
+ "license": "MIT"
+ },
+ "node_modules/rc": {
+ "version": "1.2.8",
+ "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
+ "dependencies": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "bin": {
+ "rc": "cli.js"
+ }
+ },
+ "node_modules/rc/node_modules/strip-json-comments": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react": {
+ "version": "18.2.0",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "18.2.0",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.0"
+ },
+ "peerDependencies": {
+ "react": "^18.2.0"
+ }
+ },
+ "node_modules/react-hook-form": {
+ "version": "7.48.2",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.22.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/react-hook-form"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17 || ^18"
+ }
+ },
+ "node_modules/react-icons": {
+ "version": "4.12.0",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "*"
+ }
+ },
+ "node_modules/react-is": {
+ "version": "16.13.1",
+ "license": "MIT"
+ },
+ "node_modules/react-toastify": {
+ "version": "9.1.3",
+ "license": "MIT",
+ "dependencies": {
+ "clsx": "^1.1.1"
+ },
+ "peerDependencies": {
+ "react": ">=16",
+ "react-dom": ">=16"
+ }
+ },
+ "node_modules/read-cache": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "pify": "^2.3.0"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "3.6.2",
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/reflect.getprototypeof": {
+ "version": "1.0.4",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "globalthis": "^1.0.3",
+ "which-builtin-type": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.14.0",
+ "license": "MIT"
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.5.1",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "set-function-name": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-main-filename": {
+ "version": "2.0.0",
+ "license": "ISC"
+ },
+ "node_modules/resolve": {
+ "version": "1.22.8",
+ "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",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/resolve-pkg-maps": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "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",
+ "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",
+ "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.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">=0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "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/safe-regex-test": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.3",
+ "is-regex": "^1.1.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/scheduler": {
+ "version": "0.23.0",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "node_modules/section-matter": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/semver": {
+ "version": "7.5.4",
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/set-blocking": {
+ "version": "2.0.0",
+ "license": "ISC"
+ },
+ "node_modules/set-function-length": {
+ "version": "1.1.1",
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.1.1",
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/set-function-name": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "functions-have-names": "^1.2.3",
+ "has-property-descriptors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/shallowequal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
+ "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==",
+ "peer": true
+ },
+ "node_modules/sharp": {
+ "version": "0.32.6",
+ "hasInstallScript": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "color": "^4.2.3",
+ "detect-libc": "^2.0.2",
+ "node-addon-api": "^6.1.0",
+ "prebuild-install": "^7.1.1",
+ "semver": "^7.5.4",
+ "simple-get": "^4.0.1",
+ "tar-fs": "^3.0.4",
+ "tunnel-agent": "^0.6.0"
+ },
+ "engines": {
+ "node": ">=14.15.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/simple-concat": {
+ "version": "1.0.1",
+ "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/simple-get": {
+ "version": "4.0.1",
+ "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": {
+ "decompress-response": "^6.0.0",
+ "once": "^1.3.1",
+ "simple-concat": "^1.0.0"
+ }
+ },
+ "node_modules/simple-swizzle": {
+ "version": "0.2.2",
+ "license": "MIT",
+ "dependencies": {
+ "is-arrayish": "^0.3.1"
+ }
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.0.2",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/streamsearch": {
+ "version": "1.1.0",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/streamx": {
+ "version": "2.15.5",
+ "license": "MIT",
+ "dependencies": {
+ "fast-fifo": "^1.1.0",
+ "queue-tick": "^1.0.1"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "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/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "license": "MIT"
+ },
+ "node_modules/string.prototype.matchall": {
+ "version": "4.0.10",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.5",
+ "regexp.prototype.flags": "^1.5.0",
+ "set-function-name": "^2.0.0",
+ "side-channel": "^1.0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.8",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.7",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.7",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/strip-bom-string": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/styled-components": {
+ "version": "5.3.11",
+ "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.11.tgz",
+ "integrity": "sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/traverse": "^7.4.5",
+ "@emotion/is-prop-valid": "^1.1.0",
+ "@emotion/stylis": "^0.8.4",
+ "@emotion/unitless": "^0.7.4",
+ "babel-plugin-styled-components": ">= 1.12.0",
+ "css-to-react-native": "^3.0.0",
+ "hoist-non-react-statics": "^3.0.0",
+ "shallowequal": "^1.1.0",
+ "supports-color": "^5.5.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/styled-components"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8.0",
+ "react-dom": ">= 16.8.0",
+ "react-is": ">= 16.8.0"
+ }
+ },
+ "node_modules/styled-components/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "peer": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/styled-components/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/styled-icons": {
+ "version": "10.47.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/bootstrap": "10.47.0",
+ "@styled-icons/boxicons-logos": "10.47.0",
+ "@styled-icons/boxicons-regular": "10.47.0",
+ "@styled-icons/boxicons-solid": "10.47.0",
+ "@styled-icons/crypto": "10.47.0",
+ "@styled-icons/entypo": "10.46.0",
+ "@styled-icons/entypo-social": "10.46.0",
+ "@styled-icons/evaicons-outline": "10.46.0",
+ "@styled-icons/evaicons-solid": "10.46.0",
+ "@styled-icons/evil": "10.46.0",
+ "@styled-icons/fa-brands": "10.47.0",
+ "@styled-icons/fa-regular": "10.47.0",
+ "@styled-icons/fa-solid": "10.47.0",
+ "@styled-icons/feather": "10.47.0",
+ "@styled-icons/fluentui-system-filled": "10.47.0",
+ "@styled-icons/fluentui-system-regular": "10.47.0",
+ "@styled-icons/foundation": "10.46.0",
+ "@styled-icons/heroicons-outline": "10.47.0",
+ "@styled-icons/heroicons-solid": "10.47.0",
+ "@styled-icons/icomoon": "10.46.0",
+ "@styled-icons/ionicons-outline": "10.46.0",
+ "@styled-icons/ionicons-sharp": "10.46.0",
+ "@styled-icons/ionicons-solid": "10.46.0",
+ "@styled-icons/material": "10.47.0",
+ "@styled-icons/material-outlined": "10.47.0",
+ "@styled-icons/material-rounded": "10.47.0",
+ "@styled-icons/material-sharp": "10.47.0",
+ "@styled-icons/material-twotone": "10.47.0",
+ "@styled-icons/octicons": "10.47.0",
+ "@styled-icons/open-iconic": "10.46.0",
+ "@styled-icons/remix-editor": "10.46.0",
+ "@styled-icons/remix-fill": "10.46.0",
+ "@styled-icons/remix-line": "10.46.0",
+ "@styled-icons/simple-icons": "10.46.0",
+ "@styled-icons/styled-icon": "10.7.0",
+ "@styled-icons/typicons": "10.46.0",
+ "@styled-icons/zondicons": "10.46.0"
+ },
+ "funding": {
+ "type": "GitHub",
+ "url": "https://github.com/sponsors/jacobwgillespie"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "styled-components": ">=4.1.0 <6"
+ }
+ },
+ "node_modules/styled-jsx": {
+ "version": "5.1.1",
+ "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.34.0",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "commander": "^4.0.0",
+ "glob": "7.1.6",
+ "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": ">=8"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/tailwindcss": {
+ "version": "3.3.3",
+ "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.2.12",
+ "glob-parent": "^6.0.2",
+ "is-glob": "^4.0.3",
+ "jiti": "^1.18.2",
+ "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/node_modules/postcss-import": {
+ "version": "15.1.0",
+ "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/tailwindcss/node_modules/postcss-js": {
+ "version": "4.0.1",
+ "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/tailwindcss/node_modules/postcss-load-config": {
+ "version": "4.0.2",
+ "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/tailwindcss/node_modules/postcss-load-config/node_modules/lilconfig": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/tailwindcss/node_modules/postcss-nested": {
+ "version": "6.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.11"
+ },
+ "engines": {
+ "node": ">=12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.14"
+ }
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tar-fs": {
+ "version": "3.0.4",
+ "license": "MIT",
+ "dependencies": {
+ "mkdirp-classic": "^0.5.2",
+ "pump": "^3.0.0",
+ "tar-stream": "^3.1.5"
+ }
+ },
+ "node_modules/tar-stream": {
+ "version": "3.1.6",
+ "license": "MIT",
+ "dependencies": {
+ "b4a": "^1.6.4",
+ "fast-fifo": "^1.2.0",
+ "streamx": "^2.15.0"
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "license": "MIT"
+ },
+ "node_modules/thenify": {
+ "version": "3.3.1",
+ "license": "MIT",
+ "dependencies": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "node_modules/thenify-all": {
+ "version": "1.6.0",
+ "license": "MIT",
+ "dependencies": {
+ "thenify": ">= 3.1.0 < 4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/third-party-capital": {
+ "version": "1.0.20",
+ "license": "ISC"
+ },
+ "node_modules/tiny-case": {
+ "version": "1.0.3",
+ "license": "MIT"
+ },
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "peer": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toposort": {
+ "version": "2.0.2",
+ "license": "MIT"
+ },
+ "node_modules/ts-api-utils": {
+ "version": "1.0.3",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16.13.0"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.2.0"
+ }
+ },
+ "node_modules/ts-interface-checker": {
+ "version": "0.1.13",
+ "license": "Apache-2.0"
+ },
+ "node_modules/tsconfig-paths": {
+ "version": "3.14.2",
+ "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.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/tunnel-agent": {
+ "version": "0.6.0",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "2.19.0",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typed-array-buffer": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1",
+ "is-typed-array": "^1.1.10"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/typed-array-byte-length": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "has-proto": "^1.0.1",
+ "is-typed-array": "^1.1.10"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-byte-offset": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "has-proto": "^1.0.1",
+ "is-typed-array": "^1.1.10"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-length": {
+ "version": "1.0.4",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "is-typed-array": "^1.1.9"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.1.6",
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/unbox-primitive": {
+ "version": "1.0.2",
+ "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/update-browserslist-db": {
+ "version": "1.0.13",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/urlpattern-polyfill": {
+ "version": "8.0.2",
+ "license": "MIT"
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "license": "MIT"
+ },
+ "node_modules/web-streams-polyfill": {
+ "version": "3.2.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "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",
+ "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.3",
+ "license": "MIT",
+ "dependencies": {
+ "function.prototype.name": "^1.1.5",
+ "has-tostringtag": "^1.0.0",
+ "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.1",
+ "which-typed-array": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-collection": {
+ "version": "1.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "is-map": "^2.0.1",
+ "is-set": "^2.0.1",
+ "is-weakmap": "^2.0.1",
+ "is-weakset": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-module": {
+ "version": "2.0.1",
+ "license": "ISC"
+ },
+ "node_modules/which-typed-array": {
+ "version": "1.1.13",
+ "license": "MIT",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.4",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "6.2.0",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "license": "ISC"
+ },
+ "node_modules/y18n": {
+ "version": "4.0.3",
+ "license": "ISC"
+ },
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "license": "ISC"
+ },
+ "node_modules/yaml": {
+ "version": "2.3.4",
+ "license": "ISC",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "15.4.1",
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^4.2.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^18.1.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "18.1.3",
+ "license": "ISC",
+ "dependencies": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yargs/node_modules/find-up": {
+ "version": "4.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yargs/node_modules/locate-path": {
+ "version": "5.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yargs/node_modules/p-limit": {
+ "version": "2.3.0",
+ "license": "MIT",
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/yargs/node_modules/p-locate": {
+ "version": "4.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/yup": {
+ "version": "1.3.2",
+ "license": "MIT",
+ "dependencies": {
+ "property-expr": "^2.0.5",
+ "tiny-case": "^1.0.3",
+ "toposort": "^2.0.2",
+ "type-fest": "^2.19.0"
+ }
+ },
+ "node_modules/yup-password": {
+ "version": "0.2.2",
+ "license": "MIT"
+ }
+ },
+ "dependencies": {
+ "@aashutoshrathi/word-wrap": {
+ "version": "1.2.6"
+ },
+ "@alloc/quick-lru": {
+ "version": "5.2.0"
+ },
+ "@ampproject/remapping": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
+ "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+ "peer": true,
+ "requires": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "@babel/code-frame": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
+ "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
+ "peer": true,
+ "requires": {
+ "@babel/highlight": "^7.23.4",
+ "chalk": "^2.4.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "peer": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "peer": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "peer": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "peer": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "peer": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "peer": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "@babel/compat-data": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz",
+ "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==",
+ "peer": true
+ },
+ "@babel/core": {
+ "version": "7.23.7",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz",
+ "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==",
+ "peer": true,
+ "requires": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.23.5",
+ "@babel/generator": "^7.23.6",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helpers": "^7.23.7",
+ "@babel/parser": "^7.23.6",
+ "@babel/template": "^7.22.15",
+ "@babel/traverse": "^7.23.7",
+ "@babel/types": "^7.23.6",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "peer": true
+ },
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "peer": true
+ }
+ }
+ },
+ "@babel/generator": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
+ "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
+ "peer": true,
+ "requires": {
+ "@babel/types": "^7.23.6",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jsesc": "^2.5.1"
+ }
+ },
+ "@babel/helper-annotate-as-pure": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
+ "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
+ "peer": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-compilation-targets": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
+ "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
+ "peer": true,
+ "requires": {
+ "@babel/compat-data": "^7.23.5",
+ "@babel/helper-validator-option": "^7.23.5",
+ "browserslist": "^4.22.2",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "peer": true,
+ "requires": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "peer": true
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "peer": true
+ }
+ }
+ },
+ "@babel/helper-environment-visitor": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+ "peer": true
+ },
+ "@babel/helper-function-name": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
+ "peer": true,
+ "requires": {
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
+ }
+ },
+ "@babel/helper-hoist-variables": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+ "peer": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
+ "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
+ "peer": true,
+ "requires": {
+ "@babel/types": "^7.22.15"
+ }
+ },
+ "@babel/helper-module-transforms": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
+ "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
+ "peer": true,
+ "requires": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-simple-access": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/helper-validator-identifier": "^7.22.20"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
+ "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
+ "peer": true
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
+ "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+ "peer": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
+ "peer": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-string-parser": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
+ "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
+ "peer": true
+ },
+ "@babel/helper-validator-identifier": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+ "peer": true
+ },
+ "@babel/helper-validator-option": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
+ "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
+ "peer": true
+ },
+ "@babel/helpers": {
+ "version": "7.23.8",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.8.tgz",
+ "integrity": "sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==",
+ "peer": true,
+ "requires": {
+ "@babel/template": "^7.22.15",
+ "@babel/traverse": "^7.23.7",
+ "@babel/types": "^7.23.6"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
+ "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
+ "peer": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "peer": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "peer": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "peer": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "peer": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "peer": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "peer": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "@babel/parser": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz",
+ "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==",
+ "peer": true
+ },
+ "@babel/plugin-syntax-jsx": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz",
+ "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==",
+ "peer": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/runtime": {
+ "version": "7.23.4",
+ "requires": {
+ "regenerator-runtime": "^0.14.0"
+ }
+ },
+ "@babel/template": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
+ "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
+ "peer": true,
+ "requires": {
+ "@babel/code-frame": "^7.22.13",
+ "@babel/parser": "^7.22.15",
+ "@babel/types": "^7.22.15"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.23.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz",
+ "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==",
+ "peer": true,
+ "requires": {
+ "@babel/code-frame": "^7.23.5",
+ "@babel/generator": "^7.23.6",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/parser": "^7.23.6",
+ "@babel/types": "^7.23.6",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "dependencies": {
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "peer": true
+ }
+ }
+ },
+ "@babel/types": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz",
+ "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==",
+ "peer": true,
+ "requires": {
+ "@babel/helper-string-parser": "^7.23.4",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "@emotion/is-prop-valid": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz",
+ "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==",
+ "peer": true,
+ "requires": {
+ "@emotion/memoize": "^0.8.1"
+ }
+ },
+ "@emotion/memoize": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
+ "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==",
+ "peer": true
+ },
+ "@emotion/stylis": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz",
+ "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==",
+ "peer": true
+ },
+ "@emotion/unitless": {
+ "version": "0.7.5",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
+ "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==",
+ "peer": true
+ },
+ "@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "requires": {
+ "eslint-visitor-keys": "^3.3.0"
+ }
+ },
+ "@eslint-community/regexpp": {
+ "version": "4.10.0"
+ },
+ "@eslint/eslintrc": {
+ "version": "2.1.3",
+ "requires": {
+ "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"
+ }
+ },
+ "@eslint/js": {
+ "version": "8.54.0"
+ },
+ "@hookform/resolvers": {
+ "version": "3.3.2",
+ "requires": {}
+ },
+ "@humanwhocodes/config-array": {
+ "version": "0.11.13",
+ "requires": {
+ "@humanwhocodes/object-schema": "^2.0.1",
+ "debug": "^4.1.1",
+ "minimatch": "^3.0.5"
+ }
+ },
+ "@humanwhocodes/module-importer": {
+ "version": "1.0.1"
+ },
+ "@humanwhocodes/object-schema": {
+ "version": "2.0.1"
+ },
+ "@jridgewell/gen-mapping": {
+ "version": "0.3.3",
+ "requires": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "@jridgewell/resolve-uri": {
+ "version": "3.1.1"
+ },
+ "@jridgewell/set-array": {
+ "version": "1.1.2"
+ },
+ "@jridgewell/sourcemap-codec": {
+ "version": "1.4.15"
+ },
+ "@jridgewell/trace-mapping": {
+ "version": "0.3.20",
+ "requires": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "@netlify/functions": {
+ "version": "2.4.0",
+ "requires": {
+ "@netlify/serverless-functions-api": "1.11.0",
+ "is-promise": "^4.0.0"
+ }
+ },
+ "@netlify/node-cookies": {
+ "version": "0.1.0"
+ },
+ "@netlify/serverless-functions-api": {
+ "version": "1.11.0",
+ "requires": {
+ "@netlify/node-cookies": "^0.1.0",
+ "urlpattern-polyfill": "8.0.2"
+ }
+ },
+ "@next/env": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-14.1.0.tgz",
+ "integrity": "sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw=="
+ },
+ "@next/eslint-plugin-next": {
+ "version": "13.4.17",
+ "requires": {
+ "glob": "7.1.7"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.7",
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "@next/swc-darwin-arm64": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.1.0.tgz",
+ "integrity": "sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ==",
+ "optional": true
+ },
+ "@next/swc-darwin-x64": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.1.0.tgz",
+ "integrity": "sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g==",
+ "optional": true
+ },
+ "@next/swc-linux-arm64-gnu": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.1.0.tgz",
+ "integrity": "sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ==",
+ "optional": true
+ },
+ "@next/swc-linux-arm64-musl": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.1.0.tgz",
+ "integrity": "sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g==",
+ "optional": true
+ },
+ "@next/swc-linux-x64-gnu": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.1.0.tgz",
+ "integrity": "sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ==",
+ "optional": true
+ },
+ "@next/swc-linux-x64-musl": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.1.0.tgz",
+ "integrity": "sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg==",
+ "optional": true
+ },
+ "@next/swc-win32-arm64-msvc": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.1.0.tgz",
+ "integrity": "sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ==",
+ "optional": true
+ },
+ "@next/swc-win32-ia32-msvc": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.1.0.tgz",
+ "integrity": "sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw==",
+ "optional": true
+ },
+ "@next/swc-win32-x64-msvc": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.1.0.tgz",
+ "integrity": "sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg==",
+ "optional": true
+ },
+ "@next/third-parties": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/third-parties/-/third-parties-14.1.0.tgz",
+ "integrity": "sha512-f55SdvQ1WWxi4mb5QqtYQh5wRzbm1XaeP7s39DPn4ks3re+n9VlFccbMxBRHqkE62zAyIKmvkUB2cByT/gugGA==",
+ "requires": {
+ "third-party-capital": "1.0.20"
+ }
+ },
+ "@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "requires": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ }
+ },
+ "@nodelib/fs.stat": {
+ "version": "2.0.5"
+ },
+ "@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "requires": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ }
+ },
+ "@popperjs/core": {
+ "version": "2.11.8",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+ "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A=="
+ },
+ "@rushstack/eslint-patch": {
+ "version": "1.6.0"
+ },
+ "@styled-icons/bootstrap": {
+ "version": "10.47.0",
+ "requires": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/boxicons-logos": {
+ "version": "10.47.0",
+ "requires": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/boxicons-regular": {
+ "version": "10.47.0",
+ "requires": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/boxicons-solid": {
+ "version": "10.47.0",
+ "requires": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/crypto": {
+ "version": "10.47.0",
+ "requires": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/entypo": {
+ "version": "10.46.0",
+ "requires": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/entypo-social": {
+ "version": "10.46.0",
+ "requires": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/evaicons-outline": {
+ "version": "10.46.0",
+ "requires": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/evaicons-solid": {
+ "version": "10.46.0",
+ "requires": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/evil": {
+ "version": "10.46.0",
+ "requires": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/fa-brands": {
+ "version": "10.47.0",
+ "requires": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/fa-regular": {
+ "version": "10.47.0",
+ "requires": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/fa-solid": {
+ "version": "10.47.0",
+ "requires": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/feather": {
+ "version": "10.47.0",
+ "requires": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/fluentui-system-filled": {
+ "version": "10.47.0",
+ "requires": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/fluentui-system-regular": {
+ "version": "10.47.0",
+ "requires": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/foundation": {
+ "version": "10.46.0",
+ "requires": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/heroicons-outline": {
+ "version": "10.47.0",
+ "requires": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/heroicons-solid": {
+ "version": "10.47.0",
+ "requires": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/icomoon": {
+ "version": "10.46.0",
+ "requires": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/ionicons-outline": {
+ "version": "10.46.0",
+ "requires": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/ionicons-sharp": {
+ "version": "10.46.0",
+ "requires": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/ionicons-solid": {
+ "version": "10.46.0",
+ "requires": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/material": {
+ "version": "10.47.0",
+ "requires": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/material-outlined": {
+ "version": "10.47.0",
+ "requires": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/material-rounded": {
+ "version": "10.47.0",
+ "requires": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/material-sharp": {
+ "version": "10.47.0",
+ "requires": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/material-twotone": {
+ "version": "10.47.0",
+ "requires": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/octicons": {
+ "version": "10.47.0",
+ "requires": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/open-iconic": {
+ "version": "10.46.0",
+ "requires": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/remix-editor": {
+ "version": "10.46.0",
+ "requires": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/remix-fill": {
+ "version": "10.46.0",
+ "requires": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/remix-line": {
+ "version": "10.46.0",
+ "requires": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/simple-icons": {
+ "version": "10.46.0",
+ "requires": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/styled-icon": {
+ "version": "10.7.0",
+ "requires": {
+ "@babel/runtime": "^7.19.0"
+ }
+ },
+ "@styled-icons/typicons": {
+ "version": "10.46.0",
+ "requires": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@styled-icons/zondicons": {
+ "version": "10.46.0",
+ "requires": {
+ "@babel/runtime": "^7.19.0",
+ "@styled-icons/styled-icon": "^10.7.0"
+ }
+ },
+ "@swc/helpers": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz",
+ "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==",
+ "requires": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "@tailwindcss/forms": {
+ "version": "0.5.7",
+ "requires": {
+ "mini-svg-data-uri": "^1.2.3"
+ }
+ },
+ "@tailwindcss/typography": {
+ "version": "0.5.10",
+ "dev": true,
+ "requires": {
+ "lodash.castarray": "^4.4.0",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.merge": "^4.6.2",
+ "postcss-selector-parser": "6.0.10"
+ },
+ "dependencies": {
+ "postcss-selector-parser": {
+ "version": "6.0.10",
+ "dev": true,
+ "requires": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ }
+ }
+ },
+ "@types/aos": {
+ "version": "3.0.7",
+ "dev": true
+ },
+ "@types/crypto-js": {
+ "version": "4.2.1",
+ "dev": true
+ },
+ "@types/json5": {
+ "version": "0.0.29"
+ },
+ "@types/node": {
+ "version": "20.5.0",
+ "dev": true
+ },
+ "@types/prop-types": {
+ "version": "15.7.11"
+ },
+ "@types/react": {
+ "version": "18.2.20",
+ "requires": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "@types/scheduler": {
+ "version": "0.16.8"
+ },
+ "@typescript-eslint/parser": {
+ "version": "6.13.0",
+ "requires": {
+ "@typescript-eslint/scope-manager": "6.13.0",
+ "@typescript-eslint/types": "6.13.0",
+ "@typescript-eslint/typescript-estree": "6.13.0",
+ "@typescript-eslint/visitor-keys": "6.13.0",
+ "debug": "^4.3.4"
+ }
+ },
+ "@typescript-eslint/scope-manager": {
+ "version": "6.13.0",
+ "requires": {
+ "@typescript-eslint/types": "6.13.0",
+ "@typescript-eslint/visitor-keys": "6.13.0"
+ }
+ },
+ "@typescript-eslint/types": {
+ "version": "6.13.0"
+ },
+ "@typescript-eslint/typescript-estree": {
+ "version": "6.13.0",
+ "requires": {
+ "@typescript-eslint/types": "6.13.0",
+ "@typescript-eslint/visitor-keys": "6.13.0",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ }
+ },
+ "@typescript-eslint/visitor-keys": {
+ "version": "6.13.0",
+ "requires": {
+ "@typescript-eslint/types": "6.13.0",
+ "eslint-visitor-keys": "^3.4.1"
+ }
+ },
+ "@vidstack/react": {
+ "version": "1.9.8",
+ "resolved": "https://registry.npmjs.org/@vidstack/react/-/react-1.9.8.tgz",
+ "integrity": "sha512-1gGlCXpmGriKZ+sgP1WLgm4tpkU2buXeAIPFoh8t7V4X3jV1l15oZS4whfPswCY6/9jAwVKq0jQBLryAuBYZww==",
+ "requires": {
+ "media-captions": "^1.0.1"
+ }
+ },
+ "acorn": {
+ "version": "8.11.2"
+ },
+ "acorn-jsx": {
+ "version": "5.3.2",
+ "requires": {}
+ },
+ "ajv": {
+ "version": "6.12.6",
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ansi-regex": {
+ "version": "5.0.1"
+ },
+ "ansi-styles": {
+ "version": "4.3.0",
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "any-promise": {
+ "version": "1.3.0"
+ },
+ "anymatch": {
+ "version": "3.1.3",
+ "requires": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ }
+ },
+ "aos": {
+ "version": "2.3.4",
+ "requires": {
+ "classlist-polyfill": "^1.0.3",
+ "lodash.debounce": "^4.0.6",
+ "lodash.throttle": "^4.0.1"
+ }
+ },
+ "arg": {
+ "version": "5.0.2"
+ },
+ "argparse": {
+ "version": "2.0.1"
+ },
+ "aria-query": {
+ "version": "5.3.0",
+ "requires": {
+ "dequal": "^2.0.3"
+ }
+ },
+ "array-buffer-byte-length": {
+ "version": "1.0.0",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "is-array-buffer": "^3.0.1"
+ }
+ },
+ "array-includes": {
+ "version": "3.1.7",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "is-string": "^1.0.7"
+ }
+ },
+ "array-union": {
+ "version": "2.1.0"
+ },
+ "array.prototype.findlastindex": {
+ "version": "1.2.3",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0",
+ "get-intrinsic": "^1.2.1"
+ }
+ },
+ "array.prototype.flat": {
+ "version": "1.3.2",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0"
+ }
+ },
+ "array.prototype.flatmap": {
+ "version": "1.3.2",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0"
+ }
+ },
+ "array.prototype.tosorted": {
+ "version": "1.1.2",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0",
+ "get-intrinsic": "^1.2.1"
+ }
+ },
+ "arraybuffer.prototype.slice": {
+ "version": "1.0.2",
+ "requires": {
+ "array-buffer-byte-length": "^1.0.0",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "is-array-buffer": "^3.0.2",
+ "is-shared-array-buffer": "^1.0.2"
+ }
+ },
+ "ast-types-flow": {
+ "version": "0.0.8"
+ },
+ "asynciterator.prototype": {
+ "version": "1.0.0",
+ "requires": {
+ "has-symbols": "^1.0.3"
+ }
+ },
+ "autoprefixer": {
+ "version": "10.4.15",
+ "requires": {
+ "browserslist": "^4.21.10",
+ "caniuse-lite": "^1.0.30001520",
+ "fraction.js": "^4.2.0",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.0.0",
+ "postcss-value-parser": "^4.2.0"
+ }
+ },
+ "available-typed-arrays": {
+ "version": "1.0.5"
+ },
+ "axe-core": {
+ "version": "4.7.0"
+ },
+ "axobject-query": {
+ "version": "3.2.1",
+ "requires": {
+ "dequal": "^2.0.3"
+ }
+ },
+ "b4a": {
+ "version": "1.6.4"
+ },
+ "babel-plugin-styled-components": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz",
+ "integrity": "sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==",
+ "peer": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-module-imports": "^7.22.5",
+ "@babel/plugin-syntax-jsx": "^7.22.5",
+ "lodash": "^4.17.21",
+ "picomatch": "^2.3.1"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.2"
+ },
+ "base64-js": {
+ "version": "1.5.1"
+ },
+ "binary-extensions": {
+ "version": "2.2.0"
+ },
+ "bl": {
+ "version": "4.1.0",
+ "requires": {
+ "buffer": "^5.5.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "3.0.2",
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "browserslist": {
+ "version": "4.22.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz",
+ "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==",
+ "requires": {
+ "caniuse-lite": "^1.0.30001565",
+ "electron-to-chromium": "^1.4.601",
+ "node-releases": "^2.0.14",
+ "update-browserslist-db": "^1.0.13"
+ }
+ },
+ "buffer": {
+ "version": "5.7.1",
+ "requires": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "busboy": {
+ "version": "1.6.0",
+ "requires": {
+ "streamsearch": "^1.1.0"
+ }
+ },
+ "call-bind": {
+ "version": "1.0.5",
+ "requires": {
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.1",
+ "set-function-length": "^1.1.1"
+ }
+ },
+ "callsites": {
+ "version": "3.1.0"
+ },
+ "camelcase": {
+ "version": "5.3.1"
+ },
+ "camelcase-css": {
+ "version": "2.0.1"
+ },
+ "camelize": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
+ "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==",
+ "peer": true
+ },
+ "caniuse-lite": {
+ "version": "1.0.30001579",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz",
+ "integrity": "sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA=="
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "chokidar": {
+ "version": "3.5.3",
+ "requires": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "fsevents": "~2.3.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"
+ },
+ "dependencies": {
+ "glob-parent": {
+ "version": "5.1.2",
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ }
+ }
+ },
+ "chownr": {
+ "version": "1.1.4"
+ },
+ "classlist-polyfill": {
+ "version": "1.2.0"
+ },
+ "client-only": {
+ "version": "0.0.1"
+ },
+ "cliui": {
+ "version": "6.0.0",
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ }
+ },
+ "clsx": {
+ "version": "1.2.1"
+ },
+ "color": {
+ "version": "4.2.3",
+ "requires": {
+ "color-convert": "^2.0.1",
+ "color-string": "^1.9.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4"
+ },
+ "color-string": {
+ "version": "1.9.1",
+ "requires": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "colord": {
+ "version": "2.9.3"
+ },
+ "commander": {
+ "version": "4.1.1"
+ },
+ "concat-map": {
+ "version": "0.0.1"
+ },
+ "convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "peer": true
+ },
+ "cross-spawn": {
+ "version": "7.0.3",
+ "requires": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ }
+ },
+ "crypto-js": {
+ "version": "4.2.0"
+ },
+ "css-color-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
+ "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==",
+ "peer": true
+ },
+ "css-selector-tokenizer": {
+ "version": "0.8.0",
+ "requires": {
+ "cssesc": "^3.0.0",
+ "fastparse": "^1.1.2"
+ }
+ },
+ "css-to-react-native": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz",
+ "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==",
+ "peer": true,
+ "requires": {
+ "camelize": "^1.0.0",
+ "css-color-keywords": "^1.0.0",
+ "postcss-value-parser": "^4.0.2"
+ }
+ },
+ "cssesc": {
+ "version": "3.0.0"
+ },
+ "csstype": {
+ "version": "3.1.2"
+ },
+ "daisyui": {
+ "version": "3.9.4",
+ "requires": {
+ "colord": "^2.9",
+ "css-selector-tokenizer": "^0.8",
+ "postcss": "^8",
+ "postcss-js": "^4",
+ "tailwindcss": "^3.1"
+ },
+ "dependencies": {
+ "postcss-import": {
+ "version": "15.1.0",
+ "requires": {
+ "postcss-value-parser": "^4.0.0",
+ "read-cache": "^1.0.0",
+ "resolve": "^1.1.7"
+ }
+ },
+ "postcss-js": {
+ "version": "4.0.1",
+ "requires": {
+ "camelcase-css": "^2.0.1"
+ }
+ },
+ "postcss-load-config": {
+ "version": "4.0.2",
+ "requires": {
+ "lilconfig": "^3.0.0",
+ "yaml": "^2.3.4"
+ },
+ "dependencies": {
+ "lilconfig": {
+ "version": "3.0.0"
+ }
+ }
+ },
+ "postcss-nested": {
+ "version": "6.0.1",
+ "requires": {
+ "postcss-selector-parser": "^6.0.11"
+ }
+ },
+ "tailwindcss": {
+ "version": "3.3.5",
+ "requires": {
+ "@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.19.1",
+ "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"
+ }
+ }
+ }
+ },
+ "damerau-levenshtein": {
+ "version": "1.0.8"
+ },
+ "debug": {
+ "version": "4.3.4",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0"
+ },
+ "decompress-response": {
+ "version": "6.0.0",
+ "requires": {
+ "mimic-response": "^3.1.0"
+ }
+ },
+ "deep-extend": {
+ "version": "0.6.0"
+ },
+ "deep-is": {
+ "version": "0.1.4"
+ },
+ "define-data-property": {
+ "version": "1.1.1",
+ "requires": {
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
+ }
+ },
+ "define-properties": {
+ "version": "1.2.1",
+ "requires": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ }
+ },
+ "dequal": {
+ "version": "2.0.3"
+ },
+ "detect-libc": {
+ "version": "2.0.2"
+ },
+ "didyoumean": {
+ "version": "1.2.2"
+ },
+ "dijkstrajs": {
+ "version": "1.0.3"
+ },
+ "dir-glob": {
+ "version": "3.0.1",
+ "requires": {
+ "path-type": "^4.0.0"
+ }
+ },
+ "dlv": {
+ "version": "1.1.3"
+ },
+ "doctrine": {
+ "version": "2.1.0",
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "electron-to-chromium": {
+ "version": "1.4.613",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.613.tgz",
+ "integrity": "sha512-r4x5+FowKG6q+/Wj0W9nidx7QO31BJwmR2uEo+Qh3YLGQ8SbBAFuDFpTxzly/I2gsbrFwBuIjrMp423L3O5U3w=="
+ },
+ "emoji-regex": {
+ "version": "9.2.2"
+ },
+ "encode-utf8": {
+ "version": "1.0.3"
+ },
+ "end-of-stream": {
+ "version": "1.4.4",
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "enhanced-resolve": {
+ "version": "5.15.0",
+ "requires": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ }
+ },
+ "es-abstract": {
+ "version": "1.22.3",
+ "requires": {
+ "array-buffer-byte-length": "^1.0.0",
+ "arraybuffer.prototype.slice": "^1.0.2",
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.5",
+ "es-set-tostringtag": "^2.0.1",
+ "es-to-primitive": "^1.2.1",
+ "function.prototype.name": "^1.1.6",
+ "get-intrinsic": "^1.2.2",
+ "get-symbol-description": "^1.0.0",
+ "globalthis": "^1.0.3",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0",
+ "internal-slot": "^1.0.5",
+ "is-array-buffer": "^3.0.2",
+ "is-callable": "^1.2.7",
+ "is-negative-zero": "^2.0.2",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "is-string": "^1.0.7",
+ "is-typed-array": "^1.1.12",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.13.1",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.4",
+ "regexp.prototype.flags": "^1.5.1",
+ "safe-array-concat": "^1.0.1",
+ "safe-regex-test": "^1.0.0",
+ "string.prototype.trim": "^1.2.8",
+ "string.prototype.trimend": "^1.0.7",
+ "string.prototype.trimstart": "^1.0.7",
+ "typed-array-buffer": "^1.0.0",
+ "typed-array-byte-length": "^1.0.0",
+ "typed-array-byte-offset": "^1.0.0",
+ "typed-array-length": "^1.0.4",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.13"
+ }
+ },
+ "es-iterator-helpers": {
+ "version": "1.0.15",
+ "requires": {
+ "asynciterator.prototype": "^1.0.0",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.22.1",
+ "es-set-tostringtag": "^2.0.1",
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.2.1",
+ "globalthis": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.5",
+ "iterator.prototype": "^1.1.2",
+ "safe-array-concat": "^1.0.1"
+ }
+ },
+ "es-set-tostringtag": {
+ "version": "2.0.2",
+ "requires": {
+ "get-intrinsic": "^1.2.2",
+ "has-tostringtag": "^1.0.0",
+ "hasown": "^2.0.0"
+ }
+ },
+ "es-shim-unscopables": {
+ "version": "1.0.2",
+ "requires": {
+ "hasown": "^2.0.0"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.1",
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "escalade": {
+ "version": "3.1.1"
+ },
+ "escape-string-regexp": {
+ "version": "4.0.0"
+ },
+ "eslint": {
+ "version": "8.47.0",
+ "requires": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.2",
+ "@eslint/js": "^8.47.0",
+ "@humanwhocodes/config-array": "^0.11.10",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "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"
+ },
+ "dependencies": {
+ "doctrine": {
+ "version": "3.0.0",
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ }
+ }
+ },
+ "eslint-config-next": {
+ "version": "13.4.17",
+ "requires": {
+ "@next/eslint-plugin-next": "13.4.17",
+ "@rushstack/eslint-patch": "^1.1.3",
+ "@typescript-eslint/parser": "^5.4.2 || ^6.0.0",
+ "eslint-import-resolver-node": "^0.3.6",
+ "eslint-import-resolver-typescript": "^3.5.2",
+ "eslint-plugin-import": "^2.26.0",
+ "eslint-plugin-jsx-a11y": "^6.5.1",
+ "eslint-plugin-react": "^7.31.7",
+ "eslint-plugin-react-hooks": "5.0.0-canary-7118f5dd7-20230705"
+ }
+ },
+ "eslint-import-resolver-node": {
+ "version": "0.3.9",
+ "requires": {
+ "debug": "^3.2.7",
+ "is-core-module": "^2.13.0",
+ "resolve": "^1.22.4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.7",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.3"
+ }
+ }
+ },
+ "eslint-import-resolver-typescript": {
+ "version": "3.6.1",
+ "requires": {
+ "debug": "^4.3.4",
+ "enhanced-resolve": "^5.12.0",
+ "eslint-module-utils": "^2.7.4",
+ "fast-glob": "^3.3.1",
+ "get-tsconfig": "^4.5.0",
+ "is-core-module": "^2.11.0",
+ "is-glob": "^4.0.3"
+ }
+ },
+ "eslint-module-utils": {
+ "version": "2.8.0",
+ "requires": {
+ "debug": "^3.2.7"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.7",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.3"
+ }
+ }
+ },
+ "eslint-plugin-import": {
+ "version": "2.29.0",
+ "requires": {
+ "array-includes": "^3.1.7",
+ "array.prototype.findlastindex": "^1.2.3",
+ "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.8.0",
+ "hasown": "^2.0.0",
+ "is-core-module": "^2.13.1",
+ "is-glob": "^4.0.3",
+ "minimatch": "^3.1.2",
+ "object.fromentries": "^2.0.7",
+ "object.groupby": "^1.0.1",
+ "object.values": "^1.1.7",
+ "semver": "^6.3.1",
+ "tsconfig-paths": "^3.14.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.7",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.3"
+ },
+ "semver": {
+ "version": "6.3.1"
+ }
+ }
+ },
+ "eslint-plugin-jsx-a11y": {
+ "version": "6.8.0",
+ "requires": {
+ "@babel/runtime": "^7.23.2",
+ "aria-query": "^5.3.0",
+ "array-includes": "^3.1.7",
+ "array.prototype.flatmap": "^1.3.2",
+ "ast-types-flow": "^0.0.8",
+ "axe-core": "=4.7.0",
+ "axobject-query": "^3.2.1",
+ "damerau-levenshtein": "^1.0.8",
+ "emoji-regex": "^9.2.2",
+ "es-iterator-helpers": "^1.0.15",
+ "hasown": "^2.0.0",
+ "jsx-ast-utils": "^3.3.5",
+ "language-tags": "^1.0.9",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.7",
+ "object.fromentries": "^2.0.7"
+ }
+ },
+ "eslint-plugin-react": {
+ "version": "7.33.2",
+ "requires": {
+ "array-includes": "^3.1.6",
+ "array.prototype.flatmap": "^1.3.1",
+ "array.prototype.tosorted": "^1.1.1",
+ "doctrine": "^2.1.0",
+ "es-iterator-helpers": "^1.0.12",
+ "estraverse": "^5.3.0",
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.6",
+ "object.fromentries": "^2.0.6",
+ "object.hasown": "^1.1.2",
+ "object.values": "^1.1.6",
+ "prop-types": "^15.8.1",
+ "resolve": "^2.0.0-next.4",
+ "semver": "^6.3.1",
+ "string.prototype.matchall": "^4.0.8"
+ },
+ "dependencies": {
+ "resolve": {
+ "version": "2.0.0-next.5",
+ "requires": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ }
+ },
+ "semver": {
+ "version": "6.3.1"
+ }
+ }
+ },
+ "eslint-plugin-react-hooks": {
+ "version": "5.0.0-canary-7118f5dd7-20230705",
+ "requires": {}
+ },
+ "eslint-scope": {
+ "version": "7.2.2",
+ "requires": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "3.4.3"
+ },
+ "espree": {
+ "version": "9.6.1",
+ "requires": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ }
+ },
+ "esprima": {
+ "version": "4.0.1"
+ },
+ "esquery": {
+ "version": "1.5.0",
+ "requires": {
+ "estraverse": "^5.1.0"
+ }
+ },
+ "esrecurse": {
+ "version": "4.3.0",
+ "requires": {
+ "estraverse": "^5.2.0"
+ }
+ },
+ "estraverse": {
+ "version": "5.3.0"
+ },
+ "esutils": {
+ "version": "2.0.3"
+ },
+ "expand-template": {
+ "version": "2.0.3"
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "fast-deep-equal": {
+ "version": "3.1.3"
+ },
+ "fast-fifo": {
+ "version": "1.3.2"
+ },
+ "fast-glob": {
+ "version": "3.3.2",
+ "requires": {
+ "@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"
+ },
+ "dependencies": {
+ "glob-parent": {
+ "version": "5.1.2",
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ }
+ }
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.1.0"
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6"
+ },
+ "fastparse": {
+ "version": "1.1.2"
+ },
+ "fastq": {
+ "version": "1.15.0",
+ "requires": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "fflate": {
+ "version": "0.4.8",
+ "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz",
+ "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA=="
+ },
+ "file-entry-cache": {
+ "version": "6.0.1",
+ "requires": {
+ "flat-cache": "^3.0.4"
+ }
+ },
+ "fill-range": {
+ "version": "7.0.1",
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "find-up": {
+ "version": "5.0.0",
+ "requires": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "flat-cache": {
+ "version": "3.2.0",
+ "requires": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
+ }
+ },
+ "flatted": {
+ "version": "3.2.9"
+ },
+ "for-each": {
+ "version": "0.3.3",
+ "requires": {
+ "is-callable": "^1.1.3"
+ }
+ },
+ "fraction.js": {
+ "version": "4.3.7"
+ },
+ "fs-constants": {
+ "version": "1.0.0"
+ },
+ "fs.realpath": {
+ "version": "1.0.0"
+ },
+ "fsevents": {
+ "version": "2.3.3",
+ "optional": true
+ },
+ "function-bind": {
+ "version": "1.1.2"
+ },
+ "function.prototype.name": {
+ "version": "1.1.6",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "functions-have-names": "^1.2.3"
+ }
+ },
+ "functions-have-names": {
+ "version": "1.2.3"
+ },
+ "gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "peer": true
+ },
+ "get-caller-file": {
+ "version": "2.0.5"
+ },
+ "get-intrinsic": {
+ "version": "1.2.2",
+ "requires": {
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ }
+ },
+ "get-symbol-description": {
+ "version": "1.0.0",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ }
+ },
+ "get-tsconfig": {
+ "version": "4.7.2",
+ "requires": {
+ "resolve-pkg-maps": "^1.0.0"
+ }
+ },
+ "github-from-package": {
+ "version": "0.0.0"
+ },
+ "glob": {
+ "version": "7.1.6",
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "6.0.2",
+ "requires": {
+ "is-glob": "^4.0.3"
+ }
+ },
+ "globals": {
+ "version": "13.23.0",
+ "requires": {
+ "type-fest": "^0.20.2"
+ },
+ "dependencies": {
+ "type-fest": {
+ "version": "0.20.2"
+ }
+ }
+ },
+ "globalthis": {
+ "version": "1.0.3",
+ "requires": {
+ "define-properties": "^1.1.3"
+ }
+ },
+ "globby": {
+ "version": "11.1.0",
+ "requires": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ }
+ },
+ "gopd": {
+ "version": "1.0.1",
+ "requires": {
+ "get-intrinsic": "^1.1.3"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.2.11"
+ },
+ "graphemer": {
+ "version": "1.4.0"
+ },
+ "gray-matter": {
+ "version": "4.0.3",
+ "requires": {
+ "js-yaml": "^3.13.1",
+ "kind-of": "^6.0.2",
+ "section-matter": "^1.0.0",
+ "strip-bom-string": "^1.0.0"
+ },
+ "dependencies": {
+ "argparse": {
+ "version": "1.0.10",
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "js-yaml": {
+ "version": "3.14.1",
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ }
+ }
+ },
+ "has-bigints": {
+ "version": "1.0.2"
+ },
+ "has-flag": {
+ "version": "4.0.0"
+ },
+ "has-property-descriptors": {
+ "version": "1.0.1",
+ "requires": {
+ "get-intrinsic": "^1.2.2"
+ }
+ },
+ "has-proto": {
+ "version": "1.0.1"
+ },
+ "has-symbols": {
+ "version": "1.0.3"
+ },
+ "has-tostringtag": {
+ "version": "1.0.0",
+ "requires": {
+ "has-symbols": "^1.0.2"
+ }
+ },
+ "hasown": {
+ "version": "2.0.0",
+ "requires": {
+ "function-bind": "^1.1.2"
+ }
+ },
+ "hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "peer": true,
+ "requires": {
+ "react-is": "^16.7.0"
+ }
+ },
+ "ieee754": {
+ "version": "1.2.1"
+ },
+ "ignore": {
+ "version": "5.3.0"
+ },
+ "import-fresh": {
+ "version": "3.3.0",
+ "requires": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ }
+ },
+ "imurmurhash": {
+ "version": "0.1.4"
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4"
+ },
+ "ini": {
+ "version": "1.3.8"
+ },
+ "internal-slot": {
+ "version": "1.0.6",
+ "requires": {
+ "get-intrinsic": "^1.2.2",
+ "hasown": "^2.0.0",
+ "side-channel": "^1.0.4"
+ }
+ },
+ "is-array-buffer": {
+ "version": "3.0.2",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.0",
+ "is-typed-array": "^1.1.10"
+ }
+ },
+ "is-arrayish": {
+ "version": "0.3.2"
+ },
+ "is-async-function": {
+ "version": "2.0.0",
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-bigint": {
+ "version": "1.0.4",
+ "requires": {
+ "has-bigints": "^1.0.1"
+ }
+ },
+ "is-binary-path": {
+ "version": "2.1.0",
+ "requires": {
+ "binary-extensions": "^2.0.0"
+ }
+ },
+ "is-boolean-object": {
+ "version": "1.1.2",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-callable": {
+ "version": "1.2.7"
+ },
+ "is-core-module": {
+ "version": "2.13.1",
+ "requires": {
+ "hasown": "^2.0.0"
+ }
+ },
+ "is-date-object": {
+ "version": "1.0.5",
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1"
+ },
+ "is-extglob": {
+ "version": "2.1.1"
+ },
+ "is-finalizationregistry": {
+ "version": "1.0.2",
+ "requires": {
+ "call-bind": "^1.0.2"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0"
+ },
+ "is-generator-function": {
+ "version": "1.0.10",
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-glob": {
+ "version": "4.0.3",
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-map": {
+ "version": "2.0.2"
+ },
+ "is-negative-zero": {
+ "version": "2.0.2"
+ },
+ "is-number": {
+ "version": "7.0.0"
+ },
+ "is-number-object": {
+ "version": "1.0.7",
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-path-inside": {
+ "version": "3.0.3"
+ },
+ "is-promise": {
+ "version": "4.0.0"
+ },
+ "is-regex": {
+ "version": "1.1.4",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-set": {
+ "version": "2.0.2"
+ },
+ "is-shared-array-buffer": {
+ "version": "1.0.2",
+ "requires": {
+ "call-bind": "^1.0.2"
+ }
+ },
+ "is-string": {
+ "version": "1.0.7",
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-symbol": {
+ "version": "1.0.4",
+ "requires": {
+ "has-symbols": "^1.0.2"
+ }
+ },
+ "is-typed-array": {
+ "version": "1.1.12",
+ "requires": {
+ "which-typed-array": "^1.1.11"
+ }
+ },
+ "is-weakmap": {
+ "version": "2.0.1"
+ },
+ "is-weakref": {
+ "version": "1.0.2",
+ "requires": {
+ "call-bind": "^1.0.2"
+ }
+ },
+ "is-weakset": {
+ "version": "2.0.2",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ }
+ },
+ "isarray": {
+ "version": "2.0.5"
+ },
+ "isexe": {
+ "version": "2.0.0"
+ },
+ "iterator.prototype": {
+ "version": "1.1.2",
+ "requires": {
+ "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"
+ }
+ },
+ "jiti": {
+ "version": "1.21.0"
+ },
+ "js-tokens": {
+ "version": "4.0.0"
+ },
+ "js-yaml": {
+ "version": "4.1.0",
+ "requires": {
+ "argparse": "^2.0.1"
+ }
+ },
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "peer": true
+ },
+ "json-buffer": {
+ "version": "3.0.1"
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1"
+ },
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1"
+ },
+ "json5": {
+ "version": "1.0.2",
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ },
+ "jsx-ast-utils": {
+ "version": "3.3.5",
+ "requires": {
+ "array-includes": "^3.1.6",
+ "array.prototype.flat": "^1.3.1",
+ "object.assign": "^4.1.4",
+ "object.values": "^1.1.6"
+ }
+ },
+ "keyv": {
+ "version": "4.5.4",
+ "requires": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "kind-of": {
+ "version": "6.0.3"
+ },
+ "language-subtag-registry": {
+ "version": "0.3.22"
+ },
+ "language-tags": {
+ "version": "1.0.9",
+ "requires": {
+ "language-subtag-registry": "^0.3.20"
+ }
+ },
+ "levn": {
+ "version": "0.4.1",
+ "requires": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ }
+ },
+ "lilconfig": {
+ "version": "2.1.0"
+ },
+ "lines-and-columns": {
+ "version": "1.2.4"
+ },
+ "locate-path": {
+ "version": "6.0.0",
+ "requires": {
+ "p-locate": "^5.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "peer": true
+ },
+ "lodash.castarray": {
+ "version": "4.4.0",
+ "dev": true
+ },
+ "lodash.debounce": {
+ "version": "4.0.8"
+ },
+ "lodash.isplainobject": {
+ "version": "4.0.6",
+ "dev": true
+ },
+ "lodash.merge": {
+ "version": "4.6.2"
+ },
+ "lodash.throttle": {
+ "version": "4.1.1"
+ },
+ "loose-envify": {
+ "version": "1.4.0",
+ "requires": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ }
+ },
+ "lru-cache": {
+ "version": "6.0.0",
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "markdown-to-jsx": {
+ "version": "7.3.2",
+ "dev": true,
+ "requires": {}
+ },
+ "media-captions": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/media-captions/-/media-captions-1.0.2.tgz",
+ "integrity": "sha512-QxAFc+XTGZeMx+ZvLtMxEDgAjd0kr1LJ2NekLr1cw/UKENOxK7B9g6HwtuTQzCXxmb4Dknd4T8M7FOqqCK9buA=="
+ },
+ "merge2": {
+ "version": "1.4.1"
+ },
+ "micromatch": {
+ "version": "4.0.5",
+ "requires": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ }
+ },
+ "mimic-response": {
+ "version": "3.1.0"
+ },
+ "mini-svg-data-uri": {
+ "version": "1.4.4"
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "1.2.8"
+ },
+ "mkdirp-classic": {
+ "version": "0.5.3"
+ },
+ "ms": {
+ "version": "2.1.2"
+ },
+ "mz": {
+ "version": "2.7.0",
+ "requires": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
+ },
+ "nanoid": {
+ "version": "3.3.7"
+ },
+ "napi-build-utils": {
+ "version": "1.0.2"
+ },
+ "natural-compare": {
+ "version": "1.4.0"
+ },
+ "next": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/next/-/next-14.1.0.tgz",
+ "integrity": "sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==",
+ "requires": {
+ "@next/env": "14.1.0",
+ "@next/swc-darwin-arm64": "14.1.0",
+ "@next/swc-darwin-x64": "14.1.0",
+ "@next/swc-linux-arm64-gnu": "14.1.0",
+ "@next/swc-linux-arm64-musl": "14.1.0",
+ "@next/swc-linux-x64-gnu": "14.1.0",
+ "@next/swc-linux-x64-musl": "14.1.0",
+ "@next/swc-win32-arm64-msvc": "14.1.0",
+ "@next/swc-win32-ia32-msvc": "14.1.0",
+ "@next/swc-win32-x64-msvc": "14.1.0",
+ "@swc/helpers": "0.5.2",
+ "busboy": "1.6.0",
+ "caniuse-lite": "^1.0.30001579",
+ "graceful-fs": "^4.2.11",
+ "postcss": "8.4.31",
+ "styled-jsx": "5.1.1"
+ },
+ "dependencies": {
+ "postcss": {
+ "version": "8.4.31",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+ "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+ "requires": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ }
+ }
+ }
+ },
+ "next-qrcode": {
+ "version": "2.5.1",
+ "requires": {
+ "qrcode": "^1.5.3"
+ }
+ },
+ "node-abi": {
+ "version": "3.51.0",
+ "requires": {
+ "semver": "^7.3.5"
+ }
+ },
+ "node-addon-api": {
+ "version": "6.1.0"
+ },
+ "node-domexception": {
+ "version": "1.0.0"
+ },
+ "node-fetch-commonjs": {
+ "version": "3.3.2",
+ "requires": {
+ "node-domexception": "^1.0.0",
+ "web-streams-polyfill": "^3.0.3"
+ }
+ },
+ "node-releases": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw=="
+ },
+ "normalize-path": {
+ "version": "3.0.0"
+ },
+ "normalize-range": {
+ "version": "0.1.2"
+ },
+ "object-assign": {
+ "version": "4.1.1"
+ },
+ "object-hash": {
+ "version": "3.0.0"
+ },
+ "object-inspect": {
+ "version": "1.13.1"
+ },
+ "object-keys": {
+ "version": "1.1.1"
+ },
+ "object.assign": {
+ "version": "4.1.4",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "has-symbols": "^1.0.3",
+ "object-keys": "^1.1.1"
+ }
+ },
+ "object.entries": {
+ "version": "1.1.7",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ }
+ },
+ "object.fromentries": {
+ "version": "2.0.7",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ }
+ },
+ "object.groupby": {
+ "version": "1.0.1",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1"
+ }
+ },
+ "object.hasown": {
+ "version": "1.1.3",
+ "requires": {
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ }
+ },
+ "object.values": {
+ "version": "1.1.7",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "optionator": {
+ "version": "0.9.3",
+ "requires": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0"
+ }
+ },
+ "p-limit": {
+ "version": "3.1.0",
+ "requires": {
+ "yocto-queue": "^0.1.0"
+ }
+ },
+ "p-locate": {
+ "version": "5.0.0",
+ "requires": {
+ "p-limit": "^3.0.2"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0"
+ },
+ "parent-module": {
+ "version": "1.0.1",
+ "requires": {
+ "callsites": "^3.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "4.0.0"
+ },
+ "path-is-absolute": {
+ "version": "1.0.1"
+ },
+ "path-key": {
+ "version": "3.1.1"
+ },
+ "path-parse": {
+ "version": "1.0.7"
+ },
+ "path-type": {
+ "version": "4.0.0"
+ },
+ "picocolors": {
+ "version": "1.0.0"
+ },
+ "picomatch": {
+ "version": "2.3.1"
+ },
+ "pify": {
+ "version": "2.3.0"
+ },
+ "pirates": {
+ "version": "4.0.6"
+ },
+ "pngjs": {
+ "version": "5.0.0"
+ },
+ "pocketbase": {
+ "version": "0.18.3"
+ },
+ "postcss": {
+ "version": "8.4.33",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz",
+ "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==",
+ "requires": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "postcss-selector-parser": {
+ "version": "6.0.13",
+ "requires": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "4.2.0"
+ },
+ "posthog-js": {
+ "version": "1.105.0",
+ "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.105.0.tgz",
+ "integrity": "sha512-1pE4nuDphxHx1oxezvYB3jjSQgH9LYGwel5ys5+vw9N5+KggXuzwZ9sVIFTHo5/4Wox+OmM7w5j7b6h62OrOHQ==",
+ "requires": {
+ "fflate": "^0.4.8",
+ "preact": "^10.19.3"
+ }
+ },
+ "preact": {
+ "version": "10.19.3",
+ "resolved": "https://registry.npmjs.org/preact/-/preact-10.19.3.tgz",
+ "integrity": "sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ=="
+ },
+ "prebuild-install": {
+ "version": "7.1.1",
+ "requires": {
+ "detect-libc": "^2.0.0",
+ "expand-template": "^2.0.3",
+ "github-from-package": "0.0.0",
+ "minimist": "^1.2.3",
+ "mkdirp-classic": "^0.5.3",
+ "napi-build-utils": "^1.0.1",
+ "node-abi": "^3.3.0",
+ "pump": "^3.0.0",
+ "rc": "^1.2.7",
+ "simple-get": "^4.0.0",
+ "tar-fs": "^2.0.0",
+ "tunnel-agent": "^0.6.0"
+ },
+ "dependencies": {
+ "tar-fs": {
+ "version": "2.1.1",
+ "requires": {
+ "chownr": "^1.1.1",
+ "mkdirp-classic": "^0.5.2",
+ "pump": "^3.0.0",
+ "tar-stream": "^2.1.4"
+ }
+ },
+ "tar-stream": {
+ "version": "2.2.0",
+ "requires": {
+ "bl": "^4.0.3",
+ "end-of-stream": "^1.4.1",
+ "fs-constants": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1"
+ }
+ }
+ }
+ },
+ "preline": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/preline/-/preline-2.0.3.tgz",
+ "integrity": "sha512-V/sLmRIHd23UCdvJNRKKszntgUqA0381erVzRpQ48NjjMOgI7DyFW4mr+lg387V0oeBc5Dx9Jxa5voppVoH9GA==",
+ "requires": {
+ "@popperjs/core": "^2.11.2"
+ }
+ },
+ "prelude-ls": {
+ "version": "1.2.1"
+ },
+ "prop-types": {
+ "version": "15.8.1",
+ "requires": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
+ }
+ },
+ "property-expr": {
+ "version": "2.0.6"
+ },
+ "pump": {
+ "version": "3.0.0",
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "punycode": {
+ "version": "2.3.1"
+ },
+ "qrcode": {
+ "version": "1.5.3",
+ "requires": {
+ "dijkstrajs": "^1.0.1",
+ "encode-utf8": "^1.0.3",
+ "pngjs": "^5.0.0",
+ "yargs": "^15.3.1"
+ }
+ },
+ "queue-microtask": {
+ "version": "1.2.3"
+ },
+ "queue-tick": {
+ "version": "1.0.1"
+ },
+ "rc": {
+ "version": "1.2.8",
+ "requires": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "dependencies": {
+ "strip-json-comments": {
+ "version": "2.0.1"
+ }
+ }
+ },
+ "react": {
+ "version": "18.2.0",
+ "requires": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "react-dom": {
+ "version": "18.2.0",
+ "requires": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.0"
+ }
+ },
+ "react-hook-form": {
+ "version": "7.48.2",
+ "requires": {}
+ },
+ "react-icons": {
+ "version": "4.12.0",
+ "requires": {}
+ },
+ "react-is": {
+ "version": "16.13.1"
+ },
+ "react-toastify": {
+ "version": "9.1.3",
+ "requires": {
+ "clsx": "^1.1.1"
+ }
+ },
+ "read-cache": {
+ "version": "1.0.0",
+ "requires": {
+ "pify": "^2.3.0"
+ }
+ },
+ "readable-stream": {
+ "version": "3.6.2",
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ },
+ "readdirp": {
+ "version": "3.6.0",
+ "requires": {
+ "picomatch": "^2.2.1"
+ }
+ },
+ "reflect.getprototypeof": {
+ "version": "1.0.4",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "globalthis": "^1.0.3",
+ "which-builtin-type": "^1.1.3"
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.14.0"
+ },
+ "regexp.prototype.flags": {
+ "version": "1.5.1",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "set-function-name": "^2.0.0"
+ }
+ },
+ "require-directory": {
+ "version": "2.1.1"
+ },
+ "require-main-filename": {
+ "version": "2.0.0"
+ },
+ "resolve": {
+ "version": "1.22.8",
+ "requires": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "4.0.0"
+ },
+ "resolve-pkg-maps": {
+ "version": "1.0.0"
+ },
+ "reusify": {
+ "version": "1.0.4"
+ },
+ "rimraf": {
+ "version": "3.0.2",
+ "requires": {
+ "glob": "^7.1.3"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.2.3",
+ "requires": {
+ "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"
+ }
+ }
+ }
+ },
+ "run-parallel": {
+ "version": "1.2.0",
+ "requires": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "safe-array-concat": {
+ "version": "1.0.1",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "isarray": "^2.0.5"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1"
+ },
+ "safe-regex-test": {
+ "version": "1.0.0",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.3",
+ "is-regex": "^1.1.4"
+ }
+ },
+ "scheduler": {
+ "version": "0.23.0",
+ "requires": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "section-matter": {
+ "version": "1.0.0",
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "kind-of": "^6.0.0"
+ }
+ },
+ "semver": {
+ "version": "7.5.4",
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "set-blocking": {
+ "version": "2.0.0"
+ },
+ "set-function-length": {
+ "version": "1.1.1",
+ "requires": {
+ "define-data-property": "^1.1.1",
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
+ }
+ },
+ "set-function-name": {
+ "version": "2.0.1",
+ "requires": {
+ "define-data-property": "^1.0.1",
+ "functions-have-names": "^1.2.3",
+ "has-property-descriptors": "^1.0.0"
+ }
+ },
+ "shallowequal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
+ "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==",
+ "peer": true
+ },
+ "sharp": {
+ "version": "0.32.6",
+ "requires": {
+ "color": "^4.2.3",
+ "detect-libc": "^2.0.2",
+ "node-addon-api": "^6.1.0",
+ "prebuild-install": "^7.1.1",
+ "semver": "^7.5.4",
+ "simple-get": "^4.0.1",
+ "tar-fs": "^3.0.4",
+ "tunnel-agent": "^0.6.0"
+ }
+ },
+ "shebang-command": {
+ "version": "2.0.0",
+ "requires": {
+ "shebang-regex": "^3.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "3.0.0"
+ },
+ "side-channel": {
+ "version": "1.0.4",
+ "requires": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ }
+ },
+ "simple-concat": {
+ "version": "1.0.1"
+ },
+ "simple-get": {
+ "version": "4.0.1",
+ "requires": {
+ "decompress-response": "^6.0.0",
+ "once": "^1.3.1",
+ "simple-concat": "^1.0.0"
+ }
+ },
+ "simple-swizzle": {
+ "version": "0.2.2",
+ "requires": {
+ "is-arrayish": "^0.3.1"
+ }
+ },
+ "slash": {
+ "version": "3.0.0"
+ },
+ "source-map-js": {
+ "version": "1.0.2"
+ },
+ "sprintf-js": {
+ "version": "1.0.3"
+ },
+ "streamsearch": {
+ "version": "1.1.0"
+ },
+ "streamx": {
+ "version": "2.15.5",
+ "requires": {
+ "fast-fifo": "^1.1.0",
+ "queue-tick": "^1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.3.0",
+ "requires": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "string-width": {
+ "version": "4.2.3",
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "dependencies": {
+ "emoji-regex": {
+ "version": "8.0.0"
+ }
+ }
+ },
+ "string.prototype.matchall": {
+ "version": "4.0.10",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.5",
+ "regexp.prototype.flags": "^1.5.0",
+ "set-function-name": "^2.0.0",
+ "side-channel": "^1.0.4"
+ }
+ },
+ "string.prototype.trim": {
+ "version": "1.2.8",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ }
+ },
+ "string.prototype.trimend": {
+ "version": "1.0.7",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ }
+ },
+ "string.prototype.trimstart": {
+ "version": "1.0.7",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.1",
+ "requires": {
+ "ansi-regex": "^5.0.1"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0"
+ },
+ "strip-bom-string": {
+ "version": "1.0.0"
+ },
+ "strip-json-comments": {
+ "version": "3.1.1"
+ },
+ "styled-components": {
+ "version": "5.3.11",
+ "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.11.tgz",
+ "integrity": "sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==",
+ "peer": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/traverse": "^7.4.5",
+ "@emotion/is-prop-valid": "^1.1.0",
+ "@emotion/stylis": "^0.8.4",
+ "@emotion/unitless": "^0.7.4",
+ "babel-plugin-styled-components": ">= 1.12.0",
+ "css-to-react-native": "^3.0.0",
+ "hoist-non-react-statics": "^3.0.0",
+ "shallowequal": "^1.1.0",
+ "supports-color": "^5.5.0"
+ },
+ "dependencies": {
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "peer": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "peer": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "styled-icons": {
+ "version": "10.47.0",
+ "requires": {
+ "@babel/runtime": "^7.20.7",
+ "@styled-icons/bootstrap": "10.47.0",
+ "@styled-icons/boxicons-logos": "10.47.0",
+ "@styled-icons/boxicons-regular": "10.47.0",
+ "@styled-icons/boxicons-solid": "10.47.0",
+ "@styled-icons/crypto": "10.47.0",
+ "@styled-icons/entypo": "10.46.0",
+ "@styled-icons/entypo-social": "10.46.0",
+ "@styled-icons/evaicons-outline": "10.46.0",
+ "@styled-icons/evaicons-solid": "10.46.0",
+ "@styled-icons/evil": "10.46.0",
+ "@styled-icons/fa-brands": "10.47.0",
+ "@styled-icons/fa-regular": "10.47.0",
+ "@styled-icons/fa-solid": "10.47.0",
+ "@styled-icons/feather": "10.47.0",
+ "@styled-icons/fluentui-system-filled": "10.47.0",
+ "@styled-icons/fluentui-system-regular": "10.47.0",
+ "@styled-icons/foundation": "10.46.0",
+ "@styled-icons/heroicons-outline": "10.47.0",
+ "@styled-icons/heroicons-solid": "10.47.0",
+ "@styled-icons/icomoon": "10.46.0",
+ "@styled-icons/ionicons-outline": "10.46.0",
+ "@styled-icons/ionicons-sharp": "10.46.0",
+ "@styled-icons/ionicons-solid": "10.46.0",
+ "@styled-icons/material": "10.47.0",
+ "@styled-icons/material-outlined": "10.47.0",
+ "@styled-icons/material-rounded": "10.47.0",
+ "@styled-icons/material-sharp": "10.47.0",
+ "@styled-icons/material-twotone": "10.47.0",
+ "@styled-icons/octicons": "10.47.0",
+ "@styled-icons/open-iconic": "10.46.0",
+ "@styled-icons/remix-editor": "10.46.0",
+ "@styled-icons/remix-fill": "10.46.0",
+ "@styled-icons/remix-line": "10.46.0",
+ "@styled-icons/simple-icons": "10.46.0",
+ "@styled-icons/styled-icon": "10.7.0",
+ "@styled-icons/typicons": "10.46.0",
+ "@styled-icons/zondicons": "10.46.0"
+ }
+ },
+ "styled-jsx": {
+ "version": "5.1.1",
+ "requires": {
+ "client-only": "0.0.1"
+ }
+ },
+ "sucrase": {
+ "version": "3.34.0",
+ "requires": {
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "commander": "^4.0.0",
+ "glob": "7.1.6",
+ "lines-and-columns": "^1.1.6",
+ "mz": "^2.7.0",
+ "pirates": "^4.0.1",
+ "ts-interface-checker": "^0.1.9"
+ }
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ },
+ "supports-preserve-symlinks-flag": {
+ "version": "1.0.0"
+ },
+ "tailwindcss": {
+ "version": "3.3.3",
+ "requires": {
+ "@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.2.12",
+ "glob-parent": "^6.0.2",
+ "is-glob": "^4.0.3",
+ "jiti": "^1.18.2",
+ "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"
+ },
+ "dependencies": {
+ "postcss-import": {
+ "version": "15.1.0",
+ "requires": {
+ "postcss-value-parser": "^4.0.0",
+ "read-cache": "^1.0.0",
+ "resolve": "^1.1.7"
+ }
+ },
+ "postcss-js": {
+ "version": "4.0.1",
+ "requires": {
+ "camelcase-css": "^2.0.1"
+ }
+ },
+ "postcss-load-config": {
+ "version": "4.0.2",
+ "requires": {
+ "lilconfig": "^3.0.0",
+ "yaml": "^2.3.4"
+ },
+ "dependencies": {
+ "lilconfig": {
+ "version": "3.0.0"
+ }
+ }
+ },
+ "postcss-nested": {
+ "version": "6.0.1",
+ "requires": {
+ "postcss-selector-parser": "^6.0.11"
+ }
+ }
+ }
+ },
+ "tapable": {
+ "version": "2.2.1"
+ },
+ "tar-fs": {
+ "version": "3.0.4",
+ "requires": {
+ "mkdirp-classic": "^0.5.2",
+ "pump": "^3.0.0",
+ "tar-stream": "^3.1.5"
+ }
+ },
+ "tar-stream": {
+ "version": "3.1.6",
+ "requires": {
+ "b4a": "^1.6.4",
+ "fast-fifo": "^1.2.0",
+ "streamx": "^2.15.0"
+ }
+ },
+ "text-table": {
+ "version": "0.2.0"
+ },
+ "thenify": {
+ "version": "3.3.1",
+ "requires": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "thenify-all": {
+ "version": "1.6.0",
+ "requires": {
+ "thenify": ">= 3.1.0 < 4"
+ }
+ },
+ "third-party-capital": {
+ "version": "1.0.20"
+ },
+ "tiny-case": {
+ "version": "1.0.3"
+ },
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "peer": true
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ },
+ "toposort": {
+ "version": "2.0.2"
+ },
+ "ts-api-utils": {
+ "version": "1.0.3",
+ "requires": {}
+ },
+ "ts-interface-checker": {
+ "version": "0.1.13"
+ },
+ "tsconfig-paths": {
+ "version": "3.14.2",
+ "requires": {
+ "@types/json5": "^0.0.29",
+ "json5": "^1.0.2",
+ "minimist": "^1.2.6",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "type-check": {
+ "version": "0.4.0",
+ "requires": {
+ "prelude-ls": "^1.2.1"
+ }
+ },
+ "type-fest": {
+ "version": "2.19.0"
+ },
+ "typed-array-buffer": {
+ "version": "1.0.0",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1",
+ "is-typed-array": "^1.1.10"
+ }
+ },
+ "typed-array-byte-length": {
+ "version": "1.0.0",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "has-proto": "^1.0.1",
+ "is-typed-array": "^1.1.10"
+ }
+ },
+ "typed-array-byte-offset": {
+ "version": "1.0.0",
+ "requires": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "has-proto": "^1.0.1",
+ "is-typed-array": "^1.1.10"
+ }
+ },
+ "typed-array-length": {
+ "version": "1.0.4",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "is-typed-array": "^1.1.9"
+ }
+ },
+ "typescript": {
+ "version": "5.1.6"
+ },
+ "unbox-primitive": {
+ "version": "1.0.2",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
+ }
+ },
+ "update-browserslist-db": {
+ "version": "1.0.13",
+ "requires": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ }
+ },
+ "uri-js": {
+ "version": "4.4.1",
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "urlpattern-polyfill": {
+ "version": "8.0.2"
+ },
+ "util-deprecate": {
+ "version": "1.0.2"
+ },
+ "web-streams-polyfill": {
+ "version": "3.2.1"
+ },
+ "which": {
+ "version": "2.0.2",
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "which-boxed-primitive": {
+ "version": "1.0.2",
+ "requires": {
+ "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"
+ }
+ },
+ "which-builtin-type": {
+ "version": "1.1.3",
+ "requires": {
+ "function.prototype.name": "^1.1.5",
+ "has-tostringtag": "^1.0.0",
+ "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.1",
+ "which-typed-array": "^1.1.9"
+ }
+ },
+ "which-collection": {
+ "version": "1.0.1",
+ "requires": {
+ "is-map": "^2.0.1",
+ "is-set": "^2.0.1",
+ "is-weakmap": "^2.0.1",
+ "is-weakset": "^2.0.1"
+ }
+ },
+ "which-module": {
+ "version": "2.0.1"
+ },
+ "which-typed-array": {
+ "version": "1.1.13",
+ "requires": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.4",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "wrap-ansi": {
+ "version": "6.2.0",
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2"
+ },
+ "y18n": {
+ "version": "4.0.3"
+ },
+ "yallist": {
+ "version": "4.0.0"
+ },
+ "yaml": {
+ "version": "2.3.4"
+ },
+ "yargs": {
+ "version": "15.4.1",
+ "requires": {
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^4.2.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^18.1.2"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "4.1.0",
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.3.0",
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "4.1.0",
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ }
+ }
+ },
+ "yargs-parser": {
+ "version": "18.1.3",
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ },
+ "yocto-queue": {
+ "version": "0.1.0"
+ },
+ "yup": {
+ "version": "1.3.2",
+ "requires": {
+ "property-expr": "^2.0.5",
+ "tiny-case": "^1.0.3",
+ "toposort": "^2.0.2",
+ "type-fest": "^2.19.0"
+ }
+ },
+ "yup-password": {
+ "version": "0.2.2"
+ }
+ }
+}
diff --git a/Frontend/package.json b/Frontend/package.json
new file mode 100644
index 0000000..c2afcfb
--- /dev/null
+++ b/Frontend/package.json
@@ -0,0 +1,51 @@
+{
+ "name": "sign365website",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "dev": "next dev",
+ "build": "next build",
+ "start": "next start",
+ "lint": "next lint"
+ },
+ "dependencies": {
+ "@hookform/resolvers": "^3.2.0",
+ "@netlify/functions": "^2.1.0",
+ "@next/third-parties": "^14.1.0",
+ "@tailwindcss/forms": "^0.5.4",
+ "@vidstack/react": "^1.9.8",
+ "aos": "^2.3.4",
+ "autoprefixer": "10.4.15",
+ "crypto-js": "^4.2.0",
+ "daisyui": "^3.5.1",
+ "eslint": "8.47.0",
+ "eslint-config-next": "13.4.17",
+ "gray-matter": "^4.0.3",
+ "next": "^14.1.0",
+ "next-qrcode": "^2.5.1",
+ "node-fetch-commonjs": "^3.3.2",
+ "pocketbase": "^0.18.0",
+ "postcss": "^8.4.33",
+ "posthog-js": "^1.105.0",
+ "preline": "^2.0.3",
+ "react": "18.2.0",
+ "react-dom": "18.2.0",
+ "react-hook-form": "^7.45.4",
+ "react-icons": "^4.11.0",
+ "react-toastify": "^9.1.3",
+ "sharp": "^0.32.6",
+ "styled-icons": "^10.47.0",
+ "tailwindcss": "3.3.3",
+ "typescript": "5.1.6",
+ "yup": "^1.2.0",
+ "yup-password": "^0.2.2"
+ },
+ "devDependencies": {
+ "@tailwindcss/typography": "^0.5.9",
+ "@types/aos": "^3.0.4",
+ "@types/crypto-js": "^4.2.1",
+ "@types/node": "20.5.0",
+ "@types/react": "18.2.20",
+ "markdown-to-jsx": "^7.3.2"
+ }
+}
diff --git a/Frontend/postcss.config.js b/Frontend/postcss.config.js
new file mode 100644
index 0000000..33ad091
--- /dev/null
+++ b/Frontend/postcss.config.js
@@ -0,0 +1,6 @@
+module.exports = {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {},
+ },
+}
diff --git a/Frontend/public/Whitepaper.pdf b/Frontend/public/Whitepaper.pdf
new file mode 100644
index 0000000..008b5f8
Binary files /dev/null and b/Frontend/public/Whitepaper.pdf differ
diff --git a/Frontend/public/assets/training-form.pdf b/Frontend/public/assets/training-form.pdf
new file mode 100644
index 0000000..aa42b8b
Binary files /dev/null and b/Frontend/public/assets/training-form.pdf differ
diff --git a/Frontend/public/images/a-founders-message-to-group-training-organisations-0.png b/Frontend/public/images/a-founders-message-to-group-training-organisations-0.png
new file mode 100644
index 0000000..8b89231
Binary files /dev/null and b/Frontend/public/images/a-founders-message-to-group-training-organisations-0.png differ
diff --git a/Frontend/public/images/blog/adobedocusign.png b/Frontend/public/images/blog/adobedocusign.png
new file mode 100644
index 0000000..bc92a09
Binary files /dev/null and b/Frontend/public/images/blog/adobedocusign.png differ
diff --git a/Frontend/public/images/blog/adobesignnow.png b/Frontend/public/images/blog/adobesignnow.png
new file mode 100644
index 0000000..57dbc02
Binary files /dev/null and b/Frontend/public/images/blog/adobesignnow.png differ
diff --git a/Frontend/public/images/blog/docusignsignnow.png b/Frontend/public/images/blog/docusignsignnow.png
new file mode 100644
index 0000000..ef72576
Binary files /dev/null and b/Frontend/public/images/blog/docusignsignnow.png differ
diff --git a/Frontend/public/images/blog/sign365adobe.png b/Frontend/public/images/blog/sign365adobe.png
new file mode 100644
index 0000000..e59e701
Binary files /dev/null and b/Frontend/public/images/blog/sign365adobe.png differ
diff --git a/Frontend/public/images/blog/sign365docusign.png b/Frontend/public/images/blog/sign365docusign.png
new file mode 100644
index 0000000..43d4b52
Binary files /dev/null and b/Frontend/public/images/blog/sign365docusign.png differ
diff --git a/Frontend/public/images/blog/sign365signnow.png b/Frontend/public/images/blog/sign365signnow.png
new file mode 100644
index 0000000..30a1132
Binary files /dev/null and b/Frontend/public/images/blog/sign365signnow.png differ
diff --git a/Frontend/public/images/creating-custom-forms-a-step-by-step-guide-0.png b/Frontend/public/images/creating-custom-forms-a-step-by-step-guide-0.png
new file mode 100644
index 0000000..4aab52c
Binary files /dev/null and b/Frontend/public/images/creating-custom-forms-a-step-by-step-guide-0.png differ
diff --git a/Frontend/public/images/creating-custom-forms-a-step-by-step-guide-1.png b/Frontend/public/images/creating-custom-forms-a-step-by-step-guide-1.png
new file mode 100644
index 0000000..aaadcea
Binary files /dev/null and b/Frontend/public/images/creating-custom-forms-a-step-by-step-guide-1.png differ
diff --git a/Frontend/public/images/creating-custom-forms-a-step-by-step-guide-2.png b/Frontend/public/images/creating-custom-forms-a-step-by-step-guide-2.png
new file mode 100644
index 0000000..8a16ffe
Binary files /dev/null and b/Frontend/public/images/creating-custom-forms-a-step-by-step-guide-2.png differ
diff --git a/Frontend/public/images/creating-custom-forms-a-step-by-step-guide-3.png b/Frontend/public/images/creating-custom-forms-a-step-by-step-guide-3.png
new file mode 100644
index 0000000..73e2b93
Binary files /dev/null and b/Frontend/public/images/creating-custom-forms-a-step-by-step-guide-3.png differ
diff --git a/Frontend/public/images/creating-custom-forms-a-step-by-step-guide-4.png b/Frontend/public/images/creating-custom-forms-a-step-by-step-guide-4.png
new file mode 100644
index 0000000..405a232
Binary files /dev/null and b/Frontend/public/images/creating-custom-forms-a-step-by-step-guide-4.png differ
diff --git a/Frontend/public/images/creating-custom-forms-a-step-by-step-guide-5.png b/Frontend/public/images/creating-custom-forms-a-step-by-step-guide-5.png
new file mode 100644
index 0000000..b3a431a
Binary files /dev/null and b/Frontend/public/images/creating-custom-forms-a-step-by-step-guide-5.png differ
diff --git a/Frontend/public/images/does-microsoft-forms-work-offline-0.png b/Frontend/public/images/does-microsoft-forms-work-offline-0.png
new file mode 100644
index 0000000..56cf883
Binary files /dev/null and b/Frontend/public/images/does-microsoft-forms-work-offline-0.png differ
diff --git a/Frontend/public/images/example-training-form-template-0.png b/Frontend/public/images/example-training-form-template-0.png
new file mode 100644
index 0000000..3abf488
Binary files /dev/null and b/Frontend/public/images/example-training-form-template-0.png differ
diff --git a/Frontend/public/images/example-training-form-template-1.png b/Frontend/public/images/example-training-form-template-1.png
new file mode 100644
index 0000000..47ba012
Binary files /dev/null and b/Frontend/public/images/example-training-form-template-1.png differ
diff --git a/Frontend/public/images/how-sign365-reduced-supervisor-form-processing-by-80-percent-0.png b/Frontend/public/images/how-sign365-reduced-supervisor-form-processing-by-80-percent-0.png
new file mode 100644
index 0000000..820bbcf
Binary files /dev/null and b/Frontend/public/images/how-sign365-reduced-supervisor-form-processing-by-80-percent-0.png differ
diff --git a/Frontend/public/images/how-to-electronically-fill-a-document-0.png b/Frontend/public/images/how-to-electronically-fill-a-document-0.png
new file mode 100644
index 0000000..704a0ed
Binary files /dev/null and b/Frontend/public/images/how-to-electronically-fill-a-document-0.png differ
diff --git a/Frontend/public/images/how-to-setup-supervisor-forms-with-workforce-one-0.png b/Frontend/public/images/how-to-setup-supervisor-forms-with-workforce-one-0.png
new file mode 100644
index 0000000..16fa269
Binary files /dev/null and b/Frontend/public/images/how-to-setup-supervisor-forms-with-workforce-one-0.png differ
diff --git a/Frontend/public/images/top-5-best-document-automation-software-0.png b/Frontend/public/images/top-5-best-document-automation-software-0.png
new file mode 100644
index 0000000..2128ace
Binary files /dev/null and b/Frontend/public/images/top-5-best-document-automation-software-0.png differ
diff --git a/Frontend/public/images/your-forms-on-sign365-in-5-minutes-0.png b/Frontend/public/images/your-forms-on-sign365-in-5-minutes-0.png
new file mode 100644
index 0000000..40c3eee
Binary files /dev/null and b/Frontend/public/images/your-forms-on-sign365-in-5-minutes-0.png differ
diff --git a/Frontend/public/next.svg b/Frontend/public/next.svg
new file mode 100644
index 0000000..5174b28
--- /dev/null
+++ b/Frontend/public/next.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Frontend/public/sitemap.xml b/Frontend/public/sitemap.xml
new file mode 100644
index 0000000..7d22372
--- /dev/null
+++ b/Frontend/public/sitemap.xml
@@ -0,0 +1,87 @@
+
+
+
+ https://sign365.com.au/
+ 2024-01-17T02:06:08+00:00
+ 1.00
+
+
+ https://sign365.com.au/pricing
+ 2024-01-17T02:06:08+00:00
+ 0.80
+
+
+ https://sign365.com.au/blogs
+ 2024-01-17T02:06:08+00:00
+ 0.80
+
+
+ https://sign365.com.au/blogs/creating-custom-forms-a-step-by-step-guide
+ 2024-01-17T02:06:08+00:00
+ 0.64
+
+
+ https://sign365.com.au/blogs/offline-google-forms
+ 2024-01-17T02:06:08+00:00
+ 0.64
+
+
+ https://sign365.com.au/blogs/sign365-vs-docusign
+ 2024-01-17T02:06:08+00:00
+ 0.64
+
+
+ https://sign365.com.au/blogs/sign365-vs-sign-now
+ 2024-01-17T02:06:08+00:00
+ 0.64
+
+
+ https://sign365.com.au/blogs/adobe-fill-and-sign-vs-sign-now
+ 2024-01-17T02:06:08+00:00
+ 0.64
+
+
+ https://sign365.com.au/blogs/adobe-fill-and-sign-vs-docusign
+ 2024-01-17T02:06:08+00:00
+ 0.64
+
+
+ https://sign365.com.au/blogs/docusign-vs-signnow
+ 2024-01-17T02:06:08+00:00
+ 0.64
+
+
+ https://sign365.com.au/blogs/sign365-vs-adobe-fill-and-sign
+ 2024-01-17T02:06:08+00:00
+ 0.64
+
+
+ https://sign365.com.au/blogs/offline-google-forms
+ 2024-01-17T02:06:08+00:00
+ 0.64
+
+
+ https://sign365.com.au/blogs/free-group-training-forms
+ 2024-01-17T02:06:08+00:00
+ 0.64
+
+
+ https://sign365.com.au/blogs/your-forms-on-sign365-in-5-minutes
+ 2024-01-17T02:06:08+00:00
+ 0.64
+
+
+ https://sign365.com.au/blogs/creating-custom-forms-a-step-by-step-guide
+ 2024-01-17T02:06:08+00:00
+ 0.64
+
+
+ https://sign365.com.au/blogs/top-5-best-document-automation-software
+ 2024-01-17T02:06:08+00:00
+ 0.64
+
+
+
+
\ No newline at end of file
diff --git a/Frontend/public/vercel.svg b/Frontend/public/vercel.svg
new file mode 100644
index 0000000..d2f8422
--- /dev/null
+++ b/Frontend/public/vercel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Frontend/sections/AccountContent.tsx b/Frontend/sections/AccountContent.tsx
new file mode 100644
index 0000000..bb9d7a6
--- /dev/null
+++ b/Frontend/sections/AccountContent.tsx
@@ -0,0 +1,181 @@
+"use client";
+
+import {
+ createManagementSubscriptionSession,
+ getSubscriptions,
+} from "@/app/(auth)/actions";
+import { ModalStatus, Subscription, User } from "@/types";
+import React from "react";
+import { useState, useEffect } from "react";
+import { toast } from "react-toastify";
+import { useRouter } from "next/navigation";
+import Button from "@/components/Button";
+import { useQRCode } from "next-qrcode";
+
+interface ManageSubscriptionProps {
+ user: User;
+}
+
+function AccountContent({ user }: ManageSubscriptionProps) {
+ const router = useRouter();
+ const { Canvas } = useQRCode();
+ const portalWebsite = process.env
+ .NEXT_PUBLIC_PORTAL_SIGN365_WEBSITE as string;
+ const downloadApplicationLink = process.env
+ .NEXT_PUBLIC_SIGN365_APPLICATION_LINK as string;
+ const portalWebsiteTemplatesLink = process.env
+ .NEXT_PUBLIC_SIGN365_WEBSITE_TEMPLATE_LINK as string;
+ const portalWebsiteIntegrationsLink = process.env
+ .NEXT_PUBLIC_SIGN365_WEBSITE_INTEGRATIONS_LINK as string;
+
+ const [subscription, setSubscription] = useState();
+ const [loading, setLoading] = useState(true);
+ useEffect(() => {
+ (async () => {
+ if (!user) {
+ setLoading(false);
+ return;
+ }
+ try {
+ setLoading(true);
+ const subscriptions = await getSubscriptions();
+ if (subscriptions.length > 0) {
+ setSubscription(subscriptions[0]);
+ }
+ setLoading(false);
+ } catch (err) {
+ setLoading(false);
+ }
+ })();
+ }, [user]);
+ const manageSubscription = async () => {
+ try {
+ const managementSession = await createManagementSubscriptionSession();
+ router.push(managementSession.url);
+ } catch (error) {
+ if (error instanceof Error) {
+ toast.error(error.message, {
+ position: "bottom-left",
+ autoClose: 5000,
+ hideProgressBar: false,
+ closeOnClick: true,
+ pauseOnHover: true,
+ draggable: true,
+ progress: undefined,
+ theme: "colored",
+ });
+ }
+ }
+ };
+
+ return loading ? (
+
+
+
+ ) : (
+
+ {subscription ? (
+
+ ) : (
+ <>>
+ )}
+
+
+
+ Your Subscription
+
+ {subscription ? (
+ <>
+
+ {subscription?.product?.name}
+
+
+ {subscription.product?.description}
+
+
+ Manage Subscription
+
+ >
+ ) : (
+ <>
+
+ {"You haven’t upgraded your workflow yet"}
+
+
router.push("/pricing")}
+ className="px-10 py-2 text-base capitalize !rounded-3xl text-white bg-gradient-to-r from-pink-default to-purple-default hover:bg-gray-900 w-full sm:w-auto"
+ >
+ Upgrade
+
+ >
+ )}
+
+
+
+ );
+}
+
+export default AccountContent;
diff --git a/Frontend/sections/BlogContent.tsx b/Frontend/sections/BlogContent.tsx
new file mode 100644
index 0000000..252cbf6
--- /dev/null
+++ b/Frontend/sections/BlogContent.tsx
@@ -0,0 +1,48 @@
+import React from "react";
+import Image from "next/image";
+import matter from "gray-matter";
+import Markdown from "markdown-to-jsx";
+
+interface BlogContentProps {
+ post: matter.GrayMatterFile;
+}
+
+function BlogContent({ post }: BlogContentProps) {
+ return (
+ <>
+
+ {post.data.title}
+
+
+ {/* Not sure if name is required */}
+
+ {post.data.author ?? ""}
+
+
|
+
{post.data.date}
+
+
+
+
+
+
+ {post.content}
+
+ >
+ );
+}
+
+export default BlogContent;
diff --git a/Frontend/sections/FeaturesBlocks.tsx b/Frontend/sections/FeaturesBlocks.tsx
new file mode 100644
index 0000000..56911cf
--- /dev/null
+++ b/Frontend/sections/FeaturesBlocks.tsx
@@ -0,0 +1,258 @@
+import React from "react";
+import iconClipboard from "@/images/icon-clipboard.svg";
+import iconClock from "@/images/icon-clock.svg";
+import iconLink from "@/images/icon-link.svg";
+import iconUsDollar from "@/images/icon-us-dollar.svg";
+import iconUser from "@/images/icon-user.svg";
+import iconVector from "@/images/icon-vector.svg";
+import Image from "next/image";
+
+const FeaturesBlocks = () => {
+ return (
+
+
+
+ {/* Section header */}
+
+
+ Say Goodbye To Manual Data Entry With Sign365.
+
+
+
+ {/* Items */}
+
+ {/* 1st item */}
+
+
+
+
+
+
+
+
+ Enter Data Once
+
+
+ Say goodbye to manual data entry with Sign365's offline
+ forms. Enter data once and let our app do the rest. We'll
+ send the information to your business systems, saving you time
+ and effort.
+
+
+
+ {/* 2nd item */}
+
+
+
+
+
+
+
+
+ Connect To Over 1000 Apps
+
+
+ Sign365 can submit information to over 1000 apps. Whether you
+ use Salesforce, Hubspot, or any other business app, Sign365 has
+ got you covered.
+
+
+
+ {/* 3rd item */}
+
+
+
+
+
+
+
+
+ Start Time Saving
+
+
+ With Sign365, you'll save valuable time that you can then
+ invest in other aspects of your business. Our offline forms
+ collect and send your data, so you can complete more tasks
+ faster.
+
+
+
+ {/* 4th item */}
+
+
+
+
+
+
+
+
+ Start Saving Money
+
+
+ Sign365's offline forms can help you save money on staffing
+ and data entry costs. By automating your data collection, you
+ can reduce labor costs and increase profits.
+
+
+
+ {/* 5th item */}
+
+
+
+
+
+
+
+
+ Your Forms Your Way
+
+
+ With Sign365, you have full control over your offline forms.
+ Create forms that for your business needs and customise them to
+ match your brand. Get started with Sign365 today and start
+ collecting data the way you want.
+
+
+
+ {/* 6th item */}
+
+
+
+
+
+
+
+
+ Collect Customer Info
+
+
+ Sign365's offline digital forms capture accurate and secure
+ customer information. You can customise your forms to send
+ information where you need it. Ensuring you have the insights to
+ make informed business decisions.
+
+
+
+
+
+
+ );
+};
+
+export default FeaturesBlocks;
diff --git a/Frontend/sections/FeaturesZigzag.tsx b/Frontend/sections/FeaturesZigzag.tsx
new file mode 100755
index 0000000..4110929
--- /dev/null
+++ b/Frontend/sections/FeaturesZigzag.tsx
@@ -0,0 +1,218 @@
+import React from "react";
+
+import imageConnection from "@/images/zigzag-connection.png";
+import imageGraph from "@/images/zigzag-graph.png";
+import imageStreamLine from "@/images/zigzag-streamline.png";
+import Image from "next/image";
+import { SourceModal } from "@/types";
+import Link from "next/link";
+
+const FeaturesZigzag = () => {
+ const tryItOnClick = () => {
+ const signUpModal = document.getElementById("sign-up-modal");
+ if (!signUpModal) return;
+ signUpModal.setAttribute("name", SourceModal.TryIt);
+ signUpModal.removeAttribute("price_id");
+ signUpModal.click();
+ };
+
+ return (
+
+
+
+ {/* Section header */}
+
+
+ Try it!
+
+
+ One Form, Zero Data Reentry
+
+
+ Enter data once and let our app do the rest. We'll send the
+ information to your business systems, so that you don't need
+ to do it more than once.
+
+
+
+ {/* Items */}
+
+ {/* 1st item */}
+
+ {/* Image */}
+
+
+
+ {/* Content */}
+
+
+
+ Revolutionize Your Workflow
+
+
+ Streamline Your Data Collection Process
+
+
+ Sign365 removes collecting and filling forms from your
+ workflow through it's iOS app. You can now fill and
+ sign your forms without needing to do the work twice.
+
+
+
+
+ We give you the app to collect your surveys and forms.
+ You tell us where you want the information to go and we
+ send it.
+
+
+
+
+ Is your GTO or labour hire company needing some forms to
+ collect information? We offer{" "}
+
+ free templates
+ {" "}
+ and give you the tools to make your own.
+
+
+
+
+
+
+
+ {/* 2nd item */}
+
+ {/* Image */}
+
+
+
+ {/* Content */}
+
+
+
+ More speed. Less spend
+
+
+ Save Time and Money
+
+
+ Sign365 reduces your work hours by giving you an assistant
+ to do all your paperwork. Got forms to store? Let{" "}
+
+ the app
+ {" "}
+ do it!
+
+
+
+
+ Get the app to collect info and free up time to focus on
+ other business operations.
+
+
+
+
+
+ The app
+ {" "}
+ stores your forms offline and then sends them when you
+ are back online. You don't need someone to send the
+ forms for you. You don't need someone to scan for
+ you. Sign365 does it.
+
+
+
+
+
+
+
+ {/* 3rd item */}
+
+ {/* Image */}
+
+
+
+ {/* Content */}
+
+
+
+ Unlock Seamless Business Operations
+
+
+ Connect to Over 1000 Apps
+
+
+ Sign365 can submit information to over 1000 apps. Whether
+ you use Salesforce, Hubspot, or any other business app,
+ Sign365 has got you covered.
+
+
+
+
+ Sign365 lets you choose where to store your forms. You
+ can choose which apps to connect to yourself. Or let us
+ do the heavy lifting!
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default FeaturesZigzag;
diff --git a/Frontend/sections/FrequentlyAsked.tsx b/Frontend/sections/FrequentlyAsked.tsx
new file mode 100644
index 0000000..8326ba6
--- /dev/null
+++ b/Frontend/sections/FrequentlyAsked.tsx
@@ -0,0 +1,66 @@
+import FAQQuestion from "@/components/FAQQuestion";
+import Link from "next/link";
+import React from "react";
+
+export const FrequentlyAsked = () => {
+ return (
+
+
+
+ Your questions, answered
+
+
+ Answers to the most frequently asked questions.
+
+
+
+
+
+
+
+ While we have articles that break down the exact{" "}
+ differences, the easiest way to put it
+ is that we aren't but we have 2 killer features that makes us
+ standout. 1. Your forms are able to talk with your systems and get
+ them to perform business tasks. 2. We are an offline first
+ platform
+
+
+
+
+ We believe so strongly in our offering that we are prepared to bet
+ a 50% reduction in your forms processing work or your money back
+
+
+
+
+ We take information written on the forms and turn it into
+ information your business systems can understand. Signups,
+ contracts, surveys and notes can be taken and turned into events,
+ tickets and purchases using APIs like Zapier as well as native
+ API's like in the case of Workforce One. We upgrade your
+ workflow based on your specifications and then give you the tools
+ to manage it
+
+
+
+
+ We were born as a company because SignNow had too many options for
+ the people using it. Everyday people filling out their
+ survey's were struggling to use it and so we simplified our
+ application to only offer core functionalities
+
+
+
+
+ We believe that support should be face to face and quick.
+ Therefore we don't have any pricing tiers offering better
+ support for more money. We want to get your issue fixed as soon as
+ possible.
+
+
+
+
+
+ );
+};
diff --git a/Frontend/sections/HeroHome.tsx b/Frontend/sections/HeroHome.tsx
new file mode 100755
index 0000000..3b17cdd
--- /dev/null
+++ b/Frontend/sections/HeroHome.tsx
@@ -0,0 +1,73 @@
+import React from "react";
+import ModalLearnMore from "./ModalLearnMore/ModalLearnMore";
+import { SourceModal } from "@/types";
+import { Raleway } from "next/font/google";
+
+const raleway = Raleway({
+ variable: "--display-font",
+ subsets: ["latin"],
+});
+
+function HeroHome() {
+ const bookDemoOnClick = () => {
+ const signUpModal = document.getElementById("sign-up-modal");
+ if (!signUpModal) return;
+ signUpModal.setAttribute("name", SourceModal.BookDemo);
+ signUpModal.removeAttribute("price_id");
+ signUpModal.click();
+ };
+
+ const learnMoreOnClick = () => {
+ const learnMoreModal = document.getElementById("learn-more-modal");
+ if (!learnMoreModal) return;
+ learnMoreModal.click();
+ };
+
+ return (
+
+
+ {/* Hero content */}
+
+ {/* Section header */}
+
+
+ Your Offline Digital Forms Simplified.
+
+
+ Sign365
+
+
+
+
+ Book Demo
+
+
+
+
+ Learn more
+
+
+
+
+
+
+
+
+
+ );
+}
+
+export default HeroHome;
diff --git a/Frontend/sections/HeroVideo.tsx b/Frontend/sections/HeroVideo.tsx
new file mode 100644
index 0000000..7a0a0fe
--- /dev/null
+++ b/Frontend/sections/HeroVideo.tsx
@@ -0,0 +1,41 @@
+"use client";
+
+import YouTubeFrame from "@/components/YoutubeEmbed";
+import React from "react";
+import { useState, useEffect } from "react";
+
+function HeroVideo() {
+ const [windowWidth, setWindowWidth] = useState(0);
+
+ useEffect(() => {
+ setWindowWidth(window.innerWidth);
+ }, []);
+
+ return (
+
+
+ {/* Hero image */}
+
+ 425
+ ? windowWidth > 800
+ ? 800
+ : 400
+ : 280
+ }
+ height={!!windowWidth && windowWidth > 425 ? 500 : 240}
+ />
+
+
+
+ );
+}
+
+export default HeroVideo;
diff --git a/Frontend/sections/LoadingModal.tsx b/Frontend/sections/LoadingModal.tsx
new file mode 100644
index 0000000..7c53f55
--- /dev/null
+++ b/Frontend/sections/LoadingModal.tsx
@@ -0,0 +1,27 @@
+import React from "react";
+
+function LoadingModal() {
+ return (
+
+ );
+}
+
+export default LoadingModal;
diff --git a/Frontend/sections/Logo.tsx b/Frontend/sections/Logo.tsx
new file mode 100644
index 0000000..fba6d24
--- /dev/null
+++ b/Frontend/sections/Logo.tsx
@@ -0,0 +1,33 @@
+import React from "react";
+import logo from "@/images/icon.svg";
+import Image from "next/image";
+
+interface LogoProps {
+ label?: string;
+}
+
+function Logo({ label }: LogoProps) {
+ return (
+
+ {/* */}
+
+ {label !== undefined ? (
+
+ {label}
+
+ ) : (
+ <>>
+ )}
+
+ );
+}
+
+export default Logo;
diff --git a/Frontend/sections/ModalLearnMore/ModalLearnMore.tsx b/Frontend/sections/ModalLearnMore/ModalLearnMore.tsx
new file mode 100644
index 0000000..2b6fb3b
--- /dev/null
+++ b/Frontend/sections/ModalLearnMore/ModalLearnMore.tsx
@@ -0,0 +1,63 @@
+"use client";
+
+import React, { useState } from "react";
+import SuccessModal from "../../sections/SuccessModal";
+import LoadingModal from "../../sections/LoadingModal";
+import xButton from "@/images/icon-x.svg";
+import ModalLearnMoreForm from "../../sections/ModalLearnMore/ModalLearnMoreForm";
+import Image from "next/image";
+import { ModalStatus } from "@/types";
+
+function ModalLearnMore() {
+ const [status, setStatus] = useState(ModalStatus.Default);
+ const whenModalOpens = () =>
+ setTimeout(() => setStatus(ModalStatus.Default), 500);
+
+ return (
+ <>
+
+
+
+
+ setStatus(ModalStatus.Default)}
+ htmlFor="learn-more-modal"
+ className="cursor-pointer"
+ >
+
+
+
+
+
+
+ Want to learn more? Get the no-nonsense facts straight from the
+ source
+
+
+ Enter your email and we will email you a copy of our Whitepaper
+
+
+
+
+
+ {status === ModalStatus.Success && }
+ {status === ModalStatus.Loading && }
+
+
+ >
+ );
+}
+
+export default ModalLearnMore;
diff --git a/Frontend/sections/ModalLearnMore/ModalLearnMoreForm.tsx b/Frontend/sections/ModalLearnMore/ModalLearnMoreForm.tsx
new file mode 100644
index 0000000..e28b538
--- /dev/null
+++ b/Frontend/sections/ModalLearnMore/ModalLearnMoreForm.tsx
@@ -0,0 +1,93 @@
+"use client";
+
+import React, { useState } from 'react';
+import { useForm } from 'react-hook-form';
+import { yupResolver } from "@hookform/resolvers/yup";
+import { learnMoreValidationSchema } from "@/utils/form";
+import { LearnMoreForm, ModalStatus, SourceModal } from '@/types';
+import { mailchimp } from "@/app/(auth)/actions";
+import { toast } from 'react-toastify';
+
+interface ModalLearnMoreFormProps {
+ setStatus: React.Dispatch>;
+}
+
+const ModalLearnMoreForm = ({ setStatus }: ModalLearnMoreFormProps) => {
+ const [email, setEmail] = useState("");
+
+ const { register, handleSubmit, reset, formState: {errors} } = useForm({
+ resolver: yupResolver(learnMoreValidationSchema),
+ });
+
+ const submitForm = async (data: LearnMoreForm) => {
+ setEmail(data.email);
+ if (!data.email) {
+ return;
+ }
+ setStatus(ModalStatus.Loading);
+
+ try{
+ await sendMailchimpRequest(data);
+ setEmail("");
+ reset();
+ // await handleSendgridSubmit(data.email);
+ setStatus(ModalStatus.Success);
+ } catch(error) {
+ if (error instanceof Error){
+ toast.error(error.message, {
+ position: "bottom-left",
+ autoClose: 5000,
+ hideProgressBar: false,
+ closeOnClick: true,
+ pauseOnHover: true,
+ draggable: true,
+ progress: undefined,
+ theme: "colored",
+ });
+ }
+ setStatus(ModalStatus.Default);
+ }
+ }
+
+ const sendMailchimpRequest = async (data: LearnMoreForm) => {
+ console.log("sendMailchimpRequest call initiated");
+ await mailchimp({
+ email: data.email,
+ first_name: '',
+ last_name: '',
+ phone_number: '',
+ company_size: '',
+ source: SourceModal.LearnMore,
+ });
+ console.log("sendMailchimpRequest call success");
+ };
+
+ const handleSendgridSubmit = async (email: string) => {
+
+ const data = {
+ subscriberEmail: email,
+ };
+ //call to the Netlify Function you created
+ return fetch("./.netlify/functions/triggerLearnMoreEmail", {
+ method: "POST",
+ body: JSON.stringify({
+ subscriberEmail: data.subscriberEmail,
+ }),
+ });
+ };
+
+ return (
+
+
+
+ );
+};
+
+export default ModalLearnMoreForm;
\ No newline at end of file
diff --git a/Frontend/sections/ModalSignIn/ModalSignIn.tsx b/Frontend/sections/ModalSignIn/ModalSignIn.tsx
new file mode 100644
index 0000000..ea64303
--- /dev/null
+++ b/Frontend/sections/ModalSignIn/ModalSignIn.tsx
@@ -0,0 +1,74 @@
+"use client";
+
+import React, { useRef, useState } from "react";
+import xButton from "@/images/icon-x.svg";
+import useTextsBasedOnActivityState from "@/sections/ModalSignIn/useTextsBasedOnActivityState";
+import ModalSignInForm, {
+ FormRefMethods,
+} from "@/sections/ModalSignIn/ModalSignInForm";
+import SuccessModal from "@/sections/SuccessModal";
+import LoadingModal from "@/sections/LoadingModal";
+import Image from "next/image";
+import { ModalStatus } from "@/types";
+
+function ModalSignIn() {
+ const [status, setStatus] = useState(ModalStatus.Default);
+ const { textOnUse, whenModalOpens } = useTextsBasedOnActivityState(setStatus);
+ const formRef = useRef(null);
+ const handleCloseModal = () => {
+ if (formRef.current) {
+ formRef.current.resetForm();
+ }
+ setStatus(ModalStatus.Default);
+ };
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+ {textOnUse.title}
+
+
+ {textOnUse.subTitle}
+
+
+
+
+ {status === ModalStatus.Success && }
+ {status === ModalStatus.Loading && }
+
+
+ >
+ );
+}
+
+export default ModalSignIn;
diff --git a/Frontend/sections/ModalSignIn/ModalSignInForm.tsx b/Frontend/sections/ModalSignIn/ModalSignInForm.tsx
new file mode 100644
index 0000000..e860f1e
--- /dev/null
+++ b/Frontend/sections/ModalSignIn/ModalSignInForm.tsx
@@ -0,0 +1,117 @@
+"use client";
+
+import React, { useState, forwardRef, useImperativeHandle } from "react";
+import { useForm } from "react-hook-form";
+import { yupResolver } from "@hookform/resolvers/yup";
+import { signInValidationSchema } from "@/utils/form";
+import { login } from "@/app/(auth)/actions";
+import { ModalStatus, SignInForm, TextOnUse } from "@/types";
+import { useRouter } from "next/navigation";
+export interface FormRefMethods {
+ resetForm: () => void;
+}
+
+interface ModalSignInFormProps {
+ textOnUse: TextOnUse;
+ setStatus: React.Dispatch>;
+}
+
+const ModalSignInForm = forwardRef(
+ ({ textOnUse, setStatus }: ModalSignInFormProps, ref) => {
+ // const context = useContext(Context);
+ const [email, setEmail] = useState("");
+ const [password, setPassword] = useState("");
+ const [organisation, setOrganisation] = useState("");
+ const router = useRouter();
+
+ const {
+ register,
+ handleSubmit,
+ reset,
+ setError,
+ clearErrors,
+ formState: { errors },
+ } = useForm({
+ resolver: yupResolver(signInValidationSchema),
+ });
+
+ const submitForm = async (data: SignInForm) => {
+ console.log("data", data);
+ clearErrors();
+ setEmail(data.email);
+ setPassword(!data.password ? "" : data.password);
+ setStatus(ModalStatus.Loading);
+ if (!data.password) return;
+ let response = undefined;
+ try {
+ console.log("before login");
+ response = await login({ email: data.email, password: data.password });
+ if (!response.success) {
+ throw new Error(response.error);
+ }
+ const signInModal = document.getElementById("sign-in-modal");
+ if (!!signInModal) signInModal.click();
+ router.push("/account");
+ } catch (error) {
+ setStatus(ModalStatus.Default);
+ console.log(error);
+ setError("email", { type: "custom", message: "Invalid Credentials" });
+ }
+ };
+ useImperativeHandle(ref, () => ({
+ resetForm: () => {
+ reset();
+ setEmail("");
+ setPassword("");
+ setOrganisation("");
+ },
+ }));
+ return (
+
+ );
+ }
+);
+ModalSignInForm.displayName = "ModalSignInForm";
+
+export default ModalSignInForm;
diff --git a/Frontend/sections/ModalSignIn/useTextsBasedOnActivityState.tsx b/Frontend/sections/ModalSignIn/useTextsBasedOnActivityState.tsx
new file mode 100644
index 0000000..bf23cc4
--- /dev/null
+++ b/Frontend/sections/ModalSignIn/useTextsBasedOnActivityState.tsx
@@ -0,0 +1,32 @@
+import { ModalStatus } from '@/types';
+import { useState } from 'react';
+
+function useTextsBasedOnActivityState(setStatus: React.Dispatch>){
+ const signInTexts = {
+ title: "Welcome Back!",
+ subTitle: "We missed you! Please sign in.",
+ buttonText: "Sign In",
+ netlifyFunction: "triggerSignInEmail"
+ }
+
+ const [textOnUse, setTextOnUse] = useState(signInTexts)
+
+ const whenModalOpens = () => {
+ const signInModal = document.getElementById("sign-in-modal");
+ if (!signInModal) return;
+ const nameAttribute = signInModal.getAttribute("name");
+ switch(nameAttribute){
+ case "signIn":
+ setTextOnUse(signInTexts);
+ break;
+ default:
+ setTextOnUse(signInTexts);
+ break;
+ }
+ setTimeout(() => setStatus(ModalStatus.Default), 500);
+ }
+
+ return {textOnUse, whenModalOpens}
+}
+
+export default useTextsBasedOnActivityState;
\ No newline at end of file
diff --git a/Frontend/sections/ModalSignUp/ModalSignUp.tsx b/Frontend/sections/ModalSignUp/ModalSignUp.tsx
new file mode 100644
index 0000000..31189ef
--- /dev/null
+++ b/Frontend/sections/ModalSignUp/ModalSignUp.tsx
@@ -0,0 +1,79 @@
+"use client";
+
+import React, { useRef, useState } from "react";
+import xButton from "@/images/icon-x.svg";
+import useTextsBasedOnActivityState from "./useTextsBasedOnActivityState";
+import ModalSignUpForm from "./ModalSignUpForm";
+import SuccessModal from "@/sections/SuccessModal";
+import LoadingModal from "@/sections/LoadingModal";
+import Image from "next/image";
+import { ModalStatus } from "@/types";
+import { FormRefMethods } from "../ModalSignIn/ModalSignInForm";
+
+function ModalSignUp() {
+ const [status, setStatus] = useState(ModalStatus.Default);
+ const { textOnUse, companySizeList, whenModalOpens, getPriceId } =
+ useTextsBasedOnActivityState(setStatus);
+ const formRef = useRef(null);
+ const handleCloseModal = () => {
+ if (formRef.current) {
+ formRef.current.resetForm();
+ }
+ setStatus(ModalStatus.Default);
+ };
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+ {textOnUse.title}
+
+
+ {textOnUse.subTitle}
+
+
+
+
+
+ {status === ModalStatus.Success && }
+ {status === ModalStatus.Loading && }
+
+
+ >
+ );
+}
+
+export default ModalSignUp;
diff --git a/Frontend/sections/ModalSignUp/ModalSignUpForm.tsx b/Frontend/sections/ModalSignUp/ModalSignUpForm.tsx
new file mode 100644
index 0000000..e4fbd51
--- /dev/null
+++ b/Frontend/sections/ModalSignUp/ModalSignUpForm.tsx
@@ -0,0 +1,317 @@
+"use client";
+
+import React, {
+ forwardRef,
+ useEffect,
+ useImperativeHandle,
+ useState,
+} from "react";
+import { useForm } from "react-hook-form";
+import { yupResolver } from "@hookform/resolvers/yup";
+import { signUpValidationSchema } from "@/utils/form";
+import {
+ login,
+ signup,
+ createCheckoutSession,
+ mailchimp,
+} from "@/app/(auth)/actions";
+import { CheckoutSession, ModalStatus, SignUpForm, TextOnUse } from "@/types";
+import { toast } from "react-toastify";
+import { useRouter } from "next/navigation";
+import { FormRefMethods } from "../ModalSignIn/ModalSignInForm";
+
+interface ModalSignUpFormProps {
+ generateCheckoutSession: boolean;
+ textOnUse: TextOnUse;
+ companySizeList: string[];
+ setStatus: React.Dispatch>;
+ getPriceId: () => string | undefined;
+}
+
+const ModalSignUpForm = forwardRef(
+ (
+ {
+ generateCheckoutSession,
+ companySizeList,
+ textOnUse,
+ setStatus,
+ getPriceId,
+ }: ModalSignUpFormProps,
+ ref
+ ) => {
+ const router = useRouter();
+ const [email, setEmail] = useState("");
+ const [password, setPassword] = useState("");
+ const [organisation, setOrganisation] = useState("");
+
+ const {
+ register,
+ handleSubmit,
+ reset,
+ formState: { errors },
+ } = useForm({
+ resolver: yupResolver(signUpValidationSchema),
+ });
+
+ const submitForm = async (data: SignUpForm) => {
+ setEmail(data.email);
+ setPassword(data.password!);
+ setOrganisation(data.organisation);
+ setStatus(ModalStatus.Loading);
+ try {
+ await sendMailchimpRequest(data);
+ await sendSignUpRequest(data);
+ await sendSignInRequest(data);
+ const price_id = getPriceId();
+ console.log("price_id", price_id);
+ const checkoutSession = await checkoutSessionRequest(price_id);
+ setEmail("");
+ setPassword("");
+ setOrganisation("");
+ reset();
+ setStatus(ModalStatus.Success);
+ if (!!checkoutSession) {
+ router.push(checkoutSession.url);
+ }
+ } catch (error) {
+ if (error instanceof Error) {
+ toast.error(error.message, {
+ position: "bottom-left",
+ autoClose: 5000,
+ hideProgressBar: false,
+ closeOnClick: true,
+ pauseOnHover: true,
+ draggable: true,
+ progress: undefined,
+ theme: "colored",
+ });
+ }
+ setStatus(ModalStatus.Default);
+ }
+ };
+
+ const sendMailchimpRequest = async (data: SignUpForm) => {
+ console.log("sendMailchimpRequest call initiated");
+ await mailchimp({
+ email: data.email,
+ first_name: data.first_name,
+ last_name: data.last_name,
+ phone_number: !data.phone_number ? "" : data.phone_number,
+ company_size: data.company_size,
+ source: textOnUse.source,
+ });
+ console.log("sendMailchimpRequest call success");
+ };
+
+ const checkoutSessionRequest = async (price_id?: string) => {
+ if (!price_id) {
+ return;
+ }
+ console.log("createCheckoutSession call initiated");
+ const checkoutSession = await createCheckoutSession(price_id);
+ console.log("createCheckoutSession successful");
+ return checkoutSession;
+ };
+
+ const sendSignUpRequest = async (data: SignUpForm) => {
+ try {
+ console.log("Signup call initiated");
+ await signup(data);
+ console.log("Signup successful");
+ } catch (error) {
+ if (error instanceof Error) {
+ console.error(
+ "Error during the signup or email process:",
+ error.message
+ );
+ }
+ throw error; // This will allow your .catch block outside this function to capture the error
+ }
+ };
+
+ const sendSignInRequest = async (data: SignUpForm) => {
+ try {
+ console.log("SignIn call initiated");
+ await login({ email: data.email, password: data.password! });
+ console.log("SignIn successful");
+ } catch (error) {
+ if (error instanceof Error) {
+ console.error(
+ "Error during the SignIn or email process:",
+ error.message
+ );
+ }
+ throw error; // This will allow your .catch block outside this function to capture the error
+ }
+ };
+ useImperativeHandle(ref, () => ({
+ resetForm: () => {
+ reset();
+ setEmail("");
+ setPassword("");
+ setOrganisation("");
+ },
+ }));
+
+ return (
+
+ );
+ }
+);
+
+ModalSignUpForm.displayName = "ModalSignUpForm";
+export default ModalSignUpForm;
diff --git a/Frontend/sections/ModalSignUp/useTextsBasedOnActivityState.tsx b/Frontend/sections/ModalSignUp/useTextsBasedOnActivityState.tsx
new file mode 100644
index 0000000..7b90895
--- /dev/null
+++ b/Frontend/sections/ModalSignUp/useTextsBasedOnActivityState.tsx
@@ -0,0 +1,82 @@
+import { ModalStatus, SourceModal } from '@/types';
+import { useState } from 'react';
+
+function useTextsBasedOnActivityState(setStatus: React.Dispatch>){
+ const signUpTexts = {
+ title: "We Are Growing Fast, and We Want You To Join The Party!",
+ subTitle: "Join our super awesome waitlist and be one of the first to know when spots open up!",
+ buttonText: "Sign Up",
+ netlifyFunction: "triggerSignUpEmail",
+ source: SourceModal.SignUp
+ }
+
+ const signUpViaPurchaseTexts = {
+ title: "Get Ready For Ultimate Productivity",
+ subTitle: "Excited to see what we've got! Signup and get started!",
+ buttonText: "Sign Up",
+ netlifyFunction: "triggerSignUpEmail",
+ source: SourceModal.SignUpViaPurchase
+ }
+
+ const bookDemoTexts = {
+ title: "Get Ready For Ultimate Productivity",
+ subTitle: "Excited to see what we've got! Signup and get started!",
+ buttonText: "Book Now",
+ netlifyFunction: "triggerBookNowEmail",
+ source: SourceModal.BookDemo
+ }
+
+ const TryItTexts = {
+ title: "Get Ready For Ultimate Productivity",
+ subTitle: "Excited to see what we've got! Send us your details and our marketing rep will schedule a demo ASAP.",
+ buttonText: "Try It",
+ netlifyFunction: "triggerBookNowEmail",
+ source: SourceModal.TryIt
+ }
+
+ const [textOnUse, setTextOnUse] = useState(signUpTexts)
+
+ const companySizeList = [
+ "1-10 employees",
+ "10-30 employees",
+ "30-70 employees",
+ "70-100 employees",
+ "100+ employees"
+ ]
+
+ const whenModalOpens = () => {
+ const signUpModal = document.getElementById("sign-up-modal");
+ if (!signUpModal) return;
+ const nameAttribute = signUpModal.getAttribute("name");
+ switch(nameAttribute){
+ case SourceModal.BookDemo:
+ setTextOnUse(bookDemoTexts);
+ break;
+ case SourceModal.TryIt:
+ setTextOnUse(TryItTexts);
+ break;
+ case SourceModal.SignUp:
+ setTextOnUse(signUpTexts);
+ break;
+ case SourceModal.SignUpViaPurchase:
+ setTextOnUse(signUpViaPurchaseTexts)
+ break;
+ default:
+ setTextOnUse(bookDemoTexts);
+ break;
+ }
+ setTimeout(() => setStatus(ModalStatus.Default), 500);
+ }
+
+ const getPriceId = () => {
+ const signUpModal = document.getElementById("sign-up-modal");
+ if (!signUpModal) return undefined;
+ const price_id = signUpModal.getAttribute("price_id");
+ if (!price_id) return undefined;
+ return price_id;
+ }
+
+ return {textOnUse, companySizeList, whenModalOpens, getPriceId}
+}
+
+export default useTextsBasedOnActivityState;
\ No newline at end of file
diff --git a/Frontend/sections/Newsletter/Newsletter.tsx b/Frontend/sections/Newsletter/Newsletter.tsx
new file mode 100644
index 0000000..d40db06
--- /dev/null
+++ b/Frontend/sections/Newsletter/Newsletter.tsx
@@ -0,0 +1,23 @@
+"use client";
+import React from "react";
+import NewsletterForm from "./NewsletterForm";
+
+function Newsletter() {
+ return (
+
+ );
+}
+
+export default Newsletter;
diff --git a/Frontend/sections/Newsletter/NewsletterForm.tsx b/Frontend/sections/Newsletter/NewsletterForm.tsx
new file mode 100644
index 0000000..97dd30b
--- /dev/null
+++ b/Frontend/sections/Newsletter/NewsletterForm.tsx
@@ -0,0 +1,122 @@
+"use client";
+
+import React, { useState } from 'react';
+import { NewsLetterForm, SourceModal } from '@/types';
+import { mailchimp } from "@/app/(auth)/actions";
+import { toast } from 'react-toastify';
+import { ModalStatus } from '@/types';
+import IconLoading from '@/images/IconLoading';
+import Button from '@/components/Button';
+
+const NewsletterForm = () => {
+
+ const [status, setStatus] = useState(ModalStatus.Default);
+ const [email, setEmail] = useState('');
+
+ const submitForm = async (event: React.FormEvent) => {
+ event.preventDefault();
+ try{
+ if (!email) {
+ throw Error("Email is Empty");
+ }
+ if (email.indexOf("@") === -1) {
+ throw Error("Email is invalid");
+ }
+ setStatus(ModalStatus.Loading);
+ const formData = {
+ email: email,
+ first_name: '',
+ last_name: '',
+ phone_number: '',
+ company_size: '',
+ source: SourceModal.Newsletter,
+ }
+ await sendMailchimpRequest(formData);
+ // await handleSendgridSubmit(formData.email);
+ setStatus(ModalStatus.Success);
+ } catch(error) {
+ if (error instanceof Error){
+ toast.error(error.message, {
+ position: "bottom-left",
+ autoClose: 5000,
+ hideProgressBar: false,
+ closeOnClick: true,
+ pauseOnHover: true,
+ draggable: true,
+ progress: undefined,
+ theme: "colored",
+ });
+ }
+ setStatus(ModalStatus.Default);
+ }
+ }
+
+ const sendMailchimpRequest = async (data: NewsLetterForm) => {
+ console.log("sendMailchimpRequest call initiated");
+ await mailchimp({
+ email: data.email,
+ first_name: '',
+ last_name: '',
+ phone_number: '',
+ company_size: '',
+ source: data.source,
+ });
+ console.log("sendMailchimpRequest call success");
+ };
+
+ const handleSendgridSubmit = async (email: string) => {
+ const data = {
+ subscriberEmail: email,
+ };
+ //call to the Netlify Function you created
+ return fetch("./.netlify/functions/triggerLearnMoreEmail", {
+ method: "POST",
+ body: JSON.stringify({
+ subscriberEmail: data.subscriberEmail,
+ }),
+ });
+ };
+
+ return (
+
+ <>
+
+
{status !== ModalStatus.Success ? "Stay Ahead of the Curve" : "Thanks for subscribing"}
+
{status !== ModalStatus.Success ? "Join our newsletter to get top news before anyone else." : "You are going to love what we have to show you"}
+
+
+
+
+
+
+ >
+
+ );
+};
+
+export default NewsletterForm;
\ No newline at end of file
diff --git a/Frontend/sections/PageHeader.tsx b/Frontend/sections/PageHeader.tsx
new file mode 100644
index 0000000..a0b7577
--- /dev/null
+++ b/Frontend/sections/PageHeader.tsx
@@ -0,0 +1,16 @@
+import React, { ReactNode } from "react";
+
+interface PageHeaderProps {
+ title: string;
+ subtitle: ReactNode;
+}
+function PageHeader({ title, subtitle }: PageHeaderProps) {
+ return (
+
+
{title}
+ {subtitle}
+
+ );
+}
+
+export default PageHeader;
diff --git a/Frontend/sections/PageIllustration.tsx b/Frontend/sections/PageIllustration.tsx
new file mode 100644
index 0000000..85d7b8f
--- /dev/null
+++ b/Frontend/sections/PageIllustration.tsx
@@ -0,0 +1,18 @@
+import React from 'react';
+
+function PageIllustration() {
+ return (
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+export default PageIllustration;
\ No newline at end of file
diff --git a/Frontend/sections/SuccessModal.tsx b/Frontend/sections/SuccessModal.tsx
new file mode 100644
index 0000000..ce46176
--- /dev/null
+++ b/Frontend/sections/SuccessModal.tsx
@@ -0,0 +1,16 @@
+import React from 'react';
+import CheckBox from "@/images/check-box.svg";
+import Image from "next/image"
+
+function SuccessModal() {
+ return (
+
+
+
Thanks for Signing Up!
+
We Hope You Are Excited To See
+
Sign365 In Action
+
+ );
+}
+
+export default SuccessModal
\ No newline at end of file
diff --git a/Frontend/sections/Testimonial.tsx b/Frontend/sections/Testimonial.tsx
new file mode 100644
index 0000000..b2ffb8d
--- /dev/null
+++ b/Frontend/sections/Testimonial.tsx
@@ -0,0 +1,40 @@
+import React from "react";
+
+export const Testimonial = () => {
+ return (
+
+
+
+
+
+
+
+
+ Taken our charity{"'"}s data automation to the next level.
+
+
+
+
+
+
+
+ );
+};
diff --git a/Frontend/styles/additional-styles/range-slider.css b/Frontend/styles/additional-styles/range-slider.css
new file mode 100644
index 0000000..6a10824
--- /dev/null
+++ b/Frontend/styles/additional-styles/range-slider.css
@@ -0,0 +1,57 @@
+/* Range slider */
+:root {
+ --range-thumb-size: 36px;
+}
+
+input[type=range] {
+ appearance: none;
+ background: #ccc;
+ border-radius: 3px;
+ height: 6px;
+ margin-top: (--range-thumb-size - 6px) * 0.5;
+ margin-bottom: (--range-thumb-size - 6px) * 0.5;
+ --thumb-size: #{--range-thumb-size};
+}
+
+input[type=range]::-webkit-slider-thumb {
+ appearance: none;
+ -webkit-appearance: none;
+ background-color: #000;
+ background-image: url("data:image/svg+xml,%3Csvg width='12' height='8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 .5v7L12 4zM0 4l4 3.5v-7z' fill='%23FFF' fill-rule='nonzero'/%3E%3C/svg%3E");
+ background-position: center;
+ background-repeat: no-repeat;
+ border: 0;
+ border-radius: 50%;
+ cursor: pointer;
+ height: --range-thumb-size;
+ width: --range-thumb-size;
+}
+
+input[type=range]::-moz-range-thumb {
+ background-color: #000;
+ background-image: url("data:image/svg+xml,%3Csvg width='12' height='8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 .5v7L12 4zM0 4l4 3.5v-7z' fill='%23FFF' fill-rule='nonzero'/%3E%3C/svg%3E");
+ background-position: center;
+ background-repeat: no-repeat;
+ border: 0;
+ border: none;
+ border-radius: 50%;
+ cursor: pointer;
+ height: --range-thumb-size;
+ width: --range-thumb-size;
+}
+
+input[type=range]::-ms-thumb {
+ background-color: #000;
+ background-image: url("data:image/svg+xml,%3Csvg width='12' height='8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 .5v7L12 4zM0 4l4 3.5v-7z' fill='%23FFF' fill-rule='nonzero'/%3E%3C/svg%3E");
+ background-position: center;
+ background-repeat: no-repeat;
+ border: 0;
+ border-radius: 50%;
+ cursor: pointer;
+ height: --range-thumb-size;
+ width: --range-thumb-size;
+}
+
+input[type=range]::-moz-focus-outer {
+ border: 0;
+}
\ No newline at end of file
diff --git a/Frontend/styles/additional-styles/theme.css b/Frontend/styles/additional-styles/theme.css
new file mode 100644
index 0000000..83c548e
--- /dev/null
+++ b/Frontend/styles/additional-styles/theme.css
@@ -0,0 +1,152 @@
+.form-input:focus,
+.form-textarea:focus,
+.form-multiselect:focus,
+.form-select:focus,
+.form-checkbox:focus,
+.form-radio:focus {
+ @apply ring-0;
+}
+
+/* Hamburger button */
+.hamburger svg > *:nth-child(1),
+.hamburger svg > *:nth-child(2),
+.hamburger svg > *:nth-child(3) {
+ transform-origin: center;
+ transform: rotate(0deg);
+}
+
+.hamburger svg > *:nth-child(1) {
+ transition: y 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19), opacity 0.1s ease-in;
+}
+
+.hamburger svg > *:nth-child(2) {
+ transition: transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19);
+}
+
+.hamburger svg > *:nth-child(3) {
+ transition: y 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19), width 0.1s 0.25s ease-in;
+}
+
+.hamburger.active svg > *:nth-child(1) {
+ opacity: 0;
+ y: 11;
+ transform: rotate(225deg);
+ transition: y 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1), opacity 0.1s 0.12s ease-out;
+}
+
+.hamburger.active svg > *:nth-child(2) {
+ transform: rotate(225deg);
+ transition: transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1);
+}
+
+.hamburger.active svg > *:nth-child(3) {
+ y: 11;
+ transform: rotate(135deg);
+ transition: y 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1), width 0.1s ease-out;
+}
+
+/* Pulsing animation */
+@keyframes pulseLoop {
+ 0% { opacity: 0; transform: scale(0.1) translateZ(0); }
+ 40% { opacity: 1; }
+ 60% { opacity: 1; }
+ 100% { opacity: 0; transform: scale(2) translateZ(0); }
+}
+.pulse {
+ transform: scale(0.1);
+ opacity: 0;
+ transform-origin: center;
+ animation: pulseLoop 8000ms linear infinite;
+}
+.pulse-1 {
+ animation-delay: -2000ms;
+}
+.pulse-2 {
+ animation-delay: -4000ms;
+}
+.pulse-3 {
+ animation-delay: -6000ms;
+}
+
+/* Custom AOS distance */
+@media screen {
+ html:not(.no-js) [data-aos=fade-up] {
+ -webkit-transform: translate3d(0, 10px, 0);
+ transform: translate3d(0, 10px, 0);
+ }
+
+ html:not(.no-js) [data-aos=fade-down] {
+ -webkit-transform: translate3d(0, -10px, 0);
+ transform: translate3d(0, -10px, 0);
+ }
+
+ html:not(.no-js) [data-aos=fade-right] {
+ -webkit-transform: translate3d(-10px, 0, 0);
+ transform: translate3d(-10px, 0, 0);
+ }
+
+ html:not(.no-js) [data-aos=fade-left] {
+ -webkit-transform: translate3d(10px, 0, 0);
+ transform: translate3d(10px, 0, 0);
+ }
+
+ html:not(.no-js) [data-aos=fade-up-right] {
+ -webkit-transform: translate3d(-10px, 10px, 0);
+ transform: translate3d(-10px, 10px, 0);
+ }
+
+ html:not(.no-js) [data-aos=fade-up-left] {
+ -webkit-transform: translate3d(10px, 10px, 0);
+ transform: translate3d(10px, 10px, 0);
+ }
+
+ html:not(.no-js) [data-aos=fade-down-right] {
+ -webkit-transform: translate3d(-10px, -10px, 0);
+ transform: translate3d(-10px, -10px, 0);
+ }
+
+ html:not(.no-js) [data-aos=fade-down-left] {
+ -webkit-transform: translate3d(10px, -10px, 0);
+ transform: translate3d(10px, -10px, 0);
+ }
+
+ html:not(.no-js) [data-aos=zoom-in-up] {
+ -webkit-transform: translate3d(0, 10px, 0) scale(.6);
+ transform: translate3d(0, 10px, 0) scale(.6);
+ }
+
+ html:not(.no-js) [data-aos=zoom-in-down] {
+ -webkit-transform: translate3d(0, -10px, 0) scale(.6);
+ transform: translate3d(0, -10px, 0) scale(.6);
+ }
+
+ html:not(.no-js) [data-aos=zoom-in-right] {
+ -webkit-transform: translate3d(-10px, 0, 0) scale(.6);
+ transform: translate3d(-10px, 0, 0) scale(.6);
+ }
+
+ html:not(.no-js) [data-aos=zoom-in-left] {
+ -webkit-transform: translate3d(10px, 0, 0) scale(.6);
+ transform: translate3d(10px, 0, 0) scale(.6);
+ }
+
+ html:not(.no-js) [data-aos=zoom-out-up] {
+ -webkit-transform: translate3d(0, 10px, 0) scale(1.2);
+ transform: translate3d(0, 10px, 0) scale(1.2);
+ }
+
+ html:not(.no-js) [data-aos=zoom-out-down] {
+ -webkit-transform: translate3d(0, -10px, 0) scale(1.2);
+ transform: translate3d(0, -10px, 0) scale(1.2);
+ }
+
+ html:not(.no-js) [data-aos=zoom-out-right] {
+ -webkit-transform: translate3d(-10px, 0, 0) scale(1.2);
+ transform: translate3d(-10px, 0, 0) scale(1.2);
+ }
+
+ html:not(.no-js) [data-aos=zoom-out-left] {
+ -webkit-transform: translate3d(10px, 0, 0) scale(1.2);
+ transform: translate3d(10px, 0, 0) scale(1.2);
+ }
+}
\ No newline at end of file
diff --git a/Frontend/styles/additional-styles/toggle-switch.css b/Frontend/styles/additional-styles/toggle-switch.css
new file mode 100644
index 0000000..05b92ea
--- /dev/null
+++ b/Frontend/styles/additional-styles/toggle-switch.css
@@ -0,0 +1,27 @@
+/* Switch element */
+.form-switch {
+ @apply relative select-none;
+ width: 60px;
+}
+
+.form-switch label {
+ @apply block overflow-hidden cursor-pointer h-8 rounded-full;
+}
+
+.form-switch label>span:first-child {
+ @apply absolute block rounded-full;
+ width: 28px;
+ height: 28px;
+ top: 2px;
+ left: 2px;
+ right: 50%;
+ transition: all .15s ease-out;
+}
+
+.form-switch input[type="checkbox"]:checked+label {
+ @apply bg-purple-600;
+}
+
+.form-switch input[type="checkbox"]:checked+label>span:first-child {
+ left: 30px;
+}
\ No newline at end of file
diff --git a/Frontend/styles/additional-styles/utility-patterns.css b/Frontend/styles/additional-styles/utility-patterns.css
new file mode 100644
index 0000000..f7f39df
--- /dev/null
+++ b/Frontend/styles/additional-styles/utility-patterns.css
@@ -0,0 +1,79 @@
+/* Typography */
+.h1 {
+ @apply text-4xl font-extrabold leading-tight tracking-tighter;
+}
+
+.h2 {
+ @apply text-3xl font-extrabold leading-tight tracking-tighter;
+}
+
+.h3 {
+ @apply text-3xl font-bold leading-tight;
+}
+
+.h4 {
+ @apply text-2xl font-bold leading-snug tracking-tight;
+}
+
+@screen md {
+ .h1 {
+ @apply text-5xl;
+ }
+
+ .h2 {
+ @apply text-4xl;
+ }
+}
+
+/* Buttons */
+.btn,
+.btn-sm {
+ @apply font-medium inline-flex items-center justify-center border border-transparent rounded-sm leading-snug transition duration-150 ease-in-out;
+}
+
+.btn {
+ @apply px-8 py-3;
+}
+
+.btn-sm {
+ @apply px-4 py-2;
+}
+
+/* Forms */
+.form-input,
+.form-textarea,
+.form-multiselect,
+.form-select,
+.form-checkbox,
+.form-radio {
+ @apply bg-transparent border border-gray-700 focus:border-gray-500;
+}
+
+.form-input,
+.form-textarea,
+.form-multiselect,
+.form-select,
+.form-checkbox {
+ @apply rounded-sm;
+}
+
+.form-input,
+.form-textarea,
+.form-multiselect,
+.form-select {
+ @apply py-3 px-4;
+}
+
+.form-input,
+.form-textarea {
+ @apply placeholder-gray-500;
+}
+
+.form-select {
+ @apply pr-10;
+}
+
+.form-checkbox,
+.form-radio {
+ @apply text-purple-600;
+}
\ No newline at end of file
diff --git a/Frontend/styles/style.css b/Frontend/styles/style.css
new file mode 100644
index 0000000..b93efe9
--- /dev/null
+++ b/Frontend/styles/style.css
@@ -0,0 +1,49 @@
+@import url('https://fonts.googleapis.com/css2?family=Architects+Daughter&family=Inter:wght@400;500;600;700;800;900&display=fallback');
+@import url('https://fonts.googleapis.com/css2?family=Arimo:wght@400;500;600;700;800;900&display=fallback');
+
+@import 'tailwindcss/base';
+@import 'tailwindcss/components';
+
+/* Additional styles */
+@import 'additional-styles/utility-patterns.css';
+@import 'additional-styles/range-slider.css';
+@import 'additional-styles/toggle-switch.css';
+@import 'additional-styles/theme.css';
+
+@import 'tailwindcss/utilities';
+
+/* Additional Tailwind directives: https://tailwindcss.com/docs/functions-and-directives/#responsive */
+@layer utilities {
+ .rtl {
+ direction: rtl;
+ }
+}
+
+/* See Alpine.js: https://github.com/alpinejs/alpine#x-cloak */
+[x-cloak=""] {
+ display: none;
+}
+
+input:-webkit-autofill,
+input:-webkit-autofill:hover,
+input:-webkit-autofill:focus,
+textarea:-webkit-autofill,
+textarea:-webkit-autofill:hover,
+textarea:-webkit-autofill:focus,
+select:-webkit-autofill,
+select:-webkit-autofill:hover,
+select:-webkit-autofill:focus {
+-webkit-text-fill-color: #fff;
+/* -webkit-box-shadow: 0 0 0px 1000px #1b1b6c inset; */
+background-color: transparent!important;
+background: transparent!important;
+transition: background-color 5000s ease-in-out 0s;
+}
+
+body, .font-inter{
+ font-family: Arimo;
+}
+
+h1, h2, h3, p {
+ color: white;
+}
\ No newline at end of file
diff --git a/Frontend/tailwind.config.ts b/Frontend/tailwind.config.ts
new file mode 100644
index 0000000..d032565
--- /dev/null
+++ b/Frontend/tailwind.config.ts
@@ -0,0 +1,99 @@
+import type { Config } from "tailwindcss";
+const defaultTheme = require('tailwindcss/defaultTheme')
+
+const config: Config = {
+ content: [
+ "./pages/**/*.{js,ts,jsx,tsx,mdx}",
+ "./components/**/*.{js,ts,jsx,tsx,mdx}",
+ "./sections/**/*.{js,ts,jsx,tsx,mdx}",
+ "./app/**/*.{js,ts,jsx,tsx,mdx}",
+ './node_modules/preline/preline.js',
+ ],
+ theme: {
+ extend: {
+ colors: {
+ gray: {
+ 100: "#EBF1F5",
+ 200: "#D9E3EA",
+ 300: "#C5D2DC",
+ 400: "#9BA9B4",
+ 500: "#707D86",
+ 550: "#52485B",
+ 600: "#55595F",
+ 650: "#4c5058",
+ 700: "#33363A",
+ 800: "#25282C",
+ 825: "#34363A",
+ 850: "#383040",
+ 900: "#151719",
+ 925: "#191D24",
+ 950: "#000000"
+ },
+ purple: {
+ default: "#8000FF",
+ 100: "#F4F4FF",
+ 200: "#E2E1FF",
+ 300: "#CBCCFF",
+ 400: "#ABABFF",
+ 500: "#8D8DFF",
+ 600: "#5D5DFF",
+ 700: "#4B4ACF",
+ 800: "#38379C",
+ 900: "#262668",
+ },
+ pink: {
+ default: "#FF0DCA",
+ 500: "#D18DFF",
+ 550: "#8A4CC8",
+ 600: "#AB4FD7",
+ 700: "#7a2ec5",
+ 900: "#3C3445",
+ },
+ red: {
+ 300: "#C84C4C",
+ 600: "#8b2e2e"
+ }
+ },
+ spacing: {
+ "9/16": "56.25%",
+ "3/4": "75%",
+ "1/1": "100%",
+ },
+ fontFamily: {
+ 'primary': ['Raleway Variable', ...defaultTheme.fontFamily.sans],
+ 'secondary': ['Arimo Variable', ...defaultTheme.fontFamily.sans],
+ },
+ fontSize: {
+ xs: "0.75rem",
+ sm: "0.875rem",
+ base: "1rem",
+ lg: "1.125rem",
+ xl: "1.25rem",
+ "2xl": "1.5rem",
+ "3xl": "2rem",
+ "4xl": "2.5rem",
+ "5xl": "3.25rem",
+ "6xl": "4rem",
+ },
+ inset: {
+ full: "100%",
+ },
+ letterSpacing: {
+ tighter: "-0.02em",
+ tight: "-0.01em",
+ normal: "0",
+ wide: "0.01em",
+ wider: "0.02em",
+ widest: "0.4em",
+ },
+ minWidth: {
+ "10": "2.5rem",
+ },
+ scale: {
+ "98": ".98",
+ },
+ },
+ },
+ plugins: [require("@tailwindcss/forms"), require("daisyui"), require("@tailwindcss/typography"), require('preline/plugin')],
+};
+export default config;
diff --git a/Frontend/tsconfig.json b/Frontend/tsconfig.json
new file mode 100644
index 0000000..1e857d3
--- /dev/null
+++ b/Frontend/tsconfig.json
@@ -0,0 +1,42 @@
+{
+ "compilerOptions": {
+ "target": "es5",
+ "lib": [
+ "dom",
+ "dom.iterable",
+ "esnext"
+ ],
+ "allowJs": true,
+ "noImplicitAny": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "noEmit": true,
+ "esModuleInterop": true,
+ "module": "esnext",
+ "moduleResolution": "bundler",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "preserve",
+ "incremental": true,
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ],
+ "paths": {
+ "@/*": [
+ "./*"
+ ]
+ },
+ "forceConsistentCasingInFileNames": true
+ },
+ "include": [
+ "next-env.d.ts",
+ "**/*.ts",
+ "**/*.tsx",
+ ".next/types/**/*.ts"
+, "app/providers.js" ],
+ "exclude": [
+ "node_modules"
+ ]
+}
diff --git a/Frontend/types/index.ts b/Frontend/types/index.ts
new file mode 100644
index 0000000..915be50
--- /dev/null
+++ b/Frontend/types/index.ts
@@ -0,0 +1,308 @@
+export interface PostMetadata {
+ title: string;
+ date: string;
+ subtitle: string;
+ slug: string;
+ image: string;
+}
+
+// export type User = {
+// onClick: () => void;
+// text: string;
+// buttonColor: string;
+// buttonHover: string;
+// }
+
+export type TextOnUse = {
+ title: string;
+ subTitle: string;
+ buttonText: string;
+ netlifyFunction: string;
+ source?: SourceModal;
+};
+
+export type LearnMoreForm = {
+ email: string;
+}
+
+export type NewsLetterForm = {
+ email: string;
+ source: SourceModal;
+}
+
+export type SignInForm = {
+ email: string;
+ password?: string;
+}
+
+export type SignUpForm = {
+ email: string;
+ password?: string;
+ passwordConfirmation: string;
+ first_name: string;
+ last_name: string;
+ phone_number?: string;
+ company_size: string;
+ organisation: string;
+}
+
+export type LearnMoreValidationForm = {
+ EMAIL: string;
+ SOURCE: SourceModal;
+}
+export type SignInValidationForm = {
+ EMAIL: string;
+ SOURCE: SourceModal;
+}
+export type SignUpValidationForm = {
+ EMAIL: string;
+ FNAME: string;
+ LNAME: string;
+ PHONE: string;
+ CSIZE: string;
+ SOURCE: SourceModal;
+}
+
+export type Product = {
+ product_id: string;
+ active: boolean;
+ name: string;
+ description: string;
+ image: string;
+ metadata: {
+ benefits: string[];
+ };
+ product_order: number;
+ yearlyPrice: Price;
+ monthlyPrice: Price;
+}
+
+export type Price = {
+ id: string;
+ price_id: string;
+ product_id: string;
+ active: boolean;
+ description: string;
+ unit_amount: number;
+ currency: string;
+ type: string;
+ interval: string;
+ interval_count: number;
+ trial_period_day: number;
+ metadata: string;
+};
+
+export type CheckoutSession = {
+ after_expiration: null | string,
+ allow_promotion_codes: boolean,
+ amount_subtotal: number,
+ amount_total: number,
+ automatic_tax: {
+ enabled: boolean,
+ status: string
+ },
+ billing_address_collection: string,
+ cancel_url: string,
+ client_reference_id: string,
+ consent: string,
+ consent_collection: string,
+ created: number,
+ currency: string,
+ currency_conversion: null | string,
+ customer: {
+ address: null | string,
+ balance: number,
+ cash_balance: null | string,
+ created: number,
+ currency: string,
+ default_source: null | string,
+ deleted: boolean,
+ delinquent: boolean,
+ description: string,
+ discount: null | string,
+ email: string,
+ id: string,
+ invoice_credit_balance: null | string,
+ invoice_prefix: string,
+ invoice_settings: null | string,
+ livemode: boolean,
+ metadata: null | string,
+ name: string,
+ next_invoice_sequence: number,
+ object: string,
+ phone: string,
+ preferred_locales: null | string,
+ shipping: null | string,
+ sources: null | string,
+ subscriptions: null | string,
+ tax: null | string,
+ tax_exempt: string,
+ tax_ids: null | string,
+ test_clock: null | string
+ },
+ customer_creation: string,
+ customer_details: {
+ address: null | string,
+ email: string,
+ name: string,
+ phone: string,
+ tax_exempt: string,
+ tax_ids: null | string
+ },
+ customer_email: string,
+ custom_fields: [],
+ custom_text: {
+ shipping_address: null | string,
+ submit: null | string
+ },
+ expires_at: number,
+ id: string,
+ invoice: null | string,
+ invoice_creation: null | string,
+ line_items: null | string,
+ livemode: boolean,
+ locale: string,
+ metadata: {},
+ mode: string,
+ object: string,
+ payment_intent: null | string,
+ payment_link: null | string,
+ payment_method_collection: string,
+ payment_method_configuration_details: null | string,
+ payment_method_options: null | string,
+ payment_method_types: string[],
+ payment_status: string,
+ phone_number_collection: {
+ enabled: boolean
+ },
+ recovered_from: string,
+ setup_intent: null | string,
+ shipping_address_collection: null | string,
+ shipping_cost: null | string,
+ shipping_details: null | string,
+ shipping_options: [],
+ status: string,
+ submit_type: string,
+ subscription: null | string,
+ success_url: string,
+ tax_id_collection: null | string,
+ total_details: {
+ amount_discount: number,
+ amount_shipping: number,
+ amount_tax: number,
+ breakdown: null | string
+ },
+ url: string
+}
+
+export enum ModalStatus {
+ Success = 'success',
+ Loading = 'loading',
+ Default = 'default',
+}
+
+export enum SourceModal {
+ SignUp = 'SignUp',
+ SignUpViaPurchase = 'SignUpViaPurchase',
+ BookDemo = 'BookDemo',
+ LearnMore = 'LearnMore',
+ TryIt = 'TryIt',
+ Newsletter = 'Newsletter',
+}
+
+export type MailchimpSearchMemberResponse = {
+ exact_matches: {
+ members: MailchimpMember[];
+ total_items: number;
+ },
+ full_search: {
+ members: any[];
+ total_items: number;
+ },
+ _links: [
+ {
+ rel: string;
+ href: string;
+ method: string;
+ targetSchema: string;
+ }
+ ]
+}
+
+export type MailchimpMember = {
+ id: string,
+ email_address: string,
+ unique_email_id: string,
+ contact_id: string,
+ full_name: string,
+ web_id: number,
+ email_type: string,
+ status: string,
+}
+
+export type User = {
+ avatar: string;
+ billing_address: string;
+ collectionId: string;
+ collectionName: string;
+ created: string | Date;
+ displayName: string;
+ email: string;
+ emailVisibility: string;
+ firstName: string;
+ id: string
+ lastName: string | Date;
+ lastSeen: string;
+ organisation: string;
+ payment_method: string;
+ role: string;
+ updated: string | Date;
+ username: string;
+ verified: boolean;
+}
+
+export type Subscription = {
+ subscription_id: string,
+ user_id: string,
+ status: string,
+ price_id: string,
+ metadata: string,
+ quantity: number,
+ cancel_at_period_end: boolean,
+ current_period_start: string | Date,
+ current_period_end: string | Date,
+ ended_at: string | Date,
+ cancel_at: string | Date,
+ canceled_at: string | Date,
+ trial_start: string | Date,
+ trial_end:string | Date,
+ product: Product
+};
+
+export type SubscriptionSession = {
+ configuration: {
+ active: boolean,
+ application: null | string,
+ business_profile: null | string,
+ created: number,
+ default_return_url: string,
+ features: null | string,
+ id: string,
+ is_default: boolean,
+ livemode: boolean,
+ login_page: null | string,
+ metadata: null | string,
+ object: string,
+ updated: number
+ },
+ created: number,
+ customer: string,
+ flow: null | string,
+ id: string,
+ livemode: boolean,
+ locale: string,
+ object: string,
+ on_behalf_of: string,
+ return_url: string,
+ url: string
+}
\ No newline at end of file
diff --git a/Frontend/utils/form.ts b/Frontend/utils/form.ts
new file mode 100644
index 0000000..e93047b
--- /dev/null
+++ b/Frontend/utils/form.ts
@@ -0,0 +1,76 @@
+import * as Yup from "yup";
+import YupPassword from "yup-password";
+YupPassword(Yup);
+
+declare module "yup" {
+ interface StringSchema {
+ mobileNumberValidation(errorMessage: string): StringSchema;
+ }
+}
+
+const isValidMobileNumber = (mobileNumber: string | any[]) => {
+ if (mobileNumber.length < 8 || mobileNumber.length > 12) {
+ return {
+ success: false,
+ message: "Mobile Number should of 9 to 11 length",
+ };
+ } else if (isNaN(Number(mobileNumber))) {
+ return {
+ success: false,
+ message: "Mobile Number should only contain numbers",
+ };
+ }
+ return { success: true, message: "Valid Mobile Number" };
+};
+
+Yup.addMethod(Yup.string, "mobileNumberValidation", function (errorMessage) {
+ return this.test(`test-mobile-number`, errorMessage, function (value) {
+ const { path, createError } = this;
+ if (!value) {
+ return createError({ path, message: errorMessage });
+ }
+ const validation = isValidMobileNumber(value);
+ return (
+ (value && validation.success) ||
+ createError({ path, message: validation.message })
+ );
+ });
+});
+
+const signUpValidationSchema = Yup.object().shape({
+ first_name: Yup.string().required("First Name is required"),
+ last_name: Yup.string().required("Last Name is required"),
+ email: Yup.string().email().required("E-mail is required"),
+ phone_number: Yup.string()
+ .required("Phone Number is required")
+ .mobileNumberValidation("Phone Number is not valid"),
+ organisation: Yup.string().required("Organisation name is required"),
+ company_size: Yup.string().required("Company Size is required"),
+ password: Yup.string()
+ .password()
+ .required("Password is required.")
+ .min(8, "Password is too short - should be 8 characters minimum.")
+ .minUppercase(1, "password must contain at least 1 upper case letter"),
+ passwordConfirmation: Yup.string()
+ .required("Please retype your password.")
+ .oneOf([Yup.ref("password")], "Your passwords do not match."),
+});
+
+const learnMoreValidationSchema = Yup.object().shape({
+ email: Yup.string().email().required("E-mail is required"),
+});
+
+const signInValidationSchema = Yup.object().shape({
+ email: Yup.string().email().required("E-mail is required"),
+ password: Yup.string()
+ .password()
+ .required("Password is required.")
+ .min(8, "Password is too short - should be 8 characters minimum.")
+ .minUppercase(1, "password must contain at least 1 upper case letter"),
+});
+
+export {
+ learnMoreValidationSchema,
+ signUpValidationSchema,
+ signInValidationSchema,
+};
diff --git a/Frontend/utils/getPostMetaData.ts b/Frontend/utils/getPostMetaData.ts
new file mode 100644
index 0000000..7c9f20c
--- /dev/null
+++ b/Frontend/utils/getPostMetaData.ts
@@ -0,0 +1,28 @@
+import { PostMetadata } from "@/types";
+import fs from "fs";
+import matter from "gray-matter";
+import path from 'path'
+
+const getPostMetadata = (): PostMetadata[] => {
+ const folder = path.join(process.cwd(), '/blogs');
+ const files = fs.readdirSync(folder);
+ const markdownPosts = files.filter((file) => file.endsWith(".md"));
+
+ // Get gray-matter data from each file.
+ const posts = markdownPosts.map((fileName) => {
+ const fileContents = fs.readFileSync(`blogs/${fileName}`, "utf8");
+ const matterResult = matter(fileContents);
+ return {
+ title: matterResult.data.title,
+ date: matterResult.data.date,
+ author: matterResult.data.author,
+ subtitle: matterResult.data.subtitle,
+ slug: fileName.replace(".md", ""),
+ image: matterResult.data.image,
+ };
+ });
+
+ return posts;
+};
+
+export default getPostMetadata;