Icon
UIComponente para renderizar iconos Lucide con tamaños predefinidos, colores semánticos, animaciones y accesibilidad automática.
Uso básico
<x-kore::icon name="search" />
<x-kore::icon name="home" />
<x-kore::icon name="settings" /><x-kore::icon name="search" />
<x-kore::icon name="home" />
<x-kore::icon name="settings" />Tamaños
Seis tamaños: xs (12px), sm (14px), md (16px), lg (20px), xl (24px), 2xl (32px).
<x-kore::icon name="star" size="xs" />
<x-kore::icon name="star" size="sm" />
<x-kore::icon name="star" size="md" />
<x-kore::icon name="star" size="lg" />
<x-kore::icon name="star" size="xl" />
<x-kore::icon name="star" size="2xl" /><x-kore::icon name="star" size="xs" />
<x-kore::icon name="star" size="sm" />
<x-kore::icon name="star" size="md" />
<x-kore::icon name="star" size="lg" />
<x-kore::icon name="star" size="xl" />
<x-kore::icon name="star" size="2xl" />Colores
Colores semánticos. Sin color, hereda currentColor del padre.
<x-kore::icon name="check-circle" color="success" />
<x-kore::icon name="alert-triangle" color="warning" />
<x-kore::icon name="x-circle" color="destructive" />
<x-kore::icon name="info" color="info" />
<x-kore::icon name="circle" color="primary" />
<x-kore::icon name="minus-circle" color="muted" /><x-kore::icon name="check-circle" color="success" />
<x-kore::icon name="alert-triangle" color="warning" />
<x-kore::icon name="x-circle" color="destructive" />
<x-kore::icon name="info" color="info" />
<x-kore::icon name="circle" color="primary" />
<x-kore::icon name="minus-circle" color="muted" />Animaciones
Cuatro animaciones disponibles: spin, pulse, bounce, ping.
<x-kore::icon name="loader-2" animation="spin" />
<x-kore::icon name="bell" animation="pulse" />
<x-kore::icon name="arrow-down" animation="bounce" />
<x-kore::icon name="circle" animation="ping" /><x-kore::icon name="loader-2" animation="spin" />
<x-kore::icon name="bell" animation="pulse" />
<x-kore::icon name="arrow-down" animation="bounce" />
<x-kore::icon name="circle" animation="ping" />Con etiqueta
Envuelve el icono en un span con flexbox cuando se usa label.
<x-kore::icon name="save" label="Guardar" />
<x-kore::icon name="arrow-left" label="Regresar" labelPosition="left" /><x-kore::icon name="save" label="Guardar" />
<x-kore::icon name="arrow-left" label="Regresar" labelPosition="left" />Stroke width
Controla el grosor del trazo del icono.
<x-kore::icon name="heart" :strokeWidth="1" size="xl" />
<x-kore::icon name="heart" size="xl" />
<x-kore::icon name="heart" :strokeWidth="2.5" size="xl" /><x-kore::icon name="heart" :strokeWidth="1" size="xl" />
<x-kore::icon name="heart" size="xl" />
<x-kore::icon name="heart" :strokeWidth="2.5" size="xl" />Error
Atajo para color destructive, útil en formularios.
<x-kore::icon name="alert-circle" error /><x-kore::icon name="alert-circle" error />Proveedor raw
Usa raw para otros proveedores blade-icons sin prefijar con Lucide.
{{-- Lucide (default) --}}
<x-kore::icon name="search" />
{{-- Otro proveedor (raw = sin prefijar) --}}
<x-kore::icon name="heroicon-o-home" raw />{{-- Lucide (default) --}}
<x-kore::icon name="search" />
{{-- Otro proveedor (raw = sin prefijar) --}}
<x-kore::icon name="heroicon-o-home" raw />Props
| Prop | Tipo | Default | Descripción |
|---|---|---|---|
name
|
string | (requerido) | Nombre del icono Lucide |
size
|
string | md | Tamaño: xs, sm, md, lg, xl, 2xl |
color
|
string|null | null | Color: primary, secondary, success, warning, destructive, info, muted |
animation
|
string|null | null | Animación: spin, pulse, bounce, ping |
error
|
bool | false | Atajo para color=destructive |
label
|
string|null | null | Texto junto al icono |
labelPosition
|
string | right | Posición del label: left, right |
strokeWidth
|
float|null | null | Override del stroke-width SVG (Lucide default: 2) |
raw
|
bool | false | Usa name como componente completo sin prefijar |
Configuración
Puedes personalizar los defaults en config/kore-ui.php.
// config/kore-ui.php
'ui' => [
'icon' => [
'prefix' => 'lucide',
'size' => null, // null = usa ui.size (md)
],
],// config/kore-ui.php
'ui' => [
'icon' => [
'prefix' => 'lucide',
'size' => null, // null = usa ui.size (md)
],
],