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

pampa-react

v0.1.6

Published

Library of React components, cleaner and customizable. Focus in a clean layout and open spaces.

Readme

Pampa React

Library of React components, cleaner and customizable. Focus in a clean layout and open spaces. All components use styled-components so you can use all them tools.

Alert

A little pop-up alert box to display info to the user, like success actions or errors.

const [alert, setAlert] = useState(true);

<Alert open={alert} close={() => setAlert(!alert)} delay={5000} variant='success'>
  <Alert.Message>¡Success message!</Alert.Message>
</Alert>

Property | type | default | required | porpose --- | --- | --- | --- | --- open | boolean | | true | If true the components shows up. close | function | | false | The action to close the components, mostly it could set false to the open prop. delay | number | 3000 | false | The time it takes to the alert dissapear. variant | 'info', 'success', 'warning', 'error' | 'info' | false | Change the color of the alert. action | component | | false | Aditionally you can pass another component to do some action, like another button to dissmiss the action. children | component | | false | Wrapps the <Alert.Message/> component. sx | js object | | false | You can pass custom styles to the component itself instead of use element.style.

<Alert.Message>

Property | type | default | required | porpose --- | --- | --- | --- | --- children | string | | false | display the text of the alert. sx | js object | | false | You can pass custom styles to the component itself instead of use element.style.

Box

A frame with a border, you can use it for cards, list or any component that you want to have a border in line with the other styles.

<Box>
  {children}
</Box>

Property | type | default | required | porpose --- | --- | --- | --- | --- children | | | false | Add a border to any component. sx | js object | | false | You can pass custom styles to the component itself instead of use element.style.

Button

There is a bounch of diferent buttons in the package, here is a little example.

/* Common type */
<Button>Do Something</Button>

/* Filled variant */
<Button filled>Filled</Button>

/* Like the Alert, you can use a variant */
<Button variant='warning' filled>Delete Item</Button>

/* There is a option for icons (you need to add the icons link from google fonts), so you can style all the icons in the app in the same way */
<Button.Icon>arrow_back</Button.Icon>

Property | type | default | required | porpose --- | --- | --- | --- | --- filled | boolean | false | false | Make the button filled. variant | 'info', 'success', 'warning', 'error' | 'info' | false | Change the variant of the button. sx | js object | | false | You can pass custom styles to the component itself instead of use element.style.

Card

Simple card component with the posibility of customize the content.

<Card>
  <Card.Media src='imgs/some-img.jpg' />
  <Card.Header>
    <Text component='h4' type={500}>Card Title</Text>
    <Text component='h5'>Card Subtitle</Text>
  </Card.Header>
  <Card.Content>
    <Text component='p'>Some description</Text>
  </Card.Content>
  <Card.Actions>
    <Button>See Detail</Button>
    <Button variant='error'>Delete from cart</Button>
  </Card.Actions>
</Card>

Property | type | default | required | porpose --- | --- | --- | --- | --- children | | | false | Container for all card children components. sx | js object | | false | You can pass custom styles to the component itself instead of use element.style.

<Card.Media/>

Display a img in the component.

Property | type | default | required | porpose --- | --- | --- | --- | --- src | string | | true | Set the img displayed in the component. children | component | | false | This component is a figure HTML tag, so you cand pass a string to be the figcaption. sx | js object | | false | You can pass custom styles to the component itself instead of use element.style.

<Card.Header/>

This is a wrapper div to determinate a section in a card.

<Card.Content/>

This is a wrapper div to determinate a section in a card.

<Card.Actions/>

This is a wrapper div to determinate a section in a card.

Gallery

A full screen gallery to see imgs or any other content in detail. The component create a new portal to mount this.

const [gallery, setGallery] = useState(true);

<Gallery open={gallery} items={5} index={0}>
  <Gallery.Close onClick={() => setGallery(!gallery)}>close</Gallery.Close>
  <Gallery.Slider>
    {arrayOfImages.map((img, index) => 
      <Gallery.Slide key={index} slide={index}>
        <Image src={img} />
      </Gallery.Slide>
    )}
  </Gallery.Slider>
  <Gallery.Info>
    <Gallery.Prev>arrow_back</Gallery.Prev>
    <Gallery.Next>arrow_forward</Gallery.Next>
  </Gallery.Info>
</Gallery>

Property | type | default | required | porpose --- | --- | --- | --- | --- open | boolean | | true | If true opens the gallery. items | number | 0 | true | The exact number of items in the gallery. index | number | 0 | false | You can pass the index when opens the component, so you can start from any <Slice/>. children | | | true | Wrapper all gallery components to access to the Context.

<Gallery.Slider/>

This is a wrapper for all the Slide.

<Gallery.Slide/>

This component wrap all the info that you wanna show in any card.

Property | type | default | required | porpose --- | --- | --- | --- | --- slide | number | | true | The index for the component to use the pagination.

<Gallery.Info/>

Display the position and the total of slides.

<Gallery.Close/>

With this button you can trigger the close of the gallery.

Property | type | default | required | porpose --- | --- | --- | --- | --- children | string | | true | Set a icon to display from google icons.

<Gallery.Prev/>

With this button you can trigger the prev slide of the gallery.

Property | type | default | required | porpose --- | --- | --- | --- | --- children | string | | true | Set a icon to display from google icons.

<Gallery.Next/>

With this button you can trigger the next slide of the gallery.

Property | type | default | required | porpose --- | --- | --- | --- | --- children | string | | true | Set a icon to display from google icons.

Image

A component for imgs to use in any component and have matching styles. It have the same props that any <img/> HTML tag

