From b39a81e7525ff99cf7a51cfbff91dfb7e262d2ed Mon Sep 17 00:00:00 2001
From: Gayatri Padalia
Date: Mon, 20 Jul 2026 14:35:54 +0530
Subject: [PATCH] feat: add subject search functionality
---
app/components/SearchBar.tsx | 329 +++++++++++++++++++++++++++++++++++
app/components/subjects.tsx | 3 +
2 files changed, 332 insertions(+)
create mode 100644 app/components/SearchBar.tsx
diff --git a/app/components/SearchBar.tsx b/app/components/SearchBar.tsx
new file mode 100644
index 0000000..45a0d9e
--- /dev/null
+++ b/app/components/SearchBar.tsx
@@ -0,0 +1,329 @@
+"use client";
+
+import { useMemo, useState } from "react";
+import Link from "next/link";
+
+const subjects = [
+ // Semester 1
+ {
+ semester: "Semester-1",
+ name: "Basic Electrical and Electronics",
+ href: "/sem1/bee/ch0",
+ },
+ {
+ semester: "Semester-1",
+ name: "Basics of Mechanical Engineering",
+ href: "/sem1/bme/ch0",
+ },
+ {
+ semester: "Semester-1",
+ name: "C Programming",
+ href: "/sem1/c/ch0",
+ },
+ {
+ semester: "Semester-1",
+ name: "Engineering Mathematics-1",
+ href: "/sem1/em1/ch0",
+ },
+ {
+ semester: "Semester-1",
+ name: "Engineering Physics",
+ href: "/sem1/ep/ch0",
+ },
+ {
+ semester: "Semester-1",
+ name: "Engineering Graphics & Design",
+ href: "/sem1/egd/ch0",
+ },
+ {
+ semester: "Semester-1",
+ name: "English Communication",
+ href: "/sem1/ec/ch0",
+ },
+
+ // Semester 2
+ {
+ semester: "Semester-2",
+ name: "Digital Electronics & Logic Circuits",
+ href: "/sem2/delc/ch0",
+ },
+ {
+ semester: "Semester-2",
+ name: "OOPs with Java",
+ href: "/sem2/oops/ch0",
+ },
+ {
+ semester: "Semester-2",
+ name: "Engineering Mathematics-2",
+ href: "/sem2/em2/ch0",
+ },
+ {
+ semester: "Semester-2",
+ name: "Data Structures using C",
+ href: "/sem2/dsc/ch0",
+ },
+ {
+ semester: "Semester-2",
+ name: "Modern Biology",
+ href: "/sem2/mb/ch0",
+ },
+ {
+ semester: "Semester-2",
+ name: "Environmental Studies",
+ href: "/sem2/es/ch0",
+ },
+
+ // Semester 3
+ {
+ semester: "Semester-3",
+ name: "Problem Solving using Python",
+ href: "/sem3/py/ch0",
+ },
+ {
+ semester: "Semester-3",
+ name: "Data Science using Python Libraries",
+ href: "/sem3/dsp/ch0",
+ },
+ {
+ semester: "Semester-3",
+ name: "Computer Organization & Architecture",
+ href: "/sem3/coa/ch0",
+ },
+ {
+ semester: "Semester-3",
+ name: "Probability & Statistics",
+ href: "/sem3/ps/ch0",
+ },
+ {
+ semester: "Semester-3",
+ name: "Theory of Computation",
+ href: "/sem3/toc/ch0",
+ },
+ {
+ semester: "Semester-3",
+ name: "Information Technology",
+ href: "/sem3/it/ch0",
+ },
+ {
+ semester: "Semester-3",
+ name: "Technical Writing",
+ href: "/sem3/tw/ch0",
+ },
+
+ // Semester 4
+ {
+ semester: "Semester-4",
+ name: "Discrete Mathematics",
+ href: "/sem4/dm/ch0",
+ },
+ {
+ semester: "Semester-4",
+ name: "Computer Networks",
+ href: "/sem4/cn/ch0",
+ },
+ {
+ semester: "Semester-4",
+ name: "Database Management Systems",
+ href: "/sem4/dbms/ch0",
+ },
+ {
+ semester: "Semester-4",
+ name: "Operating Systems",
+ href: "/sem4/os/ch0",
+ },
+ {
+ semester: "Semester-4",
+ name: "Web Technologies",
+ href: "/sem4/wt/ch0",
+ },
+ {
+ semester: "Semester-4",
+ name: "DevOps & Linux Administration",
+ href: "/sem4/dops/ch0",
+ },
+ {
+ semester: "Semester-4",
+ name: "Organizational Behavior",
+ href: "/sem4/ob/ch0",
+ },
+
+ // Semester 5
+ {
+ semester: "Semester-5",
+ name: "Artificial Intelligence",
+ href: "/sem5/ai/ch0",
+ },
+ {
+ semester: "Semester-5",
+ name: "Algorithm Design and Analysis",
+ href: "/sem5/ada/ch0",
+ },
+ {
+ semester: "Semester-5",
+ name: "Cloud Computing",
+ href: "/sem5/cc/ch0",
+ },
+ {
+ semester: "Semester-5",
+ name: "Economics for Engineers",
+ href: "/sem5/ee/ch0",
+ },
+ {
+ semester: "Semester-5",
+ name: "IoT (Internet of Things)",
+ href: "/sem5/iot/ch0",
+ },
+ {
+ semester: "Semester-5",
+ name: "Compiler Design",
+ href: "/sem5/cd/ch0",
+ },
+ {
+ semester: "Semester-5",
+ name: "Cyber Laws and Ethics",
+ href: "/sem5/cle/ch0",
+ },
+ {
+ semester: "Semester-5",
+ name: "Cryptography & Network Security",
+ href: "/sem5/cns/ch0",
+ },
+
+ // Semester 6
+ {
+ semester: "Semester-6",
+ name: "Machine Learning",
+ href: "/sem6/ml/ch0",
+ },
+ {
+ semester: "Semester-6",
+ name: "Natural Language Processing",
+ href: "/sem6/nlp/ch0",
+ },
+ {
+ semester: "Semester-6",
+ name: "Deep Learning",
+ href: "/sem6/dl/ch0",
+ },
+ {
+ semester: "Semester-6",
+ name: "Computer Vision and Image Processing",
+ href: "/sem6/cvip/ch0",
+ },
+ {
+ semester: "Semester-6",
+ name: "Blockchain Technology",
+ href: "/sem6/bt/ch0",
+ },
+ {
+ semester: "Semester-6",
+ name: "Information Retrieval",
+ href: "/sem6/ir/ch0",
+ },
+ {
+ semester: "Semester-6",
+ name: "Management Information Systems",
+ href: "/sem6/mis/ch0",
+ },
+
+ // Semester 7
+ {
+ semester: "Semester-7",
+ name: "VLSI and Embedded Systems",
+ href: "/sem7/vlsi/ch0",
+ },
+ {
+ semester: "Semester-7",
+ name: "Entrepreneurship & Startup",
+ href: "/sem7/es/ch0",
+ },
+ {
+ semester: "Semester-7",
+ name: "Financial Management",
+ href: "/sem7/fm/ch0",
+ },
+ {
+ semester: "Semester-7",
+ name: "Robotic Access Automation",
+ href: "/sem7/raa/ch0",
+ },
+ {
+ semester: "Semester-7",
+ name: "Marketing Management",
+ href: "/sem7/mm/ch0",
+ },
+ {
+ semester: "Semester-7",
+ name: "Big-data Analytics",
+ href: "/sem7/bda/ch0",
+ },
+ {
+ semester: "Semester-7",
+ name: "Decision Sciences",
+ href: "/sem7/des/ch0",
+ },
+
+ // Semester 8
+ {
+ semester: "Semester-8",
+ name: "Software Engineering",
+ href: "/sem8/se/ch0",
+ },
+];
+
+export default function SearchBar() {
+ const [query, setQuery] = useState("");
+
+ const results = useMemo(() => {
+ const search = query.trim().toLowerCase();
+
+ if (!search) return [];
+
+ return subjects
+ .filter(
+ (subject) =>
+ subject.name.toLowerCase().includes(search) ||
+ subject.semester.toLowerCase().includes(search)
+ )
+ .slice(0, 10);
+}, [query]);
+
+ return (
+
+
setQuery(e.target.value)}
+ className="w-full border rounded-lg p-3 text-black bg-white shadow"
+ />
+
+ {query && (
+
+ {results.length ? (
+ results.map((item) => (
+
setQuery("")}
+ className="block p-3 hover:bg-gray-100 border-b"
+ >
+
+ {item.name}
+
+
+
+ {item.semester}
+
+
+ ))
+ ) : (
+
+ No matching subject or semester was found.
+
+ )}
+
+ )}
+
+ );
+}
\ No newline at end of file
diff --git a/app/components/subjects.tsx b/app/components/subjects.tsx
index 588c63a..2d4f8d4 100644
--- a/app/components/subjects.tsx
+++ b/app/components/subjects.tsx
@@ -1,4 +1,6 @@
"use client";
+
+import SearchBar from "./SearchBar";
import Link from "next/link";
const subjects = {
@@ -146,6 +148,7 @@ export default function SubjectsSection() {
>
Explore Subjects divided Semester-wise for your convenience.
+