GitHub

segmented

iOS-style segmented control built from hidden radio inputs. The selected segment is highlighted via CSS — no JavaScript required.

Basic

segmented({
  name:  'period',
  value: state.period,
  options: [
    { value: 'day',   label: 'Day'   },
    { value: 'week',  label: 'Week'  },
    { value: 'month', label: 'Month' },
  ],
})

Sizes

segmented({ name: 'view', value: 'b', size: 'sm', options: [...] })
segmented({ name: 'view', value: 'b', size: 'md', options: [...] })
segmented({ name: 'view', value: 'b', size: 'lg', options: [...] })

View toggle

A common use case — toggling between Grid and List views.

segmented({
  name:    'layout',
  value:   state.layout,
  options: [
    { value: 'grid', label: 'Grid' },
    { value: 'list', label: 'List' },
  ],
})
The segmented control submits the selected value string under name in FormData. Read it via formData.get('period') in action.onStart or action.run.
PropTypeDefault
namestringField name — submitted in FormData
optionsarray[]Array of { value, label }
valuestringThe currently selected value
sizesm | md | lgmd
disabledbooleanfalseDisables all options
classstring