Skip to content

Commit f154647

Browse files
committed
fix : reverted to building version
1 parent fb2adf8 commit f154647

1 file changed

Lines changed: 81 additions & 54 deletions

File tree

src/components/SideBar.tsx

Lines changed: 81 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
"use client";
22

33
import React from "react";
4-
import clsx from "clsx";
54
import { Filter } from "lucide-react";
65
import { type Filters, type IPaper } from "@/interface";
76
import {
@@ -12,14 +11,14 @@ import {
1211
} from "@/components/ui/accordion";
1312

1413
function SideBar({
15-
loading,
1614
selectedExams,
1715
selectedSlots,
1816
selectedYears,
1917
selectedCampuses,
2018
selectedSemesters,
2119
selectedAnswerKeyIncluded,
2220
filterOptions,
21+
filtersNotPulled,
2322
handleApplyFilters,
2423
handleSelectAll,
2524
handleDeselectAll,
@@ -32,46 +31,44 @@ function SideBar({
3231
selectedCampuses: string[];
3332
selectedSemesters: string[];
3433
selectedAnswerKeyIncluded: boolean;
34+
filtersNotPulled: () => void;
35+
noAppliedFilters: () => void;
36+
closeFilters: () => void;
37+
subject: string | null;
3538
filterOptions: Filters | undefined;
39+
selectedPapers: IPaper[];
3640
handleApplyFilters: (
3741
exams: string[],
3842
slots: string[],
3943
years: string[],
4044
campus: string[],
4145
semester: string[],
42-
anskey: boolean
46+
anskey: boolean,
4347
) => void;
4448
handleSelectAll: () => void;
4549
handleDeselectAll: () => void;
4650
handleDownloadSelected: () => void;
4751
}) {
48-
// Reusable button with consistent hover styles
49-
const SidebarButton: React.FC<{
50-
label: string;
51-
onClick: () => void;
52-
selected?: boolean;
53-
className?: string;
54-
}> = ({ label, onClick, selected = false, className }) => (
55-
<div
56-
onClick={onClick}
57-
className={clsx(
58-
"cursor-pointer rounded-full border-2 border-black px-2 py-1 font-play text-xs font-semibold hover:bg-[#B2B8FF] hover:text-black dark:border-white dark:hover:border-[#434dba] dark:hover:bg-[#434dba] dark:hover:text-white",
59-
selected && "border-[#B2B8FF] bg-[#B2B8FF] dark:border-[#434dba] dark:bg-[#434dba]",
60-
className
61-
)}
62-
>
63-
{label}
64-
</div>
65-
);
66-
6752
const exams =
68-
filterOptions?.unique_exams.map((exam) => ({ label: exam, value: exam })) ?? [];
53+
filterOptions?.unique_exams.map((exam) => ({
54+
label: exam,
55+
value: exam,
56+
})) ?? [];
6957
const slots =
70-
filterOptions?.unique_slots.map((slot) => ({ label: slot, value: slot })) ?? [];
58+
filterOptions?.unique_slots.map((slot) => ({
59+
label: slot,
60+
value: slot,
61+
})) ?? [];
7162
const years =
72-
filterOptions?.unique_years.map((year) => ({ label: year, value: year })) ?? [];
63+
filterOptions?.unique_years.map((year) => ({
64+
label: year,
65+
value: year,
66+
})) ?? [];
7367
const semesters =
74-
filterOptions?.unique_semesters.map((semester) => ({ label: semester, value: semester })) ?? [];
68+
filterOptions?.unique_semesters.map((semester) => ({
69+
label: semester,
70+
value: semester,
71+
})) ?? [];
7572

7673
const filtersForSidebar = [
7774
{
@@ -85,7 +82,7 @@ function SideBar({
8582
selectedYears,
8683
selectedCampuses,
8784
selectedSemesters,
88-
selectedAnswerKeyIncluded
85+
selectedAnswerKeyIncluded,
8986
),
9087
},
9188
{
@@ -99,7 +96,7 @@ function SideBar({
9996
selectedYears,
10097
selectedCampuses,
10198
selectedSemesters,
102-
selectedAnswerKeyIncluded
99+
selectedAnswerKeyIncluded,
103100
),
104101
},
105102
{
@@ -113,7 +110,7 @@ function SideBar({
113110
newVal,
114111
selectedCampuses,
115112
selectedSemesters,
116-
selectedAnswerKeyIncluded
113+
selectedAnswerKeyIncluded,
117114
),
118115
},
119116
{
@@ -127,51 +124,75 @@ function SideBar({
127124
selectedYears,
128125
selectedCampuses,
129126
newVal,
130-
selectedAnswerKeyIncluded
127+
selectedAnswerKeyIncluded,
131128
),
132129
},
133130
];
134131

135132
return (
136133
<div className="no-scrollbar fixed sticky top-0 h-[100vh] flex-col items-baseline overflow-y-auto border-r-2 border-[#36266d] bg-[#f3f5ff] pt-[10px] dark:bg-[#070114] md:flex">
137-
{/* Header */}
138134
<div className="flex w-full items-center justify-between border-b-2 border-[#36266d] px-[10px] py-4">
139135
<div className="flex items-center gap-1">
140136
<Filter size={24} />
141137
<div className="font-play text-xl font-bold">Filters</div>
142138
</div>
143-
<SidebarButton
144-
label="Reset Filters"
145-
onClick={() => handleApplyFilters([], [], [], [], [], false)}
146-
/>
139+
<div className="flex flex-col">
140+
<div
141+
className="cursor-pointer rounded-full border-2 border-black px-2 py-1 font-play text-xs font-semibold hover:bg-slate-800 hover:text-white dark:border-[#434dba] dark:hover:border-white dark:hover:bg-slate-900"
142+
onClick={() => {
143+
handleApplyFilters([], [], [], [], [], false);
144+
}}
145+
>
146+
Reset Filters
147+
</div>
148+
</div>
147149
</div>
148150

149-
{/* Answer Key Toggle */}
150151
<div className="flex w-full items-center justify-between border-b-2 border-[#36266d] px-[10px] py-4">
151-
<SidebarButton
152-
label="Answer Key Available"
153-
onClick={() =>
152+
<div
153+
onClick={() => {
154154
handleApplyFilters(
155155
selectedExams,
156156
selectedSlots,
157157
selectedYears,
158158
selectedCampuses,
159159
selectedSemesters,
160-
!selectedAnswerKeyIncluded
161-
)
162-
}
163-
selected={selectedAnswerKeyIncluded}
164-
/>
160+
!selectedAnswerKeyIncluded,
161+
);
162+
}}
163+
className={`flex cursor-pointer rounded-full border-2 border-black px-2 py-1 font-play text-xs font-semibold hover:bg-slate-800 hover:text-white ${
164+
selectedAnswerKeyIncluded
165+
? "border-[#B2B8FF] bg-[#B2B8FF] hover:border-black hover:bg-[#B2B8FF] dark:border-[#434dba] dark:bg-[#434dba] dark:hover:border-[white] dark:hover:bg-[#434dba]"
166+
: "bg-none hover:bg-[#B2B8FF] dark:border-white dark:hover:border-[#434dba]"
167+
}`}
168+
>
169+
Answer Key Available
170+
</div>
165171
</div>
166172

167173
{/* Select/Deselect/Download All Buttons */}
168174
<div className="flex w-full flex-wrap justify-between gap-2 border-b-2 border-[#36266d] px-[10px] py-4">
169-
<SidebarButton label="Select All" onClick={handleSelectAll} />
170-
<SidebarButton label="Deselect All" onClick={handleDeselectAll} />
171-
<SidebarButton label="Download Selected" onClick={handleDownloadAll} />
175+
<div
176+
onClick={handleSelectAll}
177+
className="cursor-pointer rounded-full border-2 border-black px-2 py-1 font-play text-xs font-semibold hover:bg-[#B2B8FF] hover:text-black dark:border-white dark:hover:border-[#434dba] dark:hover:bg-[#434dba] dark:hover:text-white"
178+
>
179+
Select All
180+
</div>
181+
<div
182+
onClick={handleDeselectAll}
183+
className="cursor-pointer rounded-full border-2 border-black px-2 py-1 font-play text-xs font-semibold hover:bg-[#B2B8FF] hover:text-black dark:border-white dark:hover:border-[#434dba] dark:hover:bg-[#434dba] dark:hover:text-white"
184+
>
185+
Deselect All
186+
</div>
187+
<div
188+
onClick={handleDownloadAll}
189+
className="cursor-pointer rounded-full border-2 border-black px-2 py-1 font-play text-xs font-semibold hover:bg-[#B2B8FF] hover:text-black dark:border-white dark:hover:border-[#434dba] dark:hover:bg-[#434dba] dark:hover:text-white"
190+
>
191+
Download Selected
192+
</div>
172193
</div>
173194

174-
{/* Filters Accordion */}
195+
{/* Filters */}
175196
{filtersForSidebar.map((section) => (
176197
<div
177198
key={section.label}
@@ -180,23 +201,29 @@ function SideBar({
180201
<Accordion className="w-full" type="single" collapsible>
181202
<AccordionItem className="border-none no-underline" value="item-1">
182203
<AccordionTrigger className="w-full no-underline">
183-
<div className="font-play text-sm no-underline">{section.label}</div>
204+
<div className="font-play text-sm no-underline">
205+
{section.label}
206+
</div>
184207
</AccordionTrigger>
185208
<AccordionContent>
186209
<div className="my-2 flex w-full flex-wrap items-center">
187210
{section.data.map((item) => (
188-
<SidebarButton
211+
<div
189212
key={item.value}
190-
label={item.label}
191213
onClick={() => {
192214
const newValues = section.selected.includes(item.value)
193215
? section.selected.filter((v) => v !== item.value)
194216
: [...section.selected, item.value];
195217
section.updater(newValues);
196218
}}
197-
selected={section.selected.includes(item.value)}
198-
className="mb-2 mr-2"
199-
/>
219+
className={`mb-2 mr-2 flex h-fit cursor-pointer items-center rounded-full border-2 border-black px-2 py-1 font-play text-xs font-semibold hover:bg-slate-800 hover:text-white ${
220+
section.selected.includes(item.value)
221+
? "border-[#B2B8FF] bg-[#B2B8FF] dark:border-[#434dba] dark:bg-[#434dba]"
222+
: "bg-none dark:border-white"
223+
}`}
224+
>
225+
{item.label}
226+
</div>
200227
))}
201228
</div>
202229
</AccordionContent>

0 commit comments

Comments
 (0)