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

idsreslib

v1.4.1

Published

IDS Resource Library

Downloads

17

Readme

IDS Resource Library

This is a React friendly collection of SVG icons for use in the Smrt1 Health IDS Project. The package consists of 90 svg icons and 13 colors pre-bundled via webpack and has a size of about 260K.

Dependencies

This package has a peer dependency of react and react-dom version 18.

Install

In the project directory, you can run npm install idsreslib or yarn add idsreslib to add the resource library to your project.

Usage

The package provides the following exports:

colors

A key value object the keys are the names of the colors and the values are the hex color codes for example:

{
  "Blue": "#0000FF"
}

Usage:

import {colors} from 'idsreslib';

function ColorTable() {
    return Object.entries(colors).map(([color, colorCode]) => <span style={{margin: 10, padding: 20,width: "120px", height: "120px", backgroundColor: colorCode, color: color === "Black" ? "white" : "black", border: "solid 1px black"}}>
        {color}
    </span>);
}

icons

A key value object where the keys are the icon names and the values are React Components wrap an svg icon.

Usage:

import {icons} from 'idsreslib';

function Icons({width, height}) {
    return <div>
        {Object.values(icons).map(([Icon]) => <Icon key={iconName} width={width} height={height}/>)}
    </div>
}

IdsIcon Component

A React Component that accepts an icon prop which is the string name for which icon to display.

Usage in a React Component:

import {IdsIcon} from 'idsreslib';

export default function AardvarkIcon({width, height}) {
    return <IdsIcon icon="Aardvark" width={width} height={height}/>;
}

localizedColors(lang)

A function that you pass a language string then it returns a 2 dimensional array of colors with localized names.

[["Blue", "#0000FF", "Blue"]]

Usage:

import {localizedColors} from 'idsreslib';

function ColorTable() {
    return localizedColors('fr').map(([colorKey, color, colorName]) => <span style={{margin: 10, padding: 20,width: "120px", height: "120px", backgroundColor: color, color: colorKey === "Black" ? "white" : "black", border: "solid 1px black"}}>
        {colorName}
    </span>);
}

localizedIcons(lang)

A function that you pass a language string then it returns a 2 dimensional array of icons with localized names.

Usage:

import {localizedIcons} from 'idsreslib';

function Icons({width, height}) {
    return <div>
        {localizedIcons(en).map(([iconKey, Icon, iconName]) => <Icon key={iconKey} width={width} height={height}/> - {iconName})}
    </div>
}

Full create-react-app Demo Code

Open up a terminal and run the following to test this out using create-react-app:

npx create-react-app myApp
cd myApp
npm install styled-components idsreslib

Then replace App.js and App.css with the contents below using your favourite IDE and run:

npm start

App.js

import './App.css';
import {colors, icons, IdsIcon} from './idsreslib';
import styled from 'styled-components';

//Let's Add French names for the icons
const frenchIconNames = {Aardvark: 'Aardvark', Acorn: 'Bellota', Albatross: 'Albatros', Alligator: 'Alligator', Ant: 'Fourmi', Antelope: 'Antilope', Armadillo: 'Tatou roux', BagSeedling: 'Plántula de Bolsa', Bat: 'Chauve-souris', Bear: 'Ours', Beaver: 'Castor', Bee: 'Abeille', BenchTree: 'Árbol de banco', Binoculars: 'Prismáticos', Boar: 'Sanglier', Buffalo: 'Buffle', Bug: 'Bicho', Bugs: 'Insectos', Bull: 'Taureau', Butterfly: 'Papillon', Cactus: 'Cactus', Camel: 'Chameau', Cardinal: 'Cardinal', Cat: 'Chat', Chestnut: 'Castaña', CloudSun: 'Nube Sol', Clover: 'Trébol', Cougar: 'Cougar', Crow: 'Corbeau', Deer: 'Cerf', Dog: 'Chien', Dolphin: 'Dauphin', Dove: 'Colombe', Dragon: 'Dragon', Dragonfly: 'Libellule', Eagle: 'Aigle', Elephant: 'Éléphant', Elk: 'Elan', Feather: 'Pluma', FeatherPointed: 'Pluma Puntiaguda', Fire: 'Fuego', FireSmoke: 'Humo de Fuego', Fish: 'Poisson', Flamingo: 'Flamant rose', Flower: 'Flor', FlowerDaffodil: 'Flor Narciso', FlowerTulip: 'Flor Tulipán', Fox: 'Renard', Frog: 'Grenouille', Gazelle: 'Gazelle', Giraffe: 'Girafe', Goat: 'Chèvre', Goose: 'Oie', Grasshopper: 'Sauterelle', Heron: 'Héron', Hippopotamus: 'Hippopotame', Horse: 'Cheval', HouseTree: 'Árbol de la Casa', Hummingbird: 'Colibri', Icicles: 'Carámbanos', Jellyfish: 'Méduse', Kiwi: 'Kiwi', Koala: 'Koala', Ladybug: 'Coccinelle', Leaf: 'Hoja', LeafMaple: 'Hoja de Arce', LeafOak: 'Roble Hoja', Lion: 'Lion', Lizard: 'Lézard', Llama: 'Llama', Lobster: 'Homard', Locust: 'Langosta', Loon: 'Loon', Manta: 'Manta', Monkey: 'Singe', Moose: 'Orignal', Mosquito: 'Moustique', Mound: 'Montículo', Mountain: 'Montaña', Mountains: 'Montañas', Mouse: 'Souris', Mushroom: 'Champiñón', Narwhal: 'Narval', Octopus: 'Pieuvre', Otter: 'Loutre', Owl: 'Hibou', Panda: 'Panda', Peacock: 'Paon', Pelican: 'Pélican', Penguin: 'Pingouin', PersonHiking: 'Persona Caminando', Pompebled: 'Pompeble', Porcupine: 'Porc-épic', Pterodactyl: 'Ptérodactyle', Rabbit: 'Lapin', Raccoon: 'Raton laveur', Raindrops: 'Gotas de lluvia', Ram: 'Bélier', Rhinoceros: 'Rhinocéros', Rooster: 'Coq', Seahorse: 'Hippocampe', Seal: 'Phoque', Seedling: 'Planta de semillero', Shark: 'Requin', Sheep: 'Mouton', SignsPost: 'Publicación de señales', Snail: 'Escargot', Snake: 'Serpent', Spider: 'Araignée', SpiderBlackWidow: 'Araña Viuda Negra', SpiderWeb: 'Telaraña', Squirrel: 'Écureuil', Stegosaurus: 'Stegosaurus', Swan: 'Cygne', Tiger: 'Tigre', TreeDeciduous: 'Árbol caducifolio', TreeLarge: 'Árbol grande', TreePalm: 'Palmera de arbol', Triceratops: 'Triceratops', Trillium: 'Trilio', Turkey: 'Dinde', Turtle: 'Tortue', Tyrannosaurus: 'Tyrannosaure', Unicorn: 'Licorne', Volcano: 'Volcán', Vulture: 'Vautour', Water: 'Agua', Wave: 'La onda', Whale: 'Baleine', Wind: 'Viento', Wolf: 'Loup', Woodpecker: 'Pivert', Worm: 'Gusano'};

