Ir al contenido

SizeProvider

Proveedor de contexto que transmite el tamaño del componente a los componentes hijos. Usado internamente por componentes como Button para pasar su tamaño a iconos anidados.

import { SizeProvider, useSize } from 'asterui'

Al usar componentes como Button con la prop icon, el tamaño se propaga automáticamente al icono:

import { Button } from 'asterui'
import { StarIcon } from '@aster-ui/icons'
function App() {
return (
<Button size="lg" icon={<StarIcon />}>
Botón Grande
</Button>
)
}

El StarIcon recibirá automáticamente el tamaño lg del Button.

Usa SizeProvider para crear componentes personalizados que propaguen el tamaño a los hijos:

import { SizeProvider, useSize } from 'asterui'
function CustomIconButton({ size = 'md', icon, children }) {
return (
<SizeProvider size={size}>
<button className="custom-button">
{icon}
{children}
</button>
</SizeProvider>
)
}

Usa el hook useSize para acceder al contexto de tamaño actual:

import { useSize } from 'asterui'
const sizeMap = {
xs: 12,
sm: 16,
md: 20,
lg: 24,
xl: 28,
}
function CustomIcon() {
const size = useSize() ?? 'md'
const pixels = sizeMap[size]
return (
<svg width={pixels} height={pixels} viewBox="0 0 24 24">
{/* ... */}
</svg>
)
}
PropiedadTipoDescripción
size'xs' | 'sm' | 'md' | 'lg' | 'xl'Tamaño a proporcionar a los componentes hijos.
childrenReact.ReactNodeComponentes hijos que pueden consumir el contexto de tamaño.
RetornoTipoDescripción
sizeSize | undefinedEl tamaño actual del SizeProvider más cercano, o undefined si no está dentro de un proveedor.
TamañoValor Típico en Píxeles
xs12px
sm16px
md20px
lg24px
xl28px

Los siguientes componentes usan SizeProvider internamente para propagar su tamaño:

  • Button: Pasa el tamaño a la prop icon
  • CopyButton: Pasa el tamaño a los iconos integrados

El paquete @aster-ui/icons está diseñado para funcionar perfectamente con SizeProvider:

import { Button } from 'asterui'
import { HeartIcon, StarIcon } from '@aster-ui/icons'
function App() {
return (
<>
<Button size="sm" icon={<HeartIcon />}>Pequeño</Button>
<Button size="lg" icon={<StarIcon />}>Grande</Button>
</>
)
}

Los iconos ajustan automáticamente su tamaño según el tamaño del componente padre sin configuración explícita.