aboutsummaryrefslogtreecommitdiffstats
path: root/apps/web/components/dashboard/bookmarks
diff options
context:
space:
mode:
Diffstat (limited to 'apps/web/components/dashboard/bookmarks')
-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
13 files changed, 89 insertions, 68 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);