@elogroup-sereduc/ser-hero-icons-resolver
v1.0.0
Published
Resolve Heroicons 24px outline React components by stable app icon name
Readme
ser-hero-icons-resolver
Biblioteca que expõe um conjunto fixo de ícones Heroicons (variante outline, tamanho 24px) identificados por nomes estáveis em kebab-case ('bell', 'document-text', etc.). Útil quando o nome do ícone vem de configuração, API ou CMS e você precisa renderizar o componente React correspondente.
Instalação
O pacote depende de @heroicons/react e exige React 18+ como peer dependency.
npm install @elogroup-sereduc/ser-hero-icons-resolver @heroicons/react
# ou
yarn add @elogroup-sereduc/ser-hero-icons-resolver @heroicons/reactUso básico
Resolver pelo nome
getAppOutlineIcon devolve sempre um componente. Se o nome não existir no conjunto, usa o ícone de fallback (home).
import { getAppOutlineIcon } from '@elogroup-sereduc/ser-hero-icons-resolver';
function MenuItem({ iconName }: { iconName: string }) {
const Icon = getAppOutlineIcon(iconName);
return (
<span className="flex items-center gap-2">
<Icon className="h-5 w-5" aria-hidden />
{/* … */}
</span>
);
}Verificar se o nome é válido
Para tratar nomes inválidos na UI (mensagem de erro, log, etc.) em vez de mostrar o fallback:
import {
getAppOutlineIcon,
isAppOutlineIconName,
} from '@elogroup-sereduc/ser-hero-icons-resolver';
if (!isAppOutlineIconName(config.icon)) {
console.warn('Ícone desconhecido:', config.icon);
}
const Icon = getAppOutlineIcon(config.icon);Lista e mapa
APP_OUTLINE_ICONS— array de{ name, Icon }para montar seletores, documentação interna ou menus.APP_OUTLINE_ICON_BY_NAME— registronome → componentepara acesso direto tipado quando o nome é conhecido em compile time.
import {
APP_OUTLINE_ICONS,
APP_OUTLINE_ICON_BY_NAME,
type AppOutlineIconName,
} from '@elogroup-sereduc/ser-hero-icons-resolver';
const Icon = APP_OUTLINE_ICON_BY_NAME.calendar;
APP_OUTLINE_ICONS.map(({ name, Icon }) => (
<option key={name} value={name}>
{name}
</option>
));Fallback
APP_OUTLINE_FALLBACK_NAME— nome usado quandogetAppOutlineIconnão encontra correspondência (atualmente'home').APP_OUTLINE_FALLBACK_ICON— o mesmo componente do fallback, para uso explícito.
Tipos exportados
| Tipo | Descrição |
|------|-----------|
| AppOutlineIconName | Union dos nomes válidos (string literals). |
| AppOutlineIcon | Tipo do componente de ícone. |
| AppOutlineIconEntry | Elemento de APP_OUTLINE_ICONS ({ name, Icon }). |
Build local
yarn install
yarn buildOs artefatos saem em dist/. O script prepublishOnly roda o build antes de publicar.
Licença
MIT
