diff --git a/src/app/api/ai-summary/route.ts b/src/app/api/ai-summary/route.ts index 6f63e7c..5385487 100644 --- a/src/app/api/ai-summary/route.ts +++ b/src/app/api/ai-summary/route.ts @@ -1,6 +1,6 @@ +import { headers } from "next/headers"; import { NextResponse } from "next/server"; import { auth } from "@/auth"; -import { headers } from "next/headers"; import { openRouterClient } from "@/lib/openrouter-client"; export async function POST(request: Request) { diff --git a/src/app/api/auth/[...all]/route.ts b/src/app/api/auth/[...all]/route.ts index 0b0883d..8c5e03f 100644 --- a/src/app/api/auth/[...all]/route.ts +++ b/src/app/api/auth/[...all]/route.ts @@ -1,4 +1,4 @@ -import { auth } from "@/auth"; import { toNextJsHandler } from "better-auth/next-js"; +import { auth } from "@/auth"; export const { GET, POST } = toNextJsHandler(auth); diff --git a/src/app/auth/error/page.tsx b/src/app/auth/error/page.tsx index e638e58..31b49e4 100644 --- a/src/app/auth/error/page.tsx +++ b/src/app/auth/error/page.tsx @@ -1,10 +1,10 @@ "use client"; -import { Button } from "@/components/ui/button"; -import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import Link from "next/link"; import { useSearchParams } from "next/navigation"; import { Suspense } from "react"; +import { Button } from "@/components/ui/button"; +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; function Search() { const searchParams = useSearchParams(); diff --git a/src/app/auth/signin/page.tsx b/src/app/auth/signin/page.tsx index 60b08ec..8ad10f6 100644 --- a/src/app/auth/signin/page.tsx +++ b/src/app/auth/signin/page.tsx @@ -1,6 +1,9 @@ "use client"; -import { signIn, useSession } from "@/lib/auth-client"; +import Link from "next/link"; +import { useRouter } from "next/navigation"; +import { useEffect, useState } from "react"; +import { toast } from "sonner"; import { Button } from "@/components/ui/button"; import { Card, @@ -9,10 +12,7 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import Link from "next/link"; -import { useRouter } from "next/navigation"; -import { useEffect, useState } from "react"; -import { toast } from "sonner"; +import { signIn, useSession } from "@/lib/auth-client"; export default function SignInPage() { const { data: session, isPending } = useSession(); diff --git a/src/app/auth/signout/page.tsx b/src/app/auth/signout/page.tsx index 02f8636..862c39b 100644 --- a/src/app/auth/signout/page.tsx +++ b/src/app/auth/signout/page.tsx @@ -1,6 +1,8 @@ "use client"; -import { signOut, useSession } from "@/lib/auth-client"; +import Link from "next/link"; +import { useRouter } from "next/navigation"; +import { useEffect } from "react"; import { Button } from "@/components/ui/button"; import { Card, @@ -9,9 +11,7 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import Link from "next/link"; -import { useRouter } from "next/navigation"; -import { useEffect } from "react"; +import { signOut, useSession } from "@/lib/auth-client"; export default function SignOutPage() { const { data: session, isPending } = useSession(); diff --git a/src/app/globals.css b/src/app/globals.css index bd4066f..c71770d 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -4,99 +4,114 @@ @custom-variant dark (&:is(.dark *)); :root { - --background: oklch(0.9232 0.0026 48.7171); - --foreground: oklch(0.2795 0.0368 260.0310); - --card: oklch(0.9699 0.0013 106.4238); - --card-foreground: oklch(0.2795 0.0368 260.0310); - --popover: oklch(0.9699 0.0013 106.4238); - --popover-foreground: oklch(0.2795 0.0368 260.0310); - --primary: oklch(0.5854 0.2041 277.1173); - --primary-foreground: oklch(1.0000 0 0); - --secondary: oklch(0.8687 0.0043 56.3660); - --secondary-foreground: oklch(0.4461 0.0263 256.8018); - --muted: oklch(0.9232 0.0026 48.7171); - --muted-foreground: oklch(0.5510 0.0234 264.3637); - --accent: oklch(0.9376 0.0260 321.9388); - --accent-foreground: oklch(0.3729 0.0306 259.7328); - --destructive: oklch(0.6368 0.2078 25.3313); - --destructive-foreground: oklch(1.0000 0 0); - --border: oklch(0.8687 0.0043 56.3660); - --input: oklch(0.8687 0.0043 56.3660); - --ring: oklch(0.5854 0.2041 277.1173); - --chart-1: oklch(0.5854 0.2041 277.1173); - --chart-2: oklch(0.5106 0.2301 276.9656); - --chart-3: oklch(0.4568 0.2146 277.0229); - --chart-4: oklch(0.3984 0.1773 277.3662); - --chart-5: oklch(0.3588 0.1354 278.6973); - --sidebar: oklch(0.8687 0.0043 56.3660); - --sidebar-foreground: oklch(0.2795 0.0368 260.0310); - --sidebar-primary: oklch(0.5854 0.2041 277.1173); - --sidebar-primary-foreground: oklch(1.0000 0 0); - --sidebar-accent: oklch(0.9376 0.0260 321.9388); - --sidebar-accent-foreground: oklch(0.3729 0.0306 259.7328); - --sidebar-border: oklch(0.8687 0.0043 56.3660); - --sidebar-ring: oklch(0.5854 0.2041 277.1173); - --font-sans: Plus Jakarta Sans, sans-serif; - --font-serif: Lora, serif; - --font-mono: Roboto Mono, monospace; - --radius: 1.25rem; - --shadow-2xs: 2px 2px 10px 4px hsl(240 4% 60% / 0.09); - --shadow-xs: 2px 2px 10px 4px hsl(240 4% 60% / 0.09); - --shadow-sm: 2px 2px 10px 4px hsl(240 4% 60% / 0.18), 2px 1px 2px 3px hsl(240 4% 60% / 0.18); - --shadow: 2px 2px 10px 4px hsl(240 4% 60% / 0.18), 2px 1px 2px 3px hsl(240 4% 60% / 0.18); - --shadow-md: 2px 2px 10px 4px hsl(240 4% 60% / 0.18), 2px 2px 4px 3px hsl(240 4% 60% / 0.18); - --shadow-lg: 2px 2px 10px 4px hsl(240 4% 60% / 0.18), 2px 4px 6px 3px hsl(240 4% 60% / 0.18); - --shadow-xl: 2px 2px 10px 4px hsl(240 4% 60% / 0.18), 2px 8px 10px 3px hsl(240 4% 60% / 0.18); - --shadow-2xl: 2px 2px 10px 4px hsl(240 4% 60% / 0.45); - --tracking-normal: 0em; - --spacing: 0.25rem; + --background: oklch(0.9232 0.0026 48.7171); + --foreground: oklch(0.2795 0.0368 260.031); + --card: oklch(0.9699 0.0013 106.4238); + --card-foreground: oklch(0.2795 0.0368 260.031); + --popover: oklch(0.9699 0.0013 106.4238); + --popover-foreground: oklch(0.2795 0.0368 260.031); + --primary: oklch(0.5854 0.2041 277.1173); + --primary-foreground: oklch(1 0 0); + --secondary: oklch(0.8687 0.0043 56.366); + --secondary-foreground: oklch(0.4461 0.0263 256.8018); + --muted: oklch(0.9232 0.0026 48.7171); + --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.6368 0.2078 25.3313); + --destructive-foreground: oklch(1 0 0); + --border: oklch(0.8687 0.0043 56.366); + --input: oklch(0.8687 0.0043 56.366); + --ring: oklch(0.5854 0.2041 277.1173); + --chart-1: oklch(0.5854 0.2041 277.1173); + --chart-2: oklch(0.5106 0.2301 276.9656); + --chart-3: oklch(0.4568 0.2146 277.0229); + --chart-4: oklch(0.3984 0.1773 277.3662); + --chart-5: oklch(0.3588 0.1354 278.6973); + --sidebar: oklch(0.8687 0.0043 56.366); + --sidebar-foreground: oklch(0.2795 0.0368 260.031); + --sidebar-primary: oklch(0.5854 0.2041 277.1173); + --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.8687 0.0043 56.366); + --sidebar-ring: oklch(0.5854 0.2041 277.1173); + --font-sans: Plus Jakarta Sans, sans-serif; + --font-serif: Lora, serif; + --font-mono: Roboto Mono, monospace; + --radius: 1.25rem; + --shadow-2xs: 2px 2px 10px 4px hsl(240 4% 60% / 0.09); + --shadow-xs: 2px 2px 10px 4px hsl(240 4% 60% / 0.09); + --shadow-sm: + 2px 2px 10px 4px hsl(240 4% 60% / 0.18), + 2px 1px 2px 3px hsl(240 4% 60% / 0.18); + --shadow: + 2px 2px 10px 4px hsl(240 4% 60% / 0.18), + 2px 1px 2px 3px hsl(240 4% 60% / 0.18); + --shadow-md: + 2px 2px 10px 4px hsl(240 4% 60% / 0.18), + 2px 2px 4px 3px hsl(240 4% 60% / 0.18); + --shadow-lg: + 2px 2px 10px 4px hsl(240 4% 60% / 0.18), + 2px 4px 6px 3px hsl(240 4% 60% / 0.18); + --shadow-xl: + 2px 2px 10px 4px hsl(240 4% 60% / 0.18), + 2px 8px 10px 3px hsl(240 4% 60% / 0.18); + --shadow-2xl: 2px 2px 10px 4px hsl(240 4% 60% / 0.45); + --tracking-normal: 0em; + --spacing: 0.25rem; } .dark { - --background: oklch(0.2244 0.0074 67.4370); - --foreground: oklch(0.9288 0.0126 255.5078); - --card: oklch(0.2801 0.0080 59.3379); - --card-foreground: oklch(0.9288 0.0126 255.5078); - --popover: oklch(0.2801 0.0080 59.3379); - --popover-foreground: oklch(0.9288 0.0126 255.5078); - --primary: oklch(0.5994 0.1568 47.5224); - --primary-foreground: oklch(0.2244 0.0074 67.4370); - --secondary: oklch(0.3359 0.0077 59.4197); - --secondary-foreground: oklch(0.8717 0.0093 258.3382); - --muted: oklch(0.2801 0.0080 59.3379); - --muted-foreground: oklch(0.7137 0.0192 261.3246); - --accent: oklch(0.3896 0.0074 59.4734); - --accent-foreground: oklch(0.8717 0.0093 258.3382); - --destructive: oklch(0.6368 0.2078 25.3313); - --destructive-foreground: oklch(0.2244 0.0074 67.4370); - --border: oklch(0.3359 0.0077 59.4197); - --input: oklch(0.3359 0.0077 59.4197); - --ring: oklch(0.6801 0.1583 276.9349); - --chart-1: oklch(0.6801 0.1583 276.9349); - --chart-2: oklch(0.5854 0.2041 277.1173); - --chart-3: oklch(0.5106 0.2301 276.9656); - --chart-4: oklch(0.4568 0.2146 277.0229); - --chart-5: oklch(0.3984 0.1773 277.3662); - --sidebar: oklch(0.3359 0.0077 59.4197); - --sidebar-foreground: oklch(0.9288 0.0126 255.5078); - --sidebar-primary: oklch(0.6801 0.1583 276.9349); - --sidebar-primary-foreground: oklch(0.2244 0.0074 67.4370); - --sidebar-accent: oklch(0.3896 0.0074 59.4734); - --sidebar-accent-foreground: oklch(0.8717 0.0093 258.3382); - --sidebar-border: oklch(0.3359 0.0077 59.4197); - --sidebar-ring: oklch(0.6801 0.1583 276.9349); - --font-sans: Plus Jakarta Sans, sans-serif; - --font-serif: Lora, serif; - --font-mono: Roboto Mono, monospace; - --radius: 1.25rem; - --shadow-2xs: 2px 2px 10px 4px hsl(0 0% 0% / 0.09); - --shadow-xs: 2px 2px 10px 4px hsl(0 0% 0% / 0.09); - --shadow-sm: 2px 2px 10px 4px hsl(0 0% 0% / 0.18), 2px 1px 2px 3px hsl(0 0% 0% / 0.18); - --shadow: 2px 2px 10px 4px hsl(0 0% 0% / 0.18), 2px 1px 2px 3px hsl(0 0% 0% / 0.18); - --shadow-md: 2px 2px 10px 4px hsl(0 0% 0% / 0.18), 2px 2px 4px 3px hsl(0 0% 0% / 0.18); - --shadow-lg: 2px 2px 10px 4px hsl(0 0% 0% / 0.18), 2px 4px 6px 3px hsl(0 0% 0% / 0.18); - --shadow-xl: 2px 2px 10px 4px hsl(0 0% 0% / 0.18), 2px 8px 10px 3px hsl(0 0% 0% / 0.18); - --shadow-2xl: 2px 2px 10px 4px hsl(0 0% 0% / 0.45); + --background: oklch(0.2244 0.0074 67.437); + --foreground: oklch(0.9288 0.0126 255.5078); + --card: oklch(0.2801 0.008 59.3379); + --card-foreground: oklch(0.9288 0.0126 255.5078); + --popover: oklch(0.2801 0.008 59.3379); + --popover-foreground: oklch(0.9288 0.0126 255.5078); + --primary: oklch(0.5994 0.1568 47.5224); + --primary-foreground: oklch(0.2244 0.0074 67.437); + --secondary: oklch(0.3359 0.0077 59.4197); + --secondary-foreground: oklch(0.8717 0.0093 258.3382); + --muted: oklch(0.2801 0.008 59.3379); + --muted-foreground: oklch(0.7137 0.0192 261.3246); + --accent: oklch(0.3896 0.0074 59.4734); + --accent-foreground: oklch(0.8717 0.0093 258.3382); + --destructive: oklch(0.6368 0.2078 25.3313); + --destructive-foreground: oklch(0.2244 0.0074 67.437); + --border: oklch(0.3359 0.0077 59.4197); + --input: oklch(0.3359 0.0077 59.4197); + --ring: oklch(0.6801 0.1583 276.9349); + --chart-1: oklch(0.6801 0.1583 276.9349); + --chart-2: oklch(0.5854 0.2041 277.1173); + --chart-3: oklch(0.5106 0.2301 276.9656); + --chart-4: oklch(0.4568 0.2146 277.0229); + --chart-5: oklch(0.3984 0.1773 277.3662); + --sidebar: oklch(0.3359 0.0077 59.4197); + --sidebar-foreground: oklch(0.9288 0.0126 255.5078); + --sidebar-primary: oklch(0.6801 0.1583 276.9349); + --sidebar-primary-foreground: oklch(0.2244 0.0074 67.437); + --sidebar-accent: oklch(0.3896 0.0074 59.4734); + --sidebar-accent-foreground: oklch(0.8717 0.0093 258.3382); + --sidebar-border: oklch(0.3359 0.0077 59.4197); + --sidebar-ring: oklch(0.6801 0.1583 276.9349); + --font-sans: Plus Jakarta Sans, sans-serif; + --font-serif: Lora, serif; + --font-mono: Roboto Mono, monospace; + --radius: 1.25rem; + --shadow-2xs: 2px 2px 10px 4px hsl(0 0% 0% / 0.09); + --shadow-xs: 2px 2px 10px 4px hsl(0 0% 0% / 0.09); + --shadow-sm: + 2px 2px 10px 4px hsl(0 0% 0% / 0.18), 2px 1px 2px 3px hsl(0 0% 0% / 0.18); + --shadow: + 2px 2px 10px 4px hsl(0 0% 0% / 0.18), 2px 1px 2px 3px hsl(0 0% 0% / 0.18); + --shadow-md: + 2px 2px 10px 4px hsl(0 0% 0% / 0.18), 2px 2px 4px 3px hsl(0 0% 0% / 0.18); + --shadow-lg: + 2px 2px 10px 4px hsl(0 0% 0% / 0.18), 2px 4px 6px 3px hsl(0 0% 0% / 0.18); + --shadow-xl: + 2px 2px 10px 4px hsl(0 0% 0% / 0.18), 2px 8px 10px 3px hsl(0 0% 0% / 0.18); + --shadow-2xl: 2px 2px 10px 4px hsl(0 0% 0% / 0.45); } @theme inline { @@ -153,10 +168,10 @@ } @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/layout.tsx b/src/app/layout.tsx index 9d2e23a..5d3cd4f 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,11 +1,11 @@ import type { Metadata } from "next"; import { Geist, Magra } from "next/font/google"; import "./globals.css"; +import Link from "next/link"; import { ThemeProvider } from "next-themes"; import { ModeToggle } from "@/components/mode-toggle"; import SignIn from "@/components/sign-in"; import { Toaster } from "@/components/ui/sonner"; -import Link from "next/link"; const geist = Geist({ subsets: ["latin", "cyrillic"], diff --git a/src/components/event-actions-toolbar.tsx b/src/components/event-actions-toolbar.tsx index 805663e..d9193c5 100644 --- a/src/components/event-actions-toolbar.tsx +++ b/src/components/event-actions-toolbar.tsx @@ -1,5 +1,5 @@ -import { Button } from "@/components/ui/button"; import { IcsFilePicker } from "@/components/ics-file-picker"; +import { Button } from "@/components/ui/button"; import type { CalendarEvent } from "@/lib/types"; interface EventActionsToolbarProps { diff --git a/src/components/event-card.tsx b/src/components/event-card.tsx index 0d434f9..c866345 100644 --- a/src/components/event-card.tsx +++ b/src/components/event-card.tsx @@ -1,13 +1,13 @@ +import { Clock, LucideMapPin, MoreHorizontal } from "lucide-react"; +import { RRuleDisplay } from "@/components/rrule-display"; import { Button } from "@/components/ui/button"; -import { Card, CardHeader, CardContent } from "@/components/ui/card"; -import { LucideMapPin, Clock, MoreHorizontal } from "lucide-react"; +import { Card, CardContent, CardHeader } from "@/components/ui/card"; import { DropdownMenu, DropdownMenuContent, - DropdownMenuTrigger, DropdownMenuItem, + DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; -import { RRuleDisplay } from "@/components/rrule-display"; import type { CalendarEvent } from "@/lib/types"; interface EventCardProps { diff --git a/src/components/event-dialog.tsx b/src/components/event-dialog.tsx index e4989f2..c679e20 100644 --- a/src/components/event-dialog.tsx +++ b/src/components/event-dialog.tsx @@ -1,3 +1,4 @@ +import { RecurrencePicker } from "@/components/recurrence-picker"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -7,7 +8,6 @@ import { DialogTitle, } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; -import { RecurrencePicker } from "@/components/recurrence-picker"; interface EventDialogProps { open: boolean; diff --git a/src/components/events-list.tsx b/src/components/events-list.tsx index 0a39276..0706a85 100644 --- a/src/components/events-list.tsx +++ b/src/components/events-list.tsx @@ -1,6 +1,6 @@ import { Calendar1Icon } from "lucide-react"; -import { EventCard } from "./event-card"; import type { CalendarEvent } from "@/lib/types"; +import { EventCard } from "./event-card"; interface EventsListProps { events: CalendarEvent[]; diff --git a/src/components/ics-file-picker.tsx b/src/components/ics-file-picker.tsx index d842ff7..e1a6b32 100644 --- a/src/components/ics-file-picker.tsx +++ b/src/components/ics-file-picker.tsx @@ -1,10 +1,9 @@ "use client"; +import { Calendar } from "lucide-react"; import type React from "react"; - import { useRef } from "react"; import { Button } from "@/components/ui/button"; -import { Calendar } from "lucide-react"; interface IcsFilePickerProps { onFileSelect?: (file: File) => void; diff --git a/src/components/mode-toggle.tsx b/src/components/mode-toggle.tsx index d593135..6715664 100644 --- a/src/components/mode-toggle.tsx +++ b/src/components/mode-toggle.tsx @@ -1,8 +1,8 @@ "use client"; -import * as React from "react"; -import { Moon, Sun, Monitor } from "lucide-react"; +import { Monitor, Moon, Sun } from "lucide-react"; import { useTheme } from "next-themes"; +import * as React from "react"; import { Button } from "@/components/ui/button"; import { diff --git a/src/components/recurrence-picker.tsx b/src/components/recurrence-picker.tsx index 39564ed..e2681d1 100644 --- a/src/components/recurrence-picker.tsx +++ b/src/components/recurrence-picker.tsx @@ -1,6 +1,7 @@ "use client"; import { useState } from "react"; +import { Checkbox } from "@/components/ui/checkbox"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { @@ -10,7 +11,6 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; -import { Checkbox } from "@/components/ui/checkbox"; type Recurrence = { freq: "NONE" | "DAILY" | "WEEKLY" | "MONTHLY"; diff --git a/src/components/sign-in.tsx b/src/components/sign-in.tsx index 76cb235..fc71635 100644 --- a/src/components/sign-in.tsx +++ b/src/components/sign-in.tsx @@ -1,9 +1,9 @@ "use client"; -import { signOut, useSession } from "@/lib/auth-client"; -import { Button } from "@/components/ui/button"; import { useRouter } from "next/navigation"; import { toast } from "sonner"; +import { Button } from "@/components/ui/button"; +import { signOut, useSession } from "@/lib/auth-client"; export default function SignIn() { const { data: session, isPending } = useSession(); diff --git a/src/components/theme-provider.tsx b/src/components/theme-provider.tsx index f6b22ae..7c8090f 100644 --- a/src/components/theme-provider.tsx +++ b/src/components/theme-provider.tsx @@ -1,7 +1,7 @@ "use client"; -import * as React from "react"; import { ThemeProvider as NextThemesProvider } from "next-themes"; +import type * as React from "react"; export function ThemeProvider({ children, diff --git a/src/components/ui/badge.tsx b/src/components/ui/badge.tsx index 8b858d2..b2fee25 100644 --- a/src/components/ui/badge.tsx +++ b/src/components/ui/badge.tsx @@ -1,6 +1,6 @@ -import * as React from "react"; import { Slot } from "@radix-ui/react-slot"; import { cva, type VariantProps } from "class-variance-authority"; +import type * as React from "react"; import { cn } from "@/lib/utils"; diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx index 12662b6..90f7339 100644 --- a/src/components/ui/button.tsx +++ b/src/components/ui/button.tsx @@ -1,6 +1,6 @@ -import * as React from "react"; import { Slot } from "@radix-ui/react-slot"; import { cva, type VariantProps } from "class-variance-authority"; +import type * as React from "react"; import { cn } from "@/lib/utils"; diff --git a/src/components/ui/calendar.tsx b/src/components/ui/calendar.tsx index df01488..56f788c 100644 --- a/src/components/ui/calendar.tsx +++ b/src/components/ui/calendar.tsx @@ -1,15 +1,18 @@ "use client"; -import * as React from "react"; import { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, } from "lucide-react"; -import { DayButton, DayPicker, getDefaultClassNames } from "react-day-picker"; - -import { cn } from "@/lib/utils"; +import * as React from "react"; +import { + type DayButton, + DayPicker, + getDefaultClassNames, +} from "react-day-picker"; import { Button, buttonVariants } from "@/components/ui/button"; +import { cn } from "@/lib/utils"; function Calendar({ className, diff --git a/src/components/ui/card.tsx b/src/components/ui/card.tsx index c9f7bff..e2b429a 100644 --- a/src/components/ui/card.tsx +++ b/src/components/ui/card.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import type * as React from "react"; import { cn } from "@/lib/utils"; @@ -83,10 +83,10 @@ function CardFooter({ className, ...props }: React.ComponentProps<"div">) { export { Card, - CardHeader, - CardFooter, - CardTitle, CardAction, - CardDescription, CardContent, + CardDescription, + CardFooter, + CardHeader, + CardTitle, }; diff --git a/src/components/ui/checkbox.tsx b/src/components/ui/checkbox.tsx index 952e4f3..8f1b7b1 100644 --- a/src/components/ui/checkbox.tsx +++ b/src/components/ui/checkbox.tsx @@ -1,8 +1,8 @@ "use client"; -import * as React from "react"; import * as CheckboxPrimitive from "@radix-ui/react-checkbox"; import { CheckIcon } from "lucide-react"; +import type * as React from "react"; import { cn } from "@/lib/utils"; diff --git a/src/components/ui/dialog.tsx b/src/components/ui/dialog.tsx index d073bb0..41f4ae4 100644 --- a/src/components/ui/dialog.tsx +++ b/src/components/ui/dialog.tsx @@ -1,8 +1,8 @@ "use client"; -import * as React from "react"; import * as DialogPrimitive from "@radix-ui/react-dialog"; import { XIcon } from "lucide-react"; +import type * as React from "react"; import { cn } from "@/lib/utils"; diff --git a/src/components/ui/dropdown-menu.tsx b/src/components/ui/dropdown-menu.tsx index 93b5a0f..ad6313e 100644 --- a/src/components/ui/dropdown-menu.tsx +++ b/src/components/ui/dropdown-menu.tsx @@ -1,8 +1,8 @@ "use client"; -import * as React from "react"; import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"; import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react"; +import type * as React from "react"; import { cn } from "@/lib/utils"; @@ -240,18 +240,18 @@ function DropdownMenuSubContent({ export { DropdownMenu, - DropdownMenuPortal, - DropdownMenuTrigger, + DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, - DropdownMenuLabel, DropdownMenuItem, - DropdownMenuCheckboxItem, + DropdownMenuLabel, + DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, - DropdownMenuSubTrigger, DropdownMenuSubContent, + DropdownMenuSubTrigger, + DropdownMenuTrigger, }; diff --git a/src/components/ui/input.tsx b/src/components/ui/input.tsx index 433a51c..b20aef6 100644 --- a/src/components/ui/input.tsx +++ b/src/components/ui/input.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import type * as React from "react"; import { cn } from "@/lib/utils"; diff --git a/src/components/ui/label.tsx b/src/components/ui/label.tsx index 7cf27e2..be983a3 100644 --- a/src/components/ui/label.tsx +++ b/src/components/ui/label.tsx @@ -1,7 +1,7 @@ "use client"; -import * as React from "react"; import * as LabelPrimitive from "@radix-ui/react-label"; +import type * as React from "react"; import { cn } from "@/lib/utils"; diff --git a/src/components/ui/select.tsx b/src/components/ui/select.tsx index 1aa706f..eb93d6f 100644 --- a/src/components/ui/select.tsx +++ b/src/components/ui/select.tsx @@ -1,8 +1,8 @@ "use client"; -import * as React from "react"; import * as SelectPrimitive from "@radix-ui/react-select"; import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react"; +import type * as React from "react"; import { cn } from "@/lib/utils"; diff --git a/src/components/ui/sonner.tsx b/src/components/ui/sonner.tsx index e79c99b..b08c2e8 100644 --- a/src/components/ui/sonner.tsx +++ b/src/components/ui/sonner.tsx @@ -1,7 +1,7 @@ "use client"; import { useTheme } from "next-themes"; -import { Toaster as Sonner, ToasterProps } from "sonner"; +import { Toaster as Sonner, type ToasterProps } from "sonner"; const Toaster = ({ ...props }: ToasterProps) => { const { theme = "system" } = useTheme(); diff --git a/src/components/ui/textarea.tsx b/src/components/ui/textarea.tsx index c80acbc..70e5b64 100644 --- a/src/components/ui/textarea.tsx +++ b/src/components/ui/textarea.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import type * as React from "react"; import { cn } from "@/lib/utils"; diff --git a/src/db/schema.ts b/src/db/schema.ts index 353e6a9..a73c36a 100644 --- a/src/db/schema.ts +++ b/src/db/schema.ts @@ -1,4 +1,4 @@ -import { pgTable, text, timestamp, boolean } from "drizzle-orm/pg-core"; +import { boolean, pgTable, text, timestamp } from "drizzle-orm/pg-core"; export const user = pgTable("user", { id: text("id").primaryKey(), diff --git a/src/lib/auth-client.ts b/src/lib/auth-client.ts index 3c60eda..ea6a026 100644 --- a/src/lib/auth-client.ts +++ b/src/lib/auth-client.ts @@ -1,5 +1,5 @@ -import { createAuthClient } from "better-auth/react"; import { genericOAuthClient } from "better-auth/client/plugins"; +import { createAuthClient } from "better-auth/react"; export const authClient = createAuthClient({ plugins: [genericOAuthClient()], diff --git a/src/lib/events-db.ts b/src/lib/events-db.ts index b4b5296..66aaf98 100644 --- a/src/lib/events-db.ts +++ b/src/lib/events-db.ts @@ -1,4 +1,4 @@ -import { openDB, type IDBPDatabase } from "idb"; +import { type IDBPDatabase, openDB } from "idb"; import type { CalendarEvent } from "@/lib/types"; const DB_NAME = "LocalCalEvents"; diff --git a/src/lib/ical.ts b/src/lib/ical.ts index 345c4f9..5e06fc8 100644 --- a/src/lib/ical.ts +++ b/src/lib/ical.ts @@ -1,12 +1,12 @@ import ICAL from "ical.js"; import type { CalendarEvent } from "@/lib/types"; import { - isRecur, - isTime, - isUtcOffset, isBinary, isDuration, isPeriod, + isRecur, + isTime, + isUtcOffset, } from "./ical-helpers"; function safeValueToString( diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 3200be2..ac680b3 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -1,4 +1,4 @@ -import { clsx, type ClassValue } from "clsx"; +import { type ClassValue, clsx } from "clsx"; import { twMerge } from "tailwind-merge"; export function cn(...inputs: ClassValue[]) {