From ee2c96c8854eda5e873816c2f2e6ce8ee269143d Mon Sep 17 00:00:00 2001 From: Brooke Christiansen Date: Thu, 1 May 2025 18:50:28 -0700 Subject: [PATCH] latest --- src/components/Footer.tsx | 13 ++++ src/components/Header.astro | 0 src/components/ListTags.tsx | 51 ------------- src/components/ListWebsites.tsx | 78 -------------------- src/components/ModalSubmitNew.tsx | 86 --------------------- src/components/ModeToggle.tsx | 55 -------------- src/components/Navbar.tsx | 119 +++++++++++++++--------------- src/components/Search.tsx | 77 ------------------- src/layouts/Layout.astro | 8 +- src/pages/GetInvolved.astro | 21 +++++- src/pages/index.astro | 60 ++++----------- 11 files changed, 105 insertions(+), 463 deletions(-) create mode 100644 src/components/Footer.tsx delete mode 100644 src/components/Header.astro delete mode 100644 src/components/ListTags.tsx delete mode 100644 src/components/ListWebsites.tsx delete mode 100644 src/components/ModalSubmitNew.tsx delete mode 100644 src/components/ModeToggle.tsx delete mode 100644 src/components/Search.tsx diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx new file mode 100644 index 0000000..db74e2e --- /dev/null +++ b/src/components/Footer.tsx @@ -0,0 +1,13 @@ +import { cn } from "@/lib/utils"; + +export default function Footer() { + return ( +
+

Copyleft 2025

+
+ ); +} diff --git a/src/components/Header.astro b/src/components/Header.astro deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/ListTags.tsx b/src/components/ListTags.tsx deleted file mode 100644 index 4315c79..0000000 --- a/src/components/ListTags.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import dataWebsites from "@/data/websites.json"; -import { cn } from "@/lib/utils"; -import { filteredTags } from "@/store"; -import { useStore } from "@nanostores/react"; -import { X } from "lucide-react"; -import { useMemo } from "react"; -import { Button } from "./ui/button"; - -export default function ListTags() { - const selectedTags: string[] = useStore(filteredTags); - - const tags = useMemo(() => { - const tags = new Set(); - dataWebsites.forEach((website) => { - website.tags.forEach((tag) => tags.add(tag)); - }); - return Array.from(tags).sort((a, b) => a.localeCompare(b)); - }, []); - - return ( -
- {tags.map((tag) => { - const selected = selectedTags.includes(tag); - return ( - - ); - })} -
- ); -} diff --git a/src/components/ListWebsites.tsx b/src/components/ListWebsites.tsx deleted file mode 100644 index c247d45..0000000 --- a/src/components/ListWebsites.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import { Badge } from "@/components/ui/badge"; -import dataWebsites from "@/data/websites.json"; -import { cn } from "@/lib/utils"; -import { filteredTags, searchKeyword } from "@/store"; -import { useStore } from "@nanostores/react"; -import { useMemo } from "react"; - -export default function ListWebsites() { - const search = useStore(searchKeyword); - const tags = useStore(filteredTags); - - const filteredWebsites = useMemo(() => { - if (!search && tags.length === 0) return dataWebsites; - return dataWebsites.filter((website) => { - if ( - tags.length > 0 && - !tags.every((tag) => (website.tags as string[]).includes(tag)) - ) { - return false; - } - if (!website.title.toLowerCase().includes(search)) return false; - return true; - }); - }, [search, tags]); - - return ( -
- {filteredWebsites.map((website) => ( - -
-
- {website.title} -
-

{website.title}

-
-
-
-

- {website.description} -

-
- {website.tags.map((tag) => ( - {tag} - ))} -
-
-
- - Last reviewed at{" "} - {website.lastReviewAt} - -
-
-
- ))} -
- ); -} diff --git a/src/components/ModalSubmitNew.tsx b/src/components/ModalSubmitNew.tsx deleted file mode 100644 index 61c9a74..0000000 --- a/src/components/ModalSubmitNew.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import { Button } from "@/components/ui/button"; -import { - Dialog, - DialogClose, - DialogContent, - DialogDescription, - DialogFooter, - DialogHeader, - DialogTitle, - DialogTrigger, -} from "@/components/ui/dialog"; -import { - Drawer, - DrawerClose, - DrawerContent, - DrawerDescription, - DrawerFooter, - DrawerHeader, - DrawerTitle, - DrawerTrigger, -} from "@/components/ui/drawer"; -import { Input } from "@/components/ui/input"; -import { Label } from "@/components/ui/label"; -import { Textarea } from "@/components/ui/textarea"; - -export default function ModalSubmitNew({ - children, -}: { - children: React.ReactNode; -}) { - const title = "Submit a new website"; - const description = "Request us to list your website on this website"; - - return ( - <> - - {children} - - - {title} - {description} - -
- - -
-
- -