main
tsx 48 lines 1.29 KB
Raw
1 import {
2 Select,
3 SelectContent,
4 SelectItem,
5 SelectTrigger,
6 SelectValue,
7 } from "@/components/ui/select";
8 import type { SortOption } from "@/types/filters";
9 import clsx from "clsx";
10
11 interface SortbySelectProps {
12 sortBy: SortOption;
13 onSortByChange: (value: SortOption) => void;
14 hideFiltersOnMobile?: boolean;
15 className?: string;
16 }
17
18 export const SortbySelect = ({
19 sortBy,
20 onSortByChange,
21 hideFiltersOnMobile,
22 className,
23 }: SortbySelectProps) => (
24 <Select
25 value={sortBy}
26 onValueChange={(value) => onSortByChange(value as SortOption)}
27 >
28 <SelectTrigger
29 className={clsx(
30 "w-37.5 h-10 border-border!",
31 hideFiltersOnMobile && "hidden sm:flex",
32 className
33 )}
34 >
35 <SelectValue placeholder="Sort By" />
36 </SelectTrigger>
37 <SelectContent>
38 <SelectItem value="default">Default</SelectItem>
39 <SelectItem value="name-asc">Name (A-Z)</SelectItem>
40 <SelectItem value="name-desc">Name (Z-A)</SelectItem>
41 <SelectItem value="updated">Recently Updated</SelectItem>
42 <SelectItem value="duration">Duration (Maintained)</SelectItem>
43 <SelectItem value="description">Description</SelectItem>
44 <SelectItem value="tags">Tags</SelectItem>
45 <SelectItem value="owner">Owner</SelectItem>
46 </SelectContent>
47 </Select>
48 );