From 5e6adf4500660d0abf72e0354f7f55142d5be431 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Sat, 28 Sep 2024 17:16:01 -0700 Subject: [PATCH 001/353] boilerplate for mirror-2 --- LICENSE.txt | 2 + mirror-2/.env.example | 4 + mirror-2/.gitignore | 37 + mirror-2/.vscode/extensions.json | 3 + mirror-2/.vscode/settings.json | 23 + mirror-2/LICENSE.txt | 21 + mirror-2/README.md | 96 + .../app/(auth-pages)/forgot-password/page.tsx | 38 + mirror-2/app/(auth-pages)/layout.tsx | 9 + mirror-2/app/(auth-pages)/sign-in/page.tsx | 43 + mirror-2/app/(auth-pages)/sign-up/page.tsx | 48 + mirror-2/app/(auth-pages)/smtp-message.tsx | 25 + mirror-2/app/actions.ts | 130 ++ mirror-2/app/auth/callback/route.ts | 24 + mirror-2/app/favicon.ico | Bin 0 -> 25931 bytes mirror-2/app/globals.css | 69 + mirror-2/app/layout.tsx | 72 + mirror-2/app/opengraph-image.png | Bin 0 -> 289886 bytes mirror-2/app/page.tsx | 16 + mirror-2/app/protected/page.tsx | 38 + .../app/protected/reset-password/page.tsx | 38 + mirror-2/app/twitter-image.png | Bin 0 -> 289886 bytes mirror-2/components.json | 17 + mirror-2/components/deploy-button.tsx | 25 + mirror-2/components/env-var-warning.tsx | 33 + mirror-2/components/form-message.tsx | 24 + mirror-2/components/header-auth.tsx | 68 + mirror-2/components/hero.tsx | 44 + mirror-2/components/next-logo.tsx | 46 + mirror-2/components/submit-button.tsx | 23 + mirror-2/components/supabase-logo.tsx | 102 ++ mirror-2/components/theme-switcher.tsx | 78 + mirror-2/components/tutorial/code-block.tsx | 61 + .../tutorial/connect-supabase-steps.tsx | 62 + .../components/tutorial/fetch-data-steps.tsx | 96 + .../tutorial/sign-up-user-steps.tsx | 88 + .../components/tutorial/tutorial-step.tsx | 30 + .../components/typography/inline-code.tsx | 7 + mirror-2/components/ui/badge.tsx | 36 + mirror-2/components/ui/button.tsx | 56 + mirror-2/components/ui/checkbox.tsx | 30 + mirror-2/components/ui/dropdown-menu.tsx | 200 ++ mirror-2/components/ui/input.tsx | 25 + mirror-2/components/ui/label.tsx | 26 + mirror-2/lib/utils.ts | 6 + mirror-2/middleware.ts | 20 + mirror-2/next.config.js | 4 + mirror-2/package.json | 37 + mirror-2/postcss.config.js | 6 + mirror-2/supabase/.gitignore | 4 + mirror-2/supabase/config.toml | 239 +++ mirror-2/supabase/seed.sql | 0 mirror-2/tailwind.config.ts | 80 + mirror-2/tsconfig.json | 28 + mirror-2/utils/cn.ts | 6 + mirror-2/utils/supabase/check-env-vars.ts | 6 + mirror-2/utils/supabase/client.ts | 7 + mirror-2/utils/supabase/middleware.ts | 62 + mirror-2/utils/supabase/server.ts | 29 + mirror-2/utils/utils.ts | 16 + mirror-2/yarn.lock | 1617 +++++++++++++++++ 61 files changed, 4080 insertions(+) create mode 100644 mirror-2/.env.example create mode 100644 mirror-2/.gitignore create mode 100644 mirror-2/.vscode/extensions.json create mode 100644 mirror-2/.vscode/settings.json create mode 100644 mirror-2/LICENSE.txt create mode 100644 mirror-2/README.md create mode 100644 mirror-2/app/(auth-pages)/forgot-password/page.tsx create mode 100644 mirror-2/app/(auth-pages)/layout.tsx create mode 100644 mirror-2/app/(auth-pages)/sign-in/page.tsx create mode 100644 mirror-2/app/(auth-pages)/sign-up/page.tsx create mode 100644 mirror-2/app/(auth-pages)/smtp-message.tsx create mode 100644 mirror-2/app/actions.ts create mode 100644 mirror-2/app/auth/callback/route.ts create mode 100644 mirror-2/app/favicon.ico create mode 100644 mirror-2/app/globals.css create mode 100644 mirror-2/app/layout.tsx create mode 100644 mirror-2/app/opengraph-image.png create mode 100644 mirror-2/app/page.tsx create mode 100644 mirror-2/app/protected/page.tsx create mode 100644 mirror-2/app/protected/reset-password/page.tsx create mode 100644 mirror-2/app/twitter-image.png create mode 100644 mirror-2/components.json create mode 100644 mirror-2/components/deploy-button.tsx create mode 100644 mirror-2/components/env-var-warning.tsx create mode 100644 mirror-2/components/form-message.tsx create mode 100644 mirror-2/components/header-auth.tsx create mode 100644 mirror-2/components/hero.tsx create mode 100644 mirror-2/components/next-logo.tsx create mode 100644 mirror-2/components/submit-button.tsx create mode 100644 mirror-2/components/supabase-logo.tsx create mode 100644 mirror-2/components/theme-switcher.tsx create mode 100644 mirror-2/components/tutorial/code-block.tsx create mode 100644 mirror-2/components/tutorial/connect-supabase-steps.tsx create mode 100644 mirror-2/components/tutorial/fetch-data-steps.tsx create mode 100644 mirror-2/components/tutorial/sign-up-user-steps.tsx create mode 100644 mirror-2/components/tutorial/tutorial-step.tsx create mode 100644 mirror-2/components/typography/inline-code.tsx create mode 100644 mirror-2/components/ui/badge.tsx create mode 100644 mirror-2/components/ui/button.tsx create mode 100644 mirror-2/components/ui/checkbox.tsx create mode 100644 mirror-2/components/ui/dropdown-menu.tsx create mode 100644 mirror-2/components/ui/input.tsx create mode 100644 mirror-2/components/ui/label.tsx create mode 100644 mirror-2/lib/utils.ts create mode 100644 mirror-2/middleware.ts create mode 100644 mirror-2/next.config.js create mode 100644 mirror-2/package.json create mode 100644 mirror-2/postcss.config.js create mode 100644 mirror-2/supabase/.gitignore create mode 100644 mirror-2/supabase/config.toml create mode 100644 mirror-2/supabase/seed.sql create mode 100644 mirror-2/tailwind.config.ts create mode 100644 mirror-2/tsconfig.json create mode 100644 mirror-2/utils/cn.ts create mode 100644 mirror-2/utils/supabase/check-env-vars.ts create mode 100644 mirror-2/utils/supabase/client.ts create mode 100644 mirror-2/utils/supabase/middleware.ts create mode 100644 mirror-2/utils/supabase/server.ts create mode 100644 mirror-2/utils/utils.ts create mode 100644 mirror-2/yarn.lock diff --git a/LICENSE.txt b/LICENSE.txt index 3c2b95a1..363fca64 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,3 +1,5 @@ +The below licenses apply to everything in this repository with the exception of the /mirror-2 folder; for the mirror-2 folder, see /mirror-2/license.txt. + MIT License Copyright (c) 2022-present The Mirror Megaverse Inc. diff --git a/mirror-2/.env.example b/mirror-2/.env.example new file mode 100644 index 00000000..5e977a9e --- /dev/null +++ b/mirror-2/.env.example @@ -0,0 +1,4 @@ +# Update these with your Supabase details from your project settings > API +# https://app.supabase.com/project/_/settings/api +NEXT_PUBLIC_SUPABASE_URL=http://127.0.0.1:54321 +NEXT_PUBLIC_SUPABASE_ANON_KEY=SUPABASE_CLIENT_API_KEY diff --git a/mirror-2/.gitignore b/mirror-2/.gitignore new file mode 100644 index 00000000..00bba9bb --- /dev/null +++ b/mirror-2/.gitignore @@ -0,0 +1,37 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local +.env + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/mirror-2/.vscode/extensions.json b/mirror-2/.vscode/extensions.json new file mode 100644 index 00000000..74baffcc --- /dev/null +++ b/mirror-2/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["denoland.vscode-deno"] +} diff --git a/mirror-2/.vscode/settings.json b/mirror-2/.vscode/settings.json new file mode 100644 index 00000000..3ecdef9d --- /dev/null +++ b/mirror-2/.vscode/settings.json @@ -0,0 +1,23 @@ +{ + "deno.enablePaths": ["supabase/functions"], + "deno.lint": true, + "deno.unstable": [ + "bare-node-builtins", + "byonm", + "sloppy-imports", + "unsafe-proto", + "webgpu", + "broadcast-channel", + "worker-options", + "cron", + "kv", + "ffi", + "fs", + "http", + "net" + ], + "[typescript]": { + "editor.defaultFormatter": "denoland.vscode-deno" + }, + "typescript.tsdk": "node_modules/typescript/lib" +} diff --git a/mirror-2/LICENSE.txt b/mirror-2/LICENSE.txt new file mode 100644 index 00000000..d2ccd712 --- /dev/null +++ b/mirror-2/LICENSE.txt @@ -0,0 +1,21 @@ +Source Available License + +Copyright (c) 2024-Present The Mirror Megaverse Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, subject to the following conditions: + +1. Revenue Sharing Requirement +If any revenue is generated through the use of the Software, including but not limited to sales, in-game transactions, or any other form of monetization, the user agrees to pay a fee to the owner of the Software (“Company”). The fee structure and payment requirements are detailed on the Company’s website, and users are responsible for staying updated on any changes to these terms. + +2. Payment in Fiat Currency +If revenue is generated in fiat currency (e.g., USD, EUR), the user agrees to remit payments to the Company based on the fee structure listed on the Company’s website. Failure to comply with these payment terms will result in the revocation of the license. + +3. Payment in Cryptocurrency and Royalties for Non-Fungible Tokens +Cryptocurrency integrations are exclusive to the Reflekt version of the Software, a separate brand of The Mirror. In contrast, The Mirror version of the Software does not support cryptocurrency usage. This structure is designed to give developers the flexibility to choose between traditional web2 approaches and blockchain-integrated games. +• Direct Cryptocurrency Transactions: If revenue is generated directly through the Software in the form of cryptocurrency (e.g., in-game transactions, purchases, or other forms of monetization), the user agrees to pay a 10% fee on all such transactions. Payments must be made to the Company’s wallet address as specified on its website. Users are responsible for ensuring accurate and timely payments to the listed address. +• Non-Fungible Token Royalties: If the Software is used to issue or mint Non-Fungible Tokens (NFTs), the user agrees to pay a 10% royalty on all subsequent sales or transfers of the NFT, regardless of the marketplace or platform where the transaction occurs. If the NFT was minted outside of the platform and a transaction takes place using the Software, the user agrees to pay the same percent fee via direct cryptocurrency transfer to the company's wallet. + +4. Warranty Disclaimer +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +By using the Software, you agree to the terms outlined above. These terms are subject to change due to early versions of the Software and the team is open to feedback! diff --git a/mirror-2/README.md b/mirror-2/README.md new file mode 100644 index 00000000..53c555a6 --- /dev/null +++ b/mirror-2/README.md @@ -0,0 +1,96 @@ + + Next.js and Supabase Starter Kit - the fastest way to build apps with Next.js and Supabase +

Next.js and Supabase Starter Kit

+
+ +

+ The fastest way to build apps with Next.js and Supabase +

+ +

+ Features · + Demo · + Deploy to Vercel · + Clone and run locally · + Feedback and issues + More Examples +

+
+ +## Features + +- Works across the entire [Next.js](https://nextjs.org) stack + - App Router + - Pages Router + - Middleware + - Client + - Server + - It just works! +- supabase-ssr. A package to configure Supabase Auth to use cookies +- Styling with [Tailwind CSS](https://tailwindcss.com) +- Components with [shadcn/ui](https://ui.shadcn.com/) +- Optional deployment with [Supabase Vercel Integration and Vercel deploy](#deploy-your-own) + - Environment variables automatically assigned to Vercel project + +## Demo + +You can view a fully working demo at [demo-nextjs-with-supabase.vercel.app](https://demo-nextjs-with-supabase.vercel.app/). + +## Deploy to Vercel + +Vercel deployment will guide you through creating a Supabase account and project. + +After installation of the Supabase integration, all relevant environment variables will be assigned to the project so the deployment is fully functioning. + +[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fvercel%2Fnext.js%2Ftree%2Fcanary%2Fexamples%2Fwith-supabase&project-name=nextjs-with-supabase&repository-name=nextjs-with-supabase&demo-title=nextjs-with-supabase&demo-description=This+starter+configures+Supabase+Auth+to+use+cookies%2C+making+the+user%27s+session+available+throughout+the+entire+Next.js+app+-+Client+Components%2C+Server+Components%2C+Route+Handlers%2C+Server+Actions+and+Middleware.&demo-url=https%3A%2F%2Fdemo-nextjs-with-supabase.vercel.app%2F&external-id=https%3A%2F%2Fgithub.com%2Fvercel%2Fnext.js%2Ftree%2Fcanary%2Fexamples%2Fwith-supabase&demo-image=https%3A%2F%2Fdemo-nextjs-with-supabase.vercel.app%2Fopengraph-image.png) + +The above will also clone the Starter kit to your GitHub, you can clone that locally and develop locally. + +If you wish to just develop locally and not deploy to Vercel, [follow the steps below](#clone-and-run-locally). + +## Clone and run locally + +1. You'll first need a Supabase project which can be made [via the Supabase dashboard](https://database.new) + +2. Create a Next.js app using the Supabase Starter template npx command + + ```bash + npx create-next-app -e with-supabase + ``` + +3. Use `cd` to change into the app's directory + + ```bash + cd name-of-new-app + ``` + +4. Rename `.env.example` to `.env.local` and update the following: + + ``` + NEXT_PUBLIC_SUPABASE_URL=[INSERT SUPABASE PROJECT URL] + NEXT_PUBLIC_SUPABASE_ANON_KEY=[INSERT SUPABASE PROJECT API ANON KEY] + ``` + + Both `NEXT_PUBLIC_SUPABASE_URL` and `NEXT_PUBLIC_SUPABASE_ANON_KEY` can be found in [your Supabase project's API settings](https://app.supabase.com/project/_/settings/api) + +5. You can now run the Next.js local development server: + + ```bash + npm run dev + ``` + + The starter kit should now be running on [localhost:3000](http://localhost:3000/). + +6. This template comes with the default shadcn/ui style initialized. If you instead want other ui.shadcn styles, delete `components.json` and [re-install shadcn/ui](https://ui.shadcn.com/docs/installation/next) + +> Check out [the docs for Local Development](https://supabase.com/docs/guides/getting-started/local-development) to also run Supabase locally. + +## Feedback and issues + +Please file feedback and issues over on the [Supabase GitHub org](https://github.com/supabase/supabase/issues/new/choose). + +## More Supabase examples + +- [Next.js Subscription Payments Starter](https://github.com/vercel/nextjs-subscription-payments) +- [Cookie-based Auth and the Next.js 13 App Router (free course)](https://youtube.com/playlist?list=PL5S4mPUpp4OtMhpnp93EFSo42iQ40XjbF) +- [Supabase Auth and the Next.js App Router](https://github.com/supabase/supabase/tree/master/examples/auth/nextjs) diff --git a/mirror-2/app/(auth-pages)/forgot-password/page.tsx b/mirror-2/app/(auth-pages)/forgot-password/page.tsx new file mode 100644 index 00000000..203e37b8 --- /dev/null +++ b/mirror-2/app/(auth-pages)/forgot-password/page.tsx @@ -0,0 +1,38 @@ +import { forgotPasswordAction } from "@/app/actions"; +import { FormMessage, Message } from "@/components/form-message"; +import { SubmitButton } from "@/components/submit-button"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import Link from "next/link"; +import { SmtpMessage } from "../smtp-message"; + +export default function ForgotPassword({ + searchParams, +}: { + searchParams: Message; +}) { + return ( + <> +
+
+

Reset Password

+

+ Already have an account?{" "} + + Sign in + +

+
+
+ + + + Reset Password + + +
+
+ + + ); +} diff --git a/mirror-2/app/(auth-pages)/layout.tsx b/mirror-2/app/(auth-pages)/layout.tsx new file mode 100644 index 00000000..e038de15 --- /dev/null +++ b/mirror-2/app/(auth-pages)/layout.tsx @@ -0,0 +1,9 @@ +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( +
{children}
+ ); +} diff --git a/mirror-2/app/(auth-pages)/sign-in/page.tsx b/mirror-2/app/(auth-pages)/sign-in/page.tsx new file mode 100644 index 00000000..dabdf8c5 --- /dev/null +++ b/mirror-2/app/(auth-pages)/sign-in/page.tsx @@ -0,0 +1,43 @@ +import { signInAction } from "@/app/actions"; +import { FormMessage, Message } from "@/components/form-message"; +import { SubmitButton } from "@/components/submit-button"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import Link from "next/link"; + +export default function Login({ searchParams }: { searchParams: Message }) { + return ( +
+

Sign in

+

+ Don't have an account?{" "} + + Sign up + +

+
+ + +
+ + + Forgot Password? + +
+ + + Sign in + + +
+
+ ); +} diff --git a/mirror-2/app/(auth-pages)/sign-up/page.tsx b/mirror-2/app/(auth-pages)/sign-up/page.tsx new file mode 100644 index 00000000..1abbd3b8 --- /dev/null +++ b/mirror-2/app/(auth-pages)/sign-up/page.tsx @@ -0,0 +1,48 @@ +import { signUpAction } from "@/app/actions"; +import { FormMessage, Message } from "@/components/form-message"; +import { SubmitButton } from "@/components/submit-button"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import Link from "next/link"; +import { SmtpMessage } from "../smtp-message"; + +export default function Signup({ searchParams }: { searchParams: Message }) { + if ("message" in searchParams) { + return ( +
+ +
+ ); + } + + return ( + <> +
+

Sign up

+

+ Already have an account?{" "} + + Sign in + +

+
+ + + + + + Sign up + + +
+
+ + + ); +} diff --git a/mirror-2/app/(auth-pages)/smtp-message.tsx b/mirror-2/app/(auth-pages)/smtp-message.tsx new file mode 100644 index 00000000..84c21fce --- /dev/null +++ b/mirror-2/app/(auth-pages)/smtp-message.tsx @@ -0,0 +1,25 @@ +import { ArrowUpRight, InfoIcon } from "lucide-react"; +import Link from "next/link"; + +export function SmtpMessage() { + return ( +
+ +
+ + Note: Emails are rate limited. Enable Custom SMTP to + increase the rate limit. + +
+ + Learn more + +
+
+
+ ); +} diff --git a/mirror-2/app/actions.ts b/mirror-2/app/actions.ts new file mode 100644 index 00000000..03271554 --- /dev/null +++ b/mirror-2/app/actions.ts @@ -0,0 +1,130 @@ +"use server"; + +import { encodedRedirect } from "@/utils/utils"; +import { createClient } from "@/utils/supabase/server"; +import { headers } from "next/headers"; +import { redirect } from "next/navigation"; + +export const signUpAction = async (formData: FormData) => { + const email = formData.get("email")?.toString(); + const password = formData.get("password")?.toString(); + const supabase = createClient(); + const origin = headers().get("origin"); + + if (!email || !password) { + return { error: "Email and password are required" }; + } + + const { error } = await supabase.auth.signUp({ + email, + password, + options: { + emailRedirectTo: `${origin}/auth/callback`, + }, + }); + + if (error) { + console.error(error.code + " " + error.message); + return encodedRedirect("error", "/sign-up", error.message); + } else { + return encodedRedirect( + "success", + "/sign-up", + "Thanks for signing up! Please check your email for a verification link.", + ); + } +}; + +export const signInAction = async (formData: FormData) => { + const email = formData.get("email") as string; + const password = formData.get("password") as string; + const supabase = createClient(); + + const { error } = await supabase.auth.signInWithPassword({ + email, + password, + }); + + if (error) { + return encodedRedirect("error", "/sign-in", error.message); + } + + return redirect("/protected"); +}; + +export const forgotPasswordAction = async (formData: FormData) => { + const email = formData.get("email")?.toString(); + const supabase = createClient(); + const origin = headers().get("origin"); + const callbackUrl = formData.get("callbackUrl")?.toString(); + + if (!email) { + return encodedRedirect("error", "/forgot-password", "Email is required"); + } + + const { error } = await supabase.auth.resetPasswordForEmail(email, { + redirectTo: `${origin}/auth/callback?redirect_to=/protected/reset-password`, + }); + + if (error) { + console.error(error.message); + return encodedRedirect( + "error", + "/forgot-password", + "Could not reset password", + ); + } + + if (callbackUrl) { + return redirect(callbackUrl); + } + + return encodedRedirect( + "success", + "/forgot-password", + "Check your email for a link to reset your password.", + ); +}; + +export const resetPasswordAction = async (formData: FormData) => { + const supabase = createClient(); + + const password = formData.get("password") as string; + const confirmPassword = formData.get("confirmPassword") as string; + + if (!password || !confirmPassword) { + encodedRedirect( + "error", + "/protected/reset-password", + "Password and confirm password are required", + ); + } + + if (password !== confirmPassword) { + encodedRedirect( + "error", + "/protected/reset-password", + "Passwords do not match", + ); + } + + const { error } = await supabase.auth.updateUser({ + password: password, + }); + + if (error) { + encodedRedirect( + "error", + "/protected/reset-password", + "Password update failed", + ); + } + + encodedRedirect("success", "/protected/reset-password", "Password updated"); +}; + +export const signOutAction = async () => { + const supabase = createClient(); + await supabase.auth.signOut(); + return redirect("/sign-in"); +}; diff --git a/mirror-2/app/auth/callback/route.ts b/mirror-2/app/auth/callback/route.ts new file mode 100644 index 00000000..68035d1d --- /dev/null +++ b/mirror-2/app/auth/callback/route.ts @@ -0,0 +1,24 @@ +import { createClient } from "@/utils/supabase/server"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + // The `/auth/callback` route is required for the server-side auth flow implemented + // by the SSR package. It exchanges an auth code for the user's session. + // https://supabase.com/docs/guides/auth/server-side/nextjs + const requestUrl = new URL(request.url); + const code = requestUrl.searchParams.get("code"); + const origin = requestUrl.origin; + const redirectTo = requestUrl.searchParams.get("redirect_to")?.toString(); + + if (code) { + const supabase = createClient(); + await supabase.auth.exchangeCodeForSession(code); + } + + if (redirectTo) { + return NextResponse.redirect(`${origin}${redirectTo}`); + } + + // URL to redirect to after sign up process completes + return NextResponse.redirect(`${origin}/protected`); +} diff --git a/mirror-2/app/favicon.ico b/mirror-2/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 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 LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/mirror-2/app/globals.css b/mirror-2/app/globals.css new file mode 100644 index 00000000..f450d1e2 --- /dev/null +++ b/mirror-2/app/globals.css @@ -0,0 +1,69 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 0 0% 3.9%; + --card: 0 0% 100%; + --card-foreground: 0 0% 3.9%; + --popover: 0 0% 100%; + --popover-foreground: 0 0% 3.9%; + --primary: 0 0% 9%; + --primary-foreground: 0 0% 98%; + --secondary: 0 0% 96.1%; + --secondary-foreground: 0 0% 9%; + --muted: 0 0% 96.1%; + --muted-foreground: 0 0% 45.1%; + --accent: 0 0% 96.1%; + --accent-foreground: 0 0% 9%; + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + --border: 0 0% 89.8%; + --input: 0 0% 89.8%; + --ring: 0 0% 3.9%; + --radius: 0.5rem; + --chart-1: 12 76% 61%; + --chart-2: 173 58% 39%; + --chart-3: 197 37% 24%; + --chart-4: 43 74% 66%; + --chart-5: 27 87% 67%; + } + + .dark { + --background: 0 0% 3.9%; + --foreground: 0 0% 98%; + --card: 0 0% 3.9%; + --card-foreground: 0 0% 98%; + --popover: 0 0% 3.9%; + --popover-foreground: 0 0% 98%; + --primary: 0 0% 98%; + --primary-foreground: 0 0% 9%; + --secondary: 0 0% 14.9%; + --secondary-foreground: 0 0% 98%; + --muted: 0 0% 14.9%; + --muted-foreground: 0 0% 63.9%; + --accent: 0 0% 14.9%; + --accent-foreground: 0 0% 98%; + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 0% 98%; + --border: 0 0% 14.9%; + --input: 0 0% 14.9%; + --ring: 0 0% 83.1%; + --chart-1: 220 70% 50%; + --chart-2: 160 60% 45%; + --chart-3: 30 80% 55%; + --chart-4: 280 65% 60%; + --chart-5: 340 75% 55%; + } +} + +@layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/mirror-2/app/layout.tsx b/mirror-2/app/layout.tsx new file mode 100644 index 00000000..3ff5a03a --- /dev/null +++ b/mirror-2/app/layout.tsx @@ -0,0 +1,72 @@ +import DeployButton from "@/components/deploy-button"; +import { EnvVarWarning } from "@/components/env-var-warning"; +import HeaderAuth from "@/components/header-auth"; +import { ThemeSwitcher } from "@/components/theme-switcher"; +import { hasEnvVars } from "@/utils/supabase/check-env-vars"; +import { GeistSans } from "geist/font/sans"; +import { ThemeProvider } from "next-themes"; +import Link from "next/link"; +import "./globals.css"; + +const defaultUrl = process.env.VERCEL_URL + ? `https://${process.env.VERCEL_URL}` + : "http://localhost:3000"; + +export const metadata = { + metadataBase: new URL(defaultUrl), + title: "The Mirror: Game Development Platform", + description: "Next-Gen Game Development Platform", +}; + +export default function RootLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + + + +
+
+ +
+ {children} +
+ + +
+
+
+ + + ); +} diff --git a/mirror-2/app/opengraph-image.png b/mirror-2/app/opengraph-image.png new file mode 100644 index 0000000000000000000000000000000000000000..57595e662c3b56c9a1e6ff5e9b6bf43d5316e1a8 GIT binary patch literal 289886 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 z P{R3fQxK|S(tidb+QL-Xix$<(Cg0E#?@@u(#FtVg_wT`EjmVS=%t2Dwn%mguOc zWm?yic_d*XH^pQ78B8*$xG`#9GxhtQM>ey{&#Ld-eTrM#QuGtDc`!EA_#DyY2y-Ms z&zLYcPQAa+F#XK?4Of3LtRFn(G&*k}7){?R+Tqm;eH#wHIUB)sPBMrp+8CuRC z!8Tf@cx!70I$UJzo#e(|632+rX#*{`+4slq%|%HGWr12=r-vCIs?HFJoEr-KGR1z6 zTk9b?h2nCMJ3M$>_-CTm1x5a;6vPx-r9bS7EEGsW zewVx)w+~72bSJy{OYo3JpZ8@mZW8~fu6#!PZc|9fN&FU*;u-PJME?D50{OqaC}C(O zaxUwnfCJI$N;~I`chf?I)&p@|&URX127!6&4#$v_;7pKg9WQI6*bI&(!0!p?0(M7= zz#-Oupp<`to(J(^BU<(-kCiGFiJ0MU2!Dh+{&ja~v+zE}gvdywByjALD{>;#H z$roakUDJ94adEBW+YhV{fo`aWFN$w*6M4|TV0y;H33N-80@k$(*){EkyB?Exc#%O6 zgqeqt`#`Kkpm>G1c))x?P+mcRxDPuvEXeg(T}@$ii1$jN;RO*1@<|fKd-}ml;`%07garhSp0YI=0Kt-mY}P> z>5JAYp`N@RzgKS+jy#ux8?gD3fbe28#9qz~?9~*A=5qH(a|CU;%y^Nb7ePuafEV`* zyM_iL07jz8b=HR?+PY~gEz%Ns6NL=l8W2Exa}3hzrx#hUw*BGkF(?ER$hnx$cz- zOFHeK@vRY7&5)+S9GA8`*u?bf86}bcVy3_MY_&7OyRGG!e0JY*UH78=4MGFadH%DF zK44OQ2%LPNPxgrGm$CWJ~E#O>tzz2Da^swNF#~nnhk((oU7gQ zefzO@XU^p?|D_AR`}uiYHhAfy4^qdQN<|U#RQ{exUwyQtYNi>3}e$A>4xq@yd6 zKWL@)Ql<#SP*+_Y6@+50aG0HgBetfy+)XSc+BZgPsK2tNb2$9MSZfOuzU6q8!o~n~`nBe16w?@AuMfuX(4_k(M8`Nlm%$ zD5m8y#P_#v!34adDNL0@B>^J{oF*6L_;L&u74dDXlZ6V@Q57Y1-+rYnWTL%675Nn;b&dMd2EInysLbr+W4JnBy!Hl_`%oiYGjc!h$IOPb@{6zYC5(?+^R* zMhglbwbQO^f9BDxK(J3n&WI}X!zPtK}9 zir}+QSb|i)>Rkk>_X^7{luQM-guLMUDCIqPGuz><;Sp%5?|mHv?`H-j^DWVlJQ;(! z7xn;-LKH(E0%Lg$6VVd8_X~wJ2IB0GCAWw7!@7()@V{h*gw7@*u}ReO0KF%4vciz7 z3FdYE1Fz9lhhkLjBJeTpHykSQ!3Ap2G&yg5Q)vigo(9-kL52$6MG|@Hl2a5!x@(U= zK^IYTt(K7Y+q=9L3k5Q);7}o*&CUHH)AaHlUEr{sh1e#0+6t(H2FmdkS*t1yL)8m` z`tR}(BnFAomqahSul&6?R!MjKz2G%=`DG@a;-Kgeg3pIC3~tRR-tXq5LHotnq8M=W zz5#i(ZKO{AJm%wSS0HkQU65ZEsIF)23WbV3mjK~6N^MGV0CxAaKzzmA}ulR3%Fb3h?Fn(UO7B6Psb!GxcoPd zS8~Eh$7Ki5&j2G0LxRG1OULJ;IY+7PBqJ}xXb8X86YR@U5L}Jtb4m$nkDG{L={cyQ zd=hpPez@FR#}@tjYv%TV?MP&i-TIzR+Wuna<1&g?1qQEZRH_pm?Ybd`kC4Ch8{S35ria$f-c)HltAZ`rVcl^UE2{&>U;7vACN{)@=kQ2 z>;IDH&uCiP$BCLBNz*wUr!+|fUa?LoqdQ8Se;dtPabyk6IPH}&dsi?!T=FXo+}&=! zPldFP)^u=%$}lVFoU-BRc$oC|GaFf%(H8Ygvh3a;Ik$_HOl zDGhz=Nssk zu&=5){FQ*2z|dQ8r(i9&BI?TV#63zl4h_n3THz>9OMd z%wooA)bWVRgV@XI8}LjZ?*8!l#ia|cGzVnY4!RNmveKufzDOAT8m1BPl;4fnz#xc&e44y4 zXRcUku9f9EK7qIo`(4<;y8@nRSN zoS|;8iM*NBvVIXx8M53ZZvoQ?xr6Diya(Aupy=Z?KddrpL9JnMAocf1T>is@6v0HO z)m=Mbo0h68^*SKi1mpgCLSztSfPNDt0BbZ?|(koKWJheJ1K_ zN#Z^F_4~}bb5_~|%fCX;+yyMOLg5Y%mQk6+1efEfIIBRLo~Ms1A48s-P;9}kLmy;5 z7ce0BQAxoK(2aBc0GeQ^|L2|Iyf?5;&d>WP%6#TG=SV*MYMA#&OrTy*5H#HUf)e`8 z#J~=`D)CsD`A-Z9wBY)F=M8QWNF3kjtFe#<@X^}zgEuwiCYD3L!}USg(36NMUBa06 z@*#fk#O*d31y|Pa_JU3c?iL!;@h=H|(pk3Z&8E~=?j-%OMO<1#DEdgf+1nttQUNkc z7hRtCw`bZT8X-IrXTx?7gfJN_VrVPV)3NSaskkeqFWH@O=H2(D`uy#LfLm;(`u*MT zx~c<8R*-QP69UyFFy)_+>fLw)G+Cg3B-S9CRbnGFT=jYD2&8swt1YD%P<4bvTKMB- z#xJj(8C}Kzp%!v8cczF~fDs&jKQ51;RI!+(dl!hUSa42 zAPx<*{vfqPhH#=8^()IA_V9SZ>Jt@PB*&>l#U4;#8HwFDBT9(X>z3zTi(P zSz#v)L6+mn5gz>6$4p6~z`*)t>ZYx1dF!QXXhk$1 z7K)-tvr5H5DQkrr-PUThbVee|21}`A&#-lBCQSXPtG6Mz6bgmVVLrdE?5XAzv+CRi z0G)1WGgG7Go-&4Is-4_x|0~6#@YuGLmO@;BoJMLsMV&-|=h5I#iV@ZH+0O6;kV-(+ zD+L;2Hks~M<;;=6U6BkJROoXh_8v3MLVL@!mK2~$^9^jC?j_4sIY9ZwHRGRu%LDFcQTihndFU@JbS z2G}qZnbzM^AzYfHgGE_NQV{i&GeizOviUscKgm}6VaY+@dDV>)$YSdEX@>09^$bz2 z5bcX#GRD;Hed1StSvk3d4q@AG{(Y?gNj%@fm6Yv?cB7U?_;|Wbu zq#(j9mggdZJ7Lg}V>N`MaXse&?j|Bf)iM7mKX4I#wQ_|z@$9~04ByeZaZj?GR1t3! zITKZv-vidhP9FM)a| zldJ4t+EjQJ7UBIw6S#%|EM7h=OAj`dwcUgu$S{h-1i@{KhTH@2-X*a`ZRC ztpLzRH45d);>;t+pF}$-DbU%brj|36z^_0= z`X|%zF#$sQ1Sxp_v~|VG5oDKgkHr_v}Z!{B82yAW1#^eLWqw;eaC5yCVuW zVuUwc4VxPoJL=yVKJD}wMS(M>W{zc53Nd{Ke?CJe4rG~Z%Ok=tkg|p&2qz(e?cY_7 zWqBsULi(uOl_pLx=Hd&C4*n7&Awi!s3<*~df}Ii~3fM;*msEiCU`+BFd&=(X`AZ*} z;ll2w;$i3Y+NDsy&eH*16z$q~jW(vSvjh3g`LbVd7{D37s#}U|r}!ZPMSR8;$sTT! zig)VDtKaO`#yqIV)~A5J1U3y+*Tb(e%BM<}8?c>fjXOlK?NcmE|J(EQ&AS91gtTQc zp5}4H=JR}AnnM2Kr_{BvXI6{eq?68&cQaR@TAnYxacHNJ7WAR{2eVk}C`B@q1&-n{ z<}feOHC0yYceIo2zp1ktdf`#+>|q`Vs8Q`^@k^pnXmyp z_)80nF7vY1&dWIGULGLPk7ZW$k*o0rO6^|@0y+5u^7CoQwOv3}uYbS@NAxG9{5*zP zv#zjN!HOncbZ&DswKnE@U{vY5z|V>l=TEz#RvyJ_b33Y=oe(nQBpq@PAAjKX)KoKe znIipsMu2Wj586~dJ9j!T!={rq)pWyeeB}naJV}xz^1k<1lPBBfHbR~eyiw4hdZY{# zYu|#!Gb{v3{8wjaay+HM20iP?^Dh<6iz;$n`Mub#5{~lOTugb;_#;?<5V2{z=aKyr zPUs{6fsV7v_#dwiZf-sMbtxF2aW@ZicAq6;LVkPOMFJnVDc2I%HFOeDsIU{P97AXD z95HtmF%{_lmKF}9y$_(@$MB|`z2-g_R8&hkAlZ2JivL4D$UrfFC|#B zgP2?^)B$N1Dj3Whi6(L&OaAVN=DovxAIkKx@X3bm3d_sA2`R=%B;JVz8Z_=!f^&mBcYk?p8;tR(WY`DiSL&`WH#%FLjAMYsEg!M`)1Pz#VU=inocs#xI=YLjM z0=+#x2o-z?rwZDgaR4Cs$)tzcPJzB|22=&<&QvfE!mg6884hI==!Sz*_t!Q}h~B$A z!(#YA(f;RtIXsN8(PQWpD83@p$jH8Vomli|OZ=<8;d*KW14isY6&C2PiMD7ovf3q&E9{theL z&r2LqcLToH*Y9*KWuFnq^}pZGe?D}Il<#i~VhJk$cJvSDT_Eg4gg9in4bCVJR<^}= zhLmG7=`CfWU9XeXp^x^OL=MqOnBV1yu};{vFNXKJ22<0#(j`z*FSS7~5YT z>CWC$EAVxv4nH9BI#>vN?Shi)J1={m0eJt%GW2M=T$+DW8zB?Hb&DV+kscH|yb@lE zVI(m5RPLhO6@<|^ipZ$AcfBpxx7IGczbR3)&>WpSe|Wv`cJNaspR&$5R8@boT>x3! zmx+;ALl<5dXHkV@kuoU(mm&^=A9F125y7Z8X&^$l=Js zHU;9-7=*Q|8bL;hA}X)?+{ozTVoCHd0i=Z23E|y6aD67?=M2MuEA;c!2oF_YO@@aQ z0$B#lO00V-t>Frba2GY@w%#z6l(*L`sqtgq-oSD4VHS^ z@Q{3aa=9X0dzn~WoUgt$R_-FwA2H9cilxGgdG-5!TZir+^ma?Y%F}e+Kb-(NrTiE7 zsll={-AF_gjI410?@i88r*qL?scZ8zTzu8ti|cG`t#{A#Hk0aPn%^e4DP$l5OQU&bCfM*l_vS77gNP78OpgKwL%s|Dtn-`}?krXMc@ zHmcopO=OjfU~iF@bD4;sY#LIYVtTD5kRYZJFX{QXM*L3-BTfczCAw?ChH=*qRPL^_ zlVIqyF262BC2}AmuuLbj;;Xc6X<)VR7qJQzZED7BnQ!MaP8FTJ|j7>exuE1 znfVhn5iI?F5_7_eiSf0pJ1tKXU7``$qQIi3He_{D$Fm!{yW_KVn;=H^avscNHcT=6 z&9PwP?dF}6&+i2eK4b$>Zd3*O})9nK)sW!cUq{N zlfW#N1{8WUB9)}_o{Hj@On*=aUUma)0!j*Cpn*%jY&MEws}-pjeln-mNGqN84q2yn z6g6DDvnex{DYBVcDwMw5c8K;b4)pF<=VH1D7FBA5@iLtc?JAwe8Ae^i7%Hz zAqr6*;c!;n&Tvh_*9^x*r_tqtzmwEC!U-yvyUQ8ZWm<|{AzvP=_AV zWqlB!6plvnBhFUK8;}$76a$wsK?4MUNPwEN#8AIcBuis7+`Rt%*$rK4rUqs=I zFT!M`ckCm76VA{C_K<)0dT+Tu{OXkt!=%fWC#W{Ebf?N~sY;8GN? zh4Ev}Wu&}i&;bQwn3}bs0rMP|nbuAGH9_VHfaw-V;>-x`$>>GpBom@T(Dx-_HI?!u z1LqLuf-|kLIbDNt;nvJH`+ID!91Mzw@x^r3?%3Jl#V%rOd9fLAyiV$1_aoi6p6@ae z52vzK<5^0kcw+bU^!2aFp+}PNuk?Kho`mmbMls{Q#kS4!e5IcII%#7MSP}gNJ0wcJ zKM&%_Qgod98=Gjjy?!?atoRO%4JKx!JP&;p-xv>KtOWa}^nO*U106)qh5wf?lNFgfj>q4 zU&vpvQ3kOZR`UDJX#BOd^nIvlyR%C&W%IM4B3X^aro(4<%>{tniW!SRL{xO;29TI> zOc}n8Kbs6e5!LH~5<0jOg4IQeeCJ1OBv%;n0Gl#Pg>c*q%hfoWm4Mp=cl zgTI3Ah9@uW)ne(E9Y}4Zdk8Zye^Z{4w9UIy;hB2~9?1>e0I2+V9Bd{=OGJiFE$K+z zjPRop5x(l$g;9(Y32V!~NY2V&4IETE|W~y0KHu7MOWJLejTj7-)qDD8T6m6nr z)~%{n4U4NL#3SylWEl)%rsadq8aa+AD2s~EM8Jpq!&EGz@NZ$CDp0z@K)$8p2`TAyJrOxj}Trf5AxIM6%N2EBBkCvTmDdx+qdJq5mh)Dl? zL?UQbY~}Hp!)w$h=^SHsZspf zv%0(iDT&jL^0(fa4Ah@zT{+kj>Og`@lSH1Qq@7Ia)+NB|*A`AyA<2#s%MfF8X>!?Q zPb`S+;+Eh3NC0d==GuPWUo&h9Hu;s7#U-p${5W#n;D+)lCLZU-uG|zIDJ*KKmwM$& z%tQWo-R~#FuDhm*nVVg4@};)gx9n9fTS`%PIKGD`g+mV4;o-1)V z)s@45Qzpewc>#BsWPs*VX6cZboIV7fY{?Oi(bnn(Hd*Gn<=@Tr=!kax3>8(ns$`>M3?%O#WTeEo78<*e=LU4lvJoO3{2~i$^>{fI-|BA*4HoL;q;JqB_ z9-SoyA((fs8)1tsI&Kf7t9>Ac04yrKzZLOkY>lnQA}B1P#tpBw#!+uBpbqOm`OK<{ z$4i4-$BijIU4@TtKh&C%81Og*p|O9fUX zkz!kUj(%~3QmGB?%K*{hg3FI2?LT6&-@l~TNDJ7&oMKNLd8gyY=yXEc7_Fd(e>2lP zix4?W6;iNeKTl@rk659sIj6AU<&{XaPMnbT@>7}mO&5(1DY3VZLF~wpQk2g=VH83V zOW}j6{>HO56fK0zv^UWhd=$>G2{onT-u3I~>jixjk7+?`HRnif$=~x-S?Gc2-<~g% zSm`p@6vmSh7wQsu6(^14$7a!V*~8P#Yj|zLEs{Z;$Kue>hLR2+l!=6D7yHlrCqsS{ ziR2xgPR)N1KO87{Q){W|UC3)t$Xwlq8nB|QtX5w3s;Cvo2`UMya@xLD#a95KPY?HL z7S;}+=FF&$QLxJj=HD_|LQgd0TFyxR%rivU{z{hx{2-aIK{re$wcVKh688kX#yKJ2 zw4zN}%VfN@n>~>-ns2s=lV?Ze%i&1ka_4aLH<|ZL5>I>&StFL<-2|?w>oT(I|V*s3%LbvpL8TWNrOwH zVh~Qa*IiXXQmr8MRlnBFleg^;X1{$KLl^(Y3Xrw>!W(aZb>E*4aOK-Nj!FdbmRj4* z@KBCV@8{b>IFWs(LIih<{eM&q5As^WmC#$HX<5GiS|?4B<5k$_rs>n>DIg7Pns>TP zl9AVWggxc*x;pEx#P1FzeOy4{v9j9kUwe!L8CJjeWz6xuGMct~6^R;MeIgaee^-B~ zAfYTVU{t$I>!2|FWAW@VYx%mFX*V|}sJ+9#{bWz4#dL&1-;F?cr@O7N8 zWr!%MNhXJNA?JhW{NXcJkC0>yg4@;_7KH5s*5Bx?jK4g~&CAjp zv;GS&1;`T~;WC9<8O7E+^pAz}d7R0RY?2vZ+fek+#1`_j$h-Th|5kf#o#SG)-XQEz z_NlP>mS+81{iVCQQ%f;dD3^dXO*20LQVQj9G)hidi{sWX&YWd%ik$73n+0U#y9E8=2P9^paDD8M=hy^It0)gx?C^IjN@E z-+!v`{SHA5*rK{XE7H4`qfr)_yW40e-4x)rnb!Lan&yAGVL4heL)1^V=XL;O#;$5b zm6&8vrK|Ojr~s3DG61$oEvCBgXXi(2+Ac>3SdE}thM%1_czBZ+o;7?&f2DA{cmC~r zLhtf}9b+0Im9{;rznZ#yyan9O)Xx4@Wq<~F{zLpY?DcM}oi{Qa&U(#8;z@iv+~CpO zkB46niVuD6uZcctTh1y!|LuBWb%Xo#pEaXr7(bx)ed0JZp6a+FsvF121B4r0TT88C zn7E$mobq|Bk^@{;ohO)%w=-icAp>i#37t3a9Gd@WeEvI!)-YHF)RJV^JZaTN(3wtg zE?s+F`}|YaC`7DP>p@W2G6- zZ8t6f-y++#5wWJrIbfTV*wC(7-72b9ZWcUwyRr-Ne;G8+FX+7Nhyk;$oWEK91-fsJ zvM<*Fu@2C1q_zuew!~Nl(#@)y4z^ch*mlx?G3$Q1FVO#!F8C!y& z*I}#9wFbs-q0GYp;3PN<`)&z_RvyiZ0kfcwx2G~NO+No)nq@eS1o(CVHkcPEQ%ZZk z?QihavK;ZQ7thQET=RGN)q=5iA;IZBrG}Tg>{^Fq9Tx>dyjKi|=)pFaf^BbLjc=}? zH{-GEZ{mkgGCOcT-KT=vf*!9-0(aqVT#6hYh~R2G4D{qOxcb|sR#IP&;2IMmpi67G+ID|}+8SA0X% z!?w2ST*HY>RETmQ4sdtrK{5>Qoq5_??z^zI2rXLVyhSo8W8zqoV=MkDTb%`X~2&j@SnB?2a4c+knZ;?;Klk{1SEc zjW@%jEDEMAp@#RT3+qn|=dmw~h7lVZ?T>3Vyde5_^gE%mA+KjtbPAD95viI*n^GRb z0>)VFXOvg`Qzz18{H{WRW&Bw9=e4^T;VYo{+VbW`P>U(b?k>VRNehyB|1e!ltMSLf zvdi+k+bI|hDs8a0H{8^xTsHI&3=oFhG^TCBc9}bwE7pCTi1=Z2Q(jbS?;JGglp@2k z6x}qQq>xiTjw#1m5!0xXX^N~n(w}pTHQJCkqt>hUH3^?`tUVKVyIAPm0~Imd5p8>A zUCpt^cSKzTiv}tT0fP6dS@aA={WyZ4YP*`$pD)=YcZ9Le>b``q;pz7<>ChT?+l3PS z|3ZG3uLny2mCS{k2_RR@-G@`_rl1SBew@V_9!r#S7vRqd=`6myI%(oOkM zpAlnMeW(2UL*Hdk0p?%0u@W|FhdeiimcvL);G^U!|3-v7OihO%@>%ulbW8fFP7X4O z-q8rEwzNkG$3oJ168D6*0Jq11q6>dol5i3X8X^i&Mi(H|x@N6FD3@{FPdgyQm0D zEZY)NNH~hO=s6x9wyn^&>?8L_y9#KrFue3z{2$)A&t;+^JbDkc>e&h7C{6F2eNxTLzn>O9o=fG5qqD8J>IyA!m3Hb8jL1M!H?Lr#d zJ(;?U?(cj=VDY?99wqd&Iy0|&xxss!a|pQ%`9`+09%xCOXbK*oG1|2srsu_a-wfe( z*S0K0*PP(J&7Z592GG_QO2$%7IHi+weI9vTp9G&~y|&-ODdB(d zvN>X}Ic)oVG|c$FF1W@(vu1+8c?9{_8PkM0*zM1j>}CFiFYpCueAgoAaH6pgB0cx> za`(z9lA=bCJb7+MS$V!<+n4+A_znYaw|IaPgd8iV!`*6h=N&>StS2syFO1fz?fpNh7*iDx-_fZ4no6RvGm-k zMefB|@#e+~@Vpi%*WTbYK1S=)xQlK68b7U6xD9?AWsY|_8HM&uX_xeXGuwuxp4@d508FMKXI>` znHnyO!jqhgOv%#b9(;Up4z;-=@z}t;Suczr-WxvgpT1=8@{{7#4WV0IpQ6WKkS6i^ zBKUHU@*lAOdL!VpM@1GC*1&x~l=04^H?hUbkN#^ zT_>(ezsdWtt(-m)xQ_*Q&m%t}`yyU^zzvWtF83+%YQmG)0YlF#*`)p_#@u)T;YV#Y zAMWdRz{oQ25Sq;8evZR?(UR|=Amjv=JDk&GJVmwvyw=r`kDD zqA>Y&zSj|f5^J&j{VtflK1VDU*{i#V9PfTwTYua8m2G!6T7bGC9$M=fdB>h;=yRzY z+qa-7IP?Tf@v`Jf#a_#V(FA`iqPS~31r7ix4CM42=RYab;T>6QFiyFATw8IsjKmYk zMG*TUOgS!NJnMn80M9^-$R6-ce>=f#F@o2$bc>-K*cY7_E1nhE2&VOa2G|Wjqv}PF zd$K~Yy%SiZxRIRt)c@sECkau#CsFvMbyZjIAU?HJhC^xDXlfd)7-LsU&~6 z+IxNe%xmdJrN*Mvl&8w$iDawj*vmM4z7;%&3>`&1N)Y zR8OwwR3jM0j*5$`W`K|~Mptdgr$#w|=n0$pg#vv^5J~ol^SU~}Y!}|R;HRR1#S_T5 zD-C5(_DC@OWu*!9b8)3nFK3Z1mqr?j#>e?1#l#!&7Y|uvL7P*jwGB^xS`Pc*yJS9o zo>UyJiI8>0kne=AV6$OMX|iA=;#x+vnkb4?vKj8OE-N;Z8qW5EK=Sl;`*=Q{U&^rO zPnP(Aq~N!<$=t5#mY=Kjjmh+b&)ifp`K%LvoT!gO>(!E+Re6-uT4*sxtX6XmUA_RV zt6YzZe=i@50KPXWP_6eJbAYSZ?vTGP+hD6p=tpHZXsxE%{GdzAr8U{_NlHi|pNCY6 z&i8xd{V(M5(E!ep<$)bjRVV4X_76(WPS|MIu7}&7QefnV>Aw(5p0AEWx0_(${3_&% zKUy`o%D!)V!?X*6`2C0*5XF6#=yTP%EF3nB`Zk(W_eT5LCJVS72h4@x>7O80!6F8p z8GhbszJfu%m$IGF;t7a32-f-@=m&@~9ymV?YG}wlln?1R!b3>#N#g4K_A{IrtocSy z#1O=V;rsme?>}kP{EYvn3;3krt7B8cd0Mpno(=}fh4~v>LlQ*#5MD2?{G~P9Tp@xY z*&q<0`hsX5F%osze|0Hj==;O!`;L)WUgoqnU*zz)MMH-M++gyPpV27giKT3Qm%!po z#tT%FxYP5Tll(7{aR7n{rRB+QKRW{~T=@rlw*$vFgf9LI+xWQ+;b^J=K0k=d{iah| zukViY0`e}~j}1T=P(9TdXa;Wo)bF{UB2F-R%#fbCt_J|04{S;pD8xLyGc^G(K*Q6$ z7#7SVJPaeE)VLFh*cvyIphs{|_{$ZZp)=ye&$HJx8_JWbWxajB2k>63cp`V&b0;Jc zFIK5~k>EIT->y}*CulSsyxcr{2i&c1&rh{(+}2LO-vrUg#C?o zh4^v;S@CdzeZ&D&644;bABouDUUJonx2pTM7#8=Dt=lAl!tIQ!hOQZCx*+E|rw7rI zgyddf|M!%9PhtK^%;@d+;bmQB<+lk#=3-ziAdeKhK_^>4WnJgMQ6|Jo!IQARCfzX)m zft1A#ZM*r?QW^Xd_VCiqS35H2@b3)_IpDvA>Fd0UDw(L)X=y<810^4J(m4B{8ArRk z{bI-r9cOw6{#dtX!CGX|JjYPHBXgVc(-37prD;&9F&T5p=Kh2A@cpE13}7Xb8oP zcN<+oxN&E$UsnAFTEybv+u{FgPy*r=smQ%!k&L*C16`mo`zcNt7ntDr#@*qQOG9_W z0ucKY1be+%32Sr-9(X-5r9vy9NpF z?ruSX2X_ku3-0c2jlH`6=uLXkv#zeHbH20pT8UpYO6eplL%BD9F?(rMvwAlei;Hlz zR#@V#^z?SRBg~`gUJ<)b0wm3dnE7(lO2+XxpLuqogR^w-XTGT_j03OS!@X&S$fd?( z{RTEH|HNZ1CQJc`R_q(|{!$%D`tVLZ8K+Vr?x~SW(TU>e?#g@xOTnFp1AL{W@`qxa^ztK@xcbpC9pzK#TK}7s4t|T)93SbU%Ja z?8eu-w5#`e>cx4A{6c|c9 zf~5_p&iYa>jU*J6rwsTgQ#J_>L8Nh!M39i8yl#?WN%$L|xJE*R9m+D>K9V~{(zJVX z{J{>GloWNm_!9to2`}`QEFu>=|NS==h-ehmme*nZrFB6oZBoCZW@Ux%jbSG2O#2b` zViPt(1)A?>pU6Q4z4ZGC(e398Ymh;~R6Iu4k8;sR6p2&l*;~!n3&8;$R%c zuk_8B5CpUz5l-`eJuxi$dCr@<9pj3@Sf@uUu6}7Zfv<%d`UKPU zK?R*3SQ1m)Z%w)E_>v9b!i92O2TLp5pKaD+lbeL|JKqB|{iB}=J4esLj|FspLG0m( zjC}Q{I{UA!#Ca~B)V`=k(qxI2!RDglZ^sdgowiEY`Y$}RL|p)QDYW5B8|oO*jAQWE zvb_VoOFXwk+T7hI4j1Tj&s#Bs!o8p3TVY)=MlhCi3fS?r{i(KC;Tc!k(Xz(=pSllNh*~n~ZA`unV4s+C)VDqrPBtS7#FCnY^G9BQ9O*G;G*>6&1#QN~1gE`~>kbGqp~p=ug?p*j;E?6SbLP#yz9_ zrwPuSsI$)SFJY`}S0Q54){T=Ss5AE?i=Kq#kXu3+;!#F-BZMy3_R+Gqxzfo9_`<@C zg!XL0Xr=x-eK+qbk=(W=Q!-G?q)xec{q&2HI4>^HNYljBz2Ix~azx)r!*xB&wKM#@ zF?eIJLEbuc{(~yzk6qchnO3$vqL0iD!N#m0a_(>RG4Fq+23H4G>dBAIWw3IZkGu z)LroK=}j6SANToWB5mBa9u9N7sZI@j9Fi}<-7<8CkwDJ#c4Ejp9^PG;vq)C% za-cw}D)jbgn^BBKCsogp5`BM;d{cln2*MiEQh@e#4j^ z0>8VoCNZ@bf2OY|E|s`wLMFU_XfN;JkY?DZG(}?ELIyAr>ujy8+B%PDZtv20MYx^lO*>FPoQ3pfa4Fq{u%lMO;`T z47rN)<3nW}s<$9p)+eO%0{NrBD&(lJy}C_n>F|n{bT43>Mr`AK}FSVvuRfj)zx>Sga*i^Kv9;<2?6ikt%C&v>_ zH&)h`v?gM2gn1lTwn@iT`5g_V0PSiL!-}Bh8LVxEsIIP0&wx7mgqaYVIKJ4xl}}Uo zNH3Mmi^xr)NW;cZ;z}$c+w?^!vW}uOrV#BTLba92&rSN=;+-ygRWmdZhrYWZ=%Dr6 zf2~e?vp+>9rAfSgGY;Fhmh%-yO%NNk$;}&zS&ygJ+wa*p(#d6NHPu#NK^Nc|*j`?2 z7spW7Y(oT zs5YDwUVezUb|K?o&SQ6lQ@?$@Y>fSJwJ{ETV8!|EukAylRtlvH7~k97@kW++*s z+oPQKdw~}ws&{ok3MF)a+`#BGuaHhfvKcoZ_SO0 zj!cebW7j94-05;1VRGJU9G+fl@`Y~$0}o-?;2cAt>P(g>k$R2MN4ghYC&6-C&7Q(D z^T?E}B3~)7V3dR5*_)y-3{MH*{zjIl)-ga}{X@(77m3|WF~lCZARgEd3kmyo&S?4F^=e4tw<0J;6)g8vkYFm`U~+F*qHa^xX$rBh$F{~Y zq5#hfs3EeR&kMM49Ng)Mi$mAi(L90n@ne<;E>l9R=e_I(f9+3oBm4p!&)1UU_FBl% zMYv&;zHDq}EruhxppPM5g^%DL26}DY&45LR$s;ZYhOQR5$b2AyX8oQ(p%;c^fh3yZ z7BO|NZy`t+@dNQ;k;UJ#sqt^0f5oR6K$? zysnYKAi^3{d*YU~f!-bS*gOJVil(k72=NPK!Bn?>Xn z6sO!+xQQr%m%xUC+24YG$}UNBa{@5WOCtIEb*$V5vIZe2)*d$LGdvzIH5^4|kY zYuOet76=~zvQSHNm8jGwmnnL85QGB@-VzeN_HEYelRtGn$cfNQ6kC>wPoe!%z1 zrs+qbR7ormh&mUU{&;+XJLh#u@>hjSMhYd8XPs2uVI0A8&_jDLbqkiA#82~b*fBN8 z*_mWS`X=hZ)1e$M$NQJGGKmQZ27R6tJ{pC|Ui5#`HMOu|oTqO1aYJ5hpKEYvD5oxVeM9Y^$_$Sm`>xS$hX+QJe&BIFAF@m6srSaz z*Z2C27Gr5)C`(Z2jFdA@ex>KIHD6tg_7^MJBP~L0P*XHgZo0BlGexuZtNXI8JQ>(^ zd44`hle@n&2xYBA?H0*#E8CO<(dnfs+&wJ$n%mAk>^3^tbS|uD#C#!g@>o9>Hxq%f zL*6tVQM&J@#FoB-VNg=B#fBtgCjt;uIPoE-=vmD9SnM0xl@kBtl7r9>@4Vn` zXZG!c?=w@T6+tCC_i;2D!@h&`VGE>V#e_Ta+H-aO6^d9TIo7vYftLHc#7T(swYqmo z(j-UOBEHwi$z1jDxML;Tr9U-qXy9h9J<<^g`c`<7h4~Ph#YP=?y3%no*t38E6`b`9t|%pKyFJT z&#c`*i?BT5-R?g-Pz#n{!W5=Bstc8p6w}dbmFJwYzM95Q|F_Xu=4ckHBc;#sIgXdO zJ#N&ratNs|tC%O_rv-g0N$5D_>!m^&+YAVmeGQ+Gw{5G3TYi}ZG0BLSsvL)E%URON z_-TQWRnTVXp+yZ4Pbltd;T-xjG}2{*JF>5WC214n_%nZ;ko8#HA~Q~%;7PqI+3Vi< z)>WyqEzrLP$1)UBySoh1*2`^eQ1?`67>HZb91@S)bING;PfD3*Oj9LDLklje)gwa) zDx$DTCD*jQ#6ds5gEivt_Ya-W(%ji;{Zn?>d~4CYP^i_ey{gnWM=uFhoZs1MGDnfD z>qk{NXe%(YrweW=tc4Vhs!_p~y9%qp2&r@DQzldGz+6Ye4WfL?{)axW3B_n-@XvkyPhvku)VaFxRONPe3z%m%9oXY zxS>}`x>9Dp06Ys0zAs6q`J1^fmLqvX-)mYMWh%B4#6b-=VG&dF)1{^4M^D5{(o`1` zP@C^*qgCX9kWliCr}*ds@I35>qz;DnP$EB{6lQw@svut!Ocj2^k}g7LSt%E%!YXyI zn!bNkYj5L9yA&r!F(I%!(5xkR)N3BhmQlKbH z_UfM^>%~1`AUB*hrdg>FF47Ehfa8RPR{x`M+AL_`_}^EPzFjTEM5|BJs9`2tQnrz! zw^_y;pO379;r|BTy9#Q2jij^ode188{z_x|gf@U6P`pYUn3c|wYqobdQY2DJ`L~+6 z`EzrtoUUZ_?y?f}6Lq%wt?gwQhx~V=-B&6d%^Teq7hx7T-IrX~_@!!jPFylE!t4`c z0^cy~zc|aP!AI!=|AtRSKgLt|IBBreZ>7`pHV+091Qki4=V4>ZGJIDgF5KcXcgc7< zVr!jia~9mSYuwc7Bj}gGK-pQ2&xRJWW*lRBVX0@}3zo%Ft8@py^#{=2RnHTuWm^7n z$zq)<=gYrkJReJGPM*O#P{!J|#VkqPcQEC+OU+%icZ0LFR*$8R+i2@WySY&+_|ud^ z^6lJY@nVkDUx@18%yxV4!G$NW-8bd9ySKUjkJY4z`Va&^O|3!#ovh0-a&wRhRjS!J z_Gi(Jug%<_FUM7=O;KOUzM_z2_MKMs$p9XyApSZJNg+mr0cO<^WGzR6z;wcBr=nrZ zYdjbm-k7SD1CySd<;6KuG@_au5B{*nwM{KLGMrW#n#fC=7NBt$alC@2j*KA7p+k|* z)$d3nGUOZ7I$1GAsq}f?KN=H*l2sz{56607l1R457T(Uzclu4cqcqW_OoBzlXpLB0Iyhe30csn|Eh5_fGU?z#-nnxg9h`X% zyD!=lnPCeA%Ot+aEJUYTDpxASm7B)1}h^{+-Mo4^<(SM4A zlk{80$|wA14X+xRMC{BEN!{F2|%?XP*OEH*3( zJf*|Aq0u-IpiXl2xx!KhhCo<*m{6mIJ{KR`ZCl*_v;509>OIVdE#))0<^=xG3-Mwk z1=)({n(B^5r|BuTF_}4o`ix7>{X<`B$HJmS_E~a{%2oJC8T6i;47qmx&LVp|h9L6E zXjdH?4ZpZ?#7N2``a6__LfX`+wD{%3lE&(g@3mRpBxogm(1WC|)WZapJcbtFlN_&ybA+;RkKVxd+Q-*2sIyz#5RMQ1upubI=p`58lI> z_r`VBeDX8pWEoxHbkp?>-S6V}#?=n?K^*v)e%b3F=Wy*S0N5-1uT?xJP2u^x+jqYM zyxUJVR)^sovIke_DDZusR{*Zw>rv;3Rax%#hU23X-UK@lAf^9O^7{15)l41*A2cYF z+YTn5&sgJD=j- z@?VX0(zoG}^12pWMC&&q7KBV&Bsc@!(jN3UeiR4t#xM%H@m_Boq;wmO7WH79NGM7U z81btPr}8)N97!pJciISOieMN*;FQzy)_!=782 zW=0xm&zPkuG80|n_ar|R55;0Zg)p5741Fxt(#8sYZes$;eSw15+wYrt9Eh{-k6qcj-4aw`=Z(|d3neHc+Fq`xkA$Jy${FtP0k#0`c#_}T{D-xiE=FGc*ymlk z3dM_c1B~Kc-JaGiP~#r86m34s9BLv=`|Sm*C_!LAtwHCD$KeOiN88|qUPK}a{fl)* zK7r~C8dMEEWB5F9Bgt8R)jHw_!jH3J;h#zBh}ewwEaSLUv&DqgezS^sta>2|UG{`b zpL@OvER&AGjSMhuo(wUZ1}(H<5OUG~L(Pv9toqshwNU_q04K+@5kQv1j-lJb0$M~n z8zh5V0`u7-;QQt0{z$sq&1L;Z>EYP#aks3!UZ6!pv%|K7TD+Ks|kS?eIl5`4zV99CC8h8~)=>cl4+c8@?N z*I71C%Ng_xiG99kA$vVu=q}xOxqtr;;Fv%F|3aM(FSXydI zF)L5_hgfrwP3+4~#|cBae+J`A1wJJ*kmZmzG;X59pPZh&>^(6A@#f2$IS4TI@x7C01TYo}|v#z8ncg@r|ut~eDXmF8* zZi{_H%SqBL9GQYwQeC6xT@#6Fm)__hLTHoQYu>2ad5ILFqlmV);2$2F<}Ud3jV6bM zU3l;cgeiWc6-fNz3xyTNK;d?9CX+e0{w;m`h>zvd&HkSfk99A)f-&OddYQZ1QAi8d zS6y8MGu4sWkpV1t-AYK6d1WXJ<(38YP=9gg=xcVNo24 zP#piUbo*4$^_j(B7^JY^Fqm2mSX8B)ajvThQ|8(h>)%HN7>)#;68IIW9 zESDvoRr;Ggf12bv^&TL$t zNjyCBA2OzVGf4xsk;#Jo_F|F&@KBJ@^Xf0K4%`4i&yI$!y@Vq8$?P<)rg`~?g1{b* zPHzI?^J!;V%QQh*-Z?Trm))3<;_G~zkv(6uYFvk$Oz&se?-$h?1iZQ}n?y0cw7E=y zvw)Pmy5arIIMdmR*EyfXZ&x8Jn}yi2aI`CBS90J0Y`P9euhz^gM0{JCzv~AuL6&Eq z7YfVtgkR3z-=-c+r!6{fof0@b?&igOotK=coeAc;;>sm`xB}M8L${2v?-~mE?Xmbbe-`bx1 zmHd6yz_{i+&ivEQrDGDv8^({juy(S!mOD)SignE1e}TH0#LIHnLT>gWskpnH6@{k)fLgxcT0{{g(d> zTRzLV2@MhZ{S`%oaEPv&PI~wKQ9baxA#y#jYw_AX9yf#(KH%Q6@9zTvuXW=gFMk%` z>~l@XIMf@|7U4zw_WSjIg>S>B@6QgRcemI^b!*>`+m2a^k%Dm2V>jT$uh;&xMl??F zy8Jg@wE}SVP)H;!WF?h`;quXy{{=g|&H33o_-2$Y@0vfTcx^alO4Gn=umuyQ!O+l$ zP19jtTEz$pq>0$}_PSdGO+h*zkIQ-JG1jWG=7?R|Mw{rCi2U%xNM~ zJ}@#3ly;$2>T}g8G;MgQS1FLZw-IPxgf%~}CWuW{Bi;BVF`IXl^fopeMufXwkZGFQ2T=-bNM%C#uDr4|H@EmCr}61=o0|JCJ$uq22D-!T?AjrW z3g>=e`}xmoe;TtV8m=u2})O+H|+#@Z`J`KESA*LU~-ry(L7D1q-{x6lVZ2Wv?bxY*% zH$_u_PX+^IMV?0<(0S?%83Z!rJv&Gkspsv__J{^#j+=MvQn_fwlQ{yaaeF?V4V!&Y z{yU;~2C=JNr}e`}qrf0qBtuFr(CFkqn-HhkGmTW0|%EqC0HCBLTN@qLGrs3Uj-U;S^3$Yw8C zyVBjAMTiw2()65>`43Ki{pUh(AK0$b+6Vhw?5teQ%_=IBNp(zg)Pcn zb$>o{T>zr?QRr$lZ5o)E++H)(?YkHOm#={%uppbH)%qyCmA99)?ineoRoLB5&i9u*u9q(=dm(n*93 z5DJN~^7g!k3%?}ryB;2nRsoTdk+=Zy%fLB_H-{V#Qhfk~jtqnJHWi?l&K5NETNnum z9F01`LoR>6=3uB89NK0=BSjp71~7sHBsQMk9)w2Gy5W(Xf~kDiEP8ps)*N$BxDjgc z0YC!&^V&&7HGo{sd)pqOf%vbs*5`T}XhB!p{mOgK{*UkC+2?=6aU44i^iO0=vul37 ztf+TwP&n|ZpoUWJTO7iPa_s;)ouD4k2|rcP zb%iLj9&`YC<0uYp=Uw*wK*RR?m&H4LQmk!?KbKqmdWM200CPRoQ9FA5%ScaWN>)+J zkBIGO?W3|qw*+-TlTW}wlbgY7YMu&CJMoI`3*X!ZP6B{$QtVk!A*m{plT0v$@8=iu+6tk%kUD6x!X5~z^H^$^wz0&q{=SQUU zMauPFAG&8XyCI(uzg=AWz;D5m8l!EOf=6zTB;a5vQBt)E8ST2)+`*MdJXczTSgG}) zW$&ECZ6Wh;5xg)W$m8u$(JYUX9Z8`Ey z5UBOMTvHqp{v3~3{_bC(kSx^MNCdSYC1b=WUVU~7kE=AujuP zm?FOpCdMF05y{>ApyR|*ZOwozW;XK;7mOrfhlWW_F+}ztC$s=4=)#~kDH#!G%5B`xVOiGh)8X?|4r{xi=$4A2UqYnRh%5hEv+-}K z3RR8Mj%G{oANXt;ve;1-gXHqSf2K5lt*tH<)M&->zUMr3)z&&;AoMjs%`83XlK;%|S#9rqG5#0W5NeL$XQBEJN`9w|QWRfrz{6iP=GcxvE>a5%j*uh_@k z73K^JkPSP#2G~_?N%VQJ`n!o?9yOZrY4$&W_?n8J#l?vWE6EQr@>*(^FFKil1L2O2AMTGZFMj0cZL$I?s|JQfqH})lAs8BzQ21Fwb>teDT$$ySR1I>B z7_^CsElYX-M5Q#2+9`~?tMy#*FH1~OfbIhzz~M9Qvw_HG#X@X<+6 z55aWz8Z@qCm{2;Ggl{bkqEAdV??3~Qg#R@A#$5d}sM;-(9KXCAFt65Q8t6D#oaXBt!a`yN@5 zR9xwT0nt{P2zfA!;=d3hFH-LB;KLr+msw8`tLbpe4HVq-EnKhUpT%mzaZvaNqWw`8 zDBnOCq{7d2Xr=&wIChTU1bTQj)=Z>P?pff>KSLIZ2gD@ta`zp7x~2Qo4zllc@GMOL zg>$+WGJ?)j6WkN$^BvMYidF)diy)?Gh+8Mq5E~fks2PO>bPG z+)kyOfi=vGO>LZ`_}WS?j^|t3fqqu1(?iF9LK*poj8qqsDJrJ8F9e2ep?zG4#0LU1 zDB~FQ;^x`EP$_MpOzL*`>clYarZvcCX`}NtS3bbNBq)o5{6c7ABDi(jQq*5N?}6&& zjuZo>1(Yj@J+y>RFZH~+@j_Rev5`G+bPupxi--2^10$8?bSa$G``FOIYbvIaz8Rjb zY^-9u)D8-3dt-RB#R$yWX9mo1Xwi74mQ&|9Xi`dEz{zbch8O{;wou3lpvmAOf8PNb z7jsRh)@<=5r(u#8j-rEb^t(Xe)1A-@{ojCMjs$b`fp#X?+;zq7cg{sozn-5Cy6_8I z*>Hh>24*TWWgomaZmQ*3*Ry>nO|j@^mKJ|hcbb9!C@USw-Vn{mY+Vb8vK0)h%hxTo z1TMAXZM1UnDQD~8K2C>5NM;#g(L^jCosV$Yeh%tf6Uh!0is4e|e8}~A{TM|0aSBNO zI-l*|M5sYK5$~gbYN#Zmixu0iqRgGO#*jqK4ghwktZ*qpwO}ClN3eO?C4PL}#{-PE zW>YJ!)Li2ut{36~-a@#C6%Rwg#xe3d4B2UoAcKXH|8dj(%d+0Tog?krub z3{gDbq1Qvajev)*gr53YyEu}@UygNec3PSLYgCf58?}}`PTIeMpV7oy8fkbm#%yYZ zE{hK1u`+*+sAO>CP!pM;Ew8e2Si2f&7Dq=|wC!O&q?YZRnYq*HYeb4vSHPg_PRFwT zkju0_LAKRTJ$dMHM!OW)`=dTEPK>1elanSfys7>Vn=U{%AD;q?2`n$Czo(>(oAb$( zNe?Ceksy`(;tApC7vB1ue4}DeSe@524KjzWF*b_DMCl###b5X@*GbCkq84Vs_68)ib_`sC)QQc282 z9D#}|(POLi?znM~^RF;cG9`mJ-OK{t5URA){6UgU?MO?%tb&h}dYQY(!yKvu?-(7?f{ zXFQh_!=E(Mm@xUbor%&*UwX+*>LVDx?icUO2Oq2ypAXkw^3R>8N7->1)m<8g)lFQ* zhJ~12YPCe%Sn1cJRZctYG5p51R51Oe#IL|r!xMONc z2Uu>7J+s?J`FYia#cCouiL4jHg@Lx88w&JB5 zMF1<$eXh54#75qSXA8HZnWd!Sh%cdCf61nGKK_ab2C~eBqayys7kn%c$Dw~jPPYid zZp%G@-b5GpmN8Yo@O9C{5?S#c*99Je1SieI69>KXa#mT@$;>|7@wgqejxREFMPmsR z*na>^r%U#D!HC4~wS8ocE^ssZVF7QmEhH{*BY2BQyQHx>{>v3$Z$@!0Q3Hav9~)vH zT(}F114a8@5OhubQD0-a!fFvIQQV9sGC5(;BOEtBLdk%O;)|9Y6`7VOYnX_o!=!Hs5)0d_Wq zi378s-r@0WNGH3y64_Yq-4%t!h3497@DtpP;N|h5GctSXcA=m+-_A3jhdep(oIpKP z)$@V0+c?t0au0Esfx;|#QYZSrmaIcK{^6a3As;oj!rxk<@k{G|zn&60mY3ij4NM(H zRDvjTsD_=rn<(3kuWuS$%n{EHO>f6w7rzGD3{8V8yw{GPdUaUnoKbt z&J89H%;9rLpzF-iesU2|obrYj$J%aKH@R8*dzlhawm2!WeLLkP6!3@n+;9l5EZ>Ux zmY?RcCBsJQzm~A%QkF2NSa(`ZUTKg&C@KO9zV+;$@tcG5DFSYWBmZs&kabiDImfAC ztnJ5*iM0zIyyd*-hX>XU&syhe8M>#vLVyFl2k1`Uyf%t&y6^0)ch^RNJ&@S*+3!3$ z*x^{esJH8daX5kp1Na52j{Ge|;YSKTr3NjKR{SO53~^8jm1hH{+~)yhX)=3}r(BJi z(6o}-gAs<#T8-T72CUFf*W}-62jtVzKSOlBtfDQMQ)W=tQzA}BI@P1W6ZrG1c9{=o z@Zuv?iP&N$P}k817Ey*XyvqmXQOfOXc=9#KC0eaQ3z}zOA~8{AYSJ_?-Bf4=Q9EtR zh<%!gE4I18 zW!nY_I@@+4Z`89sa(DGXug#A0!kmyu8sUzbCFc`6{AirW_`KuswZC#W1IKOn;7XkQ zh$9K?snZlp6)+^nWM8`S_4;cZGk7=x+(ccdRbnvLz+4ky#e(_+Eau&4%)hTKNgv7| zPn6(ncT8xZ3NNn1W8#9dFsPyju^;<#`!jGbQJ+ZWQ;n@Jz3TF8s+sz5Vo#GsAT2N%N2adt}C^xnx1f84)FY(qD%C%)Cy{TUquo7r_m->G6-F`U08 zwq8dc)ukDYqqH=kJSwUi3EIqiaz9?Fz@Ugx&Wz=mW9rKsIOCHm*e{8z4MI!}BrUYj zUFDi{AivemT8OJZRwimvqq5WL^a-b6-1kZSmTyF3&w&;kCND5RF$DbS6>1-YSkWs7r-acf9z}hmM=Bb1z!&`d6u` ztoVzQ7lVx=k)~cmU`zEHlhdJX6(rQngS{@Bx*(NV9DfxZ>MPp*8>eY@@>PP)tmiB5de$)`*n&i?N7h zBlEE82=)Q1?kqlS?Ax`l6?3kFCD~{!VSR`Aeh4kv$gWpV$Jih9dgp!Egbo!k272Zp zSM!&ZucY=nT(CG6Dnw?>#~22*0m$%qG}nN`!g_~_K`$-hPu}*AFJFd(AGto?jgUY#+I;(W|EERtS8VgZqF6`?pZxZLn02o1NKg(LlWd9saf&cR-yI z8%HaqSmBdA990VWpJlBEx>DN=wqR!ExKMPyo@D<^_)lMI9y4sJMu{;*QeZ{DTa8_- z!14`m-Pv=}L>dof;i82|OU4KFJ}hes*^Le~qpbQ0RT2&GA&|y2NKBI%3nqhgazFUt zP*w3-}L#h|pFdNnOlnpnb4kQ(Elez9nl-f+)vCC2|zuZM%^_-L7ngL!-Yud!L98R3) zjff3u;;(T5gJy!%7BUoQV30=t}$ZZ1j{qkb`!HtdvGn44+VUppWTqbCpwvb zC4EDNlPwP_W31&HVBlOI+pZdIv;Wf?d)||2M?b+{Eju2mq$~1{r=GcNps>t($Uibx zIFa1rQuY-2KoNYN+n$N7iEZ1w zJ>S7Szo7f+-5XVF)w>{JZT_;r+oe&fnS=2X613FV{#&D0cbQG?+y5*T|1ZtxRHW9C ztjj&OPv4(HFAj3b;JY$!FCIOt@o6eNIfUc-;<_$Y)~G_eG5a(`E6sv1z$HjS9T}Z77|%;+O*W zj{HEqTbr=M4p~~lkS(gPpXt0My$-J~^jG;?g*C2;%1U%ag9-AhdQ*zogMWEuC|K5G z_i4E--8TVw2YT(0jP#9oszLnka8z_F0vT}@UeGlSO%MuWGDHg2cd-=SYO#ea2{Lgq z0&YTp#LjJasnHheAyxxTTf$}YY4#MgxMg<|*8Q(oLys23kZtc*667xNTVbog%BavO zQ=_Z&riOHWO=DwK+zE6k0qu0=Vks~*QmUGoMf7NsRgW8;)EvZwno_ktxUU*e!>0h& zqR@5P!^P^4-q_D7{Z|+tq{d&*SIz*3kP>BgPZ!|86t1uEyqO?!x7G(ZY45h<1isw0 zoZz_-dcPj)hL$({;sZHI2>}6F0RO)GF6z^lZoK#IeO}#*6X~~hxqwR&mI`no>R)X;Dm87MiIF*T}@a*`sgVJM<9p&F{;P;P0y zm|u)>p;6mw6Bg~^KJyUoo%08%1s{zyhvr&K>L$`}xWL(=QPX=f;-q z5pYCWPdou;xSvVuVKm#y1kiM=W$?yjo9c^K&{lfvA{(Zqu2;)8)l4Ge$8sT(mDtK? zb5yI7?HtvYk9hLsNpK^7qVb}J;e5uU%$eD}8JN`aYRIExOXWy8vGx_sGT~m?=~}vK6+3=uZSQ--(y7rX(iUcf^^v zN&8?IU_Znxvz2<9PM+_Fih(0TJ5rumQj0h@y>6AhF5D?79}arLXUI}cFeH1fbC%tD zMC+dX{l5~|i!G%AQ>L~KaEX^7`b+?PQ|XF^rSl{vc( zDga5*)+|QJ^Btm{trP@(!~1EOWtbX0NQF5@g_q!u9wAe|5a{uvfq5Wu9T;c+e0tj{y#$WT7yCDOXAU#>`IMp4bLa zLL-}Sok8Q6c9coADV81hs;<9XGYnvF(qqBtr zQ5rad3zh;Gtx%{Vl%XA~0^&upF{u%hcgVU`wdnkQCc^{;Pwq#7+xZ$gV^<}1lNA+?{zdf%&V5h~ zT@d$4ioASJFnz^=A0iytj>ciw;I}xiK`S$18*d`{A#p(sH^v$jLQ8}Ki9G6x39kqW zs?)J)j_r_;TFKyIL&^Yu_I12d^kixlSEbi!aZmC`=ms26m_@hZ&qxU7?v4WR3cij= zT5fZ0jzT}uHC;AIuFy|Co1Zuv=~raYCl>B6I>}R+bt94+ z#y68t0%ql>Qr=S|OmhneO1#K2;VHLc?gkul0YhS#t3i$s<)R0TzV#FW#U0u=4gKaD zOae*eS%3dL>`Ksz&?Jx6sgJA)wKIWP!)9_AhZX<@}q)BNk8 zsjv6P3krTuKOoEHZ%ktRtjkGbrr(#^EOz<>oNt66J6W%10d^IM{{$O$>G%0Ie|erS zNcVVly!W_ue|sNJ=-(Nf9HxcM>3_Yccb)*8%j)`GF}XfhnrE%59BT$akDIS0Cjfe0 zk=IpE8X)?*!+F51cfZKE_br7HApSnNa9=K}SiT;5&31d-<3Tsj`Md|h@^XbzfdNq- zgj@;5^4>w=a2oj27D0YKHcnXl4u*c{nDGrYn{;1qsR8}mOY18X!Jlhgv#Ofg=(x84 z7&X7X8uj~nAL_Ec@z+xrKba5KPFIX}&FdC@2EHMs8#u(&KB_I~rdT^#dY3wCSnu6J)X0Y`LZ2_wLtM z#B4mw`OP)`eyc1)FNOJe)b>?Vcz--oB>vTAipp^W+3s;p#o?#xJCxE4_$CYDxVAgT z`Bk;OnE)wwgvO(F(-oK7;2ZR#jHpiytZ}d zdrb+PB&*05F6YcVpRcF=ED_V8t|r%QHN=Hskfw|WXs5HMpiOk=$CDD?3U@Rd2X<3QQ&%UMB7(1-wgTfdhv9n%sfP|0ajdr2EUX<$*Msj3Xfgc zV@I3SMk~j8^-7OC!JZFwRdc+Ao2%&L+JZPnvAA3vbCLAk#zx9^EoG&VHfN!R?haYH zZn>CR#3TaD*6{9b8+Hh44WJ8&B5c}^6!DDFF{KwA=Go-lm9F!(%V&o>*Y;Y%&NF@d z$+OG4%__)tamJE3?rxI+pq@Aa7yrWu%Djhuz$u|$%C@8t^v@s0dE?LwN?+&Uc+jpu zAdzL$S}}7!KfyTnufG{E&kl%SADDw>ge&pFcUWw(jzqv>vqFQ%W(ocm#OwL>dfY>* z3qZ5XS8Fz%WC4)03PF%!KC%>Z@?v4Q*tVv0O01Iv7$G@kwUDpLl2*o{oPNkHWwjGZ@I|0a5 zd};>}o69wzLqUYy7eW9ihW~qr(R0rR@TChh84#gDU>Q5(T{jFN|9OE=-*9bj4(pnx z*A^?BD7mjc?)d=98Zz>FC+~HsH9JR5Mow^~yE>z?Oc>CS&0`XoQUmwiIZ zi+vQ^<0wWL|JyN8I%`^P(FTS8sua~gB`y==yy^71tmJ6o%*H+x)l%up2#CSfL8v5O{Y4^L+P;rLK1W zXvR+VZKG-uS-Pz`Nc{7upFA$>mjOh})uhJHx2Jpl_l3N#X!bP=Qi*sQDk!=Q0iC09 zTviJto9p30k7K_H*gvJH#M?H;9yu(yWHGJMs)P$j35hg`_$pk__u4NW`SO z?Q${m97xW*JxZs6a*Z~O6ZOn7F+h#Mf(i9B@~gp}vf$bh-9K4Na%j93ut*<~KLkk_ zMZHL&6qr=r0;5M^m5hw~N~}zYt7ggHN~tArg%VTxf@%ZJSx^L3>PyNMpQ3d-wazRw z1JoAtY=nt^lF=uPDK3%5V3IgVJ~ddm)skxkUmC5ZN&=hKy162!vK6lz|9CXb(X~?j znm{@ANH`lhLeaFMZ=g|eN<<&bp-39Kksnj7KIT;!%j(rGA*8I>n>3_aLOphzZ{Yi> zYRht!(megZg}l!Ih|`>I3ZSx6zl`ykQR1RF4-?BapT{$zp$y7GEG`P^@>Cq-faExX<8(}SPt=0TY}r!GV&DlG&A7smVJKsSx> zA&jW<*V}_7d4S<(;y8A!&cN+h5`|YF_=F?UCOD6$wyOm@W|;Hk{LnMU1ssoD9&=CQ zEw^97P@u_KGIcNE(PRc~DzP5m7@GymenWBo^%p2U91Cn6tY+f6AWG1*9#JapNMSpl1QR%@{Yx5-mv#Tl1@F@ z*iKBTy|!(iuFcPSULJ`s{H~(|kndEr13}9X6RKRdY-1^5uiztVYX?4vN2)Jp>vl6Y z_beuN$zwx_<{TVy*_;D}xB`a4I<1`33BSunB-m^_&@TaFtE`?67V0B9R)A_?$O6?3 zoM}a$bB46yp;6>Z7m(5hwm)(P)wsbTo=f?j+$PpVBbr8^>*gdZnPw(?)COYDoi~=e zV5`|WN~#G1rV!aJm7%f#!YvtPBPl3gE0HuSXi=Bo@I$9>!$a>maP6;jHIboXe{=#+ zf&Q8-86nJ;+*`QXA$2y!q^h@_LRR5@I1+Y2zjvT4bSeoLhX4G}UP)E+jybpn7WXW! z7qcwZ^?G$R3KfXO@!&@=(ZRMkHdz*w>m(r0L*mjh|FYNd!Yzu#WFa2E%Bj((rh52G zzfLuW4;3NK!B$lq+vKBp5%*%L3QIYz4#$ZZ_9tCbu}Y*Y+MpkBW9WB}j>rfWO^;(z zq2WoutA*`%;+5!M(aI{5k0zuQg)kVwopUWCUrp7B(avLyj{Jv>N_3U5Q)owUWN}2N zF<5L7#bYl-xIDx5_xGBdQ|qY-kHxhrrvo4kv{1{t3z3bfs>MCm4LkHv7Im?bhsz;CmE++^aYIOg$g} zs`pfF`^@mM4h6h+#G>7JxNc=EX<5^+&GF6sA6f^NDYA} zNQb9)-s*GA#}m)ECn8MXwXM5$t%REA`Lvp1lV%fW5J2-p<8ttWa6zRG|7v(W>eZnm z=LJ}(wq0Ipz;;mH*ZrAR0TUz@pE<6C^ox>er93QX2ipwO0&T0FxR6I__xXhP>zzT% zC4gaT_A5E?z73Nkxj|oHpcPOEgz`-Z_(1E?r*%68j!o~TxRrk_=BCqJU#sx%?(462 zAF%OB&881KI#6x9O_v<~i=C0laAZ=833{0CfI1=^M{My8_Paj%@DClo&qsVqwg>?0 z>AWcWY1Q1W?*Z*VAno)D_z!@QHwVQ*Nqh%$)l^Knf}G+xLEq+~{QQ}W37{OiuA8a@ z>K%BCe?x6D13~^sUH~XFZ$g|0Dk6^AOs|zH6W8Bre&7Oa{NB~|u#$l_Z`B@5DurLtoR_Y-iub)+3 zuCL0P6FG>`AATDh5X|NXFflL$3Sudhn4NJDs`*(GKi;#63FXg*;I4o{Q~_QkmP(>O z$WAv|iK>zB8&KpX#n`!4DKD%oY2g7|20D5*$oVPBx}a-&mxB}`Ih*j1eF4Ray>l2l z!;0q7#F{orQ9#KiH2V~conf+v&2m$>-_A}7(q_|{nnD>hyn*t@7O_E)G916bf+zMp#ej#{hQ?T&QT8wOsWUxY3U z?1eNWhgZlI(fUQLkiJ=INT3V$kc*W=LZu}Im5LHuEkVkaCIu+s1+9eR=WiqhL$Q!S z4pT6|1?)jN+kJszbx|*@-=Ef&pL0(&z3MVvr>a|K+-%By1iWHCH=Ulg&Y7E*s$HJ0 z+ste5p;69*^gj9S?ell=hC67MR~3dFG;;m7dOXG#7d1_WHcML^OC8mHLJ}$r3I)3z z9&YtE!8g8&*8 zIqaNUlS=QUxIV5fh-LWkq6$umH$buGWSSd12wcsC10jvZ1kb1=^8r&+>jjp-%51~# zJnvm{#dvcVaW4*ajV4Q*lX6`$3glS82Gyz*JYaZYE^!;k z{UtR6?>46v9-?rItMBz~aTrtogQU|A^f%0InM}8I*T)Xz zw;fa~D@Kp3Rn!|^;aXf~4g&trsnt^R?w*FuHlFLc+l%^SanqO{9ngUXUfX^uVobGMA zP0QPSnCW@H&iN=uif*%mT4=0WfybTgsr&lEEIhURKG~qwjR@>~?b^_l~Qq^@i zR9oOx@h+zu6325sqb{3o$>Q3ntg79boSP{Cv-r4$_qVeo zOZNUO=-J6GG+ys5i;eq8Mv$q^y=q zKF2%@FR#O9zMjKBa)o9*mzqjHJEeV0uiLw>JIy2aaPIcex0=jnkeRhDEQq#}S-n!6 z3(J0QDI+SgP^Uf*jOX{NFQeRSOSQpeKXh$Qs^3%`pgf+Hx)a7Fz)pF@>Zi`XX+|;$ zo8>UIT}7E@fvLv_B|wQ|0Rtt5xEg3t)VCf^INps>+E8?VI&TNO%lgGs&r^Q&_&68^ z6M{50BKJx71Ou`VCj^j@%6dG?*E?e_7qku8ITlToM+nAiLq9oAyYH?Gz82?B5L>eo znh1Cvp5m#XK4_2vOS-i+U^9KJ>PQS!weTFX0R1_W4^wg*0ov#G0u)^BBnmlMW_N-ivJgLpNi%MRbW5 zCX@NOzOTR?akaI9x77yRy+VK{$u~KysCN%5Ha~0C!?mr=*SzWKOoG^ zLwt3y2T6SS14>CuATpWx1=r5+{XtZpgN>1FEuK_+Tv>G!?{g%Z7z%`c9x*w|)l&|u1l+L6 z9-WBiJ1ZL1;=JV9`^F)=s*fUDE8-Jn>5uOOi14zlQ|S#<*=!^Y=5BlWoH(sy!em)f z4opCR5h>`p-VJxVN@$*h{iGZQzRDFW${VRy;ju{Ik9*mbuz_b!u~39iuu4pXs}k4# zM#W5q%VfiG#+0di${}tr8VyI>Q{R|R5IKX>(le~Hpds_>5kWfTM+NJvj$O~IFe_N! zKvzkt%h@v~hW+8o`kk4rJbzJa^&B+``KKR;!-mV+h2Jd))co!7W&}%}4!tCIKh1uj zekl9FKD3G1G`wa}Px@@JP&G1DGKE+dJz3@~MzfJ$`P2!uxVqY;AD+F4r|COx62}ox zBAu1oQ9aLW@Jr{XT*LLR84GnIFv1qXfPJJRSE_&(XOy2aYIuS@iuQzy z1b!$LrrMBB))?E26hb92S&?HJb~;u5aCU3~{VZqie<10{Q9_1*81j`O4`KhqJw%fy zK%RjQ+{ZdtT-wGeJnIJ4N1X{H8d`9&;`4|V4a-I^c~!Y}zO39eXRdl@~Qb`ZrQoB*J_yAu;tikb5EKL-Gl0NbrtwB{M$-766DFW7crYr(qfz8M!~7A zb*&L+0-q3xw7WKleEwurg1}={IID&h@E!*fz1D)_l+A{f<6)yw21yhn}e#%8La|x-t9_MohJqbD^$<4R^8$~bUB~$tyi*JOxXy; z^^;P9$FfBC52D2vf-DSEKmND%9@Po!VE@y>|9+F!<$?+Z^#$dn2 zqf8dzg*T0;_lMyeXKa3<1tcmPm@Hoje^F1wJ*o&!U5ur~UF9_RPY*tG_pI^-c%J8| zGFjJ03Rq2s`A2CR676}jgmTzS^88HlF!?)IMIN#@n1PRpwK(S3QD{s?{qsLSZTXIw zeGUZ8w{-KC;`ra99#8XaC=lAv1Ul~Ii-QGA4$%iGV85}BWhsMxGJQcGKZH*19l`U> zG29{iVFzy8$?k0p`>J)oK}4C~Ls7WuG=J6E&&Kub%P$L7emB;1XW*Wf-?#v*O(+~T zi^*tw*w0uh5NmBw)!x!z)h!F3i2U)>hZp-aur-w5qS8bet%WI@@%xwTM`MOmF#cxs zdj`00cPdh4j?G5kEIAL!`Nl)pZ%E$sx9s}B3(=4vNKe#M$}}U?_?0{U#PxrQ;HrJ2 z3MIoSeQb(;Q#E7j!IEI(C|f8j=YYIrjDaHfG&i;(|MVY1$nWkW(xXoxc=_231=H|3 zOTdmo>KD=FDm1yyR zjb=kOdztR7o?%xUIo{Jf{z&ZN| zl%2ClD1ynXuH3PNTJ) zBno61j3GJ7$O)jUJCICYyw2gW$N91;ckDw+^1RF?kZG-WL)uHhGI?-7)-KkKra=V+ zqAh4X#1)`8N26GdD8FU%aIeZ^;7g`e6!=$RO>`N!)%n+x(qJU6pSPxHoGt}6!yw}v zG72RSXbkesj|5qf@XXhzAfCS9kqs(!Pn1IkGT%3G?3S7mX{%-0$_!C`Q21b_a(Lzc zbhl(m#txVlZX&Yo38a-d1%pfMojxjM&22Wz`%~!V*)j%C8%C4FdaY;} z|Ld(n@%q!2kPe}$+!tvhRscI-@BY^&KG;nl4eei}kR*A0>OVu))@(&KVLtmk(Kxk) z9-JWXs`q!f`_g{m>hWH-6HK)xc*crt`{T!Y)<^03EgCiR=8jBcx)prLA+{h7P(5X6 z33dQ)6w*lDP}qgp)!9sk$#~|mDmHz6L+Av2)#G?Bt|mF zv=DY|qRRSoc6+vU*IZoryjQ~LDL)}g%h4F%x=ig+m7Rrj)Hc!&*i9Jx76vgW{kyV&h6GFYFbAcln#H}K!hn%!O1KHMQL-7_)w@duB z(m&DRC1==H|Dg$Dl0>sV6_DVbkPc$qY4p`M<}|-ApWpR-4a+!LKAvIgfp`AV6q7AO z8fGt>nHD&6jOSombj75~WhkO|*>|ni`Mo2gP-Gkj#lAFS9I|k+*qKBYR2?N4@yd~5 z%%#UidrgLZ15B>Cm^ad$+B7O!2+F z8@*Yl>-+1y%*)>opq9@c0tkJ&PE%|Tb=x-(Z`XhVRoCb7uZq@WmB~l$l-=XN6qe#P z;~{=9vjadiRWL>Tc1N3pJ=gJE0+{q>)4jy_FGMLp`~;>(5gB%^9hWrwlG#g3O> zRB%)l_r?Z$bVleLG=A^x0RGd44q*V~pJeT$m6o6FV2&;CI+0yzdDnkaY%9h1s_m?qcmHq;BBO;2w{yuEa+o^M{3&75y6v>@(a#e zP*zPc@BNAgN$4|>$-GBL1+2%+i3ZV&O+4z6CQ%W7x%Kvh@%h$K?}v?!Pe=frrbINwdXtHq`DejEVjkqdLT`9jMws$DM96^>X$5)_?yb6yX^MBurX zKEcG2n%xdrw3&CR?JvjRB(LG)@-e^;_q00FX`(qb3_P=Og3GEDaF`_KZoef54^D)& zp>bhRqsnMLT%b(n^0E8a*V)67C@f{pH0#+ysj&$Ewk!uw`snI5GznvH|fZ*QPm zJz0BJY)y$zv`rF*K)b8_VCyS+Y%3*yo1H?MTJ%;)RXHg;=vX$Ssv^2{Ol_>j^l}y_u8}kC&9=0UiVy=IL-LbeBROO zF^g^Kdi+gU2t5U4e?A>;FwSL|=L!K5DYuSZDF2ffd(8h_cKSNw$G_S4%J&YC@9ZM) zzCzOayj6}G9=@La{C#gR_2eZ8o#6P)R7OVlzs#Ng<+=5F?Bkv?$N9irc9|3E-d(vV z^o9J-ivg0d%Lw&(%Z>Mn{#~1-CN-StgMq|whA#T6Q6P~*pMt;}5up*+S$s!nCT!md zQX5-I6xcD6rb3$aS5R@#>z1xfy29IhpBDef8hMIZ0k_gIrwBY`|0oO7fk+pz01EJ$ zx#S?yj)Md5aJWr6s4u0s_TU0?d6)NiSx9Lawhlh%a~)>L}@9Ng(^sAcL?%+`OX4mKXu zo~g0)aDF1AQ?KRT^LYM6N$PS1+Xv2u$k3*9UzHLncKPSSAb2j6 zIF5|#>t+9Refy35^LYD>p8Ku5=%g&~9*^7o2I+H-&?o$B;`#%j=LVc{BVJy8j=s%1 z?`u8JH<PJI3xPJmtTrLw%}Z5**gfS|~+n zW1<*ZNJ|3rpffY10ZiV3M+8wsM`WnyE%dmaEufW+iN?K~{J3D93Na(oNQ)A2k(4{dUMw1g14H{O^5R4~fr43fVkX#>iMTm@dO-*{&SI9n{ zJy&{V=p(g**7UTDLU1_hX~4aTF_6o&inHT6UL+_6u8yO)rOc3h>a^*ZoS)pAynsfh zD*drAmv`{OX9Y)P8>axM5b&I0%2ol^=YjFULciPNUtTj-OzU9z2j)kY^(bj6Kbs#5 z&?9}zxYE@wKNy`820cn{Nn%@P%A7}fS2kXdz^Pe`q=TEvT0lB&z%rRYq2&Tp_ihe= zjJtFoZDBWhYw%(Mh4KGSvwKQUc|M^E`X=TL3qo1&>Wm#Pn?8Vt}uX{T}`xTA%Wa9BLA2HCh0o!>Jl+d9J_ zB!xGx6gneVtbr>7(l;1D$HQwu6_w|NJJi~sU=L&M_mq@BY$SJUgr9-8ZosWq6JKS& z72yRgw7yQ+Q5UvLu~?7&SAkx(Oxu@RJcQ-me>3B}RQ0));Jg6=5AOk3hA2@p0{fRa zz8{hjG%3x@wkUNcv$};7N6F|&YV(X!thm8zw>bOnoZ`76SG|Qd&jdMscIuRk*6T&_ z9DdNa7~{}F{gt33aY)BKD;a(HwTKyd!&HMtk2&qYYM(p0)i+hVl{tjbEGd2H1(j^U zfhE0Wba65-57{sdH~3YXJB8e5UhemcrqkcBd2-vGSKOUDfv_i}gs)UScS(7y-<-~X zEMtdZ>;?X0NR9)w*WTx89!r4#>R}hrFa2w8!A}TaIlGK?$#EQ~R>?)#RD-Gov}*CV zzd!Cd4s+!H_o85s;0-95C(UJH{!7~GxJID)S7u%G7deQ*o1PF5$O{~vV(HruG`3t_ zqfyUm8%#NI5z4K9aLQ(}8%YC`w6!#ie*$zlCh4-)%~2lIG?u?KSvgYV3AU7H1Loq6 z+myA;=HL%bEQb%fkj2On-x)!y^~op0f&jUItM1X`7uPCpFqf4d)_@v?uk5E}dnb*$oN zmRGJzDW|8ja+Y51KCiBNea{|%${Vicgf!0CV&R-F+A`v{?m-(L-Nr28$j8 zd#MWd$s+vPv4d7x%)*L&XycE8zL;T39VAWNXS3^Cax%$UM_3(FCaKkXrmZWn{$Adm z=cs*!(Di*ie3(z`O=jpm`5lo=lT`;`2j~~V=J^2Uc%D@}q}2JQFs#MvLb8i4q36BA z^}MOo73O&i%*@7cYzV$TT^428_FB@k9dz9e7J{#K^WW6Js@ zQ%?6#hq!^@xgFKwze|<7ep7WiVmg#mTL&GS@?*tRs5+ANMa2jjI@F1Ul8E!i%sT=J zC*Xw$c%%&dTfY4ctdu{lNjklCPtfH&a3Ovt+0ntM{3z`rOXcdL|Inq<;K96U2{?|7q<5%@+Z zZR2j3LN+-7)vNtvxO$enI&hu1*M9-ql)dC$W$z=kqVNKw4cKN*8E=@^sy}-g(I=hj zjBG6|1h$-9aT!2s~C;TINY>E~TYCq0d)-pi|3$ zJbJ!<0UngZ#XSIjZ|ThE`}2a=_H*y)drg+J-_6&v!ZxGNjF<3RoZrXH|1SKFiMpu4 z<0x(SQdIMAxs|40QAcMfC0>Ae2{5pyf!r`W|ASFF?Lf&~UAk>L>m7vj4p@5J-RXI_ zt^+0sD=kRIjpTv(t$ynVH1Yg=20f#xA>7+oPGtZHBB*?gF+cAg>pT@mu?TGHu_+ zr%s}3%{2Cvt`Wr>mZK9FdXSUUPo-nBVG0>UdNL{&%w{7zTBTRELpX<{5$0cfc$slU z@EdN4U;O$jqgclWeF{~Uyw#bGf9$~RIaU`kw?!r=_{EP4CS-D(sXE~@9CkziQ||+h zdsw^KIoMBH$xMvz*C^L+ z?IQEQHoBH_ihHmcC*HhSMQm_sO)qaF7^Xpa@YOmf>ROqle3~Txb#$csr0k1EeK^A!Vmn39tKkaMc zii!`V2u*1t%*9j?hV(!%T3o*$AJvhlnvIO>{7_+0`58>8a{(P|cQa=-xvB}pF4&^2 zpjBlNW`v0i8VNclMrDdB(|T>(IJqa6%9Fnab6lJPA6J&9_U0RFVo*o=Dnwsy(M_fm zHHaA*i^Y2O?;PVRo&AG;s77Wh+k|XKfnrt#=kuoGmDzc-omh4IGNP2ffxg-64KCJ)U;aSaTw1%q2Q$n}>IBy{s zOD<~rz3|kH2NGU=34`n+)Z1UkJW%3+;EWePpiDh$CyzSdA5Nr(6hUqlsZe;l4-|py zMk_S(7a}$|sy`2uK8y#Rzy1LwmXDy~%v^5QWQfFoIIxu%lxg>sUqwZqZVVVNuq9U) zSTH~j+g{#9vO4Gnr^Pz}v>A%|kK?e`s@AMtAUi4Spi(Xf7eqeayd$MLx{wnn_v-To z^jJ8E)KP-X79!poaDILWR{&o|g+=$YLc{B!P8x`r86|Asw?&rZnQ^($rD3V$L&bhc zE3xA0uu>)mi<#MvRuzxgw5;sGDt3LM4(^}KBLP9EV)D5;O|*MCA&q^3tMe|g=`x+>rZ|TjnQO%T#G0^&yHO9h zyNt{wSSsd*DPk^MGLfLWnB4N~%B~BfhGdd0aH1Ux@ZfoJAlrmp)HLH_OF83J;AxMB z(MyU@$+KjxGEV;JCxm$a&$|YoYy4bwk%78@B}pvQQoNfNiCKj4(y}3L%H#&cCEDc` z*X3GCH`R?R>uEfTaqrdCGhSS&4lX-6{qsv<#e;pRunL6B7!FbbZVfmU*}gfioBY!o zjx2NuXf#?1&q;(BV#nX0-)C5Bas;}JXGc5}{JcEPc-;hPJoHf*NjBW5aHTIJ8;!0G zC)j{m+bF|oy&OsvE1Z@p51IPUGEge$u2EOq>pJa_4}0K#vDyB!G?|#-wMSxOl=47J z3@kzsCBrf}5Z>D6^ZgvZ3|qQJGGRrFBnYe8>T6?g{L;BR;i78yB0_Skah|)SFgtU4 z9)plYEIvHg@99f92LqE$7AKw*Xmses<(xFfhMo?#x2k(Xlw(k;c{rJS-s4UYKBlYN z?!Va5t>=fCVtNc(Ap3b9Sz{3fNu^+TQv8!QoNwlIi~x{Eb4sQ@S#8oC49&S~2fA>B zg35Q~Ye3vo2LZyNL0pJwa?dSD#vY3sQ}qHz^f9hLaC3(pW#2lx^?ykh|Jt8iC??BD z8evIh>y1Ji{e1c(K8kl8cq!;4Iy>^(y8%~e&4uVLuICv89h?t!MNa(YbCdH|q>C`n?0$gH2S?O=*3*$Z!&Rh^^#5X4uft}Fgr%3+glTcm zZUa_guN|r9XgZ<&=jzJV+y*o)yqq@Bh7TUlV4L>=Hiz6Q7DEwdqNFZH3%Xm5j z&qQC>jX)9CM=QHTswed*wYfkh;LfCO?NwZC`(Xq96%{LU+J&r~BV4WmS>~8JAL{Il z1+Mao)p{`GgQpzngTcW_6m~?bZi*@Sh?zbEgt2^Lx>5Q}zez@>ETyL}i>tI|u8ZbG zW?-7hs(&T|%4{kY!?p9r5!7+5doHI0X+zK9&$#`UGV$-NFAtmUS^%Ns3uDKwe?7R4JWCa7u#YJUjwXHsw z??@A)D$KDE%UjesbR!sO$OdQpoKb@qP;5cQ!}CbA_=HXSus0d!6tf>hO5jpNH8Zv= zn8lTudEPv!$6(W`;8MuUS$Ggv>>Cz^Z>4ZOy?wwSggU`P)iTq(lEo z^Uce=>u~tRkqx8KhfSyk`@8?LYUV{=J9G`yk%ar(2h?lL{a3AnC_1?wis{CITvBRX z2sJ4wC0F1ylf)OKVKpj{NPa|VZFk`2)Wp^qf(}Ed^4NTK>Io(2LRa^pQ?dNV40S1X zl|cAu=UNkXOO+%(Se+@%TUaD+hyj07Y{=89w75-I>tQ3Sz7a(<+ytmBS8{Mjgg|^D)%ab8E{8CCjsjCJ2hwtINl*c;qYo zv;4~@*zo@B{0fypjE){rCasm@S!d*^Fy;Ukm_rYEpDlCztI6ofob?jpsJ)chW)UDN zU(IE96Dw%V*s#;xB>nsSN3BwluEYPcWsDBODeHfmEsHiccX&!QsW|^_Jq*#%k3ATF z#RseDdTvid*z0k$vxEbl6Gmg#bTb7u8CXX~29qJzO|Cb9REQMPoZvV)t_NZh?oSL^ z=;J%9`h%K?q!MSeU}_679KT@*PF)FDHh<|c>@iQ0)jg`zY_NxW!#IpwQjBWG_Q$+( zv2r>*OFeSl6w352q0!V@pcV1><#pT|;Q0c6NCTsqUKmTNl%gH>eoM{zCUXX=nk!RZ zLr!+9?Hg){4ZcRX!I9zvZ~Rka1Y2Z|e5^XBzvz1eV>ispZAuW|QTDzKPL00v%d!6H zv(}%5WM(pH7__yZ!tubrqfgv7KQ4LaGPt|D1;NVWn$Caof0F>89}us)G&&hMr9-~B zJjIdN9=R-3VM8(bh1~WvJ|i8_!6W}%|A{&b34RK@zY#@0Xwz2i6YX1h4;;PRQ)T`L@DaoePBdkO6CmW6(vN3vgT+w2^EKn7PaXryB-`p$emwELb zv^=KiyUvgQFXI%X>9zzjF+QG)Ngv+Jn4Ug&%hro}5honjRVI}($ospNb=Jt!kI18# z?u73^a5%ITKW3x+gbFjiXw1Cchfnh?2DS~=p{@Ub!ijdv|4HUEgA3_IGr{BrxiWN^ z&>#*f3PWK93MHnP0bKfon*?g|E-TJyYc9NGM&G;3rxfkouK;O}CfJsPIx7)?iv+Xa zS7jkV5!Zap8ncAFrhvwD^dypVkNy{k_-t~`UM-o8jdC#~CxlEKU2`?L@S?DeR;Xav zY`*fXzLm5t^J!`@74(Bjt0j>DA-+Tk(?+>*BqBAR!{y>MOR``eTcSykBGmiUB<`xD zm9X>Cb$;=Uv&<5;m4wsIwbpKm0rq&)&jAcl!9>0n*0Vo5Y3d=Ip75Jn;pnH>9u8mm zg?c;8>7E-geG=}7wu5|Cr$=8s^^D7?R9QuPLkn`w2w0r8zHwp6mH4w<4E8b9U5CH@ ztK%P{zm49|Mnp9~r5?ez4fi;QS)e0Ke^HmU4f2$=SZG7T{GV;|+XPUoZn)O8@gk8{ zfy}0~UqH0&V;xnV;HXSfmf;>%;lGg>KsP)Gkl*ZKg z;&)!qh-$Oe_x-2^d9B_LR$f#SunTIhxXxofEBaE0MC=8Zi_o*SbDha0;q{W6v^m`5 zpB!w+J*T|laIUkz!mIBe3?M}&l{J;&Iu*vD6~fe`A!-2b9#z%w%*&Y9k?-alSxE<0 z-vFjT&0XP7G-GXF$}@M4|U2G1ZkF@_1{6j>mB<&shCpG4)^1zx*&ua zadIq^jyzm9rt{qe|6M$HACE*S<^qI0uc<9!Il(M`$6QOw4rXWC4h(I8-w$#<7za}i z59R+nv@llDWuVdut6CG}#5@nsa%Yww;X}CU{z`0|4CGk11fOoV05ikLxQ#EXiJd`J z<4od^a1`3Wg-4A=(8^oM63Hw`ZAe7kPw{!1zcA#mVviVQ>ea_)_TT6NCkxb2f;u-a zXc9346*BPviy;S-#7_xEa=oQUSgJK9IbY*{AP(5Z#)IY^Vr>VfGXOQcE#I4*FGnuk zec49OF_(6*x=Lgp*Hn1JzYzyI2d|3)flPeU+71W0<~|@f@v9C;F0xai76Jfrz-1)m z=ntCeX#=jzj`QsVOV*G2?C$(!)}s`HW2?=-Jb%>VLWVW|0mcG~`F{ay50mh+C@>05 zuh7%fD!W6O-1{!HTsOA$LcV-?QF=%|VI2fSxe9M<22 zHLx}|U!|taW2>ikku}B5&zI9}X;W<5L{>uMbnKz<`xSm$YZ*T8`CJ;RhIyNlZb*LT zcCep9rtlLN=bF@?lEw@(rKcZuox^yPMyo16CyVJ7S4!t-GTP9^WUmWP0TB3T&7 z11#Ui;{*&bQcRP= z9&&^bQDU(O>Mae03(c~-MD!}(skPR!&@YZG;+?sn-Tw0q-&se1inCJG};wczxv6?+h5RkDr$IVy}O>`8?W z5G3_QP&ChsDQ`{E{W&w`$oe!X-DGH^soiIW3>h+H$dDmJh8#JvYnBjhTPj$jM{4!1 z;S$1a#8>xP!jMu4s1@r?J8S~3b!&RKXP)orh1$JXC@>gGjv=6A0J%s(tObFF7}11K zfZ&?fD3B^sNeu=ANE7YjkgJ8@Y8DH%OOQY-!?OvzMg^*_0lmFOcpz5AHjdh(_@p5S1iGyZl#)+P1SH#+2D8p^hIj{!TW< zHEDVIQjmTz+X^2tWXO;qLxv0)@^Hwmh``EEM=|On6H@uyQvM1(rvMm05j@Yk>B*|vMOND<~ns5R0aHcdCm*KfgHv~s1~2IdyYsD z^ltdYQc`M{crEAa!Xx(mrY3;2c2K0`h5?{Jj`(#X{*Y)eeGLyuANT;NN#rdM_kPKc zFm($3W?4(@9f5k-D@+;?Wlt@w-3?T*1f4Q0 z`bAnm$q1G)l1oV@HoK>u;B2d_fIbI9#7RS@(2u?Zx9bQ%YPomw6oIAZI)02!kAxFv z^1~Y?zL+C+z>2*L*3L42&|@*1u`yRbh}-X}WFs2u8fjxS z+lM1Dl9U&$88T$ZkRd~c3>orp%Tcro1c@lzn}@mGguO`F%c@6c^_CEp&q8G7vQ$Fk z*XF+!ak#+;2sZ0LaL2CKCE23jBm-!;R-S4XDr^OMa{@JN_)vl_UVRJ45T0NZ3#XI` zHzZr*dBXf)5`#@h7D#HJDa~5<=F+}&8*KkBg?u6oRt1*+X+7GHBr+du#=>1q-6~a4L0G39U-(Ol6BloXpqtEov0}chY})8Gy%42>73aW~fiS z#F`}10}|S(Y5`=b=`Yke3^;?6yn+SKi6nbuXgNPu^jN`OUt0O3%Uo99-{ZMz61fH) z-FmD;$G~#N2yYw+VL&cc>=&mumu78|?Vu zY{-3{Gxz3oY9oCm=;j2zE)C~2hP4qq?OehN+F{9_&?bUygZkin;shdhOx5T(ZTsn* z^lW7Nw^zVO1sN_+ix zuBYGsgWsnE2M*AXA-hSQ_uS{w)1LNpy6l6O(U2j#Nsc@2xan`to;|d8@7`(tE#LM0 z{{8!>ze9%((U3={>7tE1Wg~(EJDyPS?mPo7a(n31Co7;KQT_~TOe1VE8 zFjBIjh4V&gU^Gwt6Lv_>2IL5!A>OV7=%}S2z(at@Nr!;f0L37%Fn}i+TZ`GssSE|n zwp2tAWJ01<1V|hzVQZfzLT&{B4Eiz?9L&^2@^O=10Mz9cCMPBZsH9rB03cf-Q3`~G zMw8H#W|bmPoF3JsiOeh037bo8n!hkKWAxj}3TR@kWP_c?p7`KuR#uuxK8wwN_} zSZxc2aiS!pf^`SsXh$o^A8-c1BeYZKFj-R1>;Qm^sxC zors}8gdo||vm~UW*(NdjVU7$#r21|7W`ttOFzK@Dw%?p()?ddz=G90iC7{9s0qkm_ z5E13&FZ3BXS>^T%%s5u8AL|@O={JVk$R^JSPSJDbbXt}#SuyTMvRsy=bL|1CAIRD} zx;#GWlsx1SBCme+tLd|!{VYB8+;gYnFMs*V;rjXKpHHWse)@F&=YRg6(MLb_QM&ck zTWQFU-6Su%_+q+u1M-Iq*)4L+F~`u${`t%3;*IZ~e)?$>Y4!c@-$Gye+SlmJC!I;> zJ>xt&@x&A8hd=xwedqe?>5o73A^P@p*U^wipX{m#EESBX%IR`MR*#&*^X0onY%SH- ziUNG8Bod{Yd8yGl1Rz5K<$*+rksgVQ$N-wjfe8MqfX46D9m3%;+bzG>U|@{AZnP5h zQF9QJ2R$X_DJz0700PKMfupb zq+Jx1kVYl&E>7Ute0}~$i97*^;8Y4KCaIP@-kG9h+RL2n!-f>8FMJ>z{)F9JD}cd) z16uq#j=FANas0$OdTu!RiY++y(GLDpCkcWCaem}vagRYDCpVhqc$OAyvnm;)>R?zm zwo7b-Gyyr$4D%871<7AOL+~&G>umkq{kipvyetpLHP$Af&$!l>8H1BY zl6J_DBV7vcf6|klL^s@UgB_o{A!z^b10R@<&pGEDy7}gtN5smIBU;Wo@4U_Y`zm_Z zyWVB~TF$-x^{<~utl#|2|1?EpopQ=4^s<+|jNbOPx6x}}`&t_E=#wLU53IZadybCj z?RB+{fXXBnl2@7V3iZTNG{Ic2>PHATB0j?#@bb5|D1!DTSvoq;1W5*8mY~7}p%%X9 zl2zyJH|P#pTKh1d1mQT^3iuC#JU}1qD?3&Dk^QZVFC}rD7ZU2JqRloU0)x%nfe^`tJ*z!d zHk#Yolo$?UAGs}Cdj3VZYB+$I+PmtD(dm@*a$=NyA~O9XHhUW9I7ZvXZOJbD#4(IMr+S7ljN^gw;HS_( zT1~9m%knuwy8bPlb6qzM^$XbH|3ML<4f{W(9p?yFyp3%R!#N}TqI8Q1mztVFF{!MD z;S>r2ztR28dVSCs~c9*>2SATViv|5sLpZZjK%bVX!LxvpbQpnbK{PsKOt#5vd zohxM4*=LSShyLe= z!1~6u*V4`3{VrW~_0{yHFMoOX^P^aH)msQNQI*pa=`8`%^OzPlaL00bOA?h#5Kjo? zNniAhWqKq^kSy$TBS($4xpGA9n<8G!r4d&zD7G_53GG^<74m#G5^dP|E;$yM(p~b#NZk zq5fD7USi6TEsoV&0tE>@C&y`uSPXN8`cJAW*A6+td11Uh&vrKaDOE&7y*;%;iAX+$ z!4y4js!7^5;ADjm+LLO9?tHNRz?Tbw)+SJNyFyM_Au33)jmDlAZc9m_gyN)%RSW?3w5 z$nKXnz3EMK#b>Tqyj}p(FTe7YG-Sw;EQP%K^?bov>m({KF8|6u2z`OIh1?YG}P u{T2E5Z-4u=EbA?Ac?%60GGxeZm;VR2&&h`sBDvH60000 + +

+

Next steps

+ {hasEnvVars ? : } +
+ + ); +} diff --git a/mirror-2/app/protected/page.tsx b/mirror-2/app/protected/page.tsx new file mode 100644 index 00000000..cbc4876f --- /dev/null +++ b/mirror-2/app/protected/page.tsx @@ -0,0 +1,38 @@ +import FetchDataSteps from "@/components/tutorial/fetch-data-steps"; +import { createClient } from "@/utils/supabase/server"; +import { InfoIcon } from "lucide-react"; +import { redirect } from "next/navigation"; + +export default async function ProtectedPage() { + const supabase = createClient(); + + const { + data: { user }, + } = await supabase.auth.getUser(); + + if (!user) { + return redirect("/sign-in"); + } + + return ( +
+
+
+ + This is a protected page that you can only see as an authenticated + user +
+
+
+

Your user details

+
+          {JSON.stringify(user, null, 2)}
+        
+
+
+

Next steps

+ +
+
+ ); +} diff --git a/mirror-2/app/protected/reset-password/page.tsx b/mirror-2/app/protected/reset-password/page.tsx new file mode 100644 index 00000000..7b7ab951 --- /dev/null +++ b/mirror-2/app/protected/reset-password/page.tsx @@ -0,0 +1,38 @@ +import { resetPasswordAction } from "@/app/actions"; +import { FormMessage, Message } from "@/components/form-message"; +import { SubmitButton } from "@/components/submit-button"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; + +export default async function ResetPassword({ + searchParams, +}: { + searchParams: Message; +}) { + return ( +
+

Reset password

+

+ Please enter your new password below. +

+ + + + + + Reset password + + + + ); +} diff --git a/mirror-2/app/twitter-image.png b/mirror-2/app/twitter-image.png new file mode 100644 index 0000000000000000000000000000000000000000..57595e662c3b56c9a1e6ff5e9b6bf43d5316e1a8 GIT binary patch literal 289886 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 z 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 + + + + + ); +} diff --git a/mirror-2/components/env-var-warning.tsx b/mirror-2/components/env-var-warning.tsx new file mode 100644 index 00000000..b6a193f6 --- /dev/null +++ b/mirror-2/components/env-var-warning.tsx @@ -0,0 +1,33 @@ +import Link from "next/link"; +import { Badge } from "./ui/badge"; +import { Button } from "./ui/button"; + +export function EnvVarWarning() { + return ( +

+ + Supabase environment variables required + +
+ + +
+
+ ); +} diff --git a/mirror-2/components/form-message.tsx b/mirror-2/components/form-message.tsx new file mode 100644 index 00000000..547fb9f7 --- /dev/null +++ b/mirror-2/components/form-message.tsx @@ -0,0 +1,24 @@ +export type Message = + | { success: string } + | { error: string } + | { message: string }; + +export function FormMessage({ message }: { message: Message }) { + return ( +
+ {"success" in message && ( +
+ {message.success} +
+ )} + {"error" in message && ( +
+ {message.error} +
+ )} + {"message" in message && ( +
{message.message}
+ )} +
+ ); +} diff --git a/mirror-2/components/header-auth.tsx b/mirror-2/components/header-auth.tsx new file mode 100644 index 00000000..49072e96 --- /dev/null +++ b/mirror-2/components/header-auth.tsx @@ -0,0 +1,68 @@ +import { signOutAction } from "@/app/actions"; +import { hasEnvVars } from "@/utils/supabase/check-env-vars"; +import Link from "next/link"; +import { Badge } from "./ui/badge"; +import { Button } from "./ui/button"; +import { createClient } from "@/utils/supabase/server"; + +export default async function AuthButton() { + const { + data: { user }, + } = await createClient().auth.getUser(); + + if (!hasEnvVars) { + return ( + <> +
+
+ + Please update .env.local file with anon key and url + +
+
+ + +
+
+ + ); + } + return user ? ( +
+ Hey, {user.email}! +
+ +
+
+ ) : ( +
+ + +
+ ); +} diff --git a/mirror-2/components/hero.tsx b/mirror-2/components/hero.tsx new file mode 100644 index 00000000..6afca6b2 --- /dev/null +++ b/mirror-2/components/hero.tsx @@ -0,0 +1,44 @@ +import NextLogo from "./next-logo"; +import SupabaseLogo from "./supabase-logo"; + +export default function Header() { + return ( +
+
+ + + + + + + +
+

Supabase and Next.js Starter Template

+

+ The fastest way to build apps with{" "} + + Supabase + {" "} + and{" "} + + Next.js + +

+
+
+ ); +} diff --git a/mirror-2/components/next-logo.tsx b/mirror-2/components/next-logo.tsx new file mode 100644 index 00000000..16555821 --- /dev/null +++ b/mirror-2/components/next-logo.tsx @@ -0,0 +1,46 @@ +export default function NextLogo() { + return ( + + + + + + + + + + + ); +} diff --git a/mirror-2/components/submit-button.tsx b/mirror-2/components/submit-button.tsx new file mode 100644 index 00000000..c1cd9f87 --- /dev/null +++ b/mirror-2/components/submit-button.tsx @@ -0,0 +1,23 @@ +"use client"; + +import { Button } from "@/components/ui/button"; +import { type ComponentProps } from "react"; +import { useFormStatus } from "react-dom"; + +type Props = ComponentProps & { + pendingText?: string; +}; + +export function SubmitButton({ + children, + pendingText = "Submitting...", + ...props +}: Props) { + const { pending } = useFormStatus(); + + return ( + + ); +} diff --git a/mirror-2/components/supabase-logo.tsx b/mirror-2/components/supabase-logo.tsx new file mode 100644 index 00000000..96a56a54 --- /dev/null +++ b/mirror-2/components/supabase-logo.tsx @@ -0,0 +1,102 @@ +export default function SupabaseLogo() { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/mirror-2/components/theme-switcher.tsx b/mirror-2/components/theme-switcher.tsx new file mode 100644 index 00000000..d838e404 --- /dev/null +++ b/mirror-2/components/theme-switcher.tsx @@ -0,0 +1,78 @@ +"use client"; + +import { Button } from "@/components/ui/button"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuRadioGroup, + DropdownMenuRadioItem, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu"; +import { Laptop, Moon, Sun } from "lucide-react"; +import { useTheme } from "next-themes"; +import { useEffect, useState } from "react"; + +const ThemeSwitcher = () => { + const [mounted, setMounted] = useState(false); + const { theme, setTheme } = useTheme(); + + // useEffect only runs on the client, so now we can safely show the UI + useEffect(() => { + setMounted(true); + }, []); + + if (!mounted) { + return null; + } + + const ICON_SIZE = 16; + + return ( + + + + + + setTheme(e)} + > + + {" "} + Light + + + {" "} + Dark + + + {" "} + System + + + + + ); +}; + +export { ThemeSwitcher }; diff --git a/mirror-2/components/tutorial/code-block.tsx b/mirror-2/components/tutorial/code-block.tsx new file mode 100644 index 00000000..9f1b13d6 --- /dev/null +++ b/mirror-2/components/tutorial/code-block.tsx @@ -0,0 +1,61 @@ +"use client"; + +import { useState } from "react"; +import { Button } from "../ui/button"; + +const CopyIcon = () => ( + + + + +); + +const CheckIcon = () => ( + + + +); + +export function CodeBlock({ code }: { code: string }) { + const [icon, setIcon] = useState(CopyIcon); + + const copy = async () => { + await navigator?.clipboard?.writeText(code); + setIcon(CheckIcon); + setTimeout(() => setIcon(CopyIcon), 2000); + }; + + return ( +
+      
+      {code}
+    
+ ); +} diff --git a/mirror-2/components/tutorial/connect-supabase-steps.tsx b/mirror-2/components/tutorial/connect-supabase-steps.tsx new file mode 100644 index 00000000..04ca37f0 --- /dev/null +++ b/mirror-2/components/tutorial/connect-supabase-steps.tsx @@ -0,0 +1,62 @@ +import { TutorialStep } from "./tutorial-step"; + +export default function ConnectSupabaseSteps() { + return ( +
    + +

    + Head over to{" "} + + database.new + {" "} + and create a new Supabase project. +

    +
    + + +

    + Rename the{" "} + + .env.example + {" "} + file in your Next.js app to{" "} + + .env.local + {" "} + and populate with values from{" "} + + your Supabase project's API Settings + + . +

    +
    + + +

    + You may need to quit your Next.js development server and run{" "} + + npm run dev + {" "} + again to load the new environment variables. +

    +
    + + +

    + You may need to refresh the page for Next.js to load the new + environment variables. +

    +
    +
+ ); +} diff --git a/mirror-2/components/tutorial/fetch-data-steps.tsx b/mirror-2/components/tutorial/fetch-data-steps.tsx new file mode 100644 index 00000000..f0193fe3 --- /dev/null +++ b/mirror-2/components/tutorial/fetch-data-steps.tsx @@ -0,0 +1,96 @@ +import { TutorialStep } from "./tutorial-step"; +import { CodeBlock } from "./code-block"; + +const create = `create table notes ( + id bigserial primary key, + title text +); + +insert into notes(title) +values + ('Today I created a Supabase project.'), + ('I added some data and queried it from Next.js.'), + ('It was awesome!'); +`.trim(); + +const server = `import { createClient } from '@/utils/supabase/server' + +export default async function Page() { + const supabase = createClient() + const { data: notes } = await supabase.from('notes').select() + + return
{JSON.stringify(notes, null, 2)}
+} +`.trim(); + +const client = `'use client' + +import { createClient } from '@/utils/supabase/client' +import { useEffect, useState } from 'react' + +export default function Page() { + const [notes, setNotes] = useState(null) + const supabase = createClient() + + useEffect(() => { + const getData = async () => { + const { data } = await supabase.from('notes').select() + setNotes(data) + } + getData() + }, []) + + return
{JSON.stringify(notes, null, 2)}
+} +`.trim(); + +export default function FetchDataSteps() { + return ( +
    + +

    + Head over to the{" "} + + Table Editor + {" "} + for your Supabase project to create a table and insert some example + data. If you're stuck for creativity, you can copy and paste the + following into the{" "} + + SQL Editor + {" "} + and click RUN! +

    + +
    + + +

    + To create a Supabase client and query data from an Async Server + Component, create a new page.tsx file at{" "} + + /app/notes/page.tsx + {" "} + and add the following. +

    + +

    Alternatively, you can use a Client Component.

    + +
    + + +

    You're ready to launch your product to the world! 🚀

    +
    +
+ ); +} diff --git a/mirror-2/components/tutorial/sign-up-user-steps.tsx b/mirror-2/components/tutorial/sign-up-user-steps.tsx new file mode 100644 index 00000000..c00fb66e --- /dev/null +++ b/mirror-2/components/tutorial/sign-up-user-steps.tsx @@ -0,0 +1,88 @@ +import Link from "next/link"; +import { TutorialStep } from "./tutorial-step"; +import { ArrowUpRight } from "lucide-react"; + +export default function SignUpUserSteps() { + return ( +
    + {process.env.VERCEL_ENV === "preview" || + process.env.VERCEL_ENV === "production" ? ( + +

    It looks like this App is hosted on Vercel.

    +

    + This particular deployment is + + "{process.env.VERCEL_ENV}" + {" "} + on + + https://{process.env.VERCEL_URL} + + . +

    +

    + You will need to{" "} + + update your Supabase project + {" "} + with redirect URLs based on your Vercel deployment URLs. +

    +
      +
    • + -{" "} + + http://localhost:3000/** + +
    • +
    • + -{" "} + + {`https://${process.env.VERCEL_PROJECT_PRODUCTION_URL}/**`} + +
    • +
    • + -{" "} + + {`https://${process.env.VERCEL_PROJECT_PRODUCTION_URL?.replace(".vercel.app", "")}-*-[vercel-team-url].vercel.app/**`} + {" "} + (Vercel Team URL can be found in{" "} + + Vercel Team settings + + ) +
    • +
    + + Redirect URLs Docs + +
    + ) : null} + +

    + Head over to the{" "} + + Sign up + {" "} + page and sign up your first user. It's okay if this is just you for + now. Your awesome idea will have plenty of users later! +

    +
    +
+ ); +} diff --git a/mirror-2/components/tutorial/tutorial-step.tsx b/mirror-2/components/tutorial/tutorial-step.tsx new file mode 100644 index 00000000..0ab9cd4e --- /dev/null +++ b/mirror-2/components/tutorial/tutorial-step.tsx @@ -0,0 +1,30 @@ +import { Checkbox } from "../ui/checkbox"; + +export function TutorialStep({ + title, + children, +}: { + title: string; + children: React.ReactNode; +}) { + return ( +
  • + + +
  • + ); +} diff --git a/mirror-2/components/typography/inline-code.tsx b/mirror-2/components/typography/inline-code.tsx new file mode 100644 index 00000000..288f9e30 --- /dev/null +++ b/mirror-2/components/typography/inline-code.tsx @@ -0,0 +1,7 @@ +export function TypographyInlineCode() { + return ( + + @radix-ui/react-alert-dialog + + ); +} diff --git a/mirror-2/components/ui/badge.tsx b/mirror-2/components/ui/badge.tsx new file mode 100644 index 00000000..d3d5d604 --- /dev/null +++ b/mirror-2/components/ui/badge.tsx @@ -0,0 +1,36 @@ +import * as React from "react"; +import { cva, type VariantProps } from "class-variance-authority"; + +import { cn } from "@/lib/utils"; + +const badgeVariants = cva( + "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground hover:bg-primary/80", + secondary: + "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", + destructive: + "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80", + outline: "text-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + }, +); + +export interface BadgeProps + extends React.HTMLAttributes, + VariantProps {} + +function Badge({ className, variant, ...props }: BadgeProps) { + return ( +
    + ); +} + +export { Badge, badgeVariants }; diff --git a/mirror-2/components/ui/button.tsx b/mirror-2/components/ui/button.tsx new file mode 100644 index 00000000..57c9fe47 --- /dev/null +++ b/mirror-2/components/ui/button.tsx @@ -0,0 +1,56 @@ +import * as React from "react"; +import { Slot } from "@radix-ui/react-slot"; +import { cva, type VariantProps } from "class-variance-authority"; + +import { cn } from "@/lib/utils"; + +const buttonVariants = cva( + "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground hover:bg-primary/90", + destructive: + "bg-destructive text-destructive-foreground hover:bg-destructive/90", + outline: + "border border-input bg-background hover:bg-accent hover:text-accent-foreground", + secondary: + "bg-secondary text-secondary-foreground hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-10 px-4 py-2", + sm: "h-9 rounded-md px-3", + lg: "h-11 rounded-md px-8", + icon: "h-10 w-10", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + }, +); + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean; +} + +const Button = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button"; + return ( + + ); + }, +); +Button.displayName = "Button"; + +export { Button, buttonVariants }; diff --git a/mirror-2/components/ui/checkbox.tsx b/mirror-2/components/ui/checkbox.tsx new file mode 100644 index 00000000..5985e3c3 --- /dev/null +++ b/mirror-2/components/ui/checkbox.tsx @@ -0,0 +1,30 @@ +"use client"; + +import * as React from "react"; +import * as CheckboxPrimitive from "@radix-ui/react-checkbox"; +import { Check } from "lucide-react"; + +import { cn } from "@/lib/utils"; + +const Checkbox = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + + + +)); +Checkbox.displayName = CheckboxPrimitive.Root.displayName; + +export { Checkbox }; diff --git a/mirror-2/components/ui/dropdown-menu.tsx b/mirror-2/components/ui/dropdown-menu.tsx new file mode 100644 index 00000000..3a0c7fed --- /dev/null +++ b/mirror-2/components/ui/dropdown-menu.tsx @@ -0,0 +1,200 @@ +"use client"; + +import * as React from "react"; +import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"; +import { Check, ChevronRight, Circle } from "lucide-react"; + +import { cn } from "@/lib/utils"; + +const DropdownMenu = DropdownMenuPrimitive.Root; + +const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger; + +const DropdownMenuGroup = DropdownMenuPrimitive.Group; + +const DropdownMenuPortal = DropdownMenuPrimitive.Portal; + +const DropdownMenuSub = DropdownMenuPrimitive.Sub; + +const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup; + +const DropdownMenuSubTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean; + } +>(({ className, inset, children, ...props }, ref) => ( + + {children} + + +)); +DropdownMenuSubTrigger.displayName = + DropdownMenuPrimitive.SubTrigger.displayName; + +const DropdownMenuSubContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DropdownMenuSubContent.displayName = + DropdownMenuPrimitive.SubContent.displayName; + +const DropdownMenuContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, sideOffset = 4, ...props }, ref) => ( + + + +)); +DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName; + +const DropdownMenuItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean; + } +>(({ className, inset, ...props }, ref) => ( + +)); +DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName; + +const DropdownMenuCheckboxItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, checked, ...props }, ref) => ( + + + + + + + {children} + +)); +DropdownMenuCheckboxItem.displayName = + DropdownMenuPrimitive.CheckboxItem.displayName; + +const DropdownMenuRadioItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + + + + {children} + +)); +DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName; + +const DropdownMenuLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean; + } +>(({ className, inset, ...props }, ref) => ( + +)); +DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName; + +const DropdownMenuSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName; + +const DropdownMenuShortcut = ({ + className, + ...props +}: React.HTMLAttributes) => { + return ( + + ); +}; +DropdownMenuShortcut.displayName = "DropdownMenuShortcut"; + +export { + DropdownMenu, + DropdownMenuTrigger, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuCheckboxItem, + DropdownMenuRadioItem, + DropdownMenuLabel, + DropdownMenuSeparator, + DropdownMenuShortcut, + DropdownMenuGroup, + DropdownMenuPortal, + DropdownMenuSub, + DropdownMenuSubContent, + DropdownMenuSubTrigger, + DropdownMenuRadioGroup, +}; diff --git a/mirror-2/components/ui/input.tsx b/mirror-2/components/ui/input.tsx new file mode 100644 index 00000000..9d631e7f --- /dev/null +++ b/mirror-2/components/ui/input.tsx @@ -0,0 +1,25 @@ +import * as React from "react"; + +import { cn } from "@/lib/utils"; + +export interface InputProps + extends React.InputHTMLAttributes {} + +const Input = React.forwardRef( + ({ className, type, ...props }, ref) => { + return ( + + ); + }, +); +Input.displayName = "Input"; + +export { Input }; diff --git a/mirror-2/components/ui/label.tsx b/mirror-2/components/ui/label.tsx new file mode 100644 index 00000000..84f8b0c7 --- /dev/null +++ b/mirror-2/components/ui/label.tsx @@ -0,0 +1,26 @@ +"use client"; + +import * as React from "react"; +import * as LabelPrimitive from "@radix-ui/react-label"; +import { cva, type VariantProps } from "class-variance-authority"; + +import { cn } from "@/lib/utils"; + +const labelVariants = cva( + "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", +); + +const Label = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & + VariantProps +>(({ className, ...props }, ref) => ( + +)); +Label.displayName = LabelPrimitive.Root.displayName; + +export { Label }; diff --git a/mirror-2/lib/utils.ts b/mirror-2/lib/utils.ts new file mode 100644 index 00000000..365058ce --- /dev/null +++ b/mirror-2/lib/utils.ts @@ -0,0 +1,6 @@ +import { type ClassValue, clsx } from "clsx"; +import { twMerge } from "tailwind-merge"; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} diff --git a/mirror-2/middleware.ts b/mirror-2/middleware.ts new file mode 100644 index 00000000..53428f8c --- /dev/null +++ b/mirror-2/middleware.ts @@ -0,0 +1,20 @@ +import { type NextRequest } from "next/server"; +import { updateSession } from "@/utils/supabase/middleware"; + +export async function middleware(request: NextRequest) { + return await updateSession(request); +} + +export const config = { + matcher: [ + /* + * Match all request paths except: + * - _next/static (static files) + * - _next/image (image optimization files) + * - favicon.ico (favicon file) + * - images - .svg, .png, .jpg, .jpeg, .gif, .webp + * Feel free to modify this pattern to include more paths. + */ + "/((?!_next/static|_next/image|favicon.ico|.*\\.(?:svg|png|jpg|jpeg|gif|webp)$).*)", + ], +}; diff --git a/mirror-2/next.config.js b/mirror-2/next.config.js new file mode 100644 index 00000000..658404ac --- /dev/null +++ b/mirror-2/next.config.js @@ -0,0 +1,4 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = {}; + +module.exports = nextConfig; diff --git a/mirror-2/package.json b/mirror-2/package.json new file mode 100644 index 00000000..1ab6bab0 --- /dev/null +++ b/mirror-2/package.json @@ -0,0 +1,37 @@ +{ + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start" + }, + "dependencies": { + "@next/bundle-analyzer": "^14.2.13", + "@radix-ui/react-checkbox": "^1.1.1", + "@radix-ui/react-dropdown-menu": "^2.1.1", + "@radix-ui/react-label": "^2.1.0", + "@radix-ui/react-slot": "^1.1.0", + "@supabase/ssr": "latest", + "@supabase/supabase-js": "latest", + "autoprefixer": "10.4.17", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "geist": "^1.2.1", + "lucide-react": "^0.436.0", + "next": "latest", + "next-themes": "^0.3.0", + "prettier": "^3.3.3", + "react": "18.2.0", + "react-dom": "18.2.0" + }, + "devDependencies": { + "@types/node": "20.10.6", + "@types/react": "18.2.46", + "@types/react-dom": "18.2.18", + "postcss": "8.4.33", + "tailwind-merge": "^2.5.2", + "tailwindcss": "3.4.1", + "tailwindcss-animate": "^1.0.7", + "typescript": "5.3.3" + } +} diff --git a/mirror-2/postcss.config.js b/mirror-2/postcss.config.js new file mode 100644 index 00000000..12a703d9 --- /dev/null +++ b/mirror-2/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/mirror-2/supabase/.gitignore b/mirror-2/supabase/.gitignore new file mode 100644 index 00000000..a3ad8805 --- /dev/null +++ b/mirror-2/supabase/.gitignore @@ -0,0 +1,4 @@ +# Supabase +.branches +.temp +.env diff --git a/mirror-2/supabase/config.toml b/mirror-2/supabase/config.toml new file mode 100644 index 00000000..dc5d9225 --- /dev/null +++ b/mirror-2/supabase/config.toml @@ -0,0 +1,239 @@ +# A string used to distinguish different Supabase projects on the same host. Defaults to the +# working directory name when running `supabase init`. +project_id = "mirror-2" + +[api] +enabled = true +# Port to use for the API URL. +port = 54321 +# Schemas to expose in your API. Tables, views and stored procedures in this schema will get API +# endpoints. `public` is always included. +schemas = ["public", "graphql_public"] +# Extra schemas to add to the search_path of every request. `public` is always included. +extra_search_path = ["public", "extensions"] +# The maximum number of rows returns from a view, table, or stored procedure. Limits payload size +# for accidental or malicious requests. +max_rows = 1000 + +[api.tls] +enabled = false + +[db] +# Port to use for the local database URL. +port = 54322 +# Port used by db diff command to initialize the shadow database. +shadow_port = 54320 +# The database major version to use. This has to be the same as your remote database's. Run `SHOW +# server_version;` on the remote database to check. +major_version = 15 + +[db.pooler] +enabled = false +# Port to use for the local connection pooler. +port = 54329 +# Specifies when a server connection can be reused by other clients. +# Configure one of the supported pooler modes: `transaction`, `session`. +pool_mode = "transaction" +# How many server connections to allow per user/database pair. +default_pool_size = 20 +# Maximum number of client connections allowed. +max_client_conn = 100 + +[realtime] +enabled = true +# Bind realtime via either IPv4 or IPv6. (default: IPv4) +# ip_version = "IPv6" +# The maximum length in bytes of HTTP request headers. (default: 4096) +# max_header_length = 4096 + +[studio] +enabled = true +# Port to use for Supabase Studio. +port = 54323 +# External URL of the API server that frontend connects to. +api_url = "http://127.0.0.1" +# OpenAI API Key to use for Supabase AI in the Supabase Studio. +openai_api_key = "env(OPENAI_API_KEY)" + +# Email testing server. Emails sent with the local dev setup are not actually sent - rather, they +# are monitored, and you can view the emails that would have been sent from the web interface. +[inbucket] +enabled = true +# Port to use for the email testing server web interface. +port = 54324 +# Uncomment to expose additional ports for testing user applications that send emails. +# smtp_port = 54325 +# pop3_port = 54326 + +[storage] +enabled = true +# The maximum file size allowed (e.g. "5MB", "500KB"). +file_size_limit = "50MiB" + +[storage.image_transformation] +enabled = true + +# Uncomment to configure local storage buckets +# [storage.buckets.images] +# public = false +# file_size_limit = "50MiB" +# allowed_mime_types = ["image/png", "image/jpeg"] +# objects_path = "./images" + +[auth] +enabled = true +# The base URL of your website. Used as an allow-list for redirects and for constructing URLs used +# in emails. +site_url = "http://127.0.0.1:3000" +# A list of *exact* URLs that auth providers are permitted to redirect to post authentication. +additional_redirect_urls = ["https://127.0.0.1:3000"] +# How long tokens are valid for, in seconds. Defaults to 3600 (1 hour), maximum 604,800 (1 week). +jwt_expiry = 3600 +# If disabled, the refresh token will never expire. +enable_refresh_token_rotation = true +# Allows refresh tokens to be reused after expiry, up to the specified interval in seconds. +# Requires enable_refresh_token_rotation = true. +refresh_token_reuse_interval = 10 +# Allow/disallow new user signups to your project. +enable_signup = true +# Allow/disallow anonymous sign-ins to your project. +enable_anonymous_sign_ins = false +# Allow/disallow testing manual linking of accounts +enable_manual_linking = false + +[auth.email] +# Allow/disallow new user signups via email to your project. +enable_signup = true +# If enabled, a user will be required to confirm any email change on both the old, and new email +# addresses. If disabled, only the new email is required to confirm. +double_confirm_changes = true +# If enabled, users need to confirm their email address before signing in. +enable_confirmations = false +# If enabled, users will need to reauthenticate or have logged in recently to change their password. +secure_password_change = false +# Controls the minimum amount of time that must pass before sending another signup confirmation or password reset email. +max_frequency = "1s" + +# Use a production-ready SMTP server +# [auth.email.smtp] +# host = "smtp.sendgrid.net" +# port = 587 +# user = "apikey" +# pass = "env(SENDGRID_API_KEY)" +# admin_email = "admin@email.com" +# sender_name = "Admin" + +# Uncomment to customize email template +# [auth.email.template.invite] +# subject = "You have been invited" +# content_path = "./supabase/templates/invite.html" + +[auth.sms] +# Allow/disallow new user signups via SMS to your project. +enable_signup = true +# If enabled, users need to confirm their phone number before signing in. +enable_confirmations = false +# Template for sending OTP to users +template = "Your code is {{ .Code }} ." +# Controls the minimum amount of time that must pass before sending another sms otp. +max_frequency = "5s" + +# Use pre-defined map of phone number to OTP for testing. +# [auth.sms.test_otp] +# 4152127777 = "123456" + +# Configure logged in session timeouts. +# [auth.sessions] +# Force log out after the specified duration. +# timebox = "24h" +# Force log out if the user has been inactive longer than the specified duration. +# inactivity_timeout = "8h" + +# This hook runs before a token is issued and allows you to add additional claims based on the authentication method used. +# [auth.hook.custom_access_token] +# enabled = true +# uri = "pg-functions:////" + +# Configure one of the supported SMS providers: `twilio`, `twilio_verify`, `messagebird`, `textlocal`, `vonage`. +[auth.sms.twilio] +enabled = false +account_sid = "" +message_service_sid = "" +# DO NOT commit your Twilio auth token to git. Use environment variable substitution instead: +auth_token = "env(SUPABASE_AUTH_SMS_TWILIO_AUTH_TOKEN)" + +[auth.mfa] +# Control how many MFA factors can be enrolled at once per user. +max_enrolled_factors = 10 + +# Control use of MFA via App Authenticator (TOTP) +[auth.mfa.totp] +enroll_enabled = true +verify_enabled = true + +# Configure Multi-factor-authentication via Phone Messaging +# [auth.mfa.phone] +# enroll_enabled = true +# verify_enabled = true +# otp_length = 6 +# template = "Your code is {{ .Code }} ." +# max_frequency = "10s" + +# Use an external OAuth provider. The full list of providers are: `apple`, `azure`, `bitbucket`, +# `discord`, `facebook`, `github`, `gitlab`, `google`, `keycloak`, `linkedin_oidc`, `notion`, `twitch`, +# `twitter`, `slack`, `spotify`, `workos`, `zoom`. +[auth.external.apple] +enabled = false +client_id = "" +# DO NOT commit your OAuth provider secret to git. Use environment variable substitution instead: +secret = "env(SUPABASE_AUTH_EXTERNAL_APPLE_SECRET)" +# Overrides the default auth redirectUrl. +redirect_uri = "" +# Overrides the default auth provider URL. Used to support self-hosted gitlab, single-tenant Azure, +# or any other third-party OIDC providers. +url = "" +# If enabled, the nonce check will be skipped. Required for local sign in with Google auth. +skip_nonce_check = false + +# Use Firebase Auth as a third-party provider alongside Supabase Auth. +[auth.third_party.firebase] +enabled = false +# project_id = "my-firebase-project" + +# Use Auth0 as a third-party provider alongside Supabase Auth. +[auth.third_party.auth0] +enabled = false +# tenant = "my-auth0-tenant" +# tenant_region = "us" + +# Use AWS Cognito (Amplify) as a third-party provider alongside Supabase Auth. +[auth.third_party.aws_cognito] +enabled = false +# user_pool_id = "my-user-pool-id" +# user_pool_region = "us-east-1" + +[edge_runtime] +enabled = true +# Configure one of the supported request policies: `oneshot`, `per_worker`. +# Use `oneshot` for hot reload, or `per_worker` for load testing. +policy = "oneshot" +inspector_port = 8083 + +[analytics] +enabled = true +port = 54327 +# Configure one of the supported backends: `postgres`, `bigquery`. +backend = "postgres" + +# Experimental features may be deprecated any time +[experimental] +# Configures Postgres storage engine to use OrioleDB (S3) +orioledb_version = "" +# Configures S3 bucket URL, eg. .s3-.amazonaws.com +s3_host = "env(S3_HOST)" +# Configures S3 bucket region, eg. us-east-1 +s3_region = "env(S3_REGION)" +# Configures AWS_ACCESS_KEY_ID for S3 bucket +s3_access_key = "env(S3_ACCESS_KEY)" +# Configures AWS_SECRET_ACCESS_KEY for S3 bucket +s3_secret_key = "env(S3_SECRET_KEY)" diff --git a/mirror-2/supabase/seed.sql b/mirror-2/supabase/seed.sql new file mode 100644 index 00000000..e69de29b diff --git a/mirror-2/tailwind.config.ts b/mirror-2/tailwind.config.ts new file mode 100644 index 00000000..41668a3b --- /dev/null +++ b/mirror-2/tailwind.config.ts @@ -0,0 +1,80 @@ +import type { Config } from "tailwindcss"; + +const config = { + darkMode: ["class"], + content: [ + "./pages/**/*.{ts,tsx}", + "./components/**/*.{ts,tsx}", + "./app/**/*.{ts,tsx}", + "./src/**/*.{ts,tsx}", + ], + prefix: "", + theme: { + container: { + center: true, + padding: "2rem", + screens: { + "2xl": "1400px", + }, + }, + extend: { + colors: { + border: "hsl(var(--border))", + input: "hsl(var(--input))", + ring: "hsl(var(--ring))", + background: "hsl(var(--background))", + foreground: "hsl(var(--foreground))", + primary: { + DEFAULT: "hsl(var(--primary))", + foreground: "hsl(var(--primary-foreground))", + }, + secondary: { + DEFAULT: "hsl(var(--secondary))", + foreground: "hsl(var(--secondary-foreground))", + }, + destructive: { + DEFAULT: "hsl(var(--destructive))", + foreground: "hsl(var(--destructive-foreground))", + }, + muted: { + DEFAULT: "hsl(var(--muted))", + foreground: "hsl(var(--muted-foreground))", + }, + accent: { + DEFAULT: "hsl(var(--accent))", + foreground: "hsl(var(--accent-foreground))", + }, + popover: { + DEFAULT: "hsl(var(--popover))", + foreground: "hsl(var(--popover-foreground))", + }, + card: { + DEFAULT: "hsl(var(--card))", + foreground: "hsl(var(--card-foreground))", + }, + }, + borderRadius: { + lg: "var(--radius)", + md: "calc(var(--radius) - 2px)", + sm: "calc(var(--radius) - 4px)", + }, + keyframes: { + "accordion-down": { + from: { height: "0" }, + to: { height: "var(--radix-accordion-content-height)" }, + }, + "accordion-up": { + from: { height: "var(--radix-accordion-content-height)" }, + to: { height: "0" }, + }, + }, + animation: { + "accordion-down": "accordion-down 0.2s ease-out", + "accordion-up": "accordion-up 0.2s ease-out", + }, + }, + }, + plugins: [require("tailwindcss-animate")], +} satisfies Config; + +export default config; diff --git a/mirror-2/tsconfig.json b/mirror-2/tsconfig.json new file mode 100644 index 00000000..e06a4454 --- /dev/null +++ b/mirror-2/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/mirror-2/utils/cn.ts b/mirror-2/utils/cn.ts new file mode 100644 index 00000000..a5ef1935 --- /dev/null +++ b/mirror-2/utils/cn.ts @@ -0,0 +1,6 @@ +import { clsx, type ClassValue } from "clsx"; +import { twMerge } from "tailwind-merge"; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} diff --git a/mirror-2/utils/supabase/check-env-vars.ts b/mirror-2/utils/supabase/check-env-vars.ts new file mode 100644 index 00000000..7180f45b --- /dev/null +++ b/mirror-2/utils/supabase/check-env-vars.ts @@ -0,0 +1,6 @@ +// This check can be removed +// it is just for tutorial purposes + +export const hasEnvVars = + process.env.NEXT_PUBLIC_SUPABASE_URL && + process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY; diff --git a/mirror-2/utils/supabase/client.ts b/mirror-2/utils/supabase/client.ts new file mode 100644 index 00000000..e2660d0f --- /dev/null +++ b/mirror-2/utils/supabase/client.ts @@ -0,0 +1,7 @@ +import { createBrowserClient } from "@supabase/ssr"; + +export const createClient = () => + createBrowserClient( + process.env.NEXT_PUBLIC_SUPABASE_URL!, + process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!, + ); diff --git a/mirror-2/utils/supabase/middleware.ts b/mirror-2/utils/supabase/middleware.ts new file mode 100644 index 00000000..8619ec03 --- /dev/null +++ b/mirror-2/utils/supabase/middleware.ts @@ -0,0 +1,62 @@ +import { createServerClient } from "@supabase/ssr"; +import { type NextRequest, NextResponse } from "next/server"; + +export const updateSession = async (request: NextRequest) => { + // This `try/catch` block is only here for the interactive tutorial. + // Feel free to remove once you have Supabase connected. + try { + // Create an unmodified response + let response = NextResponse.next({ + request: { + headers: request.headers, + }, + }); + + const supabase = createServerClient( + process.env.NEXT_PUBLIC_SUPABASE_URL!, + process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!, + { + cookies: { + getAll() { + return request.cookies.getAll(); + }, + setAll(cookiesToSet) { + cookiesToSet.forEach(({ name, value }) => + request.cookies.set(name, value), + ); + response = NextResponse.next({ + request, + }); + cookiesToSet.forEach(({ name, value, options }) => + response.cookies.set(name, value, options), + ); + }, + }, + }, + ); + + // This will refresh session if expired - required for Server Components + // https://supabase.com/docs/guides/auth/server-side/nextjs + const user = await supabase.auth.getUser(); + + // protected routes + if (request.nextUrl.pathname.startsWith("/protected") && user.error) { + return NextResponse.redirect(new URL("/sign-in", request.url)); + } + + if (request.nextUrl.pathname === "/" && !user.error) { + return NextResponse.redirect(new URL("/protected", request.url)); + } + + return response; + } catch (e) { + // If you are here, a Supabase client could not be created! + // This is likely because you have not set up environment variables. + // Check out http://localhost:3000 for Next Steps. + return NextResponse.next({ + request: { + headers: request.headers, + }, + }); + } +}; diff --git a/mirror-2/utils/supabase/server.ts b/mirror-2/utils/supabase/server.ts new file mode 100644 index 00000000..e18626fe --- /dev/null +++ b/mirror-2/utils/supabase/server.ts @@ -0,0 +1,29 @@ +import { createServerClient } from "@supabase/ssr"; +import { cookies } from "next/headers"; + +export const createClient = () => { + const cookieStore = cookies(); + + return createServerClient( + process.env.NEXT_PUBLIC_SUPABASE_URL!, + process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!, + { + cookies: { + getAll() { + return cookieStore.getAll(); + }, + setAll(cookiesToSet) { + try { + cookiesToSet.forEach(({ name, value, options }) => { + cookieStore.set(name, value, options); + }); + } catch (error) { + // The `set` method was called from a Server Component. + // This can be ignored if you have middleware refreshing + // user sessions. + } + }, + }, + }, + ); +}; diff --git a/mirror-2/utils/utils.ts b/mirror-2/utils/utils.ts new file mode 100644 index 00000000..c9fbbe89 --- /dev/null +++ b/mirror-2/utils/utils.ts @@ -0,0 +1,16 @@ +import { redirect } from "next/navigation"; + +/** + * Redirects to a specified path with an encoded message as a query parameter. + * @param {('error' | 'success')} type - The type of message, either 'error' or 'success'. + * @param {string} path - The path to redirect to. + * @param {string} message - The message to be encoded and added as a query parameter. + * @returns {never} This function doesn't return as it triggers a redirect. + */ +export function encodedRedirect( + type: "error" | "success", + path: string, + message: string, +) { + return redirect(`${path}?${type}=${encodeURIComponent(message)}`); +} diff --git a/mirror-2/yarn.lock b/mirror-2/yarn.lock new file mode 100644 index 00000000..4974daf5 --- /dev/null +++ b/mirror-2/yarn.lock @@ -0,0 +1,1617 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + +"@discoveryjs/json-ext@0.5.7": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + +"@floating-ui/core@^1.6.0": + version "1.6.8" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.8.tgz#aa43561be075815879305965020f492cdb43da12" + integrity sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA== + dependencies: + "@floating-ui/utils" "^0.2.8" + +"@floating-ui/dom@^1.0.0": + version "1.6.11" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.11.tgz#8631857838d34ee5712339eb7cbdfb8ad34da723" + integrity sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ== + dependencies: + "@floating-ui/core" "^1.6.0" + "@floating-ui/utils" "^0.2.8" + +"@floating-ui/react-dom@^2.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.2.tgz#a1349bbf6a0e5cb5ded55d023766f20a4d439a31" + integrity sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A== + dependencies: + "@floating-ui/dom" "^1.0.0" + +"@floating-ui/utils@^0.2.8": + version "0.2.8" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.8.tgz#21a907684723bbbaa5f0974cf7730bd797eb8e62" + integrity sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@^0.3.24": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@next/bundle-analyzer@^14.2.13": + version "14.2.13" + resolved "https://registry.yarnpkg.com/@next/bundle-analyzer/-/bundle-analyzer-14.2.13.tgz#9a3358b00997c03f5f390de6ccea4af42bd3fd88" + integrity sha512-CQOVKmfenD9HsG4AmyXG2ElMvtGKAT9TlS2JLgpL/EORi4WX+QMiQ8Ri6b+A7HRT+AiUGjsYnocIOET59i6Jfw== + dependencies: + webpack-bundle-analyzer "4.10.1" + +"@next/env@14.2.13": + version "14.2.13" + resolved "https://registry.yarnpkg.com/@next/env/-/env-14.2.13.tgz#ba341ba9eb70db428fc1c754f49c3c516f7bab47" + integrity sha512-s3lh6K8cbW1h5Nga7NNeXrbe0+2jIIYK9YaA9T7IufDWnZpozdFUp6Hf0d5rNWUKu4fEuSX2rCKlGjCrtylfDw== + +"@next/swc-darwin-arm64@14.2.13": + version "14.2.13" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.13.tgz#76f08d78360c4d27d444df7f35a56f59a48f4808" + integrity sha512-IkAmQEa2Htq+wHACBxOsslt+jMoV3msvxCn0WFSfJSkv/scy+i/EukBKNad36grRxywaXUYJc9mxEGkeIs8Bzg== + +"@next/swc-darwin-x64@14.2.13": + version "14.2.13" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.13.tgz#1d4821d54bb01dacc6a6c32408f8468a4f4af269" + integrity sha512-Dv1RBGs2TTjkwEnFMVL5XIfJEavnLqqwYSD6LXgTPdEy/u6FlSrLBSSfe1pcfqhFEXRAgVL3Wpjibe5wXJzWog== + +"@next/swc-linux-arm64-gnu@14.2.13": + version "14.2.13" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.13.tgz#79d9af8d3408df9990c8911889eca1ca6a308f19" + integrity sha512-yB1tYEFFqo4ZNWkwrJultbsw7NPAAxlPXURXioRl9SdW6aIefOLS+0TEsKrWBtbJ9moTDgU3HRILL6QBQnMevg== + +"@next/swc-linux-arm64-musl@14.2.13": + version "14.2.13" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.13.tgz#b13180645865b120591db2f1e831743ebc02ab36" + integrity sha512-v5jZ/FV/eHGoWhMKYrsAweQ7CWb8xsWGM/8m1mwwZQ/sutJjoFaXchwK4pX8NqwImILEvQmZWyb8pPTcP7htWg== + +"@next/swc-linux-x64-gnu@14.2.13": + version "14.2.13" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.13.tgz#8cb8480dfeee512648e4e08c2095aac0461b876f" + integrity sha512-aVc7m4YL7ViiRv7SOXK3RplXzOEe/qQzRA5R2vpXboHABs3w8vtFslGTz+5tKiQzWUmTmBNVW0UQdhkKRORmGA== + +"@next/swc-linux-x64-musl@14.2.13": + version "14.2.13" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.13.tgz#df5ca922fa1e1ee81b15a06a2d3d3ace0efd2bd7" + integrity sha512-4wWY7/OsSaJOOKvMsu1Teylku7vKyTuocvDLTZQq0TYv9OjiYYWt63PiE1nTuZnqQ4RPvME7Xai+9enoiN0Wrg== + +"@next/swc-win32-arm64-msvc@14.2.13": + version "14.2.13" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.13.tgz#8a7db6e71f526212587975f743b28e4d1cb829d1" + integrity sha512-uP1XkqCqV2NVH9+g2sC7qIw+w2tRbcMiXFEbMihkQ8B1+V6m28sshBwAB0SDmOe0u44ne1vFU66+gx/28RsBVQ== + +"@next/swc-win32-ia32-msvc@14.2.13": + version "14.2.13" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.13.tgz#6aa664f36f2d70c5ae6ffcbbc56784d33f24522d" + integrity sha512-V26ezyjPqQpDBV4lcWIh8B/QICQ4v+M5Bo9ykLN+sqeKKBxJVDpEc6biDVyluTXTC40f5IqCU0ttth7Es2ZuMw== + +"@next/swc-win32-x64-msvc@14.2.13": + version "14.2.13" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.13.tgz#5a920eea82a58affa6146192586716cec6c87fed" + integrity sha512-WwzOEAFBGhlDHE5Z73mNU8CO8mqMNLqaG+AO9ETmzdCQlJhVtWZnOl2+rqgVQS+YHunjOWptdFmNfbpwcUuEsw== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@polka/url@^1.0.0-next.24": + version "1.0.0-next.28" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.28.tgz#d45e01c4a56f143ee69c54dd6b12eade9e270a73" + integrity sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw== + +"@radix-ui/primitive@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.1.0.tgz#42ef83b3b56dccad5d703ae8c42919a68798bbe2" + integrity sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA== + +"@radix-ui/react-arrow@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz#744f388182d360b86285217e43b6c63633f39e7a" + integrity sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw== + dependencies: + "@radix-ui/react-primitive" "2.0.0" + +"@radix-ui/react-checkbox@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-checkbox/-/react-checkbox-1.1.1.tgz#a559c4303957d797acee99914480b755aa1f27d6" + integrity sha512-0i/EKJ222Afa1FE0C6pNJxDq1itzcl3HChE9DwskA4th4KRse8ojx8a1nVcOjwJdbpDLcz7uol77yYnQNMHdKw== + dependencies: + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.0" + "@radix-ui/react-presence" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-controllable-state" "1.1.0" + "@radix-ui/react-use-previous" "1.1.0" + "@radix-ui/react-use-size" "1.1.0" + +"@radix-ui/react-collection@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-collection/-/react-collection-1.1.0.tgz#f18af78e46454a2360d103c2251773028b7724ed" + integrity sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw== + dependencies: + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-slot" "1.1.0" + +"@radix-ui/react-compose-refs@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz#656432461fc8283d7b591dcf0d79152fae9ecc74" + integrity sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw== + +"@radix-ui/react-context@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.0.tgz#6df8d983546cfd1999c8512f3a8ad85a6e7fcee8" + integrity sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A== + +"@radix-ui/react-direction@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.1.0.tgz#a7d39855f4d077adc2a1922f9c353c5977a09cdc" + integrity sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg== + +"@radix-ui/react-dismissable-layer@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.0.tgz#2cd0a49a732372513733754e6032d3fb7988834e" + integrity sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig== + dependencies: + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-use-escape-keydown" "1.1.0" + +"@radix-ui/react-dropdown-menu@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.1.tgz#3dc578488688250dbbe109d9ff2ca28a9bca27ec" + integrity sha512-y8E+x9fBq9qvteD2Zwa4397pUVhYsh9iq44b5RD5qu1GMJWBCBuVg1hMyItbc6+zH00TxGRqd9Iot4wzf3OoBQ== + dependencies: + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.0" + "@radix-ui/react-id" "1.1.0" + "@radix-ui/react-menu" "2.1.1" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-controllable-state" "1.1.0" + +"@radix-ui/react-focus-guards@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.0.tgz#8e9abb472a9a394f59a1b45f3dd26cfe3fc6da13" + integrity sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw== + +"@radix-ui/react-focus-scope@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz#ebe2891a298e0a33ad34daab2aad8dea31caf0b2" + integrity sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA== + dependencies: + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + +"@radix-ui/react-id@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.1.0.tgz#de47339656594ad722eb87f94a6b25f9cffae0ed" + integrity sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA== + dependencies: + "@radix-ui/react-use-layout-effect" "1.1.0" + +"@radix-ui/react-label@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-label/-/react-label-2.1.0.tgz#3aa2418d70bb242be37c51ff5e51a2adcbc372e3" + integrity sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw== + dependencies: + "@radix-ui/react-primitive" "2.0.0" + +"@radix-ui/react-menu@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-menu/-/react-menu-2.1.1.tgz#bd623ace0e1ae1ac78023a505fec0541d59fb346" + integrity sha512-oa3mXRRVjHi6DZu/ghuzdylyjaMXLymx83irM7hTxutQbD+7IhPKdMdRHD26Rm+kHRrWcrUkkRPv5pd47a2xFQ== + dependencies: + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-collection" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.0" + "@radix-ui/react-direction" "1.1.0" + "@radix-ui/react-dismissable-layer" "1.1.0" + "@radix-ui/react-focus-guards" "1.1.0" + "@radix-ui/react-focus-scope" "1.1.0" + "@radix-ui/react-id" "1.1.0" + "@radix-ui/react-popper" "1.2.0" + "@radix-ui/react-portal" "1.1.1" + "@radix-ui/react-presence" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-roving-focus" "1.1.0" + "@radix-ui/react-slot" "1.1.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + aria-hidden "^1.1.1" + react-remove-scroll "2.5.7" + +"@radix-ui/react-popper@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-1.2.0.tgz#a3e500193d144fe2d8f5d5e60e393d64111f2a7a" + integrity sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg== + dependencies: + "@floating-ui/react-dom" "^2.0.0" + "@radix-ui/react-arrow" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-use-layout-effect" "1.1.0" + "@radix-ui/react-use-rect" "1.1.0" + "@radix-ui/react-use-size" "1.1.0" + "@radix-ui/rect" "1.1.0" + +"@radix-ui/react-portal@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.1.1.tgz#1957f1eb2e1aedfb4a5475bd6867d67b50b1d15f" + integrity sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g== + dependencies: + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-layout-effect" "1.1.0" + +"@radix-ui/react-presence@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.1.0.tgz#227d84d20ca6bfe7da97104b1a8b48a833bfb478" + integrity sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ== + dependencies: + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-use-layout-effect" "1.1.0" + +"@radix-ui/react-primitive@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz#fe05715faa9203a223ccc0be15dc44b9f9822884" + integrity sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw== + dependencies: + "@radix-ui/react-slot" "1.1.0" + +"@radix-ui/react-roving-focus@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.0.tgz#b30c59daf7e714c748805bfe11c76f96caaac35e" + integrity sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA== + dependencies: + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-collection" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.0" + "@radix-ui/react-direction" "1.1.0" + "@radix-ui/react-id" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-use-controllable-state" "1.1.0" + +"@radix-ui/react-slot@1.1.0", "@radix-ui/react-slot@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.1.0.tgz#7c5e48c36ef5496d97b08f1357bb26ed7c714b84" + integrity sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw== + dependencies: + "@radix-ui/react-compose-refs" "1.1.0" + +"@radix-ui/react-use-callback-ref@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz#bce938ca413675bc937944b0d01ef6f4a6dc5bf1" + integrity sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw== + +"@radix-ui/react-use-controllable-state@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz#1321446857bb786917df54c0d4d084877aab04b0" + integrity sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw== + dependencies: + "@radix-ui/react-use-callback-ref" "1.1.0" + +"@radix-ui/react-use-escape-keydown@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz#31a5b87c3b726504b74e05dac1edce7437b98754" + integrity sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw== + dependencies: + "@radix-ui/react-use-callback-ref" "1.1.0" + +"@radix-ui/react-use-layout-effect@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz#3c2c8ce04827b26a39e442ff4888d9212268bd27" + integrity sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w== + +"@radix-ui/react-use-previous@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz#d4dd37b05520f1d996a384eb469320c2ada8377c" + integrity sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og== + +"@radix-ui/react-use-rect@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz#13b25b913bd3e3987cc9b073a1a164bb1cf47b88" + integrity sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ== + dependencies: + "@radix-ui/rect" "1.1.0" + +"@radix-ui/react-use-size@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz#b4dba7fbd3882ee09e8d2a44a3eed3a7e555246b" + integrity sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw== + dependencies: + "@radix-ui/react-use-layout-effect" "1.1.0" + +"@radix-ui/rect@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-1.1.0.tgz#f817d1d3265ac5415dadc67edab30ae196696438" + integrity sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg== + +"@supabase/auth-js@2.65.0": + version "2.65.0" + resolved "https://registry.yarnpkg.com/@supabase/auth-js/-/auth-js-2.65.0.tgz#e345c492f8cbc31cd6289968eae0e349ff0f39e9" + integrity sha512-+wboHfZufAE2Y612OsKeVP4rVOeGZzzMLD/Ac3HrTQkkY4qXNjI6Af9gtmxwccE5nFvTiF114FEbIQ1hRq5uUw== + dependencies: + "@supabase/node-fetch" "^2.6.14" + +"@supabase/functions-js@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@supabase/functions-js/-/functions-js-2.4.1.tgz#373e75f8d3453bacd71fb64f88d7a341d7b53ad7" + integrity sha512-8sZ2ibwHlf+WkHDUZJUXqqmPvWQ3UHN0W30behOJngVh/qHHekhJLCFbh0AjkE9/FqqXtf9eoVvmYgfCLk5tNA== + dependencies: + "@supabase/node-fetch" "^2.6.14" + +"@supabase/node-fetch@2.6.15", "@supabase/node-fetch@^2.6.14": + version "2.6.15" + resolved "https://registry.yarnpkg.com/@supabase/node-fetch/-/node-fetch-2.6.15.tgz#731271430e276983191930816303c44159e7226c" + integrity sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ== + dependencies: + whatwg-url "^5.0.0" + +"@supabase/postgrest-js@1.16.1": + version "1.16.1" + resolved "https://registry.yarnpkg.com/@supabase/postgrest-js/-/postgrest-js-1.16.1.tgz#68dfa0581d8ae4296378cb8815bbde3f4602aef5" + integrity sha512-EOSEZFm5pPuCPGCmLF1VOCS78DfkSz600PBuvBND/IZmMciJ1pmsS3ss6TkB6UkuvTybYiBh7gKOYyxoEO3USA== + dependencies: + "@supabase/node-fetch" "^2.6.14" + +"@supabase/realtime-js@2.10.2": + version "2.10.2" + resolved "https://registry.yarnpkg.com/@supabase/realtime-js/-/realtime-js-2.10.2.tgz#c2b42d17d723d2d2a9146cfad61dc3df1ce3127e" + integrity sha512-qyCQaNg90HmJstsvr2aJNxK2zgoKh9ZZA8oqb7UT2LCh3mj9zpa3Iwu167AuyNxsxrUE8eEJ2yH6wLCij4EApA== + dependencies: + "@supabase/node-fetch" "^2.6.14" + "@types/phoenix" "^1.5.4" + "@types/ws" "^8.5.10" + ws "^8.14.2" + +"@supabase/ssr@latest": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@supabase/ssr/-/ssr-0.5.1.tgz#8fa07d7cc3548ad9fbf73e9e84a51413fefae892" + integrity sha512-+G94H/GZG0nErZ3FQV9yJmsC5Rj7dmcfCAwOt37hxeR1La+QTl8cE9whzYwPUrTJjMLGNXoO+1BMvVxwBAbz4g== + dependencies: + cookie "^0.6.0" + +"@supabase/storage-js@2.7.0": + version "2.7.0" + resolved "https://registry.yarnpkg.com/@supabase/storage-js/-/storage-js-2.7.0.tgz#9ff322d2c3b141087aa34115cf14205e4980ce75" + integrity sha512-iZenEdO6Mx9iTR6T7wC7sk6KKsoDPLq8rdu5VRy7+JiT1i8fnqfcOr6mfF2Eaqky9VQzhP8zZKQYjzozB65Rig== + dependencies: + "@supabase/node-fetch" "^2.6.14" + +"@supabase/supabase-js@latest": + version "2.45.4" + resolved "https://registry.yarnpkg.com/@supabase/supabase-js/-/supabase-js-2.45.4.tgz#0bcf8722f1732dfe3e4c5190d23e3938dcc689c3" + integrity sha512-E5p8/zOLaQ3a462MZnmnz03CrduA5ySH9hZyL03Y+QZLIOO4/Gs8Rdy4ZCKDHsN7x0xdanVEWWFN3pJFQr9/hg== + dependencies: + "@supabase/auth-js" "2.65.0" + "@supabase/functions-js" "2.4.1" + "@supabase/node-fetch" "2.6.15" + "@supabase/postgrest-js" "1.16.1" + "@supabase/realtime-js" "2.10.2" + "@supabase/storage-js" "2.7.0" + +"@swc/counter@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + +"@swc/helpers@0.5.5": + version "0.5.5" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.5.tgz#12689df71bfc9b21c4f4ca00ae55f2f16c8b77c0" + integrity sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A== + dependencies: + "@swc/counter" "^0.1.3" + tslib "^2.4.0" + +"@types/node@*": + version "22.7.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.4.tgz#e35d6f48dca3255ce44256ddc05dee1c23353fcc" + integrity sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg== + dependencies: + undici-types "~6.19.2" + +"@types/node@20.10.6": + version "20.10.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.6.tgz#a3ec84c22965802bf763da55b2394424f22bfbb5" + integrity sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw== + dependencies: + undici-types "~5.26.4" + +"@types/phoenix@^1.5.4": + version "1.6.5" + resolved "https://registry.yarnpkg.com/@types/phoenix/-/phoenix-1.6.5.tgz#5654e14ec7ad25334a157a20015996b6d7d2075e" + integrity sha512-xegpDuR+z0UqG9fwHqNoy3rI7JDlvaPh2TY47Fl80oq6g+hXT+c/LEuE43X48clZ6lOfANl5WrPur9fYO1RJ/w== + +"@types/prop-types@*": + version "15.7.13" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.13.tgz#2af91918ee12d9d32914feb13f5326658461b451" + integrity sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA== + +"@types/react-dom@18.2.18": + version "18.2.18" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.18.tgz#16946e6cd43971256d874bc3d0a72074bb8571dd" + integrity sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "18.3.10" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.10.tgz#6edc26dc22ff8c9c226d3c7bf8357b013c842219" + integrity sha512-02sAAlBnP39JgXwkAq3PeU9DVaaGpZyF3MGcC0MKgQVkZor5IiiDAipVaxQHtDJAmO4GIy/rVBy/LzVj76Cyqg== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + +"@types/react@18.2.46": + version "18.2.46" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.46.tgz#f04d6c528f8f136ea66333bc66abcae46e2680df" + integrity sha512-nNCvVBcZlvX4NU1nRRNV/mFl1nNRuTuslAJglQsq+8ldXe5Xv0Wd2f7WTE3jOxhLH2BFfiZGC6GCp+kHQbgG+w== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/scheduler@*": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.23.0.tgz#0a6655b3e2708eaabca00b7372fafd7a792a7b09" + integrity sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw== + +"@types/ws@^8.5.10": + version "8.5.12" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.12.tgz#619475fe98f35ccca2a2f6c137702d85ec247b7e" + integrity sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ== + dependencies: + "@types/node" "*" + +acorn-walk@^8.0.0: + version "8.3.4" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" + integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== + dependencies: + acorn "^8.11.0" + +acorn@^8.0.4, acorn@^8.11.0: + version "8.12.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" + integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + +ansi-styles@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +aria-hidden@^1.1.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.4.tgz#b78e383fdbc04d05762c78b4a25a501e736c4522" + integrity sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A== + dependencies: + tslib "^2.0.0" + +autoprefixer@10.4.17: + version "10.4.17" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.17.tgz#35cd5695cbbe82f536a50fa025d561b01fdec8be" + integrity sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg== + dependencies: + browserslist "^4.22.2" + caniuse-lite "^1.0.30001578" + fraction.js "^4.3.7" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browserslist@^4.22.2: + version "4.24.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.0.tgz#a1325fe4bc80b64fda169629fc01b3d6cecd38d4" + integrity sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A== + dependencies: + caniuse-lite "^1.0.30001663" + electron-to-chromium "^1.5.28" + node-releases "^2.0.18" + update-browserslist-db "^1.1.0" + +busboy@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +caniuse-lite@^1.0.30001578, caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001663: + version "1.0.30001664" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001664.tgz#d588d75c9682d3301956b05a3749652a80677df4" + integrity sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g== + +chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + 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" + optionalDependencies: + fsevents "~2.3.2" + +class-variance-authority@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/class-variance-authority/-/class-variance-authority-0.7.0.tgz#1c3134d634d80271b1837452b06d821915954522" + integrity sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A== + dependencies: + clsx "2.0.0" + +client-only@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" + integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== + +clsx@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.0.0.tgz#12658f3fd98fafe62075595a5c30e43d18f3d00b" + integrity sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q== + +clsx@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" + integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +cookie@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" + integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== + +cross-spawn@^7.0.0: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +csstype@^3.0.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +debounce@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" + integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== + +detect-node-es@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" + integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +electron-to-chromium@^1.5.28: + version "1.5.29" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.29.tgz#aa592a3caa95d07cc26a66563accf99fa573a1ee" + integrity sha512-PF8n2AlIhCKXQ+gTpiJi0VhcHDb69kYX4MtCiivctc2QD3XuNZ/XIOlbGzt7WAjjEev0TtaH6Cu3arZExm5DOw== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +fast-glob@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + 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" + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +foreground-child@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" + integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +fraction.js@^4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +geist@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/geist/-/geist-1.3.1.tgz#bbd95db23b2a00baf6020e3b1b63a5752f4787d2" + integrity sha512-Q4gC1pBVPN+D579pBaz0TRRnGA4p9UK6elDY/xizXdFk/g4EKR5g0I+4p/Kj6gM0SajDBZ/0FvDV9ey9ud7BWw== + +get-nonce@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" + integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^10.3.10: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +graceful-fs@^4.2.11: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +html-escaper@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.13.0: + version "2.15.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" + integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== + dependencies: + hasown "^2.0.2" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jiti@^1.19.1: + version "1.21.6" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" + integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== + +"js-tokens@^3.0.0 || ^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lilconfig@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.2.tgz#e4a7c3cb549e3a606c8dcc32e5ae1005e62c05cb" + integrity sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +loose-envify@^1.0.0, loose-envify@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +lucide-react@^0.436.0: + version "0.436.0" + resolved "https://registry.yarnpkg.com/lucide-react/-/lucide-react-0.436.0.tgz#020c75031fbba5e01f7188991fa5a50195098f50" + integrity sha512-N292bIxoqm1aObAg0MzFtvhYwgQE6qnIOWx/GLj5ONgcTPH6N0fD9bVq/GfdeC9ZORBXozt/XeEKDpiB3x3vlQ== + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +mrmime@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.0.tgz#151082a6e06e59a9a39b46b3e14d5cfe92b3abb4" + integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nanoid@^3.3.6, nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +next-themes@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/next-themes/-/next-themes-0.3.0.tgz#b4d2a866137a67d42564b07f3a3e720e2ff3871a" + integrity sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w== + +next@latest: + version "14.2.13" + resolved "https://registry.yarnpkg.com/next/-/next-14.2.13.tgz#32da2ee0afbe729e2d4a467c3570def90e1c974d" + integrity sha512-BseY9YNw8QJSwLYD7hlZzl6QVDoSFHL/URN5K64kVEVpCsSOWeyjbIGK+dZUaRViHTaMQX8aqmnn0PHBbGZezg== + dependencies: + "@next/env" "14.2.13" + "@swc/helpers" "0.5.5" + busboy "1.6.0" + caniuse-lite "^1.0.30001579" + graceful-fs "^4.2.11" + postcss "8.4.31" + styled-jsx "5.1.1" + optionalDependencies: + "@next/swc-darwin-arm64" "14.2.13" + "@next/swc-darwin-x64" "14.2.13" + "@next/swc-linux-arm64-gnu" "14.2.13" + "@next/swc-linux-arm64-musl" "14.2.13" + "@next/swc-linux-x64-gnu" "14.2.13" + "@next/swc-linux-x64-musl" "14.2.13" + "@next/swc-win32-arm64-msvc" "14.2.13" + "@next/swc-win32-ia32-msvc" "14.2.13" + "@next/swc-win32-x64-msvc" "14.2.13" + +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +object-assign@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + +opener@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +picocolors@^1.0.0, picocolors@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" + integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pirates@^4.0.1: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + +postcss-load-config@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" + integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== + dependencies: + lilconfig "^3.0.0" + yaml "^2.3.4" + +postcss-nested@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.2.0.tgz#4c2d22ab5f20b9cb61e2c5c5915950784d068131" + integrity sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ== + dependencies: + postcss-selector-parser "^6.1.1" + +postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.1.1: + version "6.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" + integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@8.4.31: + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +postcss@8.4.33: + version "8.4.33" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.33.tgz#1378e859c9f69bf6f638b990a0212f43e2aaa742" + integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +postcss@^8.4.23: + version "8.4.47" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365" + integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ== + dependencies: + nanoid "^3.3.7" + picocolors "^1.1.0" + source-map-js "^1.2.1" + +prettier@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" + integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +react-dom@18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.0" + +react-remove-scroll-bar@^2.3.4: + version "2.3.6" + resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz#3e585e9d163be84a010180b18721e851ac81a29c" + integrity sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g== + dependencies: + react-style-singleton "^2.2.1" + tslib "^2.0.0" + +react-remove-scroll@2.5.7: + version "2.5.7" + resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz#15a1fd038e8497f65a695bf26a4a57970cac1ccb" + integrity sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA== + dependencies: + react-remove-scroll-bar "^2.3.4" + react-style-singleton "^2.2.1" + tslib "^2.1.0" + use-callback-ref "^1.3.0" + use-sidecar "^1.1.2" + +react-style-singleton@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4" + integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g== + dependencies: + get-nonce "^1.0.0" + invariant "^2.2.4" + tslib "^2.0.0" + +react@18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +resolve@^1.1.7, resolve@^1.22.2: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +scheduler@^0.23.0: + version "0.23.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" + integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== + dependencies: + loose-envify "^1.1.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +sirv@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" + integrity sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ== + dependencies: + "@polka/url" "^1.0.0-next.24" + mrmime "^2.0.0" + totalist "^3.0.0" + +source-map-js@^1.0.2, source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0: + name string-width-cjs + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: + name strip-ansi-cjs + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +styled-jsx@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f" + integrity sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw== + dependencies: + client-only "0.0.1" + +sucrase@^3.32.0: + version "3.35.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" + integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== + dependencies: + "@jridgewell/gen-mapping" "^0.3.2" + commander "^4.0.0" + glob "^10.3.10" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tailwind-merge@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-2.5.2.tgz#000f05a703058f9f9f3829c644235f81d4c08a1f" + integrity sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg== + +tailwindcss-animate@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz#318b692c4c42676cc9e67b19b78775742388bef4" + integrity sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA== + +tailwindcss@3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.1.tgz#f512ca5d1dd4c9503c7d3d28a968f1ad8f5c839d" + integrity sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA== + 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" + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +totalist@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" + integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + +tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" + integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== + +typescript@5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" + integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + +update-browserslist-db@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.0" + +use-callback-ref@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.2.tgz#6134c7f6ff76e2be0b56c809b17a650c942b1693" + integrity sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA== + dependencies: + tslib "^2.0.0" + +use-sidecar@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.2.tgz#2f43126ba2d7d7e117aa5855e5d8f0276dfe73c2" + integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw== + dependencies: + detect-node-es "^1.1.0" + tslib "^2.0.0" + +util-deprecate@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +webpack-bundle-analyzer@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz#84b7473b630a7b8c21c741f81d8fe4593208b454" + integrity sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ== + dependencies: + "@discoveryjs/json-ext" "0.5.7" + acorn "^8.0.4" + acorn-walk "^8.0.0" + commander "^7.2.0" + debounce "^1.2.1" + escape-string-regexp "^4.0.0" + gzip-size "^6.0.0" + html-escaper "^2.0.2" + is-plain-object "^5.0.0" + opener "^1.5.2" + picocolors "^1.0.0" + sirv "^2.0.3" + ws "^7.3.1" + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +ws@^7.3.1: + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + +ws@^8.14.2: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== + +yaml@^2.3.4: + version "2.5.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.1.tgz#c9772aacf62cb7494a95b0c4f1fb065b563db130" + integrity sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q== From e163c9a37fa740b0dfe748555fff6d5297b2c605 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Sat, 28 Sep 2024 17:50:22 -0700 Subject: [PATCH 002/353] add migration deployment for dev --- .github/workflows/mirror-2-dev-db.yml | 31 +++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .github/workflows/mirror-2-dev-db.yml diff --git a/.github/workflows/mirror-2-dev-db.yml b/.github/workflows/mirror-2-dev-db.yml new file mode 100644 index 00000000..1cc081a4 --- /dev/null +++ b/.github/workflows/mirror-2-dev-db.yml @@ -0,0 +1,31 @@ +name: Deploy Migrations to Dev + +on: + push: + branches: [dev] + paths: + - 'mirror-2/**' + pull_request: + branches: [dev] + paths: + - 'mirror-2/**' + workflow_dispatch: + +jobs: + deploy: + runs-on: ubuntu-latest + + env: + SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_ACCESS_TOKEN }} + SUPABASE_DB_PASSWORD: ${{ secrets.DEV_DB_PASSWORD }} + SUPABASE_PROJECT_ID: ${{ secrets.DEV_PROJECT_ID }} + + steps: + - uses: actions/checkout@v3 + + - uses: supabase/setup-cli@v1 + with: + version: latest + + - run: supabase link --project-ref $SUPABASE_PROJECT_ID + - run: supabase db push From 005276481df851348925b79cf6637ccf8584e8d2 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Sat, 28 Sep 2024 21:19:44 -0700 Subject: [PATCH 003/353] create first migration --- .../20240929034647_create_user_profiles.sql | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 mirror-2/supabase/migrations/20240929034647_create_user_profiles.sql diff --git a/mirror-2/supabase/migrations/20240929034647_create_user_profiles.sql b/mirror-2/supabase/migrations/20240929034647_create_user_profiles.sql new file mode 100644 index 00000000..8c4c4534 --- /dev/null +++ b/mirror-2/supabase/migrations/20240929034647_create_user_profiles.sql @@ -0,0 +1,56 @@ +-- create enum for avatar type +create type avatar_type as enum ( +'ready_player_me' +); + +-- Create a table for public user_profiles +create table user_profiles ( + id uuid references auth.users on delete cascade not null primary key, + updated_at timestamp with time zone, + display_name text unique not null, + public_bio text, + ready_player_me_url_glb text, + avatar_type public.avatar_type null default 'ready_player_me'::avatar_type, + constraint display_name_length check (char_length(display_name) >= 3) +); +-- Set up Row Level Security (RLS) +-- See https://supabase.com/docs/guides/auth/row-level-security for more details. +alter table user_profiles + enable row level security; + +create policy "Public user_profiles are viewable by everyone." on user_profiles + for select using (true); + +create policy "Users can insert their own profile." on user_profiles + for insert with check ((select auth.uid()) = id); + +create policy "Users can update own profile." on user_profiles + for update using ((select auth.uid()) = id); + +-- This trigger automatically creates a profile entry when a new user signs up via Supabase Auth. +-- See https://supabase.com/docs/guides/auth/managing-user-data#using-triggers for more details. +create function public.handle_new_user() +returns trigger +set search_path = '' +as $$ +begin + insert into public.user_profiles (id, display_name) + values (new.id, new.raw_user_meta_data->>'display_name'); + return new; +end; +$$ language plpgsql security definer; +create trigger on_auth_user_created + after insert on auth.users + for each row execute procedure public.handle_new_user(); + +-- Set up Storage! +insert into storage.buckets (id, name) + values ('avatars', 'avatars'); + +-- Set up access controls for storage. +-- See https://supabase.com/docs/guides/storage#policy-examples for more details. +create policy "Avatar images are publicly accessible." on storage.objects + for select using (bucket_id = 'avatars'); + +create policy "Anyone can upload an avatar." on storage.objects + for insert with check (bucket_id = 'avatars'); From db3e9e52bc89677fb08615ff047be79573ca9931 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Sat, 28 Sep 2024 21:36:31 -0700 Subject: [PATCH 004/353] add seed data --- .../20240929034647_create_user_profiles.sql | 19 ++----------------- mirror-2/supabase/seed.sql | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/mirror-2/supabase/migrations/20240929034647_create_user_profiles.sql b/mirror-2/supabase/migrations/20240929034647_create_user_profiles.sql index 8c4c4534..a5d10456 100644 --- a/mirror-2/supabase/migrations/20240929034647_create_user_profiles.sql +++ b/mirror-2/supabase/migrations/20240929034647_create_user_profiles.sql @@ -6,11 +6,12 @@ create type avatar_type as enum ( -- Create a table for public user_profiles create table user_profiles ( id uuid references auth.users on delete cascade not null primary key, - updated_at timestamp with time zone, display_name text unique not null, public_bio text, ready_player_me_url_glb text, avatar_type public.avatar_type null default 'ready_player_me'::avatar_type, + created_at timestamp with time zone not null default now(), + updated_at timestamp with time zone not null default now(), constraint display_name_length check (char_length(display_name) >= 3) ); -- Set up Row Level Security (RLS) @@ -27,22 +28,6 @@ create policy "Users can insert their own profile." on user_profiles create policy "Users can update own profile." on user_profiles for update using ((select auth.uid()) = id); --- This trigger automatically creates a profile entry when a new user signs up via Supabase Auth. --- See https://supabase.com/docs/guides/auth/managing-user-data#using-triggers for more details. -create function public.handle_new_user() -returns trigger -set search_path = '' -as $$ -begin - insert into public.user_profiles (id, display_name) - values (new.id, new.raw_user_meta_data->>'display_name'); - return new; -end; -$$ language plpgsql security definer; -create trigger on_auth_user_created - after insert on auth.users - for each row execute procedure public.handle_new_user(); - -- Set up Storage! insert into storage.buckets (id, name) values ('avatars', 'avatars'); diff --git a/mirror-2/supabase/seed.sql b/mirror-2/supabase/seed.sql index e69de29b..18253825 100644 --- a/mirror-2/supabase/seed.sql +++ b/mirror-2/supabase/seed.sql @@ -0,0 +1,17 @@ +-- Begin a transaction +begin; + +-- Insert users into the auth.users table +insert into auth.users (id, email) +values + ('9b0c9dfc-7f5d-4de5-9f3d-159a063c987a', 'user1@example.com'), + ('b33ea2f6-d0d8-4c9c-87d1-70b1c102a84d', 'user2@example.com'); + +-- Insert profiles into the user_profiles table +insert into public.user_profiles (id, display_name, public_bio, ready_player_me_url_glb) +values + ('9b0c9dfc-7f5d-4de5-9f3d-159a063c987a', 'User One', 'Bio for User One', 'https://example.com/user1.glb'), + ('b33ea2f6-d0d8-4c9c-87d1-70b1c102a84d', 'User Two', 'Bio for User Two', 'https://example.com/user2.glb'); + +-- Commit the transaction +commit; From 4e1587c124ef3e201cb6813fd4f80fb051aec69e Mon Sep 17 00:00:00 2001 From: Kluskey Date: Sat, 28 Sep 2024 23:28:25 -0700 Subject: [PATCH 005/353] add spaces assets migration --- .../20240929043655_spaces_assets.sql | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 mirror-2/supabase/migrations/20240929043655_spaces_assets.sql diff --git a/mirror-2/supabase/migrations/20240929043655_spaces_assets.sql b/mirror-2/supabase/migrations/20240929043655_spaces_assets.sql new file mode 100644 index 00000000..c3694271 --- /dev/null +++ b/mirror-2/supabase/migrations/20240929043655_spaces_assets.sql @@ -0,0 +1,63 @@ +create table spaces ( + id uuid not null primary key, + name text not null, + creator_user_id uuid references auth.users(id) on delete cascade not null, + created_at timestamp with time zone not null default now(), + updated_at timestamp with time zone not null default now(), + constraint name_length check (char_length(name) >= 3) + ); + + -- add RLS +alter table spaces + enable row level security; + +-- Policy for space owners +create policy "Owners can view their own spaces" +on spaces +for select +using (creator_user_id = auth.uid()); + +-- Policy for creating spaces +create policy "Users can create their own spaces" +on spaces +for insert +with check (creator_user_id = auth.uid()); + +-- Policy for selecting spaces +create policy "Users can view their own spaces" +on spaces +for select +using ( + creator_user_id = auth.uid() +); + +-- Policy for updating spaces +create policy "Users can update their own spaces" +on spaces +for update +using (creator_user_id = auth.uid()); + +-- Policy for deleting spaces +create policy "Users can delete their own spaces" +on spaces +for delete +using (creator_user_id = auth.uid()); + +-- assets +create table assets ( + id uuid not null primary key, + name text not null, + asset_url text not null, + created_at timestamp with time zone not null default now(), + updated_at timestamp with time zone not null default now() + ); + +-- add RLS +alter table assets + enable row level security; + +-- set up storage for assets +insert into + storage.buckets (id, name, public) +values + ('assets', 'assets', true); From 6208030638322c41c521ffaf5807d5c4e79ed519 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Sat, 28 Sep 2024 23:28:33 -0700 Subject: [PATCH 006/353] tweak name for user profile images --- .../20240929034647_create_user_profiles.sql | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/mirror-2/supabase/migrations/20240929034647_create_user_profiles.sql b/mirror-2/supabase/migrations/20240929034647_create_user_profiles.sql index a5d10456..95cccc94 100644 --- a/mirror-2/supabase/migrations/20240929034647_create_user_profiles.sql +++ b/mirror-2/supabase/migrations/20240929034647_create_user_profiles.sql @@ -15,7 +15,6 @@ create table user_profiles ( constraint display_name_length check (char_length(display_name) >= 3) ); -- Set up Row Level Security (RLS) --- See https://supabase.com/docs/guides/auth/row-level-security for more details. alter table user_profiles enable row level security; @@ -30,12 +29,12 @@ create policy "Users can update own profile." on user_profiles -- Set up Storage! insert into storage.buckets (id, name) - values ('avatars', 'avatars'); + values ('user_profile_images', 'user_profile_images'); -- Set up access controls for storage. -- See https://supabase.com/docs/guides/storage#policy-examples for more details. -create policy "Avatar images are publicly accessible." on storage.objects - for select using (bucket_id = 'avatars'); +create policy "User profiles images are publicly accessible." on storage.objects + for select using (bucket_id = 'user_profile_images'); -create policy "Anyone can upload an avatar." on storage.objects - for insert with check (bucket_id = 'avatars'); +create policy "Authed users can upload a profile image." on storage.objects + for insert to authenticated with check (bucket_id = 'user_profile_images'); From 725d056f3e1c0a27f1107200005255250e41cb26 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Sat, 28 Sep 2024 23:30:52 -0700 Subject: [PATCH 007/353] add collaborators for spaes --- .../20240929062844_collaborators.sql | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 mirror-2/supabase/migrations/20240929062844_collaborators.sql diff --git a/mirror-2/supabase/migrations/20240929062844_collaborators.sql b/mirror-2/supabase/migrations/20240929062844_collaborators.sql new file mode 100644 index 00000000..91b5d1db --- /dev/null +++ b/mirror-2/supabase/migrations/20240929062844_collaborators.sql @@ -0,0 +1,44 @@ + +-- Create the space_user_collaborators table +create table space_user_collaborators ( + id uuid not null primary key, + space_id uuid references spaces(id) on delete cascade not null, + user_id uuid references auth.users(id) on delete cascade not null, + created_at timestamp with time zone not null default now(), + constraint unique_space_user unique(space_id, user_id) +); + +-- Enable RLS for space_user_collaborators +alter table space_user_collaborators + enable row level security; + +-- Only space owners can add collaborators +create policy "Only space owners can add collaborators" +on space_user_collaborators +for insert +with check ( + exists ( + select 1 from spaces + where spaces.id = space_id + and spaces.creator_user_id = auth.uid() + ) +); + +-- Policy for selecting space_user_collaborators +create policy "Users can view where they are a collaborator" +on space_user_collaborators +for select +using (user_id = auth.uid()); + + +-- Policy for collaborators to view spaces +create policy "Collaborators can view spaces" +on spaces +for select +using ( + exists ( + select 1 from space_user_collaborators + where space_user_collaborators.space_id = spaces.id + and space_user_collaborators.user_id = auth.uid() + ) +); From b7419eeaa38d6be20a4e53979f8bcc22374977a4 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Sat, 28 Sep 2024 23:34:49 -0700 Subject: [PATCH 008/353] update readme --- mirror-2/README.md | 97 +--------------------------------------------- 1 file changed, 1 insertion(+), 96 deletions(-) diff --git a/mirror-2/README.md b/mirror-2/README.md index 53c555a6..a186c72f 100644 --- a/mirror-2/README.md +++ b/mirror-2/README.md @@ -1,96 +1 @@ - - Next.js and Supabase Starter Kit - the fastest way to build apps with Next.js and Supabase -

    Next.js and Supabase Starter Kit

    -
    - -

    - The fastest way to build apps with Next.js and Supabase -

    - -

    - Features · - Demo · - Deploy to Vercel · - Clone and run locally · - Feedback and issues - More Examples -

    -
    - -## Features - -- Works across the entire [Next.js](https://nextjs.org) stack - - App Router - - Pages Router - - Middleware - - Client - - Server - - It just works! -- supabase-ssr. A package to configure Supabase Auth to use cookies -- Styling with [Tailwind CSS](https://tailwindcss.com) -- Components with [shadcn/ui](https://ui.shadcn.com/) -- Optional deployment with [Supabase Vercel Integration and Vercel deploy](#deploy-your-own) - - Environment variables automatically assigned to Vercel project - -## Demo - -You can view a fully working demo at [demo-nextjs-with-supabase.vercel.app](https://demo-nextjs-with-supabase.vercel.app/). - -## Deploy to Vercel - -Vercel deployment will guide you through creating a Supabase account and project. - -After installation of the Supabase integration, all relevant environment variables will be assigned to the project so the deployment is fully functioning. - -[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fvercel%2Fnext.js%2Ftree%2Fcanary%2Fexamples%2Fwith-supabase&project-name=nextjs-with-supabase&repository-name=nextjs-with-supabase&demo-title=nextjs-with-supabase&demo-description=This+starter+configures+Supabase+Auth+to+use+cookies%2C+making+the+user%27s+session+available+throughout+the+entire+Next.js+app+-+Client+Components%2C+Server+Components%2C+Route+Handlers%2C+Server+Actions+and+Middleware.&demo-url=https%3A%2F%2Fdemo-nextjs-with-supabase.vercel.app%2F&external-id=https%3A%2F%2Fgithub.com%2Fvercel%2Fnext.js%2Ftree%2Fcanary%2Fexamples%2Fwith-supabase&demo-image=https%3A%2F%2Fdemo-nextjs-with-supabase.vercel.app%2Fopengraph-image.png) - -The above will also clone the Starter kit to your GitHub, you can clone that locally and develop locally. - -If you wish to just develop locally and not deploy to Vercel, [follow the steps below](#clone-and-run-locally). - -## Clone and run locally - -1. You'll first need a Supabase project which can be made [via the Supabase dashboard](https://database.new) - -2. Create a Next.js app using the Supabase Starter template npx command - - ```bash - npx create-next-app -e with-supabase - ``` - -3. Use `cd` to change into the app's directory - - ```bash - cd name-of-new-app - ``` - -4. Rename `.env.example` to `.env.local` and update the following: - - ``` - NEXT_PUBLIC_SUPABASE_URL=[INSERT SUPABASE PROJECT URL] - NEXT_PUBLIC_SUPABASE_ANON_KEY=[INSERT SUPABASE PROJECT API ANON KEY] - ``` - - Both `NEXT_PUBLIC_SUPABASE_URL` and `NEXT_PUBLIC_SUPABASE_ANON_KEY` can be found in [your Supabase project's API settings](https://app.supabase.com/project/_/settings/api) - -5. You can now run the Next.js local development server: - - ```bash - npm run dev - ``` - - The starter kit should now be running on [localhost:3000](http://localhost:3000/). - -6. This template comes with the default shadcn/ui style initialized. If you instead want other ui.shadcn styles, delete `components.json` and [re-install shadcn/ui](https://ui.shadcn.com/docs/installation/next) - -> Check out [the docs for Local Development](https://supabase.com/docs/guides/getting-started/local-development) to also run Supabase locally. - -## Feedback and issues - -Please file feedback and issues over on the [Supabase GitHub org](https://github.com/supabase/supabase/issues/new/choose). - -## More Supabase examples - -- [Next.js Subscription Payments Starter](https://github.com/vercel/nextjs-subscription-payments) -- [Cookie-based Auth and the Next.js 13 App Router (free course)](https://youtube.com/playlist?list=PL5S4mPUpp4OtMhpnp93EFSo42iQ40XjbF) -- [Supabase Auth and the Next.js App Router](https://github.com/supabase/supabase/tree/master/examples/auth/nextjs) +"Alea iacta est" - Julius Caesar after he crossed the Rubicon with his army, 49 BC. From e7e2f408799f53d2be5e4f4d006dc73eae5a046c Mon Sep 17 00:00:00 2001 From: Kluskey Date: Sat, 28 Sep 2024 23:36:00 -0700 Subject: [PATCH 009/353] readme --- mirror-2/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mirror-2/README.md b/mirror-2/README.md index a186c72f..5a07d3cb 100644 --- a/mirror-2/README.md +++ b/mirror-2/README.md @@ -1 +1 @@ -"Alea iacta est" - Julius Caesar after he crossed the Rubicon with his army, 49 BC. +Alea iacta est. From 4058f45fb19b965f2fc79161878dbf67176a4976 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Sat, 28 Sep 2024 23:36:48 -0700 Subject: [PATCH 010/353] path fix --- LICENSE.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE.txt b/LICENSE.txt index 363fca64..d6cb58e8 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,4 @@ -The below licenses apply to everything in this repository with the exception of the /mirror-2 folder; for the mirror-2 folder, see /mirror-2/license.txt. +The below licenses apply to everything in this repository with the exception of the /mirror-2 folder; for the mirror-2 folder, see /mirror-2/LICENSE.txt. MIT License From 4a43e85635b39c2388dd0e03d8e3c0ece8097017 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Sun, 29 Sep 2024 04:01:49 -0700 Subject: [PATCH 011/353] gitignore config toml --- mirror-2/supabase/.gitignore | 1 + mirror-2/supabase/config.toml | 239 ---------------------------------- 2 files changed, 1 insertion(+), 239 deletions(-) delete mode 100644 mirror-2/supabase/config.toml diff --git a/mirror-2/supabase/.gitignore b/mirror-2/supabase/.gitignore index a3ad8805..bd5e3e72 100644 --- a/mirror-2/supabase/.gitignore +++ b/mirror-2/supabase/.gitignore @@ -2,3 +2,4 @@ .branches .temp .env +config.toml diff --git a/mirror-2/supabase/config.toml b/mirror-2/supabase/config.toml deleted file mode 100644 index dc5d9225..00000000 --- a/mirror-2/supabase/config.toml +++ /dev/null @@ -1,239 +0,0 @@ -# A string used to distinguish different Supabase projects on the same host. Defaults to the -# working directory name when running `supabase init`. -project_id = "mirror-2" - -[api] -enabled = true -# Port to use for the API URL. -port = 54321 -# Schemas to expose in your API. Tables, views and stored procedures in this schema will get API -# endpoints. `public` is always included. -schemas = ["public", "graphql_public"] -# Extra schemas to add to the search_path of every request. `public` is always included. -extra_search_path = ["public", "extensions"] -# The maximum number of rows returns from a view, table, or stored procedure. Limits payload size -# for accidental or malicious requests. -max_rows = 1000 - -[api.tls] -enabled = false - -[db] -# Port to use for the local database URL. -port = 54322 -# Port used by db diff command to initialize the shadow database. -shadow_port = 54320 -# The database major version to use. This has to be the same as your remote database's. Run `SHOW -# server_version;` on the remote database to check. -major_version = 15 - -[db.pooler] -enabled = false -# Port to use for the local connection pooler. -port = 54329 -# Specifies when a server connection can be reused by other clients. -# Configure one of the supported pooler modes: `transaction`, `session`. -pool_mode = "transaction" -# How many server connections to allow per user/database pair. -default_pool_size = 20 -# Maximum number of client connections allowed. -max_client_conn = 100 - -[realtime] -enabled = true -# Bind realtime via either IPv4 or IPv6. (default: IPv4) -# ip_version = "IPv6" -# The maximum length in bytes of HTTP request headers. (default: 4096) -# max_header_length = 4096 - -[studio] -enabled = true -# Port to use for Supabase Studio. -port = 54323 -# External URL of the API server that frontend connects to. -api_url = "http://127.0.0.1" -# OpenAI API Key to use for Supabase AI in the Supabase Studio. -openai_api_key = "env(OPENAI_API_KEY)" - -# Email testing server. Emails sent with the local dev setup are not actually sent - rather, they -# are monitored, and you can view the emails that would have been sent from the web interface. -[inbucket] -enabled = true -# Port to use for the email testing server web interface. -port = 54324 -# Uncomment to expose additional ports for testing user applications that send emails. -# smtp_port = 54325 -# pop3_port = 54326 - -[storage] -enabled = true -# The maximum file size allowed (e.g. "5MB", "500KB"). -file_size_limit = "50MiB" - -[storage.image_transformation] -enabled = true - -# Uncomment to configure local storage buckets -# [storage.buckets.images] -# public = false -# file_size_limit = "50MiB" -# allowed_mime_types = ["image/png", "image/jpeg"] -# objects_path = "./images" - -[auth] -enabled = true -# The base URL of your website. Used as an allow-list for redirects and for constructing URLs used -# in emails. -site_url = "http://127.0.0.1:3000" -# A list of *exact* URLs that auth providers are permitted to redirect to post authentication. -additional_redirect_urls = ["https://127.0.0.1:3000"] -# How long tokens are valid for, in seconds. Defaults to 3600 (1 hour), maximum 604,800 (1 week). -jwt_expiry = 3600 -# If disabled, the refresh token will never expire. -enable_refresh_token_rotation = true -# Allows refresh tokens to be reused after expiry, up to the specified interval in seconds. -# Requires enable_refresh_token_rotation = true. -refresh_token_reuse_interval = 10 -# Allow/disallow new user signups to your project. -enable_signup = true -# Allow/disallow anonymous sign-ins to your project. -enable_anonymous_sign_ins = false -# Allow/disallow testing manual linking of accounts -enable_manual_linking = false - -[auth.email] -# Allow/disallow new user signups via email to your project. -enable_signup = true -# If enabled, a user will be required to confirm any email change on both the old, and new email -# addresses. If disabled, only the new email is required to confirm. -double_confirm_changes = true -# If enabled, users need to confirm their email address before signing in. -enable_confirmations = false -# If enabled, users will need to reauthenticate or have logged in recently to change their password. -secure_password_change = false -# Controls the minimum amount of time that must pass before sending another signup confirmation or password reset email. -max_frequency = "1s" - -# Use a production-ready SMTP server -# [auth.email.smtp] -# host = "smtp.sendgrid.net" -# port = 587 -# user = "apikey" -# pass = "env(SENDGRID_API_KEY)" -# admin_email = "admin@email.com" -# sender_name = "Admin" - -# Uncomment to customize email template -# [auth.email.template.invite] -# subject = "You have been invited" -# content_path = "./supabase/templates/invite.html" - -[auth.sms] -# Allow/disallow new user signups via SMS to your project. -enable_signup = true -# If enabled, users need to confirm their phone number before signing in. -enable_confirmations = false -# Template for sending OTP to users -template = "Your code is {{ .Code }} ." -# Controls the minimum amount of time that must pass before sending another sms otp. -max_frequency = "5s" - -# Use pre-defined map of phone number to OTP for testing. -# [auth.sms.test_otp] -# 4152127777 = "123456" - -# Configure logged in session timeouts. -# [auth.sessions] -# Force log out after the specified duration. -# timebox = "24h" -# Force log out if the user has been inactive longer than the specified duration. -# inactivity_timeout = "8h" - -# This hook runs before a token is issued and allows you to add additional claims based on the authentication method used. -# [auth.hook.custom_access_token] -# enabled = true -# uri = "pg-functions:////" - -# Configure one of the supported SMS providers: `twilio`, `twilio_verify`, `messagebird`, `textlocal`, `vonage`. -[auth.sms.twilio] -enabled = false -account_sid = "" -message_service_sid = "" -# DO NOT commit your Twilio auth token to git. Use environment variable substitution instead: -auth_token = "env(SUPABASE_AUTH_SMS_TWILIO_AUTH_TOKEN)" - -[auth.mfa] -# Control how many MFA factors can be enrolled at once per user. -max_enrolled_factors = 10 - -# Control use of MFA via App Authenticator (TOTP) -[auth.mfa.totp] -enroll_enabled = true -verify_enabled = true - -# Configure Multi-factor-authentication via Phone Messaging -# [auth.mfa.phone] -# enroll_enabled = true -# verify_enabled = true -# otp_length = 6 -# template = "Your code is {{ .Code }} ." -# max_frequency = "10s" - -# Use an external OAuth provider. The full list of providers are: `apple`, `azure`, `bitbucket`, -# `discord`, `facebook`, `github`, `gitlab`, `google`, `keycloak`, `linkedin_oidc`, `notion`, `twitch`, -# `twitter`, `slack`, `spotify`, `workos`, `zoom`. -[auth.external.apple] -enabled = false -client_id = "" -# DO NOT commit your OAuth provider secret to git. Use environment variable substitution instead: -secret = "env(SUPABASE_AUTH_EXTERNAL_APPLE_SECRET)" -# Overrides the default auth redirectUrl. -redirect_uri = "" -# Overrides the default auth provider URL. Used to support self-hosted gitlab, single-tenant Azure, -# or any other third-party OIDC providers. -url = "" -# If enabled, the nonce check will be skipped. Required for local sign in with Google auth. -skip_nonce_check = false - -# Use Firebase Auth as a third-party provider alongside Supabase Auth. -[auth.third_party.firebase] -enabled = false -# project_id = "my-firebase-project" - -# Use Auth0 as a third-party provider alongside Supabase Auth. -[auth.third_party.auth0] -enabled = false -# tenant = "my-auth0-tenant" -# tenant_region = "us" - -# Use AWS Cognito (Amplify) as a third-party provider alongside Supabase Auth. -[auth.third_party.aws_cognito] -enabled = false -# user_pool_id = "my-user-pool-id" -# user_pool_region = "us-east-1" - -[edge_runtime] -enabled = true -# Configure one of the supported request policies: `oneshot`, `per_worker`. -# Use `oneshot` for hot reload, or `per_worker` for load testing. -policy = "oneshot" -inspector_port = 8083 - -[analytics] -enabled = true -port = 54327 -# Configure one of the supported backends: `postgres`, `bigquery`. -backend = "postgres" - -# Experimental features may be deprecated any time -[experimental] -# Configures Postgres storage engine to use OrioleDB (S3) -orioledb_version = "" -# Configures S3 bucket URL, eg. .s3-.amazonaws.com -s3_host = "env(S3_HOST)" -# Configures S3 bucket region, eg. us-east-1 -s3_region = "env(S3_REGION)" -# Configures AWS_ACCESS_KEY_ID for S3 bucket -s3_access_key = "env(S3_ACCESS_KEY)" -# Configures AWS_SECRET_ACCESS_KEY for S3 bucket -s3_secret_key = "env(S3_SECRET_KEY)" From 28e406675b2e1e76a6518e1c317a0b9e5f366cc1 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Sun, 29 Sep 2024 04:35:27 -0700 Subject: [PATCH 012/353] add shadcn --- mirror-2/components.json | 11 +-- mirror-2/lib/utils.ts | 6 +- mirror-2/package.json | 2 +- mirror-2/tailwind.config.ts | 134 +++++++++++++++++++----------------- mirror-2/yarn.lock | 8 +-- 5 files changed, 86 insertions(+), 75 deletions(-) diff --git a/mirror-2/components.json b/mirror-2/components.json index ec9676bf..d77a3f82 100644 --- a/mirror-2/components.json +++ b/mirror-2/components.json @@ -6,12 +6,15 @@ "tailwind": { "config": "tailwind.config.ts", "css": "app/globals.css", - "baseColor": "neutral", - "cssVariables": true, + "baseColor": "slate", + "cssVariables": false, "prefix": "" }, "aliases": { "components": "@/components", - "utils": "@/lib/utils" + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" } -} +} \ No newline at end of file diff --git a/mirror-2/lib/utils.ts b/mirror-2/lib/utils.ts index 365058ce..bd0c391d 100644 --- a/mirror-2/lib/utils.ts +++ b/mirror-2/lib/utils.ts @@ -1,6 +1,6 @@ -import { type ClassValue, clsx } from "clsx"; -import { twMerge } from "tailwind-merge"; +import { clsx, type ClassValue } from "clsx" +import { twMerge } from "tailwind-merge" export function cn(...inputs: ClassValue[]) { - return twMerge(clsx(inputs)); + return twMerge(clsx(inputs)) } diff --git a/mirror-2/package.json b/mirror-2/package.json index 1ab6bab0..3b5fac91 100644 --- a/mirror-2/package.json +++ b/mirror-2/package.json @@ -17,7 +17,7 @@ "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "geist": "^1.2.1", - "lucide-react": "^0.436.0", + "lucide-react": "^0.446.0", "next": "latest", "next-themes": "^0.3.0", "prettier": "^3.3.3", diff --git a/mirror-2/tailwind.config.ts b/mirror-2/tailwind.config.ts index 41668a3b..f20f6fb9 100644 --- a/mirror-2/tailwind.config.ts +++ b/mirror-2/tailwind.config.ts @@ -10,69 +10,77 @@ const config = { ], prefix: "", theme: { - container: { - center: true, - padding: "2rem", - screens: { - "2xl": "1400px", - }, - }, - extend: { - colors: { - border: "hsl(var(--border))", - input: "hsl(var(--input))", - ring: "hsl(var(--ring))", - background: "hsl(var(--background))", - foreground: "hsl(var(--foreground))", - primary: { - DEFAULT: "hsl(var(--primary))", - foreground: "hsl(var(--primary-foreground))", - }, - secondary: { - DEFAULT: "hsl(var(--secondary))", - foreground: "hsl(var(--secondary-foreground))", - }, - destructive: { - DEFAULT: "hsl(var(--destructive))", - foreground: "hsl(var(--destructive-foreground))", - }, - muted: { - DEFAULT: "hsl(var(--muted))", - foreground: "hsl(var(--muted-foreground))", - }, - accent: { - DEFAULT: "hsl(var(--accent))", - foreground: "hsl(var(--accent-foreground))", - }, - popover: { - DEFAULT: "hsl(var(--popover))", - foreground: "hsl(var(--popover-foreground))", - }, - card: { - DEFAULT: "hsl(var(--card))", - foreground: "hsl(var(--card-foreground))", - }, - }, - borderRadius: { - lg: "var(--radius)", - md: "calc(var(--radius) - 2px)", - sm: "calc(var(--radius) - 4px)", - }, - keyframes: { - "accordion-down": { - from: { height: "0" }, - to: { height: "var(--radix-accordion-content-height)" }, - }, - "accordion-up": { - from: { height: "var(--radix-accordion-content-height)" }, - to: { height: "0" }, - }, - }, - animation: { - "accordion-down": "accordion-down 0.2s ease-out", - "accordion-up": "accordion-up 0.2s ease-out", - }, - }, + container: { + center: 'true', + padding: '2rem', + screens: { + '2xl': '1400px' + } + }, + extend: { + colors: { + border: 'hsl(var(--border))', + input: 'hsl(var(--input))', + ring: 'hsl(var(--ring))', + background: 'hsl(var(--background))', + foreground: 'hsl(var(--foreground))', + primary: { + DEFAULT: 'hsl(var(--primary))', + foreground: 'hsl(var(--primary-foreground))' + }, + secondary: { + DEFAULT: 'hsl(var(--secondary))', + foreground: 'hsl(var(--secondary-foreground))' + }, + destructive: { + DEFAULT: 'hsl(var(--destructive))', + foreground: 'hsl(var(--destructive-foreground))' + }, + muted: { + DEFAULT: 'hsl(var(--muted))', + foreground: 'hsl(var(--muted-foreground))' + }, + accent: { + DEFAULT: 'hsl(var(--accent))', + foreground: 'hsl(var(--accent-foreground))' + }, + popover: { + DEFAULT: 'hsl(var(--popover))', + foreground: 'hsl(var(--popover-foreground))' + }, + card: { + DEFAULT: 'hsl(var(--card))', + foreground: 'hsl(var(--card-foreground))' + } + }, + borderRadius: { + lg: 'var(--radius)', + md: 'calc(var(--radius) - 2px)', + sm: 'calc(var(--radius) - 4px)' + }, + keyframes: { + 'accordion-down': { + from: { + height: '0' + }, + to: { + height: 'var(--radix-accordion-content-height)' + } + }, + 'accordion-up': { + from: { + height: 'var(--radix-accordion-content-height)' + }, + to: { + height: '0' + } + } + }, + animation: { + 'accordion-down': 'accordion-down 0.2s ease-out', + 'accordion-up': 'accordion-up 0.2s ease-out' + } + } }, plugins: [require("tailwindcss-animate")], } satisfies Config; diff --git a/mirror-2/yarn.lock b/mirror-2/yarn.lock index 4974daf5..3bf09c9b 100644 --- a/mirror-2/yarn.lock +++ b/mirror-2/yarn.lock @@ -1011,10 +1011,10 @@ lru-cache@^10.2.0: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== -lucide-react@^0.436.0: - version "0.436.0" - resolved "https://registry.yarnpkg.com/lucide-react/-/lucide-react-0.436.0.tgz#020c75031fbba5e01f7188991fa5a50195098f50" - integrity sha512-N292bIxoqm1aObAg0MzFtvhYwgQE6qnIOWx/GLj5ONgcTPH6N0fD9bVq/GfdeC9ZORBXozt/XeEKDpiB3x3vlQ== +lucide-react@^0.446.0: + version "0.446.0" + resolved "https://registry.yarnpkg.com/lucide-react/-/lucide-react-0.446.0.tgz#b92bd0229ad79a11fff84d47f9351797fc0b904e" + integrity sha512-BU7gy8MfBMqvEdDPH79VhOXSEgyG8TSPOKWaExWGCQVqnGH7wGgDngPbofu+KdtVjPQBWbEmnfMTq90CTiiDRg== merge2@^1.3.0: version "1.4.1" From 04e894904c940b4468791031fb9443fceed88921 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Sun, 29 Sep 2024 04:47:00 -0700 Subject: [PATCH 013/353] updaet theme --- mirror-2/app/globals.css | 68 ++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/mirror-2/app/globals.css b/mirror-2/app/globals.css index f450d1e2..5b49fd52 100644 --- a/mirror-2/app/globals.css +++ b/mirror-2/app/globals.css @@ -5,25 +5,25 @@ @layer base { :root { --background: 0 0% 100%; - --foreground: 0 0% 3.9%; + --foreground: 222.2 84% 4.9%; --card: 0 0% 100%; - --card-foreground: 0 0% 3.9%; + --card-foreground: 222.2 84% 4.9%; --popover: 0 0% 100%; - --popover-foreground: 0 0% 3.9%; - --primary: 0 0% 9%; - --primary-foreground: 0 0% 98%; - --secondary: 0 0% 96.1%; - --secondary-foreground: 0 0% 9%; - --muted: 0 0% 96.1%; - --muted-foreground: 0 0% 45.1%; - --accent: 0 0% 96.1%; - --accent-foreground: 0 0% 9%; + --popover-foreground: 222.2 84% 4.9%; + --primary: 221.2 83.2% 53.3%; + --primary-foreground: 210 40% 98%; + --secondary: 210 40% 96.1%; + --secondary-foreground: 222.2 47.4% 11.2%; + --muted: 210 40% 96.1%; + --muted-foreground: 215.4 16.3% 46.9%; + --accent: 210 40% 96.1%; + --accent-foreground: 222.2 47.4% 11.2%; --destructive: 0 84.2% 60.2%; - --destructive-foreground: 0 0% 98%; - --border: 0 0% 89.8%; - --input: 0 0% 89.8%; - --ring: 0 0% 3.9%; - --radius: 0.5rem; + --destructive-foreground: 210 40% 98%; + --border: 214.3 31.8% 91.4%; + --input: 214.3 31.8% 91.4%; + --ring: 221.2 83.2% 53.3%; + --radius: 0.75rem; --chart-1: 12 76% 61%; --chart-2: 173 58% 39%; --chart-3: 197 37% 24%; @@ -32,25 +32,25 @@ } .dark { - --background: 0 0% 3.9%; - --foreground: 0 0% 98%; - --card: 0 0% 3.9%; - --card-foreground: 0 0% 98%; - --popover: 0 0% 3.9%; - --popover-foreground: 0 0% 98%; - --primary: 0 0% 98%; - --primary-foreground: 0 0% 9%; - --secondary: 0 0% 14.9%; - --secondary-foreground: 0 0% 98%; - --muted: 0 0% 14.9%; - --muted-foreground: 0 0% 63.9%; - --accent: 0 0% 14.9%; - --accent-foreground: 0 0% 98%; + --background: 222.2 84% 4.9%; + --foreground: 210 40% 98%; + --card: 222.2 84% 4.9%; + --card-foreground: 210 40% 98%; + --popover: 222.2 84% 4.9%; + --popover-foreground: 210 40% 98%; + --primary: 217.2 91.2% 59.8%; + --primary-foreground: 222.2 47.4% 11.2%; + --secondary: 217.2 32.6% 17.5%; + --secondary-foreground: 210 40% 98%; + --muted: 217.2 32.6% 17.5%; + --muted-foreground: 215 20.2% 65.1%; + --accent: 217.2 32.6% 17.5%; + --accent-foreground: 210 40% 98%; --destructive: 0 62.8% 30.6%; - --destructive-foreground: 0 0% 98%; - --border: 0 0% 14.9%; - --input: 0 0% 14.9%; - --ring: 0 0% 83.1%; + --destructive-foreground: 210 40% 98%; + --border: 217.2 32.6% 17.5%; + --input: 217.2 32.6% 17.5%; + --ring: 224.3 76.3% 48%; --chart-1: 220 70% 50%; --chart-2: 160 60% 45%; --chart-3: 30 80% 55%; From 388fe1860d10d7bb66aa60d30e3b676d14337e87 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Sun, 29 Sep 2024 04:52:44 -0700 Subject: [PATCH 014/353] theme --- mirror-2/app/globals.css | 68 ++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/mirror-2/app/globals.css b/mirror-2/app/globals.css index 5b49fd52..eb4caac9 100644 --- a/mirror-2/app/globals.css +++ b/mirror-2/app/globals.css @@ -5,25 +5,25 @@ @layer base { :root { --background: 0 0% 100%; - --foreground: 222.2 84% 4.9%; + --foreground: 0 0% 3.9%; --card: 0 0% 100%; - --card-foreground: 222.2 84% 4.9%; + --card-foreground: 0 0% 3.9%; --popover: 0 0% 100%; - --popover-foreground: 222.2 84% 4.9%; - --primary: 221.2 83.2% 53.3%; - --primary-foreground: 210 40% 98%; - --secondary: 210 40% 96.1%; - --secondary-foreground: 222.2 47.4% 11.2%; - --muted: 210 40% 96.1%; - --muted-foreground: 215.4 16.3% 46.9%; - --accent: 210 40% 96.1%; - --accent-foreground: 222.2 47.4% 11.2%; + --popover-foreground: 0 0% 3.9%; + --primary: 0 72.2% 50.6%; + --primary-foreground: 0 85.7% 97.3%; + --secondary: 0 0% 96.1%; + --secondary-foreground: 0 0% 9%; + --muted: 0 0% 96.1%; + --muted-foreground: 0 0% 45.1%; + --accent: 0 0% 96.1%; + --accent-foreground: 0 0% 9%; --destructive: 0 84.2% 60.2%; - --destructive-foreground: 210 40% 98%; - --border: 214.3 31.8% 91.4%; - --input: 214.3 31.8% 91.4%; - --ring: 221.2 83.2% 53.3%; - --radius: 0.75rem; + --destructive-foreground: 0 0% 98%; + --border: 0 0% 89.8%; + --input: 0 0% 89.8%; + --ring: 0 72.2% 50.6%; + --radius: 0rem; --chart-1: 12 76% 61%; --chart-2: 173 58% 39%; --chart-3: 197 37% 24%; @@ -32,25 +32,25 @@ } .dark { - --background: 222.2 84% 4.9%; - --foreground: 210 40% 98%; - --card: 222.2 84% 4.9%; - --card-foreground: 210 40% 98%; - --popover: 222.2 84% 4.9%; - --popover-foreground: 210 40% 98%; - --primary: 217.2 91.2% 59.8%; - --primary-foreground: 222.2 47.4% 11.2%; - --secondary: 217.2 32.6% 17.5%; - --secondary-foreground: 210 40% 98%; - --muted: 217.2 32.6% 17.5%; - --muted-foreground: 215 20.2% 65.1%; - --accent: 217.2 32.6% 17.5%; - --accent-foreground: 210 40% 98%; + --background: 0 0% 3.9%; + --foreground: 0 0% 98%; + --card: 0 0% 3.9%; + --card-foreground: 0 0% 98%; + --popover: 0 0% 3.9%; + --popover-foreground: 0 0% 98%; + --primary: 0 72.2% 50.6%; + --primary-foreground: 0 85.7% 97.3%; + --secondary: 0 0% 14.9%; + --secondary-foreground: 0 0% 98%; + --muted: 0 0% 14.9%; + --muted-foreground: 0 0% 63.9%; + --accent: 0 0% 14.9%; + --accent-foreground: 0 0% 98%; --destructive: 0 62.8% 30.6%; - --destructive-foreground: 210 40% 98%; - --border: 217.2 32.6% 17.5%; - --input: 217.2 32.6% 17.5%; - --ring: 224.3 76.3% 48%; + --destructive-foreground: 0 0% 98%; + --border: 0 0% 14.9%; + --input: 0 0% 14.9%; + --ring: 0 72.2% 50.6%; --chart-1: 220 70% 50%; --chart-2: 160 60% 45%; --chart-3: 30 80% 55%; From bf01b023b282cf0b1fe3b6f5f7d914d59b127732 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Sun, 29 Sep 2024 05:00:31 -0700 Subject: [PATCH 015/353] copy pt 1 --- mirror-2/.env.example | 1 + mirror-2/app/layout.tsx | 7 ++++--- mirror-2/lib/copy-service.ts | 19 +++++++++++++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 mirror-2/lib/copy-service.ts diff --git a/mirror-2/.env.example b/mirror-2/.env.example index 5e977a9e..83a9dc8b 100644 --- a/mirror-2/.env.example +++ b/mirror-2/.env.example @@ -2,3 +2,4 @@ # https://app.supabase.com/project/_/settings/api NEXT_PUBLIC_SUPABASE_URL=http://127.0.0.1:54321 NEXT_PUBLIC_SUPABASE_ANON_KEY=SUPABASE_CLIENT_API_KEY +NEXT_PUBLIC_APP_NAME="The Mirror" # only use The Mirror or Reflekt diff --git a/mirror-2/app/layout.tsx b/mirror-2/app/layout.tsx index 3ff5a03a..ccc31728 100644 --- a/mirror-2/app/layout.tsx +++ b/mirror-2/app/layout.tsx @@ -7,6 +7,7 @@ import { GeistSans } from "geist/font/sans"; import { ThemeProvider } from "next-themes"; import Link from "next/link"; import "./globals.css"; +import { appName, appFullName } from "@/lib/copy-service"; const defaultUrl = process.env.VERCEL_URL ? `https://${process.env.VERCEL_URL}` @@ -14,8 +15,8 @@ const defaultUrl = process.env.VERCEL_URL export const metadata = { metadataBase: new URL(defaultUrl), - title: "The Mirror: Game Development Platform", - description: "Next-Gen Game Development Platform", + title: appFullName(), + description: "Build, Play, & Publish Games", }; export default function RootLayout({ @@ -37,7 +38,7 @@ export default function RootLayout({
    -
    + {/*
    Upgrade to Pro @@ -107,7 +107,7 @@ export default function Dashboard() { -
    +
    */}
    @@ -118,7 +118,7 @@ export default function Dashboard() {
    @@ -134,28 +134,20 @@ export default function Dashboard() { My Account - Settings - Support + Discord Logout
    -
    -

    Inventory

    -

    - You have no products + 3D Viewport

    -

    - You can start selling as soon as you add a product. -

    -
    From 37c04334b6a3a9d6158b2f2c78d07d69df470a01 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 07:33:40 -0700 Subject: [PATCH 023/353] resizable sidebar --- mirror-2/app/build/layout.tsx | 217 ++++++++++++++++------------------ 1 file changed, 102 insertions(+), 115 deletions(-) diff --git a/mirror-2/app/build/layout.tsx b/mirror-2/app/build/layout.tsx index 0e0c79b7..0be3c975 100644 --- a/mirror-2/app/build/layout.tsx +++ b/mirror-2/app/build/layout.tsx @@ -30,128 +30,115 @@ import { DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { Input } from "@/components/ui/input" -import { Sheet, SheetContent, SheetTrigger } from "@/components/ui/sheet" - -const description = - "A products dashboard with a sidebar navigation and a main content area. The dashboard has a header with a search input and a user menu. The sidebar has a logo, navigation links, and a card with a call to action. The main content area shows an empty state with a call to action." +import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "@/components/ui/resizable" export default function Dashboard() { return ( -
    -
    -
    -
    - - - The Mirror - - -
    -
    - + +
    +
    - {/*
    - - - Upgrade to Pro - - Unlock all features and get unlimited access to our support - team. - - - - - - -
    */}
    -
    -
    -
    -
    -
    -
    - - + + + +
    +
    +
    + +
    + + +
    + +
    + + + + + + My Account + + Discord + + Logout + + +
    +
    +
    +
    +

    + 3D Viewport +

    - -
    - - - - - - My Account - - Discord - - Logout - - -
    -
    -
    -
    -

    - 3D Viewport -

    -
    -
    -
    - + + + + ) } From c48243b93281c5a9a998da3183c9e8a520b78844 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 07:39:29 -0700 Subject: [PATCH 024/353] center --- mirror-2/app/build/layout.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mirror-2/app/build/layout.tsx b/mirror-2/app/build/layout.tsx index 0be3c975..a7715959 100644 --- a/mirror-2/app/build/layout.tsx +++ b/mirror-2/app/build/layout.tsx @@ -95,7 +95,7 @@ export default function Dashboard() { -
    +
    From 781e3af5196ac5138f76db604a3fe2ae70631769 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 07:39:48 -0700 Subject: [PATCH 025/353] add server only --- mirror-2/package.json | 3 ++- mirror-2/yarn.lock | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/mirror-2/package.json b/mirror-2/package.json index 225b27f5..857f767f 100644 --- a/mirror-2/package.json +++ b/mirror-2/package.json @@ -24,7 +24,8 @@ "prettier": "^3.3.3", "react": "18.2.0", "react-dom": "18.2.0", - "react-resizable-panels": "^2.1.4" + "react-resizable-panels": "^2.1.4", + "server-only": "^0.0.1" }, "devDependencies": { "@types/node": "20.10.6", diff --git a/mirror-2/yarn.lock b/mirror-2/yarn.lock index b50b4a80..c033d8b4 100644 --- a/mirror-2/yarn.lock +++ b/mirror-2/yarn.lock @@ -1352,6 +1352,11 @@ scheduler@^0.23.0: dependencies: loose-envify "^1.1.0" +server-only@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/server-only/-/server-only-0.0.1.tgz#0f366bb6afb618c37c9255a314535dc412cd1c9e" + integrity sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA== + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" From dc1036bde7b31d2f8b613fa264b52422d3b0945a Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 07:56:27 -0700 Subject: [PATCH 026/353] resizable changes --- mirror-2/app/build/layout.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mirror-2/app/build/layout.tsx b/mirror-2/app/build/layout.tsx index a7715959..1173ac81 100644 --- a/mirror-2/app/build/layout.tsx +++ b/mirror-2/app/build/layout.tsx @@ -35,7 +35,7 @@ import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "@/componen export default function Dashboard() { return ( - +
    From 0fbc210fe993aba60d39a1054bb5ca8a3199f218 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 08:10:25 -0700 Subject: [PATCH 027/353] add components --- mirror-2/app/build/layout.tsx | 44 +--------------- mirror-2/app/build/sidebar.tsx | 85 ++++++++++++++++++++++++++++++ mirror-2/components/ui/tooltip.tsx | 30 +++++++++++ mirror-2/package.json | 1 + mirror-2/yarn.lock | 25 +++++++++ 5 files changed, 143 insertions(+), 42 deletions(-) create mode 100644 mirror-2/app/build/sidebar.tsx create mode 100644 mirror-2/components/ui/tooltip.tsx diff --git a/mirror-2/app/build/layout.tsx b/mirror-2/app/build/layout.tsx index 1173ac81..465a2bbb 100644 --- a/mirror-2/app/build/layout.tsx +++ b/mirror-2/app/build/layout.tsx @@ -31,6 +31,7 @@ import { } from "@/components/ui/dropdown-menu" import { Input } from "@/components/ui/input" import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "@/components/ui/resizable" +import { Sidebar } from "@/app/build/sidebar" export default function Dashboard() { return ( @@ -48,48 +49,7 @@ export default function Dashboard() { Toggle notifications
    - +
    diff --git a/mirror-2/app/build/sidebar.tsx b/mirror-2/app/build/sidebar.tsx new file mode 100644 index 00000000..9174b9ea --- /dev/null +++ b/mirror-2/app/build/sidebar.tsx @@ -0,0 +1,85 @@ +'use client'; + +import { Tooltip, TooltipTrigger } from "@/components/ui/tooltip"; +import { Link, Home, ShoppingCart, Badge, Package, Users, LineChart } from "lucide-react"; +import { useState } from "react"; + +export function Sidebar() { + +} diff --git a/mirror-2/components/ui/tooltip.tsx b/mirror-2/components/ui/tooltip.tsx new file mode 100644 index 00000000..e74f4988 --- /dev/null +++ b/mirror-2/components/ui/tooltip.tsx @@ -0,0 +1,30 @@ +"use client" + +import * as React from "react" +import * as TooltipPrimitive from "@radix-ui/react-tooltip" + +import { cn } from "@/lib/utils" + +const TooltipProvider = TooltipPrimitive.Provider + +const Tooltip = TooltipPrimitive.Root + +const TooltipTrigger = TooltipPrimitive.Trigger + +const TooltipContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, sideOffset = 4, ...props }, ref) => ( + +)) +TooltipContent.displayName = TooltipPrimitive.Content.displayName + +export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } diff --git a/mirror-2/package.json b/mirror-2/package.json index 857f767f..967bebfa 100644 --- a/mirror-2/package.json +++ b/mirror-2/package.json @@ -12,6 +12,7 @@ "@radix-ui/react-dropdown-menu": "^2.1.1", "@radix-ui/react-label": "^2.1.0", "@radix-ui/react-slot": "^1.1.0", + "@radix-ui/react-tooltip": "^1.1.2", "@supabase/ssr": "latest", "@supabase/supabase-js": "latest", "autoprefixer": "10.4.17", diff --git a/mirror-2/yarn.lock b/mirror-2/yarn.lock index c033d8b4..092c9d1d 100644 --- a/mirror-2/yarn.lock +++ b/mirror-2/yarn.lock @@ -379,6 +379,24 @@ dependencies: "@radix-ui/react-compose-refs" "1.1.0" +"@radix-ui/react-tooltip@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-tooltip/-/react-tooltip-1.1.2.tgz#c42db2ffd7dcc6ff3d65407c8cb70490288f518d" + integrity sha512-9XRsLwe6Yb9B/tlnYCPVUd/TFS4J7HuOZW345DCeC6vKIxQGMZdx21RK4VoZauPD5frgkXTYVS5y90L+3YBn4w== + dependencies: + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.0" + "@radix-ui/react-dismissable-layer" "1.1.0" + "@radix-ui/react-id" "1.1.0" + "@radix-ui/react-popper" "1.2.0" + "@radix-ui/react-portal" "1.1.1" + "@radix-ui/react-presence" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-slot" "1.1.0" + "@radix-ui/react-use-controllable-state" "1.1.0" + "@radix-ui/react-visually-hidden" "1.1.0" + "@radix-ui/react-use-callback-ref@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz#bce938ca413675bc937944b0d01ef6f4a6dc5bf1" @@ -422,6 +440,13 @@ dependencies: "@radix-ui/react-use-layout-effect" "1.1.0" +"@radix-ui/react-visually-hidden@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz#ad47a8572580f7034b3807c8e6740cd41038a5a2" + integrity sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ== + dependencies: + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/rect@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-1.1.0.tgz#f817d1d3265ac5415dadc67edab30ae196696438" From 6e13d74452ef6dff8f44fa494677653347d90c5a Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 08:16:52 -0700 Subject: [PATCH 028/353] nbsp --- mirror-2/app/build/layout.tsx | 3 ++- mirror-2/app/build/sidebar.tsx | 5 +++-- mirror-2/app/layout.tsx | 7 ------- mirror-2/lib/copy-service.ts | 19 ------------------- mirror-2/lib/copy-service.tsx | 9 +++++++++ 5 files changed, 14 insertions(+), 29 deletions(-) delete mode 100644 mirror-2/lib/copy-service.ts create mode 100644 mirror-2/lib/copy-service.tsx diff --git a/mirror-2/app/build/layout.tsx b/mirror-2/app/build/layout.tsx index 465a2bbb..f26c5d7d 100644 --- a/mirror-2/app/build/layout.tsx +++ b/mirror-2/app/build/layout.tsx @@ -32,6 +32,7 @@ import { import { Input } from "@/components/ui/input" import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "@/components/ui/resizable" import { Sidebar } from "@/app/build/sidebar" +import { appName } from "@/lib/copy-service" export default function Dashboard() { return ( @@ -42,7 +43,7 @@ export default function Dashboard() {
    - The Mirror +
    {appName()}
    - - - Playground - - - - - - - - Models - - - - - - - - API - - - - - - - - Documentation - - - - - - - - Settings - - - + return ( + + + + ); } From cf18f3e69bbd2ea5c05077db03392f81d6e05d53 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 08:27:44 -0700 Subject: [PATCH 030/353] viewport --- mirror-2/app/build/layout.tsx | 14 ++------------ mirror-2/app/build/viewport.tsx | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 12 deletions(-) create mode 100644 mirror-2/app/build/viewport.tsx diff --git a/mirror-2/app/build/layout.tsx b/mirror-2/app/build/layout.tsx index f26c5d7d..61db9742 100644 --- a/mirror-2/app/build/layout.tsx +++ b/mirror-2/app/build/layout.tsx @@ -33,6 +33,7 @@ import { Input } from "@/components/ui/input" import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "@/components/ui/resizable" import { Sidebar } from "@/app/build/sidebar" import { appName } from "@/lib/copy-service" +import { Viewport } from "@/app/build/viewport" export default function Dashboard() { return ( @@ -86,18 +87,7 @@ export default function Dashboard() {
    -
    -
    -
    -

    - 3D Viewport -

    -
    -
    -
    +
    diff --git a/mirror-2/app/build/viewport.tsx b/mirror-2/app/build/viewport.tsx new file mode 100644 index 00000000..436a8cd4 --- /dev/null +++ b/mirror-2/app/build/viewport.tsx @@ -0,0 +1,14 @@ +export function Viewport() { + return
    +
    +
    +

    + 3D Viewport +

    +
    +
    +
    +} From 60db149d97d7ec3b67da700ebc270351e840f18a Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 08:29:44 -0700 Subject: [PATCH 031/353] top navbar --- mirror-2/app/build/layout.tsx | 31 ++------------------------ mirror-2/app/build/top-navbar.tsx | 36 +++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 29 deletions(-) create mode 100644 mirror-2/app/build/top-navbar.tsx diff --git a/mirror-2/app/build/layout.tsx b/mirror-2/app/build/layout.tsx index 61db9742..b7f3f79c 100644 --- a/mirror-2/app/build/layout.tsx +++ b/mirror-2/app/build/layout.tsx @@ -34,6 +34,7 @@ import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "@/componen import { Sidebar } from "@/app/build/sidebar" import { appName } from "@/lib/copy-service" import { Viewport } from "@/app/build/viewport" +import { TopNavbar } from "@/app/build/top-navbar" export default function Dashboard() { return ( @@ -58,35 +59,7 @@ export default function Dashboard() {
    -
    -
    - -
    - - -
    - -
    - - - - - - My Account - - Discord - - Logout - - -
    +
    diff --git a/mirror-2/app/build/top-navbar.tsx b/mirror-2/app/build/top-navbar.tsx new file mode 100644 index 00000000..f79fd372 --- /dev/null +++ b/mirror-2/app/build/top-navbar.tsx @@ -0,0 +1,36 @@ +import { Button } from "@/components/ui/button"; +import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"; +import { Input } from "@/components/ui/input"; +import { Search, CircleUser } from "lucide-react"; + +export function TopNavbar() { + return
    +
    +
    +
    + + +
    +
    +
    + + + + + + My Account + + Discord + + Logout + + +
    +} From 77078ca298a4a1b558d8a2869cd6740792d00904 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 08:30:41 -0700 Subject: [PATCH 032/353] resize fix --- mirror-2/app/build/layout.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mirror-2/app/build/layout.tsx b/mirror-2/app/build/layout.tsx index b7f3f79c..720042be 100644 --- a/mirror-2/app/build/layout.tsx +++ b/mirror-2/app/build/layout.tsx @@ -39,7 +39,7 @@ import { TopNavbar } from "@/app/build/top-navbar" export default function Dashboard() { return ( - +
    From 857f34d58c059af0344ba51bdccf176a750125bc Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 08:42:34 -0700 Subject: [PATCH 033/353] icons --- mirror-2/app/build/sidebar.tsx | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/mirror-2/app/build/sidebar.tsx b/mirror-2/app/build/sidebar.tsx index 4a12a4ef..80734c6b 100644 --- a/mirror-2/app/build/sidebar.tsx +++ b/mirror-2/app/build/sidebar.tsx @@ -2,13 +2,13 @@ import { Button } from "@/components/ui/button"; import { Tooltip, TooltipContent, TooltipTrigger, TooltipProvider } from "@/components/ui/tooltip"; -import { Link, Home, ShoppingCart, Badge, Package, Users, LineChart, SquareTerminal, Bot, Code2, Book, Settings2 } from "lucide-react"; +import { GitBranch, Box, Database, Badge, Package, Users, LineChart, SquareTerminal, Bot, Code2, Book, Settings } from "lucide-react"; import { useState } from "react"; export function Sidebar() { return ( - -
    - +
    diff --git a/mirror-2/app/build/sidebar.tsx b/mirror-2/app/build/sidebar.tsx index 80734c6b..351b0f4a 100644 --- a/mirror-2/app/build/sidebar.tsx +++ b/mirror-2/app/build/sidebar.tsx @@ -1,21 +1,35 @@ 'use client'; import { Button } from "@/components/ui/button"; -import { Tooltip, TooltipContent, TooltipTrigger, TooltipProvider } from "@/components/ui/tooltip"; -import { GitBranch, Box, Database, Badge, Package, Users, LineChart, SquareTerminal, Bot, Code2, Book, Settings } from "lucide-react"; -import { useState } from "react"; +import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip"; +import { Box, Clapperboard, Code2, Database, GitBranch, Settings } from "lucide-react"; export function Sidebar() { return (
    + +
    + + + + + + Toggle UI Sounds + + +
    ); } diff --git a/mirror-2/components/ui/ui-audio.tsx b/mirror-2/components/ui/ui-sounds.tsx similarity index 83% rename from mirror-2/components/ui/ui-audio.tsx rename to mirror-2/components/ui/ui-sounds.tsx index 6157e00d..7cc13bcc 100644 --- a/mirror-2/components/ui/ui-audio.tsx +++ b/mirror-2/components/ui/ui-sounds.tsx @@ -4,16 +4,16 @@ import { atom, useAtom, useAtomValue } from "jotai"; import { cloneElement, isValidElement, useEffect, useRef, useState } from "react"; import useSound from "use-sound"; -export const uiAudioCanPlayAtom = atom(true); +export const uiSoundsCanPlayAtom = atom(true); export function useAudioCanPlay() { - const [audioCanPlay, setAudioCanPlay] = useAtom(uiAudioCanPlayAtom); + const [uiSoundsCanPlay, setUiSoundsCanPlay] = useAtom(uiSoundsCanPlayAtom); - return { audioCanPlay, setAudioCanPlay }; + return { uiSoundsCanPlay, setUiSoundsCanPlay }; } export function useUiHoverSoundEffect() { - const audioCanPlayUserSetting = useAtomValue(uiAudioCanPlayAtom) + const audioCanPlayUserSetting = useAtomValue(uiSoundsCanPlayAtom) const [canPlayAudioFromUserGestureTrack, setCanPlayAudioFromUserGestureTrack] = useState(false); const [playSound] = useSound("/sounds/hover_menu.wav", { volume: 0.05, From e5bb1fe6818856c5db7f21e6794ea7a021dc953d Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 15:29:13 -0700 Subject: [PATCH 044/353] add localstorage audio setting --- mirror-2/components/ui/ui-sounds.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mirror-2/components/ui/ui-sounds.tsx b/mirror-2/components/ui/ui-sounds.tsx index 7cc13bcc..2f7c3f7f 100644 --- a/mirror-2/components/ui/ui-sounds.tsx +++ b/mirror-2/components/ui/ui-sounds.tsx @@ -3,8 +3,9 @@ import { atom, useAtom, useAtomValue } from "jotai"; import { cloneElement, isValidElement, useEffect, useRef, useState } from "react"; import useSound from "use-sound"; +import { atomWithStorage } from 'jotai/utils' -export const uiSoundsCanPlayAtom = atom(true); +export const uiSoundsCanPlayAtom = atomWithStorage('uiSoundsCanPlay', true); export function useAudioCanPlay() { const [uiSoundsCanPlay, setUiSoundsCanPlay] = useAtom(uiSoundsCanPlayAtom); From f15f04f7e19da75f87e4c5057db7744654425441 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 15:44:06 -0700 Subject: [PATCH 045/353] update dev command --- mirror-2/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mirror-2/package.json b/mirror-2/package.json index 0acbee76..46ead6ae 100644 --- a/mirror-2/package.json +++ b/mirror-2/package.json @@ -1,7 +1,7 @@ { "private": true, "scripts": { - "dev": "next dev", + "dev": "next dev & supabase start", "build": "next build", "start": "next start" }, From 79a7be1554ac27b278a91a57ed363a5386c50152 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 15:44:57 -0700 Subject: [PATCH 046/353] theem --- mirror-2/lib/theme-service.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mirror-2/lib/theme-service.tsx b/mirror-2/lib/theme-service.tsx index e560890c..bba05e84 100644 --- a/mirror-2/lib/theme-service.tsx +++ b/mirror-2/lib/theme-service.tsx @@ -14,8 +14,8 @@ export const appLogoImageSmall = () => { const appName = process.env.NEXT_PUBLIC_APP_NAME; if (appName === "Reflekt") { - return Reflekt Logo; + return Reflekt Logo; } else { - return Mirror Logo; + return Mirror Logo; } }; From 61c5dab4d76b2c8cda62a78a714fbc7d30d5ed52 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 15:58:02 -0700 Subject: [PATCH 047/353] any --- mirror-2/app/build/layout.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mirror-2/app/build/layout.tsx b/mirror-2/app/build/layout.tsx index 519e5e07..9a3dbebe 100644 --- a/mirror-2/app/build/layout.tsx +++ b/mirror-2/app/build/layout.tsx @@ -36,7 +36,7 @@ import { appLogoImageSmall, appName } from "@/lib/theme-service" import { Viewport } from "@/app/build/viewport" import { TopNavbar } from "@/app/build/top-navbar" -export default function Dashboard() { +export default function Dashboard({ children }: any) { return ( From d5acb33d6c448171ae9ab6981d0fc710edb6477a Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 16:18:46 -0700 Subject: [PATCH 048/353] parallel pt 1 --- mirror-2/app/build/page.tsx | 4 ---- mirror-2/app/layout.tsx | 2 +- mirror-2/app/space/build/@controlBar/page.tsx | 5 +++++ mirror-2/app/space/build/@viewport/page.tsx | 3 +++ mirror-2/app/{ => space}/build/layout.tsx | 16 ++++++++++------ mirror-2/app/space/build/page.tsx | 6 ++++++ mirror-2/app/{ => space}/build/sidebar.tsx | 0 mirror-2/app/{ => space}/build/top-navbar.tsx | 0 mirror-2/app/{ => space}/build/viewport.tsx | 2 +- mirror-2/next.config.js | 6 +----- 10 files changed, 27 insertions(+), 17 deletions(-) delete mode 100644 mirror-2/app/build/page.tsx create mode 100644 mirror-2/app/space/build/@controlBar/page.tsx create mode 100644 mirror-2/app/space/build/@viewport/page.tsx rename mirror-2/app/{ => space}/build/layout.tsx (81%) create mode 100644 mirror-2/app/space/build/page.tsx rename mirror-2/app/{ => space}/build/sidebar.tsx (100%) rename mirror-2/app/{ => space}/build/top-navbar.tsx (100%) rename mirror-2/app/{ => space}/build/viewport.tsx (93%) diff --git a/mirror-2/app/build/page.tsx b/mirror-2/app/build/page.tsx deleted file mode 100644 index 7736048e..00000000 --- a/mirror-2/app/build/page.tsx +++ /dev/null @@ -1,4 +0,0 @@ -// blank page -export default function BuildPage() { - return
    Build Page
    -} diff --git a/mirror-2/app/layout.tsx b/mirror-2/app/layout.tsx index 48605cd0..b8cb0de9 100644 --- a/mirror-2/app/layout.tsx +++ b/mirror-2/app/layout.tsx @@ -16,7 +16,7 @@ const defaultUrl = process.env.VERCEL_URL export default function RootLayout({ children, }: { - children: React.ReactNode; + children: React.ReactNode }) { return ( diff --git a/mirror-2/app/space/build/@controlBar/page.tsx b/mirror-2/app/space/build/@controlBar/page.tsx new file mode 100644 index 00000000..e5d0da28 --- /dev/null +++ b/mirror-2/app/space/build/@controlBar/page.tsx @@ -0,0 +1,5 @@ +import { Sidebar } from "@/app/space/build/sidebar"; + +export default function ControlBar() { + return +} diff --git a/mirror-2/app/space/build/@viewport/page.tsx b/mirror-2/app/space/build/@viewport/page.tsx new file mode 100644 index 00000000..a2f43e15 --- /dev/null +++ b/mirror-2/app/space/build/@viewport/page.tsx @@ -0,0 +1,3 @@ +export default function ControlBar() { + return
    Viewport
    +} diff --git a/mirror-2/app/build/layout.tsx b/mirror-2/app/space/build/layout.tsx similarity index 81% rename from mirror-2/app/build/layout.tsx rename to mirror-2/app/space/build/layout.tsx index 9a3dbebe..87b7527b 100644 --- a/mirror-2/app/build/layout.tsx +++ b/mirror-2/app/space/build/layout.tsx @@ -31,12 +31,15 @@ import { } from "@/components/ui/dropdown-menu" import { Input } from "@/components/ui/input" import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "@/components/ui/resizable" -import { Sidebar } from "@/app/build/sidebar" +import { Sidebar } from "@/app/space/build/sidebar" import { appLogoImageSmall, appName } from "@/lib/theme-service" -import { Viewport } from "@/app/build/viewport" -import { TopNavbar } from "@/app/build/top-navbar" +import { AppViewport } from "@/app/space/build/viewport" +import { TopNavbar } from "@/app/space/build/top-navbar" -export default function Dashboard({ children }: any) { +export default function Layout({ children, controlBar }: { + children: React.ReactNode, + controlBar: React.ReactNode +}) { return ( @@ -49,7 +52,8 @@ export default function Dashboard({ children }: any) {
    - + {/* */} + {controlBar}
    @@ -57,7 +61,7 @@ export default function Dashboard({ children }: any) {
    - + {children}
    diff --git a/mirror-2/app/space/build/page.tsx b/mirror-2/app/space/build/page.tsx new file mode 100644 index 00000000..cbdee08a --- /dev/null +++ b/mirror-2/app/space/build/page.tsx @@ -0,0 +1,6 @@ +import { AppViewport } from "@/app/space/build/viewport"; + +// blank page +export default function BuildPage() { + return +} diff --git a/mirror-2/app/build/sidebar.tsx b/mirror-2/app/space/build/sidebar.tsx similarity index 100% rename from mirror-2/app/build/sidebar.tsx rename to mirror-2/app/space/build/sidebar.tsx diff --git a/mirror-2/app/build/top-navbar.tsx b/mirror-2/app/space/build/top-navbar.tsx similarity index 100% rename from mirror-2/app/build/top-navbar.tsx rename to mirror-2/app/space/build/top-navbar.tsx diff --git a/mirror-2/app/build/viewport.tsx b/mirror-2/app/space/build/viewport.tsx similarity index 93% rename from mirror-2/app/build/viewport.tsx rename to mirror-2/app/space/build/viewport.tsx index 436a8cd4..457834f4 100644 --- a/mirror-2/app/build/viewport.tsx +++ b/mirror-2/app/space/build/viewport.tsx @@ -1,4 +1,4 @@ -export function Viewport() { +export function AppViewport() { return
    [ - { - source: "/", - destination: "/build", - permanent: false, - }, + ], }; From cfc519e8856b7bf9aa997d524bdcab2833d04072 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 16:33:48 -0700 Subject: [PATCH 049/353] parallel route organization --- mirror-2/app/space/build/@controlBar/page.tsx | 166 ++++++++++++++++- .../{viewport.tsx => @spaceViewport/page.tsx} | 2 +- mirror-2/app/space/build/@viewport/page.tsx | 3 - mirror-2/app/space/build/layout.tsx | 42 +---- mirror-2/app/space/build/page.tsx | 8 +- mirror-2/app/space/build/sidebar.tsx | 167 ------------------ 6 files changed, 174 insertions(+), 214 deletions(-) rename mirror-2/app/space/build/{viewport.tsx => @spaceViewport/page.tsx} (91%) delete mode 100644 mirror-2/app/space/build/@viewport/page.tsx delete mode 100644 mirror-2/app/space/build/sidebar.tsx diff --git a/mirror-2/app/space/build/@controlBar/page.tsx b/mirror-2/app/space/build/@controlBar/page.tsx index e5d0da28..efa7c59d 100644 --- a/mirror-2/app/space/build/@controlBar/page.tsx +++ b/mirror-2/app/space/build/@controlBar/page.tsx @@ -1,5 +1,167 @@ -import { Sidebar } from "@/app/space/build/sidebar"; +'use client'; + +import { Button } from "@/components/ui/button"; +import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip"; +import { uiSoundsCanPlayAtom, useUiHoverSoundEffect } from "@/components/ui/ui-sounds"; +import { atom, useAtom } from "jotai"; +import { Box, Clapperboard, Code2, Database, GitBranch, Settings, Volume2, VolumeOff } from "lucide-react"; + +const sidebarCurrentViewAtom = atom("scene"); export default function ControlBar() { - return + const [currentView, setCurrentView] = useAtom(sidebarCurrentViewAtom); + const [uiSoundsCanPlay, setUiSoundsCanPlay] = useAtom(uiSoundsCanPlayAtom); + const [play] = useUiHoverSoundEffect(); + + const handleViewChange = (view: string) => { + // play the sound ONLY if the view has changed + if (currentView !== view) { + play() + } + setCurrentView(view); + }; + + const getVariant = (view: string) => { + return currentView === view ? "default" : "ghost"; + }; + + return ( + + + +
    + + + + + + Toggle UI Sounds + + +
    +
    + ); } diff --git a/mirror-2/app/space/build/viewport.tsx b/mirror-2/app/space/build/@spaceViewport/page.tsx similarity index 91% rename from mirror-2/app/space/build/viewport.tsx rename to mirror-2/app/space/build/@spaceViewport/page.tsx index 457834f4..368adcaf 100644 --- a/mirror-2/app/space/build/viewport.tsx +++ b/mirror-2/app/space/build/@spaceViewport/page.tsx @@ -1,4 +1,4 @@ -export function AppViewport() { +export default function SpaceViewport() { return
    Viewport
    -} diff --git a/mirror-2/app/space/build/layout.tsx b/mirror-2/app/space/build/layout.tsx index 87b7527b..0d538e48 100644 --- a/mirror-2/app/space/build/layout.tsx +++ b/mirror-2/app/space/build/layout.tsx @@ -1,44 +1,13 @@ import Link from "next/link" -import { - Bell, - CircleUser, - Home, - LineChart, - Menu, - Package, - Package2, - Search, - ShoppingCart, - Users, -} from "lucide-react" -import { Badge } from "@/components/ui/badge" -import { Button } from "@/components/ui/button" -import { - Card, - CardContent, - CardDescription, - CardHeader, - CardTitle, -} from "@/components/ui/card" -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuLabel, - DropdownMenuSeparator, - DropdownMenuTrigger, -} from "@/components/ui/dropdown-menu" -import { Input } from "@/components/ui/input" -import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "@/components/ui/resizable" -import { Sidebar } from "@/app/space/build/sidebar" -import { appLogoImageSmall, appName } from "@/lib/theme-service" -import { AppViewport } from "@/app/space/build/viewport" import { TopNavbar } from "@/app/space/build/top-navbar" +import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "@/components/ui/resizable" +import { appLogoImageSmall } from "@/lib/theme-service" -export default function Layout({ children, controlBar }: { +export default function Layout({ children, controlBar, spaceViewport }: { children: React.ReactNode, - controlBar: React.ReactNode + controlBar: React.ReactNode, + spaceViewport: React.ReactNode }) { return ( @@ -61,6 +30,7 @@ export default function Layout({ children, controlBar }: {
    + {spaceViewport} {children}
    diff --git a/mirror-2/app/space/build/page.tsx b/mirror-2/app/space/build/page.tsx index cbdee08a..43674f25 100644 --- a/mirror-2/app/space/build/page.tsx +++ b/mirror-2/app/space/build/page.tsx @@ -1,6 +1,4 @@ -import { AppViewport } from "@/app/space/build/viewport"; - -// blank page -export default function BuildPage() { - return +// blank page since we're using the parallel routes for spaceViewport, controlBar, etc. +export default function Page() { + return null } diff --git a/mirror-2/app/space/build/sidebar.tsx b/mirror-2/app/space/build/sidebar.tsx deleted file mode 100644 index 503e5065..00000000 --- a/mirror-2/app/space/build/sidebar.tsx +++ /dev/null @@ -1,167 +0,0 @@ -'use client'; - -import { Button } from "@/components/ui/button"; -import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip"; -import { uiSoundsCanPlayAtom, useUiHoverSoundEffect } from "@/components/ui/ui-sounds"; -import { atom, useAtom } from "jotai"; -import { Box, Clapperboard, Code2, Database, GitBranch, Settings, Volume2, VolumeOff } from "lucide-react"; - -const sidebarCurrentViewAtom = atom("scene"); - -export function Sidebar() { - const [currentView, setCurrentView] = useAtom(sidebarCurrentViewAtom); - const [uiSoundsCanPlay, setUiSoundsCanPlay] = useAtom(uiSoundsCanPlayAtom); - const [play] = useUiHoverSoundEffect(); - - const handleViewChange = (view: string) => { - // play the sound ONLY if the view has changed - if (currentView !== view) { - play() - } - setCurrentView(view); - }; - - const getVariant = (view: string) => { - return currentView === view ? "default" : "ghost"; - }; - - return ( - - - -
    - - - - - - Toggle UI Sounds - - -
    -
    - ); -} From affa965e22af6eeafb02c300a8e20f0b3ca1d83b Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 16:38:38 -0700 Subject: [PATCH 050/353] dynamic url for space --- mirror-2/app/space/{ => [spaceId]}/build/@controlBar/page.tsx | 0 .../app/space/{ => [spaceId]}/build/@spaceViewport/page.tsx | 0 mirror-2/app/space/{ => [spaceId]}/build/layout.tsx | 3 +-- mirror-2/app/space/{ => [spaceId]}/build/page.tsx | 0 mirror-2/app/space/{ => [spaceId]}/build/top-navbar.tsx | 0 5 files changed, 1 insertion(+), 2 deletions(-) rename mirror-2/app/space/{ => [spaceId]}/build/@controlBar/page.tsx (100%) rename mirror-2/app/space/{ => [spaceId]}/build/@spaceViewport/page.tsx (100%) rename mirror-2/app/space/{ => [spaceId]}/build/layout.tsx (93%) rename mirror-2/app/space/{ => [spaceId]}/build/page.tsx (100%) rename mirror-2/app/space/{ => [spaceId]}/build/top-navbar.tsx (100%) diff --git a/mirror-2/app/space/build/@controlBar/page.tsx b/mirror-2/app/space/[spaceId]/build/@controlBar/page.tsx similarity index 100% rename from mirror-2/app/space/build/@controlBar/page.tsx rename to mirror-2/app/space/[spaceId]/build/@controlBar/page.tsx diff --git a/mirror-2/app/space/build/@spaceViewport/page.tsx b/mirror-2/app/space/[spaceId]/build/@spaceViewport/page.tsx similarity index 100% rename from mirror-2/app/space/build/@spaceViewport/page.tsx rename to mirror-2/app/space/[spaceId]/build/@spaceViewport/page.tsx diff --git a/mirror-2/app/space/build/layout.tsx b/mirror-2/app/space/[spaceId]/build/layout.tsx similarity index 93% rename from mirror-2/app/space/build/layout.tsx rename to mirror-2/app/space/[spaceId]/build/layout.tsx index 0d538e48..2dd25820 100644 --- a/mirror-2/app/space/build/layout.tsx +++ b/mirror-2/app/space/[spaceId]/build/layout.tsx @@ -1,6 +1,6 @@ import Link from "next/link" -import { TopNavbar } from "@/app/space/build/top-navbar" +import { TopNavbar } from "@/app/space/[spaceId]/build/top-navbar" import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "@/components/ui/resizable" import { appLogoImageSmall } from "@/lib/theme-service" @@ -21,7 +21,6 @@ export default function Layout({ children, controlBar, spaceViewport }: {
    - {/* */} {controlBar} diff --git a/mirror-2/app/space/build/page.tsx b/mirror-2/app/space/[spaceId]/build/page.tsx similarity index 100% rename from mirror-2/app/space/build/page.tsx rename to mirror-2/app/space/[spaceId]/build/page.tsx diff --git a/mirror-2/app/space/build/top-navbar.tsx b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx similarity index 100% rename from mirror-2/app/space/build/top-navbar.tsx rename to mirror-2/app/space/[spaceId]/build/top-navbar.tsx From cf5c0a8ac6c0f08abad5ccbc2d15ea7800b6d43f Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 17:07:17 -0700 Subject: [PATCH 051/353] sign in page clean --- mirror-2/app/(auth-pages)/layout.tsx | 34 +++++++++++++++++- mirror-2/app/(auth-pages)/sign-in/page.tsx | 6 ++-- .../app/space/[spaceId]/build/top-navbar.tsx | 9 +++++ mirror-2/lib/theme-service.tsx | 23 ++++++++++-- mirror-2/public/reflekt_logo_with_text_md.png | Bin 0 -> 42429 bytes 5 files changed, 65 insertions(+), 7 deletions(-) create mode 100644 mirror-2/public/reflekt_logo_with_text_md.png diff --git a/mirror-2/app/(auth-pages)/layout.tsx b/mirror-2/app/(auth-pages)/layout.tsx index e038de15..1c9b70ab 100644 --- a/mirror-2/app/(auth-pages)/layout.tsx +++ b/mirror-2/app/(auth-pages)/layout.tsx @@ -1,9 +1,41 @@ +import { Button } from "@/components/ui/button"; +import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import { AppLogoImageMedium } from "@/lib/theme-service"; + export default async function Layout({ children, }: { children: React.ReactNode; }) { return ( -
    {children}
    +
    + + + +
    + +
    + Login
    + + Enter your email below to login to your account. + +
    + +
    + + +
    +
    + + +
    +
    + + + +
    +
    ); } diff --git a/mirror-2/app/(auth-pages)/sign-in/page.tsx b/mirror-2/app/(auth-pages)/sign-in/page.tsx index dabdf8c5..39278a83 100644 --- a/mirror-2/app/(auth-pages)/sign-in/page.tsx +++ b/mirror-2/app/(auth-pages)/sign-in/page.tsx @@ -8,11 +8,11 @@ import Link from "next/link"; export default function Login({ searchParams }: { searchParams: Message }) { return (
    -

    Sign in

    +

    Sign In

    Don't have an account?{" "} - Sign up + Sign Up

    @@ -34,7 +34,7 @@ export default function Login({ searchParams }: { searchParams: Message }) { required /> - Sign in + Sign In
    diff --git a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx index 97de6a4b..82c46939 100644 --- a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx +++ b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx @@ -3,6 +3,7 @@ import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"; import { Input } from "@/components/ui/input"; import { Search, CircleUser } from "lucide-react"; +import Link from "next/link"; export function TopNavbar() { return ( @@ -10,6 +11,14 @@ export function TopNavbar() {
    + + From 7bf65a1cffe8a944a6fa68e6ec826d5b2e706a2e Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 17:33:45 -0700 Subject: [PATCH 054/353] create account work --- mirror-2/app/(auth-pages)/layout.tsx | 57 ++++++++++++++++++---------- 1 file changed, 36 insertions(+), 21 deletions(-) diff --git a/mirror-2/app/(auth-pages)/layout.tsx b/mirror-2/app/(auth-pages)/layout.tsx index 63d93c88..2eef7f3f 100644 --- a/mirror-2/app/(auth-pages)/layout.tsx +++ b/mirror-2/app/(auth-pages)/layout.tsx @@ -1,8 +1,11 @@ +import { signInAction } from "@/app/actions"; +import { SubmitButton } from "@/components/submit-button"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { AppLogoImageMedium } from "@/lib/theme-service"; +import Link from "next/link"; export default async function Layout({ children, @@ -11,28 +14,40 @@ export default async function Layout({ }) { return (
    - - - -
    - + + + + +
    + +
    +
    +
    + +
    + +
    - - - -
    - - -
    -
    - - -
    -
    - - - -
    +
    + + +
    + + +
    + Sign In +
    + +

    + Don't have an account?{" "} + + Sign Up + +

    +
    + +
    ); + } From b3e6f3673754a967028125d0fd23c0643803220f Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 17:40:38 -0700 Subject: [PATCH 055/353] login and sign up --- .../app/(auth-pages)/create-account/page.tsx | 48 +++++++++++++++++++ mirror-2/app/(auth-pages)/layout.tsx | 36 +------------- .../{sign-in/page.tsx => login/page copy.tsx} | 4 +- mirror-2/app/(auth-pages)/login/page.tsx | 48 +++++++++++++++++++ mirror-2/app/(auth-pages)/sign-up/page.tsx | 48 ------------------- mirror-2/app/actions.ts | 6 +-- mirror-2/next.config.js | 11 ++++- 7 files changed, 113 insertions(+), 88 deletions(-) create mode 100644 mirror-2/app/(auth-pages)/create-account/page.tsx rename mirror-2/app/(auth-pages)/{sign-in/page.tsx => login/page copy.tsx} (91%) create mode 100644 mirror-2/app/(auth-pages)/login/page.tsx delete mode 100644 mirror-2/app/(auth-pages)/sign-up/page.tsx diff --git a/mirror-2/app/(auth-pages)/create-account/page.tsx b/mirror-2/app/(auth-pages)/create-account/page.tsx new file mode 100644 index 00000000..4bdfae4b --- /dev/null +++ b/mirror-2/app/(auth-pages)/create-account/page.tsx @@ -0,0 +1,48 @@ +import { createAccountAction, loginAction } from "@/app/actions"; +import { FormMessage, Message } from "@/components/form-message"; +import { SubmitButton } from "@/components/submit-button"; +import { Card, CardHeader, CardTitle, CardContent, CardFooter } from "@/components/ui/card"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import { AppLogoImageMedium } from "@/lib/theme-service"; +import Link from "next/link"; + +export default function CreateAccount({ searchParams }: { searchParams: Message }) { + return ( +
    + + + +
    + +
    + Create Account +
    +
    + +
    + + +
    +
    + + +
    +
    + +
    + Create Account +
    + + +

    + Already have an account?{" "} + + Login + +

    +
    +
    +
    + ); +} diff --git a/mirror-2/app/(auth-pages)/layout.tsx b/mirror-2/app/(auth-pages)/layout.tsx index 2eef7f3f..0947e759 100644 --- a/mirror-2/app/(auth-pages)/layout.tsx +++ b/mirror-2/app/(auth-pages)/layout.tsx @@ -1,4 +1,4 @@ -import { signInAction } from "@/app/actions"; +import { loginAction } from "@/app/actions"; import { SubmitButton } from "@/components/submit-button"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"; @@ -14,39 +14,7 @@ export default async function Layout({ }) { return (
    -
    - - - -
    - -
    -
    -
    - -
    - - -
    -
    - - -
    -
    - -
    - Sign In -
    - -

    - Don't have an account?{" "} - - Sign Up - -

    -
    -
    -
    + {children}
    ); diff --git a/mirror-2/app/(auth-pages)/sign-in/page.tsx b/mirror-2/app/(auth-pages)/login/page copy.tsx similarity index 91% rename from mirror-2/app/(auth-pages)/sign-in/page.tsx rename to mirror-2/app/(auth-pages)/login/page copy.tsx index 39278a83..989a7bb7 100644 --- a/mirror-2/app/(auth-pages)/sign-in/page.tsx +++ b/mirror-2/app/(auth-pages)/login/page copy.tsx @@ -1,4 +1,4 @@ -import { signInAction } from "@/app/actions"; +import { loginAction } from "@/app/actions"; import { FormMessage, Message } from "@/components/form-message"; import { SubmitButton } from "@/components/submit-button"; import { Input } from "@/components/ui/input"; @@ -33,7 +33,7 @@ export default function Login({ searchParams }: { searchParams: Message }) { placeholder="Your password" required /> - + Sign In diff --git a/mirror-2/app/(auth-pages)/login/page.tsx b/mirror-2/app/(auth-pages)/login/page.tsx new file mode 100644 index 00000000..bb51a85d --- /dev/null +++ b/mirror-2/app/(auth-pages)/login/page.tsx @@ -0,0 +1,48 @@ +import { loginAction } from "@/app/actions"; +import { FormMessage, Message } from "@/components/form-message"; +import { SubmitButton } from "@/components/submit-button"; +import { Card, CardHeader, CardTitle, CardContent, CardFooter } from "@/components/ui/card"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import { AppLogoImageMedium } from "@/lib/theme-service"; +import Link from "next/link"; + +export default function Login({ searchParams }: { searchParams: Message }) { + return ( +
    + + + +
    + +
    + Login +
    + +
    + +
    + + +
    +
    + + +
    +
    + +
    + Login +
    + +

    + Don't have an account?{" "} + + Create Account + +

    +
    +
    +
    + ); +} diff --git a/mirror-2/app/(auth-pages)/sign-up/page.tsx b/mirror-2/app/(auth-pages)/sign-up/page.tsx deleted file mode 100644 index 1abbd3b8..00000000 --- a/mirror-2/app/(auth-pages)/sign-up/page.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { signUpAction } from "@/app/actions"; -import { FormMessage, Message } from "@/components/form-message"; -import { SubmitButton } from "@/components/submit-button"; -import { Input } from "@/components/ui/input"; -import { Label } from "@/components/ui/label"; -import Link from "next/link"; -import { SmtpMessage } from "../smtp-message"; - -export default function Signup({ searchParams }: { searchParams: Message }) { - if ("message" in searchParams) { - return ( -
    - -
    - ); - } - - return ( - <> -
    -

    Sign up

    -

    - Already have an account?{" "} - - Sign in - -

    -
    - - - - - - Sign up - - -
    -
    - - - ); -} diff --git a/mirror-2/app/actions.ts b/mirror-2/app/actions.ts index 03271554..f39deb99 100644 --- a/mirror-2/app/actions.ts +++ b/mirror-2/app/actions.ts @@ -5,7 +5,7 @@ import { createClient } from "@/utils/supabase/server"; import { headers } from "next/headers"; import { redirect } from "next/navigation"; -export const signUpAction = async (formData: FormData) => { +export const createAccountAction = async (formData: FormData) => { const email = formData.get("email")?.toString(); const password = formData.get("password")?.toString(); const supabase = createClient(); @@ -35,7 +35,7 @@ export const signUpAction = async (formData: FormData) => { } }; -export const signInAction = async (formData: FormData) => { +export const loginAction = async (formData: FormData) => { const email = formData.get("email") as string; const password = formData.get("password") as string; const supabase = createClient(); @@ -46,7 +46,7 @@ export const signInAction = async (formData: FormData) => { }); if (error) { - return encodedRedirect("error", "/sign-in", error.message); + return encodedRedirect("error", "/login", error.message); } return redirect("/protected"); diff --git a/mirror-2/next.config.js b/mirror-2/next.config.js index ab4349c8..eec3cda8 100644 --- a/mirror-2/next.config.js +++ b/mirror-2/next.config.js @@ -1,7 +1,16 @@ /** @type {import('next').NextConfig} */ const nextConfig = { redirects: () => [ - + { + source: "/sign-in", + destination: "/login", + permanent: true, + }, + { + source: "/sign-up", + destination: "/create-account", + permanent: true, + } ], }; From 82d88e81c53f576aae6e5b987d8e40a88a039679 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 17:40:47 -0700 Subject: [PATCH 056/353] clean --- mirror-2/app/(auth-pages)/layout.tsx | 8 -------- 1 file changed, 8 deletions(-) diff --git a/mirror-2/app/(auth-pages)/layout.tsx b/mirror-2/app/(auth-pages)/layout.tsx index 0947e759..1be031e6 100644 --- a/mirror-2/app/(auth-pages)/layout.tsx +++ b/mirror-2/app/(auth-pages)/layout.tsx @@ -1,11 +1,3 @@ -import { loginAction } from "@/app/actions"; -import { SubmitButton } from "@/components/submit-button"; -import { Button } from "@/components/ui/button"; -import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"; -import { Input } from "@/components/ui/input"; -import { Label } from "@/components/ui/label"; -import { AppLogoImageMedium } from "@/lib/theme-service"; -import Link from "next/link"; export default async function Layout({ children, From be790e399435113944f55eb24d82b225c948e8d1 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 18:04:37 -0700 Subject: [PATCH 057/353] login flows --- mirror-2/app/(auth-pages)/create-account/page.tsx | 13 +++++-------- mirror-2/app/(auth-pages)/login/page copy.tsx | 2 +- mirror-2/app/(auth-pages)/login/page.tsx | 13 ++++++------- mirror-2/app/actions.ts | 10 +++++++--- mirror-2/components/env-var-warning.tsx | 2 +- mirror-2/components/header-auth.tsx | 4 ++-- mirror-2/components/tutorial/sign-up-user-steps.tsx | 4 ++-- 7 files changed, 24 insertions(+), 24 deletions(-) diff --git a/mirror-2/app/(auth-pages)/create-account/page.tsx b/mirror-2/app/(auth-pages)/create-account/page.tsx index 4bdfae4b..b03ffc2f 100644 --- a/mirror-2/app/(auth-pages)/create-account/page.tsx +++ b/mirror-2/app/(auth-pages)/create-account/page.tsx @@ -22,19 +22,16 @@ export default function CreateAccount({ searchParams }: { searchParams: Message
    - +
    - +
    - -
    - Create Account -
    - - + + Create Account +

    Already have an account?{" "} diff --git a/mirror-2/app/(auth-pages)/login/page copy.tsx b/mirror-2/app/(auth-pages)/login/page copy.tsx index 989a7bb7..1edaf820 100644 --- a/mirror-2/app/(auth-pages)/login/page copy.tsx +++ b/mirror-2/app/(auth-pages)/login/page copy.tsx @@ -11,7 +11,7 @@ export default function Login({ searchParams }: { searchParams: Message }) {

    Sign In

    Don't have an account?{" "} - + Sign Up

    diff --git a/mirror-2/app/(auth-pages)/login/page.tsx b/mirror-2/app/(auth-pages)/login/page.tsx index bb51a85d..b4eabe84 100644 --- a/mirror-2/app/(auth-pages)/login/page.tsx +++ b/mirror-2/app/(auth-pages)/login/page.tsx @@ -19,25 +19,24 @@ export default function Login({ searchParams }: { searchParams: Message }) { Login
    +
    - +
    - +
    -
    - Login -
    - + Login +

    Don't have an account?{" "} - + Create Account

    diff --git a/mirror-2/app/actions.ts b/mirror-2/app/actions.ts index f39deb99..ef405fa0 100644 --- a/mirror-2/app/actions.ts +++ b/mirror-2/app/actions.ts @@ -10,11 +10,12 @@ export const createAccountAction = async (formData: FormData) => { const password = formData.get("password")?.toString(); const supabase = createClient(); const origin = headers().get("origin"); + console.log("formData", formData); if (!email || !password) { return { error: "Email and password are required" }; } - +console.log("email", email); const { error } = await supabase.auth.signUp({ email, password, @@ -22,14 +23,17 @@ export const createAccountAction = async (formData: FormData) => { emailRedirectTo: `${origin}/auth/callback`, }, }); + console.log("error", error); if (error) { console.error(error.code + " " + error.message); - return encodedRedirect("error", "/sign-up", error.message); + return encodedRedirect("error", "/create-account", error.message); } else { + console.log("success"); + return encodedRedirect( "success", - "/sign-up", + "/create-account", "Thanks for signing up! Please check your email for a verification link.", ); } diff --git a/mirror-2/components/env-var-warning.tsx b/mirror-2/components/env-var-warning.tsx index b6a193f6..b3178780 100644 --- a/mirror-2/components/env-var-warning.tsx +++ b/mirror-2/components/env-var-warning.tsx @@ -25,7 +25,7 @@ export function EnvVarWarning() { disabled className="opacity-75 cursor-none pointer-events-none" > - Sign up + Sign up
    diff --git a/mirror-2/components/header-auth.tsx b/mirror-2/components/header-auth.tsx index 49072e96..23dbb87c 100644 --- a/mirror-2/components/header-auth.tsx +++ b/mirror-2/components/header-auth.tsx @@ -39,7 +39,7 @@ export default async function AuthButton() { disabled className="opacity-75 cursor-none pointer-events-none" > - Sign up + Sign up @@ -61,7 +61,7 @@ export default async function AuthButton() { Sign in ); diff --git a/mirror-2/components/tutorial/sign-up-user-steps.tsx b/mirror-2/components/tutorial/sign-up-user-steps.tsx index c00fb66e..7ce1e606 100644 --- a/mirror-2/components/tutorial/sign-up-user-steps.tsx +++ b/mirror-2/components/tutorial/sign-up-user-steps.tsx @@ -6,7 +6,7 @@ export default function SignUpUserSteps() { return (
      {process.env.VERCEL_ENV === "preview" || - process.env.VERCEL_ENV === "production" ? ( + process.env.VERCEL_ENV === "production" ? (

      It looks like this App is hosted on Vercel.

      @@ -74,7 +74,7 @@ export default function SignUpUserSteps() {

      Head over to the{" "} Sign up From 189f4130971f845a55a4a4d5460506931400b4fe Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 18:08:00 -0700 Subject: [PATCH 058/353] clean --- mirror-2/app/{ => (actions)}/actions.ts | 5 +---- mirror-2/app/(auth-pages)/create-account/page.tsx | 2 +- mirror-2/app/(auth-pages)/forgot-password/page.tsx | 2 +- mirror-2/app/(auth-pages)/login/page copy.tsx | 2 +- mirror-2/app/(auth-pages)/login/page.tsx | 2 +- mirror-2/app/protected/reset-password/page.tsx | 2 +- mirror-2/components/header-auth.tsx | 2 +- 7 files changed, 7 insertions(+), 10 deletions(-) rename mirror-2/app/{ => (actions)}/actions.ts (96%) diff --git a/mirror-2/app/actions.ts b/mirror-2/app/(actions)/actions.ts similarity index 96% rename from mirror-2/app/actions.ts rename to mirror-2/app/(actions)/actions.ts index ef405fa0..8afa7e24 100644 --- a/mirror-2/app/actions.ts +++ b/mirror-2/app/(actions)/actions.ts @@ -10,12 +10,11 @@ export const createAccountAction = async (formData: FormData) => { const password = formData.get("password")?.toString(); const supabase = createClient(); const origin = headers().get("origin"); - console.log("formData", formData); if (!email || !password) { return { error: "Email and password are required" }; } -console.log("email", email); + const { error } = await supabase.auth.signUp({ email, password, @@ -23,13 +22,11 @@ console.log("email", email); emailRedirectTo: `${origin}/auth/callback`, }, }); - console.log("error", error); if (error) { console.error(error.code + " " + error.message); return encodedRedirect("error", "/create-account", error.message); } else { - console.log("success"); return encodedRedirect( "success", diff --git a/mirror-2/app/(auth-pages)/create-account/page.tsx b/mirror-2/app/(auth-pages)/create-account/page.tsx index b03ffc2f..a0fcb60c 100644 --- a/mirror-2/app/(auth-pages)/create-account/page.tsx +++ b/mirror-2/app/(auth-pages)/create-account/page.tsx @@ -1,4 +1,4 @@ -import { createAccountAction, loginAction } from "@/app/actions"; +import { createAccountAction, loginAction } from "@/app/(actions)/actions"; import { FormMessage, Message } from "@/components/form-message"; import { SubmitButton } from "@/components/submit-button"; import { Card, CardHeader, CardTitle, CardContent, CardFooter } from "@/components/ui/card"; diff --git a/mirror-2/app/(auth-pages)/forgot-password/page.tsx b/mirror-2/app/(auth-pages)/forgot-password/page.tsx index 203e37b8..0c72e2b7 100644 --- a/mirror-2/app/(auth-pages)/forgot-password/page.tsx +++ b/mirror-2/app/(auth-pages)/forgot-password/page.tsx @@ -1,4 +1,4 @@ -import { forgotPasswordAction } from "@/app/actions"; +import { forgotPasswordAction } from "@/app/(actions)/actions"; import { FormMessage, Message } from "@/components/form-message"; import { SubmitButton } from "@/components/submit-button"; import { Input } from "@/components/ui/input"; diff --git a/mirror-2/app/(auth-pages)/login/page copy.tsx b/mirror-2/app/(auth-pages)/login/page copy.tsx index 1edaf820..fecafb8c 100644 --- a/mirror-2/app/(auth-pages)/login/page copy.tsx +++ b/mirror-2/app/(auth-pages)/login/page copy.tsx @@ -1,4 +1,4 @@ -import { loginAction } from "@/app/actions"; +import { loginAction } from "@/app/(actions)/actions"; import { FormMessage, Message } from "@/components/form-message"; import { SubmitButton } from "@/components/submit-button"; import { Input } from "@/components/ui/input"; diff --git a/mirror-2/app/(auth-pages)/login/page.tsx b/mirror-2/app/(auth-pages)/login/page.tsx index b4eabe84..198037df 100644 --- a/mirror-2/app/(auth-pages)/login/page.tsx +++ b/mirror-2/app/(auth-pages)/login/page.tsx @@ -1,4 +1,4 @@ -import { loginAction } from "@/app/actions"; +import { loginAction } from "@/app/(actions)/actions"; import { FormMessage, Message } from "@/components/form-message"; import { SubmitButton } from "@/components/submit-button"; import { Card, CardHeader, CardTitle, CardContent, CardFooter } from "@/components/ui/card"; diff --git a/mirror-2/app/protected/reset-password/page.tsx b/mirror-2/app/protected/reset-password/page.tsx index 7b7ab951..2b20d80c 100644 --- a/mirror-2/app/protected/reset-password/page.tsx +++ b/mirror-2/app/protected/reset-password/page.tsx @@ -1,4 +1,4 @@ -import { resetPasswordAction } from "@/app/actions"; +import { resetPasswordAction } from "@/app/(actions)/actions"; import { FormMessage, Message } from "@/components/form-message"; import { SubmitButton } from "@/components/submit-button"; import { Input } from "@/components/ui/input"; diff --git a/mirror-2/components/header-auth.tsx b/mirror-2/components/header-auth.tsx index 23dbb87c..5c1dc059 100644 --- a/mirror-2/components/header-auth.tsx +++ b/mirror-2/components/header-auth.tsx @@ -1,4 +1,4 @@ -import { signOutAction } from "@/app/actions"; +import { signOutAction } from "@/app/(actions)/actions"; import { hasEnvVars } from "@/utils/supabase/check-env-vars"; import Link from "next/link"; import { Badge } from "./ui/badge"; From 7d9809e3c300b2f0a04fc856089b1a89b770f7ad Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 18:10:07 -0700 Subject: [PATCH 059/353] rename --- mirror-2/app/(actions)/actions.ts | 2 +- mirror-2/app/(auth-pages)/forgot-password/page.tsx | 4 ++-- mirror-2/app/(auth-pages)/login/page copy.tsx | 4 ++-- mirror-2/app/protected/page.tsx | 2 +- mirror-2/app/space/[spaceId]/build/top-navbar.tsx | 2 +- mirror-2/components/env-var-warning.tsx | 2 +- mirror-2/components/header-auth.tsx | 4 ++-- mirror-2/utils/supabase/middleware.ts | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/mirror-2/app/(actions)/actions.ts b/mirror-2/app/(actions)/actions.ts index 8afa7e24..5794cd41 100644 --- a/mirror-2/app/(actions)/actions.ts +++ b/mirror-2/app/(actions)/actions.ts @@ -127,5 +127,5 @@ export const resetPasswordAction = async (formData: FormData) => { export const signOutAction = async () => { const supabase = createClient(); await supabase.auth.signOut(); - return redirect("/sign-in"); + return redirect("/login"); }; diff --git a/mirror-2/app/(auth-pages)/forgot-password/page.tsx b/mirror-2/app/(auth-pages)/forgot-password/page.tsx index 0c72e2b7..3f5dd2eb 100644 --- a/mirror-2/app/(auth-pages)/forgot-password/page.tsx +++ b/mirror-2/app/(auth-pages)/forgot-password/page.tsx @@ -18,8 +18,8 @@ export default function ForgotPassword({

      Reset Password

      Already have an account?{" "} - - Sign in + + Login

      diff --git a/mirror-2/app/(auth-pages)/login/page copy.tsx b/mirror-2/app/(auth-pages)/login/page copy.tsx index fecafb8c..dd287a76 100644 --- a/mirror-2/app/(auth-pages)/login/page copy.tsx +++ b/mirror-2/app/(auth-pages)/login/page copy.tsx @@ -8,7 +8,7 @@ import Link from "next/link"; export default function Login({ searchParams }: { searchParams: Message }) { return (
      -

      Sign In

      +

      Login

      Don't have an account?{" "} @@ -34,7 +34,7 @@ export default function Login({ searchParams }: { searchParams: Message }) { required /> - Sign In + Login diff --git a/mirror-2/app/protected/page.tsx b/mirror-2/app/protected/page.tsx index cbc4876f..8764cf8d 100644 --- a/mirror-2/app/protected/page.tsx +++ b/mirror-2/app/protected/page.tsx @@ -11,7 +11,7 @@ export default async function ProtectedPage() { } = await supabase.auth.getUser(); if (!user) { - return redirect("/sign-in"); + return redirect("/login"); } return ( diff --git a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx index 82c46939..0166d579 100644 --- a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx +++ b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx @@ -17,7 +17,7 @@ export function TopNavbar() { variant={"outline"} className="opacity-75" > - Sign In + Login diff --git a/mirror-2/components/env-var-warning.tsx b/mirror-2/components/env-var-warning.tsx index b3178780..27a296a7 100644 --- a/mirror-2/components/env-var-warning.tsx +++ b/mirror-2/components/env-var-warning.tsx @@ -16,7 +16,7 @@ export function EnvVarWarning() { disabled className="opacity-75 cursor-none pointer-events-none" > - Sign in + Login + + + + )} diff --git a/mirror-2/supabase/seed.sql b/mirror-2/supabase/seed.sql index 742906e6..1a9f1baf 100644 --- a/mirror-2/supabase/seed.sql +++ b/mirror-2/supabase/seed.sql @@ -39,7 +39,7 @@ BEGIN -- Loop to insert 15 users FOR i IN 1..15 LOOP -- Construct the email dynamically - email := format('user%s@a.com', i); -- Use %s for numbers + email := format('user%s@example.com', i); -- Use %s for numbers -- Call the create_user function with the constructed email and capture user_id user_id := public.create_user(email, password); From a27fd123d5933e847c8d74b42d75acd399614c39 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 20:03:29 -0700 Subject: [PATCH 066/353] favicon --- mirror-2/app/favicon.ico | Bin 25931 -> 12751 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mirror-2/app/favicon.ico b/mirror-2/app/favicon.ico index 718d6fea4835ec2d246af9800eddb7ffb276240c..5a365ea32e1940760c7645c1f039199b31c96dd5 100644 GIT binary patch literal 12751 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 literal 25931 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 LrJugUA?W`A8`#=m From 2124ff0b499ba3cc2d635ad855804c57af21f6a7 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 22:01:24 -0700 Subject: [PATCH 067/353] favicon --- .../app/{ => space/[spaceId]/build}/favicon.ico | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename mirror-2/app/{ => space/[spaceId]/build}/favicon.ico (100%) diff --git a/mirror-2/app/favicon.ico b/mirror-2/app/space/[spaceId]/build/favicon.ico similarity index 100% rename from mirror-2/app/favicon.ico rename to mirror-2/app/space/[spaceId]/build/favicon.ico From 6291c6e77575fca40a15c2bc488b4c48cd0a7b38 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Mon, 30 Sep 2024 22:01:34 -0700 Subject: [PATCH 068/353] clean --- mirror-2/app/space/[spaceId]/build/top-navbar.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx index 82769a4a..2f3b0374 100644 --- a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx +++ b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx @@ -5,10 +5,10 @@ import { Input } from "@/components/ui/input"; import { Search, CircleUser } from "lucide-react"; import Link from "next/link"; -export function TopNavbar() { +export async function TopNavbar() { + return (
        - {/* add an input that is the title and is modifiable */}
        Date: Mon, 30 Sep 2024 22:59:04 -0700 Subject: [PATCH 069/353] boilerplate switcher --- .../[spaceId]/build/@controlBar/assets.tsx | 9 + .../build/@controlBar/control-bar.tsx | 167 +++++++++++++++++ .../build/@controlBar/inner-control-bar.tsx | 16 ++ .../[spaceId]/build/@controlBar/layout.tsx | 11 ++ .../[spaceId]/build/@controlBar/loading.tsx | 7 + .../[spaceId]/build/@controlBar/page.tsx | 168 +----------------- .../[spaceId]/build/@controlBar/scenes.tsx | 9 + .../[spaceId]/build/@controlBar/store.tsx | 3 + 8 files changed, 224 insertions(+), 166 deletions(-) create mode 100644 mirror-2/app/space/[spaceId]/build/@controlBar/assets.tsx create mode 100644 mirror-2/app/space/[spaceId]/build/@controlBar/control-bar.tsx create mode 100644 mirror-2/app/space/[spaceId]/build/@controlBar/inner-control-bar.tsx create mode 100644 mirror-2/app/space/[spaceId]/build/@controlBar/layout.tsx create mode 100644 mirror-2/app/space/[spaceId]/build/@controlBar/loading.tsx create mode 100644 mirror-2/app/space/[spaceId]/build/@controlBar/scenes.tsx create mode 100644 mirror-2/app/space/[spaceId]/build/@controlBar/store.tsx diff --git a/mirror-2/app/space/[spaceId]/build/@controlBar/assets.tsx b/mirror-2/app/space/[spaceId]/build/@controlBar/assets.tsx new file mode 100644 index 00000000..6f66ba80 --- /dev/null +++ b/mirror-2/app/space/[spaceId]/build/@controlBar/assets.tsx @@ -0,0 +1,9 @@ +'use client'; +import ControlBar from "@/app/space/[spaceId]/build/@controlBar/control-bar"; + +export default function Assets() { + + return ( + "Assets" + ); +} diff --git a/mirror-2/app/space/[spaceId]/build/@controlBar/control-bar.tsx b/mirror-2/app/space/[spaceId]/build/@controlBar/control-bar.tsx new file mode 100644 index 00000000..60c86432 --- /dev/null +++ b/mirror-2/app/space/[spaceId]/build/@controlBar/control-bar.tsx @@ -0,0 +1,167 @@ +'use client'; + +import { controlBarCurrentViewAtom } from "@/app/space/[spaceId]/build/@controlBar/store"; +import { Button } from "@/components/ui/button"; +import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip"; +import { uiSoundsCanPlayAtom, useUiHoverSoundEffect } from "@/components/ui/ui-sounds"; +import { atom, useAtom } from "jotai"; +import { Box, Clapperboard, Code2, Database, GitBranch, Settings, Volume2, VolumeOff } from "lucide-react"; + + +export default function ControlBar() { + const [currentView, setCurrentView] = useAtom(controlBarCurrentViewAtom); + const [uiSoundsCanPlay, setUiSoundsCanPlay] = useAtom(uiSoundsCanPlayAtom); + const [play] = useUiHoverSoundEffect(); + + const handleViewChange = (view: string) => { + // play the sound ONLY if the view has changed + if (currentView !== view) { + play() + } + setCurrentView(view); + }; + + const getVariant = (view: string) => { + return currentView === view ? "default" : "ghost"; + }; + + return ( + + + + ); +} diff --git a/mirror-2/app/space/[spaceId]/build/@controlBar/inner-control-bar.tsx b/mirror-2/app/space/[spaceId]/build/@controlBar/inner-control-bar.tsx new file mode 100644 index 00000000..c4c22255 --- /dev/null +++ b/mirror-2/app/space/[spaceId]/build/@controlBar/inner-control-bar.tsx @@ -0,0 +1,16 @@ +"use client" +import Scenes from "@/app/space/[spaceId]/build/@controlBar/scenes"; +import Assets from "@/app/space/[spaceId]/build/@controlBar/assets"; +import { controlBarCurrentViewAtom } from "./store"; +import { useAtom } from "jotai"; + +export default function InnerControlBar() { + const [currentView, setCurrentView] = useAtom(controlBarCurrentViewAtom); + + return ( +
        + {currentView === "assets" && } + {currentView === "scenes" && } +
        + ); +} diff --git a/mirror-2/app/space/[spaceId]/build/@controlBar/layout.tsx b/mirror-2/app/space/[spaceId]/build/@controlBar/layout.tsx new file mode 100644 index 00000000..2a6e6d50 --- /dev/null +++ b/mirror-2/app/space/[spaceId]/build/@controlBar/layout.tsx @@ -0,0 +1,11 @@ +import ControlBar from '@/app/space/[spaceId]/build/@controlBar/control-bar' +import InnerControlBar from '@/app/space/[spaceId]/build/@controlBar/inner-control-bar' + +export default function Layout({ children }: { children: React.ReactNode }) { + return ( +
        + + +
        + ) +} diff --git a/mirror-2/app/space/[spaceId]/build/@controlBar/loading.tsx b/mirror-2/app/space/[spaceId]/build/@controlBar/loading.tsx new file mode 100644 index 00000000..7c30e9c6 --- /dev/null +++ b/mirror-2/app/space/[spaceId]/build/@controlBar/loading.tsx @@ -0,0 +1,7 @@ +export default function Loading() { + return ( +
        +
        +
        + ); +} diff --git a/mirror-2/app/space/[spaceId]/build/@controlBar/page.tsx b/mirror-2/app/space/[spaceId]/build/@controlBar/page.tsx index efa7c59d..ef1b7cb3 100644 --- a/mirror-2/app/space/[spaceId]/build/@controlBar/page.tsx +++ b/mirror-2/app/space/[spaceId]/build/@controlBar/page.tsx @@ -1,167 +1,3 @@ -'use client'; - -import { Button } from "@/components/ui/button"; -import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip"; -import { uiSoundsCanPlayAtom, useUiHoverSoundEffect } from "@/components/ui/ui-sounds"; -import { atom, useAtom } from "jotai"; -import { Box, Clapperboard, Code2, Database, GitBranch, Settings, Volume2, VolumeOff } from "lucide-react"; - -const sidebarCurrentViewAtom = atom("scene"); - -export default function ControlBar() { - const [currentView, setCurrentView] = useAtom(sidebarCurrentViewAtom); - const [uiSoundsCanPlay, setUiSoundsCanPlay] = useAtom(uiSoundsCanPlayAtom); - const [play] = useUiHoverSoundEffect(); - - const handleViewChange = (view: string) => { - // play the sound ONLY if the view has changed - if (currentView !== view) { - play() - } - setCurrentView(view); - }; - - const getVariant = (view: string) => { - return currentView === view ? "default" : "ghost"; - }; - - return ( - - - -
        - - - - - - Toggle UI Sounds - - -
        -
        - ); +export default function Page() { + return
        Build Page
        } diff --git a/mirror-2/app/space/[spaceId]/build/@controlBar/scenes.tsx b/mirror-2/app/space/[spaceId]/build/@controlBar/scenes.tsx new file mode 100644 index 00000000..aa8c67d4 --- /dev/null +++ b/mirror-2/app/space/[spaceId]/build/@controlBar/scenes.tsx @@ -0,0 +1,9 @@ +'use client'; +import ControlBar from "@/app/space/[spaceId]/build/@controlBar/control-bar"; + +export default function Scenes() { + + return ( + "Scenes" + ); +} diff --git a/mirror-2/app/space/[spaceId]/build/@controlBar/store.tsx b/mirror-2/app/space/[spaceId]/build/@controlBar/store.tsx new file mode 100644 index 00000000..400c1786 --- /dev/null +++ b/mirror-2/app/space/[spaceId]/build/@controlBar/store.tsx @@ -0,0 +1,3 @@ +import { atom } from "jotai"; + +export const controlBarCurrentViewAtom = atom("scene"); From 6fc9dd31679b8bb3de37a20a5e1c281550be13c9 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Tue, 1 Oct 2024 00:48:01 -0700 Subject: [PATCH 070/353] assets and loading --- .../space/[spaceId]/build/@controlBar/assets.tsx | 7 +++++-- .../space/[spaceId]/build/@controlBar/code.tsx | 10 ++++++++++ .../build/@controlBar/inner-control-bar.tsx | 16 ++++++++++++---- .../space/[spaceId]/build/@controlBar/layout.tsx | 8 ++++++-- .../space/[spaceId]/build/@controlBar/scenes.tsx | 3 ++- .../build/@controlBar/skeleton-card.tsx | 13 +++++++++++++ .../space/[spaceId]/build/@controlBar/store.tsx | 9 +++++++++ mirror-2/components/ui/skeleton.tsx | 15 +++++++++++++++ 8 files changed, 72 insertions(+), 9 deletions(-) create mode 100644 mirror-2/app/space/[spaceId]/build/@controlBar/code.tsx create mode 100644 mirror-2/app/space/[spaceId]/build/@controlBar/skeleton-card.tsx create mode 100644 mirror-2/components/ui/skeleton.tsx diff --git a/mirror-2/app/space/[spaceId]/build/@controlBar/assets.tsx b/mirror-2/app/space/[spaceId]/build/@controlBar/assets.tsx index 6f66ba80..cfeeb839 100644 --- a/mirror-2/app/space/[spaceId]/build/@controlBar/assets.tsx +++ b/mirror-2/app/space/[spaceId]/build/@controlBar/assets.tsx @@ -1,9 +1,12 @@ 'use client'; import ControlBar from "@/app/space/[spaceId]/build/@controlBar/control-bar"; +import { asyncTimeoutAtom } from "@/app/space/[spaceId]/build/@controlBar/store"; +import { useAtom } from "jotai"; +import { Suspense } from "react"; export default function Assets() { - + const [test] = useAtom(asyncTimeoutAtom); return ( - "Assets" +
        Assets: {test}
        ); } diff --git a/mirror-2/app/space/[spaceId]/build/@controlBar/code.tsx b/mirror-2/app/space/[spaceId]/build/@controlBar/code.tsx new file mode 100644 index 00000000..170c6948 --- /dev/null +++ b/mirror-2/app/space/[spaceId]/build/@controlBar/code.tsx @@ -0,0 +1,10 @@ +'use client'; +import ControlBar from "@/app/space/[spaceId]/build/@controlBar/control-bar"; +import { Suspense } from "react"; + +export default function Code() { + + return ( +
        Code
        + ); +} diff --git a/mirror-2/app/space/[spaceId]/build/@controlBar/inner-control-bar.tsx b/mirror-2/app/space/[spaceId]/build/@controlBar/inner-control-bar.tsx index c4c22255..5b9d3aa3 100644 --- a/mirror-2/app/space/[spaceId]/build/@controlBar/inner-control-bar.tsx +++ b/mirror-2/app/space/[spaceId]/build/@controlBar/inner-control-bar.tsx @@ -3,14 +3,22 @@ import Scenes from "@/app/space/[spaceId]/build/@controlBar/scenes"; import Assets from "@/app/space/[spaceId]/build/@controlBar/assets"; import { controlBarCurrentViewAtom } from "./store"; import { useAtom } from "jotai"; +import { Suspense } from "react"; +import Code from "@/app/space/[spaceId]/build/@controlBar/code"; +import { SkeletonCard } from "@/app/space/[spaceId]/build/@controlBar/skeleton-card"; export default function InnerControlBar() { - const [currentView, setCurrentView] = useAtom(controlBarCurrentViewAtom); + const [currentView] = useAtom(controlBarCurrentViewAtom); return (
        - {currentView === "assets" && } - {currentView === "scenes" && } -
        + + Test Inner + {currentView === "assets" && } + {currentView === "scenes" && } + {currentView === "code" && } + + +
        ); } diff --git a/mirror-2/app/space/[spaceId]/build/@controlBar/layout.tsx b/mirror-2/app/space/[spaceId]/build/@controlBar/layout.tsx index 2a6e6d50..88d4d7dd 100644 --- a/mirror-2/app/space/[spaceId]/build/@controlBar/layout.tsx +++ b/mirror-2/app/space/[spaceId]/build/@controlBar/layout.tsx @@ -4,8 +4,12 @@ import InnerControlBar from '@/app/space/[spaceId]/build/@controlBar/inner-contr export default function Layout({ children }: { children: React.ReactNode }) { return (
        - - +
        + +
        +
        + +
        ) } diff --git a/mirror-2/app/space/[spaceId]/build/@controlBar/scenes.tsx b/mirror-2/app/space/[spaceId]/build/@controlBar/scenes.tsx index aa8c67d4..5193ebb8 100644 --- a/mirror-2/app/space/[spaceId]/build/@controlBar/scenes.tsx +++ b/mirror-2/app/space/[spaceId]/build/@controlBar/scenes.tsx @@ -1,9 +1,10 @@ 'use client'; import ControlBar from "@/app/space/[spaceId]/build/@controlBar/control-bar"; +import { Suspense } from "react"; export default function Scenes() { return ( - "Scenes" +
        Scenes
        ); } diff --git a/mirror-2/app/space/[spaceId]/build/@controlBar/skeleton-card.tsx b/mirror-2/app/space/[spaceId]/build/@controlBar/skeleton-card.tsx new file mode 100644 index 00000000..7be3859a --- /dev/null +++ b/mirror-2/app/space/[spaceId]/build/@controlBar/skeleton-card.tsx @@ -0,0 +1,13 @@ +import { Skeleton } from "@/components/ui/skeleton" + +export function SkeletonCard() { + return ( +
        + +
        + + +
        +
        + ) +} diff --git a/mirror-2/app/space/[spaceId]/build/@controlBar/store.tsx b/mirror-2/app/space/[spaceId]/build/@controlBar/store.tsx index 400c1786..955bc41e 100644 --- a/mirror-2/app/space/[spaceId]/build/@controlBar/store.tsx +++ b/mirror-2/app/space/[spaceId]/build/@controlBar/store.tsx @@ -1,3 +1,12 @@ import { atom } from "jotai"; export const controlBarCurrentViewAtom = atom("scene"); + +export const assetsAtom = atom([]); + +export const asyncTimeoutAtom = atom(async (get) => { + // Simulate an asynchronous task with a timeout + await new Promise((resolve) => setTimeout(resolve, 40000)); + + return 'Data after timeout'; +}); diff --git a/mirror-2/components/ui/skeleton.tsx b/mirror-2/components/ui/skeleton.tsx new file mode 100644 index 00000000..261f5563 --- /dev/null +++ b/mirror-2/components/ui/skeleton.tsx @@ -0,0 +1,15 @@ +import { cn } from "@/lib/utils" + +function Skeleton({ + className, + ...props +}: React.HTMLAttributes) { + return ( +
        + ) +} + +export { Skeleton } From e576e435407172f74221bc570e0a49ed30b3a2a1 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Tue, 1 Oct 2024 00:55:59 -0700 Subject: [PATCH 071/353] clean --- mirror-2/app/space/[spaceId]/build/@controlBar/scenes.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/mirror-2/app/space/[spaceId]/build/@controlBar/scenes.tsx b/mirror-2/app/space/[spaceId]/build/@controlBar/scenes.tsx index 5193ebb8..c279809c 100644 --- a/mirror-2/app/space/[spaceId]/build/@controlBar/scenes.tsx +++ b/mirror-2/app/space/[spaceId]/build/@controlBar/scenes.tsx @@ -1,6 +1,4 @@ 'use client'; -import ControlBar from "@/app/space/[spaceId]/build/@controlBar/control-bar"; -import { Suspense } from "react"; export default function Scenes() { From 401ca8c5c2e5de0040d62c9348783b1c11cb8310 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Tue, 1 Oct 2024 03:02:58 -0700 Subject: [PATCH 072/353] state, editable title, supabase fixes --- mirror-2/app/(auth-pages)/login/page.tsx | 2 +- mirror-2/app/layout.tsx | 3 --- mirror-2/app/space/[spaceId]/build/layout.tsx | 2 -- .../app/space/[spaceId]/build/top-navbar.tsx | 6 ++--- mirror-2/components/editable-space-name.tsx | 25 +++++++++++++++++++ .../{actions/space.ts => supabase/spaces.tsx} | 12 ++++++--- mirror-2/tsconfig.json | 1 + mirror-2/utils/supabase/client.ts | 2 +- 8 files changed, 38 insertions(+), 15 deletions(-) create mode 100644 mirror-2/components/editable-space-name.tsx rename mirror-2/{actions/space.ts => supabase/spaces.tsx} (50%) diff --git a/mirror-2/app/(auth-pages)/login/page.tsx b/mirror-2/app/(auth-pages)/login/page.tsx index b63af290..1470e441 100644 --- a/mirror-2/app/(auth-pages)/login/page.tsx +++ b/mirror-2/app/(auth-pages)/login/page.tsx @@ -25,7 +25,7 @@ export default function Login({ searchParams }: { searchParams: Message }) { // Simulate form submission by calling formAction // Since the SubmitButton uses formAction, this will trigger loginAction - document.getElementById("login-form")?.submit(); + document.getElementById("login-form")?.requestSubmit(); }; return ( diff --git a/mirror-2/app/layout.tsx b/mirror-2/app/layout.tsx index b8cb0de9..b9eb5a6a 100644 --- a/mirror-2/app/layout.tsx +++ b/mirror-2/app/layout.tsx @@ -9,9 +9,6 @@ import Link from "next/link"; import "./globals.css"; import { Providers } from "@/components/jotai-providers"; -const defaultUrl = process.env.VERCEL_URL - ? `https://${process.env.VERCEL_URL}` - : "http://localhost:3000"; export default function RootLayout({ children, diff --git a/mirror-2/app/space/[spaceId]/build/layout.tsx b/mirror-2/app/space/[spaceId]/build/layout.tsx index b217c61f..8fa553b7 100644 --- a/mirror-2/app/space/[spaceId]/build/layout.tsx +++ b/mirror-2/app/space/[spaceId]/build/layout.tsx @@ -3,7 +3,6 @@ import Link from "next/link" import { TopNavbar } from "@/app/space/[spaceId]/build/top-navbar" import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "@/components/ui/resizable" import { AppLogoImageSmall } from "@/lib/theme-service" -import { getSingleSpaceAction } from "@/actions/space" export default async function Layout({ children, controlBar, spaceViewport, params }: { children: React.ReactNode, @@ -11,7 +10,6 @@ export default async function Layout({ children, controlBar, spaceViewport, para spaceViewport: React.ReactNode, params: { spaceId: string } }) { - const { data } = await getSingleSpaceAction(params.spaceId); return ( diff --git a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx index 2f3b0374..0b57eddb 100644 --- a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx +++ b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx @@ -1,3 +1,4 @@ +import { EditableSpaceName } from "@/components/editable-space-name"; import { ThemeSwitcher } from "@/components/theme-switcher"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"; @@ -10,10 +11,7 @@ export async function TopNavbar() { return (
        - +
        + + + + Add Podcast + + Copy and paste the podcast feed URL to import. + + +
        +
        + + +
        +
        + + + +
        + +
        + + ) +} diff --git a/mirror-2/app/home/components/sidebar.tsx b/mirror-2/app/home/components/sidebar.tsx new file mode 100644 index 00000000..1347c2b9 --- /dev/null +++ b/mirror-2/app/home/components/sidebar.tsx @@ -0,0 +1,205 @@ +import { cn } from "@/lib/utils" + + +import { Playlist } from "../data/playlists" +import { Button } from "@/components/ui/button" +import { ScrollArea } from "@/components/ui/scroll-area" + +interface SidebarProps extends React.HTMLAttributes { + playlists: Playlist[] +} + +export function Sidebar({ className, playlists }: SidebarProps) { + return ( +
        +
        +
        +

        + Discover +

        +
        + + + +
        +
        +
        +

        + Library +

        +
        + + + + + +
        +
        +
        +

        + Playlists +

        + +
        + {playlists?.map((playlist, i) => ( + + ))} +
        +
        +
        +
        +
        + ) +} diff --git a/mirror-2/app/home/data/albums.ts b/mirror-2/app/home/data/albums.ts new file mode 100644 index 00000000..07bd95b2 --- /dev/null +++ b/mirror-2/app/home/data/albums.ts @@ -0,0 +1,71 @@ +export interface Album { + name: string + artist: string + cover: string +} + +export const listenNowAlbums: Album[] = [ + { + name: "React Rendezvous", + artist: "Ethan Byte", + cover: + "https://images.unsplash.com/photo-1611348586804-61bf6c080437?w=300&dpr=2&q=80", + }, + { + name: "Async Awakenings", + artist: "Nina Netcode", + cover: + "https://images.unsplash.com/photo-1468817814611-b7edf94b5d60?w=300&dpr=2&q=80", + }, + { + name: "The Art of Reusability", + artist: "Lena Logic", + cover: + "https://images.unsplash.com/photo-1528143358888-6d3c7f67bd5d?w=300&dpr=2&q=80", + }, + { + name: "Stateful Symphony", + artist: "Beth Binary", + cover: + "https://images.unsplash.com/photo-1490300472339-79e4adc6be4a?w=300&dpr=2&q=80", + }, +] + +export const madeForYouAlbums: Album[] = [ + { + name: "Thinking Components", + artist: "Lena Logic", + cover: + "https://images.unsplash.com/photo-1615247001958-f4bc92fa6a4a?w=300&dpr=2&q=80", + }, + { + name: "Functional Fury", + artist: "Beth Binary", + cover: + "https://images.unsplash.com/photo-1513745405825-efaf9a49315f?w=300&dpr=2&q=80", + }, + { + name: "React Rendezvous", + artist: "Ethan Byte", + cover: + "https://images.unsplash.com/photo-1614113489855-66422ad300a4?w=300&dpr=2&q=80", + }, + { + name: "Stateful Symphony", + artist: "Beth Binary", + cover: + "https://images.unsplash.com/photo-1446185250204-f94591f7d702?w=300&dpr=2&q=80", + }, + { + name: "Async Awakenings", + artist: "Nina Netcode", + cover: + "https://images.unsplash.com/photo-1468817814611-b7edf94b5d60?w=300&dpr=2&q=80", + }, + { + name: "The Art of Reusability", + artist: "Lena Logic", + cover: + "https://images.unsplash.com/photo-1490300472339-79e4adc6be4a?w=300&dpr=2&q=80", + }, +] diff --git a/mirror-2/app/home/data/playlists.ts b/mirror-2/app/home/data/playlists.ts new file mode 100644 index 00000000..5c0ed5f7 --- /dev/null +++ b/mirror-2/app/home/data/playlists.ts @@ -0,0 +1,16 @@ +export type Playlist = (typeof playlists)[number] + +export const playlists = [ + "Recently Added", + "Recently Played", + "Top Songs", + "Top Albums", + "Top Artists", + "Logic Discography", + "Bedtime Beats", + "Feeling Happy", + "I miss Y2K Pop", + "Runtober", + "Mellow Days", + "Eminem Essentials", +] diff --git a/mirror-2/app/home/page.tsx b/mirror-2/app/home/page.tsx new file mode 100644 index 00000000..54b6d4cc --- /dev/null +++ b/mirror-2/app/home/page.tsx @@ -0,0 +1,151 @@ +import { Metadata } from "next" +import Image from "next/image" + +import { AlbumArtwork } from "./components/album-artwork" +import { Menu } from "./components/menu" +import { PodcastEmptyPlaceholder } from "./components/podcast-empty-placeholder" +import { Sidebar } from "./components/sidebar" +import { listenNowAlbums, madeForYouAlbums } from "./data/albums" +import { playlists } from "./data/playlists" +import { PlusCircleIcon } from "lucide-react" +import { Button } from "@/components/ui/button" +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" +import { Separator } from "@/components/ui/separator" +import { ScrollArea, ScrollBar } from "@/components/ui/scroll-area" + +export const metadata: Metadata = { + title: "Music App", + description: "Example music app using the components.", +} + +export default function MusicPage() { + return ( + <> +
        + Music + Music +
        +
        + +
        +
        +
        + +
        +
        + +
        + + + Music + + Podcasts + + Live + + +
        + +
        +
        + +
        +
        +

        + Listen Now +

        +

        + Top picks for you. Updated daily. +

        +
        +
        + +
        + +
        + {listenNowAlbums.map((album) => ( + + ))} +
        + +
        +
        +
        +

        + Made for You +

        +

        + Your personal playlists. Updated daily. +

        +
        + +
        + +
        + {madeForYouAlbums.map((album) => ( + + ))} +
        + +
        +
        +
        + +
        +
        +

        + New Episodes +

        +

        + Your favorite podcasts. Updated daily. +

        +
        +
        + + +
        +
        +
        +
        +
        +
        +
        +
        + + ) +} diff --git a/mirror-2/components/header-auth.tsx b/mirror-2/components/header-auth.tsx deleted file mode 100644 index b1491f89..00000000 --- a/mirror-2/components/header-auth.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import { signOutAction } from "@/actions/auth"; -import { hasEnvVars } from "@/utils/supabase/check-env-vars"; -import Link from "next/link"; -import { Badge } from "./ui/badge"; -import { Button } from "./ui/button"; -import { createClient } from "@/utils/supabase/server"; - -export default async function AuthButton() { - const { - data: { user }, - } = await createClient().auth.getUser(); - - if (!hasEnvVars) { - return ( - <> -
        -
        - - Please update .env.local file with anon key and url - -
        -
        - - -
        -
        - - ); - } - return user ? ( -
        - Hey, {user.email}! -
        - -
        -
        - ) : ( -
        - - -
        - ); -} diff --git a/mirror-2/components/ui/context-menu.tsx b/mirror-2/components/ui/context-menu.tsx new file mode 100644 index 00000000..c323601d --- /dev/null +++ b/mirror-2/components/ui/context-menu.tsx @@ -0,0 +1,200 @@ +"use client" + +import * as React from "react" +import * as ContextMenuPrimitive from "@radix-ui/react-context-menu" +import { Check, ChevronRight, Circle } from "lucide-react" + +import { cn } from "@/lib/utils" + +const ContextMenu = ContextMenuPrimitive.Root + +const ContextMenuTrigger = ContextMenuPrimitive.Trigger + +const ContextMenuGroup = ContextMenuPrimitive.Group + +const ContextMenuPortal = ContextMenuPrimitive.Portal + +const ContextMenuSub = ContextMenuPrimitive.Sub + +const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup + +const ContextMenuSubTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, children, ...props }, ref) => ( + + {children} + + +)) +ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName + +const ContextMenuSubContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName + +const ContextMenuContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + +)) +ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName + +const ContextMenuItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, ...props }, ref) => ( + +)) +ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName + +const ContextMenuCheckboxItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, checked, ...props }, ref) => ( + + + + + + + {children} + +)) +ContextMenuCheckboxItem.displayName = + ContextMenuPrimitive.CheckboxItem.displayName + +const ContextMenuRadioItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + + + + {children} + +)) +ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName + +const ContextMenuLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, ...props }, ref) => ( + +)) +ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName + +const ContextMenuSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName + +const ContextMenuShortcut = ({ + className, + ...props +}: React.HTMLAttributes) => { + return ( + + ) +} +ContextMenuShortcut.displayName = "ContextMenuShortcut" + +export { + ContextMenu, + ContextMenuTrigger, + ContextMenuContent, + ContextMenuItem, + ContextMenuCheckboxItem, + ContextMenuRadioItem, + ContextMenuLabel, + ContextMenuSeparator, + ContextMenuShortcut, + ContextMenuGroup, + ContextMenuPortal, + ContextMenuSub, + ContextMenuSubContent, + ContextMenuSubTrigger, + ContextMenuRadioGroup, +} diff --git a/mirror-2/components/ui/dialog.tsx b/mirror-2/components/ui/dialog.tsx new file mode 100644 index 00000000..b474c502 --- /dev/null +++ b/mirror-2/components/ui/dialog.tsx @@ -0,0 +1,122 @@ +"use client" + +import * as React from "react" +import * as DialogPrimitive from "@radix-ui/react-dialog" +import { X } from "lucide-react" + +import { cn } from "@/lib/utils" + +const Dialog = DialogPrimitive.Root + +const DialogTrigger = DialogPrimitive.Trigger + +const DialogPortal = DialogPrimitive.Portal + +const DialogClose = DialogPrimitive.Close + +const DialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogOverlay.displayName = DialogPrimitive.Overlay.displayName + +const DialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + {children} + + + Close + + + +)) +DialogContent.displayName = DialogPrimitive.Content.displayName + +const DialogHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
        +) +DialogHeader.displayName = "DialogHeader" + +const DialogFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
        +) +DialogFooter.displayName = "DialogFooter" + +const DialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogTitle.displayName = DialogPrimitive.Title.displayName + +const DialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogDescription.displayName = DialogPrimitive.Description.displayName + +export { + Dialog, + DialogPortal, + DialogOverlay, + DialogClose, + DialogTrigger, + DialogContent, + DialogHeader, + DialogFooter, + DialogTitle, + DialogDescription, +} diff --git a/mirror-2/components/ui/menubar.tsx b/mirror-2/components/ui/menubar.tsx new file mode 100644 index 00000000..e51e0ae8 --- /dev/null +++ b/mirror-2/components/ui/menubar.tsx @@ -0,0 +1,236 @@ +"use client" + +import * as React from "react" +import * as MenubarPrimitive from "@radix-ui/react-menubar" +import { Check, ChevronRight, Circle } from "lucide-react" + +import { cn } from "@/lib/utils" + +const MenubarMenu = MenubarPrimitive.Menu + +const MenubarGroup = MenubarPrimitive.Group + +const MenubarPortal = MenubarPrimitive.Portal + +const MenubarSub = MenubarPrimitive.Sub + +const MenubarRadioGroup = MenubarPrimitive.RadioGroup + +const Menubar = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +Menubar.displayName = MenubarPrimitive.Root.displayName + +const MenubarTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName + +const MenubarSubTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, children, ...props }, ref) => ( + + {children} + + +)) +MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName + +const MenubarSubContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName + +const MenubarContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>( + ( + { className, align = "start", alignOffset = -4, sideOffset = 8, ...props }, + ref + ) => ( + + + + ) +) +MenubarContent.displayName = MenubarPrimitive.Content.displayName + +const MenubarItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, ...props }, ref) => ( + +)) +MenubarItem.displayName = MenubarPrimitive.Item.displayName + +const MenubarCheckboxItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, checked, ...props }, ref) => ( + + + + + + + {children} + +)) +MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName + +const MenubarRadioItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + + + + {children} + +)) +MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName + +const MenubarLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, ...props }, ref) => ( + +)) +MenubarLabel.displayName = MenubarPrimitive.Label.displayName + +const MenubarSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName + +const MenubarShortcut = ({ + className, + ...props +}: React.HTMLAttributes) => { + return ( + + ) +} +MenubarShortcut.displayname = "MenubarShortcut" + +export { + Menubar, + MenubarMenu, + MenubarTrigger, + MenubarContent, + MenubarItem, + MenubarSeparator, + MenubarLabel, + MenubarCheckboxItem, + MenubarRadioGroup, + MenubarRadioItem, + MenubarPortal, + MenubarSubContent, + MenubarSubTrigger, + MenubarGroup, + MenubarSub, + MenubarShortcut, +} diff --git a/mirror-2/components/ui/scroll-area.tsx b/mirror-2/components/ui/scroll-area.tsx new file mode 100644 index 00000000..ff4aae8e --- /dev/null +++ b/mirror-2/components/ui/scroll-area.tsx @@ -0,0 +1,48 @@ +"use client" + +import * as React from "react" +import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area" + +import { cn } from "@/lib/utils" + +const ScrollArea = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + {children} + + + + +)) +ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName + +const ScrollBar = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, orientation = "vertical", ...props }, ref) => ( + + + +)) +ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName + +export { ScrollArea, ScrollBar } diff --git a/mirror-2/components/ui/separator.tsx b/mirror-2/components/ui/separator.tsx new file mode 100644 index 00000000..f2cd15a7 --- /dev/null +++ b/mirror-2/components/ui/separator.tsx @@ -0,0 +1,31 @@ +"use client" + +import * as React from "react" +import * as SeparatorPrimitive from "@radix-ui/react-separator" + +import { cn } from "@/lib/utils" + +const Separator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>( + ( + { className, orientation = "horizontal", decorative = true, ...props }, + ref + ) => ( + + ) +) +Separator.displayName = SeparatorPrimitive.Root.displayName + +export { Separator } diff --git a/mirror-2/components/ui/tabs.tsx b/mirror-2/components/ui/tabs.tsx new file mode 100644 index 00000000..4d030b15 --- /dev/null +++ b/mirror-2/components/ui/tabs.tsx @@ -0,0 +1,55 @@ +"use client" + +import * as React from "react" +import * as TabsPrimitive from "@radix-ui/react-tabs" + +import { cn } from "@/lib/utils" + +const Tabs = TabsPrimitive.Root + +const TabsList = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +TabsList.displayName = TabsPrimitive.List.displayName + +const TabsTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +TabsTrigger.displayName = TabsPrimitive.Trigger.displayName + +const TabsContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +TabsContent.displayName = TabsPrimitive.Content.displayName + +export { Tabs, TabsList, TabsTrigger, TabsContent } diff --git a/mirror-2/next.config.js b/mirror-2/next.config.js index eec3cda8..4b10fa4d 100644 --- a/mirror-2/next.config.js +++ b/mirror-2/next.config.js @@ -12,6 +12,9 @@ const nextConfig = { permanent: true, } ], + images: { + domains: ['images.unsplash.com'], + }, }; module.exports = nextConfig; diff --git a/mirror-2/package.json b/mirror-2/package.json index 8bf5e40f..efd6ea77 100644 --- a/mirror-2/package.json +++ b/mirror-2/package.json @@ -10,10 +10,15 @@ "@hookform/resolvers": "^3.9.0", "@next/bundle-analyzer": "^14.2.13", "@radix-ui/react-checkbox": "^1.1.1", - "@radix-ui/react-dialog": "^1.1.1", + "@radix-ui/react-context-menu": "^2.2.2", + "@radix-ui/react-dialog": "^1.1.2", "@radix-ui/react-dropdown-menu": "^2.1.1", "@radix-ui/react-label": "^2.1.0", + "@radix-ui/react-menubar": "^1.1.2", + "@radix-ui/react-scroll-area": "^1.2.0", + "@radix-ui/react-separator": "^1.1.0", "@radix-ui/react-slot": "^1.1.0", + "@radix-ui/react-tabs": "^1.1.1", "@radix-ui/react-tooltip": "^1.1.2", "@reduxjs/toolkit": "^2.2.7", "@supabase/ssr": "latest", diff --git a/mirror-2/yarn.lock b/mirror-2/yarn.lock index a3e97491..661a4f47 100644 --- a/mirror-2/yarn.lock +++ b/mirror-2/yarn.lock @@ -176,6 +176,11 @@ resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.28.tgz#d45e01c4a56f143ee69c54dd6b12eade9e270a73" integrity sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw== +"@radix-ui/number@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/number/-/number-1.1.0.tgz#1e95610461a09cdf8bb05c152e76ca1278d5da46" + integrity sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ== + "@radix-ui/primitive@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.1.0.tgz#42ef83b3b56dccad5d703ae8c42919a68798bbe2" @@ -217,30 +222,47 @@ resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz#656432461fc8283d7b591dcf0d79152fae9ecc74" integrity sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw== +"@radix-ui/react-context-menu@^2.2.2": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-context-menu/-/react-context-menu-2.2.2.tgz#efcddc559fc3011721b65148f062d04027f76c7a" + integrity sha512-99EatSTpW+hRYHt7m8wdDlLtkmTovEe8Z/hnxUPV+SKuuNL5HWNhQI4QSdjZqNSgXHay2z4M3Dym73j9p2Gx5Q== + dependencies: + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-menu" "2.1.2" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-use-controllable-state" "1.1.0" + "@radix-ui/react-context@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.0.tgz#6df8d983546cfd1999c8512f3a8ad85a6e7fcee8" integrity sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A== -"@radix-ui/react-dialog@^1.1.1": +"@radix-ui/react-context@1.1.1": version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-dialog/-/react-dialog-1.1.1.tgz#4906507f7b4ad31e22d7dad69d9330c87c431d44" - integrity sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg== + resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.1.tgz#82074aa83a472353bb22e86f11bcbd1c61c4c71a" + integrity sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q== + +"@radix-ui/react-dialog@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dialog/-/react-dialog-1.1.2.tgz#d9345575211d6f2d13e209e84aec9a8584b54d6c" + integrity sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA== dependencies: "@radix-ui/primitive" "1.1.0" "@radix-ui/react-compose-refs" "1.1.0" - "@radix-ui/react-context" "1.1.0" - "@radix-ui/react-dismissable-layer" "1.1.0" - "@radix-ui/react-focus-guards" "1.1.0" + "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-dismissable-layer" "1.1.1" + "@radix-ui/react-focus-guards" "1.1.1" "@radix-ui/react-focus-scope" "1.1.0" "@radix-ui/react-id" "1.1.0" - "@radix-ui/react-portal" "1.1.1" - "@radix-ui/react-presence" "1.1.0" + "@radix-ui/react-portal" "1.1.2" + "@radix-ui/react-presence" "1.1.1" "@radix-ui/react-primitive" "2.0.0" "@radix-ui/react-slot" "1.1.0" "@radix-ui/react-use-controllable-state" "1.1.0" aria-hidden "^1.1.1" - react-remove-scroll "2.5.7" + react-remove-scroll "2.6.0" "@radix-ui/react-direction@1.1.0": version "1.1.0" @@ -258,6 +280,17 @@ "@radix-ui/react-use-callback-ref" "1.1.0" "@radix-ui/react-use-escape-keydown" "1.1.0" +"@radix-ui/react-dismissable-layer@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.1.tgz#cbdcb739c5403382bdde5f9243042ba643883396" + integrity sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ== + dependencies: + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-use-escape-keydown" "1.1.0" + "@radix-ui/react-dropdown-menu@^2.1.1": version "2.1.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.1.tgz#3dc578488688250dbbe109d9ff2ca28a9bca27ec" @@ -276,6 +309,11 @@ resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.0.tgz#8e9abb472a9a394f59a1b45f3dd26cfe3fc6da13" integrity sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw== +"@radix-ui/react-focus-guards@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz#8635edd346304f8b42cae86b05912b61aef27afe" + integrity sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg== + "@radix-ui/react-focus-scope@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz#ebe2891a298e0a33ad34daab2aad8dea31caf0b2" @@ -323,6 +361,46 @@ aria-hidden "^1.1.1" react-remove-scroll "2.5.7" +"@radix-ui/react-menu@2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-menu/-/react-menu-2.1.2.tgz#91f6815845a4298dde775563ed2d80b7ad667899" + integrity sha512-lZ0R4qR2Al6fZ4yCCZzu/ReTFrylHFxIqy7OezIpWF4bL0o9biKo0pFIvkaew3TyZ9Fy5gYVrR5zCGZBVbO1zg== + dependencies: + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-collection" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-direction" "1.1.0" + "@radix-ui/react-dismissable-layer" "1.1.1" + "@radix-ui/react-focus-guards" "1.1.1" + "@radix-ui/react-focus-scope" "1.1.0" + "@radix-ui/react-id" "1.1.0" + "@radix-ui/react-popper" "1.2.0" + "@radix-ui/react-portal" "1.1.2" + "@radix-ui/react-presence" "1.1.1" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-roving-focus" "1.1.0" + "@radix-ui/react-slot" "1.1.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + aria-hidden "^1.1.1" + react-remove-scroll "2.6.0" + +"@radix-ui/react-menubar@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-menubar/-/react-menubar-1.1.2.tgz#5990e6bb1b03c3d78dc7dd3cf1527b013cabf12b" + integrity sha512-cKmj5Gte7LVyuz+8gXinxZAZECQU+N7aq5pw7kUPpx3xjnDXDbsdzHtCCD2W72bwzy74AvrqdYnKYS42ueskUQ== + dependencies: + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-collection" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-direction" "1.1.0" + "@radix-ui/react-id" "1.1.0" + "@radix-ui/react-menu" "2.1.2" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-roving-focus" "1.1.0" + "@radix-ui/react-use-controllable-state" "1.1.0" + "@radix-ui/react-popper@1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-1.2.0.tgz#a3e500193d144fe2d8f5d5e60e393d64111f2a7a" @@ -347,6 +425,14 @@ "@radix-ui/react-primitive" "2.0.0" "@radix-ui/react-use-layout-effect" "1.1.0" +"@radix-ui/react-portal@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.1.2.tgz#51eb46dae7505074b306ebcb985bf65cc547d74e" + integrity sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg== + dependencies: + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-layout-effect" "1.1.0" + "@radix-ui/react-presence@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.1.0.tgz#227d84d20ca6bfe7da97104b1a8b48a833bfb478" @@ -355,6 +441,14 @@ "@radix-ui/react-compose-refs" "1.1.0" "@radix-ui/react-use-layout-effect" "1.1.0" +"@radix-ui/react-presence@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.1.1.tgz#98aba423dba5e0c687a782c0669dcd99de17f9b1" + integrity sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A== + dependencies: + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-use-layout-effect" "1.1.0" + "@radix-ui/react-primitive@2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz#fe05715faa9203a223ccc0be15dc44b9f9822884" @@ -377,6 +471,28 @@ "@radix-ui/react-use-callback-ref" "1.1.0" "@radix-ui/react-use-controllable-state" "1.1.0" +"@radix-ui/react-scroll-area@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.0.tgz#d09fd693728b09c50145935bec6f91efc2661729" + integrity sha512-q2jMBdsJ9zB7QG6ngQNzNwlvxLQqONyL58QbEGwuyRZZb/ARQwk3uQVbCF7GvQVOtV6EU/pDxAw3zRzJZI3rpQ== + dependencies: + "@radix-ui/number" "1.1.0" + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-direction" "1.1.0" + "@radix-ui/react-presence" "1.1.1" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-use-layout-effect" "1.1.0" + +"@radix-ui/react-separator@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-separator/-/react-separator-1.1.0.tgz#ee0f4d86003b0e3ea7bc6ccab01ea0adee32663e" + integrity sha512-3uBAs+egzvJBDZAzvb/n4NxxOYpnspmWxO2u5NbZ8Y6FM/NdrGSF9bop3Cf6F6C71z1rTSn8KV0Fo2ZVd79lGA== + dependencies: + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-slot@1.1.0", "@radix-ui/react-slot@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.1.0.tgz#7c5e48c36ef5496d97b08f1357bb26ed7c714b84" @@ -384,6 +500,20 @@ dependencies: "@radix-ui/react-compose-refs" "1.1.0" +"@radix-ui/react-tabs@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-tabs/-/react-tabs-1.1.1.tgz#698bd97923f6bcd629738198a73beebcc4c88b30" + integrity sha512-3GBUDmP2DvzmtYLMsHmpA1GtR46ZDZ+OreXM/N+kkQJOPIgytFWWTfDQmBQKBvaFS0Vno0FktdbVzN28KGrMdw== + dependencies: + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-direction" "1.1.0" + "@radix-ui/react-id" "1.1.0" + "@radix-ui/react-presence" "1.1.1" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-roving-focus" "1.1.0" + "@radix-ui/react-use-controllable-state" "1.1.0" + "@radix-ui/react-tooltip@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@radix-ui/react-tooltip/-/react-tooltip-1.1.2.tgz#c42db2ffd7dcc6ff3d65407c8cb70490288f518d" @@ -1338,7 +1468,7 @@ react-redux@^9.1.2: "@types/use-sync-external-store" "^0.0.3" use-sync-external-store "^1.0.0" -react-remove-scroll-bar@^2.3.4: +react-remove-scroll-bar@^2.3.4, react-remove-scroll-bar@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz#3e585e9d163be84a010180b18721e851ac81a29c" integrity sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g== @@ -1357,6 +1487,17 @@ react-remove-scroll@2.5.7: use-callback-ref "^1.3.0" use-sidecar "^1.1.2" +react-remove-scroll@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz#fb03a0845d7768a4f1519a99fdb84983b793dc07" + integrity sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ== + dependencies: + react-remove-scroll-bar "^2.3.6" + react-style-singleton "^2.2.1" + tslib "^2.1.0" + use-callback-ref "^1.3.0" + use-sidecar "^1.1.2" + react-resizable-panels@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/react-resizable-panels/-/react-resizable-panels-2.1.4.tgz#ae1803a916ba759e483336c7bd49830f1b0cd16f" From 8cf44dd085f69f5db89cbb1964349ac800c703ea Mon Sep 17 00:00:00 2001 From: Kluskey Date: Tue, 1 Oct 2024 17:48:46 -0700 Subject: [PATCH 093/353] new page boilerplate --- mirror-2/app/home/page.tsx | 15 +++++----- mirror-2/app/space/new/page.tsx | 28 +++++++++++++++++++ .../components/ui/progress-indeterminate.tsx | 5 ++++ mirror-2/components/ui/progress.tsx | 28 +++++++++++++++++++ mirror-2/package.json | 1 + mirror-2/tailwind.config.ts | 16 +++++++++-- mirror-2/yarn.lock | 8 ++++++ 7 files changed, 91 insertions(+), 10 deletions(-) create mode 100644 mirror-2/app/space/new/page.tsx create mode 100644 mirror-2/components/ui/progress-indeterminate.tsx create mode 100644 mirror-2/components/ui/progress.tsx diff --git a/mirror-2/app/home/page.tsx b/mirror-2/app/home/page.tsx index 54b6d4cc..3a3f7a39 100644 --- a/mirror-2/app/home/page.tsx +++ b/mirror-2/app/home/page.tsx @@ -12,6 +12,7 @@ import { Button } from "@/components/ui/button" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { Separator } from "@/components/ui/separator" import { ScrollArea, ScrollBar } from "@/components/ui/scroll-area" +import Link from "next/link" export const metadata: Metadata = { title: "Music App", @@ -39,15 +40,15 @@ export default function MusicPage() {
        -
        +
        -
        +
        - + {/* Music @@ -55,11 +56,11 @@ export default function MusicPage() { Live - + */}
        @@ -70,10 +71,10 @@ export default function MusicPage() {

        - Listen Now + Popular

        - Top picks for you. Updated daily. + Top picks for you.

        diff --git a/mirror-2/app/space/new/page.tsx b/mirror-2/app/space/new/page.tsx new file mode 100644 index 00000000..016bd324 --- /dev/null +++ b/mirror-2/app/space/new/page.tsx @@ -0,0 +1,28 @@ + +import { ProgressIndeterminate } from "@/components/ui/progress-indeterminate"; +import { Skeleton } from "@/components/ui/skeleton"; + +export default function NewSpacePage() { + return ( +
        + {/* Top Menu Bar */} +
        + +
        + +
        + {/* Sidebar (20% of the width) */} +
        + +
        + + {/* Main content area (80% of the width) */} +
        +
        + +
        +
        +
        +
        + ); +} diff --git a/mirror-2/components/ui/progress-indeterminate.tsx b/mirror-2/components/ui/progress-indeterminate.tsx new file mode 100644 index 00000000..d73d1536 --- /dev/null +++ b/mirror-2/components/ui/progress-indeterminate.tsx @@ -0,0 +1,5 @@ +export function ProgressIndeterminate() { + return
        +
        +
        +} diff --git a/mirror-2/components/ui/progress.tsx b/mirror-2/components/ui/progress.tsx new file mode 100644 index 00000000..c7f33b98 --- /dev/null +++ b/mirror-2/components/ui/progress.tsx @@ -0,0 +1,28 @@ +"use client" + +import * as React from "react" +import * as ProgressPrimitive from "@radix-ui/react-progress" + +import { cn } from "@/lib/utils" + +const Progress = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, value, ...props }, ref) => ( + + + +)) +Progress.displayName = ProgressPrimitive.Root.displayName + +export { Progress } diff --git a/mirror-2/package.json b/mirror-2/package.json index efd6ea77..5df1d998 100644 --- a/mirror-2/package.json +++ b/mirror-2/package.json @@ -15,6 +15,7 @@ "@radix-ui/react-dropdown-menu": "^2.1.1", "@radix-ui/react-label": "^2.1.0", "@radix-ui/react-menubar": "^1.1.2", + "@radix-ui/react-progress": "^1.1.0", "@radix-ui/react-scroll-area": "^1.2.0", "@radix-ui/react-separator": "^1.1.0", "@radix-ui/react-slot": "^1.1.0", diff --git a/mirror-2/tailwind.config.ts b/mirror-2/tailwind.config.ts index adf19df0..9fe433fb 100644 --- a/mirror-2/tailwind.config.ts +++ b/mirror-2/tailwind.config.ts @@ -74,12 +74,22 @@ const config = { to: { height: '0' } - } + }, + progress: { + '0%': { transform: ' translateX(0) scaleX(0)' }, + '40%': { transform: 'translateX(0) scaleX(0.4)' }, + '100%': { transform: 'translateX(100%) scaleX(0.5)' }, + }, }, animation: { 'accordion-down': 'accordion-down 0.2s ease-out', - 'accordion-up': 'accordion-up 0.2s ease-out' - } + 'accordion-up': 'accordion-up 0.2s ease-out', + progress: 'progress 0.65s infinite linear', + }, + + transformOrigin: { + 'left-right': '0% 50%', + } } }, plugins: [require("tailwindcss-animate")], diff --git a/mirror-2/yarn.lock b/mirror-2/yarn.lock index 661a4f47..c5e66650 100644 --- a/mirror-2/yarn.lock +++ b/mirror-2/yarn.lock @@ -456,6 +456,14 @@ dependencies: "@radix-ui/react-slot" "1.1.0" +"@radix-ui/react-progress@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-progress/-/react-progress-1.1.0.tgz#28c267885ec154fc557ec7a66cb462787312f7e2" + integrity sha512-aSzvnYpP725CROcxAOEBVZZSIQVQdHgBr2QQFKySsaD14u8dNT0batuXI+AAGDdAHfXH8rbnHmjYFqVJ21KkRg== + dependencies: + "@radix-ui/react-context" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-roving-focus@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.0.tgz#b30c59daf7e714c748805bfe11c76f96caaac35e" From 1f1bd49b66a1ecfe0c60d08c9a6c30474f6edad3 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Tue, 1 Oct 2024 18:44:25 -0700 Subject: [PATCH 094/353] supabase types + id updates to uuid --- mirror-2/app/space/new/page.tsx | 19 + mirror-2/package.json | 3 +- mirror-2/state/supabase.tsx | 27 +- .../20240929034647_create_user_profiles.sql | 4 +- .../20240929043655_spaces_assets.sql | 9 +- .../20240929062844_collaborators.sql | 2 +- .../migrations/20241001224639_scenes.sql | 2 +- .../migrations/20241001231149_entities.sql | 2 +- .../migrations/20241001232532_versions.sql | 2 +- .../migrations/20241001234418_components.sql | 2 +- mirror-2/utils/database.types.ts | 429 ++++++++++++++++++ mirror-2/utils/supabase/client.ts | 3 +- 12 files changed, 488 insertions(+), 16 deletions(-) create mode 100644 mirror-2/utils/database.types.ts diff --git a/mirror-2/app/space/new/page.tsx b/mirror-2/app/space/new/page.tsx index 016bd324..211c30d4 100644 --- a/mirror-2/app/space/new/page.tsx +++ b/mirror-2/app/space/new/page.tsx @@ -1,8 +1,27 @@ +"use client"; import { ProgressIndeterminate } from "@/components/ui/progress-indeterminate"; import { Skeleton } from "@/components/ui/skeleton"; +import { useAppDispatch } from "@/hooks/hooks"; +import { useCreateSpaceMutation } from "@/state/supabase"; +import { useEffect } from "react"; +import { useRouter } from 'next/navigation' export default function NewSpacePage() { + const [createSpace] = useCreateSpaceMutation() + const router = useRouter() + useEffect(() => { + async function create() { + const { data, error } = await createSpace({}) + if (error) { + console.error(error) + return + } + // navigate to the space + router.push(`/space/${data.id}/build`) + } + create() + }, [router]) return (
        {/* Top Menu Bar */} diff --git a/mirror-2/package.json b/mirror-2/package.json index 5df1d998..700f17bf 100644 --- a/mirror-2/package.json +++ b/mirror-2/package.json @@ -2,7 +2,8 @@ "private": true, "scripts": { "dev": "next dev & supabase start", - "reset": "supabase db reset", + "types": "npx supabase gen types --lang=typescript --local > ./utils/database.types.ts", + "reset": "supabase db reset && yarn types", "build": "next build", "start": "next start" }, diff --git a/mirror-2/state/supabase.tsx b/mirror-2/state/supabase.tsx index 5eb77664..beae9e7e 100644 --- a/mirror-2/state/supabase.tsx +++ b/mirror-2/state/supabase.tsx @@ -2,12 +2,33 @@ import { createSupabaseBrowserClient } from "@/utils/supabase/client"; import { createApi, fakeBaseQuery } from '@reduxjs/toolkit/query/react'; - export const supabaseApi = createApi({ reducerPath: 'supabaseApi', baseQuery: fakeBaseQuery(), endpoints: (builder) => ({ + createSpace: builder.mutation({ + queryFn: async () => { + const supabase = createSupabaseBrowserClient(); + const { data: { user } } = await supabase.auth.getUser() + if (!user) { + throw new Error('User not found') + } + const { data, error } = await supabase + .from("spaces") + .insert([{ + name: "New Space", + creator_user_id: user?.id, + owner_user_id: user.id + }]) + + if (error) { + return { error: error.message }; + } + return { data }; + } + }), + getSingleSpace: builder.query({ queryFn: async (spaceId) => { const supabase = createSupabaseBrowserClient(); @@ -19,7 +40,6 @@ export const supabaseApi = createApi({ .single() if (error) { - console.error('sb', error.message); return { error: error.message }; } return { data }; @@ -37,7 +57,6 @@ export const supabaseApi = createApi({ .single() if (error) { - console.error('sb', error.message); return { error: error.message }; } return { data }; @@ -49,5 +68,5 @@ export const supabaseApi = createApi({ // Export hooks for usage in functional components, which are // auto-generated based on the defined endpoints -export const { useGetSingleSpaceQuery, useUpdateSpaceMutation } = supabaseApi +export const { useGetSingleSpaceQuery, useUpdateSpaceMutation, useCreateSpaceMutation } = supabaseApi diff --git a/mirror-2/supabase/migrations/20240929034647_create_user_profiles.sql b/mirror-2/supabase/migrations/20240929034647_create_user_profiles.sql index 95cccc94..cfeb3eff 100644 --- a/mirror-2/supabase/migrations/20240929034647_create_user_profiles.sql +++ b/mirror-2/supabase/migrations/20240929034647_create_user_profiles.sql @@ -5,7 +5,7 @@ create type avatar_type as enum ( -- Create a table for public user_profiles create table user_profiles ( - id uuid references auth.users on delete cascade not null primary key, + id uuid references auth.users on delete cascade not null primary key default uuid_generate_v4(), display_name text unique not null, public_bio text, ready_player_me_url_glb text, @@ -21,7 +21,7 @@ alter table user_profiles create policy "Public user_profiles are viewable by everyone." on user_profiles for select using (true); -create policy "Users can insert their own profile." on user_profiles +create policy "Users can create their own profile." on user_profiles for insert with check ((select auth.uid()) = id); create policy "Users can update own profile." on user_profiles diff --git a/mirror-2/supabase/migrations/20240929043655_spaces_assets.sql b/mirror-2/supabase/migrations/20240929043655_spaces_assets.sql index 4aabeba1..da2ceab6 100644 --- a/mirror-2/supabase/migrations/20240929043655_spaces_assets.sql +++ b/mirror-2/supabase/migrations/20240929043655_spaces_assets.sql @@ -1,5 +1,5 @@ create table spaces ( - id uuid not null primary key, + id uuid not null primary key default uuid_generate_v4(), name text not null, owner_user_id uuid references auth.users(id) not null, -- owner is different from creator. Spaces can be transferred and we want to retain the creator creator_user_id uuid references auth.users(id) not null, @@ -22,7 +22,10 @@ using (owner_user_id = auth.uid()); create policy "Users can create their own spaces" on spaces for insert -with check (owner_user_id = auth.uid()); +with check ( + owner_user_id = auth.uid() + and creator_user_id = auth.uid() +); -- Policy for selecting spaces create policy "Users can view their own spaces" @@ -46,7 +49,7 @@ using (owner_user_id = auth.uid()); -- assets create table assets ( - id uuid not null primary key, + id uuid not null primary key default uuid_generate_v4(), owner_user_id uuid references auth.users(id) not null, -- owner is different from creator. Assets can be transferred and we want to retain the creator creator_user_id uuid references auth.users(id) not null, name text not null, diff --git a/mirror-2/supabase/migrations/20240929062844_collaborators.sql b/mirror-2/supabase/migrations/20240929062844_collaborators.sql index 91b5d1db..b214b27b 100644 --- a/mirror-2/supabase/migrations/20240929062844_collaborators.sql +++ b/mirror-2/supabase/migrations/20240929062844_collaborators.sql @@ -1,7 +1,7 @@ -- Create the space_user_collaborators table create table space_user_collaborators ( - id uuid not null primary key, + id uuid not null primary key default uuid_generate_v4(), space_id uuid references spaces(id) on delete cascade not null, user_id uuid references auth.users(id) on delete cascade not null, created_at timestamp with time zone not null default now(), diff --git a/mirror-2/supabase/migrations/20241001224639_scenes.sql b/mirror-2/supabase/migrations/20241001224639_scenes.sql index 269b675f..03715201 100644 --- a/mirror-2/supabase/migrations/20241001224639_scenes.sql +++ b/mirror-2/supabase/migrations/20241001224639_scenes.sql @@ -1,5 +1,5 @@ create table scenes ( - id uuid not null primary key, + id uuid not null primary key default uuid_generate_v4(), space_id uuid references spaces on delete cascade not null, -- delete the scene if space is deleted name text not null, created_at timestamp with time zone not null default now(), diff --git a/mirror-2/supabase/migrations/20241001231149_entities.sql b/mirror-2/supabase/migrations/20241001231149_entities.sql index b5927821..68f974eb 100644 --- a/mirror-2/supabase/migrations/20241001231149_entities.sql +++ b/mirror-2/supabase/migrations/20241001231149_entities.sql @@ -1,5 +1,5 @@ create table entities ( - id uuid not null primary key, + id uuid not null primary key default uuid_generate_v4(), name text not null, scene_id uuid references scenes on delete cascade not null, -- delete the entity if scene is deleted created_at timestamp with time zone not null default now(), diff --git a/mirror-2/supabase/migrations/20241001232532_versions.sql b/mirror-2/supabase/migrations/20241001232532_versions.sql index ecd44761..398e112e 100644 --- a/mirror-2/supabase/migrations/20241001232532_versions.sql +++ b/mirror-2/supabase/migrations/20241001232532_versions.sql @@ -1,5 +1,5 @@ create table space_versions ( - id uuid not null primary key, + id uuid not null primary key default uuid_generate_v4(), name text not null, space_id uuid references spaces on delete cascade not null, -- delete the version if space is deleted created_at timestamp with time zone not null default now(), diff --git a/mirror-2/supabase/migrations/20241001234418_components.sql b/mirror-2/supabase/migrations/20241001234418_components.sql index 654f69d7..c8bd6acb 100644 --- a/mirror-2/supabase/migrations/20241001234418_components.sql +++ b/mirror-2/supabase/migrations/20241001234418_components.sql @@ -1,5 +1,5 @@ create table components ( - id uuid not null primary key, + id uuid not null primary key default uuid_generate_v4(), name text not null, entity_id uuid references entities on delete cascade not null, -- delete the component if entity is deleted created_at timestamp with time zone not null default now(), diff --git a/mirror-2/utils/database.types.ts b/mirror-2/utils/database.types.ts new file mode 100644 index 00000000..bdb4f97e --- /dev/null +++ b/mirror-2/utils/database.types.ts @@ -0,0 +1,429 @@ +export type Json = + | string + | number + | boolean + | null + | { [key: string]: Json | undefined } + | Json[] + +export type Database = { + graphql_public: { + Tables: { + [_ in never]: never + } + Views: { + [_ in never]: never + } + Functions: { + graphql: { + Args: { + operationName?: string + query?: string + variables?: Json + extensions?: Json + } + Returns: Json + } + } + Enums: { + [_ in never]: never + } + CompositeTypes: { + [_ in never]: never + } + } + public: { + Tables: { + assets: { + Row: { + asset_url: string + created_at: string + creator_user_id: string + id: string + name: string + owner_user_id: string + updated_at: string + } + Insert: { + asset_url: string + created_at?: string + creator_user_id: string + id?: string + name: string + owner_user_id: string + updated_at?: string + } + Update: { + asset_url?: string + created_at?: string + creator_user_id?: string + id?: string + name?: string + owner_user_id?: string + updated_at?: string + } + Relationships: [ + { + foreignKeyName: "assets_creator_user_id_fkey" + columns: ["creator_user_id"] + isOneToOne: false + referencedRelation: "users" + referencedColumns: ["id"] + }, + { + foreignKeyName: "assets_owner_user_id_fkey" + columns: ["owner_user_id"] + isOneToOne: false + referencedRelation: "users" + referencedColumns: ["id"] + }, + ] + } + components: { + Row: { + created_at: string + entity_id: string + id: string + name: string + updated_at: string + } + Insert: { + created_at?: string + entity_id: string + id?: string + name: string + updated_at?: string + } + Update: { + created_at?: string + entity_id?: string + id?: string + name?: string + updated_at?: string + } + Relationships: [ + { + foreignKeyName: "components_entity_id_fkey" + columns: ["entity_id"] + isOneToOne: false + referencedRelation: "entities" + referencedColumns: ["id"] + }, + ] + } + entities: { + Row: { + created_at: string + id: string + name: string + scene_id: string + updated_at: string + } + Insert: { + created_at?: string + id?: string + name: string + scene_id: string + updated_at?: string + } + Update: { + created_at?: string + id?: string + name?: string + scene_id?: string + updated_at?: string + } + Relationships: [ + { + foreignKeyName: "entities_scene_id_fkey" + columns: ["scene_id"] + isOneToOne: false + referencedRelation: "scenes" + referencedColumns: ["id"] + }, + ] + } + scenes: { + Row: { + created_at: string + id: string + name: string + space_id: string + updated_at: string + } + Insert: { + created_at?: string + id?: string + name: string + space_id: string + updated_at?: string + } + Update: { + created_at?: string + id?: string + name?: string + space_id?: string + updated_at?: string + } + Relationships: [ + { + foreignKeyName: "scenes_space_id_fkey" + columns: ["space_id"] + isOneToOne: false + referencedRelation: "spaces" + referencedColumns: ["id"] + }, + ] + } + space_user_collaborators: { + Row: { + created_at: string + id: string + space_id: string + user_id: string + } + Insert: { + created_at?: string + id?: string + space_id: string + user_id: string + } + Update: { + created_at?: string + id?: string + space_id?: string + user_id?: string + } + Relationships: [ + { + foreignKeyName: "space_user_collaborators_space_id_fkey" + columns: ["space_id"] + isOneToOne: false + referencedRelation: "spaces" + referencedColumns: ["id"] + }, + { + foreignKeyName: "space_user_collaborators_user_id_fkey" + columns: ["user_id"] + isOneToOne: false + referencedRelation: "users" + referencedColumns: ["id"] + }, + ] + } + space_versions: { + Row: { + created_at: string + id: string + name: string + space_id: string + updated_at: string + } + Insert: { + created_at?: string + id?: string + name: string + space_id: string + updated_at?: string + } + Update: { + created_at?: string + id?: string + name?: string + space_id?: string + updated_at?: string + } + Relationships: [ + { + foreignKeyName: "space_versions_space_id_fkey" + columns: ["space_id"] + isOneToOne: false + referencedRelation: "spaces" + referencedColumns: ["id"] + }, + ] + } + spaces: { + Row: { + created_at: string + creator_user_id: string + id: string + name: string + owner_user_id: string + updated_at: string + } + Insert: { + created_at?: string + creator_user_id: string + id?: string + name: string + owner_user_id: string + updated_at?: string + } + Update: { + created_at?: string + creator_user_id?: string + id?: string + name?: string + owner_user_id?: string + updated_at?: string + } + Relationships: [ + { + foreignKeyName: "spaces_creator_user_id_fkey" + columns: ["creator_user_id"] + isOneToOne: false + referencedRelation: "users" + referencedColumns: ["id"] + }, + { + foreignKeyName: "spaces_owner_user_id_fkey" + columns: ["owner_user_id"] + isOneToOne: false + referencedRelation: "users" + referencedColumns: ["id"] + }, + ] + } + user_profiles: { + Row: { + avatar_type: Database["public"]["Enums"]["avatar_type"] | null + created_at: string + display_name: string + id: string + public_bio: string | null + ready_player_me_url_glb: string | null + updated_at: string + } + Insert: { + avatar_type?: Database["public"]["Enums"]["avatar_type"] | null + created_at?: string + display_name: string + id?: string + public_bio?: string | null + ready_player_me_url_glb?: string | null + updated_at?: string + } + Update: { + avatar_type?: Database["public"]["Enums"]["avatar_type"] | null + created_at?: string + display_name?: string + id?: string + public_bio?: string | null + ready_player_me_url_glb?: string | null + updated_at?: string + } + Relationships: [ + { + foreignKeyName: "user_profiles_id_fkey" + columns: ["id"] + isOneToOne: true + referencedRelation: "users" + referencedColumns: ["id"] + }, + ] + } + } + Views: { + [_ in never]: never + } + Functions: { + create_user: { + Args: { + email: string + password: string + } + Returns: string + } + } + Enums: { + avatar_type: "ready_player_me" + } + CompositeTypes: { + [_ in never]: never + } + } +} + +type PublicSchema = Database[Extract] + +export type Tables< + PublicTableNameOrOptions extends + | keyof (PublicSchema["Tables"] & PublicSchema["Views"]) + | { schema: keyof Database }, + TableName extends PublicTableNameOrOptions extends { schema: keyof Database } + ? keyof (Database[PublicTableNameOrOptions["schema"]]["Tables"] & + Database[PublicTableNameOrOptions["schema"]]["Views"]) + : never = never, +> = PublicTableNameOrOptions extends { schema: keyof Database } + ? (Database[PublicTableNameOrOptions["schema"]]["Tables"] & + Database[PublicTableNameOrOptions["schema"]]["Views"])[TableName] extends { + Row: infer R + } + ? R + : never + : PublicTableNameOrOptions extends keyof (PublicSchema["Tables"] & + PublicSchema["Views"]) + ? (PublicSchema["Tables"] & + PublicSchema["Views"])[PublicTableNameOrOptions] extends { + Row: infer R + } + ? R + : never + : never + +export type TablesInsert< + PublicTableNameOrOptions extends + | keyof PublicSchema["Tables"] + | { schema: keyof Database }, + TableName extends PublicTableNameOrOptions extends { schema: keyof Database } + ? keyof Database[PublicTableNameOrOptions["schema"]]["Tables"] + : never = never, +> = PublicTableNameOrOptions extends { schema: keyof Database } + ? Database[PublicTableNameOrOptions["schema"]]["Tables"][TableName] extends { + Insert: infer I + } + ? I + : never + : PublicTableNameOrOptions extends keyof PublicSchema["Tables"] + ? PublicSchema["Tables"][PublicTableNameOrOptions] extends { + Insert: infer I + } + ? I + : never + : never + +export type TablesUpdate< + PublicTableNameOrOptions extends + | keyof PublicSchema["Tables"] + | { schema: keyof Database }, + TableName extends PublicTableNameOrOptions extends { schema: keyof Database } + ? keyof Database[PublicTableNameOrOptions["schema"]]["Tables"] + : never = never, +> = PublicTableNameOrOptions extends { schema: keyof Database } + ? Database[PublicTableNameOrOptions["schema"]]["Tables"][TableName] extends { + Update: infer U + } + ? U + : never + : PublicTableNameOrOptions extends keyof PublicSchema["Tables"] + ? PublicSchema["Tables"][PublicTableNameOrOptions] extends { + Update: infer U + } + ? U + : never + : never + +export type Enums< + PublicEnumNameOrOptions extends + | keyof PublicSchema["Enums"] + | { schema: keyof Database }, + EnumName extends PublicEnumNameOrOptions extends { schema: keyof Database } + ? keyof Database[PublicEnumNameOrOptions["schema"]]["Enums"] + : never = never, +> = PublicEnumNameOrOptions extends { schema: keyof Database } + ? Database[PublicEnumNameOrOptions["schema"]]["Enums"][EnumName] + : PublicEnumNameOrOptions extends keyof PublicSchema["Enums"] + ? PublicSchema["Enums"][PublicEnumNameOrOptions] + : never + diff --git a/mirror-2/utils/supabase/client.ts b/mirror-2/utils/supabase/client.ts index 1ab3f620..470b851d 100644 --- a/mirror-2/utils/supabase/client.ts +++ b/mirror-2/utils/supabase/client.ts @@ -1,7 +1,8 @@ +import { Database } from "@/utils/database.types"; import { createBrowserClient } from "@supabase/ssr"; export const createSupabaseBrowserClient = () => - createBrowserClient( + createBrowserClient( process.env.NEXT_PUBLIC_SUPABASE_URL!, process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!, ); From 3de1f59314d6112d86eb276edfe7b4b2bb0a7cbe Mon Sep 17 00:00:00 2001 From: Kluskey Date: Tue, 1 Oct 2024 19:09:39 -0700 Subject: [PATCH 095/353] add name gen --- mirror-2/actions/name-generator.ts | 18 ++++++++++++++++++ mirror-2/package.json | 1 + mirror-2/state/supabase.tsx | 5 ++++- mirror-2/yarn.lock | 5 +++++ 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 mirror-2/actions/name-generator.ts diff --git a/mirror-2/actions/name-generator.ts b/mirror-2/actions/name-generator.ts new file mode 100644 index 00000000..50a03946 --- /dev/null +++ b/mirror-2/actions/name-generator.ts @@ -0,0 +1,18 @@ +"use server" +import { uniqueNamesGenerator, Config, adjectives, colors, animals } from 'unique-names-generator'; + +const customConfig: Config = { + dictionaries: [adjectives, animals], + separator: ' ', + length: 2, + style: 'capital' +}; + +const randomName: string = uniqueNamesGenerator({ + dictionaries: [adjectives, animals] +}); + + +export async function generateSpaceName() { +return uniqueNamesGenerator(customConfig); +} diff --git a/mirror-2/package.json b/mirror-2/package.json index 700f17bf..38cd6855 100644 --- a/mirror-2/package.json +++ b/mirror-2/package.json @@ -39,6 +39,7 @@ "react-redux": "^9.1.2", "react-resizable-panels": "^2.1.4", "server-only": "^0.0.1", + "unique-names-generator": "^4.7.1", "use-sound": "^4.0.3", "zod": "^3.23.8" }, diff --git a/mirror-2/state/supabase.tsx b/mirror-2/state/supabase.tsx index beae9e7e..b3c277c2 100644 --- a/mirror-2/state/supabase.tsx +++ b/mirror-2/state/supabase.tsx @@ -1,4 +1,5 @@ "use client"; // we want to use client-side only because supabase tracks auth clientside +import { generateSpaceName } from "@/actions/name-generator"; import { createSupabaseBrowserClient } from "@/utils/supabase/client"; import { createApi, fakeBaseQuery } from '@reduxjs/toolkit/query/react'; @@ -17,10 +18,12 @@ export const supabaseApi = createApi({ const { data, error } = await supabase .from("spaces") .insert([{ - name: "New Space", + name: await generateSpaceName(), creator_user_id: user?.id, owner_user_id: user.id }]) + .select('*') + .single() if (error) { return { error: error.message }; diff --git a/mirror-2/yarn.lock b/mirror-2/yarn.lock index c5e66650..e1e20651 100644 --- a/mirror-2/yarn.lock +++ b/mirror-2/yarn.lock @@ -1778,6 +1778,11 @@ undici-types@~6.19.2: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== +unique-names-generator@^4.7.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/unique-names-generator/-/unique-names-generator-4.7.1.tgz#966407b12ba97f618928f77322cfac8c80df5597" + integrity sha512-lMx9dX+KRmG8sq6gulYYpKWZc9RlGsgBR6aoO8Qsm3qvkSJ+3rAymr+TnV8EDMrIrwuFJ4kruzMWM/OpYzPoow== + update-browserslist-db@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" From 5b63ddefe4a7de6fc700aa2361d66597e421f1a1 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Tue, 1 Oct 2024 19:11:56 -0700 Subject: [PATCH 096/353] browser history --- mirror-2/app/space/new/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mirror-2/app/space/new/page.tsx b/mirror-2/app/space/new/page.tsx index 211c30d4..8ec94c1a 100644 --- a/mirror-2/app/space/new/page.tsx +++ b/mirror-2/app/space/new/page.tsx @@ -18,7 +18,7 @@ export default function NewSpacePage() { return } // navigate to the space - router.push(`/space/${data.id}/build`) + router.replace(`/space/${data.id}/build`) } create() }, [router]) From b4d99dd8a2b6ebc9feffbf75f445881b1ed2b36a Mon Sep 17 00:00:00 2001 From: Kluskey Date: Tue, 1 Oct 2024 19:50:39 -0700 Subject: [PATCH 097/353] add redir if logged in --- mirror-2/actions/auth.ts | 2 +- .../app/(auth-pages)/create-account/page.tsx | 2 + mirror-2/app/(auth-pages)/login/page.tsx | 3 ++ mirror-2/app/layout.client.tsx | 20 ++++++-- mirror-2/hooks/auth.tsx | 46 +++++++++++++++++++ mirror-2/state/local.tsx | 26 +++++++++-- 6 files changed, 88 insertions(+), 11 deletions(-) create mode 100644 mirror-2/hooks/auth.tsx diff --git a/mirror-2/actions/auth.ts b/mirror-2/actions/auth.ts index 5794cd41..458fa9df 100644 --- a/mirror-2/actions/auth.ts +++ b/mirror-2/actions/auth.ts @@ -50,7 +50,7 @@ export const loginAction = async (formData: FormData) => { return encodedRedirect("error", "/login", error.message); } - return redirect("/protected"); + return redirect("/home"); }; export const forgotPasswordAction = async (formData: FormData) => { diff --git a/mirror-2/app/(auth-pages)/create-account/page.tsx b/mirror-2/app/(auth-pages)/create-account/page.tsx index b358bff4..aee6a41b 100644 --- a/mirror-2/app/(auth-pages)/create-account/page.tsx +++ b/mirror-2/app/(auth-pages)/create-account/page.tsx @@ -4,10 +4,12 @@ import { SubmitButton } from "@/components/submit-button"; import { Card, CardHeader, CardTitle, CardContent, CardFooter } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; +import { useRedirectToHomeIfSignedIn } from "@/hooks/auth"; import { AppLogoImageMedium } from "@/lib/theme-service"; import Link from "next/link"; export default function CreateAccount({ searchParams }: { searchParams: Message }) { + useRedirectToHomeIfSignedIn() return (
        diff --git a/mirror-2/app/(auth-pages)/login/page.tsx b/mirror-2/app/(auth-pages)/login/page.tsx index 1470e441..4cbcdd81 100644 --- a/mirror-2/app/(auth-pages)/login/page.tsx +++ b/mirror-2/app/(auth-pages)/login/page.tsx @@ -5,11 +5,14 @@ import { SubmitButton } from "@/components/submit-button"; import { Card, CardHeader, CardTitle, CardContent, CardFooter } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; +import { useRedirectToHomeIfSignedIn } from "@/hooks/auth"; import { AppLogoImageMedium } from "@/lib/theme-service"; import Link from "next/link"; import { useRef } from "react"; export default function Login({ searchParams }: { searchParams: Message }) { + useRedirectToHomeIfSignedIn() + const isDevelopment = process.env.NODE_ENV === 'development'; // References for email and password fields diff --git a/mirror-2/app/layout.client.tsx b/mirror-2/app/layout.client.tsx index f6313b30..1daef624 100644 --- a/mirror-2/app/layout.client.tsx +++ b/mirror-2/app/layout.client.tsx @@ -1,6 +1,7 @@ import { store } from "@/state/store"; import { Provider } from 'react-redux' import { ThemeProvider } from "next-themes"; +import { useSetupAuthEvents } from "@/hooks/auth"; export default function ClientLayout({ children }) { return ( @@ -11,12 +12,21 @@ export default function ClientLayout({ children }) { enableSystem disableTransitionOnChange > -
        -
        - {children} -
        -
        + ) } + +// separate component here because auth setup needs to be within the store +export function AuthLayout({ children }) { + useSetupAuthEvents() + return ( +
        +
        + {children} +
        +
        + + ) +} diff --git a/mirror-2/hooks/auth.tsx b/mirror-2/hooks/auth.tsx new file mode 100644 index 00000000..f461464c --- /dev/null +++ b/mirror-2/hooks/auth.tsx @@ -0,0 +1,46 @@ +import { useAppDispatch, useAppSelector } from "@/hooks/hooks"; +import { updateLocalUserState, clearLocalUserState } from "@/state/local"; +import { createSupabaseBrowserClient } from "@/utils/supabase/client"; +import { useRouter } from "next/navigation"; + +export function useSetupAuthEvents() { + const supabase = createSupabaseBrowserClient(); + const dispatch = useAppDispatch(); + + const { data: authListener } = supabase.auth.onAuthStateChange((event, session) => { + console.log("auth", event, session) + + if (event === 'INITIAL_SESSION') { + // handle initial session + } else if (event === 'SIGNED_IN') { + // handle sign in event + if (session?.user) { + console.log("updateLocalUserState", event, session?.user) + const { id, email, is_anonymous } = session.user + dispatch(updateLocalUserState({ id, email, is_anonymous })) + } + } else if (event === 'SIGNED_OUT') { + // handle sign out event + clearLocalUserState() + } else if (event === 'PASSWORD_RECOVERY') { + // handle password recovery event + } else if (event === 'TOKEN_REFRESHED') { + // handle token refreshed event + } else if (event === 'USER_UPDATED') { + // handle user updated event + } + }) + + // Cleanup the subscription when the component is unmounted + return () => { + authListener.subscription.unsubscribe() + }; +} + +export function useRedirectToHomeIfSignedIn() { + const router = useRouter() + const id = useAppSelector(state => state.local?.user?.id); + if (id) { + router.replace("/home") + } +} diff --git a/mirror-2/state/local.tsx b/mirror-2/state/local.tsx index 8c63aef3..7e3ffd7a 100644 --- a/mirror-2/state/local.tsx +++ b/mirror-2/state/local.tsx @@ -1,15 +1,23 @@ import { RootState } from '@/state/store' import type { PayloadAction } from '@reduxjs/toolkit' import { createSlice } from '@reduxjs/toolkit' +import { createSupabaseBrowserClient } from "@/utils/supabase/client"; export type ControlBarView = "assets" | "scenes" | "code" | "database" | "versions" | "settings" -interface CounterState { + +interface LocalUserState { + id: string, + email?: string, + is_anonymous?: boolean, +} +interface LocalState { uiSoundsCanPlay: boolean - controlBarCurrentView: ControlBarView + controlBarCurrentView: ControlBarView, + user?: LocalUserState } // Define the initial state using that type -const initialState: CounterState = { +const initialState: LocalState = { uiSoundsCanPlay: true, controlBarCurrentView: "assets" } @@ -27,14 +35,22 @@ export const localSlice = createSlice({ }, setControlBarCurrentView: (state, action: PayloadAction) => { state.controlBarCurrentView = action.payload - } + }, + updateLocalUserState: (state, action: PayloadAction) => { + state.user = action.payload + }, + clearLocalUserState: (state) => { + state.user = undefined + }, }, }) -export const { turnOffUiSounds, turnOnUiSounds, setControlBarCurrentView } = localSlice.actions + +export const { turnOffUiSounds, turnOnUiSounds, setControlBarCurrentView, updateLocalUserState, clearLocalUserState } = localSlice.actions // Other code such as selectors can use the imported `RootState` type export const selectUiSoundsCanPlay = (state: RootState) => state.local.uiSoundsCanPlay export const selectControlBarCurrentView = (state: RootState) => state.local.controlBarCurrentView export default localSlice.reducer + From ee2f50439f55a78ddb13acdf966231a08462b143 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Tue, 1 Oct 2024 20:48:32 -0700 Subject: [PATCH 098/353] navbar clean up --- mirror-2/.env.example | 1 + mirror-2/actions/auth.ts | 8 +--- mirror-2/app/protected/blank-redirect.tsx | 8 ++++ mirror-2/app/protected/page.tsx | 27 +++--------- .../app/space/[spaceId]/build/top-navbar.tsx | 25 ++++++----- mirror-2/hooks/auth.tsx | 44 ++++++++++++++++--- mirror-2/state/local.tsx | 11 ++++- 7 files changed, 77 insertions(+), 47 deletions(-) create mode 100644 mirror-2/app/protected/blank-redirect.tsx diff --git a/mirror-2/.env.example b/mirror-2/.env.example index 83a9dc8b..df846c90 100644 --- a/mirror-2/.env.example +++ b/mirror-2/.env.example @@ -3,3 +3,4 @@ NEXT_PUBLIC_SUPABASE_URL=http://127.0.0.1:54321 NEXT_PUBLIC_SUPABASE_ANON_KEY=SUPABASE_CLIENT_API_KEY NEXT_PUBLIC_APP_NAME="The Mirror" # only use The Mirror or Reflekt +NEXT_PUBLIC_DISCORD_INVITE_URL=https://themirror.space/discord diff --git a/mirror-2/actions/auth.ts b/mirror-2/actions/auth.ts index 458fa9df..b66834d4 100644 --- a/mirror-2/actions/auth.ts +++ b/mirror-2/actions/auth.ts @@ -1,7 +1,7 @@ "use server"; -import { encodedRedirect } from "@/utils/utils"; import { createClient } from "@/utils/supabase/server"; +import { encodedRedirect } from "@/utils/utils"; import { headers } from "next/headers"; import { redirect } from "next/navigation"; @@ -123,9 +123,3 @@ export const resetPasswordAction = async (formData: FormData) => { encodedRedirect("success", "/protected/reset-password", "Password updated"); }; - -export const signOutAction = async () => { - const supabase = createClient(); - await supabase.auth.signOut(); - return redirect("/login"); -}; diff --git a/mirror-2/app/protected/blank-redirect.tsx b/mirror-2/app/protected/blank-redirect.tsx new file mode 100644 index 00000000..53e36bbb --- /dev/null +++ b/mirror-2/app/protected/blank-redirect.tsx @@ -0,0 +1,8 @@ +"use client" + +import { useRedirectToHomeIfSignedIn } from "@/hooks/auth" + +export function BlankRedirect() { + useRedirectToHomeIfSignedIn() + return <> +} diff --git a/mirror-2/app/protected/page.tsx b/mirror-2/app/protected/page.tsx index 8764cf8d..8459238c 100644 --- a/mirror-2/app/protected/page.tsx +++ b/mirror-2/app/protected/page.tsx @@ -1,9 +1,10 @@ -import FetchDataSteps from "@/components/tutorial/fetch-data-steps"; + +import { BlankRedirect } from "@/app/protected/blank-redirect"; import { createClient } from "@/utils/supabase/server"; -import { InfoIcon } from "lucide-react"; import { redirect } from "next/navigation"; export default async function ProtectedPage() { + const supabase = createClient(); const { @@ -15,24 +16,8 @@ export default async function ProtectedPage() { } return ( -
        -
        -
        - - This is a protected page that you can only see as an authenticated - user -
        -
        -
        -

        Your user details

        -
        -          {JSON.stringify(user, null, 2)}
        -        
        -
        -
        -

        Next steps

        - -
        -
        + // delete this page eventually. it's here from boilerplate auth that users server side + ); } + diff --git a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx index 0b57eddb..10c03f77 100644 --- a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx +++ b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx @@ -1,27 +1,30 @@ +"use client" import { EditableSpaceName } from "@/components/editable-space-name"; import { ThemeSwitcher } from "@/components/theme-switcher"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"; -import { Input } from "@/components/ui/input"; -import { Search, CircleUser } from "lucide-react"; +import { signOutAction } from "@/hooks/auth"; +import { useAppSelector } from "@/hooks/hooks"; +import { selectLocalUserState } from "@/state/local"; +import { CircleUser } from "lucide-react"; import Link from "next/link"; -export async function TopNavbar() { - +export function TopNavbar() { + const localUserState = useAppSelector(selectLocalUserState) return (
        - + Create Account + } - My Account + {localUserState?.email || "Welcome"} - Discord + {process.env.NEXT_PUBLIC_DISCORD_INVITE_URL && Chat on Discord} - Logout + signOutAction()} className="cursor-pointer"> + Logout +
        diff --git a/mirror-2/hooks/auth.tsx b/mirror-2/hooks/auth.tsx index f461464c..c947bd3f 100644 --- a/mirror-2/hooks/auth.tsx +++ b/mirror-2/hooks/auth.tsx @@ -1,27 +1,56 @@ import { useAppDispatch, useAppSelector } from "@/hooks/hooks"; import { updateLocalUserState, clearLocalUserState } from "@/state/local"; +import { store } from "@/state/store"; import { createSupabaseBrowserClient } from "@/utils/supabase/client"; import { useRouter } from "next/navigation"; +import { useEffect } from "react"; + +export const signOutAction = async () => { + const supabase = createSupabaseBrowserClient(); + await supabase.auth.signOut(); + store.dispatch(clearLocalUserState()) + window.location.href = "/login" +}; + export function useSetupAuthEvents() { const supabase = createSupabaseBrowserClient(); const dispatch = useAppDispatch(); - const { data: authListener } = supabase.auth.onAuthStateChange((event, session) => { - console.log("auth", event, session) + // if no user, clear local state + useEffect(() => { + async function clearStateIfNoUser() { + const { + data: { user }, + } = await supabase.auth.getUser(); + if (!user) { + dispatch(clearLocalUserState()) + } + } + clearStateIfNoUser() + }, []) - if (event === 'INITIAL_SESSION') { - // handle initial session - } else if (event === 'SIGNED_IN') { - // handle sign in event + const { data: authListener } = supabase.auth.onAuthStateChange((event, session) => { + function handleLogin() { if (session?.user) { + console.log('auth: DID fire') console.log("updateLocalUserState", event, session?.user) const { id, email, is_anonymous } = session.user dispatch(updateLocalUserState({ id, email, is_anonymous })) + } else { + console.log('auth: did not fire') } + } + console.log("auth", event, session) + if (event === 'INITIAL_SESSION') { + // handle initial session + handleLogin() + } else if (event === 'SIGNED_IN') { + // handle sign in event + handleLogin() } else if (event === 'SIGNED_OUT') { // handle sign out event - clearLocalUserState() + dispatch(clearLocalUserState()) } else if (event === 'PASSWORD_RECOVERY') { // handle password recovery event } else if (event === 'TOKEN_REFRESHED') { @@ -40,6 +69,7 @@ export function useSetupAuthEvents() { export function useRedirectToHomeIfSignedIn() { const router = useRouter() const id = useAppSelector(state => state.local?.user?.id); + console.log('auth router check', id) if (id) { router.replace("/home") } diff --git a/mirror-2/state/local.tsx b/mirror-2/state/local.tsx index 7e3ffd7a..5abb9389 100644 --- a/mirror-2/state/local.tsx +++ b/mirror-2/state/local.tsx @@ -19,7 +19,13 @@ interface LocalState { // Define the initial state using that type const initialState: LocalState = { uiSoundsCanPlay: true, - controlBarCurrentView: "assets" + controlBarCurrentView: "assets", + user: { + // this dummy state will be removed by the logic in auth.tsx, but we need initial data for SSR purposes + email: "", + id: "", + is_anonymous: false + } } export const localSlice = createSlice({ @@ -41,7 +47,7 @@ export const localSlice = createSlice({ }, clearLocalUserState: (state) => { state.user = undefined - }, + } }, }) @@ -51,6 +57,7 @@ export const { turnOffUiSounds, turnOnUiSounds, setControlBarCurrentView, update // Other code such as selectors can use the imported `RootState` type export const selectUiSoundsCanPlay = (state: RootState) => state.local.uiSoundsCanPlay export const selectControlBarCurrentView = (state: RootState) => state.local.controlBarCurrentView +export const selectLocalUserState = (state: RootState) => state.local.user export default localSlice.reducer From 73b5c6274d23347383d880bc21bf8c18564e5220 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Tue, 1 Oct 2024 20:50:15 -0700 Subject: [PATCH 099/353] clean create space button --- mirror-2/app/home/page.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mirror-2/app/home/page.tsx b/mirror-2/app/home/page.tsx index 3a3f7a39..4437febd 100644 --- a/mirror-2/app/home/page.tsx +++ b/mirror-2/app/home/page.tsx @@ -58,9 +58,8 @@ export default function MusicPage() { */}
        -
        From f0c14347d22dc2c6d637d6585125fb48d12c79b1 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Tue, 1 Oct 2024 21:04:39 -0700 Subject: [PATCH 100/353] clean + metadata --- mirror-2/app/home/components/sidebar.tsx | 160 ++--------------------- mirror-2/app/home/page.tsx | 11 +- mirror-2/app/layout.client.tsx | 1 + mirror-2/app/layout.tsx | 9 +- mirror-2/lib/theme-service.tsx | 16 ++- 5 files changed, 36 insertions(+), 161 deletions(-) diff --git a/mirror-2/app/home/components/sidebar.tsx b/mirror-2/app/home/components/sidebar.tsx index 1347c2b9..d2fb7d5e 100644 --- a/mirror-2/app/home/components/sidebar.tsx +++ b/mirror-2/app/home/components/sidebar.tsx @@ -4,6 +4,8 @@ import { cn } from "@/lib/utils" import { Playlist } from "../data/playlists" import { Button } from "@/components/ui/button" import { ScrollArea } from "@/components/ui/scroll-area" +import Link from "next/link" +import { PlusCircleIcon } from "lucide-react" interface SidebarProps extends React.HTMLAttributes { playlists: Playlist[] @@ -32,10 +34,10 @@ export function Sidebar({ className, playlists }: SidebarProps) { - Listen Now + My Spaces - - } +
        -
        -

        - Library -

        -
        - - - - - -
        -
        -
        -

        - Playlists -

        - -
        - {playlists?.map((playlist, i) => ( - - ))} -
        -
        -
        +
        ) diff --git a/mirror-2/app/home/page.tsx b/mirror-2/app/home/page.tsx index 4437febd..f92ecfce 100644 --- a/mirror-2/app/home/page.tsx +++ b/mirror-2/app/home/page.tsx @@ -1,4 +1,3 @@ -import { Metadata } from "next" import Image from "next/image" import { AlbumArtwork } from "./components/album-artwork" @@ -13,11 +12,9 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { Separator } from "@/components/ui/separator" import { ScrollArea, ScrollBar } from "@/components/ui/scroll-area" import Link from "next/link" +import { appDescription, appName } from "@/lib/theme-service" +import { Metadata } from "next" -export const metadata: Metadata = { - title: "Music App", - description: "Example music app using the components.", -} export default function MusicPage() { return ( @@ -58,8 +55,8 @@ export default function MusicPage() { */}
        -
        diff --git a/mirror-2/app/layout.client.tsx b/mirror-2/app/layout.client.tsx index 1daef624..806de36e 100644 --- a/mirror-2/app/layout.client.tsx +++ b/mirror-2/app/layout.client.tsx @@ -1,3 +1,4 @@ +"use client" import { store } from "@/state/store"; import { Provider } from 'react-redux' import { ThemeProvider } from "next-themes"; diff --git a/mirror-2/app/layout.tsx b/mirror-2/app/layout.tsx index 8f5a9794..ad149179 100644 --- a/mirror-2/app/layout.tsx +++ b/mirror-2/app/layout.tsx @@ -1,8 +1,13 @@ -"use client" + import ClientLayout from "@/app/layout.client"; import { GeistSans } from "geist/font/sans"; import "./globals.css"; - +import { Metadata } from "next"; +import { appName, appDescription } from "@/lib/theme-service"; +export const metadata: Metadata = { + title: appName(), + description: appDescription(), +} export default function RootLayout({ children, }) { diff --git a/mirror-2/lib/theme-service.tsx b/mirror-2/lib/theme-service.tsx index 31e6054e..1d712464 100644 --- a/mirror-2/lib/theme-service.tsx +++ b/mirror-2/lib/theme-service.tsx @@ -1,15 +1,27 @@ +import { Metadata } from 'next'; import Image from 'next/image' // function that returns the app name by checking the environment variable export const appName = () => { const appName = process.env.NEXT_PUBLIC_APP_NAME; if (appName === "Reflekt") { - return <>Reflekt; + return "Reflekt" } else { - return <>The Mirror; + return "The Mirror" } }; +export const appDescription = () => { + const appName = process.env.NEXT_PUBLIC_APP_NAME; + if (appName === "Reflekt") { + return "Web3 Game Engine" + } else { + return "All-in-One Game Development Platform" + } +}; + + + interface ImageProps { width?: number height?: number From 4fbe6d66b5ce9b63f234fa51ef1145423cf1c694 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Tue, 1 Oct 2024 22:16:54 -0700 Subject: [PATCH 101/353] clean home --- mirror-2/app/home/components/sidebar.tsx | 37 ++++-------------------- mirror-2/app/home/page.tsx | 15 +++++----- mirror-2/app/layout.tsx | 9 ++++-- 3 files changed, 20 insertions(+), 41 deletions(-) diff --git a/mirror-2/app/home/components/sidebar.tsx b/mirror-2/app/home/components/sidebar.tsx index d2fb7d5e..005b5318 100644 --- a/mirror-2/app/home/components/sidebar.tsx +++ b/mirror-2/app/home/components/sidebar.tsx @@ -5,7 +5,7 @@ import { Playlist } from "../data/playlists" import { Button } from "@/components/ui/button" import { ScrollArea } from "@/components/ui/scroll-area" import Link from "next/link" -import { PlusCircleIcon } from "lucide-react" +import { Axis3D, Gamepad2, PlusCircleIcon } from "lucide-react" interface SidebarProps extends React.HTMLAttributes { playlists: Playlist[] @@ -16,42 +16,17 @@ export function Sidebar({ className, playlists }: SidebarProps) {
        -

        +

        Discover

        {process.env.NEXT_PUBLIC_DISCORD_INVITE_URL && } -
        +

        - Popular + The Next Era of The Mirror

        - Top picks for you. + Weclome, let's build.

        +
        + +
        diff --git a/mirror-2/app/layout.tsx b/mirror-2/app/layout.tsx index ad149179..7d8aa5d8 100644 --- a/mirror-2/app/layout.tsx +++ b/mirror-2/app/layout.tsx @@ -1,6 +1,5 @@ - import ClientLayout from "@/app/layout.client"; -import { GeistSans } from "geist/font/sans"; +import { Montserrat } from 'next/font/google' import "./globals.css"; import { Metadata } from "next"; import { appName, appDescription } from "@/lib/theme-service"; @@ -8,11 +7,15 @@ export const metadata: Metadata = { title: appName(), description: appDescription(), } +const montserrat = Montserrat({ + subsets: ['latin'], + display: 'swap', +}) export default function RootLayout({ children, }) { return ( - + {children} From a204129291106a70b80658f8778c323388e6f8f9 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Tue, 1 Oct 2024 22:25:45 -0700 Subject: [PATCH 102/353] home --- mirror-2/app/home/page.tsx | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/mirror-2/app/home/page.tsx b/mirror-2/app/home/page.tsx index fbbe4a46..a2b317e7 100644 --- a/mirror-2/app/home/page.tsx +++ b/mirror-2/app/home/page.tsx @@ -36,7 +36,7 @@ export default function MusicPage() { />
        - + {/* */}
        @@ -45,16 +45,6 @@ export default function MusicPage() {
        - {/* - - Music - - Podcasts - - Live - - */} -

        - Made for You + Play

        - Your personal playlists. Updated daily. + Join published Spaces that other builders have created.

        From ffc662ae53d0418d1d375fbaff496b8a6cf590c8 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Tue, 1 Oct 2024 22:47:33 -0700 Subject: [PATCH 103/353] clean, favicon --- mirror-2/app/home/page.tsx | 2 +- mirror-2/app/layout.tsx | 5 ++++- mirror-2/lib/theme-service.tsx | 8 ++++++++ mirror-2/public/favicon-reflekt.ico | Bin 0 -> 2118 bytes .../space/[spaceId]/build => public}/favicon.ico | Bin 5 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 mirror-2/public/favicon-reflekt.ico rename mirror-2/{app/space/[spaceId]/build => public}/favicon.ico (100%) diff --git a/mirror-2/app/home/page.tsx b/mirror-2/app/home/page.tsx index a2b317e7..2accc2d3 100644 --- a/mirror-2/app/home/page.tsx +++ b/mirror-2/app/home/page.tsx @@ -88,7 +88,7 @@ export default function MusicPage() { Play

        - Join published Spaces that other builders have created. + Published Spaces from other builders.

        diff --git a/mirror-2/app/layout.tsx b/mirror-2/app/layout.tsx index 7d8aa5d8..00145a3a 100644 --- a/mirror-2/app/layout.tsx +++ b/mirror-2/app/layout.tsx @@ -2,7 +2,7 @@ import ClientLayout from "@/app/layout.client"; import { Montserrat } from 'next/font/google' import "./globals.css"; import { Metadata } from "next"; -import { appName, appDescription } from "@/lib/theme-service"; +import { appName, appDescription, faviconPath } from "@/lib/theme-service"; export const metadata: Metadata = { title: appName(), description: appDescription(), @@ -16,6 +16,9 @@ export default function RootLayout({ }) { return ( + + + {children} diff --git a/mirror-2/lib/theme-service.tsx b/mirror-2/lib/theme-service.tsx index 1d712464..6ed2e662 100644 --- a/mirror-2/lib/theme-service.tsx +++ b/mirror-2/lib/theme-service.tsx @@ -20,6 +20,14 @@ export const appDescription = () => { } }; +export const faviconPath = () => { + const appName = process.env.NEXT_PUBLIC_APP_NAME; + if (appName === "Reflekt") { + return "/favicon-reflekt.ico" + } else { + return "/favicon.ico" + } +} interface ImageProps { diff --git a/mirror-2/public/favicon-reflekt.ico b/mirror-2/public/favicon-reflekt.ico new file mode 100644 index 0000000000000000000000000000000000000000..0c8cc88001b20a1d90087e80f05613a322f59270 GIT binary patch literal 2118 zcmY*ad0f)j7Qcuopjo*jEh^e#mI78fi9lqenW5&C(X+)}8DmLMa1BSBsW-S}mg~6G zsMTm>nW&jFD&d-$mQ<$3kXt#aq50egs#ovb`#Hb!z2|(-_uO;;`CV{#by|*CivR#D zcivC-PeFVJ2G-o>C}VvQ1$>&maH}JvrLur+wVaEAaXMR`~(1Il_CBx0AW}F z-g*Oo%K*TTl~a8PuS_HaP@MxQ6tGo^VPF|V7eJK=qTB$o7O2#e2poW{`-(jvTfT7A z0Qi{()W2~4rSz(`UumkE&mNi&`KFk!_LYswhknDVvQsrH#+44v+JB4)hARsFT zsZ={gJ51$JDF<zErx|P4igOF41t>eK^oiE^Pt5;|ed&Y8sG9%J zWj;^(DXJWmh`?jMJ{u9S=A=v$fMt!&bMDT0Xf7d>bwu8b^!uw$oDi(0S*Lcfu)?dl_o{n- zIfvWNl|1H#iwX*@yjZE+pzy)Wp&4TTP-c)M4*eq#KV9N)8ojkWPtMBEVyC1jN6BZtRC)vncb4eKRE)L|F7^5@F$^wIT z_VFw!PRs}bnyJ^`;KGLX>btY?PON0Mz@_@OtnXB=q6Jv)e zdUa%T#Ub~egpH!zoLa6dO<}LE$2~PKYu&q7__|P_scksp;i&cmBRmc>-(=YE6rQ*! zWMun-fz+e(3j+_L{)iH1NSO&8zOIseG2Ki$WbEwOBG0H1hTqFpV)bSE_jV*w*H9wu z$j7nW>pw(uj87mdJggoGehuZ<-Drkt>J0XcIkwN?^X?uMp6u>?TXAEhK*SbAxA*sq z9M4+QMe;ElqoJ&uePN1yL*WAvi&fK$8$iqtsc%x$T}|vf+|P3L3JEp`cO5#*c$^z* zLBTlmlJsn`=t76rdLer4FW2ZQq*tcBESHW6ciZexyohwPZ6Kvt6^&Teq)#|XdF4sd z2mSe#Dd*hvuj3O^x$oD%YkpcAb07V_??H@BN-oGJ!PE93_VSi&hm7U4#@mI{7P?J` zGxFlYOYOpYx28b!;^T#V&5COkRQwjuDP7j7$EWh1mtFIWippkdrjsA|Cf{lw$`a`M zNjgSP!|X2K1{t(&!?oS3XZjBq8k$%Cbblen4T2~sd`p8KAa0%zm@6`mHh4B6x{Goi zZk?1CoapnK)gHJcSOvETE0}%r>eZu4i`13Vq7ZIW!gWvF6s>U zPx=SyrWuZzrS=HhXO4YLY`+w}MQYH4#v29j z&c;>QN5d_Lhfm01?HXh9s$%NlO)b?)cPcQV<&fx}RjxVqM3PJ<5NWOGF`(j{OsV|0 zE*&NI4qaC(5A-)>LdB&mZEXgFPd$-Rakc4i{-bRJA96Q^^#9Gv6W{4^tsgd?SkxjY zkfV)Jy_yQ%?nGIdjbUf`O%cf{kL+2Vh&&&{Eg@8Ny;MH<4VU7mN!_HAt1l%#-v)sv zcNZfugY8pibXRlr5f@`W_Q@Zll)yoAxXjwodY<1yd9}4Rk|nO!i*GG$s}Bnxgq>2j zY$?&zb#f@Wja?9n6Z#OHQhPo_W}%}asb@FNX*VF!)6PSR>%lX>H|ONF3h{k@$29+#f$>Y^YOm-Nrc1{ecykxpxyV`E((QYw z+2S?M;9Z4*Hd*E>i+dI>i;GPYJs_K$H|jfat>bvy2Q!E>w&|CR^W*iSqj|qul^V|7 zdWF!K{L3eP>DqCkc7~Mm&Z0xmBRo;rq2Z5yV%4&%3 Date: Tue, 1 Oct 2024 22:48:30 -0700 Subject: [PATCH 104/353] clean --- mirror-2/lib/theme-service.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/mirror-2/lib/theme-service.tsx b/mirror-2/lib/theme-service.tsx index 6ed2e662..43a8e446 100644 --- a/mirror-2/lib/theme-service.tsx +++ b/mirror-2/lib/theme-service.tsx @@ -1,4 +1,3 @@ -import { Metadata } from 'next'; import Image from 'next/image' // function that returns the app name by checking the environment variable From bced4b4bb51376e28f65f40fc79d6f858a47dc2c Mon Sep 17 00:00:00 2001 From: Kluskey Date: Tue, 1 Oct 2024 23:19:16 -0700 Subject: [PATCH 105/353] auth fixes --- mirror-2/actions/auth.ts | 10 +++--- mirror-2/app/auth/callback/route.ts | 4 +-- mirror-2/app/protected/page.tsx | 4 +-- .../app/space/[spaceId]/build/top-navbar.tsx | 9 ++++- mirror-2/hooks/auth.tsx | 34 ++++++++++++------- mirror-2/state/local.tsx | 1 + mirror-2/utils/supabase/client.ts | 1 + mirror-2/utils/supabase/server.ts | 6 ++-- 8 files changed, 43 insertions(+), 26 deletions(-) diff --git a/mirror-2/actions/auth.ts b/mirror-2/actions/auth.ts index b66834d4..55714882 100644 --- a/mirror-2/actions/auth.ts +++ b/mirror-2/actions/auth.ts @@ -1,6 +1,6 @@ "use server"; -import { createClient } from "@/utils/supabase/server"; +import { createServerClient } from "@/utils/supabase/server"; import { encodedRedirect } from "@/utils/utils"; import { headers } from "next/headers"; import { redirect } from "next/navigation"; @@ -8,7 +8,7 @@ import { redirect } from "next/navigation"; export const createAccountAction = async (formData: FormData) => { const email = formData.get("email")?.toString(); const password = formData.get("password")?.toString(); - const supabase = createClient(); + const supabase = createServerClient(); const origin = headers().get("origin"); if (!email || !password) { @@ -39,7 +39,7 @@ export const createAccountAction = async (formData: FormData) => { export const loginAction = async (formData: FormData) => { const email = formData.get("email") as string; const password = formData.get("password") as string; - const supabase = createClient(); + const supabase = createServerClient(); const { error } = await supabase.auth.signInWithPassword({ email, @@ -55,7 +55,7 @@ export const loginAction = async (formData: FormData) => { export const forgotPasswordAction = async (formData: FormData) => { const email = formData.get("email")?.toString(); - const supabase = createClient(); + const supabase = createServerClient(); const origin = headers().get("origin"); const callbackUrl = formData.get("callbackUrl")?.toString(); @@ -88,7 +88,7 @@ export const forgotPasswordAction = async (formData: FormData) => { }; export const resetPasswordAction = async (formData: FormData) => { - const supabase = createClient(); + const supabase = createServerClient(); const password = formData.get("password") as string; const confirmPassword = formData.get("confirmPassword") as string; diff --git a/mirror-2/app/auth/callback/route.ts b/mirror-2/app/auth/callback/route.ts index 68035d1d..4cbb31c9 100644 --- a/mirror-2/app/auth/callback/route.ts +++ b/mirror-2/app/auth/callback/route.ts @@ -1,4 +1,4 @@ -import { createClient } from "@/utils/supabase/server"; +import { createServerClient } from "@/utils/supabase/server"; import { NextResponse } from "next/server"; export async function GET(request: Request) { @@ -11,7 +11,7 @@ export async function GET(request: Request) { const redirectTo = requestUrl.searchParams.get("redirect_to")?.toString(); if (code) { - const supabase = createClient(); + const supabase = createServerClient(); await supabase.auth.exchangeCodeForSession(code); } diff --git a/mirror-2/app/protected/page.tsx b/mirror-2/app/protected/page.tsx index 8459238c..eb089ce3 100644 --- a/mirror-2/app/protected/page.tsx +++ b/mirror-2/app/protected/page.tsx @@ -1,11 +1,11 @@ import { BlankRedirect } from "@/app/protected/blank-redirect"; -import { createClient } from "@/utils/supabase/server"; +import { createServerClient } from "@/utils/supabase/server"; import { redirect } from "next/navigation"; export default async function ProtectedPage() { - const supabase = createClient(); + const supabase = createServerClient(); const { data: { user }, diff --git a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx index 10c03f77..a72048b4 100644 --- a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx +++ b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx @@ -8,16 +8,23 @@ import { useAppSelector } from "@/hooks/hooks"; import { selectLocalUserState } from "@/state/local"; import { CircleUser } from "lucide-react"; import Link from "next/link"; +import { useEffect, useState } from "react"; export function TopNavbar() { const localUserState = useAppSelector(selectLocalUserState) + const [hasMounted, setHasMounted] = useState(false); + + // Check if the component is fully mounted (client-side) + useEffect(() => { + setHasMounted(true); + }, []); return (
        - {!localUserState?.id &&
        +
        handleViewChange("assets")} onMouseEnter={() => handleViewChange("hierarchy")}> + + + + + + Hierarchy + + + Hierarchy +
        handleViewChange("assets")} onMouseEnter={() => handleViewChange("assets")}> diff --git a/mirror-2/app/space/[spaceId]/build/@controlBar/hierarchy.tsx b/mirror-2/app/space/[spaceId]/build/@controlBar/hierarchy.tsx new file mode 100644 index 00000000..a6f94d7d --- /dev/null +++ b/mirror-2/app/space/[spaceId]/build/@controlBar/hierarchy.tsx @@ -0,0 +1,9 @@ +'use client'; + +export default function Hierarchy() { + + return ( +
        Hierarchy
        + ); +} + diff --git a/mirror-2/app/space/[spaceId]/build/@controlBar/inner-control-bar.tsx b/mirror-2/app/space/[spaceId]/build/@controlBar/inner-control-bar.tsx index 4c34ebd7..9a16a408 100644 --- a/mirror-2/app/space/[spaceId]/build/@controlBar/inner-control-bar.tsx +++ b/mirror-2/app/space/[spaceId]/build/@controlBar/inner-control-bar.tsx @@ -2,6 +2,7 @@ import Assets from "@/app/space/[spaceId]/build/@controlBar/assets"; import Code from "@/app/space/[spaceId]/build/@controlBar/code"; import Database from "@/app/space/[spaceId]/build/@controlBar/database"; +import Hierarchy from "@/app/space/[spaceId]/build/@controlBar/hierarchy"; import Scenes from "@/app/space/[spaceId]/build/@controlBar/scenes"; import Settings from "@/app/space/[spaceId]/build/@controlBar/settings"; import { SkeletonCard } from "@/app/space/[spaceId]/build/@controlBar/skeleton-card"; @@ -16,8 +17,9 @@ export default function InnerControlBar() { return (
        - {currentView === "assets" && } {currentView === "scenes" && } + {currentView === "hierarchy" && } + {currentView === "assets" && } {currentView === "code" && } {currentView === "database" && } {currentView === "versions" && } diff --git a/mirror-2/state/local.tsx b/mirror-2/state/local.tsx index c931c153..4a3d971a 100644 --- a/mirror-2/state/local.tsx +++ b/mirror-2/state/local.tsx @@ -1,9 +1,8 @@ import { RootState } from '@/state/store' import type { PayloadAction } from '@reduxjs/toolkit' import { createSlice } from '@reduxjs/toolkit' -import { createSupabaseBrowserClient } from "@/utils/supabase/client"; -export type ControlBarView = "assets" | "scenes" | "code" | "database" | "versions" | "settings" +export type ControlBarView = "assets" | "hierarchy" | "scenes" | "code" | "database" | "versions" | "settings" interface LocalUserState { id: string, From 66191ae812b73267c4f87e638b31d1742cc2d576 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Tue, 1 Oct 2024 23:33:01 -0700 Subject: [PATCH 108/353] rm boilerplate from rtk --- .../space/[spaceId]/build/@controlBar/assets.tsx | 5 ++--- mirror-2/state/pokemon.tsx | 16 ---------------- mirror-2/state/store.tsx | 4 +--- 3 files changed, 3 insertions(+), 22 deletions(-) delete mode 100644 mirror-2/state/pokemon.tsx diff --git a/mirror-2/app/space/[spaceId]/build/@controlBar/assets.tsx b/mirror-2/app/space/[spaceId]/build/@controlBar/assets.tsx index a8e52918..c0fc113b 100644 --- a/mirror-2/app/space/[spaceId]/build/@controlBar/assets.tsx +++ b/mirror-2/app/space/[spaceId]/build/@controlBar/assets.tsx @@ -1,10 +1,9 @@ 'use client'; -import { useGetPokemonByNameQuery } from "@/state/pokemon"; + export default function Assets() { - const { data, error, isLoading } = useGetPokemonByNameQuery('bulbasaur') return ( -
        Assets: {JSON.stringify(data)}
        +
        Assets
        ); } diff --git a/mirror-2/state/pokemon.tsx b/mirror-2/state/pokemon.tsx deleted file mode 100644 index 8ea80a41..00000000 --- a/mirror-2/state/pokemon.tsx +++ /dev/null @@ -1,16 +0,0 @@ -'use client'; -import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react' - -export const pokemonApi = createApi({ - reducerPath: 'pokemonApi', - baseQuery: fetchBaseQuery({ baseUrl: 'https://pokeapi.co/api/v2/' }), - endpoints: (builder) => ({ - getPokemonByName: builder.query({ - query: (name) => `pokemon/${name}`, - }), - }), -}) - -// Export hooks for usage in functional components, which are -// auto-generated based on the defined endpoints -export const { useGetPokemonByNameQuery } = pokemonApi diff --git a/mirror-2/state/store.tsx b/mirror-2/state/store.tsx index 856b10f6..a0b1749f 100644 --- a/mirror-2/state/store.tsx +++ b/mirror-2/state/store.tsx @@ -1,21 +1,19 @@ "use client" import { configureStore } from '@reduxjs/toolkit' import { setupListeners } from '@reduxjs/toolkit/query/react' -import { pokemonApi } from './pokemon' import { localSlice } from '@/state/local' import { supabaseApi } from '@/state/supabase' export const store = configureStore({ reducer: { // Add the generated reducer as a specific top-level slice - [pokemonApi.reducerPath]: pokemonApi.reducer, [localSlice.reducerPath]: localSlice.reducer, [supabaseApi.reducerPath]: supabaseApi.reducer, }, // Adding the api middleware enables caching, invalidation, polling, // and other useful features of `rtk-query`. middleware: (getDefaultMiddleware) => - getDefaultMiddleware().concat(supabaseApi.middleware, pokemonApi.middleware,), + getDefaultMiddleware().concat(supabaseApi.middleware), }) // optional, but required for refetchOnFocus/refetchOnReconnect behaviors From 1a88dba7dd6d1413bad10e0070b613d5ad1d0d03 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Tue, 1 Oct 2024 23:45:02 -0700 Subject: [PATCH 109/353] rename --- mirror-2/app/space/[spaceId]/build/top-navbar.tsx | 4 ++-- mirror-2/hooks/auth.tsx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx index a72048b4..54c9f92b 100644 --- a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx +++ b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx @@ -3,7 +3,7 @@ import { EditableSpaceName } from "@/components/editable-space-name"; import { ThemeSwitcher } from "@/components/theme-switcher"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"; -import { signOutAction } from "@/hooks/auth"; +import { signOut } from "@/hooks/auth"; import { useAppSelector } from "@/hooks/hooks"; import { selectLocalUserState } from "@/state/local"; import { CircleUser } from "lucide-react"; @@ -44,7 +44,7 @@ export function TopNavbar() { {process.env.NEXT_PUBLIC_DISCORD_INVITE_URL && Chat on Discord} - signOutAction()} className="cursor-pointer"> + signOut()} className="cursor-pointer"> Logout diff --git a/mirror-2/hooks/auth.tsx b/mirror-2/hooks/auth.tsx index 4e70f762..c340f09d 100644 --- a/mirror-2/hooks/auth.tsx +++ b/mirror-2/hooks/auth.tsx @@ -5,7 +5,7 @@ import { createSupabaseBrowserClient } from "@/utils/supabase/client"; import { useRouter } from "next/navigation"; import { useEffect } from "react"; -export const signOutAction = async () => { +export const signOut = async () => { const supabase = createSupabaseBrowserClient(); await supabase.auth.signOut(); store.dispatch(clearLocalUserState()) From 4709f67b9469787896fe88b76f71b540ff33def1 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Wed, 2 Oct 2024 01:11:03 -0700 Subject: [PATCH 110/353] clean --- .../[spaceId]/build/@controlBar/assets.tsx | 89 ++++++++++++++++++- .../build/@controlBar/control-bar.tsx | 16 ++-- 2 files changed, 96 insertions(+), 9 deletions(-) diff --git a/mirror-2/app/space/[spaceId]/build/@controlBar/assets.tsx b/mirror-2/app/space/[spaceId]/build/@controlBar/assets.tsx index c0fc113b..13836f72 100644 --- a/mirror-2/app/space/[spaceId]/build/@controlBar/assets.tsx +++ b/mirror-2/app/space/[spaceId]/build/@controlBar/assets.tsx @@ -1,9 +1,96 @@ 'use client'; +import { useState } from 'react'; +import { Input } from '@/components/ui/input'; +import { ScrollArea } from '@/components/ui/scroll-area'; +const imagesData = [ + // Mock data for images and text (30 items for 10 rows and 3 columns) + { src: 'https://via.placeholder.com/150', text: 'Image 1' }, + { src: 'https://via.placeholder.com/150', text: 'Image 2' }, + { src: 'https://via.placeholder.com/150', text: 'Image 3' }, + { src: 'https://via.placeholder.com/150', text: 'Image 4' }, + { src: 'https://via.placeholder.com/150', text: 'Image 5' }, + { src: 'https://via.placeholder.com/150', text: 'Image 6' }, + { src: 'https://via.placeholder.com/150', text: 'Image 7' }, + { src: 'https://via.placeholder.com/150', text: 'Image 8' }, + { src: 'https://via.placeholder.com/150', text: 'Image 9' }, + { src: 'https://via.placeholder.com/150', text: 'Image 10' }, + { src: 'https://via.placeholder.com/150', text: 'Image 11' }, + { src: 'https://via.placeholder.com/150', text: 'Image 12' }, + { src: 'https://via.placeholder.com/150', text: 'Image 13' }, + { src: 'https://via.placeholder.com/150', text: 'Image 14' }, + { src: 'https://via.placeholder.com/150', text: 'Image 15' }, + { src: 'https://via.placeholder.com/150', text: 'Image 16' }, + { src: 'https://via.placeholder.com/150', text: 'Image 17' }, + { src: 'https://via.placeholder.com/150', text: 'Image 18' }, + { src: 'https://via.placeholder.com/150', text: 'Image 19' }, + { src: 'https://via.placeholder.com/150', text: 'Image 20' }, + { src: 'https://via.placeholder.com/150', text: 'Image 21' }, + { src: 'https://via.placeholder.com/150', text: 'Image 22' }, + { src: 'https://via.placeholder.com/150', text: 'Image 23' }, + { src: 'https://via.placeholder.com/150', text: 'Image 24' }, + { src: 'https://via.placeholder.com/150', text: 'Image 25' }, + { src: 'https://via.placeholder.com/150', text: 'Image 26' }, + { src: 'https://via.placeholder.com/150', text: 'Image 27' }, + { src: 'https://via.placeholder.com/150', text: 'Image 28' }, + { src: 'https://via.placeholder.com/150', text: 'Image 29' }, + { src: 'https://via.placeholder.com/150', text: 'Image 30' }, + { src: 'https://via.placeholder.com/150', text: 'Image 11' }, + { src: 'https://via.placeholder.com/150', text: 'Image 12' }, + { src: 'https://via.placeholder.com/150', text: 'Image 13' }, + { src: 'https://via.placeholder.com/150', text: 'Image 14' }, + { src: 'https://via.placeholder.com/150', text: 'Image 15' }, + { src: 'https://via.placeholder.com/150', text: 'Image 16' }, + { src: 'https://via.placeholder.com/150', text: 'Image 17' }, + { src: 'https://via.placeholder.com/150', text: 'Image 18' }, + { src: 'https://via.placeholder.com/150', text: 'Image 19' }, + { src: 'https://via.placeholder.com/150', text: 'Image 20' }, + { src: 'https://via.placeholder.com/150', text: 'Image 21' }, + { src: 'https://via.placeholder.com/150', text: 'Image 22' }, + { src: 'https://via.placeholder.com/150', text: 'Image 23' }, + { src: 'https://via.placeholder.com/150', text: 'Image 24' }, + { src: 'https://via.placeholder.com/150', text: 'Image 25' }, + { src: 'https://via.placeholder.com/150', text: 'Image 26' }, + { src: 'https://via.placeholder.com/150', text: 'Image 27' }, + { src: 'https://via.placeholder.com/150', text: 'Image 28' }, + { src: 'https://via.placeholder.com/150', text: 'Image 29' }, + { src: 'https://via.placeholder.com/150', text: 'Image 30' } + +]; export default function Assets() { + const [searchTerm, setSearchTerm] = useState(''); + + const filteredImages = imagesData.filter((image) => + image.text.toLowerCase().includes(searchTerm.toLowerCase()) + ); return ( -
        Assets
        +
        + {/* Search bar */} + setSearchTerm(e.target.value)} + className="mb-4 w-full" + /> + + {/* Scrollable area that takes up remaining space */} +
        +
        + {filteredImages.map((image, index) => ( +
        + {image.text} +

        {image.text}

        +
        + ))} +
        +
        +
        ); } diff --git a/mirror-2/app/space/[spaceId]/build/@controlBar/control-bar.tsx b/mirror-2/app/space/[spaceId]/build/@controlBar/control-bar.tsx index 43353a2f..4cce3128 100644 --- a/mirror-2/app/space/[spaceId]/build/@controlBar/control-bar.tsx +++ b/mirror-2/app/space/[spaceId]/build/@controlBar/control-bar.tsx @@ -44,7 +44,7 @@ export default function ControlBar() { Scenes - Scenes + Scenes
        handleViewChange("assets")} onMouseEnter={() => handleViewChange("hierarchy")}> @@ -63,7 +63,7 @@ export default function ControlBar() { Hierarchy - Hierarchy + Hierarchy
        handleViewChange("assets")} onMouseEnter={() => handleViewChange("assets")}> @@ -82,7 +82,7 @@ export default function ControlBar() { Assets - Assets + Assets
        handleViewChange("code")} onMouseEnter={() => handleViewChange("code")}> @@ -101,7 +101,7 @@ export default function ControlBar() { Code - Code + Code
        handleViewChange("database")} onMouseEnter={() => handleViewChange("database")}> @@ -120,7 +120,7 @@ export default function ControlBar() { Database - Database + Database
        handleViewChange("versions")} onMouseEnter={() => handleViewChange("versions")}> @@ -139,7 +139,7 @@ export default function ControlBar() { Versions - Versions + Versions
        handleViewChange("settings")} onMouseEnter={() => handleViewChange("settings")}> @@ -158,10 +158,10 @@ export default function ControlBar() { Settings - Settings + Settings
        -
        +
        +
        + + {/* TODO add better styling for this so it doesn't shift the input field */} + + + )} + /> + + + {/* */} + {/* Scrollable area that takes up remaining space */}
        - {filteredImages.map((image, index) => ( + {assets?.map((image, index) => (
        -
        +
        -
        +
        diff --git a/mirror-2/app/space/[spaceId]/build/space-viewport.tsx b/mirror-2/app/space/[spaceId]/build/space-viewport.tsx index bee4d069..8c972193 100644 --- a/mirror-2/app/space/[spaceId]/build/space-viewport.tsx +++ b/mirror-2/app/space/[spaceId]/build/space-viewport.tsx @@ -1,9 +1,9 @@ export default function SpaceViewport() { - return
        + return
        -

        +

        3D Viewport

        diff --git a/mirror-2/hooks/auth.tsx b/mirror-2/hooks/auth.tsx index c340f09d..408d8c3e 100644 --- a/mirror-2/hooks/auth.tsx +++ b/mirror-2/hooks/auth.tsx @@ -1,9 +1,9 @@ +"use client" import { useAppDispatch, useAppSelector } from "@/hooks/hooks"; import { updateLocalUserState, clearLocalUserState } from "@/state/local"; import { store } from "@/state/store"; import { createSupabaseBrowserClient } from "@/utils/supabase/client"; import { useRouter } from "next/navigation"; -import { useEffect } from "react"; export const signOut = async () => { const supabase = createSupabaseBrowserClient(); diff --git a/mirror-2/package.json b/mirror-2/package.json index 38cd6855..69f0e233 100644 --- a/mirror-2/package.json +++ b/mirror-2/package.json @@ -22,6 +22,7 @@ "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tabs": "^1.1.1", "@radix-ui/react-tooltip": "^1.1.2", + "@react-hook/throttle": "^2.2.0", "@reduxjs/toolkit": "^2.2.7", "@supabase/ssr": "latest", "@supabase/supabase-js": "latest", diff --git a/mirror-2/state/supabase.tsx b/mirror-2/state/supabase.tsx index b3c277c2..84024f38 100644 --- a/mirror-2/state/supabase.tsx +++ b/mirror-2/state/supabase.tsx @@ -8,6 +8,9 @@ export const supabaseApi = createApi({ baseQuery: fakeBaseQuery(), endpoints: (builder) => ({ + /** + * Spaces + */ createSpace: builder.mutation({ queryFn: async () => { const supabase = createSupabaseBrowserClient(); @@ -66,10 +69,107 @@ export const supabaseApi = createApi({ } }), + /** + * Assets + */ + // createAsset: builder.mutation({ + // queryFn: async () => { + // const supabase = createSupabaseBrowserClient(); + // const { data: { user } } = await supabase.auth.getUser() + // if (!user) { + // throw new Error('User not found') + // } + // /** + // * Upload the file + // */ + + + // /** + // * Add to DB + // */ + // const { data, error } = await supabase + // .from("assets") + // .insert([{ + // name: await generateSpaceName(), + // creator_user_id: user?.id, + // owner_user_id: user.id + // }]) + // .select('*') + // .single() + + // if (error) { + // return { error: error.message }; + // } + // return { data }; + // } + // }), + + getSingleAsset: builder.query({ + queryFn: async (assetId) => { + const supabase = createSupabaseBrowserClient(); + + const { data, error } = await supabase + .from("assets") + .select("*") + .eq("id", assetId) + .single() + + if (error) { + return { error: error.message }; + } + return { data }; + } + }), + + searchAssets: builder.query({ + queryFn: async ({ text }) => { + const supabase = createSupabaseBrowserClient(); + + const { data, error } = await supabase + .from("assets") + .select("*") + .eq("name", text) + .single() + + if (error) { + return { error: error.message }; + } + return { data }; + } + }), + + updateAsset: builder.mutation }>({ + queryFn: async ({ assetId, updateData }) => { + const supabase = createSupabaseBrowserClient(); + + const { data, error } = await supabase + .from("assets") + .update(updateData) + .eq("id", assetId) + .single() + + if (error) { + return { error: error.message }; + } + return { data }; + } + }), + }), }) // Export hooks for usage in functional components, which are // auto-generated based on the defined endpoints -export const { useGetSingleSpaceQuery, useUpdateSpaceMutation, useCreateSpaceMutation } = supabaseApi +export const { + /** + * Spaces + */ + useGetSingleSpaceQuery, useUpdateSpaceMutation, useCreateSpaceMutation, + + + /** + * Assets + */ + useSearchAssetsQuery, useLazySearchAssetsQuery, useGetSingleAssetQuery, useUpdateAssetMutation +} = supabaseApi diff --git a/mirror-2/yarn.lock b/mirror-2/yarn.lock index e1e20651..4a103548 100644 --- a/mirror-2/yarn.lock +++ b/mirror-2/yarn.lock @@ -595,6 +595,18 @@ resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-1.1.0.tgz#f817d1d3265ac5415dadc67edab30ae196696438" integrity sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg== +"@react-hook/latest@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@react-hook/latest/-/latest-1.0.3.tgz#c2d1d0b0af8b69ec6e2b3a2412ba0768ac82db80" + integrity sha512-dy6duzl+JnAZcDbNTfmaP3xHiKtbXYOaz3G51MGVljh548Y8MWzTr+PHLOfvpypEVW9zwvl+VyKjbWKEVbV1Rg== + +"@react-hook/throttle@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@react-hook/throttle/-/throttle-2.2.0.tgz#d0402714a06e1ba0bc1da1fdf5c3c5cd0e08d45a" + integrity sha512-LJ5eg+yMV8lXtqK3lR+OtOZ2WH/EfWvuiEEu0M3bhR7dZRfTyEJKxH1oK9uyBxiXPtWXiQggWbZirMCXam51tg== + dependencies: + "@react-hook/latest" "^1.0.2" + "@reduxjs/toolkit@^2.2.7": version "2.2.7" resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-2.2.7.tgz#199e3d10ccb39267cb5aee92c0262fd9da7fdfb2" From 5018245587f6b15ef477e4d8892c431fbf1667cf Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 4 Oct 2024 17:48:30 -0700 Subject: [PATCH 118/353] redux-undo add --- mirror-2/package.json | 1 + mirror-2/yarn.lock | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/mirror-2/package.json b/mirror-2/package.json index 69f0e233..da9dd093 100644 --- a/mirror-2/package.json +++ b/mirror-2/package.json @@ -39,6 +39,7 @@ "react-hook-form": "^7.53.0", "react-redux": "^9.1.2", "react-resizable-panels": "^2.1.4", + "redux-undo": "^1.1.0", "server-only": "^0.0.1", "unique-names-generator": "^4.7.1", "use-sound": "^4.0.3", diff --git a/mirror-2/yarn.lock b/mirror-2/yarn.lock index 4a103548..655e15b0 100644 --- a/mirror-2/yarn.lock +++ b/mirror-2/yarn.lock @@ -1558,6 +1558,11 @@ redux-thunk@^3.1.0: resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-3.1.0.tgz#94aa6e04977c30e14e892eae84978c1af6058ff3" integrity sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw== +redux-undo@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/redux-undo/-/redux-undo-1.1.0.tgz#ae28e517797b1aa5521d55da561f7214d310f8a5" + integrity sha512-zzLFh2qeF0MTIlzDhDLm9NtkfBqCllQJ3OCuIl5RKlG/ayHw6GUdIFdMhzMS9NnrnWdBX5u//ExMOHpfudGGOg== + redux@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/redux/-/redux-5.0.1.tgz#97fa26881ce5746500125585d5642c77b6e9447b" From 575f355555c9f3f8e68f3eaae8ad2af3e5f71500 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 4 Oct 2024 19:22:40 -0700 Subject: [PATCH 119/353] fix build layout --- mirror-2/app/layout.client.tsx | 2 +- .../[spaceId]/build/(controlBar)/assets.tsx | 2 +- mirror-2/app/space/[spaceId]/build/layout.tsx | 20 +++++-------------- .../space/[spaceId]/build/space-viewport.tsx | 20 ++++++++++--------- mirror-2/app/space/new/page.tsx | 2 +- 5 files changed, 19 insertions(+), 27 deletions(-) diff --git a/mirror-2/app/layout.client.tsx b/mirror-2/app/layout.client.tsx index b1a948ca..51435a2b 100644 --- a/mirror-2/app/layout.client.tsx +++ b/mirror-2/app/layout.client.tsx @@ -23,7 +23,7 @@ export default function ClientLayout({ children }) { export function AuthLayout({ children }) { useSetupAuthEvents() return ( -
        +
        {children}
        diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx b/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx index 34bdcf14..d765ebb2 100644 --- a/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx +++ b/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx @@ -44,7 +44,7 @@ export default function Assets() { }, [isSuccess, form]); // Only run this effect when space or isLoading changes return ( -
        +
        {/* Search bar */} {/* */}
        diff --git a/mirror-2/app/space/[spaceId]/build/layout.tsx b/mirror-2/app/space/[spaceId]/build/layout.tsx index bc17b606..055f511d 100644 --- a/mirror-2/app/space/[spaceId]/build/layout.tsx +++ b/mirror-2/app/space/[spaceId]/build/layout.tsx @@ -1,11 +1,7 @@ -import Link from "next/link" - -import { TopNavbar } from "@/app/space/[spaceId]/build/top-navbar" -import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "@/components/ui/resizable" -import { AppLogoImageSmall } from "@/lib/theme-service" +import InnerControlBar from "@/app/space/[spaceId]/build/(controlBar)/inner-control-bar" import { Sidebar } from "@/app/space/[spaceId]/build/sidebar" import SpaceViewport from "@/app/space/[spaceId]/build/space-viewport" -import InnerControlBar from "@/app/space/[spaceId]/build/(controlBar)/inner-control-bar" +import { TopNavbar } from "@/app/space/[spaceId]/build/top-navbar" export default async function Layout({ children, params }: { children: React.ReactNode, @@ -14,17 +10,11 @@ export default async function Layout({ children, params }: { }) { return ( -
        -
        - -
        -
        +
        + +
        -
        -
        -
        -
        diff --git a/mirror-2/app/space/[spaceId]/build/space-viewport.tsx b/mirror-2/app/space/[spaceId]/build/space-viewport.tsx index 8c972193..b86b4e30 100644 --- a/mirror-2/app/space/[spaceId]/build/space-viewport.tsx +++ b/mirror-2/app/space/[spaceId]/build/space-viewport.tsx @@ -1,11 +1,13 @@ export default function SpaceViewport() { - return
        -
        -

        - 3D Viewport -

        -
        -
        + return ( +
        +
        +

        + 3D Viewport +

        +
        +
        + ); } diff --git a/mirror-2/app/space/new/page.tsx b/mirror-2/app/space/new/page.tsx index 8ec94c1a..d58ac5e8 100644 --- a/mirror-2/app/space/new/page.tsx +++ b/mirror-2/app/space/new/page.tsx @@ -23,7 +23,7 @@ export default function NewSpacePage() { create() }, [router]) return ( -
        +
        {/* Top Menu Bar */}
        From c9abaa1cc868a7f87bfe131108729c2ddcf5cb53 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 4 Oct 2024 19:23:40 -0700 Subject: [PATCH 120/353] add engine --- mirror-2/package.json | 1 + mirror-2/yarn.lock | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/mirror-2/package.json b/mirror-2/package.json index da9dd093..4e8d886a 100644 --- a/mirror-2/package.json +++ b/mirror-2/package.json @@ -33,6 +33,7 @@ "lucide-react": "^0.446.0", "next": "latest", "next-themes": "^0.3.0", + "playcanvas": "^2.0.0", "prettier": "^3.3.3", "react": "18.2.0", "react-dom": "18.2.0", diff --git a/mirror-2/yarn.lock b/mirror-2/yarn.lock index 655e15b0..92a5644a 100644 --- a/mirror-2/yarn.lock +++ b/mirror-2/yarn.lock @@ -752,6 +752,11 @@ resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz#b6725d5f4af24ace33b36fafd295136e75509f43" integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== +"@types/webxr@^0.5.16": + version "0.5.20" + resolved "https://registry.yarnpkg.com/@types/webxr/-/webxr-0.5.20.tgz#b16b681af314ec011b2e8221b0a072d691c04953" + integrity sha512-JGpU6qiIJQKUuVSKx1GtQnHJGxRjtfGIhzO2ilq43VZZS//f1h1Sgexbdk+Lq+7569a6EYhOWrUpIruR/1Enmg== + "@types/ws@^8.5.10": version "8.5.12" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.12.tgz#619475fe98f35ccca2a2f6c137702d85ec247b7e" @@ -759,6 +764,11 @@ dependencies: "@types/node" "*" +"@webgpu/types@^0.1.40": + version "0.1.48" + resolved "https://registry.yarnpkg.com/@webgpu/types/-/types-0.1.48.tgz#8ab741852283118bd633345c20e218faa7211e9c" + integrity sha512-e3zmDEPih4Rle+JrP5cT8nCCtDizoUpEaN72OuD1clbhXGERtn0wwuMdxOrBymu3kMLWKDd8hd+ERhSheLuLTg== + acorn-walk@^8.0.0: version "8.3.4" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" @@ -1386,6 +1396,14 @@ pirates@^4.0.1: resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== +playcanvas@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/playcanvas/-/playcanvas-2.0.0.tgz#ef298a2609c0e1c551709ed4e00d64c13932bd2b" + integrity sha512-hEbIgL3ZkB8GyawN3gHpxYl+ZDO+lE3vEFs2TKe8jnT6b9CcF6yzITLorTkRbkd7dyMz1J0+633qH4HeD7EZpQ== + dependencies: + "@types/webxr" "^0.5.16" + "@webgpu/types" "^0.1.40" + postcss-import@^15.1.0: version "15.1.0" resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" From 0d903f955b6884e56f9c9c0c8e141cc44bdd25aa Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 4 Oct 2024 19:26:36 -0700 Subject: [PATCH 121/353] layout clean --- mirror-2/app/space/[spaceId]/build/layout.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mirror-2/app/space/[spaceId]/build/layout.tsx b/mirror-2/app/space/[spaceId]/build/layout.tsx index 055f511d..ed8fb7e3 100644 --- a/mirror-2/app/space/[spaceId]/build/layout.tsx +++ b/mirror-2/app/space/[spaceId]/build/layout.tsx @@ -12,7 +12,7 @@ export default async function Layout({ children, params }: { return (
        -
        +
        From a591e51a733904a3731bd2fd58e2501811fd60b0 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 4 Oct 2024 19:30:45 -0700 Subject: [PATCH 122/353] search asset fix --- mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx | 2 -- mirror-2/state/supabase.tsx | 1 - 2 files changed, 3 deletions(-) diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx b/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx index d765ebb2..906759c8 100644 --- a/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx +++ b/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx @@ -46,7 +46,6 @@ export default function Assets() { return (
        {/* Search bar */} - {/* */} - {/* */} {/* Scrollable area that takes up remaining space */} diff --git a/mirror-2/state/supabase.tsx b/mirror-2/state/supabase.tsx index 84024f38..e16ecba7 100644 --- a/mirror-2/state/supabase.tsx +++ b/mirror-2/state/supabase.tsx @@ -129,7 +129,6 @@ export const supabaseApi = createApi({ .from("assets") .select("*") .eq("name", text) - .single() if (error) { return { error: error.message }; From c0ec83939be0832b4d0742d4527277acad8406b9 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 4 Oct 2024 19:34:34 -0700 Subject: [PATCH 123/353] break out assets migration into separate file --- ...s_assets.sql => 20240929043655_spaces.sql} | 26 ---------- .../migrations/20240929043656_assets.sql | 50 +++++++++++++++++++ 2 files changed, 50 insertions(+), 26 deletions(-) rename mirror-2/supabase/migrations/{20240929043655_spaces_assets.sql => 20240929043655_spaces.sql} (59%) create mode 100644 mirror-2/supabase/migrations/20240929043656_assets.sql diff --git a/mirror-2/supabase/migrations/20240929043655_spaces_assets.sql b/mirror-2/supabase/migrations/20240929043655_spaces.sql similarity index 59% rename from mirror-2/supabase/migrations/20240929043655_spaces_assets.sql rename to mirror-2/supabase/migrations/20240929043655_spaces.sql index da2ceab6..cc2f1754 100644 --- a/mirror-2/supabase/migrations/20240929043655_spaces_assets.sql +++ b/mirror-2/supabase/migrations/20240929043655_spaces.sql @@ -12,11 +12,6 @@ create table spaces ( alter table spaces enable row level security; --- Policy for space owners -create policy "Owners can view their own spaces" -on spaces -for select -using (owner_user_id = auth.uid()); -- Policy for creating spaces create policy "Users can create their own spaces" @@ -46,24 +41,3 @@ create policy "Users can delete their own spaces" on spaces for delete using (owner_user_id = auth.uid()); - --- assets -create table assets ( - id uuid not null primary key default uuid_generate_v4(), - owner_user_id uuid references auth.users(id) not null, -- owner is different from creator. Assets can be transferred and we want to retain the creator - creator_user_id uuid references auth.users(id) not null, - name text not null, - asset_url text not null, - created_at timestamp with time zone not null default now(), - updated_at timestamp with time zone not null default now() - ); - --- add RLS -alter table assets - enable row level security; - --- set up storage for assets -insert into - storage.buckets (id, name, public) -values - ('assets', 'assets', true); diff --git a/mirror-2/supabase/migrations/20240929043656_assets.sql b/mirror-2/supabase/migrations/20240929043656_assets.sql new file mode 100644 index 00000000..aed9d98f --- /dev/null +++ b/mirror-2/supabase/migrations/20240929043656_assets.sql @@ -0,0 +1,50 @@ +-- assets +create table assets ( + id uuid not null primary key default uuid_generate_v4(), + owner_user_id uuid references auth.users(id) not null, -- owner is different from creator. Assets can be transferred and we want to retain the creator + creator_user_id uuid references auth.users(id) not null, + name text not null, + asset_url text not null, + created_at timestamp with time zone not null default now(), + updated_at timestamp with time zone not null default now() + ); + +-- add RLS +alter table assets + enable row level security; + + -- Policy for creating assets +create policy "Users can create their own assets" +on assets +for insert +with check ( + owner_user_id = auth.uid() + and creator_user_id = auth.uid() +); + +-- Policy for selecting assets +create policy "Users can view their own assets" +on assets +for select +using ( + owner_user_id = auth.uid() +); + +-- Policy for updating assets +create policy "Users can update their own assets" +on assets +for update +using (owner_user_id = auth.uid()); + +-- Policy for deleting assets +create policy "Users can delete their own assets" +on assets +for delete +using (owner_user_id = auth.uid()); + + +-- set up storage for assets +insert into + storage.buckets (id, name, public) +values + ('assets', 'assets', true); From 65c99726ed7e45c264e385a8a276215b35ae1901 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 4 Oct 2024 19:35:44 -0700 Subject: [PATCH 124/353] home fix --- mirror-2/app/space/[spaceId]/build/top-navbar.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx index 6cb05e00..8288dc78 100644 --- a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx +++ b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx @@ -21,7 +21,7 @@ export function TopNavbar() { }, []); return (
        - +
        From c0b0da9bef4956512dbc48d3816bb37c9b259e66 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 4 Oct 2024 19:43:58 -0700 Subject: [PATCH 125/353] text search assets --- mirror-2/state/supabase.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mirror-2/state/supabase.tsx b/mirror-2/state/supabase.tsx index e16ecba7..569245b3 100644 --- a/mirror-2/state/supabase.tsx +++ b/mirror-2/state/supabase.tsx @@ -128,7 +128,7 @@ export const supabaseApi = createApi({ const { data, error } = await supabase .from("assets") .select("*") - .eq("name", text) + .textSearch("name", text) if (error) { return { error: error.message }; From 3aa15443b64dfb990c17b330b7f215fe5fffe642 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 4 Oct 2024 19:59:25 -0700 Subject: [PATCH 126/353] add description, computed columns --- mirror-2/package.json | 1 + mirror-2/state/supabase.tsx | 2 +- .../migrations/20240929043655_spaces.sql | 1 + .../migrations/20240929043656_assets.sql | 1 + .../20241005025417_searches_assets_spaces.sql | 16 ++++++++++++++++ mirror-2/supabase/seed.sql | 8 ++++---- mirror-2/utils/database.types.ts | 13 +++++++++++++ 7 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 mirror-2/supabase/migrations/20241005025417_searches_assets_spaces.sql diff --git a/mirror-2/package.json b/mirror-2/package.json index 4e8d886a..4c8a5823 100644 --- a/mirror-2/package.json +++ b/mirror-2/package.json @@ -5,6 +5,7 @@ "types": "npx supabase gen types --lang=typescript --local > ./utils/database.types.ts", "reset": "supabase db reset && yarn types", "build": "next build", + "m": "supabase migration new", "start": "next start" }, "dependencies": { diff --git a/mirror-2/state/supabase.tsx b/mirror-2/state/supabase.tsx index 569245b3..f54bbcb8 100644 --- a/mirror-2/state/supabase.tsx +++ b/mirror-2/state/supabase.tsx @@ -128,7 +128,7 @@ export const supabaseApi = createApi({ const { data, error } = await supabase .from("assets") .select("*") - .textSearch("name", text) + .textSearch("name_description", text) if (error) { return { error: error.message }; diff --git a/mirror-2/supabase/migrations/20240929043655_spaces.sql b/mirror-2/supabase/migrations/20240929043655_spaces.sql index cc2f1754..697c92e7 100644 --- a/mirror-2/supabase/migrations/20240929043655_spaces.sql +++ b/mirror-2/supabase/migrations/20240929043655_spaces.sql @@ -1,6 +1,7 @@ create table spaces ( id uuid not null primary key default uuid_generate_v4(), name text not null, + description text not null, owner_user_id uuid references auth.users(id) not null, -- owner is different from creator. Spaces can be transferred and we want to retain the creator creator_user_id uuid references auth.users(id) not null, created_at timestamp with time zone not null default now(), diff --git a/mirror-2/supabase/migrations/20240929043656_assets.sql b/mirror-2/supabase/migrations/20240929043656_assets.sql index aed9d98f..d71bd024 100644 --- a/mirror-2/supabase/migrations/20240929043656_assets.sql +++ b/mirror-2/supabase/migrations/20240929043656_assets.sql @@ -4,6 +4,7 @@ create table assets ( owner_user_id uuid references auth.users(id) not null, -- owner is different from creator. Assets can be transferred and we want to retain the creator creator_user_id uuid references auth.users(id) not null, name text not null, + description text not null, asset_url text not null, created_at timestamp with time zone not null default now(), updated_at timestamp with time zone not null default now() diff --git a/mirror-2/supabase/migrations/20241005025417_searches_assets_spaces.sql b/mirror-2/supabase/migrations/20241005025417_searches_assets_spaces.sql new file mode 100644 index 00000000..c0549c54 --- /dev/null +++ b/mirror-2/supabase/migrations/20241005025417_searches_assets_spaces.sql @@ -0,0 +1,16 @@ +-- Computed name description column +create function name_description(assets) returns text as $$ + select $1.name || ' ' || $1.description; +$$ language sql immutable; + +create function name_description(spaces) returns text as $$ + select $1.name || ' ' || $1.description; +$$ language sql immutable; + +-- create or replace function search_assets_by_title_description(prefix text) +-- returns setof assets AS $$ +-- begin +-- return query +-- select * from assets where to_tsvector('english', title) @@ to_tsquery(prefix || ':*'); +-- end; +-- $$ language plpgsql; diff --git a/mirror-2/supabase/seed.sql b/mirror-2/supabase/seed.sql index 6bfc0c20..90667073 100644 --- a/mirror-2/supabase/seed.sql +++ b/mirror-2/supabase/seed.sql @@ -64,9 +64,9 @@ BEGIN asset_url := format('https://picsum.photos/seed/picsum/800/600', i, j); -- Use %s for numbers INSERT INTO public.assets - (id, name, asset_url, creator_user_id, owner_user_id, created_at, updated_at) + (id, name, description, asset_url, creator_user_id, owner_user_id, created_at, updated_at) VALUES - (gen_random_uuid(), format('Asset %s', j), asset_url, user_id, user_id, now(), now()); -- Initially, owner_user_id is the same as creator_user_id + (gen_random_uuid(), format('Asset %s', j), 'This is a placeholder description for the asset.', asset_url, user_id, user_id, now(), now()); -- Added placeholder description END LOOP; END LOOP; @@ -75,9 +75,9 @@ BEGIN FOR i IN 1..45 LOOP -- Create a new space INSERT INTO public.spaces - (id, name, creator_user_id, owner_user_id, created_at, updated_at) + (id, name, description, creator_user_id, owner_user_id, created_at, updated_at) VALUES - (gen_random_uuid(), format('Space %s', i), user_ids[((i - 1) % 15) + 1], user_ids[((i - 1) % 15) + 1], now(), now()) + (gen_random_uuid(), format('Space %s', i), 'This is a placeholder description for the space.', user_ids[((i - 1) % 15) + 1], user_ids[((i - 1) % 15) + 1], now(), now()) -- Added placeholder description RETURNING id INTO space_id; -- Capture the newly created space ID -- Insert 3 space_versions for each space diff --git a/mirror-2/utils/database.types.ts b/mirror-2/utils/database.types.ts index bdb4f97e..7523e99d 100644 --- a/mirror-2/utils/database.types.ts +++ b/mirror-2/utils/database.types.ts @@ -39,15 +39,18 @@ export type Database = { asset_url: string created_at: string creator_user_id: string + description: string id: string name: string owner_user_id: string updated_at: string + name_description: string | null } Insert: { asset_url: string created_at?: string creator_user_id: string + description: string id?: string name: string owner_user_id: string @@ -57,6 +60,7 @@ export type Database = { asset_url?: string created_at?: string creator_user_id?: string + description?: string id?: string name?: string owner_user_id?: string @@ -247,6 +251,7 @@ export type Database = { Row: { created_at: string creator_user_id: string + description: string id: string name: string owner_user_id: string @@ -255,6 +260,7 @@ export type Database = { Insert: { created_at?: string creator_user_id: string + description: string id?: string name: string owner_user_id: string @@ -263,6 +269,7 @@ export type Database = { Update: { created_at?: string creator_user_id?: string + description?: string id?: string name?: string owner_user_id?: string @@ -335,6 +342,12 @@ export type Database = { } Returns: string } + name_description: { + Args: { + "": unknown + } + Returns: string + } } Enums: { avatar_type: "ready_player_me" From 7646e71cbcc06f8a921230e21a5d5d1251aac523 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 4 Oct 2024 20:15:59 -0700 Subject: [PATCH 127/353] name prefix search assets spaces --- mirror-2/state/supabase.tsx | 4 +-- .../migrations/20240929043655_spaces.sql | 2 +- .../20241005025417_searches_assets_spaces.sql | 29 ++++++++------- mirror-2/utils/database.types.ts | 36 +++++++++++++++---- 4 files changed, 45 insertions(+), 26 deletions(-) diff --git a/mirror-2/state/supabase.tsx b/mirror-2/state/supabase.tsx index f54bbcb8..bc07db9f 100644 --- a/mirror-2/state/supabase.tsx +++ b/mirror-2/state/supabase.tsx @@ -126,9 +126,7 @@ export const supabaseApi = createApi({ const supabase = createSupabaseBrowserClient(); const { data, error } = await supabase - .from("assets") - .select("*") - .textSearch("name_description", text) + .rpc("search_assets_by_name_prefix", { 'prefix': text }) if (error) { return { error: error.message }; diff --git a/mirror-2/supabase/migrations/20240929043655_spaces.sql b/mirror-2/supabase/migrations/20240929043655_spaces.sql index 697c92e7..9193a0c1 100644 --- a/mirror-2/supabase/migrations/20240929043655_spaces.sql +++ b/mirror-2/supabase/migrations/20240929043655_spaces.sql @@ -1,7 +1,7 @@ create table spaces ( id uuid not null primary key default uuid_generate_v4(), name text not null, - description text not null, + description text, owner_user_id uuid references auth.users(id) not null, -- owner is different from creator. Spaces can be transferred and we want to retain the creator creator_user_id uuid references auth.users(id) not null, created_at timestamp with time zone not null default now(), diff --git a/mirror-2/supabase/migrations/20241005025417_searches_assets_spaces.sql b/mirror-2/supabase/migrations/20241005025417_searches_assets_spaces.sql index c0549c54..6de4c564 100644 --- a/mirror-2/supabase/migrations/20241005025417_searches_assets_spaces.sql +++ b/mirror-2/supabase/migrations/20241005025417_searches_assets_spaces.sql @@ -1,16 +1,15 @@ --- Computed name description column -create function name_description(assets) returns text as $$ - select $1.name || ' ' || $1.description; -$$ language sql immutable; +create or replace function search_assets_by_name_prefix(prefix text) +returns setof assets AS $$ +begin + return query + select * from assets where to_tsvector('english', name) @@ to_tsquery(prefix || ':*'); +end; +$$ language plpgsql; -create function name_description(spaces) returns text as $$ - select $1.name || ' ' || $1.description; -$$ language sql immutable; - --- create or replace function search_assets_by_title_description(prefix text) --- returns setof assets AS $$ --- begin --- return query --- select * from assets where to_tsvector('english', title) @@ to_tsquery(prefix || ':*'); --- end; --- $$ language plpgsql; +create or replace function search_spaces_by_name_prefix(prefix text) +returns setof spaces AS $$ +begin + return query + select * from spaces where to_tsvector('english', name) @@ to_tsquery(prefix || ':*'); +end; +$$ language plpgsql; diff --git a/mirror-2/utils/database.types.ts b/mirror-2/utils/database.types.ts index 7523e99d..055df187 100644 --- a/mirror-2/utils/database.types.ts +++ b/mirror-2/utils/database.types.ts @@ -44,7 +44,6 @@ export type Database = { name: string owner_user_id: string updated_at: string - name_description: string | null } Insert: { asset_url: string @@ -251,7 +250,7 @@ export type Database = { Row: { created_at: string creator_user_id: string - description: string + description: string | null id: string name: string owner_user_id: string @@ -260,7 +259,7 @@ export type Database = { Insert: { created_at?: string creator_user_id: string - description: string + description?: string | null id?: string name: string owner_user_id: string @@ -269,7 +268,7 @@ export type Database = { Update: { created_at?: string creator_user_id?: string - description?: string + description?: string | null id?: string name?: string owner_user_id?: string @@ -342,11 +341,34 @@ export type Database = { } Returns: string } - name_description: { + search_assets_by_name_prefix: { Args: { - "": unknown + prefix: string } - Returns: string + Returns: { + asset_url: string + created_at: string + creator_user_id: string + description: string + id: string + name: string + owner_user_id: string + updated_at: string + }[] + } + search_spaces_by_name_prefix: { + Args: { + prefix: string + } + Returns: { + created_at: string + creator_user_id: string + description: string | null + id: string + name: string + owner_user_id: string + updated_at: string + }[] } } Enums: { From d039d2541a73b5148c8ef4c8523db3a226fc6615 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 4 Oct 2024 20:26:14 -0700 Subject: [PATCH 128/353] fix display --- .../build/(controlBar)/inner-control-bar.tsx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/inner-control-bar.tsx b/mirror-2/app/space/[spaceId]/build/(controlBar)/inner-control-bar.tsx index 8e51d1ab..f686b73d 100644 --- a/mirror-2/app/space/[spaceId]/build/(controlBar)/inner-control-bar.tsx +++ b/mirror-2/app/space/[spaceId]/build/(controlBar)/inner-control-bar.tsx @@ -17,13 +17,13 @@ export default function InnerControlBar() { return (
        - {currentView === "scenes" && } - {currentView === "hierarchy" && } - {currentView === "assets" && } - {currentView === "code" && } - {currentView === "database" && } - {currentView === "versions" && } - {currentView === "settings" && } + + + + + + +
        From abc791d5331aed598120fa6442e7b759823c9fb4 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 4 Oct 2024 20:27:00 -0700 Subject: [PATCH 129/353] same --- .../build/(controlBar)/inner-control-bar.tsx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/inner-control-bar.tsx b/mirror-2/app/space/[spaceId]/build/(controlBar)/inner-control-bar.tsx index f686b73d..6bf9aa24 100644 --- a/mirror-2/app/space/[spaceId]/build/(controlBar)/inner-control-bar.tsx +++ b/mirror-2/app/space/[spaceId]/build/(controlBar)/inner-control-bar.tsx @@ -17,13 +17,13 @@ export default function InnerControlBar() { return (
        - - - - - - - + + + + + + +
        From e70bf12dd40507e327b0d2e49992604637a3094b Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 4 Oct 2024 20:50:34 -0700 Subject: [PATCH 130/353] asset search fixes --- .../[spaceId]/build/(controlBar)/assets.tsx | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx b/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx index 906759c8..28a38650 100644 --- a/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx +++ b/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx @@ -18,7 +18,7 @@ export default function Assets() { // define the form const form = useForm>({ resolver: zodResolver(formSchema), - mode: "onChange", + mode: "onSubmit", defaultValues: { text: "", }, @@ -34,20 +34,19 @@ export default function Assets() { throttledSubmit() } - // Reset the form values when the space data is fetched - useEffect(() => { - if (assets && isSuccess) { - form.reset({ - text: "", // Set the form value once space.name is available - }); - } - }, [isSuccess, form]); // Only run this effect when space or isLoading changes + // Watch the text input value + const watchedText = form.watch('text'); return (
        {/* Search bar */}
        - + { + const text = form.getValues("text") + if (text.length >= 3) { + form.handleSubmit(onSubmit) + } + }}> Date: Fri, 4 Oct 2024 21:10:31 -0700 Subject: [PATCH 131/353] real time text search --- .../[spaceId]/build/(controlBar)/assets.tsx | 21 +++++++++++-------- mirror-2/components/ui/form.tsx | 20 ++++++++++++++++++ 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx b/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx index 28a38650..0c977f69 100644 --- a/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx +++ b/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx @@ -6,7 +6,7 @@ import { XIcon } from 'lucide-react'; import { z } from "zod"; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; -import { Form, FormField, FormItem, FormControl, FormMessage } from '@/components/ui/form'; +import { Form, FormField, FormItem, FormControl, FormMessage, FormSuccessMessage } from '@/components/ui/form'; import { useLazySearchAssetsQuery } from '@/state/supabase'; import { useThrottleCallback } from '@react-hook/throttle' @@ -18,7 +18,7 @@ export default function Assets() { // define the form const form = useForm>({ resolver: zodResolver(formSchema), - mode: "onSubmit", + mode: "onChange", defaultValues: { text: "", }, @@ -35,18 +35,20 @@ export default function Assets() { } // Watch the text input value - const watchedText = form.watch('text'); + useEffect(() => { + const subscription = form.watch(({ text }, { name, type }) => { + if (text && text?.length >= 3) { + form.handleSubmit(onSubmit)() + } + }) + return () => subscription.unsubscribe() + }, []) return (
        {/* Search bar */} - { - const text = form.getValues("text") - if (text.length >= 3) { - form.handleSubmit(onSubmit) - } - }}> + {/* TODO add better styling for this so it doesn't shift the input field */} + {assets?.length} Results )} /> diff --git a/mirror-2/components/ui/form.tsx b/mirror-2/components/ui/form.tsx index e7ef2d8e..4808c7ec 100644 --- a/mirror-2/components/ui/form.tsx +++ b/mirror-2/components/ui/form.tsx @@ -10,6 +10,7 @@ import { FieldValues, FormProvider, useFormContext, + useFormState, } from "react-hook-form" import { cn } from "@/lib/utils" @@ -166,6 +167,24 @@ const FormMessage = React.forwardRef< }) FormMessage.displayName = "FormMessage" +const FormSuccessMessage = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, children, ...props }, ref) => { + const { isSubmitSuccessful } = useFormState() + + return ( + (isSubmitSuccessful &&

        + {children} +

        ) + ) +}) +FormSuccessMessage.displayName = "FormSuccessMessage" + export { useFormField, Form, @@ -174,5 +193,6 @@ export { FormControl, FormDescription, FormMessage, + FormSuccessMessage, FormField, } From 6af9f717c16b0474252009d60ac5e7d26a9b0bd3 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 4 Oct 2024 21:22:09 -0700 Subject: [PATCH 132/353] asset search --- .../space/[spaceId]/build/(controlBar)/assets.tsx | 14 +++++++------- mirror-2/state/supabase.tsx | 4 +++- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx b/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx index 0c977f69..65415e0c 100644 --- a/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx +++ b/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx @@ -27,7 +27,7 @@ export default function Assets() { const [triggerSearch, { data: assets, isLoading, isSuccess, error }] = useLazySearchAssetsQuery() const throttledSubmit = useThrottleCallback(() => { - triggerSearch({ text: form.getValues("text") }) + triggerSearch({ text: form.getValues("text")?.trim() }) }, 3, true) // the 4 if 4 FPS // 2. Define a submit handler. async function onSubmit(values: z.infer) { @@ -90,14 +90,14 @@ export default function Assets() { {/* Scrollable area that takes up remaining space */}
        - {assets?.map((image, index) => ( + {assets?.map((asset, index) => (
        - {image.text} -

        {image.text}

        + /> */} +

        {asset.name}

        ))}
        diff --git a/mirror-2/state/supabase.tsx b/mirror-2/state/supabase.tsx index bc07db9f..8d62c15c 100644 --- a/mirror-2/state/supabase.tsx +++ b/mirror-2/state/supabase.tsx @@ -125,8 +125,10 @@ export const supabaseApi = createApi({ queryFn: async ({ text }) => { const supabase = createSupabaseBrowserClient(); + // replace spaces with + + const friendlyText = text?.trim().replaceAll(" ", "&") const { data, error } = await supabase - .rpc("search_assets_by_name_prefix", { 'prefix': text }) + .rpc("search_assets_by_name_prefix", { 'prefix': friendlyText }) if (error) { return { error: error.message }; From dc9635b724b91c8cac955c1c97cc02c2eb674549 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 4 Oct 2024 21:39:28 -0700 Subject: [PATCH 133/353] add recent assets --- .../[spaceId]/build/(controlBar)/assets.tsx | 21 +++++++++++++--- mirror-2/state/supabase.tsx | 24 ++++++++++++++++++- 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx b/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx index 65415e0c..bd8c24b4 100644 --- a/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx +++ b/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx @@ -7,8 +7,9 @@ import { z } from "zod"; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { Form, FormField, FormItem, FormControl, FormMessage, FormSuccessMessage } from '@/components/ui/form'; -import { useLazySearchAssetsQuery } from '@/state/supabase'; +import { useLazyGetUserMostRecentlyUpdatedAssetsQuery, useLazySearchAssetsQuery } from '@/state/supabase'; import { useThrottleCallback } from '@react-hook/throttle' +import { Tables } from '@/utils/database.types'; const formSchema = z.object({ text: z.string().min(3) @@ -25,6 +26,7 @@ export default function Assets() { // errors: error TODO add error handling here }) const [triggerSearch, { data: assets, isLoading, isSuccess, error }] = useLazySearchAssetsQuery() + const [triggerGetUserMostRecentlyUpdatedAssets, { data: recentAssets }] = useLazyGetUserMostRecentlyUpdatedAssetsQuery({}) const throttledSubmit = useThrottleCallback(() => { triggerSearch({ text: form.getValues("text")?.trim() }) @@ -44,6 +46,10 @@ export default function Assets() { return () => subscription.unsubscribe() }, []) + useEffect(() => { + triggerGetUserMostRecentlyUpdatedAssets({}) + }, [triggerGetUserMostRecentlyUpdatedAssets]) + return (
        {/* Search bar */} @@ -90,14 +96,23 @@ export default function Assets() { {/* Scrollable area that takes up remaining space */}
        - {assets?.map((asset, index) => ( + {form.formState.isSubmitted ? assets?.map((asset, index) => ( +
        + {/* {name.text} */} +

        {asset?.name}

        +
        + )) : recentAssets?.map((asset, index) => (
        {/* {name.text} */} -

        {asset.name}

        +

        {asset?.name}

        ))}
        diff --git a/mirror-2/state/supabase.tsx b/mirror-2/state/supabase.tsx index 8d62c15c..3dea0132 100644 --- a/mirror-2/state/supabase.tsx +++ b/mirror-2/state/supabase.tsx @@ -121,6 +121,28 @@ export const supabaseApi = createApi({ } }), + + getUserMostRecentlyUpdatedAssets: builder.query({ + queryFn: async () => { + const supabase = createSupabaseBrowserClient(); + const { data: { user } } = await supabase.auth.getUser() + if (!user) { + throw new Error('User not found') + } + const { data, error } = await supabase + .from("assets") + .select("*") + .eq("owner_user_id", user.id) + .order("updated_at", { ascending: false }) + + if (error) { + return { error: error.message }; + } + return { data }; + } + }), + + searchAssets: builder.query({ queryFn: async ({ text }) => { const supabase = createSupabaseBrowserClient(); @@ -169,6 +191,6 @@ export const { /** * Assets */ - useSearchAssetsQuery, useLazySearchAssetsQuery, useGetSingleAssetQuery, useUpdateAssetMutation + useSearchAssetsQuery, useLazySearchAssetsQuery, useGetSingleAssetQuery, useLazyGetUserMostRecentlyUpdatedAssetsQuery, useUpdateAssetMutation } = supabaseApi From cf7d726776946969a96c6fa12f65d0543f0c5e17 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 4 Oct 2024 21:59:01 -0700 Subject: [PATCH 134/353] storage thumb --- .../[spaceId]/build/(controlBar)/assets.tsx | 21 +++-------- mirror-2/components/ui/asset-thumbnail.tsx | 33 ++++++++++++++++++ mirror-2/public/dev/150.jpg | Bin 0 -> 1058 bytes 3 files changed, 37 insertions(+), 17 deletions(-) create mode 100644 mirror-2/components/ui/asset-thumbnail.tsx create mode 100644 mirror-2/public/dev/150.jpg diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx b/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx index bd8c24b4..de1e4507 100644 --- a/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx +++ b/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx @@ -10,6 +10,7 @@ import { Form, FormField, FormItem, FormControl, FormMessage, FormSuccessMessage import { useLazyGetUserMostRecentlyUpdatedAssetsQuery, useLazySearchAssetsQuery } from '@/state/supabase'; import { useThrottleCallback } from '@react-hook/throttle' import { Tables } from '@/utils/database.types'; +import AssetThumbnail from '@/components/ui/asset-thumbnail'; const formSchema = z.object({ text: z.string().min(3) @@ -97,23 +98,9 @@ export default function Assets() {
        {form.formState.isSubmitted ? assets?.map((asset, index) => ( -
        - {/* {name.text} */} -

        {asset?.name}

        -
        - )) : recentAssets?.map((asset, index) => ( -
        - {/* {name.text} */} -

        {asset?.name}

        -
        + + )) : recentAssets?.map((asset) => ( + ))}
        diff --git a/mirror-2/components/ui/asset-thumbnail.tsx b/mirror-2/components/ui/asset-thumbnail.tsx new file mode 100644 index 00000000..def449a0 --- /dev/null +++ b/mirror-2/components/ui/asset-thumbnail.tsx @@ -0,0 +1,33 @@ + +import React, { useEffect, useState } from 'react'; +import Image from 'next/image'; + +interface AssetThumbnailProps { + imageUrl: string; + name: string; + size?: number; +} + +const AssetThumbnail: React.FC = ({ imageUrl, name, size = 64 }) => { + // primarily used for dev since haven't up storage on seed data 2024-10-04 21:58:50 + const [devImgSrc, setDevImgSrc] = useState(imageUrl); + useEffect(() => { + if (process.env.NODE_ENV === 'development') { + setDevImgSrc("/dev/150.jpg") + } + }, []) + return ( +
        + {name} +

        {name}

        +
        + ) +}; + +export default AssetThumbnail; diff --git a/mirror-2/public/dev/150.jpg b/mirror-2/public/dev/150.jpg new file mode 100644 index 0000000000000000000000000000000000000000..745c7d0d5cd187445e862060df7f8e4f785f55b5 GIT binary patch literal 1058 zcmex=jKe5@ci+Wc+`GL7IV)k%5^JNWcLrBNGcV8#_=^TY!OyiIJIwk(rqlD$U5m%)%sx(OD|nUb_Kckd)a&11H< zLEbChY_E%axZ+et!d;ymUjr8ZTDr6oUC=ho4gFV?rwjmizh-`c6UviRjMoe6a-CT+9IEj4+wS;?sF-rj$K6_AK$>^$lx)cxVw znG;MgCNdmRYkG8E$J^elSNplkj4$=w>s7VKkIYGVeD&WqjRwod?fo+TTSE@N{dRkC z9$$^FJU7?7x1za8(dwF(CF^e&H83zR3wZ?=)=Ax%F3ZkjrY!<7Of`Vz&s}M5qwl3x z?H)&4y7}39f4}jfP0q&9?wZNL))bBdO<}mJUs6O>r| literal 0 HcmV?d00001 From 64c191fa801e7d03e95be12f1a8554cb9a8dea16 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 4 Oct 2024 22:06:17 -0700 Subject: [PATCH 135/353] sidebar optimize --- .../[spaceId]/build/(controlBar)/assets.tsx | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx b/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx index de1e4507..d4b4b342 100644 --- a/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx +++ b/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx @@ -11,6 +11,7 @@ import { useLazyGetUserMostRecentlyUpdatedAssetsQuery, useLazySearchAssetsQuery import { useThrottleCallback } from '@react-hook/throttle' import { Tables } from '@/utils/database.types'; import AssetThumbnail from '@/components/ui/asset-thumbnail'; +import { ScrollArea } from '@radix-ui/react-scroll-area'; const formSchema = z.object({ text: z.string().min(3) @@ -96,13 +97,15 @@ export default function Assets() { {/* Scrollable area that takes up remaining space */}
        -
        - {form.formState.isSubmitted ? assets?.map((asset, index) => ( - - )) : recentAssets?.map((asset) => ( - - ))} -
        + +
        + {form.formState.isSubmitted ? assets?.map((asset, index) => ( + + )) : recentAssets?.map((asset) => ( + + ))} +
        +
        ); From 9ed491842481ea02cf0e5d09d1e1ae2223a6d9fe Mon Sep 17 00:00:00 2001 From: Kluskey Date: Sat, 5 Oct 2024 00:15:12 -0700 Subject: [PATCH 136/353] basic file upload! --- mirror-2/app/home/page.tsx | 4 + .../[spaceId]/build/(controlBar)/assets.tsx | 26 ++++- .../app/space/[spaceId]/build/top-navbar.tsx | 19 +--- .../components/ui/account-dropdown-menu.tsx | 30 +++++ .../ui/custom-buttons/asset-upload.button.tsx | 20 ++++ mirror-2/hooks/file-upload.tsx | 31 ++++++ mirror-2/next.config.js | 2 +- mirror-2/package.json | 2 + mirror-2/state/supabase.tsx | 71 +++++++++++- .../migrations/20240929043655_spaces.sql | 1 + .../migrations/20240929043656_assets.sql | 41 ++++++- mirror-2/supabase/seed.sql | 24 ++-- mirror-2/utils/database.types.ts | 24 ++-- mirror-2/yarn.lock | 103 +++++++++++++++++- 14 files changed, 354 insertions(+), 44 deletions(-) create mode 100644 mirror-2/components/ui/account-dropdown-menu.tsx create mode 100644 mirror-2/components/ui/custom-buttons/asset-upload.button.tsx create mode 100644 mirror-2/hooks/file-upload.tsx diff --git a/mirror-2/app/home/page.tsx b/mirror-2/app/home/page.tsx index 2accc2d3..5f12a254 100644 --- a/mirror-2/app/home/page.tsx +++ b/mirror-2/app/home/page.tsx @@ -14,9 +14,11 @@ import { ScrollArea, ScrollBar } from "@/components/ui/scroll-area" import Link from "next/link" import { appDescription, appName } from "@/lib/theme-service" import { Metadata } from "next" +import AccountDropdownMenu from "@/components/ui/account-dropdown-menu" export default function MusicPage() { + return ( <>
        @@ -63,7 +65,9 @@ export default function MusicPage() { +
        +
        diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx b/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx index d4b4b342..c1d1e24a 100644 --- a/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx +++ b/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx @@ -2,7 +2,7 @@ import { useEffect, useState } from 'react'; import { Input } from '@/components/ui/input'; import { Button } from '@/components/ui/button'; -import { XIcon } from 'lucide-react'; +import { Box, FileUp, PlusCircleIcon, XIcon } from 'lucide-react'; import { z } from "zod"; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; @@ -12,6 +12,9 @@ import { useThrottleCallback } from '@react-hook/throttle' import { Tables } from '@/utils/database.types'; import AssetThumbnail from '@/components/ui/asset-thumbnail'; import { ScrollArea } from '@radix-ui/react-scroll-area'; +import { useDropzone } from 'react-dropzone'; +import AssetUploadButton from '@/components/ui/custom-buttons/asset-upload.button'; +import { useGetFileUpload } from '@/hooks/file-upload'; const formSchema = z.object({ text: z.string().min(3) @@ -38,6 +41,16 @@ export default function Assets() { throttledSubmit() } + // file dropzone + const onDrop = useGetFileUpload() + + const { getRootProps, getInputProps, open, acceptedFiles } = useDropzone({ + // Disable click and keydown behavior + noClick: true, + noKeyboard: true, + onDrop + }); + // Watch the text input value useEffect(() => { const subscription = form.watch(({ text }, { name, type }) => { @@ -53,7 +66,7 @@ export default function Assets() { }, [triggerGetUserMostRecentlyUpdatedAssets]) return ( -
        +
        {/* Search bar */} @@ -94,15 +107,18 @@ export default function Assets() { + {/* Asset Upload Button */} + + {/* Scrollable area that takes up remaining space */}
        -
        +
        {form.formState.isSubmitted ? assets?.map((asset, index) => ( - + )) : recentAssets?.map((asset) => ( - + ))}
        diff --git a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx index 8288dc78..a68e5e01 100644 --- a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx +++ b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx @@ -1,6 +1,7 @@ "use client" import { EditableSpaceName } from "@/components/editable-space-name"; import { ThemeSwitcher } from "@/components/theme-switcher"; +import AccountDropdownMenu from "@/components/ui/account-dropdown-menu"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"; import { signOut } from "@/hooks/auth"; @@ -38,23 +39,7 @@ export function TopNavbar() { > Create Account } - - - - - - {localUserState?.email || "Welcome"} - - {process.env.NEXT_PUBLIC_DISCORD_INVITE_URL && Chat on Discord} - - signOut()} className="cursor-pointer"> - Logout - - - +
        ); } diff --git a/mirror-2/components/ui/account-dropdown-menu.tsx b/mirror-2/components/ui/account-dropdown-menu.tsx new file mode 100644 index 00000000..e6625034 --- /dev/null +++ b/mirror-2/components/ui/account-dropdown-menu.tsx @@ -0,0 +1,30 @@ +"use client" +import { Button } from "@/components/ui/button"; +import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"; +import { signOut } from "@/hooks/auth"; +import { useAppSelector } from "@/hooks/hooks"; +import { selectLocalUserState } from "@/state/local"; +import { CircleUser } from "lucide-react"; +import Link from "next/link"; + +export default function AccountDropdownMenu() { + const localUserState = useAppSelector(selectLocalUserState) + + return ( + + + + + {localUserState?.email || "Welcome"} + + {process.env.NEXT_PUBLIC_DISCORD_INVITE_URL && Chat on Discord} + + signOut()} className="cursor-pointer"> + Logout + + + ) +} diff --git a/mirror-2/components/ui/custom-buttons/asset-upload.button.tsx b/mirror-2/components/ui/custom-buttons/asset-upload.button.tsx new file mode 100644 index 00000000..2ca99ae0 --- /dev/null +++ b/mirror-2/components/ui/custom-buttons/asset-upload.button.tsx @@ -0,0 +1,20 @@ +import { Button } from "@/components/ui/button"; +import { useGetFileUpload } from "@/hooks/file-upload"; +import { FileUp } from "lucide-react"; +import { useDropzone } from "react-dropzone"; + +export default function AssetUploadButton() { + const onDrop = useGetFileUpload() + // file dropzone + const { getRootProps, getInputProps, open, acceptedFiles } = useDropzone({ onDrop }); + + return ( + <> + + + + ) +} diff --git a/mirror-2/hooks/file-upload.tsx b/mirror-2/hooks/file-upload.tsx new file mode 100644 index 00000000..eb353b3b --- /dev/null +++ b/mirror-2/hooks/file-upload.tsx @@ -0,0 +1,31 @@ +import { useCallback } from "react"; +import { useCreateAssetMutation } from "@/state/supabase"; +import { Database } from "@/utils/database.types"; + + +export function useGetFileUpload() { + // Get the mutation hook + const [createAsset] = useCreateAssetMutation(); + + return useCallback((acceptedFiles: File[]) => { + acceptedFiles.forEach((file) => { + // Create the asset record for each file uploaded + const assetData = { + name: file.name, // Use the file name as the asset name + // description: 'Auto-generated description', // TODO add description support + }; + + createAsset({ + assetData, // Asset data with name and description + file, // File to upload + }) + .unwrap() // Unwraps the result to handle promise resolution + .then((response) => { + console.log('File uploaded and asset created successfully:', response); + }) + .catch((error) => { + console.error('Error uploading file or creating asset:', error); + }); + }); + }, [createAsset]); +} diff --git a/mirror-2/next.config.js b/mirror-2/next.config.js index 4b10fa4d..c61491f3 100644 --- a/mirror-2/next.config.js +++ b/mirror-2/next.config.js @@ -13,7 +13,7 @@ const nextConfig = { } ], images: { - domains: ['images.unsplash.com'], + domains: ['images.unsplash.com', '127.0.0.1', 'localhost', 'picsum.photos'], }, }; diff --git a/mirror-2/package.json b/mirror-2/package.json index 4c8a5823..aab6ec5c 100644 --- a/mirror-2/package.json +++ b/mirror-2/package.json @@ -27,6 +27,7 @@ "@reduxjs/toolkit": "^2.2.7", "@supabase/ssr": "latest", "@supabase/supabase-js": "latest", + "ahooks": "^3.8.1", "autoprefixer": "10.4.17", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", @@ -38,6 +39,7 @@ "prettier": "^3.3.3", "react": "18.2.0", "react-dom": "18.2.0", + "react-dropzone": "^14.2.9", "react-hook-form": "^7.53.0", "react-redux": "^9.1.2", "react-resizable-panels": "^2.1.4", diff --git a/mirror-2/state/supabase.tsx b/mirror-2/state/supabase.tsx index 3dea0132..ab889362 100644 --- a/mirror-2/state/supabase.tsx +++ b/mirror-2/state/supabase.tsx @@ -1,8 +1,15 @@ "use client"; // we want to use client-side only because supabase tracks auth clientside import { generateSpaceName } from "@/actions/name-generator"; +import { Database } from "@/utils/database.types"; import { createSupabaseBrowserClient } from "@/utils/supabase/client"; import { createApi, fakeBaseQuery } from '@reduxjs/toolkit/query/react'; +export const ASSETS_BUCKET_USERS_FOLDER = 'users' // used for the assets bucket +export const ASSETS_BUCKET_VERSIONED_ASSETS_FOLDER = 'versioned' // generally immutable, used for space_versions (published Spaces/games) +export interface CreateAssetMutation { + name: string +} + export const supabaseApi = createApi({ reducerPath: 'supabaseApi', baseQuery: fakeBaseQuery(), @@ -103,6 +110,68 @@ export const supabaseApi = createApi({ // return { data }; // } // }), + createAsset: builder.mutation({ + queryFn: async ({ assetData, file }) => { + const supabase = createSupabaseBrowserClient(); + + + // Get the authenticated user + const { data: { user }, error: authError } = await supabase.auth.getUser(); + if (!user) { + return { error: 'User not found' }; + } + + + // Variable to store the file path (if file exists) + let filePath = ''; + + // Check if a file is passed for upload + if (file) { + // Generate a unique file name for Supabase Storage + filePath = `${ASSETS_BUCKET_USERS_FOLDER}/${file.name}`; + + // Upload the file to Supabase Storage + const { error: uploadError } = await supabase.storage + .from('assets') // Replace with your bucket name + .upload(filePath, file); + + // Handle file upload error + if (uploadError) { + return { error: uploadError.message }; + } + } + + // Create a thumbnail URL using Supabase transform + const { data: thumbnailUrl } = supabase.storage.from('assets').getPublicUrl(filePath, { + transform: { + width: 150, + height: 150 + } + }); + + + // Add the creator and owner user_id inline + const assetUploadData: Database['public']['Tables']['assets']['Insert'] = { + ...assetData, + creator_user_id: user.id, + owner_user_id: user.id, + file_url: `${supabase.storage.from('assets').getPublicUrl(filePath).data.publicUrl}`, + thumbnail_url: thumbnailUrl.publicUrl + } + + // Insert the asset in the "assets" table + const { data, error } = await supabase + .from("assets") + .insert([assetUploadData]) // Insert a new row with updateData + .single(); // Ensure only a single record is returned + + if (error) { + return { error: error.message }; + } + + return { data }; + } + }), getSingleAsset: builder.query({ queryFn: async (assetId) => { @@ -191,6 +260,6 @@ export const { /** * Assets */ - useSearchAssetsQuery, useLazySearchAssetsQuery, useGetSingleAssetQuery, useLazyGetUserMostRecentlyUpdatedAssetsQuery, useUpdateAssetMutation + useCreateAssetMutation, useSearchAssetsQuery, useLazySearchAssetsQuery, useGetSingleAssetQuery, useLazyGetUserMostRecentlyUpdatedAssetsQuery, useUpdateAssetMutation } = supabaseApi diff --git a/mirror-2/supabase/migrations/20240929043655_spaces.sql b/mirror-2/supabase/migrations/20240929043655_spaces.sql index 9193a0c1..333fd256 100644 --- a/mirror-2/supabase/migrations/20240929043655_spaces.sql +++ b/mirror-2/supabase/migrations/20240929043655_spaces.sql @@ -2,6 +2,7 @@ create table spaces ( id uuid not null primary key default uuid_generate_v4(), name text not null, description text, + public_page_image_urls text[] default '{}', owner_user_id uuid references auth.users(id) not null, -- owner is different from creator. Spaces can be transferred and we want to retain the creator creator_user_id uuid references auth.users(id) not null, created_at timestamp with time zone not null default now(), diff --git a/mirror-2/supabase/migrations/20240929043656_assets.sql b/mirror-2/supabase/migrations/20240929043656_assets.sql index d71bd024..83dbe447 100644 --- a/mirror-2/supabase/migrations/20240929043656_assets.sql +++ b/mirror-2/supabase/migrations/20240929043656_assets.sql @@ -4,8 +4,9 @@ create table assets ( owner_user_id uuid references auth.users(id) not null, -- owner is different from creator. Assets can be transferred and we want to retain the creator creator_user_id uuid references auth.users(id) not null, name text not null, - description text not null, - asset_url text not null, + description text, + file_url text not null, + thumbnail_url text not null, created_at timestamp with time zone not null default now(), updated_at timestamp with time zone not null default now() ); @@ -49,3 +50,39 @@ insert into storage.buckets (id, name, public) values ('assets', 'assets', true); + + +create policy "User can insert their own objects" +on storage.objects +for insert +to authenticated +with check ( + bucket_id = 'assets' and + owner_id = (select auth.uid()::text) -- Ensure the owner is the current authenticated user +); + +create policy "Anyone can read assets" +on storage.objects +for select +to authenticated +using ( + bucket_id = 'assets' +); + +create policy "User can update their own objects" +on storage.objects +for update +to authenticated +using ( + bucket_id = 'assets' and + owner_id = (select auth.uid()::text) -- Ensure the user owns the object they want to update +); + +create policy "User can delete their own objects" +on storage.objects +for delete +to authenticated +using ( + bucket_id = 'assets' and + owner_id = (select auth.uid()::text) -- Ensure the user owns the object they want to delete +); diff --git a/mirror-2/supabase/seed.sql b/mirror-2/supabase/seed.sql index 90667073..ed9942fc 100644 --- a/mirror-2/supabase/seed.sql +++ b/mirror-2/supabase/seed.sql @@ -34,12 +34,14 @@ DECLARE user_ids uuid[] := ARRAY[]::uuid[]; -- Array to store user IDs user_id uuid; profile_url TEXT; - asset_url TEXT; + file_url TEXT; + thumbnail_url TEXT; space_id uuid; scene_id uuid; entity_name TEXT; entity_id uuid; component_name TEXT; + public_page_image_urls text[]; BEGIN -- Loop to insert 15 users FOR i IN 1..15 LOOP @@ -59,25 +61,33 @@ BEGIN VALUES (user_id, format('User %s', i), format('This is the bio of user %s.', i), format('https://picsum.photos/seed/picsum/300/300', i)); - -- Insert 30 assets for each user, now including creator_user_id and owner_user_id + -- Insert 30 assets for each user, now including creator_user_id, owner_user_id, and thumbnail_url FOR j IN 1..30 LOOP - asset_url := format('https://picsum.photos/seed/picsum/800/600', i, j); -- Use %s for numbers + file_url := format('https://picsum.photos/seed/picsum/800/600', i, j); -- Use %s for numbers + thumbnail_url := format('https://picsum.photos/seed/picsum/200/150', i, j); -- Use %s for thumbnails INSERT INTO public.assets - (id, name, description, asset_url, creator_user_id, owner_user_id, created_at, updated_at) + (id, name, description, file_url, thumbnail_url, creator_user_id, owner_user_id, created_at, updated_at) VALUES - (gen_random_uuid(), format('Asset %s', j), 'This is a placeholder description for the asset.', asset_url, user_id, user_id, now(), now()); -- Added placeholder description + (gen_random_uuid(), format('Asset %s', j), 'This is a placeholder description for the asset.', file_url, thumbnail_url, user_id, user_id, now(), now()); -- Added thumbnail_url and description END LOOP; END LOOP; -- Insert spaces, using user_ids from the array and setting both owner_user_id and creator_user_id FOR i IN 1..45 LOOP + -- Create an array of image URLs for the space's public_page_image_urls + public_page_image_urls := ARRAY[ + format('https://picsum.photos/seed/picsum/%s/800', i), + format('https://picsum.photos/seed/picsum/%s/801', i), + format('https://picsum.photos/seed/picsum/%s/802', i) + ]; + -- Create a new space INSERT INTO public.spaces - (id, name, description, creator_user_id, owner_user_id, created_at, updated_at) + (id, name, description, public_page_image_urls, creator_user_id, owner_user_id, created_at, updated_at) VALUES - (gen_random_uuid(), format('Space %s', i), 'This is a placeholder description for the space.', user_ids[((i - 1) % 15) + 1], user_ids[((i - 1) % 15) + 1], now(), now()) -- Added placeholder description + (gen_random_uuid(), format('Space %s', i), 'This is a placeholder description for the space.', public_page_image_urls, user_ids[((i - 1) % 15) + 1], user_ids[((i - 1) % 15) + 1], now(), now()) -- Added public_page_image_urls and description RETURNING id INTO space_id; -- Capture the newly created space ID -- Insert 3 space_versions for each space diff --git a/mirror-2/utils/database.types.ts b/mirror-2/utils/database.types.ts index 055df187..c2f024c1 100644 --- a/mirror-2/utils/database.types.ts +++ b/mirror-2/utils/database.types.ts @@ -36,33 +36,36 @@ export type Database = { Tables: { assets: { Row: { - asset_url: string created_at: string creator_user_id: string - description: string + description: string | null + file_url: string id: string name: string owner_user_id: string + thumbnail_url: string updated_at: string } Insert: { - asset_url: string created_at?: string creator_user_id: string - description: string + description?: string | null + file_url: string id?: string name: string owner_user_id: string + thumbnail_url: string updated_at?: string } Update: { - asset_url?: string created_at?: string creator_user_id?: string - description?: string + description?: string | null + file_url?: string id?: string name?: string owner_user_id?: string + thumbnail_url?: string updated_at?: string } Relationships: [ @@ -254,6 +257,7 @@ export type Database = { id: string name: string owner_user_id: string + public_page_image_urls: string[] | null updated_at: string } Insert: { @@ -263,6 +267,7 @@ export type Database = { id?: string name: string owner_user_id: string + public_page_image_urls?: string[] | null updated_at?: string } Update: { @@ -272,6 +277,7 @@ export type Database = { id?: string name?: string owner_user_id?: string + public_page_image_urls?: string[] | null updated_at?: string } Relationships: [ @@ -346,13 +352,14 @@ export type Database = { prefix: string } Returns: { - asset_url: string created_at: string creator_user_id: string - description: string + description: string | null + file_url: string id: string name: string owner_user_id: string + thumbnail_url: string updated_at: string }[] } @@ -367,6 +374,7 @@ export type Database = { id: string name: string owner_user_id: string + public_page_image_urls: string[] | null updated_at: string }[] } diff --git a/mirror-2/yarn.lock b/mirror-2/yarn.lock index 92a5644a..d19b7bb9 100644 --- a/mirror-2/yarn.lock +++ b/mirror-2/yarn.lock @@ -7,6 +7,13 @@ resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== +"@babel/runtime@^7.21.0": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.7.tgz#7ffb53c37a8f247c8c4d335e89cdf16a2e0d0fb6" + integrity sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w== + dependencies: + regenerator-runtime "^0.14.0" + "@discoveryjs/json-ext@0.5.7": version "0.5.7" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" @@ -781,6 +788,21 @@ acorn@^8.0.4, acorn@^8.11.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== +ahooks@^3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/ahooks/-/ahooks-3.8.1.tgz#3a19d0e4085618a7a38a22a34b568c8d3fd974c0" + integrity sha512-JoP9+/RWO7MnI/uSKdvQ8WB10Y3oo1PjLv+4Sv4Vpm19Z86VUMdXh+RhWvMGxZZs06sq2p0xVtFk8Oh5ZObsoA== + dependencies: + "@babel/runtime" "^7.21.0" + dayjs "^1.9.1" + intersection-observer "^0.12.0" + js-cookie "^3.0.5" + lodash "^4.17.21" + react-fast-compare "^3.2.2" + resize-observer-polyfill "^1.5.1" + screenfull "^5.0.0" + tslib "^2.4.1" + ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -828,6 +850,11 @@ aria-hidden@^1.1.1: dependencies: tslib "^2.0.0" +attr-accept@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.2.tgz#646613809660110749e92f2c10833b70968d929b" + integrity sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg== + autoprefixer@10.4.17: version "10.4.17" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.17.tgz#35cd5695cbbe82f536a50fa025d561b01fdec8be" @@ -974,6 +1001,11 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== +dayjs@^1.9.1: + version "1.11.13" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c" + integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== + debounce@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" @@ -1047,6 +1079,13 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" +file-selector@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/file-selector/-/file-selector-0.6.0.tgz#fa0a8d9007b829504db4d07dd4de0310b65287dc" + integrity sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw== + dependencies: + tslib "^2.4.0" + fill-range@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" @@ -1147,6 +1186,11 @@ immer@^10.0.3: resolved "https://registry.yarnpkg.com/immer/-/immer-10.1.1.tgz#206f344ea372d8ea176891545ee53ccc062db7bc" integrity sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw== +intersection-observer@^0.12.0: + version "0.12.2" + resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.12.2.tgz#4a45349cc0cd91916682b1f44c28d7ec737dc375" + integrity sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg== + invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -1214,6 +1258,11 @@ jiti@^1.19.1: resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== +js-cookie@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-3.0.5.tgz#0b7e2fd0c01552c58ba86e0841f94dc2557dcdbc" + integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw== + "js-tokens@^3.0.0 || ^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -1234,7 +1283,12 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -loose-envify@^1.0.0, loose-envify@^1.1.0: +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -1338,7 +1392,7 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== -object-assign@^4.0.1: +object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -1480,6 +1534,15 @@ prettier@^3.3.3: resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -1493,11 +1556,30 @@ react-dom@18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" +react-dropzone@^14.2.9: + version "14.2.9" + resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-14.2.9.tgz#193a33f9035e29fc91abf24e50de5d66cfa7c8c0" + integrity sha512-jRZsMC7h48WONsOLHcmhyn3cRWJoIPQjPApvt/sJVfnYaB3Qltn025AoRTTJaj4WdmmgmLl6tUQg1s0wOhpodQ== + dependencies: + attr-accept "^2.2.2" + file-selector "^0.6.0" + prop-types "^15.8.1" + +react-fast-compare@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49" + integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== + react-hook-form@^7.53.0: version "7.53.0" resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.53.0.tgz#3cf70951bf41fa95207b34486203ebefbd3a05ab" integrity sha512-M1n3HhqCww6S2hxLxciEXy2oISPnAzxY7gvwVPrtlczTM/1dDadXgUxDpHMrMTblDOcm/AXtXxHwZ3jpg1mqKQ== +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + react-redux@^9.1.2: version "9.1.2" resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-9.1.2.tgz#deba38c64c3403e9abd0c3fbeab69ffd9d8a7e4b" @@ -1586,11 +1668,21 @@ redux@^5.0.1: resolved "https://registry.yarnpkg.com/redux/-/redux-5.0.1.tgz#97fa26881ce5746500125585d5642c77b6e9447b" integrity sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w== +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + reselect@^5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/reselect/-/reselect-5.1.1.tgz#c766b1eb5d558291e5e550298adb0becc24bb72e" integrity sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w== +resize-observer-polyfill@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + resolve@^1.1.7, resolve@^1.22.2: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" @@ -1619,6 +1711,11 @@ scheduler@^0.23.0: dependencies: loose-envify "^1.1.0" +screenfull@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-5.2.0.tgz#6533d524d30621fc1283b9692146f3f13a93d1ba" + integrity sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA== + server-only@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/server-only/-/server-only-0.0.1.tgz#0f366bb6afb618c37c9255a314535dc412cd1c9e" @@ -1793,7 +1890,7 @@ ts-interface-checker@^0.1.9: resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== -tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0: +tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.4.1: version "2.7.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== From 019b1eafec2c9a0e67d4c2bc3926cfbfdd9982b9 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Sat, 5 Oct 2024 00:17:41 -0700 Subject: [PATCH 137/353] lift dropzone --- .../[spaceId]/build/(controlBar)/assets.tsx | 33 +++++++------------ .../build/(controlBar)/control-bar.tsx | 14 +++++++- 2 files changed, 24 insertions(+), 23 deletions(-) diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx b/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx index c1d1e24a..8c8f2fc5 100644 --- a/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx +++ b/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx @@ -1,20 +1,17 @@ 'use client'; -import { useEffect, useState } from 'react'; -import { Input } from '@/components/ui/input'; +import AssetThumbnail from '@/components/ui/asset-thumbnail'; import { Button } from '@/components/ui/button'; -import { Box, FileUp, PlusCircleIcon, XIcon } from 'lucide-react'; -import { z } from "zod"; -import { useForm } from 'react-hook-form'; -import { zodResolver } from '@hookform/resolvers/zod'; -import { Form, FormField, FormItem, FormControl, FormMessage, FormSuccessMessage } from '@/components/ui/form'; +import AssetUploadButton from '@/components/ui/custom-buttons/asset-upload.button'; +import { Form, FormControl, FormField, FormItem, FormMessage, FormSuccessMessage } from '@/components/ui/form'; +import { Input } from '@/components/ui/input'; import { useLazyGetUserMostRecentlyUpdatedAssetsQuery, useLazySearchAssetsQuery } from '@/state/supabase'; -import { useThrottleCallback } from '@react-hook/throttle' -import { Tables } from '@/utils/database.types'; -import AssetThumbnail from '@/components/ui/asset-thumbnail'; +import { zodResolver } from '@hookform/resolvers/zod'; import { ScrollArea } from '@radix-ui/react-scroll-area'; -import { useDropzone } from 'react-dropzone'; -import AssetUploadButton from '@/components/ui/custom-buttons/asset-upload.button'; -import { useGetFileUpload } from '@/hooks/file-upload'; +import { useThrottleCallback } from '@react-hook/throttle'; +import { XIcon } from 'lucide-react'; +import { useEffect } from 'react'; +import { useForm } from 'react-hook-form'; +import { z } from "zod"; const formSchema = z.object({ text: z.string().min(3) @@ -41,15 +38,7 @@ export default function Assets() { throttledSubmit() } - // file dropzone - const onDrop = useGetFileUpload() - const { getRootProps, getInputProps, open, acceptedFiles } = useDropzone({ - // Disable click and keydown behavior - noClick: true, - noKeyboard: true, - onDrop - }); // Watch the text input value useEffect(() => { @@ -66,7 +55,7 @@ export default function Assets() { }, [triggerGetUserMostRecentlyUpdatedAssets]) return ( -
        +
        {/* Search bar */}
        diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/control-bar.tsx b/mirror-2/app/space/[spaceId]/build/(controlBar)/control-bar.tsx index e2edae6a..7f879968 100644 --- a/mirror-2/app/space/[spaceId]/build/(controlBar)/control-bar.tsx +++ b/mirror-2/app/space/[spaceId]/build/(controlBar)/control-bar.tsx @@ -3,9 +3,11 @@ import { Button } from "@/components/ui/button"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip"; import { useUiHoverSoundEffect } from "@/components/ui/ui-sounds"; +import { useGetFileUpload } from "@/hooks/file-upload"; import { useAppDispatch, useAppSelector } from "@/hooks/hooks"; import { ControlBarView, selectControlBarCurrentView, selectUiSoundsCanPlay, setControlBarCurrentView, turnOffUiSounds, turnOnUiSounds } from "@/state/local"; import { Box, Clapperboard, Code2, Database, GitBranch, ListTree, Settings, Volume2, VolumeOff } from "lucide-react"; +import { useDropzone } from "react-dropzone"; export default function ControlBar() { const currentView = useAppSelector(selectControlBarCurrentView); @@ -25,8 +27,18 @@ export default function ControlBar() { return currentView === view ? "default" : "ghost"; }; + // file dropzone + const onDrop = useGetFileUpload() + + const { getRootProps, getInputProps, open, acceptedFiles } = useDropzone({ + // Disable click and keydown behavior + noClick: true, + noKeyboard: true, + onDrop + }); + return ( - +
        ); diff --git a/mirror-2/app/space/[spaceId]/play/page.tsx b/mirror-2/app/space/[spaceId]/play/page.tsx new file mode 100644 index 00000000..4eed982e --- /dev/null +++ b/mirror-2/app/space/[spaceId]/play/page.tsx @@ -0,0 +1,6 @@ +import { Play } from "@/app/space/[spaceId]/play/play"; + +// separating this out for server-side vs client +export default function PlayPage() { + return +} diff --git a/mirror-2/app/space/[spaceId]/play/play.tsx b/mirror-2/app/space/[spaceId]/play/play.tsx new file mode 100644 index 00000000..d444a9c2 --- /dev/null +++ b/mirror-2/app/space/[spaceId]/play/play.tsx @@ -0,0 +1,7 @@ +"use client" + +import SpaceViewport from "@/app/space/[spaceId]/build/space-viewport" + +export function Play() { + return +} diff --git a/mirror-2/components/ui/button.tsx b/mirror-2/components/ui/button.tsx index c1271eac..d0564398 100644 --- a/mirror-2/components/ui/button.tsx +++ b/mirror-2/components/ui/button.tsx @@ -10,10 +10,14 @@ const buttonVariants = cva( variants: { variant: { default: "bg-primary text-primary-foreground hover:bg-primary/90 delay-0", + // accent: "bg-accent text-muted-foreground font-bold hover:bg-accent/90 delay-0", + destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90", outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground", + outlineAccent: + "border border-input border-accent bg-background hover:bg-accent hover:text-accent-foreground", secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80", ghost: "hover:bg-accent hover:text-accent-foreground", From a43dc5b27a4cf9393ace5d34ac82f8eaf67da782 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Wed, 9 Oct 2024 15:30:56 -0700 Subject: [PATCH 221/353] play build working --- .../app/(auth-pages)/create-account/page.tsx | 1 + mirror-2/app/(auth-pages)/login/page.tsx | 2 +- .../NodeService.tsx | 0 .../{(controlBar) => controlBar}/assets.tsx | 0 .../{(controlBar) => controlBar}/code.tsx | 2 +- .../control-bar.tsx | 0 .../{(controlBar) => controlBar}/database.tsx | 0 .../{(controlBar) => controlBar}/hierarchy.tsx | 0 .../inner-control-bar.tsx | 16 ++++++++-------- .../{(controlBar) => controlBar}/layout.tsx | 4 ++-- .../{(controlBar) => controlBar}/loading.tsx | 0 .../{(controlBar) => controlBar}/page.tsx | 0 .../{(controlBar) => controlBar}/scenes.tsx | 0 .../{(controlBar) => controlBar}/settings.tsx | 0 .../skeleton-card.tsx | 0 .../{(controlBar) => controlBar}/versions.tsx | 0 mirror-2/app/space/[spaceId]/build/layout.tsx | 4 ++-- mirror-2/app/space/[spaceId]/build/page.tsx | 2 ++ mirror-2/app/space/[spaceId]/build/sidebar.tsx | 4 ++-- .../app/space/[spaceId]/build/top-navbar.tsx | 14 +++++++++++++- mirror-2/app/space/[spaceId]/play/layout.tsx | 6 ++++++ mirror-2/app/space/[spaceId]/play/page.tsx | 5 ++--- mirror-2/state/entities.tsx | 18 ++++++++++++++---- 23 files changed, 54 insertions(+), 24 deletions(-) rename mirror-2/app/space/[spaceId]/build/{(controlBar) => controlBar}/NodeService.tsx (100%) rename mirror-2/app/space/[spaceId]/build/{(controlBar) => controlBar}/assets.tsx (100%) rename mirror-2/app/space/[spaceId]/build/{(controlBar) => controlBar}/code.tsx (60%) rename mirror-2/app/space/[spaceId]/build/{(controlBar) => controlBar}/control-bar.tsx (100%) rename mirror-2/app/space/[spaceId]/build/{(controlBar) => controlBar}/database.tsx (100%) rename mirror-2/app/space/[spaceId]/build/{(controlBar) => controlBar}/hierarchy.tsx (100%) rename mirror-2/app/space/[spaceId]/build/{(controlBar) => controlBar}/inner-control-bar.tsx (74%) rename mirror-2/app/space/[spaceId]/build/{(controlBar) => controlBar}/layout.tsx (63%) rename mirror-2/app/space/[spaceId]/build/{(controlBar) => controlBar}/loading.tsx (100%) rename mirror-2/app/space/[spaceId]/build/{(controlBar) => controlBar}/page.tsx (100%) rename mirror-2/app/space/[spaceId]/build/{(controlBar) => controlBar}/scenes.tsx (100%) rename mirror-2/app/space/[spaceId]/build/{(controlBar) => controlBar}/settings.tsx (100%) rename mirror-2/app/space/[spaceId]/build/{(controlBar) => controlBar}/skeleton-card.tsx (100%) rename mirror-2/app/space/[spaceId]/build/{(controlBar) => controlBar}/versions.tsx (100%) create mode 100644 mirror-2/app/space/[spaceId]/play/layout.tsx diff --git a/mirror-2/app/(auth-pages)/create-account/page.tsx b/mirror-2/app/(auth-pages)/create-account/page.tsx index aee6a41b..e989679a 100644 --- a/mirror-2/app/(auth-pages)/create-account/page.tsx +++ b/mirror-2/app/(auth-pages)/create-account/page.tsx @@ -1,3 +1,4 @@ +"use client" import { createAccountAction, loginAction } from "@/actions/auth"; import { FormMessage, Message } from "@/components/form-message"; import { SubmitButton } from "@/components/submit-button"; diff --git a/mirror-2/app/(auth-pages)/login/page.tsx b/mirror-2/app/(auth-pages)/login/page.tsx index 4cbcdd81..26ef1228 100644 --- a/mirror-2/app/(auth-pages)/login/page.tsx +++ b/mirror-2/app/(auth-pages)/login/page.tsx @@ -28,7 +28,7 @@ export default function Login({ searchParams }: { searchParams: Message }) { // Simulate form submission by calling formAction // Since the SubmitButton uses formAction, this will trigger loginAction - document.getElementById("login-form")?.requestSubmit(); + (document.getElementById("login-form") as HTMLFormElement)?.requestSubmit(); }; return ( diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/NodeService.tsx b/mirror-2/app/space/[spaceId]/build/controlBar/NodeService.tsx similarity index 100% rename from mirror-2/app/space/[spaceId]/build/(controlBar)/NodeService.tsx rename to mirror-2/app/space/[spaceId]/build/controlBar/NodeService.tsx diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx b/mirror-2/app/space/[spaceId]/build/controlBar/assets.tsx similarity index 100% rename from mirror-2/app/space/[spaceId]/build/(controlBar)/assets.tsx rename to mirror-2/app/space/[spaceId]/build/controlBar/assets.tsx diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/code.tsx b/mirror-2/app/space/[spaceId]/build/controlBar/code.tsx similarity index 60% rename from mirror-2/app/space/[spaceId]/build/(controlBar)/code.tsx rename to mirror-2/app/space/[spaceId]/build/controlBar/code.tsx index 84e232cc..ad432f13 100644 --- a/mirror-2/app/space/[spaceId]/build/(controlBar)/code.tsx +++ b/mirror-2/app/space/[spaceId]/build/controlBar/code.tsx @@ -1,5 +1,5 @@ 'use client'; -import ControlBar from "@/app/space/[spaceId]/build/(controlBar)/control-bar"; +import ControlBar from "@/app/space/[spaceId]/build/controlBar/control-bar"; import { Suspense } from "react"; export default function Code() { diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/control-bar.tsx b/mirror-2/app/space/[spaceId]/build/controlBar/control-bar.tsx similarity index 100% rename from mirror-2/app/space/[spaceId]/build/(controlBar)/control-bar.tsx rename to mirror-2/app/space/[spaceId]/build/controlBar/control-bar.tsx diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/database.tsx b/mirror-2/app/space/[spaceId]/build/controlBar/database.tsx similarity index 100% rename from mirror-2/app/space/[spaceId]/build/(controlBar)/database.tsx rename to mirror-2/app/space/[spaceId]/build/controlBar/database.tsx diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/hierarchy.tsx b/mirror-2/app/space/[spaceId]/build/controlBar/hierarchy.tsx similarity index 100% rename from mirror-2/app/space/[spaceId]/build/(controlBar)/hierarchy.tsx rename to mirror-2/app/space/[spaceId]/build/controlBar/hierarchy.tsx diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/inner-control-bar.tsx b/mirror-2/app/space/[spaceId]/build/controlBar/inner-control-bar.tsx similarity index 74% rename from mirror-2/app/space/[spaceId]/build/(controlBar)/inner-control-bar.tsx rename to mirror-2/app/space/[spaceId]/build/controlBar/inner-control-bar.tsx index fb728fa5..f60712a0 100644 --- a/mirror-2/app/space/[spaceId]/build/(controlBar)/inner-control-bar.tsx +++ b/mirror-2/app/space/[spaceId]/build/controlBar/inner-control-bar.tsx @@ -1,13 +1,13 @@ 'use client'; -import Assets from "@/app/space/[spaceId]/build/(controlBar)/assets"; -import Code from "@/app/space/[spaceId]/build/(controlBar)/code"; -import Database from "@/app/space/[spaceId]/build/(controlBar)/database"; -import Hierarchy from "@/app/space/[spaceId]/build/(controlBar)/hierarchy"; -import Scenes from "@/app/space/[spaceId]/build/(controlBar)/scenes"; -import Settings from "@/app/space/[spaceId]/build/(controlBar)/settings"; -import { SkeletonCard } from "@/app/space/[spaceId]/build/(controlBar)/skeleton-card"; -import Versions from "@/app/space/[spaceId]/build/(controlBar)/versions"; +import Assets from "@/app/space/[spaceId]/build/controlBar/assets"; +import Code from "@/app/space/[spaceId]/build/controlBar/code"; +import Database from "@/app/space/[spaceId]/build/controlBar/database"; +import Hierarchy from "@/app/space/[spaceId]/build/controlBar/hierarchy"; +import Scenes from "@/app/space/[spaceId]/build/controlBar/scenes"; +import Settings from "@/app/space/[spaceId]/build/controlBar/settings"; +import { SkeletonCard } from "@/app/space/[spaceId]/build/controlBar/skeleton-card"; +import Versions from "@/app/space/[spaceId]/build/controlBar/versions"; import { useGetFileUpload } from "@/hooks/file-upload"; import { useAppSelector } from "@/hooks/hooks"; import { selectControlBarCurrentView } from "@/state/local"; diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/layout.tsx b/mirror-2/app/space/[spaceId]/build/controlBar/layout.tsx similarity index 63% rename from mirror-2/app/space/[spaceId]/build/(controlBar)/layout.tsx rename to mirror-2/app/space/[spaceId]/build/controlBar/layout.tsx index f924a698..f86f72da 100644 --- a/mirror-2/app/space/[spaceId]/build/(controlBar)/layout.tsx +++ b/mirror-2/app/space/[spaceId]/build/controlBar/layout.tsx @@ -1,5 +1,5 @@ -import ControlBar from '@/app/space/[spaceId]/build/(controlBar)/control-bar' -import InnerControlBar from '@/app/space/[spaceId]/build/(controlBar)/inner-control-bar' +import ControlBar from '@/app/space/[spaceId]/build/controlBar/control-bar' +import InnerControlBar from '@/app/space/[spaceId]/build/controlBar/inner-control-bar' export default function Layout({ children }: { children: React.ReactNode }) { return ( diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/loading.tsx b/mirror-2/app/space/[spaceId]/build/controlBar/loading.tsx similarity index 100% rename from mirror-2/app/space/[spaceId]/build/(controlBar)/loading.tsx rename to mirror-2/app/space/[spaceId]/build/controlBar/loading.tsx diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/page.tsx b/mirror-2/app/space/[spaceId]/build/controlBar/page.tsx similarity index 100% rename from mirror-2/app/space/[spaceId]/build/(controlBar)/page.tsx rename to mirror-2/app/space/[spaceId]/build/controlBar/page.tsx diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/scenes.tsx b/mirror-2/app/space/[spaceId]/build/controlBar/scenes.tsx similarity index 100% rename from mirror-2/app/space/[spaceId]/build/(controlBar)/scenes.tsx rename to mirror-2/app/space/[spaceId]/build/controlBar/scenes.tsx diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/settings.tsx b/mirror-2/app/space/[spaceId]/build/controlBar/settings.tsx similarity index 100% rename from mirror-2/app/space/[spaceId]/build/(controlBar)/settings.tsx rename to mirror-2/app/space/[spaceId]/build/controlBar/settings.tsx diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/skeleton-card.tsx b/mirror-2/app/space/[spaceId]/build/controlBar/skeleton-card.tsx similarity index 100% rename from mirror-2/app/space/[spaceId]/build/(controlBar)/skeleton-card.tsx rename to mirror-2/app/space/[spaceId]/build/controlBar/skeleton-card.tsx diff --git a/mirror-2/app/space/[spaceId]/build/(controlBar)/versions.tsx b/mirror-2/app/space/[spaceId]/build/controlBar/versions.tsx similarity index 100% rename from mirror-2/app/space/[spaceId]/build/(controlBar)/versions.tsx rename to mirror-2/app/space/[spaceId]/build/controlBar/versions.tsx diff --git a/mirror-2/app/space/[spaceId]/build/layout.tsx b/mirror-2/app/space/[spaceId]/build/layout.tsx index 5128a0f1..94518c63 100644 --- a/mirror-2/app/space/[spaceId]/build/layout.tsx +++ b/mirror-2/app/space/[spaceId]/build/layout.tsx @@ -1,9 +1,9 @@ -import InnerControlBar from "@/app/space/[spaceId]/build/(controlBar)/inner-control-bar" +import InnerControlBar from "@/app/space/[spaceId]/build/controlBar/inner-control-bar" import { Sidebar } from "@/app/space/[spaceId]/build/sidebar" import SpaceViewport from "@/app/space/[spaceId]/build/space-viewport" import { TopNavbar } from "@/app/space/[spaceId]/build/top-navbar" -export default async function Layout({ children, params }: { +export default function Layout({ children, params }: { children: React.ReactNode, spaceViewport: React.ReactNode, params: { spaceId: string } diff --git a/mirror-2/app/space/[spaceId]/build/page.tsx b/mirror-2/app/space/[spaceId]/build/page.tsx index c2a5e794..bb173330 100644 --- a/mirror-2/app/space/[spaceId]/build/page.tsx +++ b/mirror-2/app/space/[spaceId]/build/page.tsx @@ -7,6 +7,7 @@ import { useGetSingleSpaceQuery } from "@/state/spaces" import { useParams } from "next/navigation" import { useEffect } from "react" +import dynamic from "next/dynamic" // blank page since we're using the parallel routes for spaceViewport, controlBar, etc. @@ -14,6 +15,7 @@ export default function Page() { const params = useParams<{ spaceId: string }>() const { data: space, error } = useGetSingleSpaceQuery(params.spaceId) const { data: scenes, isLoading: isScenesLoading } = useGetAllScenesQuery(params.spaceId) + // after successful query, update the current scene to the first in the space.scenes array const dispatch = useAppDispatch(); useEffect(() => { diff --git a/mirror-2/app/space/[spaceId]/build/sidebar.tsx b/mirror-2/app/space/[spaceId]/build/sidebar.tsx index ae33b8bd..7187c918 100644 --- a/mirror-2/app/space/[spaceId]/build/sidebar.tsx +++ b/mirror-2/app/space/[spaceId]/build/sidebar.tsx @@ -1,5 +1,5 @@ -import ControlBar from "@/app/space/[spaceId]/build/(controlBar)/control-bar"; -import controlBar from "@/app/space/[spaceId]/build/(controlBar)/control-bar"; +import ControlBar from "@/app/space/[spaceId]/build/controlBar/control-bar"; +import controlBar from "@/app/space/[spaceId]/build/controlBar/control-bar"; import { ResizablePanelGroup, ResizablePanel, ResizableHandle } from "@/components/ui/resizable"; export function Sidebar() { diff --git a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx index b8c052ed..07cf943c 100644 --- a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx +++ b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx @@ -12,6 +12,7 @@ import { CircleUser, Play } from "lucide-react"; import Link from "next/link"; import { useParams } from "next/navigation"; import { useEffect, useState } from "react"; +import { useRouter } from 'next/navigation' export function TopNavbar() { const localUserState = useAppSelector(selectLocalUserState) @@ -22,6 +23,16 @@ export function TopNavbar() { useEffect(() => { setHasMounted(true); }, []); + + // prefetch /play for speed + + const router = useRouter() + useEffect(() => { + // console.log('prefetch play') + // router.prefetch(`/space/${params.spaceId}/play`); + // const PlayPage = dynamic(() => import(`@/app/space/${params.spaceId}/build`), { ssr: false }); + }, [params.spaceId]); + return (
        @@ -39,8 +50,9 @@ export function TopNavbar() { asChild variant={"outlineAccent"} className="hover:text-white" + > - + Play diff --git a/mirror-2/app/space/[spaceId]/play/layout.tsx b/mirror-2/app/space/[spaceId]/play/layout.tsx new file mode 100644 index 00000000..392000b9 --- /dev/null +++ b/mirror-2/app/space/[spaceId]/play/layout.tsx @@ -0,0 +1,6 @@ +import { Play } from "@/app/space/[spaceId]/play/play"; + +// separating this out for server-side vs client +export default function PlayLayout() { + return +} diff --git a/mirror-2/app/space/[spaceId]/play/page.tsx b/mirror-2/app/space/[spaceId]/play/page.tsx index 4eed982e..d77e1e1b 100644 --- a/mirror-2/app/space/[spaceId]/play/page.tsx +++ b/mirror-2/app/space/[spaceId]/play/page.tsx @@ -1,6 +1,5 @@ -import { Play } from "@/app/space/[spaceId]/play/play"; -// separating this out for server-side vs client + export default function PlayPage() { - return + return <> } diff --git a/mirror-2/state/entities.tsx b/mirror-2/state/entities.tsx index bb0d0126..93a2f2fe 100644 --- a/mirror-2/state/entities.tsx +++ b/mirror-2/state/entities.tsx @@ -13,7 +13,7 @@ export const entitiesApi = createApi({ tagTypes: [TAG_NAME_FOR_GENERAL_ENTITY, 'LIST', TAG_NAME_FOR_BUILD_MODE_SPACE_QUERY], endpoints: (builder) => ({ - createEntity: builder.mutation({ + createEntity: builder.mutation({ queryFn: async ({ name, scene_id, parent_id, order_under_parent, isRootEntity }) => { const supabase = createSupabaseBrowserClient(); const { data: { user }, error: authError } = await supabase.auth.getUser(); @@ -62,7 +62,7 @@ export const entitiesApi = createApi({ const { data, error } = await supabase .from("entities") .insert({ - name, + name: name, scene_id, parent_id, order_under_parent, @@ -163,7 +163,7 @@ export const entitiesApi = createApi({ return { error: parentEntityError.message }; } // find the highest order_under_parent - const highestOrderUnderParent = entitiesWithSameParent.reduce((max, entity) => { + const highestOrderUnderParent = entitiesWithSameParent.reduce((max, entity: any) => { return entity.order_under_parent > max ? entity.order_under_parent : max; }, -1); order_under_parent = highestOrderUnderParent + 1; @@ -218,12 +218,22 @@ export const entitiesApi = createApi({ const entitiesToUpsert = entities.map(newEntity => { const existingEntity = existingEntities.find(e => e.id === newEntity.id); + if (existingEntity === undefined) { + throw new Error(`Entity with ID ${(existingEntity as any).id} doesn't exist`); + } + // Merge existing entity fields with new updates - return { + const data = { ...existingEntity, // Existing entity data ...newEntity, // New updates, this will override fields like name, scene_id, etc. updated_at: new Date().toISOString(), // Update timestamp }; + + if (!existingEntity?.name) { + throw new Error(`Entity with ID ${existingEntity?.id} is missing a name`); + } + + return data }); // Perform the batch upsert From f78b6cbe063ae8e30221ac86498ef67996655bc0 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Wed, 9 Oct 2024 15:31:55 -0700 Subject: [PATCH 222/353] typo --- mirror-2/app/home/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mirror-2/app/home/page.tsx b/mirror-2/app/home/page.tsx index 5f12a254..b9e345ca 100644 --- a/mirror-2/app/home/page.tsx +++ b/mirror-2/app/home/page.tsx @@ -58,7 +58,7 @@ export default function MusicPage() { The Next Era of The Mirror

        - Weclome, let's build. + Welcome, let's build.

        From 75e1a35d7d39c2925fd0eab9dd0fd4d05a608b69 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Wed, 9 Oct 2024 15:33:07 -0700 Subject: [PATCH 223/353] clean --- mirror-2/app/space/[spaceId]/build/top-navbar.tsx | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx index 07cf943c..2915dbad 100644 --- a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx +++ b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx @@ -3,16 +3,13 @@ import { EditableSpaceName } from "@/components/editable-space-name"; import { ThemeSwitcher } from "@/components/theme-switcher"; import AccountDropdownMenu from "@/components/ui/account-dropdown-menu"; import { Button } from "@/components/ui/button"; -import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"; -import { signOut } from "@/hooks/auth"; import { useAppSelector } from "@/hooks/hooks"; import { AppLogoImageSmall } from "@/lib/theme-service"; import { selectLocalUserState } from "@/state/local"; -import { CircleUser, Play } from "lucide-react"; +import { Play } from "lucide-react"; import Link from "next/link"; import { useParams } from "next/navigation"; import { useEffect, useState } from "react"; -import { useRouter } from 'next/navigation' export function TopNavbar() { const localUserState = useAppSelector(selectLocalUserState) @@ -24,15 +21,6 @@ export function TopNavbar() { setHasMounted(true); }, []); - // prefetch /play for speed - - const router = useRouter() - useEffect(() => { - // console.log('prefetch play') - // router.prefetch(`/space/${params.spaceId}/play`); - // const PlayPage = dynamic(() => import(`@/app/space/${params.spaceId}/build`), { ssr: false }); - }, [params.spaceId]); - return (
        From 7cd549828d40903cae1971eea2f96d0a92c9870a Mon Sep 17 00:00:00 2001 From: Kluskey Date: Wed, 9 Oct 2024 15:45:59 -0700 Subject: [PATCH 224/353] new scene creates 2 entities --- .../app/space/[spaceId]/build/controlBar/scenes.tsx | 2 +- mirror-2/app/space/[spaceId]/build/page.tsx | 4 +++- .../ui/custom-buttons/asset-upload.button.tsx | 2 +- mirror-2/state/scenes.tsx | 12 ++++++++++++ mirror-2/state/spaces.tsx | 5 +---- 5 files changed, 18 insertions(+), 7 deletions(-) diff --git a/mirror-2/app/space/[spaceId]/build/controlBar/scenes.tsx b/mirror-2/app/space/[spaceId]/build/controlBar/scenes.tsx index 809985a6..89322c6a 100644 --- a/mirror-2/app/space/[spaceId]/build/controlBar/scenes.tsx +++ b/mirror-2/app/space/[spaceId]/build/controlBar/scenes.tsx @@ -43,7 +43,7 @@ export default function Scenes() { {scenes?.map((scene) => (
        { // Handle scene click dispatch(setCurrentScene(scene)); diff --git a/mirror-2/app/space/[spaceId]/build/page.tsx b/mirror-2/app/space/[spaceId]/build/page.tsx index bb173330..0603ab38 100644 --- a/mirror-2/app/space/[spaceId]/build/page.tsx +++ b/mirror-2/app/space/[spaceId]/build/page.tsx @@ -23,8 +23,10 @@ export default function Page() { if (scenes?.length > 0 && scenes[0]) { console.log("setting current scene to first scene", scenes[0]) dispatch(setCurrentScene(scenes[0])) + } else { + console.log('No scenes to set', scenes) } - }, [space]) + }, [space, scenes]) return null } diff --git a/mirror-2/components/ui/custom-buttons/asset-upload.button.tsx b/mirror-2/components/ui/custom-buttons/asset-upload.button.tsx index 2ca99ae0..86357f53 100644 --- a/mirror-2/components/ui/custom-buttons/asset-upload.button.tsx +++ b/mirror-2/components/ui/custom-buttons/asset-upload.button.tsx @@ -11,7 +11,7 @@ export default function AssetUploadButton() { return ( <> - diff --git a/mirror-2/state/scenes.tsx b/mirror-2/state/scenes.tsx index b2e8d4ef..672b7169 100644 --- a/mirror-2/state/scenes.tsx +++ b/mirror-2/state/scenes.tsx @@ -49,6 +49,10 @@ export const scenesApi = createApi({ .is("parent_id", null) .maybeSingle(); + if (entityCheckError) { + return { error: entityCheckError }; + } + if (!entityCheck) { const { data: createEntityData, error: createEntityError } = await dispatch( entitiesApi.endpoints.createEntity.initiate({ name: "Root", scene_id: data.id, isRootEntity: true }) @@ -56,6 +60,14 @@ export const scenesApi = createApi({ if (createEntityError) { return { error: createEntityError }; } + + // create blank entity for the root entity bc this is a flow the user will always do, so save them a step. + const { data: createEntityData2, error: createEntityError2 } = await dispatch( + entitiesApi.endpoints.createEntity.initiate({ name: "New Entity", scene_id: data.id }) + ) + if (createEntityError2) { + return { error: createEntityError2 }; + } } return { data }; diff --git a/mirror-2/state/spaces.tsx b/mirror-2/state/spaces.tsx index ea3f1953..894a95c1 100644 --- a/mirror-2/state/spaces.tsx +++ b/mirror-2/state/spaces.tsx @@ -45,10 +45,7 @@ export const spacesApi = createApi({ if (createSceneError) { return { error: createSceneError }; } - // create root entity - // const { data: createEntityData, error: createEntityError } = await dispatch( - // entitiesApi.endpoints.createEntity.initiate({ name: "Root", scene_id: createSceneData.id }) - // ) + // create root entity is managed by create Scene // if (createEntityError) { // return { error: createEntityError }; From d7ba7916cee13d358bda5bb655eea1c9a7b9376c Mon Sep 17 00:00:00 2001 From: Kluskey Date: Wed, 9 Oct 2024 15:53:29 -0700 Subject: [PATCH 225/353] scene creation updates anf cies --- mirror-2/actions/name-generator.ts | 26 ++++++++++++++----- .../[spaceId]/build/controlBar/scenes.tsx | 12 ++++++++- mirror-2/app/space/[spaceId]/build/page.tsx | 7 ++--- 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/mirror-2/actions/name-generator.ts b/mirror-2/actions/name-generator.ts index 50a03946..ee88cff9 100644 --- a/mirror-2/actions/name-generator.ts +++ b/mirror-2/actions/name-generator.ts @@ -1,12 +1,6 @@ "use server" import { uniqueNamesGenerator, Config, adjectives, colors, animals } from 'unique-names-generator'; -const customConfig: Config = { - dictionaries: [adjectives, animals], - separator: ' ', - length: 2, - style: 'capital' -}; const randomName: string = uniqueNamesGenerator({ dictionaries: [adjectives, animals] @@ -14,5 +8,25 @@ const randomName: string = uniqueNamesGenerator({ export async function generateSpaceName() { + const customConfig: Config = { + dictionaries: [adjectives, animals], + separator: ' ', + length: 2, + style: 'capital' + }; + return uniqueNamesGenerator(customConfig); } + + +export async function generateSceneName() { + const customConfig: Config = { + dictionaries: [adjectives], + separator: ' ', + length: 1, + style: 'capital' + }; + + return uniqueNamesGenerator(customConfig); + } + \ No newline at end of file diff --git a/mirror-2/app/space/[spaceId]/build/controlBar/scenes.tsx b/mirror-2/app/space/[spaceId]/build/controlBar/scenes.tsx index 89322c6a..cf6b7e32 100644 --- a/mirror-2/app/space/[spaceId]/build/controlBar/scenes.tsx +++ b/mirror-2/app/space/[spaceId]/build/controlBar/scenes.tsx @@ -12,6 +12,7 @@ import { useAppDispatch, useAppSelector } from '@/hooks/hooks'; import { getCurrentScene, setControlBarCurrentView, setCurrentScene } from '@/state/local'; import { useCreateSceneMutation, useDeleteSceneMutation, useGetAllScenesQuery, useGetSingleSceneQuery, useUpdateSceneMutation } from '@/state/scenes'; import { cn } from '@/utils/cn'; +import { generateSceneName } from '@/actions/name-generator'; export default function Scenes() { const params = useParams<{ spaceId: string }>() @@ -31,7 +32,16 @@ export default function Scenes() { return ( <> {/* Create Scene Button */} - diff --git a/mirror-2/app/space/[spaceId]/build/page.tsx b/mirror-2/app/space/[spaceId]/build/page.tsx index 0603ab38..9ba76bf0 100644 --- a/mirror-2/app/space/[spaceId]/build/page.tsx +++ b/mirror-2/app/space/[spaceId]/build/page.tsx @@ -1,7 +1,7 @@ "use client" -import { useAppDispatch } from "@/hooks/hooks" -import { setCurrentScene } from "@/state/local" +import { useAppDispatch, useAppSelector } from "@/hooks/hooks" +import { getCurrentScene, setCurrentScene } from "@/state/local" import { useGetAllScenesQuery } from "@/state/scenes" import { useGetSingleSpaceQuery } from "@/state/spaces" @@ -12,6 +12,7 @@ import dynamic from "next/dynamic" // blank page since we're using the parallel routes for spaceViewport, controlBar, etc. export default function Page() { + const currentScene = useAppSelector(getCurrentScene); const params = useParams<{ spaceId: string }>() const { data: space, error } = useGetSingleSpaceQuery(params.spaceId) const { data: scenes, isLoading: isScenesLoading } = useGetAllScenesQuery(params.spaceId) @@ -20,7 +21,7 @@ export default function Page() { const dispatch = useAppDispatch(); useEffect(() => { // if no current Scene, set it to the first scene - if (scenes?.length > 0 && scenes[0]) { + if (!currentScene && scenes?.length > 0 && scenes[0]) { console.log("setting current scene to first scene", scenes[0]) dispatch(setCurrentScene(scenes[0])) } else { From 33227129fcb65663da562097fd3c98caf7e9b33d Mon Sep 17 00:00:00 2001 From: Kluskey Date: Wed, 9 Oct 2024 15:56:02 -0700 Subject: [PATCH 226/353] polish buttons --- mirror-2/components/ui/button.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mirror-2/components/ui/button.tsx b/mirror-2/components/ui/button.tsx index d0564398..c07378f2 100644 --- a/mirror-2/components/ui/button.tsx +++ b/mirror-2/components/ui/button.tsx @@ -5,12 +5,11 @@ import { cva, type VariantProps } from "class-variance-authority"; import { cn } from "@/lib/utils"; const buttonVariants = cva( - "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", + "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 duration-100", { variants: { variant: { - default: "bg-primary text-primary-foreground hover:bg-primary/90 delay-0", - // accent: "bg-accent text-muted-foreground font-bold hover:bg-accent/90 delay-0", + default: "bg-primary text-primary-foreground hover:bg-accent/90 delay-0", destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90", From 8d1feef40dfe027a793f97386c7a60dd94b128bc Mon Sep 17 00:00:00 2001 From: Kluskey Date: Wed, 9 Oct 2024 16:07:20 -0700 Subject: [PATCH 227/353] fix auto expanded entities --- mirror-2/app/space/[spaceId]/build/page.tsx | 10 ++++++---- mirror-2/components/entity-tree/entity-tree.tsx | 10 ++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/mirror-2/app/space/[spaceId]/build/page.tsx b/mirror-2/app/space/[spaceId]/build/page.tsx index 9ba76bf0..ce5dec55 100644 --- a/mirror-2/app/space/[spaceId]/build/page.tsx +++ b/mirror-2/app/space/[spaceId]/build/page.tsx @@ -21,11 +21,13 @@ export default function Page() { const dispatch = useAppDispatch(); useEffect(() => { // if no current Scene, set it to the first scene - if (!currentScene && scenes?.length > 0 && scenes[0]) { - console.log("setting current scene to first scene", scenes[0]) - dispatch(setCurrentScene(scenes[0])) + if (scenes?.length > 0 && scenes[0]) { + if (!currentScene?.id) { + console.log("setting current scene to first scene", scenes[0]) + dispatch(setCurrentScene(scenes[0])) + } } else { - console.log('No scenes to set', scenes) + console.log('No scenes to set', scenes, currentScene) } }, [space, scenes]) diff --git a/mirror-2/components/entity-tree/entity-tree.tsx b/mirror-2/components/entity-tree/entity-tree.tsx index da0b8132..b0dd12a4 100644 --- a/mirror-2/components/entity-tree/entity-tree.tsx +++ b/mirror-2/components/entity-tree/entity-tree.tsx @@ -126,12 +126,10 @@ const EntityTree: React.FC = () => { } }, [entities]); // Re-run effect when 'entities' changes - // if currentScene changes, reset hasInitialExpandedKeys to false - // useEffect(() => { - // if (currentScene) { - // setHasInitialExpandedKeys(false) - // } - // }, [currentScene]) + // whenever expandedKeys changes, update the store so it persists across component unmount + useEffect(() => { + dispatch(setExpandedEntityIds({ entityIds: expandedKeys.map(key => String(key)) })); + }, [expandedKeys]) const onDragEnter: TreeProps['onDragEnter'] = (info) => { From 081b64d2377cdea7535b52da17b95465dadefee2 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Wed, 9 Oct 2024 16:09:21 -0700 Subject: [PATCH 228/353] more fixes --- mirror-2/components/entity-tree/entity-tree.tsx | 4 ++-- mirror-2/state/local.tsx | 11 ++++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/mirror-2/components/entity-tree/entity-tree.tsx b/mirror-2/components/entity-tree/entity-tree.tsx index b0dd12a4..8a798f28 100644 --- a/mirror-2/components/entity-tree/entity-tree.tsx +++ b/mirror-2/components/entity-tree/entity-tree.tsx @@ -7,7 +7,7 @@ import { useGetAllEntitiesQuery, useGetSingleEntityQuery, useUpdateEntityMutatio import { skipToken } from '@reduxjs/toolkit/query'; import { TwoWayInput } from '@/components/two-way-input'; import { z } from 'zod'; -import { getCurrentScene, insertAutomaticallyExpandedSceneIds, selectAutomaticallyExpandedSceneIds, selectExpandedEntityIds, setExpandedEntityIds } from '@/state/local'; +import { addExpandedEntityIds, getCurrentScene, insertAutomaticallyExpandedSceneIds, selectAutomaticallyExpandedSceneIds, selectExpandedEntityIds, setExpandedEntityIds } from '@/state/local'; import { useAppDispatch, useAppSelector } from '@/hooks/hooks'; import { current } from '@reduxjs/toolkit'; @@ -128,7 +128,7 @@ const EntityTree: React.FC = () => { // whenever expandedKeys changes, update the store so it persists across component unmount useEffect(() => { - dispatch(setExpandedEntityIds({ entityIds: expandedKeys.map(key => String(key)) })); + dispatch(addExpandedEntityIds({ entityIds: expandedKeys.map(key => String(key)) })); }, [expandedKeys]) diff --git a/mirror-2/state/local.tsx b/mirror-2/state/local.tsx index 65ef7503..8044ca89 100644 --- a/mirror-2/state/local.tsx +++ b/mirror-2/state/local.tsx @@ -64,7 +64,6 @@ export const localSlice = createSlice({ setCurrentScene: (state, action: PayloadAction) => { state.currentScene = action.payload; }, - setExpandedEntityIds: (state, action: PayloadAction<{ entityIds: string[] }>) => { const { entityIds } = action.payload; @@ -74,6 +73,15 @@ export const localSlice = createSlice({ }); }, + addExpandedEntityIds: (state, action: PayloadAction<{ entityIds: string[] }>) => { + const { entityIds } = action.payload; + + // add new IDs, ensuring no duplicate IDs + state.expandedEntityIds = [...state.expandedEntityIds, ...entityIds].filter(function (x, i, a) { + return a.indexOf(x) == i; + }); + }, + insertAutomaticallyExpandedSceneIds: (state, action: PayloadAction<{ sceneId: string }>) => { const { sceneId } = action.payload; @@ -94,6 +102,7 @@ export const { clearLocalUserState, setCurrentScene, setExpandedEntityIds, + addExpandedEntityIds, insertAutomaticallyExpandedSceneIds } = localSlice.actions; From 116e8bf45dbe8cb6594a0f55a050a6fee577ca00 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Wed, 9 Oct 2024 16:33:06 -0700 Subject: [PATCH 229/353] font fixes --- .../build/controlBar/control-bar.tsx | 14 +- .../components/entity-tree/entity-tree.tsx | 6 +- mirror-2/components/two-way-input.tsx | 2 +- mirror-2/tailwind.config.ts | 142 +++++++++--------- 4 files changed, 83 insertions(+), 81 deletions(-) diff --git a/mirror-2/app/space/[spaceId]/build/controlBar/control-bar.tsx b/mirror-2/app/space/[spaceId]/build/controlBar/control-bar.tsx index 242b450e..2c4b09f0 100644 --- a/mirror-2/app/space/[spaceId]/build/controlBar/control-bar.tsx +++ b/mirror-2/app/space/[spaceId]/build/controlBar/control-bar.tsx @@ -45,7 +45,7 @@ export default function ControlBar() { Scenes - Scenes + Scenes
        handleViewChange("hierarchy")}> @@ -63,7 +63,7 @@ export default function ControlBar() { Hierarchy - Hierarchy + Hierarchy
        handleViewChange("assets")} > @@ -81,7 +81,7 @@ export default function ControlBar() { Assets - Assets + Assets
        handleViewChange("code")}> @@ -99,7 +99,7 @@ export default function ControlBar() { Code - Code + Code
        handleViewChange("database")} > @@ -118,7 +118,7 @@ export default function ControlBar() { Database - Database + Database
        handleViewChange("versions")} > @@ -137,7 +137,7 @@ export default function ControlBar() { Versions - Versions + Versions
        handleViewChange("settings")} > @@ -156,7 +156,7 @@ export default function ControlBar() { Settings - Settings + Settings
        diff --git a/mirror-2/components/entity-tree/entity-tree.tsx b/mirror-2/components/entity-tree/entity-tree.tsx index 8a798f28..c4e9aa98 100644 --- a/mirror-2/components/entity-tree/entity-tree.tsx +++ b/mirror-2/components/entity-tree/entity-tree.tsx @@ -273,9 +273,9 @@ const EntityTree: React.FC = () => { motionDurationMid: '0.05s', colorText: '#FFFFFF', colorBgContainer: 'transparent', - fontFamily: 'montserrat', + // fontFamily: 'Montserrat', // @ts-ignore using rem instead of number is working.. - fontSize: '0.9rem', + // fontSize: '0.9rem', nodeSelectedBg: '#3B82F6', nodeHoverBg: '#256BFB', directoryNodeSelectedBg: 'green' @@ -302,7 +302,7 @@ const EntityTree: React.FC = () => { id={nodeData.id} generalEntity={nodeData} defaultValue={nodeData.name} - className={'p-0 m-0 h-8 '} + className={'p-0 m-0 h-8 text-base font-light font-sans tracking-wide'} fieldName="name" formSchema={z.object({ name: z.string().min(1, { message: "Entity name must be at least 1 character long" }), })} diff --git a/mirror-2/components/two-way-input.tsx b/mirror-2/components/two-way-input.tsx index b241d46d..68dc3110 100644 --- a/mirror-2/components/two-way-input.tsx +++ b/mirror-2/components/two-way-input.tsx @@ -81,7 +81,7 @@ export function TwoWayInput({ diff --git a/mirror-2/tailwind.config.ts b/mirror-2/tailwind.config.ts index 9fe433fb..f26f6757 100644 --- a/mirror-2/tailwind.config.ts +++ b/mirror-2/tailwind.config.ts @@ -10,87 +10,89 @@ const config = { ], prefix: "", theme: { - container: { - center: true, - padding: '2rem', - screens: { - '2xl': '1400px' - } - }, - extend: { - colors: { - border: 'hsl(var(--border))', - input: 'hsl(var(--input))', - ring: 'hsl(var(--ring))', - background: 'hsl(var(--background))', - foreground: 'hsl(var(--foreground))', - primary: { - DEFAULT: 'hsl(var(--primary))', - foreground: 'hsl(var(--primary-foreground))' - }, - secondary: { - DEFAULT: 'hsl(var(--secondary))', - foreground: 'hsl(var(--secondary-foreground))' - }, - destructive: { - DEFAULT: 'hsl(var(--destructive))', - foreground: 'hsl(var(--destructive-foreground))' - }, - muted: { - DEFAULT: 'hsl(var(--muted))', - foreground: 'hsl(var(--muted-foreground))' - }, - accent: { - DEFAULT: 'hsl(var(--accent))', - foreground: 'hsl(var(--accent-foreground))' - }, - popover: { - DEFAULT: 'hsl(var(--popover))', - foreground: 'hsl(var(--popover-foreground))' - }, - card: { - DEFAULT: 'hsl(var(--card))', - foreground: 'hsl(var(--card-foreground))' - } - }, - borderRadius: { - lg: 'var(--radius)', - md: 'calc(var(--radius) - 2px)', - sm: 'calc(var(--radius) - 4px)' - }, - keyframes: { - 'accordion-down': { - from: { - height: '0' - }, - to: { - height: 'var(--radix-accordion-content-height)' - } - }, - 'accordion-up': { - from: { - height: 'var(--radix-accordion-content-height)' - }, - to: { - height: '0' - } + container: { + center: true, + padding: '2rem', + screens: { + '2xl': '1400px' + } + }, + extend: { + fontFamily: { + sans: ['Montserrat', 'sans-serif'], // Add Montserrat as the default font + }, + colors: { + border: 'hsl(var(--border))', + input: 'hsl(var(--input))', + ring: 'hsl(var(--ring))', + background: 'hsl(var(--background))', + foreground: 'hsl(var(--foreground))', + primary: { + DEFAULT: 'hsl(var(--primary))', + foreground: 'hsl(var(--primary-foreground))' + }, + secondary: { + DEFAULT: 'hsl(var(--secondary))', + foreground: 'hsl(var(--secondary-foreground))' + }, + destructive: { + DEFAULT: 'hsl(var(--destructive))', + foreground: 'hsl(var(--destructive-foreground))' + }, + muted: { + DEFAULT: 'hsl(var(--muted))', + foreground: 'hsl(var(--muted-foreground))' + }, + accent: { + DEFAULT: 'hsl(var(--accent))', + foreground: 'hsl(var(--accent-foreground))' + }, + popover: { + DEFAULT: 'hsl(var(--popover))', + foreground: 'hsl(var(--popover-foreground))' + }, + card: { + DEFAULT: 'hsl(var(--card))', + foreground: 'hsl(var(--card-foreground))' + } + }, + borderRadius: { + lg: 'var(--radius)', + md: 'calc(var(--radius) - 2px)', + sm: 'calc(var(--radius) - 4px)' + }, + keyframes: { + 'accordion-down': { + from: { + height: '0' + }, + to: { + height: 'var(--radix-accordion-content-height)' + } + }, + 'accordion-up': { + from: { + height: 'var(--radix-accordion-content-height)' + }, + to: { + height: '0' + } }, progress: { '0%': { transform: ' translateX(0) scaleX(0)' }, '40%': { transform: 'translateX(0) scaleX(0.4)' }, '100%': { transform: 'translateX(100%) scaleX(0.5)' }, }, - }, - animation: { - 'accordion-down': 'accordion-down 0.2s ease-out', - 'accordion-up': 'accordion-up 0.2s ease-out', + }, + animation: { + 'accordion-down': 'accordion-down 0.2s ease-out', + 'accordion-up': 'accordion-up 0.2s ease-out', progress: 'progress 0.65s infinite linear', }, - transformOrigin: { 'left-right': '0% 50%', } - } + } }, plugins: [require("tailwindcss-animate")], } satisfies Config; From 12c0c1ffa132502586724c2f5494cdc91e12885f Mon Sep 17 00:00:00 2001 From: Kluskey Date: Wed, 9 Oct 2024 17:09:10 -0700 Subject: [PATCH 230/353] entity tree clean --- .../components/entity-tree/entity-tree.tsx | 18 +++------------ mirror-2/components/entity-tree/tree-item.tsx | 23 +++++++++++++++++++ mirror-2/components/two-way-input.tsx | 16 ++++++++++++- mirror-2/state/entities.tsx | 13 +++++++++++ 4 files changed, 54 insertions(+), 16 deletions(-) create mode 100644 mirror-2/components/entity-tree/tree-item.tsx diff --git a/mirror-2/components/entity-tree/entity-tree.tsx b/mirror-2/components/entity-tree/entity-tree.tsx index c4e9aa98..490a831d 100644 --- a/mirror-2/components/entity-tree/entity-tree.tsx +++ b/mirror-2/components/entity-tree/entity-tree.tsx @@ -10,6 +10,7 @@ import { z } from 'zod'; import { addExpandedEntityIds, getCurrentScene, insertAutomaticallyExpandedSceneIds, selectAutomaticallyExpandedSceneIds, selectExpandedEntityIds, setExpandedEntityIds } from '@/state/local'; import { useAppDispatch, useAppSelector } from '@/hooks/hooks'; import { current } from '@reduxjs/toolkit'; +import EntityTreeItem from '@/components/entity-tree/tree-item'; type TreeDataNodeWithEntityData = TreeDataNode & { name: string, id: string, order_under_parent: number } @@ -273,11 +274,7 @@ const EntityTree: React.FC = () => { motionDurationMid: '0.05s', colorText: '#FFFFFF', colorBgContainer: 'transparent', - // fontFamily: 'Montserrat', - // @ts-ignore using rem instead of number is working.. - // fontSize: '0.9rem', - nodeSelectedBg: '#3B82F6', - nodeHoverBg: '#256BFB', + nodeSelectedBg: 'transparent', directoryNodeSelectedBg: 'green' }, }, @@ -298,16 +295,7 @@ const EntityTree: React.FC = () => { treeData={treeData} titleRender={(nodeData: TreeDataNodeWithEntityData) => ( <> - + )} /> diff --git a/mirror-2/components/entity-tree/tree-item.tsx b/mirror-2/components/entity-tree/tree-item.tsx new file mode 100644 index 00000000..b2da369f --- /dev/null +++ b/mirror-2/components/entity-tree/tree-item.tsx @@ -0,0 +1,23 @@ +import { TwoWayInput } from "@/components/two-way-input"; +import { useGetSingleEntityQuery, useUpdateEntityMutation } from "@/state/entities"; +import { useState } from "react"; +import { z } from "zod"; + +export default function EntityTreeItem({ nodeData }) { + + return
        + {true && + } +
        +} diff --git a/mirror-2/components/two-way-input.tsx b/mirror-2/components/two-way-input.tsx index 68dc3110..a97b08bf 100644 --- a/mirror-2/components/two-way-input.tsx +++ b/mirror-2/components/two-way-input.tsx @@ -3,7 +3,7 @@ import { Form, FormControl, FormField, FormItem, FormMessage } from "@/component import { Input } from "@/components/ui/input"; import { Skeleton } from "@/components/ui/skeleton"; import { zodResolver } from "@hookform/resolvers/zod"; -import { useEffect } from "react"; +import { useEffect, useRef } from "react"; import { useForm } from "react-hook-form"; import { z, ZodSchema } from "zod"; import clsx from "clsx"; // Utility to merge class names @@ -23,6 +23,8 @@ interface TwoWayInputProps { { isLoading: boolean; isSuccess: boolean; error?: any } ]; className?: string; // Optional className prop + onSubmitFn?: Function + onBlurFn?: Function } // TODO fix and ensure deduping works correctly to not fire a ton of network requests export function TwoWayInput({ @@ -34,6 +36,8 @@ export function TwoWayInput({ useGeneralGetEntityQuery, // "General" entity bc not referring our proper Entity, but anything useGeneralUpdateEntityMutation, // "General" entity bc not referring our proper Entity, but anything className, // Destructure the className prop + onSubmitFn, + onBlurFn }: TwoWayInputProps) { const { data: entity, isLoading, isSuccess } = useGeneralGetEntityQuery(generalEntityId); @@ -46,6 +50,7 @@ export function TwoWayInput({ defaultValues: { [fieldName]: entity?.[fieldName] ?? defaultValue, }, + }); // Handle form submission @@ -54,6 +59,9 @@ export function TwoWayInput({ if (entity && isSuccess && entity[fieldName] === values[fieldName]) { return; } + if (onSubmitFn) { + onSubmitFn() + } await updateGeneralEntity({ id: generalEntityId, ...generalEntity, [fieldName]: values[fieldName] }); } @@ -83,6 +91,12 @@ export function TwoWayInput({ type="text" className={cn("dark:bg-transparent border-none shadow-none text-white", className)} // Apply className prop here {...field} + onBlur={() => { + if (onBlurFn) { + onBlurFn() + } + } + } /> diff --git a/mirror-2/state/entities.tsx b/mirror-2/state/entities.tsx index 93a2f2fe..a2a87793 100644 --- a/mirror-2/state/entities.tsx +++ b/mirror-2/state/entities.tsx @@ -193,6 +193,19 @@ export const entitiesApi = createApi({ } return { data }; }, + async onQueryStarted({ id, ...patch }, { dispatch, queryFulfilled }) { + const patchResult = dispatch( + entitiesApi.util.updateQueryData('getSingleEntity', id, (draft) => { + Object.assign(draft, patch) + }) + ) + try { + await queryFulfilled + } catch { + patchResult.undo() + } + }, + invalidatesTags: (result, error, { id: entityId }) => [ { type: TAG_NAME_FOR_GENERAL_ENTITY, id: entityId }, TAG_NAME_FOR_BUILD_MODE_SPACE_QUERY From 4a49d1a7dde94339c0d316e69010385a8db6059e Mon Sep 17 00:00:00 2001 From: Kluskey Date: Wed, 9 Oct 2024 17:11:29 -0700 Subject: [PATCH 231/353] add focus color entity --- mirror-2/components/ui/input.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mirror-2/components/ui/input.tsx b/mirror-2/components/ui/input.tsx index 8c7c7429..fa74396d 100644 --- a/mirror-2/components/ui/input.tsx +++ b/mirror-2/components/ui/input.tsx @@ -11,7 +11,7 @@ const Input = React.forwardRef( Date: Wed, 9 Oct 2024 17:28:37 -0700 Subject: [PATCH 232/353] fix sidebar spacing --- mirror-2/app/space/[spaceId]/build/layout.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mirror-2/app/space/[spaceId]/build/layout.tsx b/mirror-2/app/space/[spaceId]/build/layout.tsx index 94518c63..65502e20 100644 --- a/mirror-2/app/space/[spaceId]/build/layout.tsx +++ b/mirror-2/app/space/[spaceId]/build/layout.tsx @@ -12,7 +12,7 @@ export default function Layout({ children, params }: { return (
        -
        +
        From 1f8af5b5497e08b6de44ab559d123c67f247eb15 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Wed, 9 Oct 2024 22:13:21 -0700 Subject: [PATCH 233/353] add analytics base --- mirror-2/.env.example | 2 ++ mirror-2/app/layout.tsx | 3 +++ mirror-2/package.json | 2 ++ mirror-2/state/local.tsx | 13 ++++++++++++- mirror-2/state/store.tsx | 3 ++- mirror-2/utils/analytics/analytics.tsx | 21 +++++++++++++++++++++ mirror-2/yarn.lock | 5 +++++ 7 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 mirror-2/utils/analytics/analytics.tsx diff --git a/mirror-2/.env.example b/mirror-2/.env.example index df846c90..9dc553d7 100644 --- a/mirror-2/.env.example +++ b/mirror-2/.env.example @@ -4,3 +4,5 @@ NEXT_PUBLIC_SUPABASE_URL=http://127.0.0.1:54321 NEXT_PUBLIC_SUPABASE_ANON_KEY=SUPABASE_CLIENT_API_KEY NEXT_PUBLIC_APP_NAME="The Mirror" # only use The Mirror or Reflekt NEXT_PUBLIC_DISCORD_INVITE_URL=https://themirror.space/discord +NEXT_PUBLIC_GA_KEY_GAME_PUBLIC= +NEXT_PUBLIC_GA_KEY_SECRET= # I asked about this to GA support; why secret public?? Using throwaway keys for now diff --git a/mirror-2/app/layout.tsx b/mirror-2/app/layout.tsx index 60ad36f6..2dbb172e 100644 --- a/mirror-2/app/layout.tsx +++ b/mirror-2/app/layout.tsx @@ -3,10 +3,12 @@ import { Montserrat } from 'next/font/google' import "./globals.css"; import { Metadata } from "next"; import { appName, appDescription, faviconPath } from "@/lib/theme-service"; +import Analytics from "@/utils/analytics/analytics"; export const metadata: Metadata = { title: appName(), description: appDescription(), } + const montserrat = Montserrat({ subsets: ['latin'], display: 'swap', @@ -20,6 +22,7 @@ export default function RootLayout({ + {children} diff --git a/mirror-2/package.json b/mirror-2/package.json index eafd203f..320ba1b2 100644 --- a/mirror-2/package.json +++ b/mirror-2/package.json @@ -1,4 +1,5 @@ { + "version": "0.0.1", "private": true, "scripts": { "dev": "next dev & supabase start", @@ -32,6 +33,7 @@ "autoprefixer": "10.4.17", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", + "gameanalytics": "^4.4.7", "geist": "^1.2.1", "lucide-react": "^0.446.0", "next": "latest", diff --git a/mirror-2/state/local.tsx b/mirror-2/state/local.tsx index 8044ca89..6f73d8ff 100644 --- a/mirror-2/state/local.tsx +++ b/mirror-2/state/local.tsx @@ -1,7 +1,8 @@ import { RootState } from '@/state/store'; +import { setAnalyticsUserId } from '@/utils/analytics/analytics'; import { Database } from '@/utils/database.types'; import type { PayloadAction } from '@reduxjs/toolkit'; -import { createSlice } from '@reduxjs/toolkit'; +import { createListenerMiddleware, createSlice } from '@reduxjs/toolkit'; export type ControlBarView = "assets" | "hierarchy" | "scenes" | "code" | "database" | "versions" | "settings"; @@ -106,6 +107,16 @@ export const { insertAutomaticallyExpandedSceneIds } = localSlice.actions; +// Middleware +export const listenerMiddlewareLocal = createListenerMiddleware() +listenerMiddlewareLocal.startListening({ + actionCreator: updateLocalUserState, + effect: async (action, listenerApi) => { + setAnalyticsUserId(action.payload.id) + } +}) + + // Selectors export const selectUiSoundsCanPlay = (state: RootState) => state.local.uiSoundsCanPlay; export const selectControlBarCurrentView = (state: RootState) => state.local.controlBarCurrentView; diff --git a/mirror-2/state/store.tsx b/mirror-2/state/store.tsx index 3b6b1111..d005774e 100644 --- a/mirror-2/state/store.tsx +++ b/mirror-2/state/store.tsx @@ -1,7 +1,7 @@ "use client" import { configureStore } from '@reduxjs/toolkit' import { setupListeners } from '@reduxjs/toolkit/query/react' -import { localSlice } from '@/state/local' +import { listenerMiddlewareLocal, localSlice } from '@/state/local' import { spacesApi } from '@/state/spaces' import { scenesApi } from '@/state/scenes' import { entitiesApi } from '@/state/entities' @@ -27,6 +27,7 @@ export const store = configureStore({ .concat(scenesApi.middleware) .concat(entitiesApi.middleware) .concat(componentsApi.middleware) + .concat(listenerMiddlewareLocal.middleware) }) // optional, but required for refetchOnFocus/refetchOnReconnect behaviors diff --git a/mirror-2/utils/analytics/analytics.tsx b/mirror-2/utils/analytics/analytics.tsx new file mode 100644 index 00000000..8e6fed20 --- /dev/null +++ b/mirror-2/utils/analytics/analytics.tsx @@ -0,0 +1,21 @@ +"use client" +import { useEffect } from 'react'; +import packageJson from '../../package.json'; +import { GameAnalytics } from 'gameanalytics' + +export function setAnalyticsUserId(userId: string) { + GameAnalytics("configureUserId", userId); +} + +const Analytics = function () { + useEffect(() => { + if (typeof window !== 'undefined') { + GameAnalytics("configureBuild", `web ${packageJson.version}`); + GameAnalytics("initialize", process.env.NEXT_PUBLIC_GA_KEY_GAME_PUBLIC, process.env.NEXT_PUBLIC_GA_KEY_SECRET); + } + }, []) + + return <> +} + +export default Analytics diff --git a/mirror-2/yarn.lock b/mirror-2/yarn.lock index 8b20e695..39c6d8d2 100644 --- a/mirror-2/yarn.lock +++ b/mirror-2/yarn.lock @@ -1368,6 +1368,11 @@ function-bind@^1.1.2: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== +gameanalytics@^4.4.7: + version "4.4.7" + resolved "https://registry.yarnpkg.com/gameanalytics/-/gameanalytics-4.4.7.tgz#f619861acb499a61beea4c65bc650db1246ebe5d" + integrity sha512-yXC6+j/OtkjRtrA1J2E3kVUDR8bdUm25QUzee1JPSTMOajbFV5zMg4+3kFJxhTvDVpj6qkO9QvHBrQCMNWLPVQ== + geist@^1.2.1: version "1.3.1" resolved "https://registry.yarnpkg.com/geist/-/geist-1.3.1.tgz#bbd95db23b2a00baf6020e3b1b63a5752f4787d2" From a449b959a2992384d5f634c2f0ceb2bb3852717d Mon Sep 17 00:00:00 2001 From: Kluskey Date: Wed, 9 Oct 2024 23:22:02 -0700 Subject: [PATCH 234/353] add ga --- mirror-2/app/layout.tsx | 2 ++ mirror-2/lib/theme-service.tsx | 11 ++++++ mirror-2/state/spaces.tsx | 13 +++++++ mirror-2/state/store.tsx | 3 +- mirror-2/utils/analytics/analytics.tsx | 48 +++++++++++++++++++++++--- 5 files changed, 72 insertions(+), 5 deletions(-) diff --git a/mirror-2/app/layout.tsx b/mirror-2/app/layout.tsx index 2dbb172e..536249a1 100644 --- a/mirror-2/app/layout.tsx +++ b/mirror-2/app/layout.tsx @@ -4,6 +4,8 @@ import "./globals.css"; import { Metadata } from "next"; import { appName, appDescription, faviconPath } from "@/lib/theme-service"; import Analytics from "@/utils/analytics/analytics"; + + export const metadata: Metadata = { title: appName(), description: appDescription(), diff --git a/mirror-2/lib/theme-service.tsx b/mirror-2/lib/theme-service.tsx index 43a8e446..c60bcf22 100644 --- a/mirror-2/lib/theme-service.tsx +++ b/mirror-2/lib/theme-service.tsx @@ -1,5 +1,7 @@ import Image from 'next/image' +export type AppNameKebabCaseType = 'reflekt' | 'the-mirror' + // function that returns the app name by checking the environment variable export const appName = () => { const appName = process.env.NEXT_PUBLIC_APP_NAME; @@ -10,6 +12,15 @@ export const appName = () => { } }; +export const appNameKebabCase = (): AppNameKebabCaseType => { + const appName = process.env.NEXT_PUBLIC_APP_NAME; + if (appName === "Reflekt") { + return "reflekt" + } else { + return "the-mirror" + } +}; + export const appDescription = () => { const appName = process.env.NEXT_PUBLIC_APP_NAME; if (appName === "Reflekt") { diff --git a/mirror-2/state/spaces.tsx b/mirror-2/state/spaces.tsx index 894a95c1..483d3a1f 100644 --- a/mirror-2/state/spaces.tsx +++ b/mirror-2/state/spaces.tsx @@ -6,6 +6,8 @@ import { scenesApi, TAG_NAME_FOR_GENERAL_ENTITY as SCENES_TAG_NAME_FOR_GENERAL_E import { TAG_NAME_FOR_GENERAL_ENTITY as ENTITIES_TAG_NAME_FOR_GENERAL_ENTITY, entitiesApi } from '@/state/entities'; import { TAG_NAME_FOR_GENERAL_ENTITY as COMPONENTS_TAG_NAME_FOR_GENERAL_ENTITY } from '@/state/components'; import { TAG_NAME_FOR_BUILD_MODE_SPACE_QUERY } from '@/state/shared-cache-tags'; +import { createListenerMiddleware, isAnyOf } from '@reduxjs/toolkit'; +import { sendAnalyticsEvent } from '@/utils/analytics/analytics'; export const TAG_NAME_FOR_GENERAL_ENTITY = 'Spaces' @@ -112,6 +114,17 @@ export const spacesApi = createApi({ }), }); +// Middleware +export const listenerMiddlewareSpaces = createListenerMiddleware() +listenerMiddlewareSpaces.startListening({ + matcher: isAnyOf( + spacesApi.endpoints.createSpace.matchFulfilled // Match fulfilled action of the createSpace mutation + ), + effect: async (action, listenerApi) => { + sendAnalyticsEvent(['space', 'create']) + } +}) + // Export the API hooks export const { useGetSingleSpaceQuery, diff --git a/mirror-2/state/store.tsx b/mirror-2/state/store.tsx index d005774e..be2d55bd 100644 --- a/mirror-2/state/store.tsx +++ b/mirror-2/state/store.tsx @@ -2,7 +2,7 @@ import { configureStore } from '@reduxjs/toolkit' import { setupListeners } from '@reduxjs/toolkit/query/react' import { listenerMiddlewareLocal, localSlice } from '@/state/local' -import { spacesApi } from '@/state/spaces' +import { listenerMiddlewareSpaces, spacesApi } from '@/state/spaces' import { scenesApi } from '@/state/scenes' import { entitiesApi } from '@/state/entities' import { assetsApi } from '@/state/assets' @@ -28,6 +28,7 @@ export const store = configureStore({ .concat(entitiesApi.middleware) .concat(componentsApi.middleware) .concat(listenerMiddlewareLocal.middleware) + .concat(listenerMiddlewareSpaces.middleware) }) // optional, but required for refetchOnFocus/refetchOnReconnect behaviors diff --git a/mirror-2/utils/analytics/analytics.tsx b/mirror-2/utils/analytics/analytics.tsx index 8e6fed20..cee27d4c 100644 --- a/mirror-2/utils/analytics/analytics.tsx +++ b/mirror-2/utils/analytics/analytics.tsx @@ -2,16 +2,56 @@ import { useEffect } from 'react'; import packageJson from '../../package.json'; import { GameAnalytics } from 'gameanalytics' +import { AppNameKebabCaseType, appNameKebabCase } from '@/lib/theme-service'; + +let analyticsInitialized = false + +type AnalyticsEvent = [string, string?, string?, string?]; + +export function sendAnalyticsEvent(event: AnalyticsEvent, eventValue?: number) { + // don't track if we're not client-side since NextJS renders the HTML on server + if (typeof window !== 'undefined') { + const app = appNameKebabCase(); + + // Join the non-empty parts of the event tuple with a colon separator + const eventDetails = event.filter(Boolean).join(':'); + + // Send the event to GameAnalytics with the appended event details + const eventName = `${app}:${eventDetails}` + console.log('Analytics: Event: ' + eventName) + if (eventValue !== undefined) { + // GameAnalytics("addDesignEvent", eventName, eventValue); + GameAnalytics.addDesignEvent(eventName, eventValue); + } else { + // GameAnalytics("addDesignEvent", eventName); + GameAnalytics.addDesignEvent(eventName, eventName); + + } + + } +} + export function setAnalyticsUserId(userId: string) { - GameAnalytics("configureUserId", userId); + // GameAnalytics.configureUserId(userId); } + const Analytics = function () { useEffect(() => { - if (typeof window !== 'undefined') { - GameAnalytics("configureBuild", `web ${packageJson.version}`); - GameAnalytics("initialize", process.env.NEXT_PUBLIC_GA_KEY_GAME_PUBLIC, process.env.NEXT_PUBLIC_GA_KEY_SECRET); + if (typeof window !== 'undefined' && !analyticsInitialized) { + // console.log('Analytics: Initing & starting session') + console.log('Analytics: Initing') + // GameAnalytics("configureBuild", `web ${packageJson.version}`); + GameAnalytics.configureBuild(`web ${packageJson.version}`) + // set custom dimension 1, whether The Mirror or Reflekt + // GameAnalytics("setCustomDimension01", appNameKebabCase); + GameAnalytics.configureAvailableCustomDimensions01(appNameKebabCase); + // GameAnalytics("initialize", process.env.NEXT_PUBLIC_GA_KEY_GAME_PUBLIC, process.env.NEXT_PUBLIC_GA_KEY_SECRET); + // GameAnalytics.initialize(process.env.NEXT_PUBLIC_GA_KEY_GAME_PUBLIC, process.env.NEXT_PUBLIC_GA_KEY_SECRET); + GameAnalytics.initialize('16f053bf9aa8bdb4339f013d3af5bf58', '27ba60bcc570fb3d5eb63ec081ddf09647ccb456'); + GameAnalytics.startSession() + analyticsInitialized = true } }, []) From 93c63cf2d4cfcccec1671a9c333ce9cdd7b7c280 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Thu, 10 Oct 2024 00:49:00 -0700 Subject: [PATCH 235/353] analytics update --- mirror-2/.env.example | 1 + mirror-2/package.json | 1 + mirror-2/utils/analytics/analytics.tsx | 18 ++++-- mirror-2/yarn.lock | 77 ++++++++++++++++++++++++++ 4 files changed, 92 insertions(+), 5 deletions(-) diff --git a/mirror-2/.env.example b/mirror-2/.env.example index 9dc553d7..4da03dea 100644 --- a/mirror-2/.env.example +++ b/mirror-2/.env.example @@ -6,3 +6,4 @@ NEXT_PUBLIC_APP_NAME="The Mirror" # only use The Mirror or Reflekt NEXT_PUBLIC_DISCORD_INVITE_URL=https://themirror.space/discord NEXT_PUBLIC_GA_KEY_GAME_PUBLIC= NEXT_PUBLIC_GA_KEY_SECRET= # I asked about this to GA support; why secret public?? Using throwaway keys for now +NEXT_PUBLIC_VERSION_NAME="JavaScript" diff --git a/mirror-2/package.json b/mirror-2/package.json index 320ba1b2..d45a2612 100644 --- a/mirror-2/package.json +++ b/mirror-2/package.json @@ -10,6 +10,7 @@ "start": "next start" }, "dependencies": { + "@amplitude/analytics-browser": "^2.11.7", "@hookform/resolvers": "^3.9.0", "@next/bundle-analyzer": "^14.2.13", "@radix-ui/react-checkbox": "^1.1.1", diff --git a/mirror-2/utils/analytics/analytics.tsx b/mirror-2/utils/analytics/analytics.tsx index cee27d4c..dd728d77 100644 --- a/mirror-2/utils/analytics/analytics.tsx +++ b/mirror-2/utils/analytics/analytics.tsx @@ -3,14 +3,15 @@ import { useEffect } from 'react'; import packageJson from '../../package.json'; import { GameAnalytics } from 'gameanalytics' import { AppNameKebabCaseType, appNameKebabCase } from '@/lib/theme-service'; +import * as amplitude from '@amplitude/analytics-browser'; let analyticsInitialized = false -type AnalyticsEvent = [string, string?, string?, string?]; +type GameAnalyticsEvent = [string, string?, string?, string?]; -export function sendAnalyticsEvent(event: AnalyticsEvent, eventValue?: number) { +export function sendAnalyticsEvent(event: GameAnalyticsEvent, eventValue?: number) { // don't track if we're not client-side since NextJS renders the HTML on server - if (typeof window !== 'undefined') { + if (typeof window !== 'undefined' && analyticsInitialized) { const app = appNameKebabCase(); // Join the non-empty parts of the event tuple with a colon separator @@ -24,22 +25,29 @@ export function sendAnalyticsEvent(event: AnalyticsEvent, eventValue?: number) { GameAnalytics.addDesignEvent(eventName, eventValue); } else { // GameAnalytics("addDesignEvent", eventName); - GameAnalytics.addDesignEvent(eventName, eventName); - + GameAnalytics.addDesignEvent(eventName); } + const versionName = process.env.NEXT_PUBLIC_VERSION_NAME + amplitude.track({ + event_type: eventName, + app_version: packageJson.version + }) + } } export function setAnalyticsUserId(userId: string) { // GameAnalytics.configureUserId(userId); + amplitude.setUserId(userId) } const Analytics = function () { useEffect(() => { if (typeof window !== 'undefined' && !analyticsInitialized) { + amplitude.init('4a9417393c890dc8498e1a3a93a92424', { "autocapture": true }); // console.log('Analytics: Initing & starting session') console.log('Analytics: Initing') // GameAnalytics("configureBuild", `web ${packageJson.version}`); diff --git a/mirror-2/yarn.lock b/mirror-2/yarn.lock index 39c6d8d2..d960004b 100644 --- a/mirror-2/yarn.lock +++ b/mirror-2/yarn.lock @@ -7,6 +7,76 @@ resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== +"@amplitude/analytics-browser@^2.11.7": + version "2.11.7" + resolved "https://registry.yarnpkg.com/@amplitude/analytics-browser/-/analytics-browser-2.11.7.tgz#7cf0a64bb47f702686d665b732945708a4135e44" + integrity sha512-tbBeMA2n1JQJlHGEa1LQ7XrSGPM4YKrNdFKV+gDCzqOixx4wBwwYCxN33lVwCpJvCPAjtYonkAO2dq9d78U7Pw== + dependencies: + "@amplitude/analytics-client-common" "^2.3.3" + "@amplitude/analytics-core" "^2.5.2" + "@amplitude/analytics-remote-config" "^0.4.0" + "@amplitude/analytics-types" "^2.8.2" + "@amplitude/plugin-autocapture-browser" "^1.0.2" + "@amplitude/plugin-page-view-tracking-browser" "^2.3.3" + tslib "^2.4.1" + +"@amplitude/analytics-client-common@>=1 <3", "@amplitude/analytics-client-common@^2.3.3": + version "2.3.3" + resolved "https://registry.yarnpkg.com/@amplitude/analytics-client-common/-/analytics-client-common-2.3.3.tgz#7a23d72d8884b2723043274f13c7ece35104d62d" + integrity sha512-HOvD2A8DH0y2LATrQ0AhFSOCk6yZayebu4+UsEBT76Q7EEYtnc59WMCRRIi5Zv6OqHpOvABumF7g3HmL6ehTYA== + dependencies: + "@amplitude/analytics-connector" "^1.4.8" + "@amplitude/analytics-core" "^2.5.2" + "@amplitude/analytics-types" "^2.8.2" + tslib "^2.4.1" + +"@amplitude/analytics-connector@^1.4.8": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@amplitude/analytics-connector/-/analytics-connector-1.5.0.tgz#89a78b8c6463abe4de1d621db4af6c62f0d62b0a" + integrity sha512-T8mOYzB9RRxckzhL0NTHwdge9xuFxXEOplC8B1Y3UX3NHa3BLh7DlBUZlCOwQgMc2nxDfnSweDL5S3bhC+W90g== + +"@amplitude/analytics-core@>=1 <3", "@amplitude/analytics-core@^2.5.2": + version "2.5.2" + resolved "https://registry.yarnpkg.com/@amplitude/analytics-core/-/analytics-core-2.5.2.tgz#502cb294dad94ec4dd8330e19228d9101ebaa0ad" + integrity sha512-4ojYUL7LA+qrlaz1n1nxpsbpgS1k6DOrQ3fBiQOuDJE8Av0aZfylDksFPnZvD1+MMdIm/ONkVAYfEaW3x/uH3Q== + dependencies: + "@amplitude/analytics-types" "^2.8.2" + tslib "^2.4.1" + +"@amplitude/analytics-remote-config@^0.4.0": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@amplitude/analytics-remote-config/-/analytics-remote-config-0.4.1.tgz#b62cf8aa82290f68b314197e20351b10ea44ae3e" + integrity sha512-BYl6kQ9qjztrCACsugpxO+foLaQIC0aSEzoXEAb/gwOzInmqkyyI+Ub+aWTBih4xgB/lhWlOcidWHAmNiTJTNw== + dependencies: + "@amplitude/analytics-client-common" ">=1 <3" + "@amplitude/analytics-core" ">=1 <3" + "@amplitude/analytics-types" ">=1 <3" + tslib "^2.4.1" + +"@amplitude/analytics-types@>=1 <3", "@amplitude/analytics-types@^2.8.2": + version "2.8.2" + resolved "https://registry.yarnpkg.com/@amplitude/analytics-types/-/analytics-types-2.8.2.tgz#aee2b0d42c962d8408056b45b957f18dbb2529ef" + integrity sha512-SWFXIMxhFm1/k3PUvxvYLY1iwzS28yd9A6pa5pEnrbaAZwM+E/24ucxs59VGp1N5qlIsvF0aVGSoKzN4ydh4eA== + +"@amplitude/plugin-autocapture-browser@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@amplitude/plugin-autocapture-browser/-/plugin-autocapture-browser-1.0.3.tgz#cd14a1a5f10a570f1e2b08465e42bc4d38eee0b5" + integrity sha512-XUQWUAw9VqtJPlmOyWjnhsEspyVakd9LuSjVNtLjhwlWv+f/yZM1AAQVUdq/Os1+b5OptSgJQ2pPfRJJHZDXTw== + dependencies: + "@amplitude/analytics-client-common" ">=1 <3" + "@amplitude/analytics-types" "^2.8.2" + rxjs "^7.8.1" + tslib "^2.4.1" + +"@amplitude/plugin-page-view-tracking-browser@^2.3.3": + version "2.3.3" + resolved "https://registry.yarnpkg.com/@amplitude/plugin-page-view-tracking-browser/-/plugin-page-view-tracking-browser-2.3.3.tgz#f5438f3fedf3e4bb4b6129274b6047e6721f4f5c" + integrity sha512-tGDt7aU/okGHH38sxZvBckRXBw2btkw+wJz/PmIFIQdD7/7EMVnTtXgZJTokE+fqfxCx79F2ojEHp37xgVSxpg== + dependencies: + "@amplitude/analytics-client-common" "^2.3.3" + "@amplitude/analytics-types" "^2.8.2" + tslib "^2.4.1" + "@ant-design/colors@^7.0.0", "@ant-design/colors@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-7.1.0.tgz#60eadfa2e21871d8948dac5d50b9f056062f8af3" @@ -2342,6 +2412,13 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +rxjs@^7.8.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + scheduler@^0.23.0: version "0.23.2" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" From 55663f0b8323b014a452929a8cd90d624a1428b1 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Thu, 10 Oct 2024 01:46:31 -0700 Subject: [PATCH 236/353] analytics fixes --- mirror-2/.env.example | 1 + mirror-2/ampli.json | 14 ++ mirror-2/app/(auth-pages)/login/page.tsx | 4 +- mirror-2/app/layout.tsx | 4 +- .../app/space/[spaceId]/build/top-navbar.tsx | 2 +- mirror-2/lib/theme-service.tsx | 1 + mirror-2/package.json | 1 + mirror-2/src/ampli/index.ts | 176 ++++++++++++++++++ mirror-2/state/spaces.tsx | 2 +- mirror-2/utils/analytics/analytics.tsx | 57 +++--- mirror-2/yarn.lock | 95 +++++++++- 11 files changed, 324 insertions(+), 33 deletions(-) create mode 100644 mirror-2/ampli.json create mode 100644 mirror-2/src/ampli/index.ts diff --git a/mirror-2/.env.example b/mirror-2/.env.example index 4da03dea..992abcfd 100644 --- a/mirror-2/.env.example +++ b/mirror-2/.env.example @@ -7,3 +7,4 @@ NEXT_PUBLIC_DISCORD_INVITE_URL=https://themirror.space/discord NEXT_PUBLIC_GA_KEY_GAME_PUBLIC= NEXT_PUBLIC_GA_KEY_SECRET= # I asked about this to GA support; why secret public?? Using throwaway keys for now NEXT_PUBLIC_VERSION_NAME="JavaScript" +NEXT_PUBLIC_AMPLITUDE_PUBLIC_KEY= diff --git a/mirror-2/ampli.json b/mirror-2/ampli.json new file mode 100644 index 00000000..f1cce44f --- /dev/null +++ b/mirror-2/ampli.json @@ -0,0 +1,14 @@ +{ + "Zone": "us", + "OrgId": "308710", + "WorkspaceId": "a2da908b-27c1-4013-b214-f7ce5531bbe7", + "SourceId": "b077387d-b743-4f18-bd57-94effffd3ad1", + "Runtime": "browser:typescript-ampli-v2", + "Platform": "Browser", + "Language": "TypeScript", + "SDK": "@amplitude/analytics-browser@^1.0", + "Branch": "main", + "Version": "1.0.0", + "VersionId": "84e8930d-d0e7-4c92-b6c6-629ff838c9a6", + "Path": "./src/ampli" +} \ No newline at end of file diff --git a/mirror-2/app/(auth-pages)/login/page.tsx b/mirror-2/app/(auth-pages)/login/page.tsx index 26ef1228..e3df9149 100644 --- a/mirror-2/app/(auth-pages)/login/page.tsx +++ b/mirror-2/app/(auth-pages)/login/page.tsx @@ -10,11 +10,11 @@ import { AppLogoImageMedium } from "@/lib/theme-service"; import Link from "next/link"; import { useRef } from "react"; +const isDevelopment = process.env.NODE_ENV === 'development'; + export default function Login({ searchParams }: { searchParams: Message }) { useRedirectToHomeIfSignedIn() - const isDevelopment = process.env.NODE_ENV === 'development'; - // References for email and password fields const emailRef = useRef(null); const passwordRef = useRef(null); diff --git a/mirror-2/app/layout.tsx b/mirror-2/app/layout.tsx index 536249a1..3047063a 100644 --- a/mirror-2/app/layout.tsx +++ b/mirror-2/app/layout.tsx @@ -3,7 +3,7 @@ import { Montserrat } from 'next/font/google' import "./globals.css"; import { Metadata } from "next"; import { appName, appDescription, faviconPath } from "@/lib/theme-service"; -import Analytics from "@/utils/analytics/analytics"; +import "@/utils/analytics/analytics"; export const metadata: Metadata = { @@ -24,7 +24,7 @@ export default function RootLayout({ - + {/* */} {children} diff --git a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx index 2915dbad..c1e32dfa 100644 --- a/mirror-2/app/space/[spaceId]/build/top-navbar.tsx +++ b/mirror-2/app/space/[spaceId]/build/top-navbar.tsx @@ -41,7 +41,7 @@ export function TopNavbar() { > - Play + Preview {!localUserState?.id &&
        diff --git a/mirror-2/app/space/[spaceId]/build/inspector/inspector.tsx b/mirror-2/app/space/[spaceId]/build/inspector/inspector.tsx index 5be199a1..e6678daf 100644 --- a/mirror-2/app/space/[spaceId]/build/inspector/inspector.tsx +++ b/mirror-2/app/space/[spaceId]/build/inspector/inspector.tsx @@ -1,8 +1,10 @@ "use client" import { TwoWayInput } from "@/components/two-way-input"; +import { Input } from "@/components/ui/input"; import { useAppSelector } from "@/hooks/hooks"; import { useGetSingleEntityQuery, useUpdateEntityMutation } from "@/state/entities"; import { getCurrentEntity } from "@/state/local"; +import { cn } from "@/utils/cn"; import { z } from 'zod'; // Import zod for validation export default function Inspector() { @@ -21,6 +23,14 @@ export default function Inspector() { generalEntity={entity} useGeneralGetEntityQuery={useGetSingleEntityQuery} useGeneralUpdateEntityMutation={useUpdateEntityMutation} + renderComponent={(field) => ( + + )} /> }
        diff --git a/mirror-2/components/entity-tree/tree-item.tsx b/mirror-2/components/entity-tree/tree-item.tsx index 52dc6c27..26275967 100644 --- a/mirror-2/components/entity-tree/tree-item.tsx +++ b/mirror-2/components/entity-tree/tree-item.tsx @@ -1,5 +1,7 @@ import { TwoWayInput } from "@/components/two-way-input"; +import { Input } from "@/components/ui/input"; import { useGetSingleEntityQuery, useUpdateEntityMutation } from "@/state/entities"; +import { cn } from "@/utils/cn"; import { useState } from "react"; import { z } from "zod"; @@ -17,6 +19,14 @@ export default function EntityTreeItem({ nodeData }) { })} useGeneralGetEntityQuery={useGetSingleEntityQuery} useGeneralUpdateEntityMutation={useUpdateEntityMutation} + renderComponent={(field) => ( + + )} /> }
        diff --git a/mirror-2/components/two-way-input.tsx b/mirror-2/components/two-way-input.tsx index b74ebdd1..c974f360 100644 --- a/mirror-2/components/two-way-input.tsx +++ b/mirror-2/components/two-way-input.tsx @@ -1,9 +1,8 @@ "use client"; import { Form, FormControl, FormField, FormItem, FormMessage } from "@/components/ui/form"; -import { Input } from "@/components/ui/input"; import { Skeleton } from "@/components/ui/skeleton"; import { zodResolver } from "@hookform/resolvers/zod"; -import { useEffect, useRef } from "react"; +import { useEffect } from "react"; import { useForm } from "react-hook-form"; import { z, ZodSchema } from "zod"; import clsx from "clsx"; // Utility to merge class names @@ -15,33 +14,32 @@ interface TwoWayInputProps { fieldName: keyof T; formSchema: ZodSchema; defaultValue: string; - // "General" entity bc not referring our proper Entity, but anything useGeneralGetEntityQuery: (id: string) => { data?: T; isLoading: boolean; isSuccess: boolean; error?: any }; - // "General" entity bc not referring our proper Entity, but anything useGeneralUpdateEntityMutation: () => readonly [ (args: { id: string;[fieldName: string]: any }) => any, // The mutation trigger function { isLoading: boolean; isSuccess: boolean; error?: any } ]; className?: string; // Optional className prop - onSubmitFn?: Function - onBlurFn?: Function + onSubmitFn?: Function; + onBlurFn?: Function; + renderComponent: (field: any, fieldName: string) => JSX.Element; // Dynamically render a component } -// TODO fix and ensure deduping works correctly to not fire a ton of network requests + export function TwoWayInput({ id: generalEntityId, generalEntity, fieldName, formSchema, defaultValue, - useGeneralGetEntityQuery, // "General" entity bc not referring our proper Entity, but anything - useGeneralUpdateEntityMutation, // "General" entity bc not referring our proper Entity, but anything - className, // Destructure the className prop + useGeneralGetEntityQuery, + useGeneralUpdateEntityMutation, + className, onSubmitFn, - onBlurFn + onBlurFn, + renderComponent, // Now accepting a renderComponent prop }: TwoWayInputProps) { const { data: entity, isLoading, isSuccess } = useGeneralGetEntityQuery(generalEntityId); - // Destructure the mutation trigger function and its state from the readonly tuple const [updateGeneralEntity, { isLoading: isUpdating, isSuccess: isUpdated, error }] = useGeneralUpdateEntityMutation(); const form = useForm>({ @@ -50,22 +48,18 @@ export function TwoWayInput({ defaultValues: { [fieldName]: entity?.[fieldName] ?? defaultValue, }, - }); - // Handle form submission async function onSubmit(values: z.infer) { - // check if values changed if (entity && isSuccess && entity[fieldName] === values[fieldName]) { return; } if (onSubmitFn) { - onSubmitFn() + onSubmitFn(); } await updateGeneralEntity({ id: generalEntityId, ...generalEntity, [fieldName]: values[fieldName] }); } - // Reset form when entity data is fetched useEffect(() => { if (entity && isSuccess) { form.reset({ @@ -87,18 +81,8 @@ export function TwoWayInput({ render={({ field }) => ( - { - if (onBlurFn) { - onBlurFn() - } - } - } - /> + {/* Use the renderComponent prop to dynamically render any input */} + {renderComponent && renderComponent(field, fieldName as string)} diff --git a/mirror-2/components/ui/command.tsx b/mirror-2/components/ui/command.tsx new file mode 100644 index 00000000..13e3d7f0 --- /dev/null +++ b/mirror-2/components/ui/command.tsx @@ -0,0 +1,155 @@ +"use client" + +import * as React from "react" +import { type DialogProps } from "@radix-ui/react-dialog" +import { Command as CommandPrimitive } from "cmdk" +import { Search } from "lucide-react" + +import { cn } from "@/lib/utils" +import { Dialog, DialogContent } from "@/components/ui/dialog" + +const Command = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +Command.displayName = CommandPrimitive.displayName + +interface CommandDialogProps extends DialogProps {} + +const CommandDialog = ({ children, ...props }: CommandDialogProps) => { + return ( + + + + {children} + + + + ) +} + +const CommandInput = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( +
        + + +
        +)) + +CommandInput.displayName = CommandPrimitive.Input.displayName + +const CommandList = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) + +CommandList.displayName = CommandPrimitive.List.displayName + +const CommandEmpty = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>((props, ref) => ( + +)) + +CommandEmpty.displayName = CommandPrimitive.Empty.displayName + +const CommandGroup = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) + +CommandGroup.displayName = CommandPrimitive.Group.displayName + +const CommandSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +CommandSeparator.displayName = CommandPrimitive.Separator.displayName + +const CommandItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) + +CommandItem.displayName = CommandPrimitive.Item.displayName + +const CommandShortcut = ({ + className, + ...props +}: React.HTMLAttributes) => { + return ( + + ) +} +CommandShortcut.displayName = "CommandShortcut" + +export { + Command, + CommandDialog, + CommandInput, + CommandList, + CommandEmpty, + CommandGroup, + CommandItem, + CommandShortcut, + CommandSeparator, +} diff --git a/mirror-2/components/ui/dynamic-form-group.tsx b/mirror-2/components/ui/dynamic-form-group.tsx new file mode 100644 index 00000000..7c029541 --- /dev/null +++ b/mirror-2/components/ui/dynamic-form-group.tsx @@ -0,0 +1,135 @@ +import { Checkbox } from "@/components/ui/checkbox"; +import { Input } from "@/components/ui/input"; +import { Select } from "@/components/ui/select"; +import { useForm, Controller } from "react-hook-form"; + +// Define the types for the form data configuration +interface FormFieldConfig { + type: "text" | "boolean" | "multiselect" | "vector3" | "dropdown"; + label: string; + value: any; + options?: string[]; // for dropdown and multiselect +} + +// Sample data input could look like this +const dbItem: Record = { + name: { type: "text", label: "Name", value: "Example" }, + active: { type: "boolean", label: "Active", value: true }, + categories: { type: "multiselect", label: "Categories", options: ["Category1", "Category2"], value: [] }, + position: { type: "vector3", label: "Position", value: { x: 0, y: 0, z: 0 } }, + status: { type: "dropdown", label: "Status", options: ["Pending", "Completed"], value: "Pending" }, +}; + +interface DynamicFormGroupProps { + formData?: Record; +} + +export default function DynamicFormGroup({ formData = dbItem }: DynamicFormGroupProps) { + const { control, handleSubmit } = useForm({ + defaultValues: Object.keys(formData).reduce((acc, key) => { + acc[key] = formData[key].value; + return acc; + }, {} as Record), + }); + + const onSubmit = (data: any) => { + console.log(data); // Submit the form data + }; + + const renderField = (name: string, config: FormFieldConfig) => { + switch (config.type) { + case "text": + return ( + } + /> + ); + case "boolean": + return ( + ( + + {config.label} + + )} + /> + ); + // case "multiselect": + // return ( + // ( + // + // )} + // /> + // ); + case "vector3": + return ( +
        + +
        + } + /> + } + /> + } + /> +
        +
        + ); + case "dropdown": + return ( + ( + + )} + /> + ); + default: + return null; + } + }; + + return ( + + {Object.keys(formData).map((key) => ( +
        + {renderField(key, formData[key])} +
        + ))} + + + ); +} diff --git a/mirror-2/components/ui/input.tsx b/mirror-2/components/ui/input.tsx index 1940c59d..0788257b 100644 --- a/mirror-2/components/ui/input.tsx +++ b/mirror-2/components/ui/input.tsx @@ -11,7 +11,7 @@ const Input = React.forwardRef( , + VariantProps { + /** + * An array of option objects to be displayed in the multi-select component. + * Each option object has a label, value, and an optional icon. + */ + options: { + /** The text to display for the option. */ + label: string; + /** The unique value associated with the option. */ + value: string; + /** Optional icon component to display alongside the option. */ + icon?: React.ComponentType<{ className?: string }>; + }[]; + + /** + * Callback function triggered when the selected values change. + * Receives an array of the new selected values. + */ + onValueChange: (value: string[]) => void; + + /** The default selected values when the component mounts. */ + defaultValue?: string[]; + + /** + * Placeholder text to be displayed when no values are selected. + * Optional, defaults to "Select options". + */ + placeholder?: string; + + /** + * Animation duration in seconds for the visual effects (e.g., bouncing badges). + * Optional, defaults to 0 (no animation). + */ + animation?: number; + + /** + * Maximum number of items to display. Extra selected items will be summarized. + * Optional, defaults to 3. + */ + maxCount?: number; + + /** + * The modality of the popover. When set to true, interaction with outside elements + * will be disabled and only popover content will be visible to screen readers. + * Optional, defaults to false. + */ + modalPopover?: boolean; + + /** + * If true, renders the multi-select component as a child of another component. + * Optional, defaults to false. + */ + asChild?: boolean; + + /** + * Additional class names to apply custom styles to the multi-select component. + * Optional, can be used to add custom styles. + */ + className?: string; +} + +export const MultiSelect = React.forwardRef< + HTMLButtonElement, + MultiSelectProps +>( + ( + { + options, + onValueChange, + variant, + defaultValue = [], + placeholder = "Select options", + animation = 0, + maxCount = 3, + modalPopover = false, + asChild = false, + className, + ...props + }, + ref + ) => { + const [selectedValues, setSelectedValues] = + React.useState(defaultValue); + const [isPopoverOpen, setIsPopoverOpen] = React.useState(false); + const [isAnimating, setIsAnimating] = React.useState(false); + + const handleInputKeyDown = ( + event: React.KeyboardEvent + ) => { + if (event.key === "Enter") { + setIsPopoverOpen(true); + } else if (event.key === "Backspace" && !event.currentTarget.value) { + const newSelectedValues = [...selectedValues]; + newSelectedValues.pop(); + setSelectedValues(newSelectedValues); + onValueChange(newSelectedValues); + } + }; + + const toggleOption = (option: string) => { + const newSelectedValues = selectedValues.includes(option) + ? selectedValues.filter((value) => value !== option) + : [...selectedValues, option]; + setSelectedValues(newSelectedValues); + onValueChange(newSelectedValues); + }; + + const handleClear = () => { + setSelectedValues([]); + onValueChange([]); + }; + + const handleTogglePopover = () => { + setIsPopoverOpen((prev) => !prev); + }; + + const clearExtraOptions = () => { + const newSelectedValues = selectedValues.slice(0, maxCount); + setSelectedValues(newSelectedValues); + onValueChange(newSelectedValues); + }; + + const toggleAll = () => { + if (selectedValues.length === options.length) { + handleClear(); + } else { + const allValues = options.map((option) => option.value); + setSelectedValues(allValues); + onValueChange(allValues); + } + }; + + return ( + + + + + setIsPopoverOpen(false)} + > + + + + No results found. + + +
        + +
        + (Select All) +
        + {options.map((option) => { + const isSelected = selectedValues.includes(option.value); + return ( + toggleOption(option.value)} + className="cursor-pointer" + > +
        + +
        + {option.icon && ( + + )} + {option.label} +
        + ); + })} +
        + + +
        + {selectedValues.length > 0 && ( + <> + + Clear + + + + )} + setIsPopoverOpen(false)} + className="flex-1 justify-center cursor-pointer max-w-full" + > + Close + +
        +
        +
        +
        +
        + {animation > 0 && selectedValues.length > 0 && ( + setIsAnimating(!isAnimating)} + /> + )} +
        + ); + } +); + +MultiSelect.displayName = "MultiSelect"; diff --git a/mirror-2/components/ui/popover.tsx b/mirror-2/components/ui/popover.tsx new file mode 100644 index 00000000..eb3e6a92 --- /dev/null +++ b/mirror-2/components/ui/popover.tsx @@ -0,0 +1,31 @@ +"use client" + +import * as React from "react" +import * as PopoverPrimitive from "@radix-ui/react-popover" + +import { cn } from "@/lib/utils" + +const Popover = PopoverPrimitive.Root + +const PopoverTrigger = PopoverPrimitive.Trigger + +const PopoverContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, align = "center", sideOffset = 4, ...props }, ref) => ( + + + +)) +PopoverContent.displayName = PopoverPrimitive.Content.displayName + +export { Popover, PopoverTrigger, PopoverContent } diff --git a/mirror-2/components/ui/select.tsx b/mirror-2/components/ui/select.tsx new file mode 100644 index 00000000..f9182fd9 --- /dev/null +++ b/mirror-2/components/ui/select.tsx @@ -0,0 +1,160 @@ +"use client" + +import * as React from "react" +import * as SelectPrimitive from "@radix-ui/react-select" +import { Check, ChevronDown, ChevronUp } from "lucide-react" + +import { cn } from "@/lib/utils" + +const Select = SelectPrimitive.Root + +const SelectGroup = SelectPrimitive.Group + +const SelectValue = SelectPrimitive.Value + +const SelectTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + span]:line-clamp-1 dark:border-slate-800 dark:bg-slate-950 dark:ring-offset-slate-950 dark:placeholder:text-slate-400 dark:focus:ring-slate-300", + className + )} + {...props} + > + {children} + + + + +)) +SelectTrigger.displayName = SelectPrimitive.Trigger.displayName + +const SelectScrollUpButton = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + +)) +SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName + +const SelectScrollDownButton = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + +)) +SelectScrollDownButton.displayName = + SelectPrimitive.ScrollDownButton.displayName + +const SelectContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, position = "popper", ...props }, ref) => ( + + + + + {children} + + + + +)) +SelectContent.displayName = SelectPrimitive.Content.displayName + +const SelectLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +SelectLabel.displayName = SelectPrimitive.Label.displayName + +const SelectItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + + + + + {children} + +)) +SelectItem.displayName = SelectPrimitive.Item.displayName + +const SelectSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +SelectSeparator.displayName = SelectPrimitive.Separator.displayName + +export { + Select, + SelectGroup, + SelectValue, + SelectTrigger, + SelectContent, + SelectLabel, + SelectItem, + SelectSeparator, + SelectScrollUpButton, + SelectScrollDownButton, +} diff --git a/mirror-2/package.json b/mirror-2/package.json index faf5b552..fbfeca60 100644 --- a/mirror-2/package.json +++ b/mirror-2/package.json @@ -20,8 +20,10 @@ "@radix-ui/react-dropdown-menu": "^2.1.1", "@radix-ui/react-label": "^2.1.0", "@radix-ui/react-menubar": "^1.1.2", + "@radix-ui/react-popover": "^1.1.2", "@radix-ui/react-progress": "^1.1.0", "@radix-ui/react-scroll-area": "^1.2.0", + "@radix-ui/react-select": "^2.1.2", "@radix-ui/react-separator": "^1.1.0", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tabs": "^1.1.1", @@ -35,6 +37,7 @@ "autoprefixer": "10.4.17", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", + "cmdk": "1.0.0", "gameanalytics": "^4.4.7", "geist": "^1.2.1", "lucide-react": "^0.446.0", @@ -52,6 +55,7 @@ "redux-undo": "^1.1.0", "server-only": "^0.0.1", "tiny-invariant": "^1.3.3", + "ts-plugin-sort-import-suggestions": "^1.0.4", "unique-names-generator": "^4.7.1", "use-sound": "^4.0.3", "zod": "^3.23.8" diff --git a/mirror-2/tsconfig.json b/mirror-2/tsconfig.json index ca206332..7e205f45 100644 --- a/mirror-2/tsconfig.json +++ b/mirror-2/tsconfig.json @@ -18,6 +18,11 @@ "plugins": [ { "name": "next" + }, + { + "name": "ts-plugin-sort-import-suggestions", + "moveUpPatterns": ["@/", "\\.{1,2}/"], + "moveDownPatterns": ["dist"] } ], "paths": { diff --git a/mirror-2/yarn.lock b/mirror-2/yarn.lock index a4f04415..4dcee30f 100644 --- a/mirror-2/yarn.lock +++ b/mirror-2/yarn.lock @@ -198,7 +198,7 @@ resize-observer-polyfill "^1.5.1" throttle-debounce "^5.0.0" -"@babel/runtime@^7.10.1", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.7", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.0", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.6", "@babel/runtime@^7.23.9", "@babel/runtime@^7.24.4", "@babel/runtime@^7.24.7", "@babel/runtime@^7.24.8", "@babel/runtime@^7.25.6", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": +"@babel/runtime@^7.10.1", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.7", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.0", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.6", "@babel/runtime@^7.23.9", "@babel/runtime@^7.24.4", "@babel/runtime@^7.24.7", "@babel/runtime@^7.24.8", "@babel/runtime@^7.25.6", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.7.tgz#7ffb53c37a8f247c8c4d335e89cdf16a2e0d0fb6" integrity sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w== @@ -394,6 +394,13 @@ resolved "https://registry.yarnpkg.com/@radix-ui/number/-/number-1.1.0.tgz#1e95610461a09cdf8bb05c152e76ca1278d5da46" integrity sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ== +"@radix-ui/primitive@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.0.1.tgz#e46f9958b35d10e9f6dc71c497305c22e3e55dbd" + integrity sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/primitive@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.1.0.tgz#42ef83b3b56dccad5d703ae8c42919a68798bbe2" @@ -430,6 +437,13 @@ "@radix-ui/react-primitive" "2.0.0" "@radix-ui/react-slot" "1.1.0" +"@radix-ui/react-compose-refs@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz#7ed868b66946aa6030e580b1ffca386dd4d21989" + integrity sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-compose-refs@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz#656432461fc8283d7b591dcf0d79152fae9ecc74" @@ -447,6 +461,13 @@ "@radix-ui/react-use-callback-ref" "1.1.0" "@radix-ui/react-use-controllable-state" "1.1.0" +"@radix-ui/react-context@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.0.1.tgz#fe46e67c96b240de59187dcb7a1a50ce3e2ec00c" + integrity sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-context@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.0.tgz#6df8d983546cfd1999c8512f3a8ad85a6e7fcee8" @@ -457,6 +478,27 @@ resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.1.tgz#82074aa83a472353bb22e86f11bcbd1c61c4c71a" integrity sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q== +"@radix-ui/react-dialog@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dialog/-/react-dialog-1.0.5.tgz#71657b1b116de6c7a0b03242d7d43e01062c7300" + integrity sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/primitive" "1.0.1" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-context" "1.0.1" + "@radix-ui/react-dismissable-layer" "1.0.5" + "@radix-ui/react-focus-guards" "1.0.1" + "@radix-ui/react-focus-scope" "1.0.4" + "@radix-ui/react-id" "1.0.1" + "@radix-ui/react-portal" "1.0.4" + "@radix-ui/react-presence" "1.0.1" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-slot" "1.0.2" + "@radix-ui/react-use-controllable-state" "1.0.1" + aria-hidden "^1.1.1" + react-remove-scroll "2.5.5" + "@radix-ui/react-dialog@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@radix-ui/react-dialog/-/react-dialog-1.1.2.tgz#d9345575211d6f2d13e209e84aec9a8584b54d6c" @@ -482,6 +524,18 @@ resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.1.0.tgz#a7d39855f4d077adc2a1922f9c353c5977a09cdc" integrity sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg== +"@radix-ui/react-dismissable-layer@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz#3f98425b82b9068dfbab5db5fff3df6ebf48b9d4" + integrity sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/primitive" "1.0.1" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-use-callback-ref" "1.0.1" + "@radix-ui/react-use-escape-keydown" "1.0.3" + "@radix-ui/react-dismissable-layer@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.0.tgz#2cd0a49a732372513733754e6032d3fb7988834e" @@ -517,6 +571,13 @@ "@radix-ui/react-primitive" "2.0.0" "@radix-ui/react-use-controllable-state" "1.1.0" +"@radix-ui/react-focus-guards@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz#1ea7e32092216b946397866199d892f71f7f98ad" + integrity sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-focus-guards@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.0.tgz#8e9abb472a9a394f59a1b45f3dd26cfe3fc6da13" @@ -527,6 +588,16 @@ resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz#8635edd346304f8b42cae86b05912b61aef27afe" integrity sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg== +"@radix-ui/react-focus-scope@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz#2ac45fce8c5bb33eb18419cdc1905ef4f1906525" + integrity sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-use-callback-ref" "1.0.1" + "@radix-ui/react-focus-scope@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz#ebe2891a298e0a33ad34daab2aad8dea31caf0b2" @@ -536,6 +607,14 @@ "@radix-ui/react-primitive" "2.0.0" "@radix-ui/react-use-callback-ref" "1.1.0" +"@radix-ui/react-id@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.0.1.tgz#73cdc181f650e4df24f0b6a5b7aa426b912c88c0" + integrity sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-use-layout-effect" "1.0.1" + "@radix-ui/react-id@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.1.0.tgz#de47339656594ad722eb87f94a6b25f9cffae0ed" @@ -614,6 +693,27 @@ "@radix-ui/react-roving-focus" "1.1.0" "@radix-ui/react-use-controllable-state" "1.1.0" +"@radix-ui/react-popover@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-popover/-/react-popover-1.1.2.tgz#a0cab25f69aa49ad0077d91e9e9dcd323758020c" + integrity sha512-u2HRUyWW+lOiA2g0Le0tMmT55FGOEWHwPFt1EPfbLly7uXQExFo5duNKqG2DzmFXIdqOeNd+TpE8baHWJCyP9w== + dependencies: + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-dismissable-layer" "1.1.1" + "@radix-ui/react-focus-guards" "1.1.1" + "@radix-ui/react-focus-scope" "1.1.0" + "@radix-ui/react-id" "1.1.0" + "@radix-ui/react-popper" "1.2.0" + "@radix-ui/react-portal" "1.1.2" + "@radix-ui/react-presence" "1.1.1" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-slot" "1.1.0" + "@radix-ui/react-use-controllable-state" "1.1.0" + aria-hidden "^1.1.1" + react-remove-scroll "2.6.0" + "@radix-ui/react-popper@1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-1.2.0.tgz#a3e500193d144fe2d8f5d5e60e393d64111f2a7a" @@ -630,6 +730,14 @@ "@radix-ui/react-use-size" "1.1.0" "@radix-ui/rect" "1.1.0" +"@radix-ui/react-portal@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.0.4.tgz#df4bfd353db3b1e84e639e9c63a5f2565fb00e15" + integrity sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-portal@1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.1.1.tgz#1957f1eb2e1aedfb4a5475bd6867d67b50b1d15f" @@ -646,6 +754,15 @@ "@radix-ui/react-primitive" "2.0.0" "@radix-ui/react-use-layout-effect" "1.1.0" +"@radix-ui/react-presence@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.0.1.tgz#491990ba913b8e2a5db1b06b203cb24b5cdef9ba" + integrity sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-use-layout-effect" "1.0.1" + "@radix-ui/react-presence@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.1.0.tgz#227d84d20ca6bfe7da97104b1a8b48a833bfb478" @@ -662,6 +779,14 @@ "@radix-ui/react-compose-refs" "1.1.0" "@radix-ui/react-use-layout-effect" "1.1.0" +"@radix-ui/react-primitive@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz#d49ea0f3f0b2fe3ab1cb5667eb03e8b843b914d0" + integrity sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-slot" "1.0.2" + "@radix-ui/react-primitive@2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz#fe05715faa9203a223ccc0be15dc44b9f9822884" @@ -707,6 +832,33 @@ "@radix-ui/react-use-callback-ref" "1.1.0" "@radix-ui/react-use-layout-effect" "1.1.0" +"@radix-ui/react-select@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-select/-/react-select-2.1.2.tgz#2346e118966db793940f6a866fd4cc5db2cc275e" + integrity sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA== + dependencies: + "@radix-ui/number" "1.1.0" + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-collection" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-direction" "1.1.0" + "@radix-ui/react-dismissable-layer" "1.1.1" + "@radix-ui/react-focus-guards" "1.1.1" + "@radix-ui/react-focus-scope" "1.1.0" + "@radix-ui/react-id" "1.1.0" + "@radix-ui/react-popper" "1.2.0" + "@radix-ui/react-portal" "1.1.2" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-slot" "1.1.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-use-controllable-state" "1.1.0" + "@radix-ui/react-use-layout-effect" "1.1.0" + "@radix-ui/react-use-previous" "1.1.0" + "@radix-ui/react-visually-hidden" "1.1.0" + aria-hidden "^1.1.1" + react-remove-scroll "2.6.0" + "@radix-ui/react-separator@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-separator/-/react-separator-1.1.0.tgz#ee0f4d86003b0e3ea7bc6ccab01ea0adee32663e" @@ -714,6 +866,14 @@ dependencies: "@radix-ui/react-primitive" "2.0.0" +"@radix-ui/react-slot@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.0.2.tgz#a9ff4423eade67f501ffb32ec22064bc9d3099ab" + integrity sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-slot@1.1.0", "@radix-ui/react-slot@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.1.0.tgz#7c5e48c36ef5496d97b08f1357bb26ed7c714b84" @@ -753,11 +913,26 @@ "@radix-ui/react-use-controllable-state" "1.1.0" "@radix-ui/react-visually-hidden" "1.1.0" +"@radix-ui/react-use-callback-ref@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz#f4bb1f27f2023c984e6534317ebc411fc181107a" + integrity sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-use-callback-ref@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz#bce938ca413675bc937944b0d01ef6f4a6dc5bf1" integrity sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw== +"@radix-ui/react-use-controllable-state@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz#ecd2ced34e6330caf89a82854aa2f77e07440286" + integrity sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-use-callback-ref" "1.0.1" + "@radix-ui/react-use-controllable-state@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz#1321446857bb786917df54c0d4d084877aab04b0" @@ -765,6 +940,14 @@ dependencies: "@radix-ui/react-use-callback-ref" "1.1.0" +"@radix-ui/react-use-escape-keydown@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz#217b840c250541609c66f67ed7bab2b733620755" + integrity sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-use-callback-ref" "1.0.1" + "@radix-ui/react-use-escape-keydown@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz#31a5b87c3b726504b74e05dac1edce7437b98754" @@ -772,6 +955,13 @@ dependencies: "@radix-ui/react-use-callback-ref" "1.1.0" +"@radix-ui/react-use-layout-effect@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz#be8c7bc809b0c8934acf6657b577daf948a75399" + integrity sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-use-layout-effect@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz#3c2c8ce04827b26a39e442ff4888d9212268bd27" @@ -1330,6 +1520,14 @@ clsx@^2.1.1: resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== +cmdk@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cmdk/-/cmdk-1.0.0.tgz#0a095fdafca3dfabed82d1db78a6262fb163ded9" + integrity sha512-gDzVf0a09TvoJ5jnuPvygTB77+XdOSwEmJ88L6XPFPlv7T3RxbP9jgenfylrAMD0+Le1aO0nVjQUzl2g+vjz5Q== + dependencies: + "@radix-ui/react-dialog" "1.0.5" + "@radix-ui/react-primitive" "1.0.3" + color-convert@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" @@ -2379,7 +2577,7 @@ react-redux@^9.1.2: "@types/use-sync-external-store" "^0.0.3" use-sync-external-store "^1.0.0" -react-remove-scroll-bar@^2.3.4, react-remove-scroll-bar@^2.3.6: +react-remove-scroll-bar@^2.3.3, react-remove-scroll-bar@^2.3.4, react-remove-scroll-bar@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz#3e585e9d163be84a010180b18721e851ac81a29c" integrity sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g== @@ -2387,6 +2585,17 @@ react-remove-scroll-bar@^2.3.4, react-remove-scroll-bar@^2.3.6: react-style-singleton "^2.2.1" tslib "^2.0.0" +react-remove-scroll@2.5.5: + version "2.5.5" + resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz#1e31a1260df08887a8a0e46d09271b52b3a37e77" + integrity sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw== + dependencies: + react-remove-scroll-bar "^2.3.3" + react-style-singleton "^2.2.1" + tslib "^2.1.0" + use-callback-ref "^1.3.0" + use-sidecar "^1.1.2" + react-remove-scroll@2.5.7: version "2.5.7" resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz#15a1fd038e8497f65a695bf26a4a57970cac1ccb" @@ -2730,6 +2939,11 @@ ts-interface-checker@^0.1.9: resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== +ts-plugin-sort-import-suggestions@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/ts-plugin-sort-import-suggestions/-/ts-plugin-sort-import-suggestions-1.0.4.tgz#d1ed6c235feb8c8bb8b34c625ea75b46e3e62925" + integrity sha512-85n5lm2OQQ+b7aRNK9omU1gmjMNXRsgeLwojm5u4OSY5sVBkAHTcgMQPEeHMNlyyfFW0uXnwgqAU0pNfhD96Bw== + tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.4.1: version "2.7.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" From b6a87d44fcd73841a621486690b3f23f48270511 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Thu, 10 Oct 2024 17:41:55 -0700 Subject: [PATCH 245/353] fix space viewport --- .../[spaceId]/build/inspector/inspector.tsx | 42 ++++++++++--------- mirror-2/app/space/[spaceId]/build/layout.tsx | 28 ++++++++++--- 2 files changed, 44 insertions(+), 26 deletions(-) diff --git a/mirror-2/app/space/[spaceId]/build/inspector/inspector.tsx b/mirror-2/app/space/[spaceId]/build/inspector/inspector.tsx index e6678daf..99df5b49 100644 --- a/mirror-2/app/space/[spaceId]/build/inspector/inspector.tsx +++ b/mirror-2/app/space/[spaceId]/build/inspector/inspector.tsx @@ -7,31 +7,33 @@ import { getCurrentEntity } from "@/state/local"; import { cn } from "@/utils/cn"; import { z } from 'zod'; // Import zod for validation -export default function Inspector() { +export default function Inspector({ className }) { const entity = useAppSelector(getCurrentEntity) const formSchema = z.object({ name: z.string().min(3, { message: "Scene name must be at least 1 character long" }), }); - return
        - {entity && ( - - )} - /> - } + return
        + {entity && + ( + + )} + />}
        + + } diff --git a/mirror-2/app/space/[spaceId]/build/layout.tsx b/mirror-2/app/space/[spaceId]/build/layout.tsx index 1359c8d9..33c600e7 100644 --- a/mirror-2/app/space/[spaceId]/build/layout.tsx +++ b/mirror-2/app/space/[spaceId]/build/layout.tsx @@ -13,13 +13,29 @@ export default function Layout({ children, params }: { return (
        -
        - - - - + {/*
        */} +
        + {/* Sidebar with fixed width */} +
        + +
        - {/* only loading children for separate data fetching to keep this as server component */} + {/* Inner control bar takes flexible space */} +
        + +
        + + {/* Space viewport (main content) */} +
        + +
        + + + {/* Instead of a div wrapping here, passing in className so that this component can be server compoonent; the Inspector has to use a hook for checking if entity selected */} + + + + {/* Children for additional content */} {children}
        From 4d85d42d5a9b5b5eb8265bf66fdf5a53a66f10eb Mon Sep 17 00:00:00 2001 From: Kluskey Date: Thu, 10 Oct 2024 21:31:27 -0700 Subject: [PATCH 246/353] clean + home redirects --- mirror-2/app/layout.tsx | 2 - mirror-2/app/opengraph-image.png | Bin 289886 -> 0 bytes mirror-2/app/page.tsx | 8 +- mirror-2/app/space/[spaceId]/build/layout.tsx | 1 - mirror-2/app/twitter-image.png | Bin 289886 -> 0 bytes mirror-2/components/deploy-button.tsx | 25 ----- mirror-2/components/tutorial/code-block.tsx | 61 ----------- .../tutorial/connect-supabase-steps.tsx | 62 ----------- .../components/tutorial/fetch-data-steps.tsx | 96 ------------------ .../tutorial/sign-up-user-steps.tsx | 88 ---------------- .../components/tutorial/tutorial-step.tsx | 30 ------ 11 files changed, 1 insertion(+), 372 deletions(-) delete mode 100644 mirror-2/app/opengraph-image.png delete mode 100644 mirror-2/app/twitter-image.png delete mode 100644 mirror-2/components/deploy-button.tsx delete mode 100644 mirror-2/components/tutorial/code-block.tsx delete mode 100644 mirror-2/components/tutorial/connect-supabase-steps.tsx delete mode 100644 mirror-2/components/tutorial/fetch-data-steps.tsx delete mode 100644 mirror-2/components/tutorial/sign-up-user-steps.tsx delete mode 100644 mirror-2/components/tutorial/tutorial-step.tsx diff --git a/mirror-2/app/layout.tsx b/mirror-2/app/layout.tsx index 3047063a..a13cdf47 100644 --- a/mirror-2/app/layout.tsx +++ b/mirror-2/app/layout.tsx @@ -5,7 +5,6 @@ import { Metadata } from "next"; import { appName, appDescription, faviconPath } from "@/lib/theme-service"; import "@/utils/analytics/analytics"; - export const metadata: Metadata = { title: appName(), description: appDescription(), @@ -24,7 +23,6 @@ export default function RootLayout({ - {/* */} {children} diff --git a/mirror-2/app/opengraph-image.png b/mirror-2/app/opengraph-image.png deleted file mode 100644 index 57595e662c3b56c9a1e6ff5e9b6bf43d5316e1a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 289886 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 z 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 - -

        -

        Next steps

        - {hasEnvVars ? : } -
        + Temp, should be deleted ); } diff --git a/mirror-2/app/space/[spaceId]/build/layout.tsx b/mirror-2/app/space/[spaceId]/build/layout.tsx index 33c600e7..79e9af33 100644 --- a/mirror-2/app/space/[spaceId]/build/layout.tsx +++ b/mirror-2/app/space/[spaceId]/build/layout.tsx @@ -30,7 +30,6 @@ export default function Layout({ children, params }: {
        - {/* Instead of a div wrapping here, passing in className so that this component can be server compoonent; the Inspector has to use a hook for checking if entity selected */} diff --git a/mirror-2/app/twitter-image.png b/mirror-2/app/twitter-image.png deleted file mode 100644 index 57595e662c3b56c9a1e6ff5e9b6bf43d5316e1a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 289886 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 z P{R3fQxK|S(tidb+QL-Xix$<(Cg0E#?@@u(#FtVg_wT`EjmVS=%t2Dwn%mguOc zWm?yic_d*XH^pQ78B8*$xG`#9GxhtQM>ey{&#Ld-eTrM#QuGtDc`!EA_#DyY2y-Ms z&zLYcPQAa+F#XK?4Of3LtRFn(G&*k}7){?R+Tqm;eH#wHIUB)sPBMrp+8CuRC z!8Tf@cx!70I$UJzo#e(|632+rX#*{`+4slq%|%HGWr12=r-vCIs?HFJoEr-KGR1z6 zTk9b?h2nCMJ3M$>_-CTm1x5a;6vPx-r9bS7EEGsW zewVx)w+~72bSJy{OYo3JpZ8@mZW8~fu6#!PZc|9fN&FU*;u-PJME?D50{OqaC}C(O zaxUwnfCJI$N;~I`chf?I)&p@|&URX127!6&4#$v_;7pKg9WQI6*bI&(!0!p?0(M7= zz#-Oupp<`to(J(^BU<(-kCiGFiJ0MU2!Dh+{&ja~v+zE}gvdywByjALD{>;#H z$roakUDJ94adEBW+YhV{fo`aWFN$w*6M4|TV0y;H33N-80@k$(*){EkyB?Exc#%O6 zgqeqt`#`Kkpm>G1c))x?P+mcRxDPuvEXeg(T}@$ii1$jN;RO*1@<|fKd-}ml;`%07garhSp0YI=0Kt-mY}P> z>5JAYp`N@RzgKS+jy#ux8?gD3fbe28#9qz~?9~*A=5qH(a|CU;%y^Nb7ePuafEV`* zyM_iL07jz8b=HR?+PY~gEz%Ns6NL=l8W2Exa}3hzrx#hUw*BGkF(?ER$hnx$cz- zOFHeK@vRY7&5)+S9GA8`*u?bf86}bcVy3_MY_&7OyRGG!e0JY*UH78=4MGFadH%DF zK44OQ2%LPNPxgrGm$CWJ~E#O>tzz2Da^swNF#~nnhk((oU7gQ zefzO@XU^p?|D_AR`}uiYHhAfy4^qdQN<|U#RQ{exUwyQtYNi>3}e$A>4xq@yd6 zKWL@)Ql<#SP*+_Y6@+50aG0HgBetfy+)XSc+BZgPsK2tNb2$9MSZfOuzU6q8!o~n~`nBe16w?@AuMfuX(4_k(M8`Nlm%$ zD5m8y#P_#v!34adDNL0@B>^J{oF*6L_;L&u74dDXlZ6V@Q57Y1-+rYnWTL%675Nn;b&dMd2EInysLbr+W4JnBy!Hl_`%oiYGjc!h$IOPb@{6zYC5(?+^R* zMhglbwbQO^f9BDxK(J3n&WI}X!zPtK}9 zir}+QSb|i)>Rkk>_X^7{luQM-guLMUDCIqPGuz><;Sp%5?|mHv?`H-j^DWVlJQ;(! z7xn;-LKH(E0%Lg$6VVd8_X~wJ2IB0GCAWw7!@7()@V{h*gw7@*u}ReO0KF%4vciz7 z3FdYE1Fz9lhhkLjBJeTpHykSQ!3Ap2G&yg5Q)vigo(9-kL52$6MG|@Hl2a5!x@(U= zK^IYTt(K7Y+q=9L3k5Q);7}o*&CUHH)AaHlUEr{sh1e#0+6t(H2FmdkS*t1yL)8m` z`tR}(BnFAomqahSul&6?R!MjKz2G%=`DG@a;-Kgeg3pIC3~tRR-tXq5LHotnq8M=W zz5#i(ZKO{AJm%wSS0HkQU65ZEsIF)23WbV3mjK~6N^MGV0CxAaKzzmA}ulR3%Fb3h?Fn(UO7B6Psb!GxcoPd zS8~Eh$7Ki5&j2G0LxRG1OULJ;IY+7PBqJ}xXb8X86YR@U5L}Jtb4m$nkDG{L={cyQ zd=hpPez@FR#}@tjYv%TV?MP&i-TIzR+Wuna<1&g?1qQEZRH_pm?Ybd`kC4Ch8{S35ria$f-c)HltAZ`rVcl^UE2{&>U;7vACN{)@=kQ2 z>;IDH&uCiP$BCLBNz*wUr!+|fUa?LoqdQ8Se;dtPabyk6IPH}&dsi?!T=FXo+}&=! zPldFP)^u=%$}lVFoU-BRc$oC|GaFf%(H8Ygvh3a;Ik$_HOl zDGhz=Nssk zu&=5){FQ*2z|dQ8r(i9&BI?TV#63zl4h_n3THz>9OMd z%wooA)bWVRgV@XI8}LjZ?*8!l#ia|cGzVnY4!RNmveKufzDOAT8m1BPl;4fnz#xc&e44y4 zXRcUku9f9EK7qIo`(4<;y8@nRSN zoS|;8iM*NBvVIXx8M53ZZvoQ?xr6Diya(Aupy=Z?KddrpL9JnMAocf1T>is@6v0HO z)m=Mbo0h68^*SKi1mpgCLSztSfPNDt0BbZ?|(koKWJheJ1K_ zN#Z^F_4~}bb5_~|%fCX;+yyMOLg5Y%mQk6+1efEfIIBRLo~Ms1A48s-P;9}kLmy;5 z7ce0BQAxoK(2aBc0GeQ^|L2|Iyf?5;&d>WP%6#TG=SV*MYMA#&OrTy*5H#HUf)e`8 z#J~=`D)CsD`A-Z9wBY)F=M8QWNF3kjtFe#<@X^}zgEuwiCYD3L!}USg(36NMUBa06 z@*#fk#O*d31y|Pa_JU3c?iL!;@h=H|(pk3Z&8E~=?j-%OMO<1#DEdgf+1nttQUNkc z7hRtCw`bZT8X-IrXTx?7gfJN_VrVPV)3NSaskkeqFWH@O=H2(D`uy#LfLm;(`u*MT zx~c<8R*-QP69UyFFy)_+>fLw)G+Cg3B-S9CRbnGFT=jYD2&8swt1YD%P<4bvTKMB- z#xJj(8C}Kzp%!v8cczF~fDs&jKQ51;RI!+(dl!hUSa42 zAPx<*{vfqPhH#=8^()IA_V9SZ>Jt@PB*&>l#U4;#8HwFDBT9(X>z3zTi(P zSz#v)L6+mn5gz>6$4p6~z`*)t>ZYx1dF!QXXhk$1 z7K)-tvr5H5DQkrr-PUThbVee|21}`A&#-lBCQSXPtG6Mz6bgmVVLrdE?5XAzv+CRi z0G)1WGgG7Go-&4Is-4_x|0~6#@YuGLmO@;BoJMLsMV&-|=h5I#iV@ZH+0O6;kV-(+ zD+L;2Hks~M<;;=6U6BkJROoXh_8v3MLVL@!mK2~$^9^jC?j_4sIY9ZwHRGRu%LDFcQTihndFU@JbS z2G}qZnbzM^AzYfHgGE_NQV{i&GeizOviUscKgm}6VaY+@dDV>)$YSdEX@>09^$bz2 z5bcX#GRD;Hed1StSvk3d4q@AG{(Y?gNj%@fm6Yv?cB7U?_;|Wbu zq#(j9mggdZJ7Lg}V>N`MaXse&?j|Bf)iM7mKX4I#wQ_|z@$9~04ByeZaZj?GR1t3! zITKZv-vidhP9FM)a| zldJ4t+EjQJ7UBIw6S#%|EM7h=OAj`dwcUgu$S{h-1i@{KhTH@2-X*a`ZRC ztpLzRH45d);>;t+pF}$-DbU%brj|36z^_0= z`X|%zF#$sQ1Sxp_v~|VG5oDKgkHr_v}Z!{B82yAW1#^eLWqw;eaC5yCVuW zVuUwc4VxPoJL=yVKJD}wMS(M>W{zc53Nd{Ke?CJe4rG~Z%Ok=tkg|p&2qz(e?cY_7 zWqBsULi(uOl_pLx=Hd&C4*n7&Awi!s3<*~df}Ii~3fM;*msEiCU`+BFd&=(X`AZ*} z;ll2w;$i3Y+NDsy&eH*16z$q~jW(vSvjh3g`LbVd7{D37s#}U|r}!ZPMSR8;$sTT! zig)VDtKaO`#yqIV)~A5J1U3y+*Tb(e%BM<}8?c>fjXOlK?NcmE|J(EQ&AS91gtTQc zp5}4H=JR}AnnM2Kr_{BvXI6{eq?68&cQaR@TAnYxacHNJ7WAR{2eVk}C`B@q1&-n{ z<}feOHC0yYceIo2zp1ktdf`#+>|q`Vs8Q`^@k^pnXmyp z_)80nF7vY1&dWIGULGLPk7ZW$k*o0rO6^|@0y+5u^7CoQwOv3}uYbS@NAxG9{5*zP zv#zjN!HOncbZ&DswKnE@U{vY5z|V>l=TEz#RvyJ_b33Y=oe(nQBpq@PAAjKX)KoKe znIipsMu2Wj586~dJ9j!T!={rq)pWyeeB}naJV}xz^1k<1lPBBfHbR~eyiw4hdZY{# zYu|#!Gb{v3{8wjaay+HM20iP?^Dh<6iz;$n`Mub#5{~lOTugb;_#;?<5V2{z=aKyr zPUs{6fsV7v_#dwiZf-sMbtxF2aW@ZicAq6;LVkPOMFJnVDc2I%HFOeDsIU{P97AXD z95HtmF%{_lmKF}9y$_(@$MB|`z2-g_R8&hkAlZ2JivL4D$UrfFC|#B zgP2?^)B$N1Dj3Whi6(L&OaAVN=DovxAIkKx@X3bm3d_sA2`R=%B;JVz8Z_=!f^&mBcYk?p8;tR(WY`DiSL&`WH#%FLjAMYsEg!M`)1Pz#VU=inocs#xI=YLjM z0=+#x2o-z?rwZDgaR4Cs$)tzcPJzB|22=&<&QvfE!mg6884hI==!Sz*_t!Q}h~B$A z!(#YA(f;RtIXsN8(PQWpD83@p$jH8Vomli|OZ=<8;d*KW14isY6&C2PiMD7ovf3q&E9{theL z&r2LqcLToH*Y9*KWuFnq^}pZGe?D}Il<#i~VhJk$cJvSDT_Eg4gg9in4bCVJR<^}= zhLmG7=`CfWU9XeXp^x^OL=MqOnBV1yu};{vFNXKJ22<0#(j`z*FSS7~5YT z>CWC$EAVxv4nH9BI#>vN?Shi)J1={m0eJt%GW2M=T$+DW8zB?Hb&DV+kscH|yb@lE zVI(m5RPLhO6@<|^ipZ$AcfBpxx7IGczbR3)&>WpSe|Wv`cJNaspR&$5R8@boT>x3! zmx+;ALl<5dXHkV@kuoU(mm&^=A9F125y7Z8X&^$l=Js zHU;9-7=*Q|8bL;hA}X)?+{ozTVoCHd0i=Z23E|y6aD67?=M2MuEA;c!2oF_YO@@aQ z0$B#lO00V-t>Frba2GY@w%#z6l(*L`sqtgq-oSD4VHS^ z@Q{3aa=9X0dzn~WoUgt$R_-FwA2H9cilxGgdG-5!TZir+^ma?Y%F}e+Kb-(NrTiE7 zsll={-AF_gjI410?@i88r*qL?scZ8zTzu8ti|cG`t#{A#Hk0aPn%^e4DP$l5OQU&bCfM*l_vS77gNP78OpgKwL%s|Dtn-`}?krXMc@ zHmcopO=OjfU~iF@bD4;sY#LIYVtTD5kRYZJFX{QXM*L3-BTfczCAw?ChH=*qRPL^_ zlVIqyF262BC2}AmuuLbj;;Xc6X<)VR7qJQzZED7BnQ!MaP8FTJ|j7>exuE1 znfVhn5iI?F5_7_eiSf0pJ1tKXU7``$qQIi3He_{D$Fm!{yW_KVn;=H^avscNHcT=6 z&9PwP?dF}6&+i2eK4b$>Zd3*O})9nK)sW!cUq{N zlfW#N1{8WUB9)}_o{Hj@On*=aUUma)0!j*Cpn*%jY&MEws}-pjeln-mNGqN84q2yn z6g6DDvnex{DYBVcDwMw5c8K;b4)pF<=VH1D7FBA5@iLtc?JAwe8Ae^i7%Hz zAqr6*;c!;n&Tvh_*9^x*r_tqtzmwEC!U-yvyUQ8ZWm<|{AzvP=_AV zWqlB!6plvnBhFUK8;}$76a$wsK?4MUNPwEN#8AIcBuis7+`Rt%*$rK4rUqs=I zFT!M`ckCm76VA{C_K<)0dT+Tu{OXkt!=%fWC#W{Ebf?N~sY;8GN? zh4Ev}Wu&}i&;bQwn3}bs0rMP|nbuAGH9_VHfaw-V;>-x`$>>GpBom@T(Dx-_HI?!u z1LqLuf-|kLIbDNt;nvJH`+ID!91Mzw@x^r3?%3Jl#V%rOd9fLAyiV$1_aoi6p6@ae z52vzK<5^0kcw+bU^!2aFp+}PNuk?Kho`mmbMls{Q#kS4!e5IcII%#7MSP}gNJ0wcJ zKM&%_Qgod98=Gjjy?!?atoRO%4JKx!JP&;p-xv>KtOWa}^nO*U106)qh5wf?lNFgfj>q4 zU&vpvQ3kOZR`UDJX#BOd^nIvlyR%C&W%IM4B3X^aro(4<%>{tniW!SRL{xO;29TI> zOc}n8Kbs6e5!LH~5<0jOg4IQeeCJ1OBv%;n0Gl#Pg>c*q%hfoWm4Mp=cl zgTI3Ah9@uW)ne(E9Y}4Zdk8Zye^Z{4w9UIy;hB2~9?1>e0I2+V9Bd{=OGJiFE$K+z zjPRop5x(l$g;9(Y32V!~NY2V&4IETE|W~y0KHu7MOWJLejTj7-)qDD8T6m6nr z)~%{n4U4NL#3SylWEl)%rsadq8aa+AD2s~EM8Jpq!&EGz@NZ$CDp0z@K)$8p2`TAyJrOxj}Trf5AxIM6%N2EBBkCvTmDdx+qdJq5mh)Dl? zL?UQbY~}Hp!)w$h=^SHsZspf zv%0(iDT&jL^0(fa4Ah@zT{+kj>Og`@lSH1Qq@7Ia)+NB|*A`AyA<2#s%MfF8X>!?Q zPb`S+;+Eh3NC0d==GuPWUo&h9Hu;s7#U-p${5W#n;D+)lCLZU-uG|zIDJ*KKmwM$& z%tQWo-R~#FuDhm*nVVg4@};)gx9n9fTS`%PIKGD`g+mV4;o-1)V z)s@45Qzpewc>#BsWPs*VX6cZboIV7fY{?Oi(bnn(Hd*Gn<=@Tr=!kax3>8(ns$`>M3?%O#WTeEo78<*e=LU4lvJoO3{2~i$^>{fI-|BA*4HoL;q;JqB_ z9-SoyA((fs8)1tsI&Kf7t9>Ac04yrKzZLOkY>lnQA}B1P#tpBw#!+uBpbqOm`OK<{ z$4i4-$BijIU4@TtKh&C%81Og*p|O9fUX zkz!kUj(%~3QmGB?%K*{hg3FI2?LT6&-@l~TNDJ7&oMKNLd8gyY=yXEc7_Fd(e>2lP zix4?W6;iNeKTl@rk659sIj6AU<&{XaPMnbT@>7}mO&5(1DY3VZLF~wpQk2g=VH83V zOW}j6{>HO56fK0zv^UWhd=$>G2{onT-u3I~>jixjk7+?`HRnif$=~x-S?Gc2-<~g% zSm`p@6vmSh7wQsu6(^14$7a!V*~8P#Yj|zLEs{Z;$Kue>hLR2+l!=6D7yHlrCqsS{ ziR2xgPR)N1KO87{Q){W|UC3)t$Xwlq8nB|QtX5w3s;Cvo2`UMya@xLD#a95KPY?HL z7S;}+=FF&$QLxJj=HD_|LQgd0TFyxR%rivU{z{hx{2-aIK{re$wcVKh688kX#yKJ2 zw4zN}%VfN@n>~>-ns2s=lV?Ze%i&1ka_4aLH<|ZL5>I>&StFL<-2|?w>oT(I|V*s3%LbvpL8TWNrOwH zVh~Qa*IiXXQmr8MRlnBFleg^;X1{$KLl^(Y3Xrw>!W(aZb>E*4aOK-Nj!FdbmRj4* z@KBCV@8{b>IFWs(LIih<{eM&q5As^WmC#$HX<5GiS|?4B<5k$_rs>n>DIg7Pns>TP zl9AVWggxc*x;pEx#P1FzeOy4{v9j9kUwe!L8CJjeWz6xuGMct~6^R;MeIgaee^-B~ zAfYTVU{t$I>!2|FWAW@VYx%mFX*V|}sJ+9#{bWz4#dL&1-;F?cr@O7N8 zWr!%MNhXJNA?JhW{NXcJkC0>yg4@;_7KH5s*5Bx?jK4g~&CAjp zv;GS&1;`T~;WC9<8O7E+^pAz}d7R0RY?2vZ+fek+#1`_j$h-Th|5kf#o#SG)-XQEz z_NlP>mS+81{iVCQQ%f;dD3^dXO*20LQVQj9G)hidi{sWX&YWd%ik$73n+0U#y9E8=2P9^paDD8M=hy^It0)gx?C^IjN@E z-+!v`{SHA5*rK{XE7H4`qfr)_yW40e-4x)rnb!Lan&yAGVL4heL)1^V=XL;O#;$5b zm6&8vrK|Ojr~s3DG61$oEvCBgXXi(2+Ac>3SdE}thM%1_czBZ+o;7?&f2DA{cmC~r zLhtf}9b+0Im9{;rznZ#yyan9O)Xx4@Wq<~F{zLpY?DcM}oi{Qa&U(#8;z@iv+~CpO zkB46niVuD6uZcctTh1y!|LuBWb%Xo#pEaXr7(bx)ed0JZp6a+FsvF121B4r0TT88C zn7E$mobq|Bk^@{;ohO)%w=-icAp>i#37t3a9Gd@WeEvI!)-YHF)RJV^JZaTN(3wtg zE?s+F`}|YaC`7DP>p@W2G6- zZ8t6f-y++#5wWJrIbfTV*wC(7-72b9ZWcUwyRr-Ne;G8+FX+7Nhyk;$oWEK91-fsJ zvM<*Fu@2C1q_zuew!~Nl(#@)y4z^ch*mlx?G3$Q1FVO#!F8C!y& z*I}#9wFbs-q0GYp;3PN<`)&z_RvyiZ0kfcwx2G~NO+No)nq@eS1o(CVHkcPEQ%ZZk z?QihavK;ZQ7thQET=RGN)q=5iA;IZBrG}Tg>{^Fq9Tx>dyjKi|=)pFaf^BbLjc=}? zH{-GEZ{mkgGCOcT-KT=vf*!9-0(aqVT#6hYh~R2G4D{qOxcb|sR#IP&;2IMmpi67G+ID|}+8SA0X% z!?w2ST*HY>RETmQ4sdtrK{5>Qoq5_??z^zI2rXLVyhSo8W8zqoV=MkDTb%`X~2&j@SnB?2a4c+knZ;?;Klk{1SEc zjW@%jEDEMAp@#RT3+qn|=dmw~h7lVZ?T>3Vyde5_^gE%mA+KjtbPAD95viI*n^GRb z0>)VFXOvg`Qzz18{H{WRW&Bw9=e4^T;VYo{+VbW`P>U(b?k>VRNehyB|1e!ltMSLf zvdi+k+bI|hDs8a0H{8^xTsHI&3=oFhG^TCBc9}bwE7pCTi1=Z2Q(jbS?;JGglp@2k z6x}qQq>xiTjw#1m5!0xXX^N~n(w}pTHQJCkqt>hUH3^?`tUVKVyIAPm0~Imd5p8>A zUCpt^cSKzTiv}tT0fP6dS@aA={WyZ4YP*`$pD)=YcZ9Le>b``q;pz7<>ChT?+l3PS z|3ZG3uLny2mCS{k2_RR@-G@`_rl1SBew@V_9!r#S7vRqd=`6myI%(oOkM zpAlnMeW(2UL*Hdk0p?%0u@W|FhdeiimcvL);G^U!|3-v7OihO%@>%ulbW8fFP7X4O z-q8rEwzNkG$3oJ168D6*0Jq11q6>dol5i3X8X^i&Mi(H|x@N6FD3@{FPdgyQm0D zEZY)NNH~hO=s6x9wyn^&>?8L_y9#KrFue3z{2$)A&t;+^JbDkc>e&h7C{6F2eNxTLzn>O9o=fG5qqD8J>IyA!m3Hb8jL1M!H?Lr#d zJ(;?U?(cj=VDY?99wqd&Iy0|&xxss!a|pQ%`9`+09%xCOXbK*oG1|2srsu_a-wfe( z*S0K0*PP(J&7Z592GG_QO2$%7IHi+weI9vTp9G&~y|&-ODdB(d zvN>X}Ic)oVG|c$FF1W@(vu1+8c?9{_8PkM0*zM1j>}CFiFYpCueAgoAaH6pgB0cx> za`(z9lA=bCJb7+MS$V!<+n4+A_znYaw|IaPgd8iV!`*6h=N&>StS2syFO1fz?fpNh7*iDx-_fZ4no6RvGm-k zMefB|@#e+~@Vpi%*WTbYK1S=)xQlK68b7U6xD9?AWsY|_8HM&uX_xeXGuwuxp4@d508FMKXI>` znHnyO!jqhgOv%#b9(;Up4z;-=@z}t;Suczr-WxvgpT1=8@{{7#4WV0IpQ6WKkS6i^ zBKUHU@*lAOdL!VpM@1GC*1&x~l=04^H?hUbkN#^ zT_>(ezsdWtt(-m)xQ_*Q&m%t}`yyU^zzvWtF83+%YQmG)0YlF#*`)p_#@u)T;YV#Y zAMWdRz{oQ25Sq;8evZR?(UR|=Amjv=JDk&GJVmwvyw=r`kDD zqA>Y&zSj|f5^J&j{VtflK1VDU*{i#V9PfTwTYua8m2G!6T7bGC9$M=fdB>h;=yRzY z+qa-7IP?Tf@v`Jf#a_#V(FA`iqPS~31r7ix4CM42=RYab;T>6QFiyFATw8IsjKmYk zMG*TUOgS!NJnMn80M9^-$R6-ce>=f#F@o2$bc>-K*cY7_E1nhE2&VOa2G|Wjqv}PF zd$K~Yy%SiZxRIRt)c@sECkau#CsFvMbyZjIAU?HJhC^xDXlfd)7-LsU&~6 z+IxNe%xmdJrN*Mvl&8w$iDawj*vmM4z7;%&3>`&1N)Y zR8OwwR3jM0j*5$`W`K|~Mptdgr$#w|=n0$pg#vv^5J~ol^SU~}Y!}|R;HRR1#S_T5 zD-C5(_DC@OWu*!9b8)3nFK3Z1mqr?j#>e?1#l#!&7Y|uvL7P*jwGB^xS`Pc*yJS9o zo>UyJiI8>0kne=AV6$OMX|iA=;#x+vnkb4?vKj8OE-N;Z8qW5EK=Sl;`*=Q{U&^rO zPnP(Aq~N!<$=t5#mY=Kjjmh+b&)ifp`K%LvoT!gO>(!E+Re6-uT4*sxtX6XmUA_RV zt6YzZe=i@50KPXWP_6eJbAYSZ?vTGP+hD6p=tpHZXsxE%{GdzAr8U{_NlHi|pNCY6 z&i8xd{V(M5(E!ep<$)bjRVV4X_76(WPS|MIu7}&7QefnV>Aw(5p0AEWx0_(${3_&% zKUy`o%D!)V!?X*6`2C0*5XF6#=yTP%EF3nB`Zk(W_eT5LCJVS72h4@x>7O80!6F8p z8GhbszJfu%m$IGF;t7a32-f-@=m&@~9ymV?YG}wlln?1R!b3>#N#g4K_A{IrtocSy z#1O=V;rsme?>}kP{EYvn3;3krt7B8cd0Mpno(=}fh4~v>LlQ*#5MD2?{G~P9Tp@xY z*&q<0`hsX5F%osze|0Hj==;O!`;L)WUgoqnU*zz)MMH-M++gyPpV27giKT3Qm%!po z#tT%FxYP5Tll(7{aR7n{rRB+QKRW{~T=@rlw*$vFgf9LI+xWQ+;b^J=K0k=d{iah| zukViY0`e}~j}1T=P(9TdXa;Wo)bF{UB2F-R%#fbCt_J|04{S;pD8xLyGc^G(K*Q6$ z7#7SVJPaeE)VLFh*cvyIphs{|_{$ZZp)=ye&$HJx8_JWbWxajB2k>63cp`V&b0;Jc zFIK5~k>EIT->y}*CulSsyxcr{2i&c1&rh{(+}2LO-vrUg#C?o zh4^v;S@CdzeZ&D&644;bABouDUUJonx2pTM7#8=Dt=lAl!tIQ!hOQZCx*+E|rw7rI zgyddf|M!%9PhtK^%;@d+;bmQB<+lk#=3-ziAdeKhK_^>4WnJgMQ6|Jo!IQARCfzX)m zft1A#ZM*r?QW^Xd_VCiqS35H2@b3)_IpDvA>Fd0UDw(L)X=y<810^4J(m4B{8ArRk z{bI-r9cOw6{#dtX!CGX|JjYPHBXgVc(-37prD;&9F&T5p=Kh2A@cpE13}7Xb8oP zcN<+oxN&E$UsnAFTEybv+u{FgPy*r=smQ%!k&L*C16`mo`zcNt7ntDr#@*qQOG9_W z0ucKY1be+%32Sr-9(X-5r9vy9NpF z?ruSX2X_ku3-0c2jlH`6=uLXkv#zeHbH20pT8UpYO6eplL%BD9F?(rMvwAlei;Hlz zR#@V#^z?SRBg~`gUJ<)b0wm3dnE7(lO2+XxpLuqogR^w-XTGT_j03OS!@X&S$fd?( z{RTEH|HNZ1CQJc`R_q(|{!$%D`tVLZ8K+Vr?x~SW(TU>e?#g@xOTnFp1AL{W@`qxa^ztK@xcbpC9pzK#TK}7s4t|T)93SbU%Ja z?8eu-w5#`e>cx4A{6c|c9 zf~5_p&iYa>jU*J6rwsTgQ#J_>L8Nh!M39i8yl#?WN%$L|xJE*R9m+D>K9V~{(zJVX z{J{>GloWNm_!9to2`}`QEFu>=|NS==h-ehmme*nZrFB6oZBoCZW@Ux%jbSG2O#2b` zViPt(1)A?>pU6Q4z4ZGC(e398Ymh;~R6Iu4k8;sR6p2&l*;~!n3&8;$R%c zuk_8B5CpUz5l-`eJuxi$dCr@<9pj3@Sf@uUu6}7Zfv<%d`UKPU zK?R*3SQ1m)Z%w)E_>v9b!i92O2TLp5pKaD+lbeL|JKqB|{iB}=J4esLj|FspLG0m( zjC}Q{I{UA!#Ca~B)V`=k(qxI2!RDglZ^sdgowiEY`Y$}RL|p)QDYW5B8|oO*jAQWE zvb_VoOFXwk+T7hI4j1Tj&s#Bs!o8p3TVY)=MlhCi3fS?r{i(KC;Tc!k(Xz(=pSllNh*~n~ZA`unV4s+C)VDqrPBtS7#FCnY^G9BQ9O*G;G*>6&1#QN~1gE`~>kbGqp~p=ug?p*j;E?6SbLP#yz9_ zrwPuSsI$)SFJY`}S0Q54){T=Ss5AE?i=Kq#kXu3+;!#F-BZMy3_R+Gqxzfo9_`<@C zg!XL0Xr=x-eK+qbk=(W=Q!-G?q)xec{q&2HI4>^HNYljBz2Ix~azx)r!*xB&wKM#@ zF?eIJLEbuc{(~yzk6qchnO3$vqL0iD!N#m0a_(>RG4Fq+23H4G>dBAIWw3IZkGu z)LroK=}j6SANToWB5mBa9u9N7sZI@j9Fi}<-7<8CkwDJ#c4Ejp9^PG;vq)C% za-cw}D)jbgn^BBKCsogp5`BM;d{cln2*MiEQh@e#4j^ z0>8VoCNZ@bf2OY|E|s`wLMFU_XfN;JkY?DZG(}?ELIyAr>ujy8+B%PDZtv20MYx^lO*>FPoQ3pfa4Fq{u%lMO;`T z47rN)<3nW}s<$9p)+eO%0{NrBD&(lJy}C_n>F|n{bT43>Mr`AK}FSVvuRfj)zx>Sga*i^Kv9;<2?6ikt%C&v>_ zH&)h`v?gM2gn1lTwn@iT`5g_V0PSiL!-}Bh8LVxEsIIP0&wx7mgqaYVIKJ4xl}}Uo zNH3Mmi^xr)NW;cZ;z}$c+w?^!vW}uOrV#BTLba92&rSN=;+-ygRWmdZhrYWZ=%Dr6 zf2~e?vp+>9rAfSgGY;Fhmh%-yO%NNk$;}&zS&ygJ+wa*p(#d6NHPu#NK^Nc|*j`?2 z7spW7Y(oT zs5YDwUVezUb|K?o&SQ6lQ@?$@Y>fSJwJ{ETV8!|EukAylRtlvH7~k97@kW++*s z+oPQKdw~}ws&{ok3MF)a+`#BGuaHhfvKcoZ_SO0 zj!cebW7j94-05;1VRGJU9G+fl@`Y~$0}o-?;2cAt>P(g>k$R2MN4ghYC&6-C&7Q(D z^T?E}B3~)7V3dR5*_)y-3{MH*{zjIl)-ga}{X@(77m3|WF~lCZARgEd3kmyo&S?4F^=e4tw<0J;6)g8vkYFm`U~+F*qHa^xX$rBh$F{~Y zq5#hfs3EeR&kMM49Ng)Mi$mAi(L90n@ne<;E>l9R=e_I(f9+3oBm4p!&)1UU_FBl% zMYv&;zHDq}EruhxppPM5g^%DL26}DY&45LR$s;ZYhOQR5$b2AyX8oQ(p%;c^fh3yZ z7BO|NZy`t+@dNQ;k;UJ#sqt^0f5oR6K$? zysnYKAi^3{d*YU~f!-bS*gOJVil(k72=NPK!Bn?>Xn z6sO!+xQQr%m%xUC+24YG$}UNBa{@5WOCtIEb*$V5vIZe2)*d$LGdvzIH5^4|kY zYuOet76=~zvQSHNm8jGwmnnL85QGB@-VzeN_HEYelRtGn$cfNQ6kC>wPoe!%z1 zrs+qbR7ormh&mUU{&;+XJLh#u@>hjSMhYd8XPs2uVI0A8&_jDLbqkiA#82~b*fBN8 z*_mWS`X=hZ)1e$M$NQJGGKmQZ27R6tJ{pC|Ui5#`HMOu|oTqO1aYJ5hpKEYvD5oxVeM9Y^$_$Sm`>xS$hX+QJe&BIFAF@m6srSaz z*Z2C27Gr5)C`(Z2jFdA@ex>KIHD6tg_7^MJBP~L0P*XHgZo0BlGexuZtNXI8JQ>(^ zd44`hle@n&2xYBA?H0*#E8CO<(dnfs+&wJ$n%mAk>^3^tbS|uD#C#!g@>o9>Hxq%f zL*6tVQM&J@#FoB-VNg=B#fBtgCjt;uIPoE-=vmD9SnM0xl@kBtl7r9>@4Vn` zXZG!c?=w@T6+tCC_i;2D!@h&`VGE>V#e_Ta+H-aO6^d9TIo7vYftLHc#7T(swYqmo z(j-UOBEHwi$z1jDxML;Tr9U-qXy9h9J<<^g`c`<7h4~Ph#YP=?y3%no*t38E6`b`9t|%pKyFJT z&#c`*i?BT5-R?g-Pz#n{!W5=Bstc8p6w}dbmFJwYzM95Q|F_Xu=4ckHBc;#sIgXdO zJ#N&ratNs|tC%O_rv-g0N$5D_>!m^&+YAVmeGQ+Gw{5G3TYi}ZG0BLSsvL)E%URON z_-TQWRnTVXp+yZ4Pbltd;T-xjG}2{*JF>5WC214n_%nZ;ko8#HA~Q~%;7PqI+3Vi< z)>WyqEzrLP$1)UBySoh1*2`^eQ1?`67>HZb91@S)bING;PfD3*Oj9LDLklje)gwa) zDx$DTCD*jQ#6ds5gEivt_Ya-W(%ji;{Zn?>d~4CYP^i_ey{gnWM=uFhoZs1MGDnfD z>qk{NXe%(YrweW=tc4Vhs!_p~y9%qp2&r@DQzldGz+6Ye4WfL?{)axW3B_n-@XvkyPhvku)VaFxRONPe3z%m%9oXY zxS>}`x>9Dp06Ys0zAs6q`J1^fmLqvX-)mYMWh%B4#6b-=VG&dF)1{^4M^D5{(o`1` zP@C^*qgCX9kWliCr}*ds@I35>qz;DnP$EB{6lQw@svut!Ocj2^k}g7LSt%E%!YXyI zn!bNkYj5L9yA&r!F(I%!(5xkR)N3BhmQlKbH z_UfM^>%~1`AUB*hrdg>FF47Ehfa8RPR{x`M+AL_`_}^EPzFjTEM5|BJs9`2tQnrz! zw^_y;pO379;r|BTy9#Q2jij^ode188{z_x|gf@U6P`pYUn3c|wYqobdQY2DJ`L~+6 z`EzrtoUUZ_?y?f}6Lq%wt?gwQhx~V=-B&6d%^Teq7hx7T-IrX~_@!!jPFylE!t4`c z0^cy~zc|aP!AI!=|AtRSKgLt|IBBreZ>7`pHV+091Qki4=V4>ZGJIDgF5KcXcgc7< zVr!jia~9mSYuwc7Bj}gGK-pQ2&xRJWW*lRBVX0@}3zo%Ft8@py^#{=2RnHTuWm^7n z$zq)<=gYrkJReJGPM*O#P{!J|#VkqPcQEC+OU+%icZ0LFR*$8R+i2@WySY&+_|ud^ z^6lJY@nVkDUx@18%yxV4!G$NW-8bd9ySKUjkJY4z`Va&^O|3!#ovh0-a&wRhRjS!J z_Gi(Jug%<_FUM7=O;KOUzM_z2_MKMs$p9XyApSZJNg+mr0cO<^WGzR6z;wcBr=nrZ zYdjbm-k7SD1CySd<;6KuG@_au5B{*nwM{KLGMrW#n#fC=7NBt$alC@2j*KA7p+k|* z)$d3nGUOZ7I$1GAsq}f?KN=H*l2sz{56607l1R457T(Uzclu4cqcqW_OoBzlXpLB0Iyhe30csn|Eh5_fGU?z#-nnxg9h`X% zyD!=lnPCeA%Ot+aEJUYTDpxASm7B)1}h^{+-Mo4^<(SM4A zlk{80$|wA14X+xRMC{BEN!{F2|%?XP*OEH*3( zJf*|Aq0u-IpiXl2xx!KhhCo<*m{6mIJ{KR`ZCl*_v;509>OIVdE#))0<^=xG3-Mwk z1=)({n(B^5r|BuTF_}4o`ix7>{X<`B$HJmS_E~a{%2oJC8T6i;47qmx&LVp|h9L6E zXjdH?4ZpZ?#7N2``a6__LfX`+wD{%3lE&(g@3mRpBxogm(1WC|)WZapJcbtFlN_&ybA+;RkKVxd+Q-*2sIyz#5RMQ1upubI=p`58lI> z_r`VBeDX8pWEoxHbkp?>-S6V}#?=n?K^*v)e%b3F=Wy*S0N5-1uT?xJP2u^x+jqYM zyxUJVR)^sovIke_DDZusR{*Zw>rv;3Rax%#hU23X-UK@lAf^9O^7{15)l41*A2cYF z+YTn5&sgJD=j- z@?VX0(zoG}^12pWMC&&q7KBV&Bsc@!(jN3UeiR4t#xM%H@m_Boq;wmO7WH79NGM7U z81btPr}8)N97!pJciISOieMN*;FQzy)_!=782 zW=0xm&zPkuG80|n_ar|R55;0Zg)p5741Fxt(#8sYZes$;eSw15+wYrt9Eh{-k6qcj-4aw`=Z(|d3neHc+Fq`xkA$Jy${FtP0k#0`c#_}T{D-xiE=FGc*ymlk z3dM_c1B~Kc-JaGiP~#r86m34s9BLv=`|Sm*C_!LAtwHCD$KeOiN88|qUPK}a{fl)* zK7r~C8dMEEWB5F9Bgt8R)jHw_!jH3J;h#zBh}ewwEaSLUv&DqgezS^sta>2|UG{`b zpL@OvER&AGjSMhuo(wUZ1}(H<5OUG~L(Pv9toqshwNU_q04K+@5kQv1j-lJb0$M~n z8zh5V0`u7-;QQt0{z$sq&1L;Z>EYP#aks3!UZ6!pv%|K7TD+Ks|kS?eIl5`4zV99CC8h8~)=>cl4+c8@?N z*I71C%Ng_xiG99kA$vVu=q}xOxqtr;;Fv%F|3aM(FSXydI zF)L5_hgfrwP3+4~#|cBae+J`A1wJJ*kmZmzG;X59pPZh&>^(6A@#f2$IS4TI@x7C01TYo}|v#z8ncg@r|ut~eDXmF8* zZi{_H%SqBL9GQYwQeC6xT@#6Fm)__hLTHoQYu>2ad5ILFqlmV);2$2F<}Ud3jV6bM zU3l;cgeiWc6-fNz3xyTNK;d?9CX+e0{w;m`h>zvd&HkSfk99A)f-&OddYQZ1QAi8d zS6y8MGu4sWkpV1t-AYK6d1WXJ<(38YP=9gg=xcVNo24 zP#piUbo*4$^_j(B7^JY^Fqm2mSX8B)ajvThQ|8(h>)%HN7>)#;68IIW9 zESDvoRr;Ggf12bv^&TL$t zNjyCBA2OzVGf4xsk;#Jo_F|F&@KBJ@^Xf0K4%`4i&yI$!y@Vq8$?P<)rg`~?g1{b* zPHzI?^J!;V%QQh*-Z?Trm))3<;_G~zkv(6uYFvk$Oz&se?-$h?1iZQ}n?y0cw7E=y zvw)Pmy5arIIMdmR*EyfXZ&x8Jn}yi2aI`CBS90J0Y`P9euhz^gM0{JCzv~AuL6&Eq z7YfVtgkR3z-=-c+r!6{fof0@b?&igOotK=coeAc;;>sm`xB}M8L${2v?-~mE?Xmbbe-`bx1 zmHd6yz_{i+&ivEQrDGDv8^({juy(S!mOD)SignE1e}TH0#LIHnLT>gWskpnH6@{k)fLgxcT0{{g(d> zTRzLV2@MhZ{S`%oaEPv&PI~wKQ9baxA#y#jYw_AX9yf#(KH%Q6@9zTvuXW=gFMk%` z>~l@XIMf@|7U4zw_WSjIg>S>B@6QgRcemI^b!*>`+m2a^k%Dm2V>jT$uh;&xMl??F zy8Jg@wE}SVP)H;!WF?h`;quXy{{=g|&H33o_-2$Y@0vfTcx^alO4Gn=umuyQ!O+l$ zP19jtTEz$pq>0$}_PSdGO+h*zkIQ-JG1jWG=7?R|Mw{rCi2U%xNM~ zJ}@#3ly;$2>T}g8G;MgQS1FLZw-IPxgf%~}CWuW{Bi;BVF`IXl^fopeMufXwkZGFQ2T=-bNM%C#uDr4|H@EmCr}61=o0|JCJ$uq22D-!T?AjrW z3g>=e`}xmoe;TtV8m=u2})O+H|+#@Z`J`KESA*LU~-ry(L7D1q-{x6lVZ2Wv?bxY*% zH$_u_PX+^IMV?0<(0S?%83Z!rJv&Gkspsv__J{^#j+=MvQn_fwlQ{yaaeF?V4V!&Y z{yU;~2C=JNr}e`}qrf0qBtuFr(CFkqn-HhkGmTW0|%EqC0HCBLTN@qLGrs3Uj-U;S^3$Yw8C zyVBjAMTiw2()65>`43Ki{pUh(AK0$b+6Vhw?5teQ%_=IBNp(zg)Pcn zb$>o{T>zr?QRr$lZ5o)E++H)(?YkHOm#={%uppbH)%qyCmA99)?ineoRoLB5&i9u*u9q(=dm(n*93 z5DJN~^7g!k3%?}ryB;2nRsoTdk+=Zy%fLB_H-{V#Qhfk~jtqnJHWi?l&K5NETNnum z9F01`LoR>6=3uB89NK0=BSjp71~7sHBsQMk9)w2Gy5W(Xf~kDiEP8ps)*N$BxDjgc z0YC!&^V&&7HGo{sd)pqOf%vbs*5`T}XhB!p{mOgK{*UkC+2?=6aU44i^iO0=vul37 ztf+TwP&n|ZpoUWJTO7iPa_s;)ouD4k2|rcP zb%iLj9&`YC<0uYp=Uw*wK*RR?m&H4LQmk!?KbKqmdWM200CPRoQ9FA5%ScaWN>)+J zkBIGO?W3|qw*+-TlTW}wlbgY7YMu&CJMoI`3*X!ZP6B{$QtVk!A*m{plT0v$@8=iu+6tk%kUD6x!X5~z^H^$^wz0&q{=SQUU zMauPFAG&8XyCI(uzg=AWz;D5m8l!EOf=6zTB;a5vQBt)E8ST2)+`*MdJXczTSgG}) zW$&ECZ6Wh;5xg)W$m8u$(JYUX9Z8`Ey z5UBOMTvHqp{v3~3{_bC(kSx^MNCdSYC1b=WUVU~7kE=AujuP zm?FOpCdMF05y{>ApyR|*ZOwozW;XK;7mOrfhlWW_F+}ztC$s=4=)#~kDH#!G%5B`xVOiGh)8X?|4r{xi=$4A2UqYnRh%5hEv+-}K z3RR8Mj%G{oANXt;ve;1-gXHqSf2K5lt*tH<)M&->zUMr3)z&&;AoMjs%`83XlK;%|S#9rqG5#0W5NeL$XQBEJN`9w|QWRfrz{6iP=GcxvE>a5%j*uh_@k z73K^JkPSP#2G~_?N%VQJ`n!o?9yOZrY4$&W_?n8J#l?vWE6EQr@>*(^FFKil1L2O2AMTGZFMj0cZL$I?s|JQfqH})lAs8BzQ21Fwb>teDT$$ySR1I>B z7_^CsElYX-M5Q#2+9`~?tMy#*FH1~OfbIhzz~M9Qvw_HG#X@X<+6 z55aWz8Z@qCm{2;Ggl{bkqEAdV??3~Qg#R@A#$5d}sM;-(9KXCAFt65Q8t6D#oaXBt!a`yN@5 zR9xwT0nt{P2zfA!;=d3hFH-LB;KLr+msw8`tLbpe4HVq-EnKhUpT%mzaZvaNqWw`8 zDBnOCq{7d2Xr=&wIChTU1bTQj)=Z>P?pff>KSLIZ2gD@ta`zp7x~2Qo4zllc@GMOL zg>$+WGJ?)j6WkN$^BvMYidF)diy)?Gh+8Mq5E~fks2PO>bPG z+)kyOfi=vGO>LZ`_}WS?j^|t3fqqu1(?iF9LK*poj8qqsDJrJ8F9e2ep?zG4#0LU1 zDB~FQ;^x`EP$_MpOzL*`>clYarZvcCX`}NtS3bbNBq)o5{6c7ABDi(jQq*5N?}6&& zjuZo>1(Yj@J+y>RFZH~+@j_Rev5`G+bPupxi--2^10$8?bSa$G``FOIYbvIaz8Rjb zY^-9u)D8-3dt-RB#R$yWX9mo1Xwi74mQ&|9Xi`dEz{zbch8O{;wou3lpvmAOf8PNb z7jsRh)@<=5r(u#8j-rEb^t(Xe)1A-@{ojCMjs$b`fp#X?+;zq7cg{sozn-5Cy6_8I z*>Hh>24*TWWgomaZmQ*3*Ry>nO|j@^mKJ|hcbb9!C@USw-Vn{mY+Vb8vK0)h%hxTo z1TMAXZM1UnDQD~8K2C>5NM;#g(L^jCosV$Yeh%tf6Uh!0is4e|e8}~A{TM|0aSBNO zI-l*|M5sYK5$~gbYN#Zmixu0iqRgGO#*jqK4ghwktZ*qpwO}ClN3eO?C4PL}#{-PE zW>YJ!)Li2ut{36~-a@#C6%Rwg#xe3d4B2UoAcKXH|8dj(%d+0Tog?krub z3{gDbq1Qvajev)*gr53YyEu}@UygNec3PSLYgCf58?}}`PTIeMpV7oy8fkbm#%yYZ zE{hK1u`+*+sAO>CP!pM;Ew8e2Si2f&7Dq=|wC!O&q?YZRnYq*HYeb4vSHPg_PRFwT zkju0_LAKRTJ$dMHM!OW)`=dTEPK>1elanSfys7>Vn=U{%AD;q?2`n$Czo(>(oAb$( zNe?Ceksy`(;tApC7vB1ue4}DeSe@524KjzWF*b_DMCl###b5X@*GbCkq84Vs_68)ib_`sC)QQc282 z9D#}|(POLi?znM~^RF;cG9`mJ-OK{t5URA){6UgU?MO?%tb&h}dYQY(!yKvu?-(7?f{ zXFQh_!=E(Mm@xUbor%&*UwX+*>LVDx?icUO2Oq2ypAXkw^3R>8N7->1)m<8g)lFQ* zhJ~12YPCe%Sn1cJRZctYG5p51R51Oe#IL|r!xMONc z2Uu>7J+s?J`FYia#cCouiL4jHg@Lx88w&JB5 zMF1<$eXh54#75qSXA8HZnWd!Sh%cdCf61nGKK_ab2C~eBqayys7kn%c$Dw~jPPYid zZp%G@-b5GpmN8Yo@O9C{5?S#c*99Je1SieI69>KXa#mT@$;>|7@wgqejxREFMPmsR z*na>^r%U#D!HC4~wS8ocE^ssZVF7QmEhH{*BY2BQyQHx>{>v3$Z$@!0Q3Hav9~)vH zT(}F114a8@5OhubQD0-a!fFvIQQV9sGC5(;BOEtBLdk%O;)|9Y6`7VOYnX_o!=!Hs5)0d_Wq zi378s-r@0WNGH3y64_Yq-4%t!h3497@DtpP;N|h5GctSXcA=m+-_A3jhdep(oIpKP z)$@V0+c?t0au0Esfx;|#QYZSrmaIcK{^6a3As;oj!rxk<@k{G|zn&60mY3ij4NM(H zRDvjTsD_=rn<(3kuWuS$%n{EHO>f6w7rzGD3{8V8yw{GPdUaUnoKbt z&J89H%;9rLpzF-iesU2|obrYj$J%aKH@R8*dzlhawm2!WeLLkP6!3@n+;9l5EZ>Ux zmY?RcCBsJQzm~A%QkF2NSa(`ZUTKg&C@KO9zV+;$@tcG5DFSYWBmZs&kabiDImfAC ztnJ5*iM0zIyyd*-hX>XU&syhe8M>#vLVyFl2k1`Uyf%t&y6^0)ch^RNJ&@S*+3!3$ z*x^{esJH8daX5kp1Na52j{Ge|;YSKTr3NjKR{SO53~^8jm1hH{+~)yhX)=3}r(BJi z(6o}-gAs<#T8-T72CUFf*W}-62jtVzKSOlBtfDQMQ)W=tQzA}BI@P1W6ZrG1c9{=o z@Zuv?iP&N$P}k817Ey*XyvqmXQOfOXc=9#KC0eaQ3z}zOA~8{AYSJ_?-Bf4=Q9EtR zh<%!gE4I18 zW!nY_I@@+4Z`89sa(DGXug#A0!kmyu8sUzbCFc`6{AirW_`KuswZC#W1IKOn;7XkQ zh$9K?snZlp6)+^nWM8`S_4;cZGk7=x+(ccdRbnvLz+4ky#e(_+Eau&4%)hTKNgv7| zPn6(ncT8xZ3NNn1W8#9dFsPyju^;<#`!jGbQJ+ZWQ;n@Jz3TF8s+sz5Vo#GsAT2N%N2adt}C^xnx1f84)FY(qD%C%)Cy{TUquo7r_m->G6-F`U08 zwq8dc)ukDYqqH=kJSwUi3EIqiaz9?Fz@Ugx&Wz=mW9rKsIOCHm*e{8z4MI!}BrUYj zUFDi{AivemT8OJZRwimvqq5WL^a-b6-1kZSmTyF3&w&;kCND5RF$DbS6>1-YSkWs7r-acf9z}hmM=Bb1z!&`d6u` ztoVzQ7lVx=k)~cmU`zEHlhdJX6(rQngS{@Bx*(NV9DfxZ>MPp*8>eY@@>PP)tmiB5de$)`*n&i?N7h zBlEE82=)Q1?kqlS?Ax`l6?3kFCD~{!VSR`Aeh4kv$gWpV$Jih9dgp!Egbo!k272Zp zSM!&ZucY=nT(CG6Dnw?>#~22*0m$%qG}nN`!g_~_K`$-hPu}*AFJFd(AGto?jgUY#+I;(W|EERtS8VgZqF6`?pZxZLn02o1NKg(LlWd9saf&cR-yI z8%HaqSmBdA990VWpJlBEx>DN=wqR!ExKMPyo@D<^_)lMI9y4sJMu{;*QeZ{DTa8_- z!14`m-Pv=}L>dof;i82|OU4KFJ}hes*^Le~qpbQ0RT2&GA&|y2NKBI%3nqhgazFUt zP*w3-}L#h|pFdNnOlnpnb4kQ(Elez9nl-f+)vCC2|zuZM%^_-L7ngL!-Yud!L98R3) zjff3u;;(T5gJy!%7BUoQV30=t}$ZZ1j{qkb`!HtdvGn44+VUppWTqbCpwvb zC4EDNlPwP_W31&HVBlOI+pZdIv;Wf?d)||2M?b+{Eju2mq$~1{r=GcNps>t($Uibx zIFa1rQuY-2KoNYN+n$N7iEZ1w zJ>S7Szo7f+-5XVF)w>{JZT_;r+oe&fnS=2X613FV{#&D0cbQG?+y5*T|1ZtxRHW9C ztjj&OPv4(HFAj3b;JY$!FCIOt@o6eNIfUc-;<_$Y)~G_eG5a(`E6sv1z$HjS9T}Z77|%;+O*W zj{HEqTbr=M4p~~lkS(gPpXt0My$-J~^jG;?g*C2;%1U%ag9-AhdQ*zogMWEuC|K5G z_i4E--8TVw2YT(0jP#9oszLnka8z_F0vT}@UeGlSO%MuWGDHg2cd-=SYO#ea2{Lgq z0&YTp#LjJasnHheAyxxTTf$}YY4#MgxMg<|*8Q(oLys23kZtc*667xNTVbog%BavO zQ=_Z&riOHWO=DwK+zE6k0qu0=Vks~*QmUGoMf7NsRgW8;)EvZwno_ktxUU*e!>0h& zqR@5P!^P^4-q_D7{Z|+tq{d&*SIz*3kP>BgPZ!|86t1uEyqO?!x7G(ZY45h<1isw0 zoZz_-dcPj)hL$({;sZHI2>}6F0RO)GF6z^lZoK#IeO}#*6X~~hxqwR&mI`no>R)X;Dm87MiIF*T}@a*`sgVJM<9p&F{;P;P0y zm|u)>p;6mw6Bg~^KJyUoo%08%1s{zyhvr&K>L$`}xWL(=QPX=f;-q z5pYCWPdou;xSvVuVKm#y1kiM=W$?yjo9c^K&{lfvA{(Zqu2;)8)l4Ge$8sT(mDtK? zb5yI7?HtvYk9hLsNpK^7qVb}J;e5uU%$eD}8JN`aYRIExOXWy8vGx_sGT~m?=~}vK6+3=uZSQ--(y7rX(iUcf^^v zN&8?IU_Znxvz2<9PM+_Fih(0TJ5rumQj0h@y>6AhF5D?79}arLXUI}cFeH1fbC%tD zMC+dX{l5~|i!G%AQ>L~KaEX^7`b+?PQ|XF^rSl{vc( zDga5*)+|QJ^Btm{trP@(!~1EOWtbX0NQF5@g_q!u9wAe|5a{uvfq5Wu9T;c+e0tj{y#$WT7yCDOXAU#>`IMp4bLa zLL-}Sok8Q6c9coADV81hs;<9XGYnvF(qqBtr zQ5rad3zh;Gtx%{Vl%XA~0^&upF{u%hcgVU`wdnkQCc^{;Pwq#7+xZ$gV^<}1lNA+?{zdf%&V5h~ zT@d$4ioASJFnz^=A0iytj>ciw;I}xiK`S$18*d`{A#p(sH^v$jLQ8}Ki9G6x39kqW zs?)J)j_r_;TFKyIL&^Yu_I12d^kixlSEbi!aZmC`=ms26m_@hZ&qxU7?v4WR3cij= zT5fZ0jzT}uHC;AIuFy|Co1Zuv=~raYCl>B6I>}R+bt94+ z#y68t0%ql>Qr=S|OmhneO1#K2;VHLc?gkul0YhS#t3i$s<)R0TzV#FW#U0u=4gKaD zOae*eS%3dL>`Ksz&?Jx6sgJA)wKIWP!)9_AhZX<@}q)BNk8 zsjv6P3krTuKOoEHZ%ktRtjkGbrr(#^EOz<>oNt66J6W%10d^IM{{$O$>G%0Ie|erS zNcVVly!W_ue|sNJ=-(Nf9HxcM>3_Yccb)*8%j)`GF}XfhnrE%59BT$akDIS0Cjfe0 zk=IpE8X)?*!+F51cfZKE_br7HApSnNa9=K}SiT;5&31d-<3Tsj`Md|h@^XbzfdNq- zgj@;5^4>w=a2oj27D0YKHcnXl4u*c{nDGrYn{;1qsR8}mOY18X!Jlhgv#Ofg=(x84 z7&X7X8uj~nAL_Ec@z+xrKba5KPFIX}&FdC@2EHMs8#u(&KB_I~rdT^#dY3wCSnu6J)X0Y`LZ2_wLtM z#B4mw`OP)`eyc1)FNOJe)b>?Vcz--oB>vTAipp^W+3s;p#o?#xJCxE4_$CYDxVAgT z`Bk;OnE)wwgvO(F(-oK7;2ZR#jHpiytZ}d zdrb+PB&*05F6YcVpRcF=ED_V8t|r%QHN=Hskfw|WXs5HMpiOk=$CDD?3U@Rd2X<3QQ&%UMB7(1-wgTfdhv9n%sfP|0ajdr2EUX<$*Msj3Xfgc zV@I3SMk~j8^-7OC!JZFwRdc+Ao2%&L+JZPnvAA3vbCLAk#zx9^EoG&VHfN!R?haYH zZn>CR#3TaD*6{9b8+Hh44WJ8&B5c}^6!DDFF{KwA=Go-lm9F!(%V&o>*Y;Y%&NF@d z$+OG4%__)tamJE3?rxI+pq@Aa7yrWu%Djhuz$u|$%C@8t^v@s0dE?LwN?+&Uc+jpu zAdzL$S}}7!KfyTnufG{E&kl%SADDw>ge&pFcUWw(jzqv>vqFQ%W(ocm#OwL>dfY>* z3qZ5XS8Fz%WC4)03PF%!KC%>Z@?v4Q*tVv0O01Iv7$G@kwUDpLl2*o{oPNkHWwjGZ@I|0a5 zd};>}o69wzLqUYy7eW9ihW~qr(R0rR@TChh84#gDU>Q5(T{jFN|9OE=-*9bj4(pnx z*A^?BD7mjc?)d=98Zz>FC+~HsH9JR5Mow^~yE>z?Oc>CS&0`XoQUmwiIZ zi+vQ^<0wWL|JyN8I%`^P(FTS8sua~gB`y==yy^71tmJ6o%*H+x)l%up2#CSfL8v5O{Y4^L+P;rLK1W zXvR+VZKG-uS-Pz`Nc{7upFA$>mjOh})uhJHx2Jpl_l3N#X!bP=Qi*sQDk!=Q0iC09 zTviJto9p30k7K_H*gvJH#M?H;9yu(yWHGJMs)P$j35hg`_$pk__u4NW`SO z?Q${m97xW*JxZs6a*Z~O6ZOn7F+h#Mf(i9B@~gp}vf$bh-9K4Na%j93ut*<~KLkk_ zMZHL&6qr=r0;5M^m5hw~N~}zYt7ggHN~tArg%VTxf@%ZJSx^L3>PyNMpQ3d-wazRw z1JoAtY=nt^lF=uPDK3%5V3IgVJ~ddm)skxkUmC5ZN&=hKy162!vK6lz|9CXb(X~?j znm{@ANH`lhLeaFMZ=g|eN<<&bp-39Kksnj7KIT;!%j(rGA*8I>n>3_aLOphzZ{Yi> zYRht!(megZg}l!Ih|`>I3ZSx6zl`ykQR1RF4-?BapT{$zp$y7GEG`P^@>Cq-faExX<8(}SPt=0TY}r!GV&DlG&A7smVJKsSx> zA&jW<*V}_7d4S<(;y8A!&cN+h5`|YF_=F?UCOD6$wyOm@W|;Hk{LnMU1ssoD9&=CQ zEw^97P@u_KGIcNE(PRc~DzP5m7@GymenWBo^%p2U91Cn6tY+f6AWG1*9#JapNMSpl1QR%@{Yx5-mv#Tl1@F@ z*iKBTy|!(iuFcPSULJ`s{H~(|kndEr13}9X6RKRdY-1^5uiztVYX?4vN2)Jp>vl6Y z_beuN$zwx_<{TVy*_;D}xB`a4I<1`33BSunB-m^_&@TaFtE`?67V0B9R)A_?$O6?3 zoM}a$bB46yp;6>Z7m(5hwm)(P)wsbTo=f?j+$PpVBbr8^>*gdZnPw(?)COYDoi~=e zV5`|WN~#G1rV!aJm7%f#!YvtPBPl3gE0HuSXi=Bo@I$9>!$a>maP6;jHIboXe{=#+ zf&Q8-86nJ;+*`QXA$2y!q^h@_LRR5@I1+Y2zjvT4bSeoLhX4G}UP)E+jybpn7WXW! z7qcwZ^?G$R3KfXO@!&@=(ZRMkHdz*w>m(r0L*mjh|FYNd!Yzu#WFa2E%Bj((rh52G zzfLuW4;3NK!B$lq+vKBp5%*%L3QIYz4#$ZZ_9tCbu}Y*Y+MpkBW9WB}j>rfWO^;(z zq2WoutA*`%;+5!M(aI{5k0zuQg)kVwopUWCUrp7B(avLyj{Jv>N_3U5Q)owUWN}2N zF<5L7#bYl-xIDx5_xGBdQ|qY-kHxhrrvo4kv{1{t3z3bfs>MCm4LkHv7Im?bhsz;CmE++^aYIOg$g} zs`pfF`^@mM4h6h+#G>7JxNc=EX<5^+&GF6sA6f^NDYA} zNQb9)-s*GA#}m)ECn8MXwXM5$t%REA`Lvp1lV%fW5J2-p<8ttWa6zRG|7v(W>eZnm z=LJ}(wq0Ipz;;mH*ZrAR0TUz@pE<6C^ox>er93QX2ipwO0&T0FxR6I__xXhP>zzT% zC4gaT_A5E?z73Nkxj|oHpcPOEgz`-Z_(1E?r*%68j!o~TxRrk_=BCqJU#sx%?(462 zAF%OB&881KI#6x9O_v<~i=C0laAZ=833{0CfI1=^M{My8_Paj%@DClo&qsVqwg>?0 z>AWcWY1Q1W?*Z*VAno)D_z!@QHwVQ*Nqh%$)l^Knf}G+xLEq+~{QQ}W37{OiuA8a@ z>K%BCe?x6D13~^sUH~XFZ$g|0Dk6^AOs|zH6W8Bre&7Oa{NB~|u#$l_Z`B@5DurLtoR_Y-iub)+3 zuCL0P6FG>`AATDh5X|NXFflL$3Sudhn4NJDs`*(GKi;#63FXg*;I4o{Q~_QkmP(>O z$WAv|iK>zB8&KpX#n`!4DKD%oY2g7|20D5*$oVPBx}a-&mxB}`Ih*j1eF4Ray>l2l z!;0q7#F{orQ9#KiH2V~conf+v&2m$>-_A}7(q_|{nnD>hyn*t@7O_E)G916bf+zMp#ej#{hQ?T&QT8wOsWUxY3U z?1eNWhgZlI(fUQLkiJ=INT3V$kc*W=LZu}Im5LHuEkVkaCIu+s1+9eR=WiqhL$Q!S z4pT6|1?)jN+kJszbx|*@-=Ef&pL0(&z3MVvr>a|K+-%By1iWHCH=Ulg&Y7E*s$HJ0 z+ste5p;69*^gj9S?ell=hC67MR~3dFG;;m7dOXG#7d1_WHcML^OC8mHLJ}$r3I)3z z9&YtE!8g8&*8 zIqaNUlS=QUxIV5fh-LWkq6$umH$buGWSSd12wcsC10jvZ1kb1=^8r&+>jjp-%51~# zJnvm{#dvcVaW4*ajV4Q*lX6`$3glS82Gyz*JYaZYE^!;k z{UtR6?>46v9-?rItMBz~aTrtogQU|A^f%0InM}8I*T)Xz zw;fa~D@Kp3Rn!|^;aXf~4g&trsnt^R?w*FuHlFLc+l%^SanqO{9ngUXUfX^uVobGMA zP0QPSnCW@H&iN=uif*%mT4=0WfybTgsr&lEEIhURKG~qwjR@>~?b^_l~Qq^@i zR9oOx@h+zu6325sqb{3o$>Q3ntg79boSP{Cv-r4$_qVeo zOZNUO=-J6GG+ys5i;eq8Mv$q^y=q zKF2%@FR#O9zMjKBa)o9*mzqjHJEeV0uiLw>JIy2aaPIcex0=jnkeRhDEQq#}S-n!6 z3(J0QDI+SgP^Uf*jOX{NFQeRSOSQpeKXh$Qs^3%`pgf+Hx)a7Fz)pF@>Zi`XX+|;$ zo8>UIT}7E@fvLv_B|wQ|0Rtt5xEg3t)VCf^INps>+E8?VI&TNO%lgGs&r^Q&_&68^ z6M{50BKJx71Ou`VCj^j@%6dG?*E?e_7qku8ITlToM+nAiLq9oAyYH?Gz82?B5L>eo znh1Cvp5m#XK4_2vOS-i+U^9KJ>PQS!weTFX0R1_W4^wg*0ov#G0u)^BBnmlMW_N-ivJgLpNi%MRbW5 zCX@NOzOTR?akaI9x77yRy+VK{$u~KysCN%5Ha~0C!?mr=*SzWKOoG^ zLwt3y2T6SS14>CuATpWx1=r5+{XtZpgN>1FEuK_+Tv>G!?{g%Z7z%`c9x*w|)l&|u1l+L6 z9-WBiJ1ZL1;=JV9`^F)=s*fUDE8-Jn>5uOOi14zlQ|S#<*=!^Y=5BlWoH(sy!em)f z4opCR5h>`p-VJxVN@$*h{iGZQzRDFW${VRy;ju{Ik9*mbuz_b!u~39iuu4pXs}k4# zM#W5q%VfiG#+0di${}tr8VyI>Q{R|R5IKX>(le~Hpds_>5kWfTM+NJvj$O~IFe_N! zKvzkt%h@v~hW+8o`kk4rJbzJa^&B+``KKR;!-mV+h2Jd))co!7W&}%}4!tCIKh1uj zekl9FKD3G1G`wa}Px@@JP&G1DGKE+dJz3@~MzfJ$`P2!uxVqY;AD+F4r|COx62}ox zBAu1oQ9aLW@Jr{XT*LLR84GnIFv1qXfPJJRSE_&(XOy2aYIuS@iuQzy z1b!$LrrMBB))?E26hb92S&?HJb~;u5aCU3~{VZqie<10{Q9_1*81j`O4`KhqJw%fy zK%RjQ+{ZdtT-wGeJnIJ4N1X{H8d`9&;`4|V4a-I^c~!Y}zO39eXRdl@~Qb`ZrQoB*J_yAu;tikb5EKL-Gl0NbrtwB{M$-766DFW7crYr(qfz8M!~7A zb*&L+0-q3xw7WKleEwurg1}={IID&h@E!*fz1D)_l+A{f<6)yw21yhn}e#%8La|x-t9_MohJqbD^$<4R^8$~bUB~$tyi*JOxXy; z^^;P9$FfBC52D2vf-DSEKmND%9@Po!VE@y>|9+F!<$?+Z^#$dn2 zqf8dzg*T0;_lMyeXKa3<1tcmPm@Hoje^F1wJ*o&!U5ur~UF9_RPY*tG_pI^-c%J8| zGFjJ03Rq2s`A2CR676}jgmTzS^88HlF!?)IMIN#@n1PRpwK(S3QD{s?{qsLSZTXIw zeGUZ8w{-KC;`ra99#8XaC=lAv1Ul~Ii-QGA4$%iGV85}BWhsMxGJQcGKZH*19l`U> zG29{iVFzy8$?k0p`>J)oK}4C~Ls7WuG=J6E&&Kub%P$L7emB;1XW*Wf-?#v*O(+~T zi^*tw*w0uh5NmBw)!x!z)h!F3i2U)>hZp-aur-w5qS8bet%WI@@%xwTM`MOmF#cxs zdj`00cPdh4j?G5kEIAL!`Nl)pZ%E$sx9s}B3(=4vNKe#M$}}U?_?0{U#PxrQ;HrJ2 z3MIoSeQb(;Q#E7j!IEI(C|f8j=YYIrjDaHfG&i;(|MVY1$nWkW(xXoxc=_231=H|3 zOTdmo>KD=FDm1yyR zjb=kOdztR7o?%xUIo{Jf{z&ZN| zl%2ClD1ynXuH3PNTJ) zBno61j3GJ7$O)jUJCICYyw2gW$N91;ckDw+^1RF?kZG-WL)uHhGI?-7)-KkKra=V+ zqAh4X#1)`8N26GdD8FU%aIeZ^;7g`e6!=$RO>`N!)%n+x(qJU6pSPxHoGt}6!yw}v zG72RSXbkesj|5qf@XXhzAfCS9kqs(!Pn1IkGT%3G?3S7mX{%-0$_!C`Q21b_a(Lzc zbhl(m#txVlZX&Yo38a-d1%pfMojxjM&22Wz`%~!V*)j%C8%C4FdaY;} z|Ld(n@%q!2kPe}$+!tvhRscI-@BY^&KG;nl4eei}kR*A0>OVu))@(&KVLtmk(Kxk) z9-JWXs`q!f`_g{m>hWH-6HK)xc*crt`{T!Y)<^03EgCiR=8jBcx)prLA+{h7P(5X6 z33dQ)6w*lDP}qgp)!9sk$#~|mDmHz6L+Av2)#G?Bt|mF zv=DY|qRRSoc6+vU*IZoryjQ~LDL)}g%h4F%x=ig+m7Rrj)Hc!&*i9Jx76vgW{kyV&h6GFYFbAcln#H}K!hn%!O1KHMQL-7_)w@duB z(m&DRC1==H|Dg$Dl0>sV6_DVbkPc$qY4p`M<}|-ApWpR-4a+!LKAvIgfp`AV6q7AO z8fGt>nHD&6jOSombj75~WhkO|*>|ni`Mo2gP-Gkj#lAFS9I|k+*qKBYR2?N4@yd~5 z%%#UidrgLZ15B>Cm^ad$+B7O!2+F z8@*Yl>-+1y%*)>opq9@c0tkJ&PE%|Tb=x-(Z`XhVRoCb7uZq@WmB~l$l-=XN6qe#P z;~{=9vjadiRWL>Tc1N3pJ=gJE0+{q>)4jy_FGMLp`~;>(5gB%^9hWrwlG#g3O> zRB%)l_r?Z$bVleLG=A^x0RGd44q*V~pJeT$m6o6FV2&;CI+0yzdDnkaY%9h1s_m?qcmHq;BBO;2w{yuEa+o^M{3&75y6v>@(a#e zP*zPc@BNAgN$4|>$-GBL1+2%+i3ZV&O+4z6CQ%W7x%Kvh@%h$K?}v?!Pe=frrbINwdXtHq`DejEVjkqdLT`9jMws$DM96^>X$5)_?yb6yX^MBurX zKEcG2n%xdrw3&CR?JvjRB(LG)@-e^;_q00FX`(qb3_P=Og3GEDaF`_KZoef54^D)& zp>bhRqsnMLT%b(n^0E8a*V)67C@f{pH0#+ysj&$Ewk!uw`snI5GznvH|fZ*QPm zJz0BJY)y$zv`rF*K)b8_VCyS+Y%3*yo1H?MTJ%;)RXHg;=vX$Ssv^2{Ol_>j^l}y_u8}kC&9=0UiVy=IL-LbeBROO zF^g^Kdi+gU2t5U4e?A>;FwSL|=L!K5DYuSZDF2ffd(8h_cKSNw$G_S4%J&YC@9ZM) zzCzOayj6}G9=@La{C#gR_2eZ8o#6P)R7OVlzs#Ng<+=5F?Bkv?$N9irc9|3E-d(vV z^o9J-ivg0d%Lw&(%Z>Mn{#~1-CN-StgMq|whA#T6Q6P~*pMt;}5up*+S$s!nCT!md zQX5-I6xcD6rb3$aS5R@#>z1xfy29IhpBDef8hMIZ0k_gIrwBY`|0oO7fk+pz01EJ$ zx#S?yj)Md5aJWr6s4u0s_TU0?d6)NiSx9Lawhlh%a~)>L}@9Ng(^sAcL?%+`OX4mKXu zo~g0)aDF1AQ?KRT^LYM6N$PS1+Xv2u$k3*9UzHLncKPSSAb2j6 zIF5|#>t+9Refy35^LYD>p8Ku5=%g&~9*^7o2I+H-&?o$B;`#%j=LVc{BVJy8j=s%1 z?`u8JH<PJI3xPJmtTrLw%}Z5**gfS|~+n zW1<*ZNJ|3rpffY10ZiV3M+8wsM`WnyE%dmaEufW+iN?K~{J3D93Na(oNQ)A2k(4{dUMw1g14H{O^5R4~fr43fVkX#>iMTm@dO-*{&SI9n{ zJy&{V=p(g**7UTDLU1_hX~4aTF_6o&inHT6UL+_6u8yO)rOc3h>a^*ZoS)pAynsfh zD*drAmv`{OX9Y)P8>axM5b&I0%2ol^=YjFULciPNUtTj-OzU9z2j)kY^(bj6Kbs#5 z&?9}zxYE@wKNy`820cn{Nn%@P%A7}fS2kXdz^Pe`q=TEvT0lB&z%rRYq2&Tp_ihe= zjJtFoZDBWhYw%(Mh4KGSvwKQUc|M^E`X=TL3qo1&>Wm#Pn?8Vt}uX{T}`xTA%Wa9BLA2HCh0o!>Jl+d9J_ zB!xGx6gneVtbr>7(l;1D$HQwu6_w|NJJi~sU=L&M_mq@BY$SJUgr9-8ZosWq6JKS& z72yRgw7yQ+Q5UvLu~?7&SAkx(Oxu@RJcQ-me>3B}RQ0));Jg6=5AOk3hA2@p0{fRa zz8{hjG%3x@wkUNcv$};7N6F|&YV(X!thm8zw>bOnoZ`76SG|Qd&jdMscIuRk*6T&_ z9DdNa7~{}F{gt33aY)BKD;a(HwTKyd!&HMtk2&qYYM(p0)i+hVl{tjbEGd2H1(j^U zfhE0Wba65-57{sdH~3YXJB8e5UhemcrqkcBd2-vGSKOUDfv_i}gs)UScS(7y-<-~X zEMtdZ>;?X0NR9)w*WTx89!r4#>R}hrFa2w8!A}TaIlGK?$#EQ~R>?)#RD-Gov}*CV zzd!Cd4s+!H_o85s;0-95C(UJH{!7~GxJID)S7u%G7deQ*o1PF5$O{~vV(HruG`3t_ zqfyUm8%#NI5z4K9aLQ(}8%YC`w6!#ie*$zlCh4-)%~2lIG?u?KSvgYV3AU7H1Loq6 z+myA;=HL%bEQb%fkj2On-x)!y^~op0f&jUItM1X`7uPCpFqf4d)_@v?uk5E}dnb*$oN zmRGJzDW|8ja+Y51KCiBNea{|%${Vicgf!0CV&R-F+A`v{?m-(L-Nr28$j8 zd#MWd$s+vPv4d7x%)*L&XycE8zL;T39VAWNXS3^Cax%$UM_3(FCaKkXrmZWn{$Adm z=cs*!(Di*ie3(z`O=jpm`5lo=lT`;`2j~~V=J^2Uc%D@}q}2JQFs#MvLb8i4q36BA z^}MOo73O&i%*@7cYzV$TT^428_FB@k9dz9e7J{#K^WW6Js@ zQ%?6#hq!^@xgFKwze|<7ep7WiVmg#mTL&GS@?*tRs5+ANMa2jjI@F1Ul8E!i%sT=J zC*Xw$c%%&dTfY4ctdu{lNjklCPtfH&a3Ovt+0ntM{3z`rOXcdL|Inq<;K96U2{?|7q<5%@+Z zZR2j3LN+-7)vNtvxO$enI&hu1*M9-ql)dC$W$z=kqVNKw4cKN*8E=@^sy}-g(I=hj zjBG6|1h$-9aT!2s~C;TINY>E~TYCq0d)-pi|3$ zJbJ!<0UngZ#XSIjZ|ThE`}2a=_H*y)drg+J-_6&v!ZxGNjF<3RoZrXH|1SKFiMpu4 z<0x(SQdIMAxs|40QAcMfC0>Ae2{5pyf!r`W|ASFF?Lf&~UAk>L>m7vj4p@5J-RXI_ zt^+0sD=kRIjpTv(t$ynVH1Yg=20f#xA>7+oPGtZHBB*?gF+cAg>pT@mu?TGHu_+ zr%s}3%{2Cvt`Wr>mZK9FdXSUUPo-nBVG0>UdNL{&%w{7zTBTRELpX<{5$0cfc$slU z@EdN4U;O$jqgclWeF{~Uyw#bGf9$~RIaU`kw?!r=_{EP4CS-D(sXE~@9CkziQ||+h zdsw^KIoMBH$xMvz*C^L+ z?IQEQHoBH_ihHmcC*HhSMQm_sO)qaF7^Xpa@YOmf>ROqle3~Txb#$csr0k1EeK^A!Vmn39tKkaMc zii!`V2u*1t%*9j?hV(!%T3o*$AJvhlnvIO>{7_+0`58>8a{(P|cQa=-xvB}pF4&^2 zpjBlNW`v0i8VNclMrDdB(|T>(IJqa6%9Fnab6lJPA6J&9_U0RFVo*o=Dnwsy(M_fm zHHaA*i^Y2O?;PVRo&AG;s77Wh+k|XKfnrt#=kuoGmDzc-omh4IGNP2ffxg-64KCJ)U;aSaTw1%q2Q$n}>IBy{s zOD<~rz3|kH2NGU=34`n+)Z1UkJW%3+;EWePpiDh$CyzSdA5Nr(6hUqlsZe;l4-|py zMk_S(7a}$|sy`2uK8y#Rzy1LwmXDy~%v^5QWQfFoIIxu%lxg>sUqwZqZVVVNuq9U) zSTH~j+g{#9vO4Gnr^Pz}v>A%|kK?e`s@AMtAUi4Spi(Xf7eqeayd$MLx{wnn_v-To z^jJ8E)KP-X79!poaDILWR{&o|g+=$YLc{B!P8x`r86|Asw?&rZnQ^($rD3V$L&bhc zE3xA0uu>)mi<#MvRuzxgw5;sGDt3LM4(^}KBLP9EV)D5;O|*MCA&q^3tMe|g=`x+>rZ|TjnQO%T#G0^&yHO9h zyNt{wSSsd*DPk^MGLfLWnB4N~%B~BfhGdd0aH1Ux@ZfoJAlrmp)HLH_OF83J;AxMB z(MyU@$+KjxGEV;JCxm$a&$|YoYy4bwk%78@B}pvQQoNfNiCKj4(y}3L%H#&cCEDc` z*X3GCH`R?R>uEfTaqrdCGhSS&4lX-6{qsv<#e;pRunL6B7!FbbZVfmU*}gfioBY!o zjx2NuXf#?1&q;(BV#nX0-)C5Bas;}JXGc5}{JcEPc-;hPJoHf*NjBW5aHTIJ8;!0G zC)j{m+bF|oy&OsvE1Z@p51IPUGEge$u2EOq>pJa_4}0K#vDyB!G?|#-wMSxOl=47J z3@kzsCBrf}5Z>D6^ZgvZ3|qQJGGRrFBnYe8>T6?g{L;BR;i78yB0_Skah|)SFgtU4 z9)plYEIvHg@99f92LqE$7AKw*Xmses<(xFfhMo?#x2k(Xlw(k;c{rJS-s4UYKBlYN z?!Va5t>=fCVtNc(Ap3b9Sz{3fNu^+TQv8!QoNwlIi~x{Eb4sQ@S#8oC49&S~2fA>B zg35Q~Ye3vo2LZyNL0pJwa?dSD#vY3sQ}qHz^f9hLaC3(pW#2lx^?ykh|Jt8iC??BD z8evIh>y1Ji{e1c(K8kl8cq!;4Iy>^(y8%~e&4uVLuICv89h?t!MNa(YbCdH|q>C`n?0$gH2S?O=*3*$Z!&Rh^^#5X4uft}Fgr%3+glTcm zZUa_guN|r9XgZ<&=jzJV+y*o)yqq@Bh7TUlV4L>=Hiz6Q7DEwdqNFZH3%Xm5j z&qQC>jX)9CM=QHTswed*wYfkh;LfCO?NwZC`(Xq96%{LU+J&r~BV4WmS>~8JAL{Il z1+Mao)p{`GgQpzngTcW_6m~?bZi*@Sh?zbEgt2^Lx>5Q}zez@>ETyL}i>tI|u8ZbG zW?-7hs(&T|%4{kY!?p9r5!7+5doHI0X+zK9&$#`UGV$-NFAtmUS^%Ns3uDKwe?7R4JWCa7u#YJUjwXHsw z??@A)D$KDE%UjesbR!sO$OdQpoKb@qP;5cQ!}CbA_=HXSus0d!6tf>hO5jpNH8Zv= zn8lTudEPv!$6(W`;8MuUS$Ggv>>Cz^Z>4ZOy?wwSggU`P)iTq(lEo z^Uce=>u~tRkqx8KhfSyk`@8?LYUV{=J9G`yk%ar(2h?lL{a3AnC_1?wis{CITvBRX z2sJ4wC0F1ylf)OKVKpj{NPa|VZFk`2)Wp^qf(}Ed^4NTK>Io(2LRa^pQ?dNV40S1X zl|cAu=UNkXOO+%(Se+@%TUaD+hyj07Y{=89w75-I>tQ3Sz7a(<+ytmBS8{Mjgg|^D)%ab8E{8CCjsjCJ2hwtINl*c;qYo zv;4~@*zo@B{0fypjE){rCasm@S!d*^Fy;Ukm_rYEpDlCztI6ofob?jpsJ)chW)UDN zU(IE96Dw%V*s#;xB>nsSN3BwluEYPcWsDBODeHfmEsHiccX&!QsW|^_Jq*#%k3ATF z#RseDdTvid*z0k$vxEbl6Gmg#bTb7u8CXX~29qJzO|Cb9REQMPoZvV)t_NZh?oSL^ z=;J%9`h%K?q!MSeU}_679KT@*PF)FDHh<|c>@iQ0)jg`zY_NxW!#IpwQjBWG_Q$+( zv2r>*OFeSl6w352q0!V@pcV1><#pT|;Q0c6NCTsqUKmTNl%gH>eoM{zCUXX=nk!RZ zLr!+9?Hg){4ZcRX!I9zvZ~Rka1Y2Z|e5^XBzvz1eV>ispZAuW|QTDzKPL00v%d!6H zv(}%5WM(pH7__yZ!tubrqfgv7KQ4LaGPt|D1;NVWn$Caof0F>89}us)G&&hMr9-~B zJjIdN9=R-3VM8(bh1~WvJ|i8_!6W}%|A{&b34RK@zY#@0Xwz2i6YX1h4;;PRQ)T`L@DaoePBdkO6CmW6(vN3vgT+w2^EKn7PaXryB-`p$emwELb zv^=KiyUvgQFXI%X>9zzjF+QG)Ngv+Jn4Ug&%hro}5honjRVI}($ospNb=Jt!kI18# z?u73^a5%ITKW3x+gbFjiXw1Cchfnh?2DS~=p{@Ub!ijdv|4HUEgA3_IGr{BrxiWN^ z&>#*f3PWK93MHnP0bKfon*?g|E-TJyYc9NGM&G;3rxfkouK;O}CfJsPIx7)?iv+Xa zS7jkV5!Zap8ncAFrhvwD^dypVkNy{k_-t~`UM-o8jdC#~CxlEKU2`?L@S?DeR;Xav zY`*fXzLm5t^J!`@74(Bjt0j>DA-+Tk(?+>*BqBAR!{y>MOR``eTcSykBGmiUB<`xD zm9X>Cb$;=Uv&<5;m4wsIwbpKm0rq&)&jAcl!9>0n*0Vo5Y3d=Ip75Jn;pnH>9u8mm zg?c;8>7E-geG=}7wu5|Cr$=8s^^D7?R9QuPLkn`w2w0r8zHwp6mH4w<4E8b9U5CH@ ztK%P{zm49|Mnp9~r5?ez4fi;QS)e0Ke^HmU4f2$=SZG7T{GV;|+XPUoZn)O8@gk8{ zfy}0~UqH0&V;xnV;HXSfmf;>%;lGg>KsP)Gkl*ZKg z;&)!qh-$Oe_x-2^d9B_LR$f#SunTIhxXxofEBaE0MC=8Zi_o*SbDha0;q{W6v^m`5 zpB!w+J*T|laIUkz!mIBe3?M}&l{J;&Iu*vD6~fe`A!-2b9#z%w%*&Y9k?-alSxE<0 z-vFjT&0XP7G-GXF$}@M4|U2G1ZkF@_1{6j>mB<&shCpG4)^1zx*&ua zadIq^jyzm9rt{qe|6M$HACE*S<^qI0uc<9!Il(M`$6QOw4rXWC4h(I8-w$#<7za}i z59R+nv@llDWuVdut6CG}#5@nsa%Yww;X}CU{z`0|4CGk11fOoV05ikLxQ#EXiJd`J z<4od^a1`3Wg-4A=(8^oM63Hw`ZAe7kPw{!1zcA#mVviVQ>ea_)_TT6NCkxb2f;u-a zXc9346*BPviy;S-#7_xEa=oQUSgJK9IbY*{AP(5Z#)IY^Vr>VfGXOQcE#I4*FGnuk zec49OF_(6*x=Lgp*Hn1JzYzyI2d|3)flPeU+71W0<~|@f@v9C;F0xai76Jfrz-1)m z=ntCeX#=jzj`QsVOV*G2?C$(!)}s`HW2?=-Jb%>VLWVW|0mcG~`F{ay50mh+C@>05 zuh7%fD!W6O-1{!HTsOA$LcV-?QF=%|VI2fSxe9M<22 zHLx}|U!|taW2>ikku}B5&zI9}X;W<5L{>uMbnKz<`xSm$YZ*T8`CJ;RhIyNlZb*LT zcCep9rtlLN=bF@?lEw@(rKcZuox^yPMyo16CyVJ7S4!t-GTP9^WUmWP0TB3T&7 z11#Ui;{*&bQcRP= z9&&^bQDU(O>Mae03(c~-MD!}(skPR!&@YZG;+?sn-Tw0q-&se1inCJG};wczxv6?+h5RkDr$IVy}O>`8?W z5G3_QP&ChsDQ`{E{W&w`$oe!X-DGH^soiIW3>h+H$dDmJh8#JvYnBjhTPj$jM{4!1 z;S$1a#8>xP!jMu4s1@r?J8S~3b!&RKXP)orh1$JXC@>gGjv=6A0J%s(tObFF7}11K zfZ&?fD3B^sNeu=ANE7YjkgJ8@Y8DH%OOQY-!?OvzMg^*_0lmFOcpz5AHjdh(_@p5S1iGyZl#)+P1SH#+2D8p^hIj{!TW< zHEDVIQjmTz+X^2tWXO;qLxv0)@^Hwmh``EEM=|On6H@uyQvM1(rvMm05j@Yk>B*|vMOND<~ns5R0aHcdCm*KfgHv~s1~2IdyYsD z^ltdYQc`M{crEAa!Xx(mrY3;2c2K0`h5?{Jj`(#X{*Y)eeGLyuANT;NN#rdM_kPKc zFm($3W?4(@9f5k-D@+;?Wlt@w-3?T*1f4Q0 z`bAnm$q1G)l1oV@HoK>u;B2d_fIbI9#7RS@(2u?Zx9bQ%YPomw6oIAZI)02!kAxFv z^1~Y?zL+C+z>2*L*3L42&|@*1u`yRbh}-X}WFs2u8fjxS z+lM1Dl9U&$88T$ZkRd~c3>orp%Tcro1c@lzn}@mGguO`F%c@6c^_CEp&q8G7vQ$Fk z*XF+!ak#+;2sZ0LaL2CKCE23jBm-!;R-S4XDr^OMa{@JN_)vl_UVRJ45T0NZ3#XI` zHzZr*dBXf)5`#@h7D#HJDa~5<=F+}&8*KkBg?u6oRt1*+X+7GHBr+du#=>1q-6~a4L0G39U-(Ol6BloXpqtEov0}chY})8Gy%42>73aW~fiS z#F`}10}|S(Y5`=b=`Yke3^;?6yn+SKi6nbuXgNPu^jN`OUt0O3%Uo99-{ZMz61fH) z-FmD;$G~#N2yYw+VL&cc>=&mumu78|?Vu zY{-3{Gxz3oY9oCm=;j2zE)C~2hP4qq?OehN+F{9_&?bUygZkin;shdhOx5T(ZTsn* z^lW7Nw^zVO1sN_+ix zuBYGsgWsnE2M*AXA-hSQ_uS{w)1LNpy6l6O(U2j#Nsc@2xan`to;|d8@7`(tE#LM0 z{{8!>ze9%((U3={>7tE1Wg~(EJDyPS?mPo7a(n31Co7;KQT_~TOe1VE8 zFjBIjh4V&gU^Gwt6Lv_>2IL5!A>OV7=%}S2z(at@Nr!;f0L37%Fn}i+TZ`GssSE|n zwp2tAWJ01<1V|hzVQZfzLT&{B4Eiz?9L&^2@^O=10Mz9cCMPBZsH9rB03cf-Q3`~G zMw8H#W|bmPoF3JsiOeh037bo8n!hkKWAxj}3TR@kWP_c?p7`KuR#uuxK8wwN_} zSZxc2aiS!pf^`SsXh$o^A8-c1BeYZKFj-R1>;Qm^sxC zors}8gdo||vm~UW*(NdjVU7$#r21|7W`ttOFzK@Dw%?p()?ddz=G90iC7{9s0qkm_ z5E13&FZ3BXS>^T%%s5u8AL|@O={JVk$R^JSPSJDbbXt}#SuyTMvRsy=bL|1CAIRD} zx;#GWlsx1SBCme+tLd|!{VYB8+;gYnFMs*V;rjXKpHHWse)@F&=YRg6(MLb_QM&ck zTWQFU-6Su%_+q+u1M-Iq*)4L+F~`u${`t%3;*IZ~e)?$>Y4!c@-$Gye+SlmJC!I;> zJ>xt&@x&A8hd=xwedqe?>5o73A^P@p*U^wipX{m#EESBX%IR`MR*#&*^X0onY%SH- ziUNG8Bod{Yd8yGl1Rz5K<$*+rksgVQ$N-wjfe8MqfX46D9m3%;+bzG>U|@{AZnP5h zQF9QJ2R$X_DJz0700PKMfupb zq+Jx1kVYl&E>7Ute0}~$i97*^;8Y4KCaIP@-kG9h+RL2n!-f>8FMJ>z{)F9JD}cd) z16uq#j=FANas0$OdTu!RiY++y(GLDpCkcWCaem}vagRYDCpVhqc$OAyvnm;)>R?zm zwo7b-Gyyr$4D%871<7AOL+~&G>umkq{kipvyetpLHP$Af&$!l>8H1BY zl6J_DBV7vcf6|klL^s@UgB_o{A!z^b10R@<&pGEDy7}gtN5smIBU;Wo@4U_Y`zm_Z zyWVB~TF$-x^{<~utl#|2|1?EpopQ=4^s<+|jNbOPx6x}}`&t_E=#wLU53IZadybCj z?RB+{fXXBnl2@7V3iZTNG{Ic2>PHATB0j?#@bb5|D1!DTSvoq;1W5*8mY~7}p%%X9 zl2zyJH|P#pTKh1d1mQT^3iuC#JU}1qD?3&Dk^QZVFC}rD7ZU2JqRloU0)x%nfe^`tJ*z!d zHk#Yolo$?UAGs}Cdj3VZYB+$I+PmtD(dm@*a$=NyA~O9XHhUW9I7ZvXZOJbD#4(IMr+S7ljN^gw;HS_( zT1~9m%knuwy8bPlb6qzM^$XbH|3ML<4f{W(9p?yFyp3%R!#N}TqI8Q1mztVFF{!MD z;S>r2ztR28dVSCs~c9*>2SATViv|5sLpZZjK%bVX!LxvpbQpnbK{PsKOt#5vd zohxM4*=LSShyLe= z!1~6u*V4`3{VrW~_0{yHFMoOX^P^aH)msQNQI*pa=`8`%^OzPlaL00bOA?h#5Kjo? zNniAhWqKq^kSy$TBS($4xpGA9n<8G!r4d&zD7G_53GG^<74m#G5^dP|E;$yM(p~b#NZk zq5fD7USi6TEsoV&0tE>@C&y`uSPXN8`cJAW*A6+td11Uh&vrKaDOE&7y*;%;iAX+$ z!4y4js!7^5;ADjm+LLO9?tHNRz?Tbw)+SJNyFyM_Au33)jmDlAZc9m_gyN)%RSW?3w5 z$nKXnz3EMK#b>Tqyj}p(FTe7YG-Sw;EQP%K^?bov>m({KF8|6u2z`OIh1?YG}P u{T2E5Z-4u=EbA?Ac?%60GGxeZm;VR2&&h`sBDvH60000 - - - - - ); -} diff --git a/mirror-2/components/tutorial/code-block.tsx b/mirror-2/components/tutorial/code-block.tsx deleted file mode 100644 index 9f1b13d6..00000000 --- a/mirror-2/components/tutorial/code-block.tsx +++ /dev/null @@ -1,61 +0,0 @@ -"use client"; - -import { useState } from "react"; -import { Button } from "../ui/button"; - -const CopyIcon = () => ( - - - - -); - -const CheckIcon = () => ( - - - -); - -export function CodeBlock({ code }: { code: string }) { - const [icon, setIcon] = useState(CopyIcon); - - const copy = async () => { - await navigator?.clipboard?.writeText(code); - setIcon(CheckIcon); - setTimeout(() => setIcon(CopyIcon), 2000); - }; - - return ( -

        -      
        -      {code}
        -    
        - ); -} diff --git a/mirror-2/components/tutorial/connect-supabase-steps.tsx b/mirror-2/components/tutorial/connect-supabase-steps.tsx deleted file mode 100644 index 04ca37f0..00000000 --- a/mirror-2/components/tutorial/connect-supabase-steps.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import { TutorialStep } from "./tutorial-step"; - -export default function ConnectSupabaseSteps() { - return ( -
          - -

          - Head over to{" "} - - database.new - {" "} - and create a new Supabase project. -

          -
          - - -

          - Rename the{" "} - - .env.example - {" "} - file in your Next.js app to{" "} - - .env.local - {" "} - and populate with values from{" "} - - your Supabase project's API Settings - - . -

          -
          - - -

          - You may need to quit your Next.js development server and run{" "} - - npm run dev - {" "} - again to load the new environment variables. -

          -
          - - -

          - You may need to refresh the page for Next.js to load the new - environment variables. -

          -
          -
        - ); -} diff --git a/mirror-2/components/tutorial/fetch-data-steps.tsx b/mirror-2/components/tutorial/fetch-data-steps.tsx deleted file mode 100644 index f0193fe3..00000000 --- a/mirror-2/components/tutorial/fetch-data-steps.tsx +++ /dev/null @@ -1,96 +0,0 @@ -import { TutorialStep } from "./tutorial-step"; -import { CodeBlock } from "./code-block"; - -const create = `create table notes ( - id bigserial primary key, - title text -); - -insert into notes(title) -values - ('Today I created a Supabase project.'), - ('I added some data and queried it from Next.js.'), - ('It was awesome!'); -`.trim(); - -const server = `import { createClient } from '@/utils/supabase/server' - -export default async function Page() { - const supabase = createClient() - const { data: notes } = await supabase.from('notes').select() - - return
        {JSON.stringify(notes, null, 2)}
        -} -`.trim(); - -const client = `'use client' - -import { createClient } from '@/utils/supabase/client' -import { useEffect, useState } from 'react' - -export default function Page() { - const [notes, setNotes] = useState(null) - const supabase = createClient() - - useEffect(() => { - const getData = async () => { - const { data } = await supabase.from('notes').select() - setNotes(data) - } - getData() - }, []) - - return
        {JSON.stringify(notes, null, 2)}
        -} -`.trim(); - -export default function FetchDataSteps() { - return ( -
          - -

          - Head over to the{" "} - - Table Editor - {" "} - for your Supabase project to create a table and insert some example - data. If you're stuck for creativity, you can copy and paste the - following into the{" "} - - SQL Editor - {" "} - and click RUN! -

          - -
          - - -

          - To create a Supabase client and query data from an Async Server - Component, create a new page.tsx file at{" "} - - /app/notes/page.tsx - {" "} - and add the following. -

          - -

          Alternatively, you can use a Client Component.

          - -
          - - -

          You're ready to launch your product to the world! 🚀

          -
          -
        - ); -} diff --git a/mirror-2/components/tutorial/sign-up-user-steps.tsx b/mirror-2/components/tutorial/sign-up-user-steps.tsx deleted file mode 100644 index 7ce1e606..00000000 --- a/mirror-2/components/tutorial/sign-up-user-steps.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import Link from "next/link"; -import { TutorialStep } from "./tutorial-step"; -import { ArrowUpRight } from "lucide-react"; - -export default function SignUpUserSteps() { - return ( -
          - {process.env.VERCEL_ENV === "preview" || - process.env.VERCEL_ENV === "production" ? ( - -

          It looks like this App is hosted on Vercel.

          -

          - This particular deployment is - - "{process.env.VERCEL_ENV}" - {" "} - on - - https://{process.env.VERCEL_URL} - - . -

          -

          - You will need to{" "} - - update your Supabase project - {" "} - with redirect URLs based on your Vercel deployment URLs. -

          -
            -
          • - -{" "} - - http://localhost:3000/** - -
          • -
          • - -{" "} - - {`https://${process.env.VERCEL_PROJECT_PRODUCTION_URL}/**`} - -
          • -
          • - -{" "} - - {`https://${process.env.VERCEL_PROJECT_PRODUCTION_URL?.replace(".vercel.app", "")}-*-[vercel-team-url].vercel.app/**`} - {" "} - (Vercel Team URL can be found in{" "} - - Vercel Team settings - - ) -
          • -
          - - Redirect URLs Docs - -
          - ) : null} - -

          - Head over to the{" "} - - Sign up - {" "} - page and sign up your first user. It's okay if this is just you for - now. Your awesome idea will have plenty of users later! -

          -
          -
        - ); -} diff --git a/mirror-2/components/tutorial/tutorial-step.tsx b/mirror-2/components/tutorial/tutorial-step.tsx deleted file mode 100644 index 0ab9cd4e..00000000 --- a/mirror-2/components/tutorial/tutorial-step.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { Checkbox } from "../ui/checkbox"; - -export function TutorialStep({ - title, - children, -}: { - title: string; - children: React.ReactNode; -}) { - return ( -
      • - - -
      • - ); -} From 62826b42a5eaca8a79feb47faaa6111337f243c3 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Thu, 10 Oct 2024 21:32:13 -0700 Subject: [PATCH 247/353] home redir --- mirror-2/next.config.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mirror-2/next.config.js b/mirror-2/next.config.js index c61491f3..5e2f8457 100644 --- a/mirror-2/next.config.js +++ b/mirror-2/next.config.js @@ -10,6 +10,11 @@ const nextConfig = { source: "/sign-up", destination: "/create-account", permanent: true, + }, + { + source: "/", + destination: "/home", + permanent: true, } ], images: { From 6e384f681bfc21fdc6c37be777060d415112ef44 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Thu, 10 Oct 2024 22:55:52 -0700 Subject: [PATCH 248/353] license text updaet --- mirror-2/LICENSE.txt | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/mirror-2/LICENSE.txt b/mirror-2/LICENSE.txt index 5c4c3c82..13219824 100644 --- a/mirror-2/LICENSE.txt +++ b/mirror-2/LICENSE.txt @@ -1,4 +1,4 @@ -RevShare/ChainShare: A Source Available License +RevShare: A Source Available License Copyright (c) 2024-Present The Mirror Megaverse Inc. @@ -21,3 +21,26 @@ Non-Fungible Token Royalties: If the Software is used to issue or mint Non-Fungi THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. By using the Software, you agree to the terms outlined above. These terms are subject to change due to early versions of the Software and the team is open to feedback! + +--- +The below copyright notice and MIT license is included for compliance with the MIT license of the PlayCanvas Engine: https://github.com/playcanvas/engine + +Copyright (c) 2011-2024 PlayCanvas Ltd. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. From debe00be2d7e25787bc469906643d2d32feb0343 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Thu, 10 Oct 2024 22:56:26 -0700 Subject: [PATCH 249/353] license --- mirror-2/LICENSE.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mirror-2/LICENSE.txt b/mirror-2/LICENSE.txt index 13219824..f3078b4f 100644 --- a/mirror-2/LICENSE.txt +++ b/mirror-2/LICENSE.txt @@ -11,7 +11,7 @@ If any revenue is generated through the use of the Software, including but not l If revenue is generated in fiat currency (e.g., USD, EUR), the user agrees to remit payments to the Company based on the fee structure listed on the Company’s website. Failure to comply with these payment terms will result in the revocation of the license. 3. Payment in Cryptocurrency and Royalties for Non-Fungible Tokens -Cryptocurrency integrations are exclusive to the Reflekt version of the Software, a separate brand of The Mirror. In contrast, The Mirror version of the Software does not support cryptocurrency usage. This structure is designed to give developers the flexibility to choose between traditional web2 approaches and blockchain-integrated games. +Cryptocurrency integrations are exclusive to the Reflekt version of the Software, a separate fork of The Mirror. In contrast, The Mirror version of the Software does not support cryptocurrency usage. This structure is designed to give developers the flexibility to choose between traditional web2 approaches and blockchain-integrated games. Direct Cryptocurrency Transactions: If revenue is generated directly through the Software in the form of cryptocurrency (e.g., in-game transactions, purchases, or other forms of monetization), the user agrees to pay a 10% fee on all such transactions. Payments must be made to the Company’s wallet address as specified on its website. Users are responsible for ensuring accurate and timely payments to the listed address. From 7d2a4dcf99bf1ff6b8b118f6433a64cf2820cae0 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Thu, 10 Oct 2024 23:13:19 -0700 Subject: [PATCH 250/353] upgrade deps + pin node 22 --- mirror-2/package.json | 3 + mirror-2/yarn.lock | 319 ++++++++++++++++++------------------------ 2 files changed, 136 insertions(+), 186 deletions(-) diff --git a/mirror-2/package.json b/mirror-2/package.json index fbfeca60..e6ad4943 100644 --- a/mirror-2/package.json +++ b/mirror-2/package.json @@ -69,5 +69,8 @@ "tailwindcss": "3.4.1", "tailwindcss-animate": "^1.0.7", "typescript": "5.3.3" + }, + "engines": { + "node": ">=22.9.0" } } diff --git a/mirror-2/yarn.lock b/mirror-2/yarn.lock index 4dcee30f..50f91669 100644 --- a/mirror-2/yarn.lock +++ b/mirror-2/yarn.lock @@ -302,61 +302,61 @@ "@jridgewell/sourcemap-codec" "^1.4.14" "@next/bundle-analyzer@^14.2.13": - version "14.2.13" - resolved "https://registry.yarnpkg.com/@next/bundle-analyzer/-/bundle-analyzer-14.2.13.tgz#9a3358b00997c03f5f390de6ccea4af42bd3fd88" - integrity sha512-CQOVKmfenD9HsG4AmyXG2ElMvtGKAT9TlS2JLgpL/EORi4WX+QMiQ8Ri6b+A7HRT+AiUGjsYnocIOET59i6Jfw== + version "14.2.15" + resolved "https://registry.yarnpkg.com/@next/bundle-analyzer/-/bundle-analyzer-14.2.15.tgz#4c418f65d4f4c47af6a838576f209fc5b8b34c16" + integrity sha512-W6iyrp/3G7WbIztDcNt+owYX1iv37m9f4RJs0fa/Ayw4EDdjNPX6qKQrC7gBrESHV3FuchED+8R+CNiw1i78eQ== dependencies: webpack-bundle-analyzer "4.10.1" -"@next/env@14.2.13": - version "14.2.13" - resolved "https://registry.yarnpkg.com/@next/env/-/env-14.2.13.tgz#ba341ba9eb70db428fc1c754f49c3c516f7bab47" - integrity sha512-s3lh6K8cbW1h5Nga7NNeXrbe0+2jIIYK9YaA9T7IufDWnZpozdFUp6Hf0d5rNWUKu4fEuSX2rCKlGjCrtylfDw== - -"@next/swc-darwin-arm64@14.2.13": - version "14.2.13" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.13.tgz#76f08d78360c4d27d444df7f35a56f59a48f4808" - integrity sha512-IkAmQEa2Htq+wHACBxOsslt+jMoV3msvxCn0WFSfJSkv/scy+i/EukBKNad36grRxywaXUYJc9mxEGkeIs8Bzg== - -"@next/swc-darwin-x64@14.2.13": - version "14.2.13" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.13.tgz#1d4821d54bb01dacc6a6c32408f8468a4f4af269" - integrity sha512-Dv1RBGs2TTjkwEnFMVL5XIfJEavnLqqwYSD6LXgTPdEy/u6FlSrLBSSfe1pcfqhFEXRAgVL3Wpjibe5wXJzWog== - -"@next/swc-linux-arm64-gnu@14.2.13": - version "14.2.13" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.13.tgz#79d9af8d3408df9990c8911889eca1ca6a308f19" - integrity sha512-yB1tYEFFqo4ZNWkwrJultbsw7NPAAxlPXURXioRl9SdW6aIefOLS+0TEsKrWBtbJ9moTDgU3HRILL6QBQnMevg== - -"@next/swc-linux-arm64-musl@14.2.13": - version "14.2.13" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.13.tgz#b13180645865b120591db2f1e831743ebc02ab36" - integrity sha512-v5jZ/FV/eHGoWhMKYrsAweQ7CWb8xsWGM/8m1mwwZQ/sutJjoFaXchwK4pX8NqwImILEvQmZWyb8pPTcP7htWg== - -"@next/swc-linux-x64-gnu@14.2.13": - version "14.2.13" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.13.tgz#8cb8480dfeee512648e4e08c2095aac0461b876f" - integrity sha512-aVc7m4YL7ViiRv7SOXK3RplXzOEe/qQzRA5R2vpXboHABs3w8vtFslGTz+5tKiQzWUmTmBNVW0UQdhkKRORmGA== - -"@next/swc-linux-x64-musl@14.2.13": - version "14.2.13" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.13.tgz#df5ca922fa1e1ee81b15a06a2d3d3ace0efd2bd7" - integrity sha512-4wWY7/OsSaJOOKvMsu1Teylku7vKyTuocvDLTZQq0TYv9OjiYYWt63PiE1nTuZnqQ4RPvME7Xai+9enoiN0Wrg== - -"@next/swc-win32-arm64-msvc@14.2.13": - version "14.2.13" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.13.tgz#8a7db6e71f526212587975f743b28e4d1cb829d1" - integrity sha512-uP1XkqCqV2NVH9+g2sC7qIw+w2tRbcMiXFEbMihkQ8B1+V6m28sshBwAB0SDmOe0u44ne1vFU66+gx/28RsBVQ== - -"@next/swc-win32-ia32-msvc@14.2.13": - version "14.2.13" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.13.tgz#6aa664f36f2d70c5ae6ffcbbc56784d33f24522d" - integrity sha512-V26ezyjPqQpDBV4lcWIh8B/QICQ4v+M5Bo9ykLN+sqeKKBxJVDpEc6biDVyluTXTC40f5IqCU0ttth7Es2ZuMw== - -"@next/swc-win32-x64-msvc@14.2.13": - version "14.2.13" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.13.tgz#5a920eea82a58affa6146192586716cec6c87fed" - integrity sha512-WwzOEAFBGhlDHE5Z73mNU8CO8mqMNLqaG+AO9ETmzdCQlJhVtWZnOl2+rqgVQS+YHunjOWptdFmNfbpwcUuEsw== +"@next/env@14.2.15": + version "14.2.15" + resolved "https://registry.yarnpkg.com/@next/env/-/env-14.2.15.tgz#06d984e37e670d93ddd6790af1844aeb935f332f" + integrity sha512-S1qaj25Wru2dUpcIZMjxeMVSwkt8BK4dmWHHiBuRstcIyOsMapqT4A4jSB6onvqeygkSSmOkyny9VVx8JIGamQ== + +"@next/swc-darwin-arm64@14.2.15": + version "14.2.15" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.15.tgz#6386d585f39a1c490c60b72b1f76612ba4434347" + integrity sha512-Rvh7KU9hOUBnZ9TJ28n2Oa7dD9cvDBKua9IKx7cfQQ0GoYUwg9ig31O2oMwH3wm+pE3IkAQ67ZobPfEgurPZIA== + +"@next/swc-darwin-x64@14.2.15": + version "14.2.15" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.15.tgz#b7baeedc6a28f7545ad2bc55adbab25f7b45cb89" + integrity sha512-5TGyjFcf8ampZP3e+FyCax5zFVHi+Oe7sZyaKOngsqyaNEpOgkKB3sqmymkZfowy3ufGA/tUgDPPxpQx931lHg== + +"@next/swc-linux-arm64-gnu@14.2.15": + version "14.2.15" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.15.tgz#fa13c59d3222f70fb4cb3544ac750db2c6e34d02" + integrity sha512-3Bwv4oc08ONiQ3FiOLKT72Q+ndEMyLNsc/D3qnLMbtUYTQAmkx9E/JRu0DBpHxNddBmNT5hxz1mYBphJ3mfrrw== + +"@next/swc-linux-arm64-musl@14.2.15": + version "14.2.15" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.15.tgz#30e45b71831d9a6d6d18d7ac7d611a8d646a17f9" + integrity sha512-k5xf/tg1FBv/M4CMd8S+JL3uV9BnnRmoe7F+GWC3DxkTCD9aewFRH1s5rJ1zkzDa+Do4zyN8qD0N8c84Hu96FQ== + +"@next/swc-linux-x64-gnu@14.2.15": + version "14.2.15" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.15.tgz#5065db17fc86f935ad117483f21f812dc1b39254" + integrity sha512-kE6q38hbrRbKEkkVn62reLXhThLRh6/TvgSP56GkFNhU22TbIrQDEMrO7j0IcQHcew2wfykq8lZyHFabz0oBrA== + +"@next/swc-linux-x64-musl@14.2.15": + version "14.2.15" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.15.tgz#3c4a4568d8be7373a820f7576cf33388b5dab47e" + integrity sha512-PZ5YE9ouy/IdO7QVJeIcyLn/Rc4ml9M2G4y3kCM9MNf1YKvFY4heg3pVa/jQbMro+tP6yc4G2o9LjAz1zxD7tQ== + +"@next/swc-win32-arm64-msvc@14.2.15": + version "14.2.15" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.15.tgz#fb812cc4ca0042868e32a6a021da91943bb08b98" + integrity sha512-2raR16703kBvYEQD9HNLyb0/394yfqzmIeyp2nDzcPV4yPjqNUG3ohX6jX00WryXz6s1FXpVhsCo3i+g4RUX+g== + +"@next/swc-win32-ia32-msvc@14.2.15": + version "14.2.15" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.15.tgz#ec26e6169354f8ced240c1427be7fd485c5df898" + integrity sha512-fyTE8cklgkyR1p03kJa5zXEaZ9El+kDNM5A+66+8evQS5e/6v0Gk28LqA0Jet8gKSOyP+OTm/tJHzMlGdQerdQ== + +"@next/swc-win32-x64-msvc@14.2.15": + version "14.2.15" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.15.tgz#18d68697002b282006771f8d92d79ade9efd35c4" + integrity sha512-SzqGbsLsP9OwKNUG9nekShTwhj6JSB9ZLMWQ8g1gG6hdE5gQLncbnbymrwy2yVmH9nikSLYRYxYMFu78Ggp7/g== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -414,14 +414,14 @@ "@radix-ui/react-primitive" "2.0.0" "@radix-ui/react-checkbox@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-checkbox/-/react-checkbox-1.1.1.tgz#a559c4303957d797acee99914480b755aa1f27d6" - integrity sha512-0i/EKJ222Afa1FE0C6pNJxDq1itzcl3HChE9DwskA4th4KRse8ojx8a1nVcOjwJdbpDLcz7uol77yYnQNMHdKw== + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-checkbox/-/react-checkbox-1.1.2.tgz#6465b800420923ecc39cbeaa8f357b5f09dbfd52" + integrity sha512-/i0fl686zaJbDQLNKrkCbMyDm6FQMt4jg323k7HuqitoANm9sE23Ql8yOK3Wusk34HSLKDChhMux05FnP6KUkw== dependencies: "@radix-ui/primitive" "1.1.0" "@radix-ui/react-compose-refs" "1.1.0" - "@radix-ui/react-context" "1.1.0" - "@radix-ui/react-presence" "1.1.0" + "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-presence" "1.1.1" "@radix-ui/react-primitive" "2.0.0" "@radix-ui/react-use-controllable-state" "1.1.0" "@radix-ui/react-use-previous" "1.1.0" @@ -536,17 +536,6 @@ "@radix-ui/react-use-callback-ref" "1.0.1" "@radix-ui/react-use-escape-keydown" "1.0.3" -"@radix-ui/react-dismissable-layer@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.0.tgz#2cd0a49a732372513733754e6032d3fb7988834e" - integrity sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig== - dependencies: - "@radix-ui/primitive" "1.1.0" - "@radix-ui/react-compose-refs" "1.1.0" - "@radix-ui/react-primitive" "2.0.0" - "@radix-ui/react-use-callback-ref" "1.1.0" - "@radix-ui/react-use-escape-keydown" "1.1.0" - "@radix-ui/react-dismissable-layer@1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.1.tgz#cbdcb739c5403382bdde5f9243042ba643883396" @@ -559,15 +548,15 @@ "@radix-ui/react-use-escape-keydown" "1.1.0" "@radix-ui/react-dropdown-menu@^2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.1.tgz#3dc578488688250dbbe109d9ff2ca28a9bca27ec" - integrity sha512-y8E+x9fBq9qvteD2Zwa4397pUVhYsh9iq44b5RD5qu1GMJWBCBuVg1hMyItbc6+zH00TxGRqd9Iot4wzf3OoBQ== + version "2.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.2.tgz#acc49577130e3c875ef0133bd1e271ea3392d924" + integrity sha512-GVZMR+eqK8/Kes0a36Qrv+i20bAPXSn8rCBTHx30w+3ECnR5o3xixAlqcVaYvLeyKUsm0aqyhWfmUcqufM8nYA== dependencies: "@radix-ui/primitive" "1.1.0" "@radix-ui/react-compose-refs" "1.1.0" - "@radix-ui/react-context" "1.1.0" + "@radix-ui/react-context" "1.1.1" "@radix-ui/react-id" "1.1.0" - "@radix-ui/react-menu" "2.1.1" + "@radix-ui/react-menu" "2.1.2" "@radix-ui/react-primitive" "2.0.0" "@radix-ui/react-use-controllable-state" "1.1.0" @@ -578,11 +567,6 @@ dependencies: "@babel/runtime" "^7.13.10" -"@radix-ui/react-focus-guards@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.0.tgz#8e9abb472a9a394f59a1b45f3dd26cfe3fc6da13" - integrity sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw== - "@radix-ui/react-focus-guards@1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz#8635edd346304f8b42cae86b05912b61aef27afe" @@ -629,30 +613,6 @@ dependencies: "@radix-ui/react-primitive" "2.0.0" -"@radix-ui/react-menu@2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-menu/-/react-menu-2.1.1.tgz#bd623ace0e1ae1ac78023a505fec0541d59fb346" - integrity sha512-oa3mXRRVjHi6DZu/ghuzdylyjaMXLymx83irM7hTxutQbD+7IhPKdMdRHD26Rm+kHRrWcrUkkRPv5pd47a2xFQ== - dependencies: - "@radix-ui/primitive" "1.1.0" - "@radix-ui/react-collection" "1.1.0" - "@radix-ui/react-compose-refs" "1.1.0" - "@radix-ui/react-context" "1.1.0" - "@radix-ui/react-direction" "1.1.0" - "@radix-ui/react-dismissable-layer" "1.1.0" - "@radix-ui/react-focus-guards" "1.1.0" - "@radix-ui/react-focus-scope" "1.1.0" - "@radix-ui/react-id" "1.1.0" - "@radix-ui/react-popper" "1.2.0" - "@radix-ui/react-portal" "1.1.1" - "@radix-ui/react-presence" "1.1.0" - "@radix-ui/react-primitive" "2.0.0" - "@radix-ui/react-roving-focus" "1.1.0" - "@radix-ui/react-slot" "1.1.0" - "@radix-ui/react-use-callback-ref" "1.1.0" - aria-hidden "^1.1.1" - react-remove-scroll "2.5.7" - "@radix-ui/react-menu@2.1.2": version "2.1.2" resolved "https://registry.yarnpkg.com/@radix-ui/react-menu/-/react-menu-2.1.2.tgz#91f6815845a4298dde775563ed2d80b7ad667899" @@ -738,14 +698,6 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-primitive" "1.0.3" -"@radix-ui/react-portal@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.1.1.tgz#1957f1eb2e1aedfb4a5475bd6867d67b50b1d15f" - integrity sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g== - dependencies: - "@radix-ui/react-primitive" "2.0.0" - "@radix-ui/react-use-layout-effect" "1.1.0" - "@radix-ui/react-portal@1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.1.2.tgz#51eb46dae7505074b306ebcb985bf65cc547d74e" @@ -763,14 +715,6 @@ "@radix-ui/react-compose-refs" "1.0.1" "@radix-ui/react-use-layout-effect" "1.0.1" -"@radix-ui/react-presence@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.1.0.tgz#227d84d20ca6bfe7da97104b1a8b48a833bfb478" - integrity sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ== - dependencies: - "@radix-ui/react-compose-refs" "1.1.0" - "@radix-ui/react-use-layout-effect" "1.1.0" - "@radix-ui/react-presence@1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.1.1.tgz#98aba423dba5e0c687a782c0669dcd99de17f9b1" @@ -896,18 +840,18 @@ "@radix-ui/react-use-controllable-state" "1.1.0" "@radix-ui/react-tooltip@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@radix-ui/react-tooltip/-/react-tooltip-1.1.2.tgz#c42db2ffd7dcc6ff3d65407c8cb70490288f518d" - integrity sha512-9XRsLwe6Yb9B/tlnYCPVUd/TFS4J7HuOZW345DCeC6vKIxQGMZdx21RK4VoZauPD5frgkXTYVS5y90L+3YBn4w== + version "1.1.3" + resolved "https://registry.yarnpkg.com/@radix-ui/react-tooltip/-/react-tooltip-1.1.3.tgz#4250b14723f2d8477e7a3d0526c169f91d1f2f74" + integrity sha512-Z4w1FIS0BqVFI2c1jZvb/uDVJijJjJ2ZMuPV81oVgTZ7g3BZxobplnMVvXtFWgtozdvYJ+MFWtwkM5S2HnAong== dependencies: "@radix-ui/primitive" "1.1.0" "@radix-ui/react-compose-refs" "1.1.0" - "@radix-ui/react-context" "1.1.0" - "@radix-ui/react-dismissable-layer" "1.1.0" + "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-dismissable-layer" "1.1.1" "@radix-ui/react-id" "1.1.0" "@radix-ui/react-popper" "1.2.0" - "@radix-ui/react-portal" "1.1.1" - "@radix-ui/react-presence" "1.1.0" + "@radix-ui/react-portal" "1.1.2" + "@radix-ui/react-presence" "1.1.1" "@radix-ui/react-primitive" "2.0.0" "@radix-ui/react-slot" "1.1.0" "@radix-ui/react-use-controllable-state" "1.1.0" @@ -1093,9 +1037,9 @@ "@react-hook/latest" "^1.0.2" "@reduxjs/toolkit@^2.2.7": - version "2.2.7" - resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-2.2.7.tgz#199e3d10ccb39267cb5aee92c0262fd9da7fdfb2" - integrity sha512-faI3cZbSdFb8yv9dhDTmGwclW0vk0z5o1cia+kf7gCbaCwHI5e+7tP57mJUv22pNcNbeA62GSrPpfrUfdXcQ6g== + version "2.2.8" + resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-2.2.8.tgz#69e6473dd5a395860d387abdd53fe5a2add378c8" + integrity sha512-eK/ieXftPRQfaBSmzsamXEyDwkntMTY0e9SG5ETsEOv5JIPKhu3mj992t6B8FJjlnSrZBAAqdT8oMkPe4j+P9g== dependencies: immer "^10.0.3" redux "^5.0.1" @@ -1185,9 +1129,9 @@ integrity sha512-nl09VhutdjINdWyXxHWN/w9zlNCfr60JUqJbd24YXUuCwgeL0TpFSdElCwb6cxfB6ybE19Gjj4g0jsgkXxKv1Q== "@types/node@*": - version "22.7.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.4.tgz#e35d6f48dca3255ce44256ddc05dee1c23353fcc" - integrity sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg== + version "22.7.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.5.tgz#cfde981727a7ab3611a481510b473ae54442b92b" + integrity sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ== dependencies: undici-types "~6.19.2" @@ -1223,9 +1167,9 @@ "@types/react" "*" "@types/react@*": - version "18.3.10" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.10.tgz#6edc26dc22ff8c9c226d3c7bf8357b013c842219" - integrity sha512-02sAAlBnP39JgXwkAq3PeU9DVaaGpZyF3MGcC0MKgQVkZor5IiiDAipVaxQHtDJAmO4GIy/rVBy/LzVj76Cyqg== + version "18.3.11" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.11.tgz#9d530601ff843ee0d7030d4227ea4360236bd537" + integrity sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ== dependencies: "@types/prop-types" "*" csstype "^3.0.2" @@ -1321,9 +1265,9 @@ ansi-styles@^6.1.0: integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== antd@^5.21.2: - version "5.21.2" - resolved "https://registry.yarnpkg.com/antd/-/antd-5.21.2.tgz#6933c508d885d4be8f38b8aec874d0bd96b66600" - integrity sha512-ZcyykH58xRkNp5oxFqn255VxrjLj6qG6czHJQPoDHqRdR9roSfWQGTiqYVb4Omg77WZHNgu17QrWzvL4Hp6/FA== + version "5.21.3" + resolved "https://registry.yarnpkg.com/antd/-/antd-5.21.3.tgz#5f451960605d07ea593a1e996e3bf120e525a7f8" + integrity sha512-Yby3gU6jfuvhNFRPsrHB4Yc/G3LHLNHHy0kShwNmmZf1QTCiW5TmqP3DT5m/NHbJsTgEwJpwo3AaOWo+KQyEjw== dependencies: "@ant-design/colors" "^7.1.0" "@ant-design/cssinjs" "^1.21.1" @@ -1361,7 +1305,7 @@ antd@^5.21.2: rc-resize-observer "^1.4.0" rc-segmented "~2.5.0" rc-select "~14.15.2" - rc-slider "~11.1.6" + rc-slider "~11.1.7" rc-steps "~6.0.1" rc-switch "~4.1.0" rc-table "~7.47.5" @@ -1406,9 +1350,9 @@ array-tree-filter@^2.1.0: integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw== attr-accept@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.2.tgz#646613809660110749e92f2c10833b70968d929b" - integrity sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg== + version "2.2.4" + resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.4.tgz#e28749d5975732586aea03c8912e2d0f1d1d77e7" + integrity sha512-2pA6xFIbdTUDCAwjN8nQwI+842VwzbDUXO2IYlpPXQIORgKnavorcr4Ce3rwh+zsNg9zK7QPsdvDj3Lum4WX4w== autoprefixer@10.4.17: version "10.4.17" @@ -1474,9 +1418,9 @@ camelcase-css@^2.0.1: integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== caniuse-lite@^1.0.30001578, caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001663: - version "1.0.30001664" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001664.tgz#d588d75c9682d3301956b05a3749652a80677df4" - integrity sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g== + version "1.0.30001668" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001668.tgz#98e214455329f54bf7a4d70b49c9794f0fbedbed" + integrity sha512-nWLrdxqCdblixUO+27JtGJJE/txpJlyUy5YN1u53wLZkP0emYCo5zgS6QYft7VUYR42LGgi/S5hdLZTrnyIddw== chokidar@^3.5.3: version "3.6.0" @@ -1630,9 +1574,9 @@ eastasianwidth@^0.2.0: integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== electron-to-chromium@^1.5.28: - version "1.5.29" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.29.tgz#aa592a3caa95d07cc26a66563accf99fa573a1ee" - integrity sha512-PF8n2AlIhCKXQ+gTpiJi0VhcHDb69kYX4MtCiivctc2QD3XuNZ/XIOlbGzt7WAjjEev0TtaH6Cu3arZExm5DOw== + version "1.5.36" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.36.tgz#ec41047f0e1446ec5dce78ed5970116533139b88" + integrity sha512-HYTX8tKge/VNp6FGO+f/uVDmUkq+cEfcxYhKf15Akc4M5yxt5YmorwlAitKWjWhWQnKcDRBAQKXkhqqXMqcrjw== emoji-regex@^8.0.0: version "8.0.0" @@ -1980,11 +1924,11 @@ next-themes@^0.3.0: integrity sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w== next@latest: - version "14.2.13" - resolved "https://registry.yarnpkg.com/next/-/next-14.2.13.tgz#32da2ee0afbe729e2d4a467c3570def90e1c974d" - integrity sha512-BseY9YNw8QJSwLYD7hlZzl6QVDoSFHL/URN5K64kVEVpCsSOWeyjbIGK+dZUaRViHTaMQX8aqmnn0PHBbGZezg== + version "14.2.15" + resolved "https://registry.yarnpkg.com/next/-/next-14.2.15.tgz#348e5603e22649775d19c785c09a89c9acb5189a" + integrity sha512-h9ctmOokpoDphRvMGnwOJAedT6zKhwqyZML9mDtspgf4Rh3Pn7UTYKqePNoDvhsWBAO5GoPNYshnAUGIazVGmw== dependencies: - "@next/env" "14.2.13" + "@next/env" "14.2.15" "@swc/helpers" "0.5.5" busboy "1.6.0" caniuse-lite "^1.0.30001579" @@ -1992,15 +1936,15 @@ next@latest: postcss "8.4.31" styled-jsx "5.1.1" optionalDependencies: - "@next/swc-darwin-arm64" "14.2.13" - "@next/swc-darwin-x64" "14.2.13" - "@next/swc-linux-arm64-gnu" "14.2.13" - "@next/swc-linux-arm64-musl" "14.2.13" - "@next/swc-linux-x64-gnu" "14.2.13" - "@next/swc-linux-x64-musl" "14.2.13" - "@next/swc-win32-arm64-msvc" "14.2.13" - "@next/swc-win32-ia32-msvc" "14.2.13" - "@next/swc-win32-x64-msvc" "14.2.13" + "@next/swc-darwin-arm64" "14.2.15" + "@next/swc-darwin-x64" "14.2.15" + "@next/swc-linux-arm64-gnu" "14.2.15" + "@next/swc-linux-arm64-musl" "14.2.15" + "@next/swc-linux-x64-gnu" "14.2.15" + "@next/swc-linux-x64-musl" "14.2.15" + "@next/swc-win32-arm64-msvc" "14.2.15" + "@next/swc-win32-ia32-msvc" "14.2.15" + "@next/swc-win32-x64-msvc" "14.2.15" node-releases@^2.0.18: version "2.0.18" @@ -2076,9 +2020,9 @@ pirates@^4.0.1: integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== playcanvas@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/playcanvas/-/playcanvas-2.0.0.tgz#ef298a2609c0e1c551709ed4e00d64c13932bd2b" - integrity sha512-hEbIgL3ZkB8GyawN3gHpxYl+ZDO+lE3vEFs2TKe8jnT6b9CcF6yzITLorTkRbkd7dyMz1J0+633qH4HeD7EZpQ== + version "2.1.0" + resolved "https://registry.yarnpkg.com/playcanvas/-/playcanvas-2.1.0.tgz#4a1a8cb25ba3685b4d9ee58d2330b124b267e479" + integrity sha512-o8Oat/+edEffVG09oUQnQlEVKYu47S15yDLz9/bkbE5ur9q5JsmPbOiCn7ds7kud60opvPb7CkQnKuS+8tlN+w== dependencies: "@types/webxr" "^0.5.16" "@webgpu/types" "^0.1.40" @@ -2160,9 +2104,9 @@ prettier@^3.3.3: integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== primereact@^10.8.3: - version "10.8.3" - resolved "https://registry.yarnpkg.com/primereact/-/primereact-10.8.3.tgz#124696b4fd6de45f1aa11a249b01e6c74ad0bae2" - integrity sha512-LYa7DL1TDmWWrPCeh3CMsx89LXgcf4+rYhJ6YiA7z164WsdzJK388Bp1Qdv5cfpyL/Nm0eIWxIApxwWBv8kwuA== + version "10.8.4" + resolved "https://registry.yarnpkg.com/primereact/-/primereact-10.8.4.tgz#c90938cd0575a2a21762bff4c65a5e93f24eafb3" + integrity sha512-jwkSzq6pOHayzEh+9dgk2M71gEZtoQakwPKVo3FUJO3eEX3SoAOchON+Xm1tGCNqtd66ca8RgOWQcpv3AQoMvg== dependencies: "@types/react-transition-group" "^4.4.1" react-transition-group "^4.4.1" @@ -2411,7 +2355,7 @@ rc-select@~14.15.0, rc-select@~14.15.2: rc-util "^5.16.1" rc-virtual-list "^3.5.2" -rc-slider@~11.1.6: +rc-slider@~11.1.7: version "11.1.7" resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-11.1.7.tgz#3de333b1ec84d53a7bda2f816bb4779423628f09" integrity sha512-ytYbZei81TX7otdC0QvoYD72XSlxvTihNth5OeZ6PMXyEDq/vHdWFulQmfDGyXK1NwKwSlKgpvINOa88uT5g2A== @@ -2577,7 +2521,7 @@ react-redux@^9.1.2: "@types/use-sync-external-store" "^0.0.3" use-sync-external-store "^1.0.0" -react-remove-scroll-bar@^2.3.3, react-remove-scroll-bar@^2.3.4, react-remove-scroll-bar@^2.3.6: +react-remove-scroll-bar@^2.3.3, react-remove-scroll-bar@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz#3e585e9d163be84a010180b18721e851ac81a29c" integrity sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g== @@ -2596,17 +2540,6 @@ react-remove-scroll@2.5.5: use-callback-ref "^1.3.0" use-sidecar "^1.1.2" -react-remove-scroll@2.5.7: - version "2.5.7" - resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz#15a1fd038e8497f65a695bf26a4a57970cac1ccb" - integrity sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA== - dependencies: - react-remove-scroll-bar "^2.3.4" - react-style-singleton "^2.2.1" - tslib "^2.1.0" - use-callback-ref "^1.3.0" - use-sidecar "^1.1.2" - react-remove-scroll@2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz#fb03a0845d7768a4f1519a99fdb84983b793dc07" @@ -2786,8 +2719,16 @@ string-convert@^0.2.0: resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" integrity sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A== -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0: - name string-width-cjs +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -2805,8 +2746,14 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: - name strip-ansi-cjs +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -2851,9 +2798,9 @@ supports-preserve-symlinks-flag@^1.0.0: integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== tailwind-merge@^2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-2.5.2.tgz#000f05a703058f9f9f3829c644235f81d4c08a1f" - integrity sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg== + version "2.5.3" + resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-2.5.3.tgz#579546e14ddda24462e0303acd8798c50f5511bb" + integrity sha512-d9ZolCAIzom1nf/5p4LdD5zvjmgSxY0BGgdSvmXIoMYAiPdAW/dSpP7joCDYFY7r/HkEa2qmPtkgsu0xjQeQtw== tailwindcss-animate@^1.0.7: version "1.0.7" From dea03a619ab1e6b6747243605319f6d26eb7deef Mon Sep 17 00:00:00 2001 From: Kluskey Date: Thu, 10 Oct 2024 23:19:41 -0700 Subject: [PATCH 251/353] fix window undefined --- mirror-2/hooks/auth.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mirror-2/hooks/auth.tsx b/mirror-2/hooks/auth.tsx index 67ae6aa8..acc5bc38 100644 --- a/mirror-2/hooks/auth.tsx +++ b/mirror-2/hooks/auth.tsx @@ -43,7 +43,9 @@ export function useSetupAuthEvents() { function handleLogout() { dispatch(clearLocalUserState()) - router.push("/login") + if (typeof window !== 'undefined') { + router.push("/login") + } } // console.log("auth", event, session) if (event === 'INITIAL_SESSION') { From 8611618b3bc2cf414f60e0933e0f615a0c031bc8 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Thu, 10 Oct 2024 23:39:17 -0700 Subject: [PATCH 252/353] fix window is not defined error, remove ga --- mirror-2/package.json | 3 +- mirror-2/state/local.tsx | 1 + mirror-2/utils/analytics/analytics.tsx | 60 ++++++++++---------------- mirror-2/yarn.lock | 5 --- 4 files changed, 24 insertions(+), 45 deletions(-) diff --git a/mirror-2/package.json b/mirror-2/package.json index e6ad4943..528eb55a 100644 --- a/mirror-2/package.json +++ b/mirror-2/package.json @@ -2,7 +2,7 @@ "version": "0.0.1", "private": true, "scripts": { - "dev": "next dev & supabase start", + "dev": "supabase start & next dev", "types": "npx supabase gen types --lang=typescript --local > ./utils/database.types.ts", "reset": "supabase db reset && yarn types", "build": "next build", @@ -38,7 +38,6 @@ "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "cmdk": "1.0.0", - "gameanalytics": "^4.4.7", "geist": "^1.2.1", "lucide-react": "^0.446.0", "next": "latest", diff --git a/mirror-2/state/local.tsx b/mirror-2/state/local.tsx index 734fd45a..19e037a3 100644 --- a/mirror-2/state/local.tsx +++ b/mirror-2/state/local.tsx @@ -1,3 +1,4 @@ +"use client" import { DatabaseEntity } from '@/state/entities'; import { DatabaseScene } from '@/state/scenes'; import { RootState } from '@/state/store'; diff --git a/mirror-2/utils/analytics/analytics.tsx b/mirror-2/utils/analytics/analytics.tsx index 9e223c59..5810c41e 100644 --- a/mirror-2/utils/analytics/analytics.tsx +++ b/mirror-2/utils/analytics/analytics.tsx @@ -1,26 +1,17 @@ "use client" import packageJson from '../../package.json'; -import { GameAnalytics } from 'gameanalytics' import { appNameKebabCase } from '@/lib/theme-service'; import { ampli } from '@/src/ampli'; import { sessionReplayPlugin } from '@amplitude/plugin-session-replay-browser'; +import { useEffect } from 'react'; -let analyticsInitialized = false - +if (typeof window !== 'undefined') { + window['analyticsInitialized'] = false +} export function sendAnalyticsEvent(event: any) { // don't track if we're not client-side since NextJS renders the HTML on server - if (typeof window !== 'undefined' && analyticsInitialized) { - const app = appNameKebabCase(); - - // Join the non-empty parts of the event tuple with a colon separator - const eventDetails = event.filter(Boolean).join(':'); - - // Send the event to GameAnalytics with the appended event details - const eventName = `${app}:${eventDetails}` - console.log('Analytics: Event: ' + eventName) - GameAnalytics.addDesignEvent(eventName); - + if (typeof window !== 'undefined' && window['analyticsInitialized']) { ampli.track({ event_type: event, app_version: packageJson.version @@ -29,36 +20,29 @@ export function sendAnalyticsEvent(event: any) { } } - export function setAnalyticsUserId(userId: string) { - if (typeof window !== 'undefined' && !analyticsInitialized) { + if (typeof window !== 'undefined' && !window['analyticsInitialized']) { ampli.client.setUserId(userId) } } -const analytics = function () { - // Will liklely remote gameanalytics but trying it for a bit - if (typeof window !== 'undefined' && !analyticsInitialized) { - if (!process.env.NEXT_PUBLIC_AMPLITUDE_PUBLIC_KEY) { - throw new Error("Missing analytics key") +export default function AnalyticsInitializer() { + useEffect(() => { + // Ensure we are in the browser and analytics has not been initialized + if (typeof window !== 'undefined' && !window['analyticsInitialized']) { + if (!process.env.NEXT_PUBLIC_AMPLITUDE_PUBLIC_KEY) { + throw new Error("Missing analytics key"); + } + + ampli.load({ client: { apiKey: process.env.NEXT_PUBLIC_AMPLITUDE_PUBLIC_KEY } }); + ampli.client.add(sessionReplayPlugin()); + + console.log('Analytics: Initializing'); + + window['analyticsInitialized'] = true; } - ampli.load({ client: { apiKey: process.env.NEXT_PUBLIC_AMPLITUDE_PUBLIC_KEY } }) - ampli.client.add(sessionReplayPlugin()) - // console.log('Analytics: Initing & starting session') - console.log('Analytics: Initing') - // GameAnalytics("configureBuild", `web ${packageJson.version}`); - GameAnalytics.configureBuild(`web ${packageJson.version}`) - // set custom dimension 1, whether The Mirror or Reflekt - // GameAnalytics("setCustomDimension01", appNameKebabCase); - GameAnalytics.configureAvailableCustomDimensions01(appNameKebabCase); - // GameAnalytics("initialize", process.env.NEXT_PUBLIC_GA_KEY_GAME_PUBLIC, process.env.NEXT_PUBLIC_GA_KEY_SECRET); - // GameAnalytics.initialize(process.env.NEXT_PUBLIC_GA_KEY_GAME_PUBLIC, process.env.NEXT_PUBLIC_GA_KEY_SECRET); - GameAnalytics.initialize('16f053bf9aa8bdb4339f013d3af5bf58', '27ba60bcc570fb3d5eb63ec081ddf09647ccb456'); - GameAnalytics.startSession() - analyticsInitialized = true - } + }, []); + return null; // No UI component to render } - -analytics() diff --git a/mirror-2/yarn.lock b/mirror-2/yarn.lock index 50f91669..19c5b50c 100644 --- a/mirror-2/yarn.lock +++ b/mirror-2/yarn.lock @@ -1658,11 +1658,6 @@ function-bind@^1.1.2: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -gameanalytics@^4.4.7: - version "4.4.7" - resolved "https://registry.yarnpkg.com/gameanalytics/-/gameanalytics-4.4.7.tgz#f619861acb499a61beea4c65bc650db1246ebe5d" - integrity sha512-yXC6+j/OtkjRtrA1J2E3kVUDR8bdUm25QUzee1JPSTMOajbFV5zMg4+3kFJxhTvDVpj6qkO9QvHBrQCMNWLPVQ== - geist@^1.2.1: version "1.3.1" resolved "https://registry.yarnpkg.com/geist/-/geist-1.3.1.tgz#bbd95db23b2a00baf6020e3b1b63a5752f4787d2" From 94dba55dd9e1415f0a225900362f1e2f1d50eed0 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Thu, 10 Oct 2024 23:46:10 -0700 Subject: [PATCH 253/353] clean --- mirror-2/utils/analytics/analytics.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/mirror-2/utils/analytics/analytics.tsx b/mirror-2/utils/analytics/analytics.tsx index 5810c41e..4b13559f 100644 --- a/mirror-2/utils/analytics/analytics.tsx +++ b/mirror-2/utils/analytics/analytics.tsx @@ -1,6 +1,5 @@ "use client" import packageJson from '../../package.json'; -import { appNameKebabCase } from '@/lib/theme-service'; import { ampli } from '@/src/ampli'; import { sessionReplayPlugin } from '@amplitude/plugin-session-replay-browser'; import { useEffect } from 'react'; From 94ac34026523f40778aaa2523806633fbdb1843f Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 11 Oct 2024 00:12:31 -0700 Subject: [PATCH 254/353] fix canvas fill mode --- mirror-2/app/space/[spaceId]/build/space-viewport.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mirror-2/app/space/[spaceId]/build/space-viewport.tsx b/mirror-2/app/space/[spaceId]/build/space-viewport.tsx index 90897479..0c90bc4a 100644 --- a/mirror-2/app/space/[spaceId]/build/space-viewport.tsx +++ b/mirror-2/app/space/[spaceId]/build/space-viewport.tsx @@ -29,7 +29,7 @@ export default function SpaceViewport() { app.resizeCanvas(canvas.width, canvas.height); // Resize PlayCanvas application } }; - + app.setCanvasFillMode('NONE') // Initial resize based on the canvas's parent container size resizeCanvas(); From 895dc79b3f240b3798d2f1e5cde48e9de2e93465 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 11 Oct 2024 00:17:00 -0700 Subject: [PATCH 255/353] fix entity font --- mirror-2/components/entity-tree/tree-item.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mirror-2/components/entity-tree/tree-item.tsx b/mirror-2/components/entity-tree/tree-item.tsx index 26275967..f0b51ec8 100644 --- a/mirror-2/components/entity-tree/tree-item.tsx +++ b/mirror-2/components/entity-tree/tree-item.tsx @@ -12,7 +12,7 @@ export default function EntityTreeItem({ nodeData }) { id={nodeData.id} generalEntity={nodeData} defaultValue={nodeData.name} - className={'p-0 m-0 text-base font-light font-sans tracking-wide bg-transparent cursor-pointer duration-0'} + className={'p-0 m-0 bg-transparent cursor-pointer duration-0'} fieldName="name" formSchema={z.object({ name: z.string().min(1, { message: "Entity name must be at least 1 character long" }), @@ -23,7 +23,7 @@ export default function EntityTreeItem({ nodeData }) { )} From acbe2afab3984433e7ffb35dab620dab7d8a79cf Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 11 Oct 2024 00:19:54 -0700 Subject: [PATCH 256/353] polish entity tree --- mirror-2/components/entity-tree/entity-tree.tsx | 4 ++-- mirror-2/components/entity-tree/tree-item.tsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mirror-2/components/entity-tree/entity-tree.tsx b/mirror-2/components/entity-tree/entity-tree.tsx index 0c2f888d..d3d2175a 100644 --- a/mirror-2/components/entity-tree/entity-tree.tsx +++ b/mirror-2/components/entity-tree/entity-tree.tsx @@ -274,9 +274,9 @@ const EntityTree: React.FC = () => { motionDurationMid: '0.05s', colorText: '#FFFFFF', colorBgContainer: 'transparent', - nodeSelectedBg: 'transparent', + nodeSelectedBg: '#256BFB', directoryNodeSelectedBg: 'green', - nodeHoverBg: 'rgba(255, 255, 255, 0.05)' + nodeHoverBg: '#ffffff0d' }, }, }} diff --git a/mirror-2/components/entity-tree/tree-item.tsx b/mirror-2/components/entity-tree/tree-item.tsx index f0b51ec8..4d9f4da4 100644 --- a/mirror-2/components/entity-tree/tree-item.tsx +++ b/mirror-2/components/entity-tree/tree-item.tsx @@ -12,7 +12,7 @@ export default function EntityTreeItem({ nodeData }) { id={nodeData.id} generalEntity={nodeData} defaultValue={nodeData.name} - className={'p-0 m-0 bg-transparent cursor-pointer duration-0'} + className={'p-0 m-0 bg-transparent cursor-pointer duration-0'} fieldName="name" formSchema={z.object({ name: z.string().min(1, { message: "Entity name must be at least 1 character long" }), @@ -23,7 +23,7 @@ export default function EntityTreeItem({ nodeData }) { )} From c99372d01ded5c3404f9213748dea78fe34a70c8 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 11 Oct 2024 00:25:49 -0700 Subject: [PATCH 257/353] entity polish --- mirror-2/components/entity-tree/entity-tree.tsx | 2 -- mirror-2/components/entity-tree/tree-item.tsx | 2 +- mirror-2/state/entities.tsx | 4 +++- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mirror-2/components/entity-tree/entity-tree.tsx b/mirror-2/components/entity-tree/entity-tree.tsx index d3d2175a..09994a6d 100644 --- a/mirror-2/components/entity-tree/entity-tree.tsx +++ b/mirror-2/components/entity-tree/entity-tree.tsx @@ -275,7 +275,6 @@ const EntityTree: React.FC = () => { colorText: '#FFFFFF', colorBgContainer: 'transparent', nodeSelectedBg: '#256BFB', - directoryNodeSelectedBg: 'green', nodeHoverBg: '#ffffff0d' }, }, @@ -300,7 +299,6 @@ const EntityTree: React.FC = () => { if (!entity) { return } - console.log('Selected Entity:', entity); dispatch(setCurrentEntity(entity)) }} titleRender={(nodeData: TreeDataNodeWithEntityData) => ( diff --git a/mirror-2/components/entity-tree/tree-item.tsx b/mirror-2/components/entity-tree/tree-item.tsx index 4d9f4da4..45320205 100644 --- a/mirror-2/components/entity-tree/tree-item.tsx +++ b/mirror-2/components/entity-tree/tree-item.tsx @@ -23,7 +23,7 @@ export default function EntityTreeItem({ nodeData }) { )} diff --git a/mirror-2/state/entities.tsx b/mirror-2/state/entities.tsx index 9c489c68..a15114f5 100644 --- a/mirror-2/state/entities.tsx +++ b/mirror-2/state/entities.tsx @@ -151,7 +151,9 @@ export const entitiesApi = createApi({ return { error: rootEntityError.message }; } - parent_id = rootEntity.id; + if (rootEntity.id !== id) { // ensure that it's not setting a reference to itself; this can occur when editing the root entity name + parent_id = rootEntity.id; + } } // case: parent_id exists but no order_under_parent From 98d8bd70e4803d8435d1284c9fcc3f4719f68688 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 11 Oct 2024 00:34:55 -0700 Subject: [PATCH 258/353] fix entity selection --- .../components/entity-tree/entity-tree.tsx | 31 +++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/mirror-2/components/entity-tree/entity-tree.tsx b/mirror-2/components/entity-tree/entity-tree.tsx index 09994a6d..318f17ad 100644 --- a/mirror-2/components/entity-tree/entity-tree.tsx +++ b/mirror-2/components/entity-tree/entity-tree.tsx @@ -15,6 +15,30 @@ import EntityTreeItem from '@/components/entity-tree/tree-item'; type TreeDataNodeWithEntityData = TreeDataNode & { name: string, id: string, order_under_parent: number } +const findEntity = (treeData, entityId) => { + // Base case: if treeData is empty or null, return null + if (!treeData || treeData.length === 0) return null; + + // Loop through each item in the current level + for (const item of treeData) { + if (item.key === entityId) { + // If the current item's key matches entityId, return the item + return item; + } + + // If this item has children, search within its children recursively + if (item.children && item.children.length > 0) { + const found = findEntity(item.children, entityId); + if (found) { + return found; + } + } + } + + // Return null if not found at this level or in any children + return null; +}; + function transformDbEntityStructureToTree(entities): TreeDataNodeWithEntityData[] { const entityMap: any = {}; // Map to hold entities by their ID for quick lookup @@ -23,10 +47,11 @@ function transformDbEntityStructureToTree(entities): TreeDataNodeWithEntityData[ entityMap[entity.id] = { ...entity, children: [], key: entity.id }; }); - //disable the root node + // set root node not draggable entities.find(entity => { if (entity.parent_id === null) { - entityMap[entity.id].disabled = true; + entityMap[entity.id].draggable = false; // we don't want to set to "disabled" because then it can't be selected + entityMap[entity.id].selectable = true; } }); @@ -295,7 +320,7 @@ const EntityTree: React.FC = () => { treeData={treeData} onSelect={(selectedKeys) => { const entityId = selectedKeys[0]; - const entity = treeData[0].children.find(item => item.key === entityId); + const entity = findEntity(treeData, entityId) if (!entity) { return } From 8a1c3b8bb1008f939a470f45e9c2402cd0157200 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 11 Oct 2024 00:38:08 -0700 Subject: [PATCH 259/353] fix switcher css --- mirror-2/app/globals.css | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mirror-2/app/globals.css b/mirror-2/app/globals.css index 913dc9a9..94158222 100644 --- a/mirror-2/app/globals.css +++ b/mirror-2/app/globals.css @@ -85,9 +85,10 @@ canvas:focus { outline: none; } +/* leaving here bc will probably need to tweak */ .ant-tree-switcher_close { - margin-top: 0.5rem !important; + /* margin-top: 0.5rem !important; */ } .ant-tree-switcher_open { - margin-top: 0.5rem !important; + /* margin-top: 0.5rem !important; */ } From 76d3aabdcc0ca5c7007c47126ac9aa3d6e093944 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 11 Oct 2024 00:41:31 -0700 Subject: [PATCH 260/353] polish --- mirror-2/components/entity-tree/tree-item.tsx | 2 +- mirror-2/components/ui/input.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mirror-2/components/entity-tree/tree-item.tsx b/mirror-2/components/entity-tree/tree-item.tsx index 45320205..951437b6 100644 --- a/mirror-2/components/entity-tree/tree-item.tsx +++ b/mirror-2/components/entity-tree/tree-item.tsx @@ -23,7 +23,7 @@ export default function EntityTreeItem({ nodeData }) { )} diff --git a/mirror-2/components/ui/input.tsx b/mirror-2/components/ui/input.tsx index 0788257b..299b7f32 100644 --- a/mirror-2/components/ui/input.tsx +++ b/mirror-2/components/ui/input.tsx @@ -11,7 +11,7 @@ const Input = React.forwardRef( Date: Fri, 11 Oct 2024 00:45:26 -0700 Subject: [PATCH 261/353] polish --- mirror-2/app/space/[spaceId]/build/inspector/inspector.tsx | 2 +- mirror-2/components/entity-tree/entity-tree.tsx | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/mirror-2/app/space/[spaceId]/build/inspector/inspector.tsx b/mirror-2/app/space/[spaceId]/build/inspector/inspector.tsx index 99df5b49..21344ab8 100644 --- a/mirror-2/app/space/[spaceId]/build/inspector/inspector.tsx +++ b/mirror-2/app/space/[spaceId]/build/inspector/inspector.tsx @@ -14,7 +14,7 @@ export default function Inspector({ className }) { name: z.string().min(3, { message: "Scene name must be at least 1 character long" }), }); - return
        + return
        {entity && { }; const onExpand: TreeProps['onExpand'] = (expandedKeysValue) => { - console.log('onExpand', expandedKeysValue); // Ensure it's a string array setExpandedKeys(expandedKeysValue.map(key => String(key))); // Convert to string[] dispatch(setExpandedEntityIds({ entityIds: expandedKeysValue.map(key => String(key)) })); From 36fb1423c74b814cf9064aaf08506127c03f9b70 Mon Sep 17 00:00:00 2001 From: Kluskey Date: Fri, 11 Oct 2024 00:51:49 -0700 Subject: [PATCH 262/353] abstract entity formgroup --- .../[spaceId]/build/controlBar/hierarchy.tsx | 3 +- .../build/inspector/entity.formgroup.tsx | 30 +++++++++++++++++++ .../[spaceId]/build/inspector/inspector.tsx | 30 ++----------------- mirror-2/components/ui/text/h2.tsx | 3 ++ 4 files changed, 38 insertions(+), 28 deletions(-) create mode 100644 mirror-2/app/space/[spaceId]/build/inspector/entity.formgroup.tsx create mode 100644 mirror-2/components/ui/text/h2.tsx diff --git a/mirror-2/app/space/[spaceId]/build/controlBar/hierarchy.tsx b/mirror-2/app/space/[spaceId]/build/controlBar/hierarchy.tsx index d916c987..ae72bcf2 100644 --- a/mirror-2/app/space/[spaceId]/build/controlBar/hierarchy.tsx +++ b/mirror-2/app/space/[spaceId]/build/controlBar/hierarchy.tsx @@ -9,6 +9,7 @@ import { useCreateEntityMutation } from '@/state/entities'; import { getCurrentScene } from '@/state/local'; import { useParams } from 'next/navigation'; import { Separator } from '@/components/ui/separator'; +import { H2 } from '@/components/ui/text/h2'; export default function Hierarchy() { const currentScene = useAppSelector(getCurrentScene) @@ -17,7 +18,7 @@ export default function Hierarchy() { return ( <> -

        {currentScene && <>Scene: {currentScene.name}}

        +

        {currentScene && <>Scene: {currentScene.name}}

        {/* Create Entity Button */} {currentScene && +

        To import an existing app from PlayCanvas, export it as a .zip.

        +

        The export must have:

        +
          +
        • Engine Version: >=1.74.0
        • +
        • Concatenate Scripts: Unchecked
        • +
        • Optimize Scene Format: Unchecked
        • +
        • Format: .zip
        • +
        + + + ); } - diff --git a/mirror-2/app/space/[spaceId]/build/layout.tsx b/mirror-2/app/space/[spaceId]/build/layout.tsx index ed82f106..94c6c005 100644 --- a/mirror-2/app/space/[spaceId]/build/layout.tsx +++ b/mirror-2/app/space/[spaceId]/build/layout.tsx @@ -3,13 +3,13 @@ import Inspector from "@/app/space/[spaceId]/build/inspector/inspector" import { Sidebar } from "@/app/space/[spaceId]/build/sidebar" import SpaceViewport from "@/state/engine/space-viewport" import { TopNavbar } from "@/app/space/[spaceId]/build/top-navbar" +import ImportViewportAndWillBeV2 from "@/components/engine/import-viewport" export default function Layout({ children, params }: { children: React.ReactNode, spaceViewport: React.ReactNode, params: { spaceId: string } }) { - console.log('here') return (
        @@ -28,7 +28,7 @@ export default function Layout({ children, params }: { {/* Space viewport (main content) */}
        - +
        {/* Instead of a div wrapping here, passing in className so that this component can be server compoonent; the Inspector has to use a hook for checking if entity selected */} diff --git a/mirror-2/app/space/[spaceId]/play/play.tsx b/mirror-2/app/space/[spaceId]/play/play.tsx index 4cf4d150..7cad880f 100644 --- a/mirror-2/app/space/[spaceId]/play/play.tsx +++ b/mirror-2/app/space/[spaceId]/play/play.tsx @@ -1,7 +1,7 @@ "use client" -import SpaceViewport from "@/state/engine/space-viewport" +import ImportViewportAndWillBeV2 from "@/components/engine/import-viewport" export function Play() { - return + return } diff --git a/mirror-2/app/space/[spaceId]/temp/page.tsx b/mirror-2/app/space/[spaceId]/temp/page.tsx index 962b3c7d..5a713801 100644 --- a/mirror-2/app/space/[spaceId]/temp/page.tsx +++ b/mirror-2/app/space/[spaceId]/temp/page.tsx @@ -1,46 +1,6 @@ "use client" -import SpaceViewport from "@/state/engine/space-viewport"; -import { modifyFile } from "@/utils/pc-import.server"; -import Script from "next/script"; -import * as pcImport from 'playcanvas'; -import { useEffect, useState } from "react"; +import ImportViewportAndWillBeV2 from "@/components/engine/import-viewport"; export default function PageTemp() { - const [isScriptReady, setIsScriptReady] = useState(false); - - useEffect(() => { - const modifyAndLoadScripts = async () => { - try { - // First, modify the file on the server side - await modifyFile(); // Wait for the modification to complete - - // Once the file is modified, allow the scripts to load - setIsScriptReady(true); - console.log('file is ready') - // Ensure this runs only on the client-side - if (typeof window !== "undefined") { - window['pc'] = pcImport; // Declare global PlayCanvas variable - } - } catch (error) { - console.error("Error modifying the file:", error); - } - }; - - modifyAndLoadScripts(); - }, []); - - return ( - <> - {isScriptReady && ( - <> - + + */} */} + -