From 994bdfa41d9f1de6a3f5ea808ab61bd5128631dc Mon Sep 17 00:00:00 2001 From: Taken Date: Fri, 11 Jul 2025 19:54:41 +0200 Subject: [PATCH] Updated files --- dev-db.yml | 2 +- package.json | 2 + pnpm-lock.yaml | 6 + src/app/globals.css | 355 ++++++++++++++++++++++---------------------- src/app/robots.ts | 33 +--- 5 files changed, 194 insertions(+), 204 deletions(-) diff --git a/dev-db.yml b/dev-db.yml index 1987532..370f14a 100644 --- a/dev-db.yml +++ b/dev-db.yml @@ -5,7 +5,7 @@ services: image: postgres:16.4 restart: unless-stopped ports: - - 5433:5432 + - 5432:5432 environment: - POSTGRES_PASSWORD=dev - POSTGRES_USER=dev diff --git a/package.json b/package.json index 04dd457..f7cb9fa 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ }, "devDependencies": { "@eslint/eslintrc": "^3", + "@next/eslint-plugin-next": "^15.3.4", "@tailwindcss/postcss": "^4", "@types/node": "^20", "@types/react": "^19", @@ -54,6 +55,7 @@ "drizzle-kit": "^0.31.2", "eslint": "^9", "eslint-config-next": "15.3.4", + "eslint-plugin-react-hooks": "^5.2.0", "tailwindcss": "^4", "tw-animate-css": "^1.3.4", "typescript": "^5" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d66c314..c1c1760 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -96,6 +96,9 @@ importers: '@eslint/eslintrc': specifier: ^3 version: 3.3.1 + '@next/eslint-plugin-next': + specifier: ^15.3.4 + version: 15.3.4 '@tailwindcss/postcss': specifier: ^4 version: 4.1.10 @@ -117,6 +120,9 @@ importers: eslint-config-next: specifier: 15.3.4 version: 15.3.4(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-react-hooks: + specifier: ^5.2.0 + version: 5.2.0(eslint@9.29.0(jiti@2.4.2)) tailwindcss: specifier: ^4 version: 4.1.10 diff --git a/src/app/globals.css b/src/app/globals.css index 3039db9..1a6e594 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -4,195 +4,196 @@ @custom-variant dark (&:is(.dark *)); @theme inline { - --radius-sm: calc(var(--radius) - 4px); - --radius-md: calc(var(--radius) - 2px); - --radius-lg: var(--radius); - --radius-xl: calc(var(--radius) + 4px); - --color-background: var(--background); - --color-foreground: var(--foreground); - --color-card: var(--card); - --color-card-foreground: var(--card-foreground); - --color-popover: var(--popover); - --color-popover-foreground: var(--popover-foreground); - --color-primary: var(--primary); - --color-primary-foreground: var(--primary-foreground); - --color-secondary: var(--secondary); - --color-secondary-foreground: var(--secondary-foreground); - --color-muted: var(--muted); - --color-muted-foreground: var(--muted-foreground); - --color-accent: var(--accent); - --color-accent-foreground: var(--accent-foreground); - --color-destructive: var(--destructive); - --color-border: var(--border); - --color-input: var(--input); - --color-ring: var(--ring); - --color-chart-1: var(--chart-1); - --color-chart-2: var(--chart-2); - --color-chart-3: var(--chart-3); - --color-chart-4: var(--chart-4); - --color-chart-5: var(--chart-5); - --color-sidebar: var(--sidebar); - --color-sidebar-foreground: var(--sidebar-foreground); - --color-sidebar-primary: var(--sidebar-primary); - --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); - --color-sidebar-accent: var(--sidebar-accent); - --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); - --color-sidebar-border: var(--sidebar-border); - --color-sidebar-ring: var(--sidebar-ring); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); } :root { - --background: oklch(0.9689 0.009 314.7819); - --foreground: oklch(0.3729 0.0306 259.7328); - --card: oklch(1 0 0); - --card-foreground: oklch(0.3729 0.0306 259.7328); - --popover: oklch(1 0 0); - --popover-foreground: oklch(0.3729 0.0306 259.7328); - --primary: oklch(0.709 0.1592 293.5412); - --primary-foreground: oklch(1 0 0); - --secondary: oklch(0.9073 0.053 306.0902); - --secondary-foreground: oklch(0.4461 0.0263 256.8018); - --muted: oklch(0.9464 0.0327 307.1745); - --muted-foreground: oklch(0.551 0.0234 264.3637); - --accent: oklch(0.9376 0.026 321.9388); - --accent-foreground: oklch(0.3729 0.0306 259.7328); - --destructive: oklch(0.8077 0.1035 19.5706); - --destructive-foreground: oklch(1 0 0); - --border: oklch(0.9073 0.053 306.0902); - --input: oklch(0.9073 0.053 306.0902); - --ring: oklch(0.709 0.1592 293.5412); - --chart-1: oklch(0.709 0.1592 293.5412); - --chart-2: oklch(0.6056 0.2189 292.7172); - --chart-3: oklch(0.5413 0.2466 293.009); - --chart-4: oklch(0.4907 0.2412 292.5809); - --chart-5: oklch(0.432 0.2106 292.7591); - --sidebar: oklch(0.9073 0.053 306.0902); - --sidebar-foreground: oklch(0.3729 0.0306 259.7328); - --sidebar-primary: oklch(0.709 0.1592 293.5412); - --sidebar-primary-foreground: oklch(1 0 0); - --sidebar-accent: oklch(0.9376 0.026 321.9388); - --sidebar-accent-foreground: oklch(0.3729 0.0306 259.7328); - --sidebar-border: oklch(0.9073 0.053 306.0902); - --sidebar-ring: oklch(0.709 0.1592 293.5412); - --radius: 0.55rem; - --shadow-2xs: 0px 8px 16px -4px hsl(0 0% 0% / 0.1); - --shadow-xs: 0px 8px 16px -4px hsl(0 0% 0% / 0.1); - --shadow-sm: 0px 8px 16px -4px hsl(0 0% 0% / 0.2), - 0px 1px 2px -5px hsl(0 0% 0% / 0.2); - --shadow: 0px 8px 16px -4px hsl(0 0% 0% / 0.2), - 0px 1px 2px -5px hsl(0 0% 0% / 0.2); - --shadow-md: 0px 8px 16px -4px hsl(0 0% 0% / 0.2), - 0px 2px 4px -5px hsl(0 0% 0% / 0.2); - --shadow-lg: 0px 8px 16px -4px hsl(0 0% 0% / 0.2), - 0px 4px 6px -5px hsl(0 0% 0% / 0.2); - --shadow-xl: 0px 8px 16px -4px hsl(0 0% 0% / 0.2), - 0px 8px 10px -5px hsl(0 0% 0% / 0.2); - --shadow-2xl: 0px 8px 16px -4px hsl(0 0% 0% / 0.5); + --background: oklch(0.9689 0.009 314.7819); + --foreground: oklch(0.3729 0.0306 259.7328); + --card: oklch(1 0 0); + --card-foreground: oklch(0.3729 0.0306 259.7328); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.3729 0.0306 259.7328); + --primary: oklch(0.709 0.1592 293.5412); + --primary-foreground: oklch(1 0 0); + --secondary: oklch(0.9073 0.053 306.0902); + --secondary-foreground: oklch(0.4461 0.0263 256.8018); + --muted: oklch(0.9464 0.0327 307.1745); + --muted-foreground: oklch(0.551 0.0234 264.3637); + --accent: oklch(0.9376 0.026 321.9388); + --accent-foreground: oklch(0.3729 0.0306 259.7328); + --destructive: oklch(0.8077 0.1035 19.5706); + --destructive-foreground: oklch(1 0 0); + --border: oklch(0.9073 0.053 306.0902); + --input: oklch(0.9073 0.053 306.0902); + --ring: oklch(0.709 0.1592 293.5412); + --chart-1: oklch(0.709 0.1592 293.5412); + --chart-2: oklch(0.6056 0.2189 292.7172); + --chart-3: oklch(0.5413 0.2466 293.009); + --chart-4: oklch(0.4907 0.2412 292.5809); + --chart-5: oklch(0.432 0.2106 292.7591); + --sidebar: oklch(0.9073 0.053 306.0902); + --sidebar-foreground: oklch(0.3729 0.0306 259.7328); + --sidebar-primary: oklch(0.709 0.1592 293.5412); + --sidebar-primary-foreground: oklch(1 0 0); + --sidebar-accent: oklch(0.9376 0.026 321.9388); + --sidebar-accent-foreground: oklch(0.3729 0.0306 259.7328); + --sidebar-border: oklch(0.9073 0.053 306.0902); + --sidebar-ring: oklch(0.709 0.1592 293.5412); + --radius: 0.55rem; + --shadow-2xs: 0px 8px 16px -4px hsl(0 0% 0% / 0.1); + --shadow-xs: 0px 8px 16px -4px hsl(0 0% 0% / 0.1); + --shadow-sm: 0px 8px 16px -4px hsl(0 0% 0% / 0.2), + 0px 1px 2px -5px hsl(0 0% 0% / 0.2); + --shadow: 0px 8px 16px -4px hsl(0 0% 0% / 0.2), + 0px 1px 2px -5px hsl(0 0% 0% / 0.2); + --shadow-md: 0px 8px 16px -4px hsl(0 0% 0% / 0.2), + 0px 2px 4px -5px hsl(0 0% 0% / 0.2); + --shadow-lg: 0px 8px 16px -4px hsl(0 0% 0% / 0.2), + 0px 4px 6px -5px hsl(0 0% 0% / 0.2); + --shadow-xl: 0px 8px 16px -4px hsl(0 0% 0% / 0.2), + 0px 8px 10px -5px hsl(0 0% 0% / 0.2); + --shadow-2xl: 0px 8px 16px -4px hsl(0 0% 0% / 0.5); } .dark { - --background: oklch(0.2161 0.0061 56.0434); - --foreground: oklch(0.9299 0.0334 272.7879); - --card: oklch(0.2805 0.0309 307.2326); - --card-foreground: oklch(0.9299 0.0334 272.7879); - --popover: oklch(0.2805 0.0309 307.2326); - --popover-foreground: oklch(0.9299 0.0334 272.7879); - --primary: oklch(0.7874 0.1179 295.7538); - --primary-foreground: oklch(0.2161 0.0061 56.0434); - --secondary: oklch(0.3416 0.0444 308.8496); - --secondary-foreground: oklch(0.8717 0.0093 258.3382); - --muted: oklch(0.2805 0.0309 307.2326); - --muted-foreground: oklch(0.7137 0.0192 261.3246); - --accent: oklch(0.3858 0.0509 304.6383); - --accent-foreground: oklch(0.8717 0.0093 258.3382); - --destructive: oklch(0.8077 0.1035 19.5706); - --destructive-foreground: oklch(0.2161 0.0061 56.0434); - --border: oklch(0.3416 0.0444 308.8496); - --input: oklch(0.3416 0.0444 308.8496); - --ring: oklch(0.7874 0.1179 295.7538); - --chart-1: oklch(0.7874 0.1179 295.7538); - --chart-2: oklch(0.709 0.1592 293.5412); - --chart-3: oklch(0.6056 0.2189 292.7172); - --chart-4: oklch(0.5413 0.2466 293.009); - --chart-5: oklch(0.4907 0.2412 292.5809); - --sidebar: oklch(0.3416 0.0444 308.8496); - --sidebar-foreground: oklch(0.9299 0.0334 272.7879); - --sidebar-primary: oklch(0.7874 0.1179 295.7538); - --sidebar-primary-foreground: oklch(0.2161 0.0061 56.0434); - --sidebar-accent: oklch(0.3858 0.0509 304.6383); - --sidebar-accent-foreground: oklch(0.8717 0.0093 258.3382); - --sidebar-border: oklch(0.3416 0.0444 308.8496); - --sidebar-ring: oklch(0.7874 0.1179 295.7538); - --radius: 0.55rem; - --shadow-2xs: 0px 8px 16px -4px hsl(0 0% 0% / 0.1); - --shadow-xs: 0px 8px 16px -4px hsl(0 0% 0% / 0.1); - --shadow-sm: 0px 8px 16px -4px hsl(0 0% 0% / 0.2), - 0px 1px 2px -5px hsl(0 0% 0% / 0.2); - --shadow: 0px 8px 16px -4px hsl(0 0% 0% / 0.2), - 0px 1px 2px -5px hsl(0 0% 0% / 0.2); - --shadow-md: 0px 8px 16px -4px hsl(0 0% 0% / 0.2), - 0px 2px 4px -5px hsl(0 0% 0% / 0.2); - --shadow-lg: 0px 8px 16px -4px hsl(0 0% 0% / 0.2), - 0px 4px 6px -5px hsl(0 0% 0% / 0.2); - --shadow-xl: 0px 8px 16px -4px hsl(0 0% 0% / 0.2), - 0px 8px 10px -5px hsl(0 0% 0% / 0.2); - --shadow-2xl: 0px 8px 16px -4px hsl(0 0% 0% / 0.5); + --background: oklch(0.2161 0.0061 56.0434); + --foreground: oklch(0.9299 0.0334 272.7879); + --card: oklch(0.2805 0.0309 307.2326); + --card-foreground: oklch(0.9299 0.0334 272.7879); + --popover: oklch(0.2805 0.0309 307.2326); + --popover-foreground: oklch(0.9299 0.0334 272.7879); + --primary: oklch(0.7874 0.1179 295.7538); + --primary-foreground: oklch(0.2161 0.0061 56.0434); + --secondary: oklch(0.3416 0.0444 308.8496); + --secondary-foreground: oklch(0.8717 0.0093 258.3382); + --muted: oklch(0.2805 0.0309 307.2326); + --muted-foreground: oklch(0.7137 0.0192 261.3246); + --accent: oklch(0.3858 0.0509 304.6383); + --accent-foreground: oklch(0.8717 0.0093 258.3382); + --destructive: oklch(0.8077 0.1035 19.5706); + --destructive-foreground: oklch(0.2161 0.0061 56.0434); + --border: oklch(0.3416 0.0444 308.8496); + --input: oklch(0.3416 0.0444 308.8496); + --ring: oklch(0.7874 0.1179 295.7538); + --chart-1: oklch(0.7874 0.1179 295.7538); + --chart-2: oklch(0.709 0.1592 293.5412); + --chart-3: oklch(0.6056 0.2189 292.7172); + --chart-4: oklch(0.5413 0.2466 293.009); + --chart-5: oklch(0.4907 0.2412 292.5809); + --sidebar: oklch(0.3416 0.0444 308.8496); + --sidebar-foreground: oklch(0.9299 0.0334 272.7879); + --sidebar-primary: oklch(0.7874 0.1179 295.7538); + --sidebar-primary-foreground: oklch(0.2161 0.0061 56.0434); + --sidebar-accent: oklch(0.3858 0.0509 304.6383); + --sidebar-accent-foreground: oklch(0.8717 0.0093 258.3382); + --sidebar-border: oklch(0.3416 0.0444 308.8496); + --sidebar-ring: oklch(0.7874 0.1179 295.7538); + --radius: 0.55rem; + --shadow-2xs: 0px 8px 16px -4px hsl(0 0% 0% / 0.1); + --shadow-xs: 0px 8px 16px -4px hsl(0 0% 0% / 0.1); + --shadow-sm: 0px 8px 16px -4px hsl(0 0% 0% / 0.2), + 0px 1px 2px -5px hsl(0 0% 0% / 0.2); + --shadow: 0px 8px 16px -4px hsl(0 0% 0% / 0.2), + 0px 1px 2px -5px hsl(0 0% 0% / 0.2); + --shadow-md: 0px 8px 16px -4px hsl(0 0% 0% / 0.2), + 0px 2px 4px -5px hsl(0 0% 0% / 0.2); + --shadow-lg: 0px 8px 16px -4px hsl(0 0% 0% / 0.2), + 0px 4px 6px -5px hsl(0 0% 0% / 0.2); + --shadow-xl: 0px 8px 16px -4px hsl(0 0% 0% / 0.2), + 0px 8px 10px -5px hsl(0 0% 0% / 0.2); + --shadow-2xl: 0px 8px 16px -4px hsl(0 0% 0% / 0.5); } @theme inline { - --color-background: var(--background); - --color-foreground: var(--foreground); - --color-card: var(--card); - --color-card-foreground: var(--card-foreground); - --color-popover: var(--popover); - --color-popover-foreground: var(--popover-foreground); - --color-primary: var(--primary); - --color-primary-foreground: var(--primary-foreground); - --color-secondary: var(--secondary); - --color-secondary-foreground: var(--secondary-foreground); - --color-muted: var(--muted); - --color-muted-foreground: var(--muted-foreground); - --color-accent: var(--accent); - --color-accent-foreground: var(--accent-foreground); - --color-destructive: var(--destructive); - --color-destructive-foreground: var(--destructive-foreground); - --color-border: var(--border); - --color-input: var(--input); - --color-ring: var(--ring); - --color-chart-1: var(--chart-1); - --color-chart-2: var(--chart-2); - --color-chart-3: var(--chart-3); - --color-chart-4: var(--chart-4); - --color-chart-5: var(--chart-5); - --color-sidebar: var(--sidebar); - --color-sidebar-foreground: var(--sidebar-foreground); - --color-sidebar-primary: var(--sidebar-primary); - --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); - --color-sidebar-accent: var(--sidebar-accent); - --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); - --color-sidebar-border: var(--sidebar-border); - --color-sidebar-ring: var(--sidebar-ring); + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-destructive-foreground: var(--destructive-foreground); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); - --radius-sm: calc(var(--radius) - 4px); - --radius-md: calc(var(--radius) - 2px); - --radius-lg: var(--radius); - --radius-xl: calc(var(--radius) + 4px); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); - --shadow-2xs: var(--shadow-2xs); - --shadow-xs: var(--shadow-xs); - --shadow-sm: var(--shadow-sm); - --shadow: var(--shadow); - --shadow-md: var(--shadow-md); - --shadow-lg: var(--shadow-lg); - --shadow-xl: var(--shadow-xl); - --shadow-2xl: var(--shadow-2xl); + --shadow-2xs: var(--shadow-2xs); + --shadow-xs: var(--shadow-xs); + --shadow-sm: var(--shadow-sm); + --shadow: var(--shadow); + --shadow-md: var(--shadow-md); + --shadow-lg: var(--shadow-lg); + --shadow-xl: var(--shadow-xl); + --shadow-2xl: var(--shadow-2xl); } @layer base { - * { - @apply border-border outline-ring/50; - } - body { - @apply bg-background text-foreground; - } + * { + @apply border-border outline-ring/50; + } + + body { + @apply bg-background text-foreground; + } } diff --git a/src/app/robots.ts b/src/app/robots.ts index 2838b3d..b0a6bae 100644 --- a/src/app/robots.ts +++ b/src/app/robots.ts @@ -1,31 +1,12 @@ -import { getAllUrls } from "@/lib/db/urls" import type { MetadataRoute } from "next" -export const dynamic = "force-dynamic" - -export default async function robots(): Promise { - const urls = await getAllUrls() - - const crawlableUrls = urls.map(u => { - if (u.crawlable) { - return `/r/${u.slug}` - } - }).filter(v => typeof v === "string") - +export default function robots(): MetadataRoute.Robots { return { - rules: [ - { - userAgent: "*", - allow: "/", - disallow: ["/api", "/dasboard", "/sign-in"], - crawlDelay: 1 - }, - { - userAgent: "*", - disallow: "/r/", - allow: crawlableUrls, - crawlDelay: 1 - } - ] + rules: { + userAgent: "*", + allow: "/", + disallow: ["/api", "/dasboard", "/sign-in"], + crawlDelay: 1 + } } }