Skip to content

Botones y selección

Componentes de acción y selección mutuamente excluyente.

Importación

tsx
import {
  Button,
  CheckButton,
  OptionGroup,
  buttonThemes,
  checkButtonThemes,
  optionGroupThemes,
} from 'glubox';

import type {
  ButtonProps,
  CheckButtonProps,
  OptionGroupProps,
} from 'glubox';

import 'glubox/style.css';

Button

tsx
<Button variant="primary" size="md" onClick={() => {}}>
  Guardar
</Button>
PropValores
variantprimary, secondary, outline, ghost, danger
sizesm, md, lg
themePreset o tokens custom
disabled, fullWidth, iconLeft, iconRight

CheckButton

Toggle con semántica de checkbox (estado checked / unchecked):

tsx
<CheckButton
  checked={subscribed}
  onChange={setSubscribed}
>
  Recibir novedades
</CheckButton>

OptionGroup

Selección exclusiva entre opciones:

tsx
<OptionGroup
  label="Plan"
  layout="segmented"
  value={plan}
  onChange={setPlan}
  options={[
    { value: 'basic', label: 'Basic' },
    { value: 'pro', label: 'Pro' },
    { value: 'enterprise', label: 'Enterprise' },
  ]}
/>
layoutDescripción
verticalLista apilada
horizontalFila de opciones
segmentedControl tipo segmented control

Props: variant, size, labelPosition, disabled, error, fullWidth, theme.

Tipos de eventos

ComponenteTipos exportados
ButtonButtonOnClickHandler
CheckButtonCheckButtonOnChangeHandler, CheckButtonChangeValue
OptionGroupOptionGroupOnChangeHandler, OptionGroupChangeValue
tsx
import type { CheckButtonOnChangeHandler } from 'glubox';

const handleToggle: CheckButtonOnChangeHandler = (checked) => {
  setSubscribed(checked);
};

Referencia completa: Tipos de eventos.

Temas

Cada componente acepta theme con los 6 presets (light, dark, modern-light, modern-dark, enterprise-light, enterprise-dark) u objeto custom:

tsx
<Button theme="modern-dark">Acción</Button>
<OptionGroup theme={optionGroupThemes.dark} options={options} />

Temas globales de la app (data-theme / data-mode) y prioridad con la prop theme: Guía de temas.

Siguiente paso

MIT License