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 🙏

© 2024 – Pkg Stats / Ryan Hefner

paul-ui

v1.0.4

Published

Configurable, themeable components that are documented with storybook, tested and covered with jest and formatted with love using prettier. Providing a easily extendable library of reusable components for anyone to use.

Downloads

1

Readme

Component-storybook

Based off of styled-bootstrap component-storybook is the Super GO Team component libaray with linting, theming, react-storybook documentation and general company guide lines for component development.

Table of Contents

💪 Motivation

Provide 🔥 Super GO Team with reusable, themeable, code-covered and consistently documented visual components. Whilst primarily intended for display component any common abstractions can also be stored within this library. What should not be stored in this library is site or project specific functionality that can not be re-used without modification.

🚀 Quick Start

🔎 Standards

For the pleasure of everyone and the sainity of the maintainers we use the following code standards/linting tools. flow, eslint, prettier details of which can be found in the 📜 Scripts section for post work cleanups. However we strongly recomend you find and configure the corrosponding addons within your coding editor. (WIP)Currently these aren't enfored by git hooks but this is something we will be implementing soonᵀᴹ

Working on it

Git it, install it, run it. Simply run the following command and you are off ready to roll with the complete storybook.

git clone https://gitlab.com/supergoteam/component-storybook.git;
cd component-storybook;
npm install;
npm start;

Using it

Out of the box you get grid-based layout and bootstrap-styled components. Each component can have its theme properties overwritten at component level or via ThemeProvider which can be used to overwrite the entire set. Finally, each component can be easily extented using styled-components (or not but thats what we use!).

To use in your project include it in your package.json then simple import and use. Consider setting it up stand alone using the step in Working on it or lets pretend you know what you are up to and just do the following.

Install package

npm i component-storybook;

Include a component

import { Button } from "component-storybook"
...

<Button>I'm a button</Button>
<Button outline>Butti'm better.</Button>

...

⚒️ Tools

The following tools have been used in the core functionality of this library

  • Create React App - Basic application tooling for react based applications. Most suited for dynamic applications
  • Jest - Testing for Javascript
  • Storybook - Beautful documentation with powerful addons such as withKnobs(component interaction), withInfo(view react code), withStoryshot(take jest snapshots)
  • Styled Components - Use the best bits of ES6 and CSS to style your apps without stress 💅

⚙️ Technologies

  • Node - NodeJS runtime for Javascript
  • npm - Javascript package manager and environment
  • React - Declarative component based JSX. Write JavaScript then add HTML not the other way round.

📜 Scripts

The following scripts be ran from the project root using npm run e.g, npm run start will start react and open the application.

  • build - Clean up and create a new static bundle
  • build-bundle - "rollup -c",(WIP)
  • build-packages - "babel src/ --out-dir lib/ --copy-files",(WIP)
  • flow - Check types and display any potential issues.,
  • clean - Tidy up old builds,
  • lint:css - "stylelint './src/components/**/*.js'",(WIP)
  • prepublish - "npm run build",(WIP)
  • start - Start the application,
  • test - "react-scripts test --env=jsdom",(WIP)
  • test:coverage "react-scripts test --env=jsdom --coverage" Run test with cover coverage reporting, directly to console and /coverage/index.html
  • prettier - "prettier --write 'src/**/*.js'"(WIP)

🗄️ File Structure

There is a reasonable amount of noise in the root file structure due to linting, formatting, integrity and packaging tools, some of which are documented above in the scripts section. (WIP) It is likely that a breif synopsis of all of these tools and how Super GO Team will in the near future find their way into process-and-tools.

src contains the majority of the fun stuff and in fact 90% of the working code base that will get exported to the distributed version of the repo.

Component files

src/${ComponentName}/index.js each component is in its own folder with a set of coupled files for testing, stories, styles and utils. Whilst we are generally against tight coupling, layers of abstraction here would be counter productive towards the accesibility of this package. K.I.S.S!

src/Button/__tests__/Button.test.js jest test file that is ran using npm test. Test file will .test.js files will be ran automatically when in jest is watching. /running npm test:cover in console will give you a text summary of current tests and coverage. It will also generate an interactive coverage report in coverage/index.html

src/Button/__test__/__snapshots__/* jest will generate snapshots of components it has seen here on first run and can be compared later to notify you of any changes that might have occured.

src/Button/utils/* some components will have utils which provide a subset of behaviours which are reused multiple times through out the main component or sibling components.

src/Button/Button.js styled component that can be configured with theme overides and configuration props. Some components such as Card will have sibling styled components such as CardHeader, CardBody ect.

src/Button/defaultTheme.js This really is the default theme, don't change this unless you are Working on it. For people Using it this provides a complete set of all theme-properties that are available for overriding.

src/Button/index.js Normalised folder structure, how do I know what each component provides? Just look in the index baby!.

Global files

src/index.js to be made available for people using this repo externally (God damn it index - you had one job!!!),

src/utils/* is an example of granular global styles which allow you to define, for example, padding or border-radius once and for it to be made available to all styled-components for glorious consitency.

src/utils/defaultTheme.js is an example of a global theme that you could provide from your own project via when importing this package.

Storybook files

Storybook files are split between two places. The global settings in .storybook which control which addons are available, which addons are enabled globally and within the config an example of how to implement a global <ThemeProvider>

  ./.storybook/
  ./.storybook/addons.js - *Global addons registration for Storybook*
  ./.storybook/config.js - *Global config for Storybook (checkout the ThemeProvider example!)*

The second place is at component level within each of the component directories. e.g. src/Button/stories/Button.story.js. These files are all loaded into the global story config and are what make up the Storybook documentation.

✒️ Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

🌟 Team

License

MIT