Skip to content

Commit 0bb7ef2

Browse files
khushthecoderYashsingh045fahimahammed
authored
Feat/animated search 23 (#167)
* fix: Add Dropdown / Select Component #11 (#33) * chore(main): release devui 1.1.0 (#166) * feat(header): add animated live search bar * Merge branch 'feat/theme-switcher-17' and resolve conflict --------- Co-authored-by: Yashveer Singh <astomar6396@gmail.com> Co-authored-by: Fahim Ahammed Firoz <68865444+fahimahammed@users.noreply.github.com>
1 parent 324c9b2 commit 0bb7ef2

6 files changed

Lines changed: 114 additions & 85 deletions

File tree

CHANGELOG.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,34 @@
11
# Changelog
22

3+
## [1.1.0](https://github.com/fahimahammed/DevUI/compare/devui-v1.0.0...devui-v1.1.0) (2025-10-03)
4+
5+
6+
### Features
7+
8+
* Add About Us page, dark theme, and main page navigation ([#14](https://github.com/fahimahammed/DevUI/issues/14)) ([#31](https://github.com/fahimahammed/DevUI/issues/31)) ([f90fdb2](https://github.com/fahimahammed/DevUI/commit/f90fdb2724cfcab723ad6ef7db99682a68dc3a2b))
9+
* add cursor pointer to clickable elements ([#34](https://github.com/fahimahammed/DevUI/issues/34)) ([c1c39c9](https://github.com/fahimahammed/DevUI/commit/c1c39c9612d534cab51f4d2061d72642f2d9e78e))
10+
* add skeleton loading support to ComponentCard ([#134](https://github.com/fahimahammed/DevUI/issues/134)) ([d9a0a54](https://github.com/fahimahammed/DevUI/commit/d9a0a54ac78cf1481e0b24f79657dc9a7994a3e7))
11+
* add templates feature request, but report, documentation update and pull request template ([#127](https://github.com/fahimahammed/DevUI/issues/127)) ([1a1fa84](https://github.com/fahimahammed/DevUI/commit/1a1fa84def19f5028a4cace4242a2c2f84c9edf3))
12+
* Add Versatile File Upload Component with Drag-and-Drop & Progress ([#147](https://github.com/fahimahammed/DevUI/issues/147)) ([eec173d](https://github.com/fahimahammed/DevUI/commit/eec173d7acbaf1644e01e221b7c0498b8a373e96))
13+
* **chat:** add ChatBox component and update components.tsx ([#78](https://github.com/fahimahammed/DevUI/issues/78)) ([5232da5](https://github.com/fahimahammed/DevUI/commit/5232da5761bc17df2efeb1d58c3b7d1b8d609ba6))
14+
* Feature/tooltip and fab components ([#144](https://github.com/fahimahammed/DevUI/issues/144)) ([08ab221](https://github.com/fahimahammed/DevUI/commit/08ab221118b8c6bcaa736f0eb5073758a047c28d))
15+
* integrate ThemeColorPicker across app with enhanced UI animations ([#66](https://github.com/fahimahammed/DevUI/issues/66)) ([19008f5](https://github.com/fahimahammed/DevUI/commit/19008f5a96bdc8c57c4c0b305b80e90b13efe483))
16+
* NEW COMPONENT ([#143](https://github.com/fahimahammed/DevUI/issues/143)) ([42ee402](https://github.com/fahimahammed/DevUI/commit/42ee4026e1cd9a54188e975674bf8b1d5b75f7eb))
17+
* **search:** debounced search, title highlight, dynamic category counts; remove native clear icon ([#126](https://github.com/fahimahammed/DevUI/issues/126)) ([fa50ed5](https://github.com/fahimahammed/DevUI/commit/fa50ed556099cd9b10932a9fa728e491312661d8))
18+
* **toast:** add Toast component with demo and integrate Toaster in the UI ([#82](https://github.com/fahimahammed/DevUI/issues/82)) ([c1025ad](https://github.com/fahimahammed/DevUI/commit/c1025ad274aeb05118dbbd9bab3c77002b0cb222))
19+
* **ui:** add Button loading state, enhance Card hover, and add glow utility ([#65](https://github.com/fahimahammed/DevUI/issues/65)) ([b46a6ff](https://github.com/fahimahammed/DevUI/commit/b46a6ff2717400fc86c92ba06ad85f0ab7f7d053))
20+
21+
22+
### Bug Fixes
23+
24+
* Add Syntax Highlighting for Code Blocks [#6](https://github.com/fahimahammed/DevUI/issues/6) ([#61](https://github.com/fahimahammed/DevUI/issues/61)) ([16deed3](https://github.com/fahimahammed/DevUI/commit/16deed3a357765ea0a2d5a5bdbf154614070eb58))
25+
* conflict issue ([67e6913](https://github.com/fahimahammed/DevUI/commit/67e6913db58b5ea2c51e72ba218e15afbc667762))
26+
* fix merge conflict issue ([cfea695](https://github.com/fahimahammed/DevUI/commit/cfea6956d0209c217d4349048d4393f746f6ecea))
27+
* **home:** resolve slider visibility issue on home page ([#56](https://github.com/fahimahammed/DevUI/issues/56)) ([#86](https://github.com/fahimahammed/DevUI/issues/86)) ([6d0aa07](https://github.com/fahimahammed/DevUI/commit/6d0aa07bb0503d2916215d415a2ccf2ce727061b))
28+
* merge conflict ([4990ee9](https://github.com/fahimahammed/DevUI/commit/4990ee91c9a86ab5a153e5c17c283093bef921c6))
29+
* merge conflict fix ([a7cccc3](https://github.com/fahimahammed/DevUI/commit/a7cccc3a31bcd9589bd315abf84223ff6af85cc0))
30+
* sync code with prod ([#142](https://github.com/fahimahammed/DevUI/issues/142)) ([9aa0849](https://github.com/fahimahammed/DevUI/commit/9aa0849e463740a458080dbc96c220568335c6ec))
31+
332
## 1.0.0 (2025-10-03)
433

534

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "devui",
3-
"version": "1.0.0",
3+
"version": "1.1.0",
44
"private": true,
55
"scripts": {
66
"dev": "next dev --turbopack",

src/app/page.tsx

Lines changed: 18 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import { useState, useMemo, useEffect } from "react";
33
import { ComponentCard } from "@/components/ComponentCard";
44
import { componentsData } from "@/data/components";
5-
import { Input } from "@/components/ui/input";
5+
// ❌ We are removing the Input component from here as it's moving to the Header
66
import { Badge } from "@/components/ui/badge";
77
import {
88
Github,
@@ -18,6 +18,7 @@ import Link from "next/link";
1818
import Header from "@/components/Header";
1919

2020
const Index = () => {
21+
// ✅ This logic STAYS here. This page will control the search.
2122
const [searchQuery, setSearchQuery] = useState("");
2223
const [debouncedQuery, setDebouncedQuery] = useState("");
2324

@@ -27,7 +28,7 @@ const Index = () => {
2728
}, [searchQuery]);
2829
const [selectedCategory, setSelectedCategory] = useState<string | null>(null);
2930

30-
// First apply search-only filtering (case-insensitive)
31+
// This logic is all correct and stays here
3132
const searchFilteredComponents = useMemo(() => {
3233
const searchLower = debouncedQuery.toLowerCase().trim();
3334
if (!searchLower) return componentsData;
@@ -41,7 +42,6 @@ const Index = () => {
4142
});
4243
}, [debouncedQuery]);
4344

44-
// Get categories with counts based on current search results
4545
const categories = useMemo(() => {
4646
const categoryMap = new Map<string, number>();
4747
searchFilteredComponents.forEach((component) => {
@@ -58,7 +58,6 @@ const Index = () => {
5858
}));
5959
}, [searchFilteredComponents]);
6060

61-
// Enhanced filtering with better search
6261
const filteredComponents = useMemo(() => {
6362
return searchFilteredComponents.filter((component) => {
6463
const matchesCategory =
@@ -67,7 +66,6 @@ const Index = () => {
6766
});
6867
}, [searchFilteredComponents, selectedCategory]);
6968

70-
// Clear all filters
7169
const clearFilters = () => {
7270
setSearchQuery("");
7371
setSelectedCategory(null);
@@ -77,15 +75,17 @@ const Index = () => {
7775

7876
return (
7977
<div className="min-h-screen bg-background">
78+
{/* ✅ We will now pass the search state and function to the Header */}
79+
<Header searchQuery={searchQuery} setSearchQuery={setSearchQuery} />
8080

81-
<Header />
82-
{/* Hero Section - Modern & Clean */}
81+
{/* Hero Section */}
8382
<section
8483
id="main-content"
8584
className="relative overflow-hidden border-b border-border/50"
8685
>
87-
{/* Animated Background */}
88-
<div className="absolute inset-0 bg-grid-pattern opacity-[0.02] dark:opacity-[0.05]" />
86+
{/* ... (Hero section content remains exactly the same) ... */}
87+
{/* Animated Background */}
88+
<div className="absolute inset-0 bg-grid-pattern opacity-[0.02] dark:opacity-[0.05]" />
8989
<div className="absolute inset-0">
9090
<div className="absolute top-20 left-20 w-72 h-72 bg-primary/10 dark:bg-primary/5 rounded-full blur-[100px] animate-glow float-animation" />
9191
<div
@@ -206,49 +206,15 @@ const Index = () => {
206206
<div className="absolute bottom-0 left-0 right-0 h-px bg-gradient-to-r from-transparent via-border to-transparent" />
207207
</section>
208208

209-
{/* Search & Filters - Engaging Animated Search */}
209+
{/* Filters Section */}
210210
<section className="container mx-auto px-4 sm:px-6 lg:px-8 py-14 sm:py-16">
211211
<div className="max-w-5xl mx-auto space-y-6">
212-
{/* Search Bar */}
213-
<div className="relative group">
214-
{/* Animated Glow Background */}
215-
<div className="absolute inset-0 bg-gradient-to-r from-primary/30 to-accent/30 rounded-xl blur-2xl opacity-0 group-focus-within:opacity-100 transition-opacity duration-500 animate-fade-in" />
212+
213+
{/* ❌ THE SEARCH BAR UI HAS BEEN REMOVED FROM HERE */}
216214

217-
<div className="relative">
218-
{/* Search Icon */}
219-
<Search className="absolute left-4 top-1/2 -translate-y-1/2 h-6 w-6 text-primary pointer-events-none" />
220-
221-
{/* Input Field */}
222-
<div className="relative">
223-
224-
<Input
225-
type="text"
226-
placeholder="Search components by name, category, or description..."
227-
value={searchQuery}
228-
onChange={(e) => setSearchQuery(e.target.value)}
229-
className="pl-14 lg:text-lg font-normal pr-12 h-16 bg-card/60 dark:bg-card/30 backdrop-blur-md border transition-all duration-300 rounded-xl hover:shadow-lg focus:shadow-lg focus:shadow-primary/20 focus-ring animate-fade-in"
230-
>
231-
232-
233-
</Input>
234-
<Search className="top-1/3 left-5 absolute text-zinc-500"/>
235-
</div>
236-
237-
{/* Clear Button */}
238-
{searchQuery && (
239-
<button
240-
onClick={() => setSearchQuery("")}
241-
className="absolute right-4 top-1/2 -translate-y-1/2 hover:text-foreground transition-all duration-200 p-1 hover:bg-muted/50 rounded-md focus-ring animate-fade-in"
242-
aria-label="Clear search"
243-
>
244-
<X className="h-4 w-4" />
245-
</button>
246-
)}
247-
</div>
248-
</div>
249-
250-
{/* Filter Header */}
215+
{/* Filter Header and Category Badges stay here */}
251216
<div className="flex items-center justify-between flex-wrap gap-4">
217+
{/* ... (Filter header content remains exactly the same) ... */}
252218
<div className="flex items-center gap-3">
253219
<Filter className="h-5 w-5 text-primary animate-fade-in" />
254220
<span className="text-base font-semibold text-foreground animate-fade-in">
@@ -274,8 +240,8 @@ const Index = () => {
274240
)}
275241
</div>
276242

277-
{/* Category Badges */}
278243
<div className="flex flex-wrap gap-3" id="component-categories">
244+
{/* ... (Category badges remain exactly the same) ... */}
279245
<Badge
280246
variant={selectedCategory === null ? "default" : "outline"}
281247
className="cursor-pointer transition-transform duration-200 hover:scale-105 text-sm sm:text-base px-4 py-2 rounded-full animate-fade-in"
@@ -297,8 +263,9 @@ const Index = () => {
297263
</div>
298264
</section>
299265

300-
{/* Components Grid - Masonry Layout */}
266+
{/* Components Grid Section */}
301267
<section className="container mx-auto px-4 sm:px-6 lg:px-8 pb-20 sm:pb-24 lg:pb-32">
268+
{/* ... (The entire component grid display logic remains exactly the same) ... */}
302269
<div className="max-w-6xl mx-auto">
303270
{filteredComponents.length > 0 ? (
304271
<div className="grid gap-6 sm:gap-8 grid-cols-1 lg:grid-cols-2">
@@ -362,6 +329,7 @@ const Index = () => {
362329
</div>
363330
</section>
364331

332+
{/* ... (Rest of the page and footer remain the same) ... */}
365333
<section className="flex justify-evenly items-center">
366334

367335
<h1 className="text-5xl sm:text-6xl md:text-5xl lg:text-7xl min-h-[30vh] font-bold tracking-tight animate-fade-up px-4 mb-10 w-1/2">

0 commit comments

Comments
 (0)