Refactor sorting icons in ModelSelector to use SortIcon component for consistency
Browse files
src/components/ModelSelector.tsx
CHANGED
@@ -8,7 +8,7 @@ import {
|
|
8 |
} from '@headlessui/react'
|
9 |
import { useModel } from '../contexts/ModelContext'
|
10 |
import { getModelInfo } from '../lib/huggingface'
|
11 |
-
import { Heart, Download, ChevronDown, Check,
|
12 |
|
13 |
type SortOption = 'likes' | 'downloads' | 'createdAt' | 'name'
|
14 |
|
@@ -121,6 +121,14 @@ const ModelSelector: React.FC = () => {
|
|
121 |
const selectedModel =
|
122 |
models.find((model) => model.id === modelInfo?.id) || models[0]
|
123 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
124 |
return (
|
125 |
<div className="relative">
|
126 |
<Listbox
|
@@ -181,7 +189,7 @@ const ModelSelector: React.FC = () => {
|
|
181 |
}`}
|
182 |
>
|
183 |
<span>Name</span>
|
184 |
-
{sortBy === 'name' && <
|
185 |
</button>
|
186 |
<button
|
187 |
onClick={() => handleSortChange('likes')}
|
@@ -193,7 +201,7 @@ const ModelSelector: React.FC = () => {
|
|
193 |
>
|
194 |
<Heart className="w-3 h-3" />
|
195 |
<span>Likes</span>
|
196 |
-
{sortBy === 'likes' && <
|
197 |
</button>
|
198 |
<button
|
199 |
onClick={() => handleSortChange('downloads')}
|
@@ -206,7 +214,7 @@ const ModelSelector: React.FC = () => {
|
|
206 |
<Download className="w-3 h-3" />
|
207 |
<span>Downloads</span>
|
208 |
{sortBy === 'downloads' && (
|
209 |
-
<
|
210 |
)}
|
211 |
</button>
|
212 |
<button
|
@@ -219,7 +227,7 @@ const ModelSelector: React.FC = () => {
|
|
219 |
>
|
220 |
<span>Date</span>
|
221 |
{sortBy === 'createdAt' && (
|
222 |
-
<
|
223 |
)}
|
224 |
</button>
|
225 |
</div>
|
|
|
8 |
} from '@headlessui/react'
|
9 |
import { useModel } from '../contexts/ModelContext'
|
10 |
import { getModelInfo } from '../lib/huggingface'
|
11 |
+
import { Heart, Download, ChevronDown, Check, ArrowDown, ArrowUp } from 'lucide-react'
|
12 |
|
13 |
type SortOption = 'likes' | 'downloads' | 'createdAt' | 'name'
|
14 |
|
|
|
121 |
const selectedModel =
|
122 |
models.find((model) => model.id === modelInfo?.id) || models[0]
|
123 |
|
124 |
+
const SortIcon = ({ sortOrder }: { sortOrder: 'asc' | 'desc' }) => {
|
125 |
+
return sortOrder === 'asc' ? (
|
126 |
+
<ArrowUp className="w-3 h-3 ml-1" />
|
127 |
+
) : (
|
128 |
+
<ArrowDown className="w-3 h-3 ml-1" />
|
129 |
+
)
|
130 |
+
}
|
131 |
+
|
132 |
return (
|
133 |
<div className="relative">
|
134 |
<Listbox
|
|
|
189 |
}`}
|
190 |
>
|
191 |
<span>Name</span>
|
192 |
+
{sortBy === 'name' && <SortIcon sortOrder={sortOrder} />}
|
193 |
</button>
|
194 |
<button
|
195 |
onClick={() => handleSortChange('likes')}
|
|
|
201 |
>
|
202 |
<Heart className="w-3 h-3" />
|
203 |
<span>Likes</span>
|
204 |
+
{sortBy === 'likes' && <SortIcon sortOrder={sortOrder} />}
|
205 |
</button>
|
206 |
<button
|
207 |
onClick={() => handleSortChange('downloads')}
|
|
|
214 |
<Download className="w-3 h-3" />
|
215 |
<span>Downloads</span>
|
216 |
{sortBy === 'downloads' && (
|
217 |
+
<SortIcon sortOrder={sortOrder} />
|
218 |
)}
|
219 |
</button>
|
220 |
<button
|
|
|
227 |
>
|
228 |
<span>Date</span>
|
229 |
{sortBy === 'createdAt' && (
|
230 |
+
<SortIcon sortOrder={sortOrder} />
|
231 |
)}
|
232 |
</button>
|
233 |
</div>
|