MynaUI
No results found.
Theme
Toggle Theme (Dark)
Documentation
Getting Started
Design System
Changelog
FAQ
Legal
Icons
Elements
Accordion
Alert Dialog
Alert
Avatar Groups
Avatar
Badge
Breadcrumb
Button Groups
Button
Calendar
Combobox
Command
Context Menu
Data Table
Dialog
Drawer
Dropdown Menu
Menubar
Pagination
Popover
Progress
Rating
Sheet
Skeleton
Spinner
Table
Tabs
Toast
Toggle and Toggle Group
Tooltip
Forms
Checkbox
Date Picker
Input OTP
Input
Radio
Select
Slider
Switch
Textarea
Marketing
404
Banners
Blog List
Blog Post
Call to Action
Cookies
FAQ
Features
Footer
Header
Hero
Newsletters
Statistics
Testimonial Logos
Application
App Headers
App Sheets
Application Dialogs
Card Headers
Cards
Containers
Dividers
Empty States
Forgot Password
Login
Notifications
Registration
Section Headers
Documentation
  • Getting Started
  • Copybook New
  • Design System
  • Icons
  • Changelog
  • Legal
  • Figma
  • Request Components
  • Request Icons
Elements
  • Accordion
  • Alert Dialog
  • Alert
  • Avatar Groups
  • Avatar
  • Badge
  • Breadcrumb
  • Button Groups
  • Button
  • Calendar
  • Combobox
  • Command
  • Context Menu
  • Data Table
  • Dialog
  • Drawer
  • Dropdown Menu
  • Menubar
  • Pagination
  • Popover
  • Progress
  • Rating
  • Sheet
  • Skeleton
  • Spinner
  • Table
  • Tabs
  • Toast
  • Toggle and Toggle Group
  • Tooltip
Forms
  • Checkbox
  • Date Picker
  • Input OTP
  • Input
  • Radio
  • Select
  • Slider
  • Switch
  • Textarea
Marketing
  • 404
  • Banners
  • Blog List
  • Blog Post
  • Call to Action
  • Cookies
  • FAQ
  • Features
  • Footer
  • Header
  • Hero
  • Newsletters
  • Statistics
  • Testimonial Logos
Application
  • App Headers
  • App Sheets
  • Application Dialogs
  • Card Headers
  • Cards
  • Containers
  • Dividers
  • Empty States
  • Forgot Password
  • Login
  • Notifications
  • Registration
  • Section Headers
Newsletter

Get the latest news and updates from MynaUI

Subscribe for Updates

Button Groups

Button groups are used to group related buttons together.

import { Button } from "@/components/ui/button";

export default function Basic() {
  return (
    <>
      <div className="isolate flex -space-x-px">
        <Button variant="outline" className="rounded-r-none focus:z-10">
          Prev
        </Button>
        <Button variant="outline" className="rounded-l-none focus:z-10">
          Next
        </Button>
      </div>
      <div className="isolate flex -space-x-px">
        <Button variant="outline" className="rounded-r-none focus:z-10">
          Prev
        </Button>
        <Button variant="outline" className="rounded-none focus:z-10">
          Now
        </Button>
        <Button variant="outline" className="rounded-l-none focus:z-10">
          Next
        </Button>
      </div>
    </>
  );
}
import { Button } from "@/components/ui/button";
import { ChevronDown } from "@mynaui/icons-react";

export default function SplitButton() {
  return (
    <div className="flex -space-x-px">
      <Button variant="outline" className="rounded-r-none">
        Send Now
      </Button>
      <Button variant="outline" className="rounded-l-none">
        <ChevronDown className="size-4" />
      </Button>
    </div>
  );
}
import { Button } from "@/components/ui/button";
import {
  ChevronLeft,
  ChevronRight,
  TextAlignCenter,
  TextAlignLeft,
  TextAlignRight,
} from "@mynaui/icons-react";

export default function SharedBorder() {
  return (
    <>
      <div className="relative z-0 flex space-x-0.5 rounded border border-border p-1">
        <Button>
          <ChevronLeft className="size-5" />
        </Button>
        <Button variant="ghost">
          <ChevronRight className="size-5" />
        </Button>
      </div>
      <div className="relative z-0 flex space-x-0.5 rounded border border-border p-1">
        <Button>
          <TextAlignLeft className="size-5" />
        </Button>
        <Button variant="ghost">
          <TextAlignCenter className="size-5" />
        </Button>
        <Button variant="ghost">
          <TextAlignRight className="size-5" />
        </Button>
      </div>
    </>
  );
}
import { Button } from "@/components/ui/button";
import { BrandFacebook, BrandGithub, BrandGoogle } from "@mynaui/icons-react";

