aboutsummaryrefslogtreecommitdiffstats
path: root/apps/web/components/dashboard
diff options
context:
space:
mode:
Diffstat (limited to 'apps/web/components/dashboard')
-rw-r--r--apps/web/components/dashboard/bookmarks/AddLinkButton.tsx17
-rw-r--r--apps/web/components/dashboard/bookmarks/AddToListModal.tsx23
-rw-r--r--apps/web/components/dashboard/bookmarks/BookmarkCardSkeleton.tsx2
-rw-r--r--apps/web/components/dashboard/bookmarks/BookmarkOptions.tsx14
-rw-r--r--apps/web/components/dashboard/bookmarks/BookmarkPreview.tsx9
-rw-r--r--apps/web/components/dashboard/bookmarks/BookmarkedTextEditor.tsx11
-rw-r--r--apps/web/components/dashboard/bookmarks/Bookmarks.tsx6
-rw-r--r--apps/web/components/dashboard/bookmarks/BookmarksGrid.tsx15
-rw-r--r--apps/web/components/dashboard/bookmarks/LinkCard.tsx14
-rw-r--r--apps/web/components/dashboard/bookmarks/TagList.tsx7
-rw-r--r--apps/web/components/dashboard/bookmarks/TagModal.tsx14
-rw-r--r--apps/web/components/dashboard/bookmarks/TextCard.tsx16
-rw-r--r--apps/web/components/dashboard/bookmarks/TopNav.tsx9
-rw-r--r--apps/web/components/dashboard/lists/AllListsView.tsx9
-rw-r--r--apps/web/components/dashboard/lists/DeleteListButton.tsx11
-rw-r--r--apps/web/components/dashboard/lists/ListView.tsx5
-rw-r--r--apps/web/components/dashboard/search/SearchInput.tsx2
-rw-r--r--apps/web/components/dashboard/settings/AddApiKey.tsx34
-rw-r--r--apps/web/components/dashboard/settings/ApiKeySettings.tsx3
-rw-r--r--apps/web/components/dashboard/settings/DeleteApiKey.tsx9
-rw-r--r--apps/web/components/dashboard/sidebar/AllLists.tsx10
-rw-r--r--apps/web/components/dashboard/sidebar/ModileSidebar.tsx9
-rw-r--r--apps/web/components/dashboard/sidebar/ModileSidebarItem.tsx2
-rw-r--r--apps/web/components/dashboard/sidebar/NewListModal.tsx28
-rw-r--r--apps/web/components/dashboard/sidebar/Sidebar.tsx16
-rw-r--r--apps/web/components/dashboard/sidebar/SidebarItem.tsx2
26 files changed, 160 insertions, 137 deletions
diff --git a/apps/web/components/dashboard/bookmarks/AddLinkButton.tsx b/apps/web/components/dashboard/bookmarks/AddLinkButton.tsx
index 5973f909..45a67020 100644
--- a/apps/web/components/dashboard/bookmarks/AddLinkButton.tsx
+++ b/apps/web/components/dashboard/bookmarks/AddLinkButton.tsx
@@ -1,10 +1,5 @@
-import { Form, FormControl, FormField, FormItem } from "@/components/ui/form";
-import { Input } from "@/components/ui/input";
-import { useForm, SubmitErrorHandler } from "react-hook-form";
-import { z } from "zod";
-import { zodResolver } from "@hookform/resolvers/zod";
-import { toast } from "@/components/ui/use-toast";
-import { api } from "@/lib/trpc";
+import type { SubmitErrorHandler } from "react-hook-form";
+import { useState } from "react";
import { ActionButton } from "@/components/ui/action-button";
import { Button } from "@/components/ui/button";
import {
@@ -16,7 +11,13 @@ import {
DialogTitle,
DialogTrigger,
} from "@/components/ui/dialog";
-import { useState } from "react";
+import { Form, FormControl, FormField, FormItem } from "@/components/ui/form";
+import { Input } from "@/components/ui/input";
+import { toast } from "@/components/ui/use-toast";
+import { api } from "@/lib/trpc";
+import { zodResolver } from "@hookform/resolvers/zod";
+import { useForm } from "react-hook-form";
+import { z } from "zod";
export function AddLinkButton({ children }: { children: React.ReactNode }) {
const [isOpen, setOpen] = useState(false);
diff --git a/apps/web/components/dashboard/bookmarks/AddToListModal.tsx b/apps/web/components/dashboard/bookmarks/AddToListModal.tsx
index c9fd5da0..6242aa27 100644
--- a/apps/web/components/dashboard/bookmarks/AddToListModal.tsx
+++ b/apps/web/components/dashboard/bookmarks/AddToListModal.tsx
@@ -1,3 +1,4 @@
+import { useState } from "react";
import { ActionButton } from "@/components/ui/action-button";
import { Button } from "@/components/ui/button";
import {
@@ -15,11 +16,6 @@ import {
FormItem,
FormMessage,
} from "@/components/ui/form";
-
-import { toast } from "@/components/ui/use-toast";
-import { api } from "@/lib/trpc";
-import { useState } from "react";
-
import {
Select,
SelectContent,
@@ -29,9 +25,11 @@ import {
SelectValue,
} from "@/components/ui/select";
import LoadingSpinner from "@/components/ui/spinner";
-import { z } from "zod";
-import { useForm } from "react-hook-form";
+import { toast } from "@/components/ui/use-toast";
+import { api } from "@/lib/trpc";
import { zodResolver } from "@hookform/resolvers/zod";
+import { useForm } from "react-hook-form";
+import { z } from "zod";
export default function AddToListModal({
bookmarkId,
@@ -115,12 +113,11 @@ export default function AddToListModal({
</SelectTrigger>
<SelectContent>
<SelectGroup>
- {lists &&
- lists.lists.map((l) => (
- <SelectItem key={l.id} value={l.id}>
- {l.icon} {l.name}
- </SelectItem>
- ))}
+ {lists?.lists.map((l) => (
+ <SelectItem key={l.id} value={l.id}>
+ {l.icon} {l.name}
+ </SelectItem>
+ ))}
</SelectGroup>
</SelectContent>
</Select>
diff --git a/apps/web/components/dashboard/bookmarks/BookmarkCardSkeleton.tsx b/apps/web/components/dashboard/bookmarks/BookmarkCardSkeleton.tsx
index 1f5fa433..026b8d37 100644
--- a/apps/web/components/dashboard/bookmarks/BookmarkCardSkeleton.tsx
+++ b/apps/web/components/dashboard/bookmarks/BookmarkCardSkeleton.tsx
@@ -1,10 +1,10 @@
import {
ImageCard,
+ ImageCardBanner,
ImageCardBody,
ImageCardContent,
ImageCardFooter,
ImageCardTitle,
- ImageCardBanner,
} from "@/components/ui/imageCard";
import { Skeleton } from "@/components/ui/skeleton";
diff --git a/apps/web/components/dashboard/bookmarks/BookmarkOptions.tsx b/apps/web/components/dashboard/bookmarks/BookmarkOptions.tsx
index 4f08ebee..3656a435 100644
--- a/apps/web/components/dashboard/bookmarks/BookmarkOptions.tsx
+++ b/apps/web/components/dashboard/bookmarks/BookmarkOptions.tsx
@@ -1,8 +1,6 @@
"use client";
-import { useToast } from "@/components/ui/use-toast";
-import { api } from "@/lib/trpc";
-import { ZBookmark, ZBookmarkedLink } from "@hoarder/trpc/types/bookmarks";
+import { useState } from "react";
import { Button } from "@/components/ui/button";
import {
DropdownMenu,
@@ -10,6 +8,8 @@ import {
DropdownMenuItem,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
+import { useToast } from "@/components/ui/use-toast";
+import { api } from "@/lib/trpc";
import {
Archive,
Link,
@@ -21,10 +21,12 @@ import {
Tags,
Trash2,
} from "lucide-react";
-import { useTagModel } from "./TagModal";
-import { useState } from "react";
-import { BookmarkedTextEditor } from "./BookmarkedTextEditor";
+
+import type { ZBookmark, ZBookmarkedLink } from "@hoarder/trpc/types/bookmarks";
+
import { useAddToListModal } from "./AddToListModal";
+import { BookmarkedTextEditor } from "./BookmarkedTextEditor";
+import { useTagModel } from "./TagModal";
export default function BookmarkOptions({ bookmark }: { bookmark: ZBookmark }) {
const { toast } = useToast();
diff --git a/apps/web/components/dashboard/bookmarks/BookmarkPreview.tsx b/apps/web/components/dashboard/bookmarks/BookmarkPreview.tsx
index 2a8ae1b1..69aa60a3 100644
--- a/apps/web/components/dashboard/bookmarks/BookmarkPreview.tsx
+++ b/apps/web/components/dashboard/bookmarks/BookmarkPreview.tsx
@@ -1,14 +1,15 @@
"use client";
+import Link from "next/link";
import { BackButton } from "@/components/ui/back-button";
import { Skeleton } from "@/components/ui/skeleton";
import { isBookmarkStillCrawling } from "@/lib/bookmarkUtils";
import { api } from "@/lib/trpc";
-import { ZBookmark } from "@hoarder/trpc/types/bookmarks";
import { ArrowLeftCircle, CalendarDays, ExternalLink } from "lucide-react";
-import Link from "next/link";
import Markdown from "react-markdown";
+import type { ZBookmark } from "@hoarder/trpc/types/bookmarks";
+
export default function BookmarkPreview({
initialData,
}: {
@@ -37,7 +38,7 @@ export default function BookmarkPreview({
const linkHeader = bookmark.content.type == "link" && (
<div className="flex flex-col space-y-2">
<p className="text-center text-3xl">
- {bookmark.content.title || bookmark.content.url}
+ {bookmark.content.title ?? bookmark.content.url}
</p>
<Link href={bookmark.content.url} className="mx-auto flex gap-2">
<span className="my-auto">View Original</span>
@@ -72,7 +73,7 @@ export default function BookmarkPreview({
}
return (
- <div className="bg-background m-4 min-h-screen space-y-4 rounded-md border p-4">
+ <div className="m-4 min-h-screen space-y-4 rounded-md border bg-background p-4">
<div className="flex justify-between">
<BackButton className="ghost" variant="ghost">
<ArrowLeftCircle />
diff --git a/apps/web/components/dashboard/bookmarks/BookmarkedTextEditor.tsx b/apps/web/components/dashboard/bookmarks/BookmarkedTextEditor.tsx
index a5b58f1a..eb618474 100644
--- a/apps/web/components/dashboard/bookmarks/BookmarkedTextEditor.tsx
+++ b/apps/web/components/dashboard/bookmarks/BookmarkedTextEditor.tsx
@@ -1,4 +1,6 @@
-import { ZBookmark } from "@hoarder/trpc/types/bookmarks";
+import { useState } from "react";
+import { ActionButton } from "@/components/ui/action-button";
+import { Button } from "@/components/ui/button";
import {
Dialog,
DialogClose,
@@ -8,12 +10,11 @@ import {
DialogHeader,
DialogTitle,
} from "@/components/ui/dialog";
-import { ActionButton } from "@/components/ui/action-button";
-import { Button } from "@/components/ui/button";
import { Textarea } from "@/components/ui/textarea";
-import { api } from "@/lib/trpc";
-import { useState } from "react";
import { toast } from "@/components/ui/use-toast";
+import { api } from "@/lib/trpc";
+
+import type { ZBookmark } from "@hoarder/trpc/types/bookmarks";
export function BookmarkedTextEditor({
bookmark,
diff --git a/apps/web/components/dashboard/bookmarks/Bookmarks.tsx b/apps/web/components/dashboard/bookmarks/Bookmarks.tsx
index 1ad3670c..9f001551 100644
--- a/apps/web/components/dashboard/bookmarks/Bookmarks.tsx
+++ b/apps/web/components/dashboard/bookmarks/Bookmarks.tsx
@@ -1,9 +1,11 @@
import { redirect } from "next/navigation";
-import BookmarksGrid from "./BookmarksGrid";
-import { ZGetBookmarksRequest } from "@hoarder/trpc/types/bookmarks";
import { api } from "@/server/api/client";
import { getServerAuthSession } from "@/server/auth";
+import type { ZGetBookmarksRequest } from "@hoarder/trpc/types/bookmarks";
+
+import BookmarksGrid from "./BookmarksGrid";
+
export default async function Bookmarks({
favourited,
archived,
diff --git a/apps/web/components/dashboard/bookmarks/BookmarksGrid.tsx b/apps/web/components/dashboard/bookmarks/BookmarksGrid.tsx
index 4d5b6b0a..dd529a8b 100644
--- a/apps/web/components/dashboard/bookmarks/BookmarksGrid.tsx
+++ b/apps/web/components/dashboard/bookmarks/BookmarksGrid.tsx
@@ -1,14 +1,19 @@
"use client";
-import LinkCard from "./LinkCard";
-import { ZBookmark, ZGetBookmarksRequest } from "@hoarder/trpc/types/bookmarks";
+import { useMemo } from "react";
import { api } from "@/lib/trpc";
-import TextCard from "./TextCard";
+import tailwindConfig from "@/tailwind.config";
import { Slot } from "@radix-ui/react-slot";
import Masonry from "react-masonry-css";
import resolveConfig from "tailwindcss/resolveConfig";
-import tailwindConfig from "@/tailwind.config";
-import { useMemo } from "react";
+
+import type {
+ ZBookmark,
+ ZGetBookmarksRequest,
+} from "@hoarder/trpc/types/bookmarks";
+
+import LinkCard from "./LinkCard";
+import TextCard from "./TextCard";
function getBreakpointConfig() {
const fullConfig = resolveConfig(tailwindConfig);
diff --git a/apps/web/components/dashboard/bookmarks/LinkCard.tsx b/apps/web/components/dashboard/bookmarks/LinkCard.tsx
index 50f30e47..808e6d91 100644
--- a/apps/web/components/dashboard/bookmarks/LinkCard.tsx
+++ b/apps/web/components/dashboard/bookmarks/LinkCard.tsx
@@ -1,5 +1,6 @@
"use client";
+import Link from "next/link";
import {
ImageCard,
ImageCardBanner,
@@ -8,17 +9,18 @@ import {
ImageCardFooter,
ImageCardTitle,
} from "@/components/ui/imageCard";
-import { ZBookmark } from "@hoarder/trpc/types/bookmarks";
-import Link from "next/link";
-import BookmarkOptions from "./BookmarkOptions";
-import { api } from "@/lib/trpc";
-import { Maximize2, Star } from "lucide-react";
-import TagList from "./TagList";
import {
isBookmarkStillCrawling,
isBookmarkStillLoading,
isBookmarkStillTagging,
} from "@/lib/bookmarkUtils";
+import { api } from "@/lib/trpc";
+import { Maximize2, Star } from "lucide-react";
+
+import type { ZBookmark } from "@hoarder/trpc/types/bookmarks";
+
+import BookmarkOptions from "./BookmarkOptions";
+import TagList from "./TagList";
export default function LinkCard({
bookmark: initialData,
diff --git a/apps/web/components/dashboard/bookmarks/TagList.tsx b/apps/web/components/dashboard/bookmarks/TagList.tsx
index 6c9d2d22..cb94e5d7 100644
--- a/apps/web/components/dashboard/bookmarks/TagList.tsx
+++ b/apps/web/components/dashboard/bookmarks/TagList.tsx
@@ -1,9 +1,10 @@
-import { badgeVariants } from "@/components/ui/badge";
import Link from "next/link";
+import { badgeVariants } from "@/components/ui/badge";
import { Skeleton } from "@/components/ui/skeleton";
-import { ZBookmark } from "@hoarder/trpc/types/bookmarks";
import { cn } from "@/lib/utils";
+import type { ZBookmark } from "@hoarder/trpc/types/bookmarks";
+
export default function TagList({
bookmark,
loading,
@@ -26,7 +27,7 @@ export default function TagList({
<Link
className={cn(
badgeVariants({ variant: "outline" }),
- "hover:bg-foreground hover:text-secondary text-nowrap",
+ "text-nowrap hover:bg-foreground hover:text-secondary",
)}
href={`/dashboard/tags/${t.name}`}
>
diff --git a/apps/web/components/dashboard/bookmarks/TagModal.tsx b/apps/web/components/dashboard/bookmarks/TagModal.tsx
index 8c09d00e..367e6e7d 100644
--- a/apps/web/components/dashboard/bookmarks/TagModal.tsx
+++ b/apps/web/components/dashboard/bookmarks/TagModal.tsx
@@ -1,3 +1,5 @@
+import type { KeyboardEvent } from "react";
+import { useEffect, useState } from "react";
import { ActionButton } from "@/components/ui/action-button";
import { Button } from "@/components/ui/button";
import {
@@ -11,13 +13,17 @@ import {
import { Input } from "@/components/ui/input";
import { toast } from "@/components/ui/use-toast";
import { api } from "@/lib/trpc";
-import { ZBookmark } from "@hoarder/trpc/types/bookmarks";
-import { ZAttachedByEnum } from "@hoarder/trpc/types/tags";
import { cn } from "@/lib/utils";
import { Sparkles, X } from "lucide-react";
-import { useState, KeyboardEvent, useEffect } from "react";
-type EditableTag = { attachedBy: ZAttachedByEnum; id?: string; name: string };
+import type { ZBookmark } from "@hoarder/trpc/types/bookmarks";
+import type { ZAttachedByEnum } from "@hoarder/trpc/types/tags";
+
+interface EditableTag {
+ attachedBy: ZAttachedByEnum;
+ id?: string;
+ name: string;
+}
function TagAddInput({ addTag }: { addTag: (tag: string) => void }) {
const onKeyUp = (e: KeyboardEvent<HTMLInputElement>) => {
diff --git a/apps/web/components/dashboard/bookmarks/TextCard.tsx b/apps/web/components/dashboard/bookmarks/TextCard.tsx
index 2565e69d..5028c1bb 100644
--- a/apps/web/components/dashboard/bookmarks/TextCard.tsx
+++ b/apps/web/components/dashboard/bookmarks/TextCard.tsx
@@ -1,16 +1,18 @@
"use client";
-import { ZBookmark } from "@hoarder/trpc/types/bookmarks";
-import BookmarkOptions from "./BookmarkOptions";
+import { useState } from "react";
+import Link from "next/link";
+import { isBookmarkStillTagging } from "@/lib/bookmarkUtils";
import { api } from "@/lib/trpc";
-import { Maximize2, Star } from "lucide-react";
import { cn } from "@/lib/utils";
-import TagList from "./TagList";
+import { Maximize2, Star } from "lucide-react";
import Markdown from "react-markdown";
-import { useState } from "react";
+
+import type { ZBookmark } from "@hoarder/trpc/types/bookmarks";
+
import { BookmarkedTextViewer } from "./BookmarkedTextViewer";
-import Link from "next/link";
-import { isBookmarkStillTagging } from "@/lib/bookmarkUtils";
+import BookmarkOptions from "./BookmarkOptions";
+import TagList from "./TagList";
export default function TextCard({
bookmark: initialData,
diff --git a/apps/web/components/dashboard/bookmarks/TopNav.tsx b/apps/web/components/dashboard/bookmarks/TopNav.tsx
index 6c0f18e5..4274762c 100644
--- a/apps/web/components/dashboard/bookmarks/TopNav.tsx
+++ b/apps/web/components/dashboard/bookmarks/TopNav.tsx
@@ -1,11 +1,12 @@
"use client";
-import { Link, NotebookPen } from "lucide-react";
-import { Button } from "@/components/ui/button";
-import { BookmarkedTextEditor } from "./BookmarkedTextEditor";
import { useState } from "react";
-import { AddLinkButton } from "./AddLinkButton";
+import { Button } from "@/components/ui/button";
+import { Link, NotebookPen } from "lucide-react";
+
import { SearchInput } from "../search/SearchInput";
+import { AddLinkButton } from "./AddLinkButton";
+import { BookmarkedTextEditor } from "./BookmarkedTextEditor";
function AddText() {
const [isEditorOpen, setEditorOpen] = useState(false);
diff --git a/apps/web/components/dashboard/lists/AllListsView.tsx b/apps/web/components/dashboard/lists/AllListsView.tsx
index 81f31cde..acb94edb 100644
--- a/apps/web/components/dashboard/lists/AllListsView.tsx
+++ b/apps/web/components/dashboard/lists/AllListsView.tsx
@@ -1,12 +1,13 @@
"use client";
+import Link from "next/link";
+import { useNewListModal } from "@/components/dashboard/sidebar/NewListModal";
import { Button } from "@/components/ui/button";
import { api } from "@/lib/trpc";
-import { ZBookmarkList } from "@hoarder/trpc/types/lists";
import { keepPreviousData } from "@tanstack/react-query";
import { Plus } from "lucide-react";
-import Link from "next/link";
-import { useNewListModal } from "@/components/dashboard/sidebar/NewListModal";
+
+import type { ZBookmarkList } from "@hoarder/trpc/types/lists";
function ListItem({
name,
@@ -19,7 +20,7 @@ function ListItem({
}) {
return (
<Link href={path}>
- <div className="bg-background rounded-md border border-gray-200 px-4 py-2 text-lg">
+ <div className="rounded-md border border-gray-200 bg-background px-4 py-2 text-lg">
<p className="text-nowrap">
{icon} {name}
</p>
diff --git a/apps/web/components/dashboard/lists/DeleteListButton.tsx b/apps/web/components/dashboard/lists/DeleteListButton.tsx
index 5303b217..f5fcb18b 100644
--- a/apps/web/components/dashboard/lists/DeleteListButton.tsx
+++ b/apps/web/components/dashboard/lists/DeleteListButton.tsx
@@ -1,5 +1,8 @@
"use client";
+import { useState } from "react";
+import { useRouter } from "next/navigation";
+import { ActionButton } from "@/components/ui/action-button";
import { Button } from "@/components/ui/button";
import {
Dialog,
@@ -10,13 +13,11 @@ import {
DialogTitle,
DialogTrigger,
} from "@/components/ui/dialog";
-import { Trash } from "lucide-react";
-import { useRouter } from "next/navigation";
import { toast } from "@/components/ui/use-toast";
import { api } from "@/lib/trpc";
-import { ActionButton } from "@/components/ui/action-button";
-import { useState } from "react";
-import { ZBookmarkList } from "@hoarder/trpc/types/lists";
+import { Trash } from "lucide-react";
+
+import type { ZBookmarkList } from "@hoarder/trpc/types/lists";
export default function DeleteListButton({ list }: { list: ZBookmarkList }) {
const [isDialogOpen, setDialogOpen] = useState(false);
diff --git a/apps/web/components/dashboard/lists/ListView.tsx b/apps/web/components/dashboard/lists/ListView.tsx
index 2d48d9e3..beeea7f1 100644
--- a/apps/web/components/dashboard/lists/ListView.tsx
+++ b/apps/web/components/dashboard/lists/ListView.tsx
@@ -1,10 +1,11 @@
"use client";
import BookmarksGrid from "@/components/dashboard/bookmarks/BookmarksGrid";
-import { ZBookmark } from "@hoarder/trpc/types/bookmarks";
-import { ZBookmarkListWithBookmarks } from "@hoarder/trpc/types/lists";
import { api } from "@/lib/trpc";
+import type { ZBookmark } from "@hoarder/trpc/types/bookmarks";
+import type { ZBookmarkListWithBookmarks } from "@hoarder/trpc/types/lists";
+
export default function ListView({
bookmarks,
list: initialData,
diff --git a/apps/web/components/dashboard/search/SearchInput.tsx b/apps/web/components/dashboard/search/SearchInput.tsx
index 73d14c90..abb19f5e 100644
--- a/apps/web/components/dashboard/search/SearchInput.tsx
+++ b/apps/web/components/dashboard/search/SearchInput.tsx
@@ -1,7 +1,7 @@
+import React from "react";
import { Input } from "@/components/ui/input";
import { useDoBookmarkSearch } from "@/lib/hooks/bookmark-search";
import { cn } from "@/lib/utils";
-import React from "react";
const SearchInput = React.forwardRef<
HTMLInputElement,
diff --git a/apps/web/components/dashboard/settings/AddApiKey.tsx b/apps/web/components/dashboard/settings/AddApiKey.tsx
index a4fd9c25..15a78d56 100644
--- a/apps/web/components/dashboard/settings/AddApiKey.tsx
+++ b/apps/web/components/dashboard/settings/AddApiKey.tsx
@@ -1,17 +1,10 @@
"use client";
+import type { SubmitErrorHandler } from "react-hook-form";
+import { useState } from "react";
+import { useRouter } from "next/navigation";
+import { ActionButton } from "@/components/ui/action-button";
import { Button } from "@/components/ui/button";
-import { Input } from "@/components/ui/input";
-import {
- Form,
- FormControl,
- FormDescription,
- FormField,
- FormItem,
- FormLabel,
- FormMessage,
-} from "@/components/ui/form";
-
import {
Dialog,
DialogClose,
@@ -22,15 +15,22 @@ import {
DialogTitle,
DialogTrigger,
} from "@/components/ui/dialog";
-import { z } from "zod";
-import { useRouter } from "next/navigation";
-import { zodResolver } from "@hookform/resolvers/zod";
-import { useForm, SubmitErrorHandler } from "react-hook-form";
+import {
+ Form,
+ FormControl,
+ FormDescription,
+ FormField,
+ FormItem,
+ FormLabel,
+ FormMessage,
+} from "@/components/ui/form";
+import { Input } from "@/components/ui/input";
import { toast } from "@/components/ui/use-toast";
import { api } from "@/lib/trpc";
-import { useState } from "react";
+import { zodResolver } from "@hookform/resolvers/zod";
import { Check, Copy } from "lucide-react";
-import { ActionButton } from "@/components/ui/action-button";
+import { useForm } from "react-hook-form";
+import { z } from "zod";
function ApiKeySuccess({ apiKey }: { apiKey: string }) {
const [isCopied, setCopied] = useState(false);
diff --git a/apps/web/components/dashboard/settings/ApiKeySettings.tsx b/apps/web/components/dashboard/settings/ApiKeySettings.tsx
index 1598f25f..a3680863 100644
--- a/apps/web/components/dashboard/settings/ApiKeySettings.tsx
+++ b/apps/web/components/dashboard/settings/ApiKeySettings.tsx
@@ -7,8 +7,9 @@ import {
TableRow,
} from "@/components/ui/table";
import { api } from "@/server/api/client";
-import DeleteApiKey from "./DeleteApiKey";
+
import AddApiKey from "./AddApiKey";
+import DeleteApiKey from "./DeleteApiKey";
export default async function ApiKeys() {
const keys = await api.apiKeys.list();
diff --git a/apps/web/components/dashboard/settings/DeleteApiKey.tsx b/apps/web/components/dashboard/settings/DeleteApiKey.tsx
index 566136af..091f352c 100644
--- a/apps/web/components/dashboard/settings/DeleteApiKey.tsx
+++ b/apps/web/components/dashboard/settings/DeleteApiKey.tsx
@@ -1,8 +1,9 @@
"use client";
+import { useState } from "react";
+import { useRouter } from "next/navigation";
+import { ActionButton } from "@/components/ui/action-button";
import { Button } from "@/components/ui/button";
-import { Trash } from "lucide-react";
-
import {
Dialog,
DialogClose,
@@ -13,11 +14,9 @@ import {
DialogTitle,
DialogTrigger,
} from "@/components/ui/dialog";
-import { useRouter } from "next/navigation";
import { toast } from "@/components/ui/use-toast";
import { api } from "@/lib/trpc";
-import { ActionButton } from "@/components/ui/action-button";
-import { useState } from "react";
+import { Trash } from "lucide-react";
export default function DeleteApiKey({
name,
diff --git a/apps/web/components/dashboard/sidebar/AllLists.tsx b/apps/web/components/dashboard/sidebar/AllLists.tsx
index a77252d0..34680cdd 100644
--- a/apps/web/components/dashboard/sidebar/AllLists.tsx
+++ b/apps/web/components/dashboard/sidebar/AllLists.tsx
@@ -1,11 +1,13 @@
"use client";
+import Link from "next/link";
import { api } from "@/lib/trpc";
-import SidebarItem from "./SidebarItem";
-import NewListModal, { useNewListModal } from "./NewListModal";
import { Plus } from "lucide-react";
-import Link from "next/link";
-import { ZBookmarkList } from "@hoarder/trpc/types/lists";
+
+import type { ZBookmarkList } from "@hoarder/trpc/types/lists";
+
+import NewListModal, { useNewListModal } from "./NewListModal";
+import SidebarItem from "./SidebarItem";
export default function AllLists({
initialData,
diff --git a/apps/web/components/dashboard/sidebar/ModileSidebar.tsx b/apps/web/components/dashboard/sidebar/ModileSidebar.tsx
index 4bd6a347..3c68433a 100644
--- a/apps/web/components/dashboard/sidebar/ModileSidebar.tsx
+++ b/apps/web/components/dashboard/sidebar/ModileSidebar.tsx
@@ -1,11 +1,12 @@
-import MobileSidebarItem from "./ModileSidebarItem";
import {
- Tag,
+ ClipboardList,
PackageOpen,
- Settings,
Search,
- ClipboardList,
+ Settings,
+ Tag,
} from "lucide-react";
+
+import MobileSidebarItem from "./ModileSidebarItem";
import SidebarProfileOptions from "./SidebarProfileOptions";
export default async function MobileSidebar() {
diff --git a/apps/web/components/dashboard/sidebar/ModileSidebarItem.tsx b/apps/web/components/dashboard/sidebar/ModileSidebarItem.tsx
index 9389d2e4..d2b4aad3 100644
--- a/apps/web/components/dashboard/sidebar/ModileSidebarItem.tsx
+++ b/apps/web/components/dashboard/sidebar/ModileSidebarItem.tsx
@@ -1,8 +1,8 @@
"use client";
-import { cn } from "@/lib/utils";
import Link from "next/link";
import { usePathname } from "next/navigation";
+import { cn } from "@/lib/utils";
export default function MobileSidebarItem({
logo,
diff --git a/apps/web/components/dashboard/sidebar/NewListModal.tsx b/apps/web/components/dashboard/sidebar/NewListModal.tsx
index f51616ed..e244411d 100644
--- a/apps/web/components/dashboard/sidebar/NewListModal.tsx
+++ b/apps/web/components/dashboard/sidebar/NewListModal.tsx
@@ -1,14 +1,5 @@
"use client";
-import data from "@emoji-mart/data";
-import Picker from "@emoji-mart/react";
-
-import {
- Popover,
- PopoverContent,
- PopoverTrigger,
-} from "@/components/ui/popover";
-
import { ActionButton } from "@/components/ui/action-button";
import { Button } from "@/components/ui/button";
import {
@@ -18,7 +9,6 @@ import {
DialogFooter,
DialogHeader,
DialogTitle,
- DialogTrigger,
} from "@/components/ui/dialog";
import {
Form,
@@ -27,15 +17,19 @@ import {
FormItem,
FormMessage,
} from "@/components/ui/form";
-
+import { Input } from "@/components/ui/input";
+import {
+ Popover,
+ PopoverContent,
+ PopoverTrigger,
+} from "@/components/ui/popover";
import { toast } from "@/components/ui/use-toast";
import { api } from "@/lib/trpc";
-
-import { z } from "zod";
-import { useForm } from "react-hook-form";
+import data from "@emoji-mart/data";
+import Picker from "@emoji-mart/react";
import { zodResolver } from "@hookform/resolvers/zod";
-import { Input } from "@/components/ui/input";
-
+import { useForm } from "react-hook-form";
+import { z } from "zod";
import { create } from "zustand";
export const useNewListModal = create<{
@@ -113,7 +107,7 @@ export default function NewListModal() {
<FormItem>
<FormControl>
<Popover>
- <PopoverTrigger className="border-input h-full rounded border px-2 text-2xl">
+ <PopoverTrigger className="h-full rounded border border-input px-2 text-2xl">
{field.value}
</PopoverTrigger>
<PopoverContent>
diff --git a/apps/web/components/dashboard/sidebar/Sidebar.tsx b/apps/web/components/dashboard/sidebar/Sidebar.tsx
index a5c1d7a5..0351b889 100644
--- a/apps/web/components/dashboard/sidebar/Sidebar.tsx
+++ b/apps/web/components/dashboard/sidebar/Sidebar.tsx
@@ -1,13 +1,15 @@
-import { Tag, Home, PackageOpen, Settings, Search, Shield } from "lucide-react";
-import { redirect } from "next/navigation";
-import SidebarItem from "./SidebarItem";
-import { getServerAuthSession } from "@/server/auth";
import Link from "next/link";
-import SidebarProfileOptions from "./SidebarProfileOptions";
+import { redirect } from "next/navigation";
import { Separator } from "@/components/ui/separator";
-import AllLists from "./AllLists";
-import serverConfig from "@hoarder/shared/config";
import { api } from "@/server/api/client";
+import { getServerAuthSession } from "@/server/auth";
+import { Home, PackageOpen, Search, Settings, Shield, Tag } from "lucide-react";
+
+import serverConfig from "@hoarder/shared/config";
+
+import AllLists from "./AllLists";
+import SidebarItem from "./SidebarItem";
+import SidebarProfileOptions from "./SidebarProfileOptions";
export default async function Sidebar() {
const session = await getServerAuthSession();
diff --git a/apps/web/components/dashboard/sidebar/SidebarItem.tsx b/apps/web/components/dashboard/sidebar/SidebarItem.tsx
index 856bdffd..75a1f6ba 100644
--- a/apps/web/components/dashboard/sidebar/SidebarItem.tsx
+++ b/apps/web/components/dashboard/sidebar/SidebarItem.tsx
@@ -1,8 +1,8 @@
"use client";
-import { cn } from "@/lib/utils";
import Link from "next/link";
import { usePathname } from "next/navigation";
+import { cn } from "@/lib/utils";
export default function SidebarItem({
name,