//You can use a styled-components pattern to color icons
const ColoredIcon = styled(IdsIcon)`
 path {
   fill: ${(props) => props.color}
 }
`;

//A nice function to split an array into chunks by Fernando Leal from https://stackoverflow.com/a/71483760
function splitChunks(sourceArray, chunkSize) {
    if (chunkSize <= 0)
        throw new Error("chunkSize must be greater than 0");
    let result = [];
    for (let i = 0; i < sourceArray.length; i += chunkSize) {
        result[i / chunkSize] = sourceArray.slice(i, i + chunkSize);
    }
    return result;
}

function App() {
    return (
        <div className="App">
            <h1>Create React App Demo of the IDS Resource Library (idsreslib)</h1>
            <div>
                To test the <strong>idsreslib</strong> project Open a terminal to run the following commands:
                <ol>
                    <li>`npx create-react-app myApp` to setup a react app more info can be found at <a href="https://create-react-app.dev/">https://create-react-app.dev</a>.</li>
                    <li>`cd myApp`</li>
                    <li>`npm install styled-components idsreslib` to install styled components and the IDS Resource Library</li>
                    <li>replace App.js with the contents of this file in your favourite IDE</li>
                    <li>`npm start`</li>
                </ol>
            </div>
            <h1>Colours</h1>
            <br/>
            <br/>
            <ColorTree colors={colors}/>
            <br/>
            <br/>
            <h1>Icon Table</h1>
            <IconTable icons={icons}/>
            <h1>Icon Table French</h1>
            <IconTableFrench icons={icons}/>
            <h1>Icons Green</h1>
            <IconTree icons={icons} className={"green"}/>
            <h1>Icons Red</h1>
            <IconTree icons={icons} className={"red"}/>
            <h1>Icon Rainbow</h1>
            <IconRainbow icon={"Aardvark"} colors={colors} className={"white"}/>
        </div>
    );
}

function ColorTree({colors}) {
    return Object.entries(colors).map(([color, colorCode]) => <span
        style={{margin: 10, padding: 20,width: "120px", height: "120px", backgroundColor: colorCode, color: color === "Black" ? "white" : "black", border: "solid 1px black"}}>{color}</span>);
}

function IconRainbow({icon, colors}) {
    return Object.values(colors).map(colorCode => <ColoredIcon icon={icon} color={colorCode} width="50" height="50"/>);
}

function IconTree({icons, className}) {
    return <div>
        {Object.entries(icons).map(([iconName, Icon]) => <Icon key={iconName} class={className} width="50" height="50" alt={iconName}/>)}
    </div>
}

function IconTable({icons, className}) {
    const rows = splitChunks(Object.entries(icons), 18);
    return <table align="center">
        {rows.map((columns, rowIdx) => <tr key={rowIdx}>{columns.map(([iconName, Icon]) => <td key={iconName}>
            <div><Icon class={className} width="70" height="70" alt={iconName}/></div>
            <div>{iconName}</div>
        </td>)}</tr>)}
    </table>
}

function IconTableFrench({icons, className}) {
    const rows = splitChunks(Object.entries(icons), 18);
    return <table align="center">
        {rows.map((columns, rowIdx) => <tr key={rowIdx}>{columns.map(([iconName, Icon]) => <td key={iconName}>
            <div><Icon class={className} width="70" height="70" alt={iconName}/></div>
            <div>{frenchIconNames[iconName]}</div>
        </td>)}</tr>)}
    </table>
}

export default App;

App.css

body {
  font-family: Roboto,Verdana,Geneva,Arial,Helvetica,sans-serif;
  font-size: 12pt;
  font-weight: normal;
  height: auto;
}


.App {
  text-align: center;
  width: 100%;
}

.App-logo {
  height: 40vmin;
  pointer-events: none;
}

@media (prefers-reduced-motion: no-preference) {
  .App-logo {
    animation: App-logo-spin infinite 20s linear;
  }
}

.App-header {
  background-color: #fefefe;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  font-size: calc(10px + 2vmin);
  color: black;
}

.App-link {
  color: #61dafb;
}

.green > path{
  fill: green;
}

.red > path{
  fill: red;
}

.white > path{
  fill: white;
}

.white {
  background-color: black;
  border: 1px solid black;
}

@keyframes App-logo-spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}