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

ts-dicos

v1.0.1

Published

TypeScript icons from dicos

Downloads

3

Readme

View Icons

styled-icons provides the Font Awesome, Feather, Icomoon, Material Design, Octicons, Typicons, Crypto Icons, Evil Icons, and Boxicons icon packs as Styled Components, with full support for TypeScript types and tree-shaking / ES modules.


Table of Contents

Installation

yarn add styled-icons

or

npm install styled-icons --save

Additionally, you will need to have installed a version of styled-components at least version 4.1.0 or newer, as styled-icons depends on styled-components as a peer dependency.

Usage

All Font Awesome (free), Feather, Material, and Octicon icons are available for preview at the Icon Explorer.

The entire icon packs are available via the main import and sub-imports:

import {material, octicons} from 'styled-icons'

import * as boxiconsLogos from 'styled-icons/boxicons-logos'
import * as boxiconsRegular from 'styled-icons/boxicons-regular'
import * as boxiconsSolid from 'styled-icons/boxicons-solid'
import * as crypto from 'styled-icons/crypto'
import * as evil from 'styled-icons/evil'
import * as faBrands from 'styled-icons/fa-brands'
import * as faRegular from 'styled-icons/fa-regular'
import * as faSolid from 'styled-icons/fa-solid'
import * as feather from 'styled-icons/feather'
import * as icomoon from 'styled-icons/icomoon'
import * as material from 'styled-icons/material'
import * as octicons from 'styled-icons/octicons'
import * as typicons from 'styled-icons/typicons'

The icons are also available as individual imports - it is recommended that you import icons individually using ES modules along with a module bundler like Webpack or Rollup in order to enable tree-shaking. This means that the module bundler will remove unused icons from the final JavaScript bundle, saving bandwidth and speeding up loading:

import React, {Fragment} from 'react'
import {AccountCircle, Lock} from 'styled-icons/material'

const App = () => (
  <Fragment>
    <AccountCircle />
    <Lock />
  </Fragment>
)

Props

Styled Icons accept all the valid props of an <svg /> element, in addition to the following custom props:

| Prop | Required | Type | Description | | ------- | -------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | size | optional | string, number | This is a convenience for setting both width and height to the same value | | title | optional | string | This sets the icon title and enables the standalone icon accessability mode. See accessibility below for additional details |

Example

import React from 'react'
import {Lock} from 'styled-icons/material'

const App = () => <Lock size="48" title="Unlock account" />

Icon Dimensions

Some icons natively have non-square dimensions - original dimensions are exported from the individual icon exports:

import {LogoGithub, LogoGithubDimensions} from 'styled-icons/octicons/LogoGithub'

const App = () => <LogoGithub />

console.log(LogoGithubDimension) // {height: 16, width: 45}

Dimension exports are not available on the icon pack or index exports:

import * as octicons from 'styled-icons/octicons'
import {octicons} from 'styled-icons'

// octicons contains only icon exports

Styled Components

All icons are exported as Styled Components, which means it is possible to utilize the Styled Components API:

import styled from 'styled-components'
import {Lock} from 'styled-icons/material'

export const RedLock = styled(Lock)`
  color: red;

  font-weight: ${props => (props.important ? 'bold' : 'normal')};
`

Accessibility

Styled Icons have two different built-in "modes" for accessibility purposes. By default, icons are considered decorative, meaning the icon is just visual sugar and the surrounding content is sufficient for conveying meaning. This will set the aria-hidden attribute on the resulting HTML to hide the icon from screen readers.

// this icon
<Lock />

// will result in
<svg aria-hidden="true">...</svg>

Alternatively the icon could be used in standalone mode, meaning the icon itself should convey meaning. This mode is enabled by setting a title prop - this is the text that will be read by a screen reader. This results in role being set to img and the addition of a <title> element.

// this icon
<Lock title="Lock account" />

// will result in
<svg role="img"><title>Lock account</title> ...</svg>

Since Style Icons accept all <svg> element attributes as props, you are free to override these aria-* attributes if you have a more complex use-case.

As this library provides direct access to the <svg> element, you may wish to further wrap the icon for additional semantic meaning. For example, for a loading spinner:

import styled from 'styled-components'
import {Spinner} from 'styled-icons/fa-solid/Spinner'

const VisuallyHidden = styled.span`
  border: 0 !important;
  clip: rect(1px, 1px, 1px, 1px) !important;
  height: 1px !important;
  overflow: hidden !important;
  padding-top: 0 !important;
  padding-right: 0 !important;
  padding-bottom: 0 !important;
  padding-left: 0 !important;
  position: absolute !important;
  white-space: nowrap !important;
  width: 1px !important;
`

<span title="Loading posts..." role="alert" aria-live="assertive">
  <Spinner />
  <VisuallyHidden>Loading posts...</VisuallyHidden>
</span>

Tree Shaking

Styled Icons supports automatic tree-shaking via the package.json module property from any of the import paths (icon pack, individual icon, etc.). Tree shaking has been tested with Create React App v2, Next.js, Rollup, and Webpack v4.

TypeScript

The icons of styled-icons are built using TypeScript and export type definitions. If you need a type to reference any styled icon, there is a StyledIcon type exported from the styled-icons/types import:

import styled from 'styled-components'
import {StyledIcon} from 'styled-icons/types'

interface Props {
  icon: StyledIcon
}

NOTE: you should ensure that the version of @types/react in your project is at least 16.8.14 or greater. That version of the React types package added support for ARIA attributes on SVG elements, which Styled Icons uses.

If you have any ideas for improvements to the TypeScript typing, please open an issue or PR!

Contributing

Contributions are welcome! Feel free to open an issue or a pull request and participate at whatever level you would like.

License

The MIT License - see LICENSE.

The Boxicons are licensed under the CC BY 4.0 License.

The Cryptocurrency icons are licensed under the CC0 1.0 Universal License.

The Evil Icons are licensed under the MIT License.

The Font Awesome icons are licensed under the CC BY 4.0 License.

The Feather icons are licensed under the MIT License.

The Icomoon icons are dual licensed under GPL / CC BY 4.0 License.

The Material Design icons are licensed under the Apache License Version 2.0.

The Octicons are licensed under the MIT License.

The Typicons are licensed under the CC BY SA 3.0 License.

Contributors

Thank you to all our backers! 🙏 [Become a backer]

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]