Button
A pressable button with six visual variants and five sizes, all token-driven.
IconButton
A pressable, icon-only button with six visual variants and five sizes, mirroring Button's token-driven styling. Vajra UI ships no bundled icons: icon accepts any component matching TVajraIconComponent. The examples below use @devraj-labs/vajra-ui-icons, a small set of Lucide icons pre-adapted to that contract.
TextInput
A themeable, token-driven wrapper around React Native's TextInput.
Input
A labeled text field with four visual variants (Input.Outline, Input.Filled, Input.Flushed, Input.Floating), plus shared label, helper text, and error states.
Checkbox
A multi-select group, controlled via values. Built from Checkbox.Root and Checkbox.Item (which internally composes Checkbox.Indicator and Checkbox.Label).
Radio
A single-select group, controlled via value. Built from Radio.Root and Radio.Item (which internally composes Radio.Indicator and Radio.Label).
Switch
A single-select group of animated toggle rows, controlled via value. Built from Switch.Root and Switch.Item (which internally composes Switch.Label and Switch.Indicator).
IconSwitch
A two-state sliding switch that shows a distinct icon in each of its "off" and "on" positions. Vajra UI ships no bundled icons: offIcon/onIcon accept any component matching TVajraIconComponent. The examples below use @devraj-labs/vajra-ui-icons, a small set of Lucide icons pre-adapted to that contract.
Select
A pressable field that opens a bottom sheet of options. Fully controlled via value and onChange.
Slider
A draggable, token-driven slider built with PanResponder. Fully controlled via value and onChange, with an optional onSlidingComplete callback fired when the drag gesture ends.
Stepper
A numeric increment/decrement control with a −/+ button pair. Fully controlled via value and onChange.