A personal media tracker built on the AT Protocol opnshelf.xyz
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

chore: biome check

+38 -49
-7
.github/workflows/ci-web.yml
··· 37 37 - name: Typecheck 38 38 run: pnpm --filter "./apps/web" exec tsc --noEmit 39 39 40 - - name: Test 41 - run: pnpm --filter "./apps/web" run test 42 - 43 - - name: Build 44 - run: pnpm --filter "./apps/web" run build 45 - env: 46 - VITE_API_URL: "http://localhost:3001"
+10 -10
apps/web/src/components/Header.tsx
··· 1 + import { 2 + authControllerLogoutMutation, 3 + authControllerMeOptions, 4 + } from "@opnshelf/api"; 5 + import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; 1 6 import { Link, useNavigate } from "@tanstack/react-router"; 2 - import { useState } from "react"; 3 - import { useQuery, useQueryClient, useMutation } from "@tanstack/react-query"; 4 7 import { 8 + BookOpen, 5 9 Film, 6 10 Home, 7 - Menu, 8 - Search, 9 - X, 10 11 LogIn, 11 12 LogOut, 13 + Menu, 14 + Search, 12 15 User, 13 - BookOpen, 16 + X, 14 17 } from "lucide-react"; 15 - import { 16 - authControllerMeOptions, 17 - authControllerLogoutMutation, 18 - } from "@opnshelf/api"; 18 + import { useState } from "react"; 19 19 20 20 export default function Header() { 21 21 const [isOpen, setIsOpen] = useState(false);
+1 -1
apps/web/src/components/ui/alert.tsx
··· 1 - import type * as React from "react"; 2 1 import { cva, type VariantProps } from "class-variance-authority"; 2 + import type * as React from "react"; 3 3 4 4 import { cn } from "@/lib/utils"; 5 5
+1 -1
apps/web/src/lib/utils.ts
··· 1 - import { clsx, type ClassValue } from "clsx"; 1 + import { type ClassValue, clsx } from "clsx"; 2 2 import { twMerge } from "tailwind-merge"; 3 3 4 4 export function cn(...inputs: ClassValue[]) {
+7 -10
apps/web/src/routes/__root.tsx
··· 1 + import { configureApiClient, setOnUnauthorized } from "@opnshelf/api"; 2 + import { TanStackDevtools } from "@tanstack/react-devtools"; 3 + import { type QueryClient, QueryClientProvider } from "@tanstack/react-query"; 1 4 import { 5 + createRootRouteWithContext, 2 6 HeadContent, 7 + Outlet, 3 8 Scripts, 4 - createRootRouteWithContext, 5 - Outlet, 6 9 useNavigate, 7 10 } from "@tanstack/react-router"; 11 + import { TanStackRouterDevtoolsPanel } from "@tanstack/react-router-devtools"; 8 12 import { useEffect } from "react"; 9 - import { QueryClientProvider, type QueryClient } from "@tanstack/react-query"; 10 - import { TanStackRouterDevtoolsPanel } from "@tanstack/react-router-devtools"; 11 - import { TanStackDevtools } from "@tanstack/react-devtools"; 12 - 13 + import { env } from "@/env"; 13 14 import Header from "../components/Header"; 14 - 15 15 import TanStackQueryDevtools from "../integrations/tanstack-query/devtools"; 16 - 17 16 import appCss from "../styles.css?url"; 18 - import { configureApiClient, setOnUnauthorized } from "@opnshelf/api"; 19 - import { env } from "@/env"; 20 17 21 18 interface MyRouterContext { 22 19 queryClient: QueryClient;
+2 -2
apps/web/src/routes/auth/complete.tsx
··· 1 - import { createFileRoute, useNavigate } from "@tanstack/react-router"; 2 - import { useEffect } from "react"; 3 1 import { useQueryClient } from "@tanstack/react-query"; 2 + import { createFileRoute, useNavigate } from "@tanstack/react-router"; 4 3 import { Film } from "lucide-react"; 4 + import { useEffect } from "react"; 5 5 6 6 export const Route = createFileRoute("/auth/complete")({ 7 7 component: AuthCompletePage,
+1 -1
apps/web/src/routes/index.tsx
··· 1 1 import { createFileRoute, Link } from "@tanstack/react-router"; 2 - import { Search, Film } from "lucide-react"; 2 + import { Film, Search } from "lucide-react"; 3 3 4 4 export const Route = createFileRoute("/")({ 5 5 component: HomePage,
+4 -4
apps/web/src/routes/login.tsx
··· 1 - import { createFileRoute, useNavigate } from "@tanstack/react-router"; 2 - import { useState, useEffect, useId } from "react"; 3 - import { useQuery } from "@tanstack/react-query"; 4 - import { Film, LogIn, AlertCircle } from "lucide-react"; 5 1 import { authControllerMeOptions, getLoginUrl } from "@opnshelf/api"; 2 + import { useQuery } from "@tanstack/react-query"; 3 + import { createFileRoute, useNavigate } from "@tanstack/react-router"; 4 + import { AlertCircle, Film, LogIn } from "lucide-react"; 5 + import { useEffect, useId, useState } from "react"; 6 6 import { z } from "zod"; 7 7 import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; 8 8
+5 -5
apps/web/src/routes/search.tsx
··· 1 - import { createFileRoute, useNavigate } from "@tanstack/react-router"; 2 - import { useState, useEffect, useRef, useMemo } from "react"; 3 - import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; 4 1 import { 5 2 authControllerMeOptions, 6 3 moviesControllerGetUserMoviesOptions, 7 - moviesControllerSearchMoviesOptions, 8 4 moviesControllerMarkWatchedMutation, 5 + moviesControllerSearchMoviesOptions, 9 6 moviesControllerUnmarkWatchedMutation, 10 7 } from "@opnshelf/api"; 11 - import { Search, Check, Plus } from "lucide-react"; 8 + import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; 9 + import { createFileRoute, useNavigate } from "@tanstack/react-router"; 10 + import { Check, Plus, Search } from "lucide-react"; 11 + import { useEffect, useMemo, useRef, useState } from "react"; 12 12 13 13 export const Route = createFileRoute("/search")({ 14 14 component: SearchPage,
+3 -3
apps/web/src/routes/shelf.tsx
··· 1 - import { createFileRoute, Link } from "@tanstack/react-router"; 2 - import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; 3 1 import { 4 2 authControllerMeOptions, 5 3 moviesControllerGetUserMoviesOptions, 6 4 moviesControllerUnmarkWatchedMutation, 7 5 } from "@opnshelf/api"; 8 - import { BookOpen, Trash2, LogIn } from "lucide-react"; 6 + import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; 7 + import { createFileRoute, Link } from "@tanstack/react-router"; 8 + import { BookOpen, LogIn, Trash2 } from "lucide-react"; 9 9 10 10 export const Route = createFileRoute("/shelf")({ 11 11 component: ShelfPage,
+4 -5
apps/web/vite.config.ts
··· 1 - import { defineConfig } from "vite"; 1 + import { fileURLToPath, URL } from "node:url"; 2 + import tailwindcss from "@tailwindcss/vite"; 2 3 import { devtools } from "@tanstack/devtools-vite"; 3 4 import { tanstackStart } from "@tanstack/react-start/plugin/vite"; 4 5 import viteReact from "@vitejs/plugin-react"; 6 + import { nitro } from "nitro/vite"; 7 + import { defineConfig } from "vite"; 5 8 import viteTsConfigPaths from "vite-tsconfig-paths"; 6 - import { fileURLToPath, URL } from "node:url"; 7 - 8 - import tailwindcss from "@tailwindcss/vite"; 9 - import { nitro } from "nitro/vite"; 10 9 11 10 const config = defineConfig({ 12 11 server: {