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

@discussify/styleguide

v1.1.0

Published

Discussify's living styleguide

Downloads

22

Readme

@discussify/styleguide

Discussify's living styleguide.

Installation

$ npm install @discussify/styleguide

Setup

It's assumed that you will consume this package in an application bundled with Webpack. Follow the steps below:

  1. Activate CSS modules

    Activate CSS modules for this package directory (or for your whole project if you like):

    {
        test: /\.css$/,
        include: path.resolve(__dirname, 'node_modules/@discussify/styleguide'),
        loader: [
            {
                loader: require.resolve('style-loader'),
            },
            {
                loader: require.resolve('css-loader'),
                options: {
                    modules: true,
                    sourceMap: true,
                    importLoaders: 1,
                    localIdentName: '[name]__[local]___[hash:base64:5]!',
                },
            },
        ],
    },

    If you are going to use any of the CSS variables or mixins, please add postcss-loader after css-loader:

    {
        loader: require.resolve('postcss-loader'),
        options: require('postcss-preset-moxy')({
            url: 'rebase',
        }),
    }
  2. Add SVG rule

    Support inline SVGs by using raw-loader for this package directory (or for your whole project if you like):

    {
        test: /\.svg$/,
        include: path.resolve(__dirname, 'node_modules/@discussify/styleguide'),
        use: [
            require.resolve('raw-loader'),
            {
                loader: require.resolve('svgo-loader'),
                options: {
                    plugins: [
                        { removeTitle: true },
                        { removeDimensions: true },
                        { cleanupIDs: false },
                    ],
                },
            },
            // Uniquify classnames and ids so they don't conflict with each other
            {
                loader: require.resolve('svg-css-modules-loader'),
                options: {
                    transformId: true,
                },
            },
        ],
    },

    Alternatively, you may setup external-svg-sprite-loader for performance reasons. Check out this project storybook webpack config for an example.

  3. Import base styles

    Import the styleguide base styles in the app's entry CSS file:

    /* src/index.css */
    @import "@discussify/styleguide/styles";

    ..or in your entry JavaScript file:

    // src/index.js
    import "@discussify/styleguide/styles/index.css";
  4. Wrap your app

    Wrap your app with KeyboardOnlyOutlines components to disable outlines when using a pointer device, such as a mouse:

    import { KeyboardOnlyOutlines } from '@discussify/styleguide';
    
    <KeyboardOnlyOutlines>
      <MyApp />
    </KeyboardOnlyOutlines>
  5. Use the components

    import { TypingIndicator } from '@discussify/styleguide';
    
    <TypingIndicator />

    You may take a look at all the components by running the Storybook.

    If you are using the Modal component, please call Modal.setAppElement with your app element.

Base technology

Commands

start

$ npm start

Starts Storybook.

build

$ npm run build

Builds the project.

test

$ npm test

Runs the project tests.

lint

$ npm run lint

Checks if the project has any linting errors.

release

$ npm run release

Releases a new version of the package. Runs tests, lints and builds the project beforehand. If successful, you may publish the release to npm by running $ npm publish.

This command uses standard-version underneath. The version is automatically inferred from the conventional commits.

Using a linked version of discussify-styleguide

In some cases, you may want to make changes to Discussify's styleguide at the same time as you work on your project which uses the styleguide. In order to use a local version of @discussify-styleguide and have any styleguide modifications be reflected live on your project, some pages have to be made in our main project.

Install and update dependencies

Run the following command in your main project to install postcss-import-webpack-resolver.

$ npm i postcss-import-webpack-resolver

NOTE: if using postcss-preset-moxy, it should be of version '^3.0.0' or older.

Make required changes to your Webpack config

Add two new dependencies. fs and postcss-import-webpack-resolver.

const fs = require('fs');
const createResolver = require('postcss-import-webpack-resolver');

Before exporting the webpack configuration, add the following line to the file. This will check if there is a linked version of discussify-styleguide.

const existsStyleguideSrc = fs.existsSync(path.join(projectDir, 'node_modules/@discussify/styleguide/src'));

In the resolve option of your webpack configuration, insert the following. This will allow your project to update when changes occur to js files in the styleguide, without requiring a new styleguide build.

alias: process.env.NODE_ENV === 'development' && existsStyleguideSrc ? {
    '@discussify/styleguide': path.join(projectDir, 'node_modules/@discussify/styleguide/src'),
} : undefined,

Pass a resolve option to postcss-import plugin. This option will create a new alias for the styles folder in the styleguide's src/ directory. This will have a similar effect as the previous bit of code, but for CSS imports.

resolve: createResolver({
    alias: process.env.NODE_ENV === 'development' && existsStyleguideSrc ? {
        '@discussify/styleguide/styles': path.join(projectDir, 'node_modules/@discussify/styleguide/src/styles'),
        } : undefined,
})

NOTE: if using postcss-preset-moxy, this resolve option should be wrapped in the import option.

Link discussify-styleguide to your main project

Link the projects by running npm link inside the root directory of the discussify-styleguide project, then run npm link @discussify/styleguide inside your main project. NOTE: this step has to be retaken every time you run an npm i command in your main project, because npm i will replace your linked version with an installed version.

Contributing

If you want to contribute for the project, we encourage you to read over the discussify repository README.