diff --git a/apps/nextjs/env.ts b/apps/nextjs/env.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index aa3b6ecf..820cdf36 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -25,8 +25,13 @@ "@clerk/backend": "^1.15.1", "@clerk/clerk-react": "^5.13.1", "@clerk/nextjs": "^6.0.2", + "@iconify/react": "^5.0.2", + "@pkmn/sets": "^5.1.2", + "@pkmn/types": "^4.0.0", + "@rails/actioncable": "^7.2.200", "@t3-oss/env-nextjs": "catalog:", "@tanstack/react-query": "catalog:", + "@tanstack/react-table": "catalog:", "@trpc/client": "catalog:", "@trpc/react-query": "catalog:", "@trpc/server": "catalog:", @@ -45,7 +50,7 @@ "geist": "^1.3.1", "jose": "^5.9.6", "js-cookie": "^3.0.5", - "next": "^14.2.15", + "next": "catalog:", "next-themes": "catalog:", "openapi-fetch": "^0.13.0", "openapi-typescript-helpers": "^0.0.15", @@ -53,6 +58,10 @@ "react-dom": "catalog:react18", "server-only": "^0.0.1", "superjson": "2.2.1", + "tailwind-merge": "^2.5.4", + "tailwind-variants": "^0.2.1", + "tailwindcss-animate": "^1.0.7", + "tweetnacl": "^1.0.3", "zod": "catalog:" }, "devDependencies": { @@ -60,7 +69,9 @@ "@battle-stadium/prettier-config": "workspace:*", "@battle-stadium/tailwind-config": "workspace:*", "@battle-stadium/tsconfig": "workspace:*", + "@types/js-cookie": "^3.0.6", "@types/node": "^20.16.11", + "@types/rails__actioncable": "^6.1.11", "@types/react": "catalog:react18", "@types/react-dom": "catalog:react18", "dotenv-cli": "^7.4.2", diff --git a/apps/nextjs/src/app/(info)/about/page.tsx b/apps/nextjs/src/app/(info)/about/page.tsx index 1c5f0656..cc6009d2 100644 --- a/apps/nextjs/src/app/(info)/about/page.tsx +++ b/apps/nextjs/src/app/(info)/about/page.tsx @@ -1,4 +1,4 @@ -import { type Metadata } from "next"; +import type {Metadata} from "next"; export const metadata: Metadata = { title: "About Us", diff --git a/apps/nextjs/src/app/analytics/page.tsx b/apps/nextjs/src/app/analytics/page.tsx index 77c826d5..3f203f25 100644 --- a/apps/nextjs/src/app/analytics/page.tsx +++ b/apps/nextjs/src/app/analytics/page.tsx @@ -1,10 +1,10 @@ -import { type Metadata } from "next"; +import type { Metadata } from "next"; export const metadata: Metadata = { title: "Analytics", }; -export default async function Analytics() { +export default function Analytics () { return (

Analytics

diff --git a/apps/nextjs/src/app/dashboard/@admin/page.tsx b/apps/nextjs/src/app/dashboard/@admin/page.tsx index bb2485da..453fa941 100644 --- a/apps/nextjs/src/app/dashboard/@admin/page.tsx +++ b/apps/nextjs/src/app/dashboard/@admin/page.tsx @@ -9,7 +9,7 @@ export default function Admin() { endpoint="imageUploader" onClientUploadComplete={(res) => { // Do something with the response - console.log("Files: ", res); // eslint-disable-line no-console + console.log("Files: ", res); // alert("Upload Completed"); }} onUploadError={(error: Error) => { diff --git a/apps/nextjs/src/app/dashboard/@settings/page.tsx b/apps/nextjs/src/app/dashboard/@settings/page.tsx index 0262805d..12d43423 100644 --- a/apps/nextjs/src/app/dashboard/@settings/page.tsx +++ b/apps/nextjs/src/app/dashboard/@settings/page.tsx @@ -1,8 +1,8 @@ "use client"; -import { Tabs, TabsContent, TabsList, TabsTrigger } from "~/components/ui/tabs"; +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@battle-stadium/ui/tabs"; -export default function Settings() { +export default function Settings () { return (
@@ -22,7 +22,7 @@ export default function Settings() { Make changes to your account here. - {"Make changes to the site's appearance here."} + { "Make changes to the site's appearance here." }
diff --git a/apps/nextjs/src/app/dashboard/layout.tsx b/apps/nextjs/src/app/dashboard/layout.tsx index 5f77c04b..1a950485 100644 --- a/apps/nextjs/src/app/dashboard/layout.tsx +++ b/apps/nextjs/src/app/dashboard/layout.tsx @@ -1,4 +1,4 @@ -import { type DashboardLayoutProps } from "~/types"; +import type {DashboardLayoutProps} from "~/types"; import { getAccountMe } from "~/app/server-actions/accounts/actions"; export default async function DashboardLayout({ diff --git a/apps/nextjs/src/app/server-actions/accounts/actions.ts b/apps/nextjs/src/app/server-actions/accounts/actions.ts index b8df50d3..68b0d3c5 100644 --- a/apps/nextjs/src/app/server-actions/accounts/actions.ts +++ b/apps/nextjs/src/app/server-actions/accounts/actions.ts @@ -1,9 +1,9 @@ "use server"; import { BattleStadiumApiClient, defaultConfig } from "~/lib/api"; -import { type paths } from "~/lib/api/openapi-v1"; +import type {paths} from "~/lib/api/openapi-v1"; import { auth } from "@clerk/nextjs/server"; -import { type FetchOptions } from "openapi-fetch"; +import type {FetchOptions} from "openapi-fetch"; export async function getAccounts( options?: FetchOptions, diff --git a/apps/nextjs/src/app/server-actions/organizations/actions.ts b/apps/nextjs/src/app/server-actions/organizations/actions.ts index 38c21392..8c669ec9 100644 --- a/apps/nextjs/src/app/server-actions/organizations/actions.ts +++ b/apps/nextjs/src/app/server-actions/organizations/actions.ts @@ -1,8 +1,8 @@ "use server"; import { BattleStadiumApiClient, defaultConfig } from "~/lib/api"; -import { type paths } from "~/lib/api/openapi-v1"; -import { type FetchOptions } from "openapi-fetch"; +import type {paths} from "~/lib/api/openapi-v1"; +import type {FetchOptions} from "openapi-fetch"; export async function getOrganizations( options?: FetchOptions, @@ -12,8 +12,8 @@ export async function getOrganizations( ...options, params: { query: { - page: options?.params?.query?.page ?? 0, - per_page: options?.params?.query?.per_page ?? 20, + page: options?.params.query.page ?? 0, + per_page: options?.params.query.per_page ?? 20, }, }, }; @@ -23,8 +23,8 @@ export async function getOrganizations( await BattleStadiumApiClient(skipClerkAuth) ).GET("/organizations", organizationsOptions); const allOrgs = resp.data?.data; - const partnerOrgs = (allOrgs ?? [])?.filter((org) => org.partner); - const nonPartnerOrgs = (allOrgs ?? [])?.filter((org) => !org.partner); + const partnerOrgs = (allOrgs ?? []).filter((org) => org.partner); + const nonPartnerOrgs = (allOrgs ?? []).filter((org) => !org.partner); return { partners: partnerOrgs, diff --git a/apps/nextjs/src/app/server-actions/organizations/tournaments/actions.ts b/apps/nextjs/src/app/server-actions/organizations/tournaments/actions.ts index c46ce978..b2274881 100644 --- a/apps/nextjs/src/app/server-actions/organizations/tournaments/actions.ts +++ b/apps/nextjs/src/app/server-actions/organizations/tournaments/actions.ts @@ -1,8 +1,8 @@ "use server"; import { BattleStadiumApiClient, defaultConfig } from "~/lib/api"; -import { type paths } from "~/lib/api/openapi-v1"; -import { type FetchOptions } from "openapi-fetch"; +import type {paths} from "~/lib/api/openapi-v1"; +import type {FetchOptions} from "openapi-fetch"; export async function getOrganizationTournaments( slug: string, diff --git a/apps/nextjs/src/app/server-actions/pokemon/actions.ts b/apps/nextjs/src/app/server-actions/pokemon/actions.ts index 4d1eb7c0..5bad1b6d 100644 --- a/apps/nextjs/src/app/server-actions/pokemon/actions.ts +++ b/apps/nextjs/src/app/server-actions/pokemon/actions.ts @@ -1,14 +1,11 @@ "use server"; import { BattleStadiumApiClient, defaultConfig } from "~/lib/api"; -import { type paths } from "~/lib/api/openapi-v1"; -import { - type ValidatedPokemon, - type PokePasteMetadata, -} from "~/lib/pokemon/common"; -import { type FetchOptions } from "openapi-fetch"; +import type {paths} from "~/lib/api/openapi-v1"; +import type {ValidatedPokemon, PokePasteMetadata} from "~/lib/pokemon/common"; +import type {FetchOptions} from "openapi-fetch"; -type PostPokemonTeamBody = { +interface PostPokemonTeamBody { pokepaste_id?: string; profile_id: number | null; name: string; @@ -29,7 +26,7 @@ type PostPokemonTeamBody = { move4: string | null; pokemon_team_id?: number; }[]; -}; +} export async function getPokemonTeams( options?: FetchOptions, diff --git a/apps/nextjs/src/app/server-actions/profiles/actions.ts b/apps/nextjs/src/app/server-actions/profiles/actions.ts index 4a2d6ce3..e7aadaf5 100644 --- a/apps/nextjs/src/app/server-actions/profiles/actions.ts +++ b/apps/nextjs/src/app/server-actions/profiles/actions.ts @@ -1,9 +1,9 @@ "use server"; import { BattleStadiumApiClient, defaultConfig } from "~/lib/api"; -import { type paths } from "~/lib/api/openapi-v1"; +import type {paths} from "~/lib/api/openapi-v1"; import { revalidateTag } from "next/cache"; -import { type FetchOptions } from "openapi-fetch"; +import type {FetchOptions} from "openapi-fetch"; export async function getProfiles( options?: FetchOptions, diff --git a/apps/nextjs/src/app/server-actions/tournaments/actions.ts b/apps/nextjs/src/app/server-actions/tournaments/actions.ts index 4c05b9ba..4066256a 100644 --- a/apps/nextjs/src/app/server-actions/tournaments/actions.ts +++ b/apps/nextjs/src/app/server-actions/tournaments/actions.ts @@ -1,8 +1,8 @@ "use server"; import { BattleStadiumApiClient, defaultConfig } from "~/lib/api"; -import { type paths } from "~/lib/api/openapi-v1"; -import { type FetchOptions } from "openapi-fetch"; +import type {paths} from "~/lib/api/openapi-v1"; +import type {FetchOptions} from "openapi-fetch"; export async function getTournament( tournament_id: number, diff --git a/apps/nextjs/src/env.ts b/apps/nextjs/src/env.ts index 5a09f8b8..553f6cdb 100644 --- a/apps/nextjs/src/env.ts +++ b/apps/nextjs/src/env.ts @@ -16,7 +16,12 @@ export const env = createEnv({ * This way you can ensure the app isn't built with invalid env vars. */ server: { + COOKIE_DOMAIN: z.string(), + PROD_API_BASE_URL: z.string().url(), + LOCAL_DEV_BACKEND_HOST: z.string().optional().default("localhost"), + LOCAL_DEV_BACKEND_PORT: z.string().optional().default("10000"), POSTGRES_URL: z.string().url(), + WEBSOCKET_URL: z.string().optional(), }, /** diff --git a/apps/nextjs/src/lib/api/client.ts b/apps/nextjs/src/lib/api/client.ts index 35cb62d2..fbe46197 100644 --- a/apps/nextjs/src/lib/api/client.ts +++ b/apps/nextjs/src/lib/api/client.ts @@ -1,18 +1,19 @@ -import createFetchClient, { type Middleware } from "openapi-fetch"; +import createFetchClient from "openapi-fetch"; +import type { Middleware } from "openapi-fetch"; import { env } from "~/env.ts"; import { getVercelOidcToken } from "@vercel/functions/oidc"; import { auth } from "@clerk/nextjs/server"; -import { type paths } from "~/lib/api/openapi-v1"; +import type { paths } from "~/lib/api/openapi-v1"; export const DEFAULT_CACHE_TIMEOUT = 300; -export function defaultConfig(tag: string, revalidate?: number) { +export function defaultConfig (tag: string, revalidate?: number) { return { next: { tags: [tag], revalidate: revalidate ?? DEFAULT_CACHE_TIMEOUT }, }; } -export function getBaseUrl() { +export function getBaseUrl () { if ([env.NODE_ENV, env.VERCEL_ENV].includes("production")) { return `${env.PROD_API_BASE_URL}`; } @@ -20,11 +21,11 @@ export function getBaseUrl() { return `http://${env.LOCAL_DEV_BACKEND_HOST}:${env.LOCAL_DEV_BACKEND_PORT}`; } -export async function BattleStadiumApiClient(skipClerkAuth = false) { +export function BattleStadiumApiClient (skipClerkAuth = false) { const baseUrl = `${getBaseUrl()}/api/v1`; const fetchClient = createFetchClient({ baseUrl }); const authMiddleware: Middleware = { - async onRequest({ request }) { + async onRequest ({ request }) { if (env.NODE_ENV !== "development") { request.headers.set( "X-Vercel-OIDC-Token", diff --git a/apps/nextjs/src/lib/api/index.ts b/apps/nextjs/src/lib/api/index.ts index 3ec9c20d..d63ede33 100644 --- a/apps/nextjs/src/lib/api/index.ts +++ b/apps/nextjs/src/lib/api/index.ts @@ -1,4 +1,4 @@ -import { type components } from "~/lib/api/openapi-v1"; +import type {components} from "~/lib/api/openapi-v1"; export * from "~/lib/api/client"; export type Schemas = components["schemas"]; diff --git a/apps/nextjs/src/lib/discord/verify-incoming-request.ts b/apps/nextjs/src/lib/discord/verify-incoming-request.ts index 0f40d0ef..12df2e23 100644 --- a/apps/nextjs/src/lib/discord/verify-incoming-request.ts +++ b/apps/nextjs/src/lib/discord/verify-incoming-request.ts @@ -1,15 +1,12 @@ -import { - type APIChatInputApplicationCommandInteraction, - type APIPingInteraction, -} from "discord-api-types/v10"; +import type {APIChatInputApplicationCommandInteraction, APIPingInteraction} from "discord-api-types/v10"; import nacl from "tweetnacl"; -type VerifyWithNaclArgs = { +interface VerifyWithNaclArgs { appPublicKey: string; rawBody: string; signature: string; timestamp: string; -}; +} const verifyWithNacl = ({ appPublicKey, diff --git a/apps/nextjs/src/lib/pokemon/common.ts b/apps/nextjs/src/lib/pokemon/common.ts index 5b421565..758f0a34 100644 --- a/apps/nextjs/src/lib/pokemon/common.ts +++ b/apps/nextjs/src/lib/pokemon/common.ts @@ -1,4 +1,4 @@ -import { type PokemonSet, type StatsTable } from "@pkmn/types"; +import type {PokemonSet, StatsTable} from "@pkmn/types"; export interface OptionalStatsPokemonSet extends Omit { @@ -57,7 +57,7 @@ export function cleanImageUrl(url: string): string { url = "/" + url; } - if (url?.startsWith("/img/pokemon/0-0.png")) { + if (url.startsWith("/img/pokemon/0-0.png")) { return ""; } diff --git a/apps/nextjs/src/lib/pokemon/parse-pokepaste-html.ts b/apps/nextjs/src/lib/pokemon/parse-pokepaste-html.ts index 23e92d7a..b0508835 100644 --- a/apps/nextjs/src/lib/pokemon/parse-pokepaste-html.ts +++ b/apps/nextjs/src/lib/pokemon/parse-pokepaste-html.ts @@ -1,12 +1,10 @@ import { - type ParsedTeam, - type PokePasteMetadata, - type ParsedPokemon, cleanImageUrl, - parseStats, + parseStats } from "./common"; +import type { ParsedTeam, PokePasteMetadata, ParsedPokemon } from "./common"; -export function parsePokePasteHTML(html: string, url: string): ParsedTeam { +export function parsePokePasteHTML (html: string, url: string): ParsedTeam { if (typeof window === "undefined") return { metadata: { title: "", author: "", format: "" }, pokemon: [] }; @@ -73,11 +71,9 @@ export function parsePokePasteHTML(html: string, url: string): ParsedTeam { } else if (line.startsWith("Tera Type:")) { currentPokemon.teraType = line.split(":")[1]?.trim() ?? ""; } else if (line.startsWith("EVs:")) { - currentPokemon.evs = - parseStats(line.split(":")[1]?.trim() ?? "") ?? currentPokemon.evs; + currentPokemon.evs = parseStats(line.split(":")[1]?.trim() ?? ""); } else if (line.startsWith("IVs:")) { - currentPokemon.ivs = - parseStats(line.split(":")[1]?.trim() ?? "") ?? currentPokemon.ivs; + currentPokemon.ivs = parseStats(line.split(":")[1]?.trim() ?? ""); } else if (line.includes("Nature")) { currentPokemon.nature = line.split(" ")[0] ?? ""; } else if (line.startsWith("-")) { @@ -101,21 +97,21 @@ export function parsePokePasteHTML(html: string, url: string): ParsedTeam { return { metadata, pokemon }; } -function parseNameSpeciesItem(line: string): { +function parseNameSpeciesItem (line: string): { name: string; species: string; item: string; gender?: string; remainingDetails: string; } { - console.log("Parsing line:", line); // eslint-disable-line no-console + console.log("Parsing line:", line); const [nameSpecies, itemAndRest] = line.split("@").map((s) => s.trim()); let nameSpeciesLet = nameSpecies; if (!nameSpeciesLet) { - console.warn("Unable to parse Pokemon name/species from line:", line); // eslint-disable-line no-console + console.warn("Unable to parse Pokemon name/species from line:", line); return { name: "", species: "Unknown", item: "", remainingDetails: "" }; } @@ -123,7 +119,7 @@ function parseNameSpeciesItem(line: string): { // Handle gender separately let gender: string | undefined; - if (nameSpeciesLet.endsWith(" (M)") ?? nameSpeciesLet.endsWith(" (F)")) { + if (nameSpeciesLet.endsWith(" (M)") || nameSpeciesLet.endsWith(" (F)")) { gender = nameSpeciesLet.slice(-2, -1); nameSpeciesLet = nameSpeciesLet.slice(0, -4); } @@ -155,7 +151,7 @@ function parseNameSpeciesItem(line: string): { remainingDetails, }; - console.log("Parsed result:", obj); // eslint-disable-line no-console + console.log("Parsed result:", obj); return obj; } diff --git a/apps/nextjs/src/lib/pokemon/parse-showdown-format.ts b/apps/nextjs/src/lib/pokemon/parse-showdown-format.ts index ffabddaa..6ca32243 100644 --- a/apps/nextjs/src/lib/pokemon/parse-showdown-format.ts +++ b/apps/nextjs/src/lib/pokemon/parse-showdown-format.ts @@ -1,8 +1,9 @@ import { - convertToParsedPokemon, - type ParsedPokemon, - type ParsedTeam, + convertToParsedPokemon + + } from "./common"; +import type {ParsedPokemon, ParsedTeam} from "./common"; import { Sets } from "@pkmn/sets"; export function parseShowdownFormat(input: string): ParsedTeam { diff --git a/apps/nextjs/src/lib/pokemon/use-pokemon-team.tsx b/apps/nextjs/src/lib/pokemon/use-pokemon-team.tsx index 2e48a032..3d7fe62f 100644 --- a/apps/nextjs/src/lib/pokemon/use-pokemon-team.tsx +++ b/apps/nextjs/src/lib/pokemon/use-pokemon-team.tsx @@ -1,12 +1,7 @@ "use client"; import { useState, useCallback } from "react"; -import { - type ParsedPokemon, - type ParsedTeam, - type PokePasteMetadata, - type ValidatedPokemon, -} from "./common"; +import type {ParsedPokemon, ParsedTeam, PokePasteMetadata, ValidatedPokemon} from "./common"; import { parseShowdownFormat } from "./parse-showdown-format"; import { parsePokePasteHTML } from "./parse-pokepaste-html"; diff --git a/apps/nextjs/src/lib/utils.ts b/apps/nextjs/src/lib/utils.ts index a5ef1935..1942c4e6 100644 --- a/apps/nextjs/src/lib/utils.ts +++ b/apps/nextjs/src/lib/utils.ts @@ -1,4 +1,5 @@ -import { clsx, type ClassValue } from "clsx"; +import { clsx } from "clsx"; +import type {ClassValue} from "clsx"; import { twMerge } from "tailwind-merge"; export function cn(...inputs: ClassValue[]) { diff --git a/apps/nextjs/src/lib/websocket/use-action-cable-connection.ts b/apps/nextjs/src/lib/websocket/use-action-cable-connection.ts index 8db30b1e..53483116 100644 --- a/apps/nextjs/src/lib/websocket/use-action-cable-connection.ts +++ b/apps/nextjs/src/lib/websocket/use-action-cable-connection.ts @@ -1,10 +1,11 @@ import { useRef, useState, useCallback, useEffect } from "react"; import { - createConsumer, - type Consumer, - type Subscription, - type Mixin, + createConsumer + + + } from "@rails/actioncable"; +import type {Consumer, Subscription, Mixin} from "@rails/actioncable"; type SubscriptionConnection = Subscription & Mixin & { @@ -63,7 +64,7 @@ export function useActionCableConnection( shouldReconnect = true, ) => { if (!channelName || !roomName) { - console.warn("Channel or room not set"); // eslint-disable-line no-console + console.warn("Channel or room not set"); return; } @@ -80,24 +81,24 @@ export function useActionCableConnection( { channel: channelName, room: roomName }, { connected() { - console.info("Connected to the chat channel"); // eslint-disable-line no-console + console.info("Connected to the chat channel"); }, rejected() { - console.info("Rejected from the chat channel"); // eslint-disable-line no-console + console.info("Rejected from the chat channel"); }, disconnected() { - console.info("Disconnected from the chat channel"); // eslint-disable-line no-console + console.info("Disconnected from the chat channel"); // Attempt to reconnect after a delay, but only if it's not a reconnect attempt if (shouldReconnect) { const attemptReconnect = () => { if (reconnectAttempts < maxReconnectAttempts) { reconnectAttempts++; setTimeout(() => { - console.info(`Reconnect attempt ${reconnectAttempts}`); // eslint-disable-line no-console + console.info(`Reconnect attempt ${reconnectAttempts}`); connectToCable(channelName, roomName, false); }, 5000); } else { - console.warn("Max reconnect attempts reached"); // eslint-disable-line no-console + console.warn("Max reconnect attempts reached"); } }; @@ -105,7 +106,7 @@ export function useActionCableConnection( } }, received(data: M) { - console.info("Received message", data); // eslint-disable-line no-console + console.info("Received message", data); setMessages((prevMessages) => [...prevMessages, data]); }, }, diff --git a/apps/nextjs/src/trpc/server.ts b/apps/nextjs/src/trpc/server.ts index fee47c09..8bcd2003 100644 --- a/apps/nextjs/src/trpc/server.ts +++ b/apps/nextjs/src/trpc/server.ts @@ -13,7 +13,7 @@ import { createQueryClient } from "./query-client"; * handling a tRPC call from a React Server Component. */ const createContext = cache(async () => { - const heads = new Headers(headers()); + const heads = new Headers(await headers()); heads.set("x-trpc-source", "rsc"); return createTRPCContext({ diff --git a/packages/auth/package.json b/packages/auth/package.json index d5b5da4b..4f8722f1 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -24,7 +24,7 @@ "@auth/drizzle-adapter": "1.4.2", "@battle-stadium/db": "workspace:*", "@t3-oss/env-nextjs": "catalog:", - "next": "^14.2.15", + "next": "catalog:", "react": "catalog:react18", "react-dom": "catalog:react18", "zod": "catalog:" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 86167482..e32318e5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,6 +24,9 @@ catalogs: '@tanstack/react-query': specifier: ^5.59.15 version: 5.59.15 + '@tanstack/react-table': + specifier: ^8 + version: 8.20.5 '@trpc/client': specifier: ^11.0.0-rc.477 version: 11.0.0-rc.477 @@ -36,6 +39,9 @@ catalogs: eslint: specifier: ^9.12.0 version: 9.12.0 + next: + specifier: ^15 + version: 15.0.3 next-themes: specifier: ^0 version: 0.4.3 @@ -53,16 +59,16 @@ catalogs: version: 3.23.8 react18: '@types/react': - specifier: ^18.3.11 + specifier: ^18 version: 18.3.11 '@types/react-dom': - specifier: ^18.3.1 + specifier: ^18 version: 18.3.1 react: - specifier: 18.3.1 + specifier: ^18 version: 18.3.1 react-dom: - specifier: 18.3.1 + specifier: ^18 version: 18.3.1 importers: @@ -271,13 +277,28 @@ importers: version: 5.15.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@clerk/nextjs': specifier: ^6.0.2 - version: 6.2.1(next@14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 6.2.1(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@iconify/react': + specifier: ^5.0.2 + version: 5.0.2(react@18.3.1) + '@pkmn/sets': + specifier: ^5.1.2 + version: 5.1.2 + '@pkmn/types': + specifier: ^4.0.0 + version: 4.0.0 + '@rails/actioncable': + specifier: ^7.2.200 + version: 7.2.200 '@t3-oss/env-nextjs': specifier: 'catalog:' version: 0.11.1(typescript@5.6.3)(zod@3.23.8) '@tanstack/react-query': specifier: 'catalog:' version: 5.59.15(react@18.3.1) + '@tanstack/react-table': + specifier: 'catalog:' + version: 8.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@trpc/client': specifier: 'catalog:' version: 11.0.0-rc.477(@trpc/server@11.0.0-rc.477) @@ -298,10 +319,10 @@ importers: version: 3.5.0 '@uploadthing/react': specifier: ^7.1.0 - version: 7.1.1(next@14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(uploadthing@7.3.0(h3@1.13.0)(next@14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3)))) + version: 7.1.1(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(uploadthing@7.3.0(h3@1.13.0)(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3)))) '@vercel/analytics': specifier: ^1.3.2 - version: 1.3.2(next@14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 1.3.2(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@vercel/functions': specifier: ^1.5.0 version: 1.5.0 @@ -310,7 +331,7 @@ importers: version: 3.0.0 '@vercel/speed-insights': specifier: ^1.0.14 - version: 1.1.0(next@14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 1.1.0(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) cookie: specifier: ^1.0.1 version: 1.0.1 @@ -325,7 +346,7 @@ importers: version: 14.16.3(bufferutil@4.0.8)(utf-8-validate@6.0.4) geist: specifier: ^1.3.1 - version: 1.3.1(next@14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + version: 1.3.1(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) jose: specifier: ^5.9.6 version: 5.9.6 @@ -333,8 +354,8 @@ importers: specifier: ^3.0.5 version: 3.0.5 next: - specifier: ^14.2.15 - version: 14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 'catalog:' + version: 15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next-themes: specifier: 'catalog:' version: 0.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -356,6 +377,18 @@ importers: superjson: specifier: 2.2.1 version: 2.2.1 + tailwind-merge: + specifier: ^2.5.4 + version: 2.5.4 + tailwind-variants: + specifier: ^0.2.1 + version: 0.2.1(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3))) + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3))) + tweetnacl: + specifier: ^1.0.3 + version: 1.0.3 zod: specifier: 'catalog:' version: 3.23.8 @@ -372,9 +405,15 @@ importers: '@battle-stadium/tsconfig': specifier: workspace:* version: link:../../tooling/typescript + '@types/js-cookie': + specifier: ^3.0.6 + version: 3.0.6 '@types/node': specifier: ^20.16.11 version: 20.17.6 + '@types/rails__actioncable': + specifier: ^6.1.11 + version: 6.1.11 '@types/react': specifier: catalog:react18 version: 18.3.11 @@ -416,7 +455,7 @@ importers: version: 5.15.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@clerk/nextjs': specifier: 'catalog:' - version: 6.2.1(next@14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 6.2.1(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@trpc/server': specifier: 'catalog:' version: 11.0.0-rc.477 @@ -461,8 +500,8 @@ importers: specifier: 'catalog:' version: 0.11.1(typescript@5.6.3)(zod@3.23.8) next: - specifier: ^14.2.15 - version: 14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 'catalog:' + version: 15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: catalog:react18 version: 18.3.1 @@ -1788,6 +1827,9 @@ packages: resolution: {integrity: sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==} engines: {node: '>=0.8.0'} + '@emnapi/runtime@1.3.1': + resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} + '@esbuild-kit/core-utils@3.3.2': resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} deprecated: 'Merged into tsx: https://tsx.is' @@ -2399,6 +2441,119 @@ packages: '@vue/compiler-sfc': optional: true + '@iconify/react@5.0.2': + resolution: {integrity: sha512-wtmstbYlEbo4NDxFxBJkhkf9gJBDqMGr7FaqLrAUMneRV3Z+fVHLJjOhWbkAF8xDQNFC/wcTYdrWo1lnRhmagQ==} + peerDependencies: + react: '>=16' + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + '@ioredis/commands@1.2.0': resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} @@ -2504,62 +2659,56 @@ packages: resolution: {integrity: sha512-q3L9i3HoNfz0SGpTIS4zTcKBbRkxzCRpd169eyiTuk3IwcPC3/85mzLHranlKo2b+HYT0gu37YxGB45aD8A3Tw==} engines: {node: '>=18.0.0'} - '@next/env@14.2.17': - resolution: {integrity: sha512-MCgO7VHxXo8sYR/0z+sk9fGyJJU636JyRmkjc7ZJY8Hurl8df35qG5hoAh5KMs75FLjhlEo9bb2LGe89Y/scDA==} + '@next/env@15.0.3': + resolution: {integrity: sha512-t9Xy32pjNOvVn2AS+Utt6VmyrshbpfUMhIjFO60gI58deSo/KgLOp31XZ4O+kY/Is8WAGYwA5gR7kOb1eORDBA==} '@next/eslint-plugin-next@14.2.17': resolution: {integrity: sha512-fW6/u1jjlBQrMs1ExyINehaK3B+LEW5UqdF6QYL07QK+SECkX0hnEyPMaNKj0ZFzirQ9D8jLWQ00P8oua4yx9g==} - '@next/swc-darwin-arm64@14.2.17': - resolution: {integrity: sha512-WiOf5nElPknrhRMTipXYTJcUz7+8IAjOYw3vXzj3BYRcVY0hRHKWgTgQ5439EvzQyHEko77XK+yN9x9OJ0oOog==} + '@next/swc-darwin-arm64@15.0.3': + resolution: {integrity: sha512-s3Q/NOorCsLYdCKvQlWU+a+GeAd3C8Rb3L1YnetsgwXzhc3UTWrtQpB/3eCjFOdGUj5QmXfRak12uocd1ZiiQw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@14.2.17': - resolution: {integrity: sha512-29y425wYnL17cvtxrDQWC3CkXe/oRrdt8ie61S03VrpwpPRI0XsnTvtKO06XCisK4alaMnZlf8riwZIbJTaSHQ==} + '@next/swc-darwin-x64@15.0.3': + resolution: {integrity: sha512-Zxl/TwyXVZPCFSf0u2BNj5sE0F2uR6iSKxWpq4Wlk/Sv9Ob6YCKByQTkV2y6BCic+fkabp9190hyrDdPA/dNrw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@14.2.17': - resolution: {integrity: sha512-SSHLZls3ZwNEHsc+d0ynKS+7Af0Nr8+KTUBAy9pm6xz9SHkJ/TeuEg6W3cbbcMSh6j4ITvrjv3Oi8n27VR+IPw==} + '@next/swc-linux-arm64-gnu@15.0.3': + resolution: {integrity: sha512-T5+gg2EwpsY3OoaLxUIofmMb7ohAUlcNZW0fPQ6YAutaWJaxt1Z1h+8zdl4FRIOr5ABAAhXtBcpkZNwUcKI2fw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@14.2.17': - resolution: {integrity: sha512-VFge37us5LNPatB4F7iYeuGs9Dprqe4ZkW7lOEJM91r+Wf8EIdViWHLpIwfdDXinvCdLl6b4VyLpEBwpkctJHA==} + '@next/swc-linux-arm64-musl@15.0.3': + resolution: {integrity: sha512-WkAk6R60mwDjH4lG/JBpb2xHl2/0Vj0ZRu1TIzWuOYfQ9tt9NFsIinI1Epma77JVgy81F32X/AeD+B2cBu/YQA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@14.2.17': - resolution: {integrity: sha512-aaQlpxUVb9RZ41adlTYVQ3xvYEfBPUC8+6rDgmQ/0l7SvK8S1YNJzPmDPX6a4t0jLtIoNk7j+nroS/pB4nx7vQ==} + '@next/swc-linux-x64-gnu@15.0.3': + resolution: {integrity: sha512-gWL/Cta1aPVqIGgDb6nxkqy06DkwJ9gAnKORdHWX1QBbSZZB+biFYPFti8aKIQL7otCE1pjyPaXpFzGeG2OS2w==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@14.2.17': - resolution: {integrity: sha512-HSyEiFaEY3ay5iATDqEup5WAfrhMATNJm8dYx3ZxL+e9eKv10XKZCwtZByDoLST7CyBmyDz+OFJL1wigyXeaoA==} + '@next/swc-linux-x64-musl@15.0.3': + resolution: {integrity: sha512-QQEMwFd8r7C0GxQS62Zcdy6GKx999I/rTO2ubdXEe+MlZk9ZiinsrjwoiBL5/57tfyjikgh6GOU2WRQVUej3UA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@14.2.17': - resolution: {integrity: sha512-h5qM9Btqv87eYH8ArrnLoAHLyi79oPTP2vlGNSg4CDvUiXgi7l0+5KuEGp5pJoMhjuv9ChRdm7mRlUUACeBt4w==} + '@next/swc-win32-arm64-msvc@15.0.3': + resolution: {integrity: sha512-9TEp47AAd/ms9fPNgtgnT7F3M1Hf7koIYYWCMQ9neOwjbVWJsHZxrFbI3iEDJ8rf1TDGpmHbKxXf2IFpAvheIQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-ia32-msvc@14.2.17': - resolution: {integrity: sha512-BD/G++GKSLexQjdyoEUgyo5nClU7er5rK0sE+HlEqnldJSm96CIr/+YOTT063LVTT/dUOeQsNgp5DXr86/K7/A==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@next/swc-win32-x64-msvc@14.2.17': - resolution: {integrity: sha512-vkQfN1+4V4KqDibkW2q0sJ6CxQuXq5l2ma3z0BRcfIqkAMZiiW67T9yCpwqJKP68QghBtPEFjPAlaqe38O6frw==} + '@next/swc-win32-x64-msvc@15.0.3': + resolution: {integrity: sha512-VNAz+HN4OGgvZs6MOoVfnn41kBzT+M+tB+OK4cww6DNyWS6wKaDpaAm/qLeOUbnMh0oVx1+mg0uoYARF69dJyA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -2673,6 +2822,12 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} + '@pkmn/sets@5.1.2': + resolution: {integrity: sha512-eMChlYko92ZdvNKqjcJ2PkzDmSc5kIbaKSrPU/bOnjcrOq8ZGjod3b7KcDxeXrZXQAS027O0uVhwIJbdMDe/Yw==} + + '@pkmn/types@4.0.0': + resolution: {integrity: sha512-gR2s/pxJYEegek1TtsYCQupNR3d5hMlcJFsiD+2LyfKr4tc+gETTql47tWLX5mFSbPcbXh7f4+7txlMIDoZx/g==} + '@planetscale/database@1.19.0': resolution: {integrity: sha512-Tv4jcFUFAFjOWrGSio49H6R2ijALv0ZzVBfJKIdm+kl9X046Fh4LLawrF9OMsglVbK6ukqMJsUCeucGAFTBcMA==} engines: {node: '>=16'} @@ -3470,6 +3625,9 @@ packages: '@radix-ui/rect@1.1.0': resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} + '@rails/actioncable@7.2.200': + resolution: {integrity: sha512-gVmi3MabEa+Bkatvw0/k1Y3WTidcIf3qNbb9L8qc+AmT2UmkVqUZhJpSLvKmH10twCYIGzn7yySW/lOpg81Duw==} + '@react-native-community/cli-debugger-ui@14.1.0': resolution: {integrity: sha512-+YbeCL0wLcBcqDwraJFGsqzcXu9S+bwTVrfImne/4mT6itfe3Oa93yrOVJgNbstrt5pJHuwpU76ZXfXoiuncsg==} @@ -3873,8 +4031,8 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/helpers@0.5.5': - resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + '@swc/helpers@0.5.13': + resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} '@t3-oss/env-core@0.11.1': resolution: {integrity: sha512-MaxOwEoG1ntCFoKJsS7nqwgcxLW1SJw238AJwfJeaz3P/8GtkxXZsPPolsz1AdYvUTbe3XvqZ/VCdfjt+3zmKw==} @@ -3902,6 +4060,17 @@ packages: peerDependencies: react: ^18 || ^19 + '@tanstack/react-table@8.20.5': + resolution: {integrity: sha512-WEHopKw3znbUZ61s9i0+i9g8drmDo6asTWbrQh8Us63DAk/M0FkmIqERew6P71HI75ksZ2Pxyuf4vvKh9rAkiA==} + engines: {node: '>=12'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + '@tanstack/table-core@8.20.5': + resolution: {integrity: sha512-P9dF7XbibHph2PFRz8gfBKEXEY/HJPOhym8CHmjF8y3q5mWpKx9xtZapXQUWCgkqvsK0R46Azuz+VaxD4Xl+Tg==} + engines: {node: '>=12'} + '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} @@ -4126,6 +4295,9 @@ packages: '@types/istanbul-reports@3.0.4': resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + '@types/js-cookie@3.0.6': + resolution: {integrity: sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -4156,6 +4328,9 @@ packages: '@types/prop-types@15.7.13': resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} + '@types/rails__actioncable@6.1.11': + resolution: {integrity: sha512-L6A3Rg6sGsv2cqalOgdOmyFvL1Pw69Mg0WuG6NtY9chzabhtkiSFY5fczo72mqRGezrMvl0Jy80v+N719CW+Tg==} + '@types/react-dom@18.3.1': resolution: {integrity: sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==} @@ -7487,21 +7662,24 @@ packages: react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc - next@14.2.17: - resolution: {integrity: sha512-hNo/Zy701DDO3nzKkPmsLRlDfNCtb1OJxFUvjGEl04u7SFa3zwC6hqsOUzMajcaEOEV8ey1GjvByvrg0Qr5AiQ==} - engines: {node: '>=18.17.0'} + next@15.0.3: + resolution: {integrity: sha512-ontCbCRKJUIoivAdGB34yCaOcPgYXr9AAkV/IwqFfWWTXEPUgLYkSkqBhIk9KK7gGmgjc64B+RdoeIDM13Irnw==} + engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 '@playwright/test': ^1.41.2 - react: ^18.2.0 - react-dom: ^18.2.0 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-66855b96-20241106 + react-dom: ^18.2.0 || 19.0.0-rc-66855b96-20241106 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': optional: true '@playwright/test': optional: true + babel-plugin-react-compiler: + optional: true sass: optional: true @@ -8641,6 +8819,10 @@ packages: shallowequal@1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -8891,13 +9073,13 @@ packages: structured-headers@0.4.1: resolution: {integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==} - styled-jsx@5.1.1: - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} peerDependencies: '@babel/core': '*' babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' peerDependenciesMeta: '@babel/core': optional: true @@ -8966,6 +9148,12 @@ packages: tailwind-merge@2.5.4: resolution: {integrity: sha512-0q8cfZHMu9nuYP/b5Shb7Y7Sh1B7Nnl5GqNr1U+n2p6+mybvRtayrQ+0042Z5byvTA8ihjlP8Odo8/VnHbZu4Q==} + tailwind-variants@0.2.1: + resolution: {integrity: sha512-2xmhAf4UIc3PijOUcJPA1LP4AbxhpcHuHM2C26xM0k81r0maAO6uoUSHl3APmvHZcY5cZCY/bYuJdfFa4eGoaw==} + engines: {node: '>=16.x', pnpm: '>=7.x'} + peerDependencies: + tailwindcss: '*' + tailwindcss-animate@1.0.7: resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} peerDependencies: @@ -9166,6 +9354,9 @@ packages: resolution: {integrity: sha512-5lDvSqIxCYJ/BAd6rQGK/AzFRhBkbu4JHVMLmGh/hCb7U3CqSnr5Tjwfy9vc+/5wG2DJ6wttgAaA7MoCgvBKZQ==} hasBin: true + tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -10842,15 +11033,15 @@ snapshots: react-dom: 18.3.1(react@18.3.1) tslib: 2.4.1 - '@clerk/nextjs@6.2.1(next@14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@clerk/nextjs@6.2.1(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@clerk/backend': 1.15.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@clerk/clerk-react': 5.15.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@clerk/shared': 2.11.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@clerk/types': 4.30.0 crypto-js: 4.2.0 - ezheaders: 0.1.0(next@14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - next: 14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + ezheaders: 0.1.0(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + next: 15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) server-only: 0.0.1 @@ -10938,6 +11129,11 @@ snapshots: dependencies: '@types/hammerjs': 2.0.46 + '@emnapi/runtime@1.3.1': + dependencies: + tslib: 2.8.1 + optional: true + '@esbuild-kit/core-utils@3.3.2': dependencies: esbuild: 0.18.20 @@ -11584,6 +11780,88 @@ snapshots: transitivePeerDependencies: - supports-color + '@iconify/react@5.0.2(react@18.3.1)': + dependencies: + '@iconify/types': 2.0.0 + react: 18.3.1 + + '@iconify/types@2.0.0': {} + + '@img/sharp-darwin-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true + + '@img/sharp-darwin-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.0.5': + optional: true + + '@img/sharp-libvips-linux-s390x@1.0.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + optional: true + + '@img/sharp-linux-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.4 + optional: true + + '@img/sharp-linux-arm@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.5 + optional: true + + '@img/sharp-linux-s390x@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.4 + optional: true + + '@img/sharp-linux-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + optional: true + + '@img/sharp-wasm32@0.33.5': + dependencies: + '@emnapi/runtime': 1.3.1 + optional: true + + '@img/sharp-win32-ia32@0.33.5': + optional: true + + '@img/sharp-win32-x64@0.33.5': + optional: true + '@ioredis/commands@1.2.0': {} '@isaacs/cliui@8.0.2': @@ -11746,37 +12024,34 @@ snapshots: '@netlify/node-cookies': 0.1.0 urlpattern-polyfill: 8.0.2 - '@next/env@14.2.17': {} + '@next/env@15.0.3': {} '@next/eslint-plugin-next@14.2.17': dependencies: glob: 10.3.10 - '@next/swc-darwin-arm64@14.2.17': + '@next/swc-darwin-arm64@15.0.3': optional: true - '@next/swc-darwin-x64@14.2.17': + '@next/swc-darwin-x64@15.0.3': optional: true - '@next/swc-linux-arm64-gnu@14.2.17': + '@next/swc-linux-arm64-gnu@15.0.3': optional: true - '@next/swc-linux-arm64-musl@14.2.17': + '@next/swc-linux-arm64-musl@15.0.3': optional: true - '@next/swc-linux-x64-gnu@14.2.17': + '@next/swc-linux-x64-gnu@15.0.3': optional: true - '@next/swc-linux-x64-musl@14.2.17': + '@next/swc-linux-x64-musl@15.0.3': optional: true - '@next/swc-win32-arm64-msvc@14.2.17': + '@next/swc-win32-arm64-msvc@15.0.3': optional: true - '@next/swc-win32-ia32-msvc@14.2.17': - optional: true - - '@next/swc-win32-x64-msvc@14.2.17': + '@next/swc-win32-x64-msvc@15.0.3': optional: true '@nodelib/fs.scandir@2.1.5': @@ -11864,6 +12139,12 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true + '@pkmn/sets@5.1.2': + dependencies: + '@pkmn/types': 4.0.0 + + '@pkmn/types@4.0.0': {} + '@planetscale/database@1.19.0': optional: true @@ -12696,6 +12977,8 @@ snapshots: '@radix-ui/rect@1.1.0': {} + '@rails/actioncable@7.2.200': {} + '@react-native-community/cli-debugger-ui@14.1.0': dependencies: serve-static: 1.16.2 @@ -13273,9 +13556,8 @@ snapshots: '@swc/counter@0.1.3': {} - '@swc/helpers@0.5.5': + '@swc/helpers@0.5.13': dependencies: - '@swc/counter': 0.1.3 tslib: 2.8.1 '@t3-oss/env-core@0.11.1(typescript@5.6.3)(zod@3.23.8)': @@ -13298,6 +13580,14 @@ snapshots: '@tanstack/query-core': 5.59.13 react: 18.3.1 + '@tanstack/react-table@8.20.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@tanstack/table-core': 8.20.5 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@tanstack/table-core@8.20.5': {} + '@tootallnate/quickjs-emscripten@0.23.0': {} '@trpc/client@11.0.0-rc.477(@trpc/server@11.0.0-rc.477)': @@ -13617,6 +13907,8 @@ snapshots: dependencies: '@types/istanbul-lib-report': 3.0.3 + '@types/js-cookie@3.0.6': {} + '@types/json-schema@7.0.15': {} '@types/json5@0.0.29': {} @@ -13654,6 +13946,8 @@ snapshots: '@types/prop-types@15.7.13': {} + '@types/rails__actioncable@6.1.11': {} + '@types/react-dom@18.3.1': dependencies: '@types/react': 18.3.11 @@ -13775,14 +14069,14 @@ snapshots: '@uploadthing/mime-types@0.3.2': {} - '@uploadthing/react@7.1.1(next@14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(uploadthing@7.3.0(h3@1.13.0)(next@14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3))))': + '@uploadthing/react@7.1.1(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(uploadthing@7.3.0(h3@1.13.0)(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3))))': dependencies: '@uploadthing/shared': 7.1.1 file-selector: 0.6.0 react: 18.3.1 - uploadthing: 7.3.0(h3@1.13.0)(next@14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3))) + uploadthing: 7.3.0(h3@1.13.0)(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3))) optionalDependencies: - next: 14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@uploadthing/shared@7.1.1': dependencies: @@ -13806,11 +14100,11 @@ snapshots: graphql: 15.8.0 wonka: 4.0.15 - '@vercel/analytics@1.3.2(next@14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@vercel/analytics@1.3.2(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: server-only: 0.0.1 optionalDependencies: - next: 14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 '@vercel/functions@1.5.0': {} @@ -13845,9 +14139,9 @@ snapshots: transitivePeerDependencies: - utf-8-validate - '@vercel/speed-insights@1.1.0(next@14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@vercel/speed-insights@1.1.0(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': optionalDependencies: - next: 14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 '@vladfrangu/async_event_emitter@2.4.6': {} @@ -15741,9 +16035,9 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 - ezheaders@0.1.0(next@14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): + ezheaders@0.1.0(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): dependencies: - next: 14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) fast-check@3.23.1: dependencies: @@ -15961,9 +16255,9 @@ snapshots: strip-ansi: 6.0.1 wide-align: 1.1.5 - geist@1.3.1(next@14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): + geist@1.3.1(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): dependencies: - next: 14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) generate-function@2.3.1: dependencies: @@ -17397,28 +17691,28 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - next@14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@next/env': 14.2.17 - '@swc/helpers': 0.5.5 + '@next/env': 15.0.3 + '@swc/counter': 0.1.3 + '@swc/helpers': 0.5.13 busboy: 1.6.0 caniuse-lite: 1.0.30001678 - graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.1(react@18.3.1) + styled-jsx: 5.1.6(react@18.3.1) optionalDependencies: - '@next/swc-darwin-arm64': 14.2.17 - '@next/swc-darwin-x64': 14.2.17 - '@next/swc-linux-arm64-gnu': 14.2.17 - '@next/swc-linux-arm64-musl': 14.2.17 - '@next/swc-linux-x64-gnu': 14.2.17 - '@next/swc-linux-x64-musl': 14.2.17 - '@next/swc-win32-arm64-msvc': 14.2.17 - '@next/swc-win32-ia32-msvc': 14.2.17 - '@next/swc-win32-x64-msvc': 14.2.17 + '@next/swc-darwin-arm64': 15.0.3 + '@next/swc-darwin-x64': 15.0.3 + '@next/swc-linux-arm64-gnu': 15.0.3 + '@next/swc-linux-arm64-musl': 15.0.3 + '@next/swc-linux-x64-gnu': 15.0.3 + '@next/swc-linux-x64-musl': 15.0.3 + '@next/swc-win32-arm64-msvc': 15.0.3 + '@next/swc-win32-x64-msvc': 15.0.3 '@opentelemetry/api': 1.9.0 + sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -18753,6 +19047,33 @@ snapshots: shallowequal@1.1.0: {} + sharp@0.33.5: + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + semver: 7.6.3 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 + optional: true + shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 @@ -18998,7 +19319,7 @@ snapshots: structured-headers@0.4.1: {} - styled-jsx@5.1.1(react@18.3.1): + styled-jsx@5.1.6(react@18.3.1): dependencies: client-only: 0.0.1 react: 18.3.1 @@ -19070,6 +19391,15 @@ snapshots: tailwind-merge@2.5.4: {} + tailwind-variants@0.2.1(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3))): + dependencies: + tailwind-merge: 2.5.4 + tailwindcss: 3.4.14(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3)) + + tailwindcss-animate@1.0.7(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3))): + dependencies: + tailwindcss: 3.4.14(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3)) + tailwindcss-animate@1.0.7(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3))): dependencies: tailwindcss: 3.4.14(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3)) @@ -19342,6 +19672,8 @@ snapshots: turbo-windows-64: 2.2.3 turbo-windows-arm64: 2.2.3 + tweetnacl@1.0.3: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -19581,7 +19913,7 @@ snapshots: registry-auth-token: 3.3.2 registry-url: 3.1.0 - uploadthing@7.3.0(h3@1.13.0)(next@14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3))): + uploadthing@7.3.0(h3@1.13.0)(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3))): dependencies: '@effect/platform': 0.69.8(effect@3.10.3) '@uploadthing/mime-types': 0.3.2 @@ -19589,7 +19921,7 @@ snapshots: effect: 3.10.3 optionalDependencies: h3: 1.13.0 - next: 14.2.17(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tailwindcss: 3.4.14(ts-node@10.9.2(@types/node@20.17.6)(typescript@5.6.3)) upper-case-first@1.1.2: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 7ce11723..c0844a7d 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -13,7 +13,9 @@ catalog: "@trpc/react-query": ^11.0.0-rc.477 "@trpc/server": ^11.0.0-rc.477 "@t3-oss/env-nextjs": ^0 + "@tanstack/react-table": ^8 eslint: ^9.12.0 + next: ^15 "next-auth": ^4 "next-themes": ^0 prettier: ^3.3.3 @@ -23,10 +25,10 @@ catalog: catalogs: react18: - react: 18.3.1 - react-dom: 18.3.1 - "@types/react": ^18.3.11 - "@types/react-dom": ^18.3.1 + react: ^18 + react-dom: ^18 + "@types/react": ^18 + "@types/react-dom": ^18 react19: react: rc react-dom: rc