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

@slup/tabs

v0.5.1

Published

Tabs, Tab and wrappers built upon Inferno with the Slup framework

Downloads

3

Readme

This package contains the Tabs, a Material Design Component which is part of a bigger ecosystem called Slup

Description

From Google's Material Design guidelines:

Installation

This package can be installed with NPM

npm install --save @slup/tabs

Usage

import { Tabs, Tab } from '@slup/tabs'

export class Test extends Component {
  tabs = [
    'item one',
    'item two',
    'item three'
  ]

  state = { selected: 0 }

  handleClick(i) {
    this.setState({ selected: i })
  }

  render() {
    return (
      <Tabs selected={this.state.selected}>
        {this.tabs.map((item, i) => {
          return (
            <Tab
              onClick={() => this.handleClick(i)}
              selected={this.state.selected === i}
            >
              {item}
            </Tab>
          )
        })}
      </Tabs>
    )
  }
}

Icons inside tabs

This example shows how to use the TabIcon component to make tabs contain an icon

import { Tabs, Tab, TabIcon } from '@slup/tabs'

export class Home extends Component {
  tabs = [
    <RandomIcon />,
    <RandomIcon />,
    <RandomIcon />
  ]

  state = { selected: 0 }

  handleClick(i) {
    this.setState({ selected: i })
  }

  render() {
    return (
      <Tabs selected={this.state.selected}>
        {this.tabs.map((item, i) => {
          return (
            <Tab
              onClick={() => this.handleClick(i)}
              selected={this.state.selected === i}
            >
              <TabIcon>
                {item}
              </TabIcon>
            </Tab>
          )
        })}
      </Tabs>
    )
  }
}

You can also add text, if needed, just put it inside a span under the TabIcon


<Tab
  onClick={() => this.handleClick(i)}
  selected={this.state.selected === i}
>
  <TabIcon>
    {item.icon}
  </TabIcon>
  <span>{item.text}</span>
</Tab>

Available properties

| Props | Type | Default | Documentation | |------------- |:-------------:|:-------------:|------: | | selected | number | 0 | Link | | onClick | function | none | Link | | center | boolean | false | Link | | primary | boolean | false | Link | | secondaryIndicator | boolean | false | Link | | scrollable | boolean | false | Link | | fit | boolean | false | Link | | secondary | boolean | false | Link |

Property: 'selected'

This property has to be applied to the Tabs and to the Tab itself to choose which item should be selected by default

Property: 'onClick'

This property has to be applied to each Tab to make it be interactive

Property: 'center' [Tabs]

Note: DO NOT use this prop while using the 'scrollable' one

This property will center each tab

<Tabs selected={this.state.selected} center></Tabs>

Property: 'primary' [Tabs]

This property will set the background of the tabs to be as the primary color of the theme

<Tabs selected={this.state.selected} primary></Tabs>

Property: 'secondaryIndicator' [Tabs]

This property will set the background of the indicator to be as the secondary color of the theme

<Tabs selected={this.state.selected} secondaryIndicator></Tabs>

Property: 'scrollable' [Tabs]

Note: DO NOT use this prop while using the 'center' one

This property will makes the tabs scrollable by using two buttons instead of the normal scrollbar in a large viewport but on mobile it will still be scrollable even without using buttons

<Tabs selected={this.state.selected} scrollable></Tabs>

Property: 'fit' [Tabs]

This property will change the width of each item to fill the entire width of the viewport

<Tabs selected={this.state.selected} fit></Tabs>

Property: 'secondary' [Tab]

This property will set the color of the selected item to be as the secondary color of the theme

<Tab secondary></Tab>