Property | type | default | required | porpose --- | --- | --- | --- | --- sx | js object | | false | You can pass custom styles to the component itself instead of use element.style.

Alternatively you can import LazyLoad from the Image file, to use a lazy-load image.

Input

A input component with styles for validation.

/* You can use the input tag alone or with the container to use the custom styles for add in validations */

let error = false;
let valid = true;
let errorMessage = false;

<Input.Container error={error} valid={valid}>
  <Input id='name' name='name' placeholder='insert your name' />
  <Input.Message show={errorMessage}>The name is requerided</Input.Message>
</Input.Container>

<Input id='name' name='name' placeholder='insert your name' />

<Input.Container/>

Property | type | default | required | porpose --- | --- | --- | --- | --- error | boolean | | | false | Set to true to display the error styles. valid | boolean | | false | Set to true to display the valid style. sx | js object | | false | You can pass custom styles to the component itself instead of use element.style.

<Input.Message/>

Property | type | default | required | porpose --- | --- | --- | --- | --- show | boolean | | | true | Show the message from the input. variant | 'info', 'success', 'warning', 'error' | 'info' | false | Change the color of the message. sx | js object | | false | You can pass custom styles to the component itself instead of use element.style.

List

A big list to display content.

<List>
  <Item>
    <Item.Label>
      <Text type={300}>Package creator</Text>
    </Item.Label>
    <Item.Content>
      <Text type={600}>Juan Stroman Ilz</Text>
    </Item.Content>
  </Item>
  <Item>
    <Item.Label>
      <Text type={300}>First version release</Text>
    </Item.Label>
    <Item.Content>
      <Text type={600}>2021</Text>
    </Item.Content>
  </Item>
  <Item>
    <Item.Label>
      <Text type={300}>Framework</Text>
    </Item.Label>
    <Item.Content>
      <Text type={600}>React.js</Text>
    </Item.Content>
  </Item>
</List>

/* Here in combination with Box */

<Box>
  <List>
    <Item>
      <Item.Label>
        <Text type={300}>Package creator</Text>
      </Item.Label>
      <Item.Content>
        <Text type={600}>Juan Stroman Ilz</Text>
      </Item.Content>
    </Item>
    <Item>
      <Item.Label>
        <Text type={300}>First version release</Text>
      </Item.Label>
      <Item.Content>
        <Text type={600}>2021</Text>
      </Item.Content>
    </Item>
    <Item>
      <Item.Label>
        <Text type={300}>Framework</Text>
      </Item.Label>
      <Item.Content>
        <Text type={600}>React.js</Text>
      </Item.Content>
    </Item>
  </List>
</Box>

Property | type | default | required | porpose --- | --- | --- | --- | --- sx | js object | | false | You can pass custom styles to the component itself instead of use element.style.

Property | type | default | required | porpose --- | --- | --- | --- | --- sx | js object | | false | You can pass custom styles to the component itself instead of use element.style.

<Item.Label/>

Property | type | default | required | porpose --- | --- | --- | --- | --- sx | js object | | false | You can pass custom styles to the component itself instead of use element.style.

<Item.Content/>

Property | type | default | required | porpose --- | --- | --- | --- | --- sx | js object | | false | You can pass custom styles to the component itself instead of use element.style.

Modal

Create a modal pop-up. The component create a new portal to mount this.

const [open, setOpen] = useState(true);

<Modal open={open} close={() => setOpen(!open)}>
  <Modal.Title>Delete item</Modal.Title>
  <Modal.Content>This action can't be undone.</Modal.Content>
  <Modal.Actions>
    <Button filled onClick={() => setOpen(!open)}>Close</Button>
    <Button filled variant='error' onClick={deleteItem}>Delete</Button>
  </Modal.Actions>
</Modal>

Property | type | default | required | porpose --- | --- | --- | --- | --- open | boolean | | false | Tell the component to open the pop-up. close | function | false | Actions to close the modal, mostly it will set to false the open property. id | string | 'modal-view' | false | Pass a custom name to the modal id. sx | js object | | false | You can pass custom styles to the component itself instead of use element.style.

<Modal.Title/>

The title of the modal.

Property | type | default | required | porpose --- | --- | --- | --- | --- sx | js object | | false | You can pass custom styles to the component itself instead of use element.style.

<Modal.Content/>

The content of the modal.

Property | type | default | required | porpose --- | --- | --- | --- | --- sx | js object | | false | You can pass custom styles to the component itself instead of use element.style.

<Modal.Actions/>

The wrapper for the actions of the modal.

Property | type | default | required | porpose --- | --- | --- | --- | --- sx | js object | | false | You can pass custom styles to the component itself instead of use element.style.

Tag

A component to list details or hashtags.

<Tag>
  <Text type={300}>React</Text>
</Tag>

/* or */

<Tag>
  <a href='/somewhere'>external detail</a>
</Tag>

Property | type | default | required | porpose --- | --- | --- | --- | --- sx | js object | | false | You can pass custom styles to the component itself instead of use element.style.

Text

A component to control typography and match styles in the app.

<Text type={700}>Title</Text>

Property | type | default | required | porpose --- | --- | --- | --- | --- component | HTML tag | 'span' | false | Change the semantic tag of the component. type | 100, 200, 300, 400, 500, 600, 700, 800, 900 | 400 | false | Change the style of font. sx | js object | | false | You can pass custom styles to the component itself instead of use element.style.

ThemeProvider

You need to wrap the app root with this theme provider, to access to the default theme. This is extension of the styled-components ThemeProvider, if you want to overrite the defaul theme pass a theme to the component.