feat: redesign filter dropdown with custom label and hidden native select for improved UI consistency

This commit is contained in:
2026-05-04 09:28:16 +01:00
parent 946ab7ec49
commit 1dc64579bb

View File

@@ -88,8 +88,15 @@ export default function Explore() {
<div className="h-10 w-px bg-slate-200 hidden md:block" />
<div className="px-2 sm:px-4 py-2 w-full md:w-auto flex-shrink-0">
<div className="relative group w-full md:w-auto">
<ListFilter size={18} className="absolute left-3 sm:left-4 top-1/2 -translate-y-1/2 text-slate-400 group-hover:text-indigo-500 transition-colors pointer-events-none" />
<div className="relative group flex items-center h-10 sm:h-12 w-full md:w-auto rounded-xl sm:rounded-2xl bg-slate-100 hover:bg-slate-200/80 px-3 sm:px-4 transition-all focus-within:ring-2 focus-within:ring-indigo-500/30 shadow-sm cursor-pointer">
<ListFilter size={18} className="text-slate-400 group-hover:text-indigo-500 transition-colors pointer-events-none shrink-0" />
<span className="flex-1 text-center px-2 text-xs sm:text-sm font-bold text-slate-700 pointer-events-none whitespace-nowrap">
{filter === 'top' ? 'Top Avaliadas' : sortBy === 'servicos' ? 'Mais Serviços' : 'Todas (Melhor avaliação)'}
</span>
<ChevronDown size={16} className="text-slate-400 group-hover:text-indigo-500 transition-colors pointer-events-none shrink-0" />
<select
value={`${filter}-${sortBy}`}
onChange={(e) => {
@@ -97,14 +104,12 @@ export default function Explore() {
setFilter(newFilter as 'todas' | 'top');
setSortBy(newSort as 'avaliacao' | 'servicos');
}}
style={{ WebkitAppearance: 'none', MozAppearance: 'none', backgroundImage: 'none' }}
className="block h-10 sm:h-12 w-full md:w-auto appearance-none rounded-xl sm:rounded-2xl bg-slate-100 hover:bg-slate-200/80 border-none pl-10 sm:pl-11 pr-10 sm:pr-11 text-xs sm:text-sm font-bold text-slate-700 transition-all focus:ring-2 focus:ring-indigo-500/30 shadow-sm cursor-pointer m-0"
className="absolute inset-0 w-full h-full opacity-0 cursor-pointer"
>
<option value="todas-avaliacao">Todas (Melhor avaliação)</option>
<option value="top-avaliacao">Top Avaliadas</option>
<option value="todas-servicos">Mais Serviços</option>
</select>
<ChevronDown size={16} className="absolute right-3 sm:right-4 top-1/2 -translate-y-1/2 text-slate-400 group-hover:text-indigo-500 transition-colors pointer-events-none" />
</div>
</div>
</div>