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