Button
<Button />A token-driven React Native component library for building consistent, expressive, and scalable interfaces across platforms.
npm install @impulse-ui-native/toolkitVersion
2.0.1
License
MIT
Package
Toolkit
Good morning
Alex Rivera
Sessions
248↑ 12.4%Active
36live nowNotifications
Push & email
MIT licensed, public from day one.
Strong types across every component.
Built for iOS, Android, and web.
Primitive, semantic, and component layers.
Built in the open with contributors.
Components
Accessible, composable building blocks whose web previews use the same dimensions, variants, colors, and states as the native packages.
<Button /><IconButton /><Tag /><Input /><Select /><DateTimePicker /><TimePicker /><Skeleton />No results found
<DataState />Playground
variant="filled" size="medium"Variant
Size
State
Design tokens
The website consumes the same primitive scale as the native theme instead of maintaining a parallel palette or spacing system.
Semantic roles backed by the native palette.
colors.primary.value#f55d6bcolors.accent.value#FA9EA7colors.secondary.value#FEE7E9colors.surface.primary#f1f3f5colors.surface.elevated#ffffffThe shared layout rhythm in logical pixels.
space.xxs4space.xs8space.mxs12space.sm16space.msm24space.md32Consistent shape from controls to flyouts.
radii.sm4radii.md8radii.lg16radii.xl32radii.round100000Montserrat scales shared by every package.
fontSize.xs12fontSize.xsm14fontSize.sm16fontSize.xl24fontSize.colossal56export const SpaceTokens = {
xxs: 4, xs: 8, mxs: 12,
sm: 16, msm: 24, md: 32,
lg: 48, xl: 64, xxl: 96,
}
export const RadiiTokens = {
sm: 4, md: 8, lg: 16,
xl: 32, xxl: 64, round: 100000,
}Why tokens matter
Theming
Primitive values feed semantic roles, then component factories. The preview below intentionally uses the authoritative light theme because the package does not yet define a distinct dark palette.
Theme preview
LightThemeGood morning
Alex Rivera
Sessions
248↑ 12.4%Active
36live nowNotifications
Push & email
Semantic tokens
7 valuescolors.surface.primary#f1f3f5colors.surface.secondary#ffffffcolors.text.primary#16191dcolors.text.secondary#212529colors.text.disabled#868e96colors.border.subtle#e9ecefcolors.border.focus#f55d6bHow it composes
Architecture
A traceable pipeline from raw values to shipping interfaces. Every layer remains replaceable, testable, and documented.
Layer 1
Raw colors, dimensions, type, and spacing.
#f55d6bspace.smradii.mdLayer 2
Intent-driven roles for surfaces and actions.
surface.primarytext.disabledborder.focusLayer 3
Factories translate the theme into exact anatomy.
button.sizestag.colorscontrol.variantsLayer 4
Composable React Native building blocks.
ButtonInputSelectLayer 5
Your screens remain coherent as the system changes.
OnboardingDashboardSettingscomponents.buttoncomponents.tagcomponents.controlContainercomponents.datetimePickercomponents.skeletonDeveloper experience
Extend, wrap, and recompose components without leaving the token contract.
Use names that describe intent instead of one-off pixel values.
Keep behavior and visual language aligned across supported platforms.
<Button />size"small" | "medium" | "large""medium"variant"filled" | "outlined" | "soft" | "ghost" | "plain""filled"loadingbooleanfalsedisabledbooleanfalseonPressPressableProps['onPress']—shadow"none" | "xs" | "sm" | "md" | "lg" | "xl"—Contribute
ImpulseUI Native is shaped in the open. Explore the source, report issues, suggest improvements, and contribute new ideas.
Start with tokens, compose with components, and shape the system around your product.