/** * Un'icona del catalogo, dalla chiave salvata nel database al glifo disegnato. * * Nel database sta `Categoria.icona`, cioè la CHIAVE del catalogo, che è nostra * e non cambia mai. La traduzione verso il nome del glifo è tutta in * `nomeIcona()`, che ripiega sulla predefinita quando la chiave non sta più nel * catalogo — succede importando un archivio scritto da una versione diversa. */ import type { ComponentProps } from 'react'; import MaterialCommunityIcons from '@expo/vector-icons/MaterialCommunityIcons'; import type { ChiaveIcona } from '../../domain/icone.ts'; import { nomeIcona } from '../../domain/icone.ts'; /** Il tipo del prop `name`: l'unione di tutti i glifi del font. */ type NomeGlifo = ComponentProps['name']; export interface PropsIcona { chiave: ChiaveIcona; dimensione: number; colore: string; } export default function Icona({ chiave, dimensione, colore }: PropsIcona) { // Il cast è legittimo: il Task 5 lascia un test che verifica che ogni `nome` // del catalogo esista davvero nel glyphmap di MaterialCommunityIcons. Senza // quel test un nome inventato non darebbe errore di compilazione, darebbe un // quadratino vuoto a schermo. return ( ); }