From 01d33753033e4318ebfbc5b56aca634968b072af Mon Sep 17 00:00:00 2001 From: Alton Banushi Date: Fri, 29 Nov 2024 21:18:33 -0500 Subject: [PATCH] #95 empty state search (#96) * Begin Rework Search Filter + Bar, Adjust Styles on Header * Change Cycle/WorkModel to dropdowns + add search button since shi is broke * Search bar changes * Lint... * Lint again.. * No Results Component * Search Filters Populate Based on URL Search Params * Rishi micromanaging (jk) * Home page reroutes to roles * Loading Page Updates * Jank solution to reset select * Lint * Linting + Toast Issue * Lint... * Prettier Fix * how to center a div? --- .../(pages)/(dashboard)/companies/page.tsx | 19 +++++++---- .../app/(pages)/(dashboard)/roles/page.tsx | 6 +++- apps/web/src/app/_components/cooper-logo.tsx | 16 +++++++++ apps/web/src/app/_components/header.tsx | 9 ++--- .../src/app/_components/loading-results.tsx | 12 +++++++ apps/web/src/app/_components/no-results.tsx | 33 +++++++++++++++++++ 6 files changed, 80 insertions(+), 15 deletions(-) create mode 100644 apps/web/src/app/_components/cooper-logo.tsx create mode 100644 apps/web/src/app/_components/loading-results.tsx create mode 100644 apps/web/src/app/_components/no-results.tsx diff --git a/apps/web/src/app/(pages)/(dashboard)/companies/page.tsx b/apps/web/src/app/(pages)/(dashboard)/companies/page.tsx index 41d2419..f8659bf 100644 --- a/apps/web/src/app/(pages)/(dashboard)/companies/page.tsx +++ b/apps/web/src/app/(pages)/(dashboard)/companies/page.tsx @@ -1,5 +1,6 @@ import { unstable_noStore as noStore } from "next/cache"; +import NoResults from "~/app/_components/no-results"; import { RoleReviewCard } from "~/app/_components/reviews/role-review-card"; import SearchFilter from "~/app/_components/search/search-filter"; import { api } from "~/trpc/server"; @@ -20,13 +21,17 @@ export default async function Companies() { return ( <> -
- {roles.map((role) => { - return ( - - ); - })} -
+ {roles.length > 0 ? ( +
+ {roles.map((role) => { + return ( + + ); + })} +
+ ) : ( + + )} ); } diff --git a/apps/web/src/app/(pages)/(dashboard)/roles/page.tsx b/apps/web/src/app/(pages)/(dashboard)/roles/page.tsx index aa1a937..e47adbe 100644 --- a/apps/web/src/app/(pages)/(dashboard)/roles/page.tsx +++ b/apps/web/src/app/(pages)/(dashboard)/roles/page.tsx @@ -12,6 +12,8 @@ import { WorkEnvironment, WorkTerm } from "@cooper/db/schema"; import { cn } from "@cooper/ui"; import { useToast } from "@cooper/ui/hooks/use-toast"; +import LoadingResults from "~/app/_components/loading-results"; +import NoResults from "~/app/_components/no-results"; import { ReviewCard } from "~/app/_components/reviews/review-card"; import { ReviewCardPreview } from "~/app/_components/reviews/review-card-preview"; import SearchFilter from "~/app/_components/search/search-filter"; @@ -79,7 +81,7 @@ export default function Roles({ return ( <> - {reviews.isSuccess && ( + {reviews.isSuccess && reviews.data.length > 0 && (
{reviews.data.map((review, i) => { @@ -106,6 +108,8 @@ export default function Roles({
)} + {reviews.isSuccess && reviews.data.length === 0 && } + {reviews.isPending && } ); } diff --git a/apps/web/src/app/_components/cooper-logo.tsx b/apps/web/src/app/_components/cooper-logo.tsx new file mode 100644 index 0000000..5339fbc --- /dev/null +++ b/apps/web/src/app/_components/cooper-logo.tsx @@ -0,0 +1,16 @@ +import Image from "next/image"; + +interface CooperLogoProps { + width?: number; +} + +export default function CooperLogo({ width }: CooperLogoProps) { + return ( + Logo Picture + ); +} diff --git a/apps/web/src/app/_components/header.tsx b/apps/web/src/app/_components/header.tsx index 4391843..cb6d287 100644 --- a/apps/web/src/app/_components/header.tsx +++ b/apps/web/src/app/_components/header.tsx @@ -1,6 +1,5 @@ "use client"; -import Image from "next/image"; import Link from "next/link"; import { usePathname } from "next/navigation"; @@ -9,6 +8,7 @@ import { cn } from "@cooper/ui"; import { NewReviewDialog } from "~/app/_components/reviews/new-review-dialogue"; import { altivoFont } from "~/app/styles/font"; +import CooperLogo from "./cooper-logo"; interface HeaderProps { session: Session | null; @@ -29,12 +29,7 @@ export default function Header({ session, auth }: HeaderProps) { {/* Logo + Cooper */}
- Logo Picture +

+ +
+

Loading ...

+
+ + ); +} diff --git a/apps/web/src/app/_components/no-results.tsx b/apps/web/src/app/_components/no-results.tsx new file mode 100644 index 0000000..43c8650 --- /dev/null +++ b/apps/web/src/app/_components/no-results.tsx @@ -0,0 +1,33 @@ +"use client"; + +import { usePathname, useRouter } from "next/navigation"; + +import { Button } from "@cooper/ui/button"; + +import CooperLogo from "./cooper-logo"; + +export default function NoResults() { + const router = useRouter(); + const pathname = usePathname(); + + function clearFilters() { + router.push(pathname); + } + + return ( +
+ +
+

No Results Found

+ +
+
+ ); +}