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>
|