tigran tumasov

Tabs

Navigation 61

About

Display tab content.

Built with React and Tailwind. Copy the prompt and paste it into Claude Code, Cursor or Lovable: your agent adds Tabs to your project and fits it to your theme.

Code

How Tabs is used: the demo's code. The component's own source comes with a free account.

Usage.tsx

import React, { useState } from "react";
import { ITab, Tabs } from "@/components/ui/tabs";

const defaultTabs: ITab[] = [
  {
    title: "Apple",
    value: "apple"
  },
  {
    title: "Orange",
    value: "orange"
  },
  {
    title: "Mango",
    value: "mango"
  }
];

const disabledTabs: ITab[] = [
  {
    title: "Apple",
    value: "apple"
  },
  {
    title: "Orange",
    value: "orange"
  },
  {
    title: "Disabled",
    value: "disabled",
    disabled: true,
    tooltip: "Disabled tooltip",
  }
];

const iconsTabs: ITab[] = [
  {
    title: "Apple",
    value: "apple",
    icon: "https://cdn.21st.dev/assets/mirror/28/286b2938187a687f9037f702567f0dd21520e8c2a5714d3a05ebe29f287fe67d.svg"
  },
  {
    value: "orange",
    icon: "https://cdn.21st.dev/assets/mirror/a3/a30ce6838444147cc2dc36616bd40aae76d05c222a2a70cb23175787b2315d13.svg"
  },
  {
    title: "Mango",
    value: "mango"
  }
];

export const Default = () => {
  const [selected1, setSelected1] = useState<string>("apple");

  return (
    <div className="flex flex-col gap-2">
      <div className="font-bold text-xl dark:text-white">Default</div>
      <Tabs selected={selected1} setSelected={setSelected1} tabs={defaultTabs} />
    </div>
  );
};

export const Disabled = () => {
  const [selected2, setSelected2] = useState<string>("apple");

  return (
    <div className="flex flex-col gap-2">
      <div className="font-bold text-xl dark:text-white">Disabled</div>
      <Tabs selected={selected2} setSelected={setSelected2} tabs={defaultTabs} disabled />
    </div>
  );
};

export const DisableSpecificTabs = () => {
  const [selected3, setSelected3] = useState<string>("apple");

  return (
    <div className="flex flex-col gap-2">
      <div className="font-bold text-xl dark:text-white">Disable specific tabs</div>
      <Tabs selected={selected3} setSelected={setSelected3} tabs={disabledTabs} />
    </div>
  );
};

export const WithIcons = () => {
  const [selected4, setSelected4] = useState<string>("apple");

  return (
    <div className="flex flex-col gap-2">
      <div className="font-bold text-xl dark:text-white">With icons</div>
      <Tabs selected={selected4} setSelected={setSelected4} tabs={iconsTabs} />
    </div>
  );
};

export const Secondary = () => {
  const [selected5, setSelected5] = useState<string>("apple");

  return (
    <div className="flex flex-col gap-2">
      <div className="font-bold text-xl dark:text-white">Secondary</div>
      <Tabs
        selected={selected5}
        setSelected={setSelected5}
        tabs={disabledTabs}
        variant="secondary"
      />
    </div>
  );
};

More by tigran tumasov

View all
  • Product Hunt Badge

    Product Hunt Badge

    1.8K
  • Book

    Book

    162
  • Calendar

    Calendar

    152
  • Theme Switcher

    Theme Switcher

    135
  • Snippet

    Snippet

    124
  • Table

    Table

    123
  • Toggle

    Toggle

    89
  • Feedback

    Feedback

    88

More in Navigation

View all
  • Sidebar

    Sidebar

    231
  • Tabs

    Tabs

    60
  • Progress Bar Stepper

    Progress Bar Stepper

    36
  • Newsletter Signup Footer

    Newsletter Signup Footer

    15
  • Footer 2

    Footer 2

    200
  • Navbar with Theme Toggle

    Navbar with Theme Toggle

    43
  • Numberless Pagination with Text

    Numberless Pagination with Text

    11
  • Navbar

    Navbar

    71