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 🙏

© 2025 – Pkg Stats / Ryan Hefner

component-ui

v0.12.2

Published

Simple components for React

Readme

component-ui

Simple components for React. Bring your own CSS reset.

Install with NPM

npm install --save component-ui

Import or include the CSS

CSS

@import '/your/path/to/component-ui/dist/index.css';

HTML

<link rel="stylesheet" href="/your/path/to/component-ui/dist/index.css">

Components

Button

| Property | Type | Description | ----------- | ---------- | ---------------------------------------- | className | String | CSS class passed into the button element | click | Function | Handles the onClick event on the button | confirm | Boolean | Applies confirm styles to the button | disabled | Boolean | Disables the button | primary | Boolean | Applies primary styles to the button | submit | Boolean | Button will submit when placed in forms | warning | Boolean | Applies warning styles to the button

import React from 'react';
import { Button } from 'component-ui';

const ButtonExamples = (props) => (
  <div>
    <Button className="button-example">Button with className</Button>
    <Button click={props.click}>Button with click handler</Button>
    <Button confirm disabled>Confirm Disabled</Button>
    <Button primary>Primary</Button>
    <Button submit>Submit</Button>
    <Button warning>Warning</Button>
  </div>
);

Flex

| Property | Type | Description | ----------- | ---------- | ---------------------------------------- | align | String | Aligns the children within the component | basis | Number | Percent of the parent Flex used for size | className | String | CSS class passed into the element | grow | Boolean | Fills the space available in the parent | hidden | Boolean | Hides the component (display: none) | hide | String | Hides the component for the screen size | hideXs | Boolean | Hidden for Extra Small to Small screens | hideSm | Boolean | Hidden for Small to Medium screens | hideMd | Boolean | Hidden for Medium to Large screens | hideLg | Boolean | Hidden for Large to Extra Large screens | layout | String | Direction to layout the children within | overflow | Boolean | Allows scrolling of overflowing content | show | String | Shows the component for the screen size | shrink | Boolean | Shrinks to allow siblings to fit parent | wrap | Boolean | Allows wrapping the children to fit

import React from 'react';
import { Flex } from 'component-ui';

/*
align:
  start    | start-{center, end, around, between}
  center   | center-{start, end, around, between}
  end      | end-{start, center, around, between}
  stretch  | stretch-{start, center, end, around, between}
  baseline | baseline-{start, center, end, around, between}
hide/show:
  xs, gt-xs, lt-xs | extra small (320px), greater than, less than
  sm, gt-sm, lt-sm | small (480px), greater than, less than
  md, gt-md, lt-md | medium (768px), greater than, less than
  lg, gt-lg, lt-lg | large (1024px), greater than, less than
  xl, gt-xl, lt-xl | extra large (1280px), greater than, less than
*/
const FlexExamples = () => (
  <Flex align="start-center" className="flex-example" layout="row">
    <Flex align="stretch-start" basis={50} hide="gt-md" layout="column">
      <p>Content</p>
    </Flex>
    <Flex align="center-end" grow hideLg layout="column">
      <p>Content</p>
    </Flex>
    <Flex align="center-start" layout="column" overflow shrink>
      <p>Content</p>
    </Flex>
    <Flex align="end" hidden layout="column" overflow show="lt-md" shrink>
      <p>Content</p>
    </Flex>
  </Flex>
);

Grid

| Property | Type | Description | ----------- | ---------- | ---------------------------------------- | className | String | CSS class passed into the element | container | Boolean | Becomes a container for Grid components | hidden | Boolean | Hides the component (display: none) | hide | String | Hides the component for the screen size | hideXs | Boolean | Hidden for Extra Small to Small screens | hideSm | Boolean | Hidden for Small to Medium screens | hideMd | Boolean | Hidden for Medium to Large screens | hideLg | Boolean | Hidden for Large to Extra Large screens | show | String | Shows the component for the screen size | xs | Number | Grid size (1-12) for Extra Small screens | sm | Number | Grid size (1-12) for Small screens | md | Number | Grid size (1-12) for Medium screens | lg | Number | Grid size (1-12) for Large screens | xl | Number | Grid size (1-12) for Extra Large screens

import React from 'react';
import { Grid } from 'component-ui';

/*
hide/show:
  xs, gt-xs, lt-xs | extra small (320px), greater than, less than
  sm, gt-sm, lt-sm | small (480px), greater than, less than
  md, gt-md, lt-md | medium (768px), greater than, less than
  lg, gt-lg, lt-lg | large (1024px), greater than, less than
  xl, gt-xl, lt-xl | extra large (1280px), greater than, less than
*/
const GridExamples = () => (
  <Grid className="grid-example" container>
    <Grid hide="lt-md" xs={12} sm={6} md={4}>
      <p>Content</p>
    </Grid>
    <Grid hideMd xs={12} sm={6} md={4}>
      <p>Content</p>
    </Grid>
    <Grid show="gt-md" xs={12} sm={6} md={4}>
      <p>Content</p>
    </Grid>
  </Grid>
);

Spinner

| Property | Type | Description | ----------- | --------- | ----------------------------------------- | className | String | CSS class passed into the element | overlay | Boolean | Display as centered full-screen overlay

import React from 'react';
import { Spinner } from 'component-ui';

const SpinnerExample = () => (
  <Spinner className="spinner-example" overlay />
);

Textbox

| Property | Type | Description | ------------- | ---------- | --------------------------------------- | change | Function | Handles the onChange event on the input | className | String | CSS class passed into the element | defaultText | String | The default text for uncontrolled input | disabled | Boolean | Disables the text input | focus | Function | Handles the onFocus event on the input | labelText | String | Optional label text for the input | name | String | The name used for the input element | placeholder | String | Optional text shown when input is empty | type | String | The type of the text input | value | String | The value used for the input value

import React from 'react';
import { Textbox } from 'component-ui';

const TextboxExample = (props) => (
  <Textbox
    change={props.change}
    className="textbox-example"
    focus={props.focus}
    labelText="Book Title"
    name="bookTitle"
    placeholder="Title of the Book"
    type="text"
    value={props.bookTitle}
  />
);

Toggle

| Property | Type | Description | ----------- | ---------- | ----------------------------------------- | change | Function | Handles the onChange event on the input | checked | Boolean | Passed into the hidden checkbox input | className | String | CSS class passed into the element | disabled | Boolean | Disables the toggle input | name | String | The name used for the input element | value | String | The value used for the input value

import React from 'react';
import { Toggle } from 'component-ui';

const ToggleExample = (props) => (
  <Toggle
    change={props.change}
    checked
    className="toggle-example"
    disabled
    name="enableTimeTravel"
    value="sureWhyNot"
  />
);

Utils

Each

| Property | Type | Description | ----------- | ----------- | --------------------------------------- | items | Array | Array of objects to map to components | component | Component | Component to render for each item

import React from 'react';
import { Each } from 'component-ui';

const items = [
  {
    name: 'Pasta'
  },
  {
    name: 'Pizza'
  }
];

const Item = (props) => <li>{props.name}</li>;

const EachExample = () => (
  <ul>
    <Each items={items} component={Item} />
  </ul>
);

When

| Property | Type | Description | ----------- | ----------- | --------------------------------------- | is | Boolean | Renders the children if value is truthy

import React from 'react';
import { When } from 'component-ui';

const WhenExample = (props) => (
  <div>
    <When is={props.isExampleReady}>
      <p>Content is rendered</p>
    </When>
    <When is={!props.isExampleReady}>
      <p>Content is not rendered</p>
    </When>
  </div>
);