Skip to content

Commit e148c4e

Browse files
committed
chore(search): standardize search input layout across components and improve spacing
1 parent 709acb7 commit e148c4e

File tree

7 files changed

+29
-25
lines changed

7 files changed

+29
-25
lines changed

dashboard/src/components/groups/groups-list.tsx

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,16 +89,18 @@ export default function GroupsList({ isDialogOpen, onOpenChange }: GroupsListPro
8989
}, [groupsData?.groups, searchQuery])
9090

9191
return (
92-
<div className="w-full flex-1 space-y-4 pt-4">
92+
<div className="w-full flex-1 space-y-4">
9393
{/* Search Input */}
94-
<div className="relative w-full md:w-[calc(100%/3-10px)]" dir={dir}>
95-
<Search className={cn('absolute', dir === 'rtl' ? 'right-2' : 'left-2', 'top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground')} />
96-
<Input placeholder={t('search')} value={searchQuery} onChange={e => setSearchQuery(e.target.value)} className={cn('pl-8 pr-10', dir === 'rtl' && 'pl-10 pr-8')} />
97-
{searchQuery && (
98-
<button onClick={() => setSearchQuery('')} className={cn('absolute', dir === 'rtl' ? 'left-2' : 'right-2', 'top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground')}>
99-
<X className="h-4 w-4" />
100-
</button>
101-
)}
94+
<div dir={dir} className="flex items-center gap-2 md:gap-4">
95+
<div className="relative min-w-0 flex-1 md:w-[calc(100%/3-10px)] md:flex-none">
96+
<Search className={cn('absolute', dir === 'rtl' ? 'right-2' : 'left-2', 'top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground')} />
97+
<Input placeholder={t('search')} value={searchQuery} onChange={e => setSearchQuery(e.target.value)} className={cn('pl-8 pr-10', dir === 'rtl' && 'pl-10 pr-8')} />
98+
{searchQuery && (
99+
<button onClick={() => setSearchQuery('')} className={cn('absolute', dir === 'rtl' ? 'left-2' : 'right-2', 'top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground')}>
100+
<X className="h-4 w-4" />
101+
</button>
102+
)}
103+
</div>
102104
</div>
103105
<ScrollArea className="h-[calc(100vh-8rem)]">
104106
<div dir={dir} className="grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3">

dashboard/src/components/nodes/node-filters.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ export const NodeFilters = ({ filters, onFilterChange, refetch, isFetching, adva
8181
}
8282

8383
return (
84-
<div dir={dir} className="flex items-center gap-2 py-4 md:gap-4">
84+
<div dir={dir} className="flex items-center gap-2 md:gap-4">
8585
{/* Search Input */}
8686
<div className="relative min-w-0 flex-1 md:w-[calc(100%/3-10px)] md:flex-none">
8787
<SearchIcon className={cn('absolute', dir === 'rtl' ? 'right-2' : 'left-2', 'top-1/2 h-4 w-4 -translate-y-1/2 text-gray-400 text-input-placeholder')} />

dashboard/src/components/settings/cores.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,8 @@ export default function Cores({ isDialogOpen, onOpenChange, cores, onEditCore, o
118118
}, [coresList, searchQuery])
119119

120120
return (
121-
<div className={cn('flex w-full flex-col gap-4 py-4', dir === 'rtl' && 'rtl')}>
122-
<div className="mt-2">
121+
<div className={cn('flex w-full flex-col gap-4 pt-4', dir === 'rtl' && 'rtl')}>
122+
<div>
123123
{/* Search Input */}
124124
<div className="relative w-full md:w-[calc(100%/3-10px)]" dir={dir}>
125125
<Search className={cn('absolute', dir === 'rtl' ? 'right-2' : 'left-2', 'top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground')} />

dashboard/src/pages/_dashboard.groups.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export default function GroupsPage() {
1414
<Separator />
1515
</div>
1616

17-
<div className="w-full px-4 pt-2">
17+
<div className="w-full p-4">
1818
<div className="transform-gpu animate-slide-up" style={{ animationDuration: '500ms', animationDelay: '100ms', animationFillMode: 'both' }}>
1919
<Groups isDialogOpen={isDialogOpen} onOpenChange={setIsDialogOpen} />
2020
</div>

dashboard/src/pages/_dashboard.hosts.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ export default function HostsPage() {
219219
<Separator />
220220
</div>
221221

222-
<div className="w-full px-4 pt-6">
222+
<div className="w-full p-4">
223223
{isLoading ? (
224224
<div className="grid w-full grid-cols-1 gap-4 py-6 md:grid-cols-2 lg:grid-cols-3">
225225
{Array.from({ length: 6 }).map((_, index) => (

dashboard/src/pages/_dashboard.statistics.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ const Statistics = () => {
4141
</div>
4242

4343
{/* Node Selector at the top */}
44-
<div className="w-full px-3 pt-3 sm:px-4 sm:pt-4">
44+
<div className="w-full px-4 pt-2 sm:px-4 sm:pt-4">
4545
<div className="transform-gpu animate-slide-up" style={{ animationDuration: '500ms', animationDelay: '50ms', animationFillMode: 'both' }}>
4646
<Card>
4747
<CardContent className="p-4 sm:p-6">

dashboard/src/pages/_dashboard.templates.tsx

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -128,16 +128,18 @@ export default function UserTemplates() {
128128
<Separator />
129129
</div>
130130

131-
<div className="w-full flex-1 space-y-4 px-4 py-4">
131+
<div className="w-full flex-1 space-y-4 px-4">
132132
{/* Search Input */}
133-
<div className="relative w-full md:w-[calc(100%/3-10px)]" dir={dir}>
134-
<Search className={cn('absolute', dir === 'rtl' ? 'right-2' : 'left-2', 'top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground')} />
135-
<Input placeholder={t('search')} value={searchQuery} onChange={e => setSearchQuery(e.target.value)} className={cn('pl-8 pr-10', dir === 'rtl' && 'pl-10 pr-8')} />
136-
{searchQuery && (
137-
<button onClick={() => setSearchQuery('')} className={cn('absolute', dir === 'rtl' ? 'left-2' : 'right-2', 'top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground')}>
138-
<X className="h-4 w-4" />
139-
</button>
140-
)}
133+
<div dir={dir} className="flex items-center gap-2 md:gap-4 pt-4">
134+
<div className="relative min-w-0 flex-1 md:w-[calc(100%/3-10px)] md:flex-none">
135+
<Search className={cn('absolute', dir === 'rtl' ? 'right-2' : 'left-2', 'top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground')} />
136+
<Input placeholder={t('search')} value={searchQuery} onChange={e => setSearchQuery(e.target.value)} className={cn('pl-8 pr-10', dir === 'rtl' && 'pl-10 pr-8')} />
137+
{searchQuery && (
138+
<button onClick={() => setSearchQuery('')} className={cn('absolute', dir === 'rtl' ? 'left-2' : 'right-2', 'top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground')}>
139+
<X className="h-4 w-4" />
140+
</button>
141+
)}
142+
</div>
141143
</div>
142144

143145
<div
@@ -153,7 +155,7 @@ export default function UserTemplates() {
153155
<Skeleton className="h-2 w-2 shrink-0 rounded-full" />
154156
<Skeleton className="h-5 w-24 sm:w-32" />
155157
</div>
156-
<div className="mt-2 space-y-2">
158+
<div className="space-y-2">
157159
<Skeleton className="h-4 w-32 sm:w-40 md:w-48" />
158160
<Skeleton className="h-4 w-28 sm:w-36 md:w-40" />
159161
</div>

0 commit comments

Comments
 (0)