From f8fb14c9f4c1255a8777632be27bf1ab13dda0ae Mon Sep 17 00:00:00 2001 From: Apocalix Date: Mon, 17 Aug 2026 13:39:44 -0600 Subject: [PATCH 1/2] chore: consolidate maintenance upgrades --- apps/web/package.json | 18 +- apps/web/src/app/layout.tsx | 9 + apps/web/src/components/ui/chart.tsx | 353 ----------------------- apps/web/src/components/ui/resizable.tsx | 54 ---- apps/web/tsconfig.json | 19 +- bun.lockb | Bin 280072 -> 271360 bytes package.json | 5 +- turbo.json | 41 +-- 8 files changed, 49 insertions(+), 450 deletions(-) delete mode 100644 apps/web/src/components/ui/chart.tsx delete mode 100644 apps/web/src/components/ui/resizable.tsx diff --git a/apps/web/package.json b/apps/web/package.json index bcd11b0..c8eb25e 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -4,9 +4,11 @@ "private": true, "license": "AGPL-3.0", "scripts": { - "dev": "next dev --turbopack --port=3001", + "dev": "next dev --port=3001", "build": "next build", - "start": "next start" + "start": "next start", + "check-types": "tsc --noEmit", + "test": "vitest run" }, "dependencies": { "@hookform/resolvers": "^5.2.1", @@ -46,15 +48,13 @@ "embla-carousel-react": "^8.6.0", "input-otp": "^1.4.2", "lucide-react": "^0.542.0", - "next": "15.5.0", + "next": "16.3.1", "next-themes": "^0.4.6", "radix-ui": "^1.4.2", - "react": "^19.0.0", + "react": "19.2.8", "react-day-picker": "^9.9.0", - "react-dom": "^19.0.0", + "react-dom": "19.2.8", "react-hook-form": "^7.62.0", - "react-resizable-panels": "^3.0.5", - "recharts": "2.15.4", "sonner": "^2.0.7", "tailwind-merge": "^3.3.1", "tw-animate-css": "^1.3.4", @@ -65,8 +65,8 @@ "@tailwindcss/postcss": "^4.1.10", "@tanstack/react-query-devtools": "^5.85.5", "@types/node": "^24.3.1", - "@types/react": "^19", - "@types/react-dom": "^19", + "@types/react": "19.2.18", + "@types/react-dom": "19.2.4", "tailwindcss": "^4.1.10", "typescript": "^5", "vitest": "^3.2.4", diff --git a/apps/web/src/app/layout.tsx b/apps/web/src/app/layout.tsx index f863550..138a717 100644 --- a/apps/web/src/app/layout.tsx +++ b/apps/web/src/app/layout.tsx @@ -18,8 +18,17 @@ const geistMono = Geist_Mono({ const defaultTitle = "binaryx"; const defaultDescription = "binaryx"; const socialImagePath = "/binaryx_bg.png"; +const deploymentHost = process.env.VERCEL_PROJECT_PRODUCTION_URL ?? process.env.VERCEL_URL; +const localMetadataUrl = "http://localhost:3001"; +const deploymentUrl = deploymentHost + ? deploymentHost.includes("://") + ? deploymentHost + : `https://${deploymentHost}` + : localMetadataUrl; +const metadataBase = new URL(URL.canParse(deploymentUrl) ? deploymentUrl : localMetadataUrl); export const metadata: Metadata = { + metadataBase, title: defaultTitle, description: defaultDescription, openGraph: { diff --git a/apps/web/src/components/ui/chart.tsx b/apps/web/src/components/ui/chart.tsx deleted file mode 100644 index 97cc280..0000000 --- a/apps/web/src/components/ui/chart.tsx +++ /dev/null @@ -1,353 +0,0 @@ -"use client" - -import * as React from "react" -import * as RechartsPrimitive from "recharts" - -import { cn } from "@/lib/utils" - -// Format: { THEME_NAME: CSS_SELECTOR } -const THEMES = { light: "", dark: ".dark" } as const - -export type ChartConfig = { - [k in string]: { - label?: React.ReactNode - icon?: React.ComponentType - } & ( - | { color?: string; theme?: never } - | { color?: never; theme: Record } - ) -} - -type ChartContextProps = { - config: ChartConfig -} - -const ChartContext = React.createContext(null) - -function useChart() { - const context = React.useContext(ChartContext) - - if (!context) { - throw new Error("useChart must be used within a ") - } - - return context -} - -function ChartContainer({ - id, - className, - children, - config, - ...props -}: React.ComponentProps<"div"> & { - config: ChartConfig - children: React.ComponentProps< - typeof RechartsPrimitive.ResponsiveContainer - >["children"] -}) { - const uniqueId = React.useId() - const chartId = `chart-${id || uniqueId.replace(/:/g, "")}` - - return ( - -
- - - {children} - -
-
- ) -} - -const ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => { - const colorConfig = Object.entries(config).filter( - ([, config]) => config.theme || config.color - ) - - if (!colorConfig.length) { - return null - } - - return ( -