97a3c84625
Reescribe todos los componentes UI para usar Mantine v9 en lugar de shadcn/Tailwind. Elimina cn(), CVA, components.json, theme_provider custom y globals.css con Tailwind. Añade 25+ componentes nuevos (AppShell, AuthForm, DatePickerInput, Dropzone, etc.) y MantineProvider como wrapper estándar del sistema de temas. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
3.8 KiB
3.8 KiB
name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, output, props, emits, has_state, framework, tested, tests, test_file_path, file_path
| name | kind | lang | domain | version | purity | signature | description | tags | uses_functions | uses_types | returns | returns_optional | error_type | imports | output | props | emits | has_state | framework | tested | tests | test_file_path | file_path | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| autocomplete | component | ts | ui | 1.0.0 | impure | Autocomplete(props: AutocompleteProps): JSX.Element | Input con sugerencias de autocompletado. Permite valores libres a diferencia de Select. Wrapper sobre Mantine Autocomplete. |
|
false | error_go_core |
|
Componente Autocomplete que renderiza input con dropdown de sugerencias filtradas |
|
|
true | react | false | frontend/functions/ui/autocomplete.tsx |
Ejemplo
import { Autocomplete } from '@fn_library/autocomplete'
// Básico — lista de strings
function BasicAutocomplete() {
return (
<Autocomplete
label="País"
placeholder="Escribe para buscar..."
data={['Argentina', 'Brasil', 'Chile', 'Colombia', 'Uruguay']}
/>
)
}
// Con grupos
function GroupedAutocomplete() {
return (
<Autocomplete
label="Ciudad"
placeholder="Selecciona una ciudad"
data={[
{ value: 'Buenos Aires', group: 'Argentina' },
{ value: 'Rosario', group: 'Argentina' },
{ value: 'São Paulo', group: 'Brasil' },
{ value: 'Río de Janeiro', group: 'Brasil' },
]}
limit={5}
/>
)
}
// Con loading y clearable (búsqueda asíncrona)
function AsyncAutocomplete() {
const [value, setValue] = useState('')
const [data, setData] = useState<string[]>([])
const [loading, setLoading] = useState(false)
const handleChange = async (val: string) => {
setValue(val)
if (val.length < 2) return
setLoading(true)
const results = await fetchSuggestions(val)
setData(results)
setLoading(false)
}
return (
<Autocomplete
label="Búsqueda"
placeholder="Escribe al menos 2 caracteres..."
value={value}
onChange={handleChange}
data={data}
loading={loading}
clearable
/>
)
}
Notas
A diferencia de Select, Autocomplete permite que el usuario ingrese cualquier valor libre, no solo los de la lista. Ideal para búsquedas con sugerencias donde el valor final puede no estar en el dataset.
Cuando data contiene objetos con group, el dropdown agrupa visualmente las opciones bajo el encabezado del grupo.
El prop limit controla cuántas sugerencias se muestran simultáneamente (por defecto Mantine muestra todas). Útil para datasets grandes o búsquedas asíncronas donde se quiere limitar el ruido visual.