npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@xaui/native

v0.0.8

Published

Flutter-inspired React Native UI components with native animations powered by React Native Reanimated

Readme

@xaui/native

React Native components and hooks that extend the core @xaui/core theme system. This mobile layer ships animated primitives (buttons, indicators, hooks) ready to use with XUIProvider.

Installation

pnpm add @xaui/native

Peer dependencies

  • react ^18 || ^19
  • react-native >=0.70.0
  • react-native-reanimated >=4.0.0
  • react-native-svg >=13.0.0

The package also relies on @xaui/core/theme for the shared tokens.

Quick start

  1. Wrap your tree with XUIProvider to expose the tokens and follow the system color scheme:
import { XUIProvider } from '@xaui/native/core'
import { theme, darkTheme } from '@xaui/core/theme'

export default function App() {
  return (
    <XUIProvider theme={theme} darkTheme={darkTheme}>
      {/* your screens */}
    </XUIProvider>
  )
}
  1. Consume the theme inside your components via useXUITheme or useColorMode:
import { Text, View } from 'react-native'
import { useXUITheme, useColorMode } from '@xaui/native/core'

function Banner() {
  const theme = useXUITheme()
  const mode = useColorMode()

  return (
    <View style={{ backgroundColor: theme.colors.primary.background }}>
      <Text style={{ color: theme.colors.primary.foreground }}>
        Current mode: {mode}
      </Text>
    </View>
  )
}

Key components

Button

  • Variants: solid, outlined, flat, light, elevated, faded
  • Sizes: xs, sm, md, lg
  • Radii: none, sm, md, lg, full
  • Supports start/end content, fullWidth, isDisabled, isLoading with an integrated spinner
  • Declarative press animations (scale, opacity, spring)
<Button
  themeColor="primary"
  variant="elevated"
  size="lg"
  radius="full"
  isLoading={saving}
  spinnerPlacement="end"
  onPress={handleSave}
>
  Save changes
</Button>

useButtonStyles exposes the internal calculations if you need to derive custom layouts (spacing, colors, shadows, spinner size).

ActivityIndicator

  • Variants: circular (default size 40) and linear (custom height)
  • Draws from the theme colors (primary, secondary, etc.) and optionally renders a track with showTrack
  • disableAnimation is provided for snapshots or silent loading states
<ActivityIndicator variant="linear" themeColor="secondary" showTrack borderRadius={4} />

Theme hooks & utilities

  • useXUITheme() must be used within XUIProvider; it throws if the provider is missing.
  • useXUIColors() is a shortcut for reading just the color tokens.
  • useColorMode() returns light or dark based on React Native's useColorScheme().
  • XUIProvider accepts theme and darkTheme as DeepPartial<XUITheme> so you can override partial token sets without redefining the entire theme.

Testing & build

  • Bundles are produced with tsup (ESM + CJS outputs under dist).
  • Tests live under packages/native/__tests__ and run with vitest.

License

MIT