Skip to content

Commit 97c6dae

Browse files
committed
feat: filter update on relationships
1 parent d40c133 commit 97c6dae

1 file changed

Lines changed: 45 additions & 19 deletions

File tree

src/pages/relationships.tsx

Lines changed: 45 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import {
2020
AccordionTrigger,
2121
} from "@/components/ui/accordion";
2222
import { Command, CommandInput } from "@/components/ui/command";
23+
import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group";
24+
import { cn } from "@/lib/utils";
2325

2426
import { HeartIcon, HomeIcon, UsersIcon } from "@heroicons/react/24/solid";
2527
import { IconBabyCarriage, IconAdjustments } from "@tabler/icons-react";
@@ -40,6 +42,11 @@ const sort_filters = [
4042
{ value: "hearts", label: "Hearts" },
4143
];
4244

45+
const bubbleColors: Record<string, string> = {
46+
"0": "border-neutral-200 bg-white dark:border-neutral-800 dark:bg-neutral-950", // incomplete
47+
"2": "border-green-900 bg-green-500/20", // completed
48+
};
49+
4350
export default function Relationships() {
4451
const { activePlayer } = usePlayers();
4552

@@ -269,19 +276,35 @@ export default function Relationships() {
269276
All Villagers
270277
</h2>
271278
<div className="grid grid-cols-1 justify-between gap-2 lg:flex">
272-
<div className="grid grid-cols-2 gap-2 sm:flex sm:gap-3">
273-
<FilterButton
274-
target={"0"}
275-
_filter={_filter}
276-
title={"Incomplete"}
277-
setFilter={setFilter}
278-
/>
279-
<FilterButton
280-
target={"2"}
281-
_filter={_filter}
282-
title="Completed"
283-
setFilter={setFilter}
284-
/>
279+
<div className="flex flex-row items-center gap-2">
280+
<ToggleGroup
281+
variant="outline"
282+
type="single"
283+
value={_filter}
284+
onValueChange={(val) =>
285+
setFilter(val === _filter ? "all" : val)
286+
}
287+
className="gap-2"
288+
>
289+
<ToggleGroupItem value="0" aria-label="Show Incomplete">
290+
<span
291+
className={cn(
292+
"inline-block h-4 w-4 rounded-full border align-middle",
293+
bubbleColors["0"],
294+
)}
295+
/>
296+
<span className="align-middle">Incomplete</span>
297+
</ToggleGroupItem>
298+
<ToggleGroupItem value="2" aria-label="Show Completed">
299+
<span
300+
className={cn(
301+
"inline-block h-4 w-4 rounded-full border align-middle",
302+
bubbleColors["2"],
303+
)}
304+
/>
305+
<span className="align-middle">Completed</span>
306+
</ToggleGroupItem>
307+
</ToggleGroup>
285308
</div>
286309
<div className="grid grid-cols-1 items-stretch gap-2 sm:flex">
287310
<FilterSearch
@@ -291,14 +314,17 @@ export default function Relationships() {
291314
setFilter={setSort}
292315
icon={IconAdjustments}
293316
/>
294-
<Command className="max-w-xs border border-b-0 dark:border-neutral-800">
295-
<CommandInput
296-
onValueChange={(v) => setSearch(v)}
297-
placeholder="Search Villagers"
298-
/>
299-
</Command>
300317
</div>
301318
</div>
319+
{/* Search Bar Row */}
320+
<div className="mt-2 w-full">
321+
<Command className="w-full border border-b-0 dark:border-neutral-800">
322+
<CommandInput
323+
onValueChange={(v) => setSearch(v)}
324+
placeholder="Search Villagers"
325+
/>
326+
</Command>
327+
</div>
302328
<div className="grid grid-cols-1 gap-4 xl:grid-cols-4">
303329
{Object.values(villagers)
304330
.filter((v) => {

0 commit comments

Comments
 (0)