8000 GitHub - alessio-libardi/tabs: React tabs with hooks
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
This repository was archived by the owner on May 21, 2022. It is now read-only.

alessio-libardi/tabs

 
 

Repository files navigation

@bumaga/tabs

Headless tabs component for React

Features

  • 📦 super small, 381 B vs 3.5kB react-tabs
  • 🚫 no styles, just logic. Style what you want, as you want
  • 🎣 components and hooks API

Install

npm install @bumaga/tabs
yarn add @bumaga/tabs

Usage

With components

import React from 'react'
import { Tabs, Tab, Panel } from '@bumaga/tabs' 

export default () => (
  <Tabs>
    <div>
      <Tab><button>Tab 1</button></Tab>
      <Tab><button>Tab 2</button></Tab>
      <Tab><button>Tab 3</button></Tab>
    </div>

    <Panel><p>Panel 1</p></Panel>
    <Panel><p>Panel 2</p></Panel>
    <Panel><p>panel 3</p></Panel>
  </Tabs>
);

With hooks

import React from "react";
import { Tabs, useTabState, usePanelState } from "@bumaga/tabs";

const Tab = ({ children }) => {
  const { onClick } = useTabState(children);

  return <button onClick={onClick}>{children}</button>;
};

const Panel = ({ children }) => {
  const isActive = usePanelState(children);

  return isActive ? <p>{children}</p> : null;
};

export default () => (
  <Tabs>
    <div>
      <Tab>Tab 1</Tab>
      <Tab>Tab 2</Tab>
    </div>

    <Panel>Panel 1</Panel>
    <Panel>Panel 2</Panel>
  </Tabs>
);

About

React tabs with hooks

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 85.0%
  • CSS 14.1%
  • HTML 0.9%
0