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

@wauasoft/family-hub-ui

v0.1.0

Published

A comprehensive UI component library for Family Hub, built with React and TypeScript, styled with Tailwind CSS

Readme

@wauasoft/family-hub-ui

A comprehensive UI component library for Family Hub, built with React and TypeScript, styled with Tailwind CSS.

🎨 Design System

This UI Kit is based on the Family Hub design system from the mockups:

  • Colors: Dark theme with primary blue (#63b3ed), success green (#68d391), and error red (#fc8181)
  • Typography: Inter font family
  • Spacing: Consistent 15px border radius for cards, 10px for inputs
  • Shadows: Layered shadows for depth

📦 Installation

From npm (when published)

npm install @wauasoft/family-hub-ui

From monorepo (local development)

The package is part of the monorepo and can be imported directly:

import { Button, Card, Input } from '@wauasoft/family-hub-ui';

Requirements

  • React >= 18.0.0
  • React DOM >= 18.0.0
  • Tailwind CSS (for styling)

🧩 Components

Base Components

Button

import { Button } from '@wauasoft/family-hub-ui';

<Button variant='primary' size='md'>
  Click me
</Button>;

Props:

  • variant: 'primary' | 'secondary' | 'danger' | 'ghost'
  • size: 'sm' | 'md' | 'lg'
  • fullWidth: boolean

Card

import {
  Card,
  CardHeader,
  CardTitle,
  CardContent,
} from '@wauasoft/family-hub-ui';

<Card>
  <CardHeader>
    <CardTitle>Card Title</CardTitle>
  </CardHeader>
  <CardContent>Card content goes here</CardContent>
</Card>;

Badge

import { Badge } from '@wauasoft/family-hub-ui';

<Badge variant='primary'>MVP</Badge>;

Variants: 'primary' | 'success' | 'warning' | 'error' | 'secondary'

Avatar

import { Avatar } from '@wauasoft/family-hub-ui';

<Avatar name='John Doe' size='md' />;

Sizes: 'sm' | 'md' | 'lg' | 'xl'

Form Components

Input

import { Input } from '@wauasoft/family-hub-ui';

<Input label='Email' type='email' placeholder='Enter your email' required />;

Textarea

import { Textarea } from '@wauasoft/family-hub-ui';

<Textarea label='Description' placeholder='Enter description' rows={4} />;

Select

import { Select } from '@wauasoft/family-hub-ui';

<Select label='Category'>
  <option value=''>Select a category</option>
  <option value='food'>Food</option>
  <option value='transport'>Transport</option>
</Select>;

Toggle

import { Toggle } from '@wauasoft/family-hub-ui';

<Toggle
  label='Email Notifications'
  description='Receive email updates'
  defaultChecked
/>;

FormGroup

import { FormGroup, Input } from '@wauasoft/family-hub-ui';

<FormGroup>
  <Input label='First Name' />
</FormGroup>;

Layout Components

Container

import { Container } from '@wauasoft/family-hub-ui';

<Container maxWidth='xl'>Content here</Container>;

Max Widths: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full'

Divider

import { Divider } from '@wauasoft/family-hub-ui';

<Divider orientation='horizontal' />;

Typography Components

Heading

import { Heading } from '@wauasoft/family-hub-ui';

<Heading as='h1' size='xl'>
  Welcome
</Heading>;

Text

import { Text } from '@wauasoft/family-hub-ui';

<Text variant='secondary' size='sm'>
  Secondary text
</Text>;

Specialized Components

StatCard

import { StatCard } from '@wauasoft/family-hub-ui';

<StatCard
  label='Total Income'
  value={5240}
  variant='income'
  change={{ value: '12% from last month', isPositive: true }}
/>;

Link

import { Link } from '@wauasoft/family-hub-ui';

<Link href='/dashboard' variant='primary'>
  Go to Dashboard
</Link>;

ActionButton

import { ActionButton } from '@wauasoft/family-hub-ui';

<ActionButton icon='➕' label='Add Transaction' href='/transactions/new' />;

PageHeader

import { PageHeader, Button } from '@wauasoft/family-hub-ui';

<PageHeader
  title='Dashboard'
  subtitle='Welcome back, John!'
  action={<Button>Add New</Button>}
/>;

TransactionItem

import { TransactionItem } from '@wauasoft/family-hub-ui';

<TransactionItem
  icon='🍔'
  title='Grocery Shopping'
  description='Today • Food & Dining'
  amount={125.5}
  type='expense'
/>;

MemberItem

import { MemberItem, Button } from '@wauasoft/family-hub-ui';

<MemberItem
  name='John Doe'
  email='[email protected]'
  role='admin'
  actions={<Button size='sm'>Edit</Button>}
/>;

🎯 Usage Examples

Complete Form Example

import {
  Card,
  CardHeader,
  CardTitle,
  CardContent,
  FormGroup,
  Input,
  Textarea,
  Select,
  Button,
} from '@wauasoft/family-hub-ui';

function TransactionForm() {
  return (
    <Card>
      <CardHeader>
        <CardTitle>Add Transaction</CardTitle>
      </CardHeader>
      <CardContent>
        <form>
          <FormGroup>
            <Input label='Amount' type='number' required />
          </FormGroup>
          <FormGroup>
            <Select label='Category' required>
              <option value=''>Select category</option>
              <option value='food'>Food</option>
            </Select>
          </FormGroup>
          <FormGroup>
            <Textarea label='Description' />
          </FormGroup>
          <Button type='submit' fullWidth>
            Submit
          </Button>
        </form>
      </CardContent>
    </Card>
  );
}

Dashboard Layout Example

import {
  Container,
  PageHeader,
  StatCard,
  Card,
  CardHeader,
  CardTitle,
  CardContent,
  TransactionItem,
} from '@wauasoft/family-hub-ui';

function Dashboard() {
  return (
    <Container>
      <PageHeader title='Dashboard' subtitle='Welcome back!' />

      <div className='grid grid-cols-1 md:grid-cols-3 gap-6 mb-8'>
        <StatCard
          label='Total Income'
          value={5240}
          variant='income'
          change={{ value: '12% from last month', isPositive: true }}
        />
        <StatCard
          label='Total Expenses'
          value={3850}
          variant='expense'
          change={{ value: '5% from last month', isPositive: false }}
        />
        <StatCard label='Balance' value={1390} variant='balance' />
      </div>

      <Card>
        <CardHeader>
          <CardTitle>Recent Transactions</CardTitle>
        </CardHeader>
        <CardContent>
          <TransactionItem
            icon='🍔'
            title='Grocery Shopping'
            description='Today • Food & Dining'
            amount={125.5}
            type='expense'
          />
        </CardContent>
      </Card>
    </Container>
  );
}

🔧 Setup

Tailwind Configuration

Make sure your Tailwind config includes the UI package in the content paths:

// tailwind.config.ts
export default {
  content: [
    './app/**/*.{ts,tsx}',
    './components/**/*.{ts,tsx}',
    '../../packages/ui/src/**/*.{ts,tsx}', // Add this
  ],
  // ... rest of config
};

📝 Notes

  • All components are fully typed with TypeScript
  • Components use Tailwind CSS classes with design system colors
  • All components follow accessibility best practices
  • Components are designed to be composable and flexible
  • Follows the project's coding standards (functional components, TypeScript, etc.)

🚀 Development

# Build the UI package
cd packages/ui
npm run build

# Lint the UI package
npm run lint