···11-import type * as React from "react";
21import { cva, type VariantProps } from "class-variance-authority";
22+import type * as React from "react";
3344import { cn } from "@/lib/utils";
55
+1-1
apps/web/src/lib/utils.ts
···11-import { clsx, type ClassValue } from "clsx";
11+import { type ClassValue, clsx } from "clsx";
22import { twMerge } from "tailwind-merge";
3344export function cn(...inputs: ClassValue[]) {
+7-10
apps/web/src/routes/__root.tsx
···11+import { configureApiClient, setOnUnauthorized } from "@opnshelf/api";
22+import { TanStackDevtools } from "@tanstack/react-devtools";
33+import { type QueryClient, QueryClientProvider } from "@tanstack/react-query";
14import {
55+ createRootRouteWithContext,
26 HeadContent,
77+ Outlet,
38 Scripts,
44- createRootRouteWithContext,
55- Outlet,
69 useNavigate,
710} from "@tanstack/react-router";
1111+import { TanStackRouterDevtoolsPanel } from "@tanstack/react-router-devtools";
812import { useEffect } from "react";
99-import { QueryClientProvider, type QueryClient } from "@tanstack/react-query";
1010-import { TanStackRouterDevtoolsPanel } from "@tanstack/react-router-devtools";
1111-import { TanStackDevtools } from "@tanstack/react-devtools";
1212-1313+import { env } from "@/env";
1314import Header from "../components/Header";
1414-1515import TanStackQueryDevtools from "../integrations/tanstack-query/devtools";
1616-1716import appCss from "../styles.css?url";
1818-import { configureApiClient, setOnUnauthorized } from "@opnshelf/api";
1919-import { env } from "@/env";
20172118interface MyRouterContext {
2219 queryClient: QueryClient;
+2-2
apps/web/src/routes/auth/complete.tsx
···11-import { createFileRoute, useNavigate } from "@tanstack/react-router";
22-import { useEffect } from "react";
31import { useQueryClient } from "@tanstack/react-query";
22+import { createFileRoute, useNavigate } from "@tanstack/react-router";
43import { Film } from "lucide-react";
44+import { useEffect } from "react";
5566export const Route = createFileRoute("/auth/complete")({
77 component: AuthCompletePage,
+1-1
apps/web/src/routes/index.tsx
···11import { createFileRoute, Link } from "@tanstack/react-router";
22-import { Search, Film } from "lucide-react";
22+import { Film, Search } from "lucide-react";
3344export const Route = createFileRoute("/")({
55 component: HomePage,
+4-4
apps/web/src/routes/login.tsx
···11-import { createFileRoute, useNavigate } from "@tanstack/react-router";
22-import { useState, useEffect, useId } from "react";
33-import { useQuery } from "@tanstack/react-query";
44-import { Film, LogIn, AlertCircle } from "lucide-react";
51import { authControllerMeOptions, getLoginUrl } from "@opnshelf/api";
22+import { useQuery } from "@tanstack/react-query";
33+import { createFileRoute, useNavigate } from "@tanstack/react-router";
44+import { AlertCircle, Film, LogIn } from "lucide-react";
55+import { useEffect, useId, useState } from "react";
66import { z } from "zod";
77import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert";
88
+5-5
apps/web/src/routes/search.tsx
···11-import { createFileRoute, useNavigate } from "@tanstack/react-router";
22-import { useState, useEffect, useRef, useMemo } from "react";
33-import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
41import {
52 authControllerMeOptions,
63 moviesControllerGetUserMoviesOptions,
77- moviesControllerSearchMoviesOptions,
84 moviesControllerMarkWatchedMutation,
55+ moviesControllerSearchMoviesOptions,
96 moviesControllerUnmarkWatchedMutation,
107} from "@opnshelf/api";
1111-import { Search, Check, Plus } from "lucide-react";
88+import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
99+import { createFileRoute, useNavigate } from "@tanstack/react-router";
1010+import { Check, Plus, Search } from "lucide-react";
1111+import { useEffect, useMemo, useRef, useState } from "react";
12121313export const Route = createFileRoute("/search")({
1414 component: SearchPage,
+3-3
apps/web/src/routes/shelf.tsx
···11-import { createFileRoute, Link } from "@tanstack/react-router";
22-import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
31import {
42 authControllerMeOptions,
53 moviesControllerGetUserMoviesOptions,
64 moviesControllerUnmarkWatchedMutation,
75} from "@opnshelf/api";
88-import { BookOpen, Trash2, LogIn } from "lucide-react";
66+import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
77+import { createFileRoute, Link } from "@tanstack/react-router";
88+import { BookOpen, LogIn, Trash2 } from "lucide-react";
991010export const Route = createFileRoute("/shelf")({
1111 component: ShelfPage,
+4-5
apps/web/vite.config.ts
···11-import { defineConfig } from "vite";
11+import { fileURLToPath, URL } from "node:url";
22+import tailwindcss from "@tailwindcss/vite";
23import { devtools } from "@tanstack/devtools-vite";
34import { tanstackStart } from "@tanstack/react-start/plugin/vite";
45import viteReact from "@vitejs/plugin-react";
66+import { nitro } from "nitro/vite";
77+import { defineConfig } from "vite";
58import viteTsConfigPaths from "vite-tsconfig-paths";
66-import { fileURLToPath, URL } from "node:url";
77-88-import tailwindcss from "@tailwindcss/vite";
99-import { nitro } from "nitro/vite";
1091110const config = defineConfig({
1211 server: {