PillButton
PillButton es un checkbox con forma de píldora para filtros independientes y selecciones múltiples.
Uso
<script>
import { PillButton } from 'fluentui-svelte';
let unread = $state(false);
</script>
<PillButton name="filter" value="unread" bind:checked={unread}>Unread</PillButton> Apariencia
Elige la apariencia filled, outline o brand. Cada apariencia admite estados seleccionados y sin seleccionar.
Tamaño
size cambia el alto y la tipografía a la vez: small usa 24px/12px, medium 32px/14px, large 40px/16px y extra-large 48px/18px. Cada par indica el alto del control y la fuente en píxeles.
Forma
Usa shape para elegir las esquinas circular, rounded o square. El valor predeterminado es circular.
Selección y enlace
Usa bind:checked para sincronizar la selección con tu estado. Un clic o la tecla Espacio alterna el checkbox nativo; los cambios de estado externos también lo actualizan.
Deshabilitado
Usa disabled en píldoras individuales o en un fieldset que las contenga. Las opciones deshabilitadas no pueden recibir foco, alternarse ni enviar valores, aunque estén seleccionadas.
Iconos
Usa icon para mostrar un icono Fluent antes del texto. Los iconos son decorativos; proporciona un nombre accesible mediante aria-label o aria-labelledby si no hay texto visible.
Avatar
Usa media para un Avatar decorativo. El snippet recibe el shape actual; pásalo al avatar para mantener sus formas sincronizadas. Un componente recibe shape como prop. El contenido escala con size, conserva un margen uniforme de 4px y tiene prioridad sobre icon.
Varios filtros
Usa fieldset y legend para etiquetar opciones independientes. Enlaza cada píldora mediante bind:checked. Reutiliza name para enviar varios valores en un campo del formulario.
Formularios
Configura name y value para enviar una píldora seleccionada. Admite los atributos nativos form, required, defaultChecked y disabled. Restablecer recupera defaultChecked y actualiza bind:checked. Un estado checked explícito tiene prioridad al inicio. required se aplica a cada píldora por separado.
Formulario externo
Usa form para asociar una píldora con el id de un formulario que no la contiene. El envío, la validación y el restablecimiento siguen usando el checkbox nativo.
Campo obligatorio y validación
required se aplica a este checkbox concreto. Acompaña aria-invalid con un mensaje enlazado mediante aria-describedby. El texto inválido, el borde y el mensaje de error usan --fs-system-critical.
Uso con Label
Coloca PillButton dentro de Label para dar nombre al checkbox nativo. Configura label y labelPosition en el contenedor. También da nombre a las píldoras que solo muestran un icono. Para píldoras independientes, usa texto visible, aria-label o aria-labelledby.
Props de PillButton
| Name | Type | Default | Description |
|---|---|---|---|
ref bindable | HTMLInputElement | null | La referencia DOM del checkbox nativo. | |
wrapperRef bindable | HTMLElement | null | La referencia DOM de la superficie de la píldora. | |
wrapperAttributes | HTMLAttributes<HTMLSpanElement> | Atributos de la superficie de la píldora. Los atributos del input corresponden al propio componente. | |
checked bindable | boolean | null | Indica si la píldora está seleccionada. Si se omite, defaultChecked determina el estado inicial. | |
appearance | 'filled' | 'outline' | 'brand' | 'filled' | La apariencia de la píldora. |
size | 'small' | 'medium' | 'large' | 'extra-large' | 'medium' | El alto y el tamaño del texto de la píldora: small usa 24px/12px, medium 32px/14px, large 40px/16px y extra-large 48px/18px. |
shape | 'circular' | 'rounded' | 'square' | 'circular' | La forma de la píldora: circular, rounded o square. |
icon | Snippet<[SVGAttributes<SVGElement>]> | Component<SVGAttributes<SVGElement>> | Un icono decorativo opcional de Fluent antes del contenido. | |
media | Snippet<[PillButtonMediaProps]> | Component<PillButtonMediaProps> | Contenido visual decorativo antes del texto, normalmente un Avatar. Recibe el shape actual de la píldora; pásalo al componente visual. Se ajusta al alto del control con un margen uniforme de 4px. Tiene prioridad sobre icon. | |
children | Snippet | La etiqueta visible. Proporciona aria-label o aria-labelledby cuando no haya texto visible. | |
HTMLInputAttributes without type, children, checked, size, on: |