export default function ButtonGroups4() {
  return (
    <>
      <div className="isolate flex gap-2">
        <Button variant="outline">
          <BrandGoogle className="stroke-2" />
          Google
        </Button>
        <Button variant="outline">
          <BrandFacebook className="stroke-2" />
          Facebook
        </Button>
        <Button variant="outline">
          <BrandGithub className="stroke-2" />
          GitHub
        </Button>
      </div>
    </>
  );
}
"use client";

import { useState } from "react";
import { Button } from "@/components/ui/button";
import {
  DropdownMenu,
  DropdownMenuContent,
  DropdownMenuItem,
  DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
import { Badge } from "@/components/ui/badge";
import { ChevronDown, Eye, GitBranch, Star } from "@mynaui/icons-react";
import { Pin } from "@mynaui/icons-react";

export default function ButtonGroups5() {
  const [watchCount, setWatchCount] = useState(1);
  const [starCount, setStarCount] = useState(8);
  const [isPinned, setIsPinned] = useState(false);
  const [isWatching, setIsWatching] = useState(false);
  const [isStarred, setIsStarred] = useState(false);

  const handlePin = () => {
    setIsPinned(!isPinned);
  };

  const handleWatch = () => {
    if (!isWatching) {
      setWatchCount(watchCount + 1);
    } else {
      setWatchCount(Math.max(0, watchCount - 1));
    }
    setIsWatching(!isWatching);
  };

  const handleStar = () => {
    if (!isStarred) {
      setStarCount(starCount + 1);
    } else {
      setStarCount(Math.max(0, starCount - 1));
    }
    setIsStarred(!isStarred);
  };

  return (
    <div className="flex flex-wrap gap-2 p-4">
      <Button
        onClick={handlePin}
        variant={isPinned ? "default" : "outline"}
        className="flex items-center gap-2 h-9 px-4"
      >
        <Pin className="size-4 stroke-2" />
        <span>Pin</span>
      </Button>

      <div className="flex">
        <Button
          onClick={handleWatch}
          variant={isWatching ? "default" : "outline"}
          className="flex items-center gap-2 h-9 px-4 rounded-r-none border-r-0"
        >
          <Eye className="size-4 stroke-2" />
          <span>Watch</span>
          <Badge
            variant={isWatching ? "secondary" : "outline"}
            className="font-mono -me-1"
          >
            {watchCount}
          </Badge>
        </Button>
        <DropdownMenu>
          <DropdownMenuTrigger asChild>
            <Button variant="outline" className="h-9 px-2 rounded-l-none">
              <ChevronDown className="size-4 stroke-2" />
            </Button>
          </DropdownMenuTrigger>
          <DropdownMenuContent align="end">
            <DropdownMenuItem>Participating</DropdownMenuItem>
            <DropdownMenuItem>All Activity</DropdownMenuItem>
            <DropdownMenuItem>Ignore</DropdownMenuItem>
            <DropdownMenuItem>Custom</DropdownMenuItem>
          </DropdownMenuContent>
        </DropdownMenu>
      </div>

      <div className="flex">
        <Button
          variant="outline"
          className="flex items-center gap-2 h-9 px-4 rounded-r-none border-r-0"
        >
          <GitBranch className="size-4 stroke-2" />
          <span>Fork</span>
          <Badge
            variant="outline"
            className="font-mono -me-1"
          >
            14
          </Badge>
        </Button>
        <DropdownMenu>
          <DropdownMenuTrigger asChild>
            <Button variant="outline" className="h-9 px-2 rounded-l-none">
              <ChevronDown className="size-4 stroke-2" />
            </Button>
          </DropdownMenuTrigger>
          <DropdownMenuContent align="end">
            <DropdownMenuItem>Create a new fork</DropdownMenuItem>
          </DropdownMenuContent>
        </DropdownMenu>
      </div>

      <div className="flex">
        <Button
          onClick={handleStar}
          variant={isStarred ? "default" : "outline"}
          className="flex items-center gap-2 h-9 px-4 rounded-r-none border-r-0"
        >
          <Star
            className="size-4 stroke-2"
            fill={isStarred ? "currentColor" : "none"}
          />
          <span>Starred</span>
          <Badge
            variant={isStarred ? "secondary" : "outline"}
            className="font-mono -me-1"
          >
            {starCount}
          </Badge>
        </Button>
        <DropdownMenu>
          <DropdownMenuTrigger asChild>
            <Button variant="outline" className="h-9 px-2 rounded-l-none">
              <ChevronDown className="size-4 stroke-2" />
            </Button>
          </DropdownMenuTrigger>
          <DropdownMenuContent align="end">
            <DropdownMenuItem>Set repository to public</DropdownMenuItem>
            <DropdownMenuItem>Add to list</DropdownMenuItem>
          </DropdownMenuContent>
        </DropdownMenu>
      </div>
    </div>
  );
}

Not affiliated with Figma, TailwindCSS or shadcn/ui.

X (Twitter) Logo Dribbble Logo Figma Logo