Kumo Svelte
  • Home
  • Installation
  • Colors
  • Accessibility
  • Changelog
  • Autocomplete
  • Badge
  • Banner
  • Breadcrumbs
  • Button
  • Checkbox
  • Clipboard Text
  • Cloudflare Logo
  • CodeHighlighted
  • Collapsible
  • Combobox
  • Command Palette
  • Date Picker
  • Dialog
  • Dropdown
  • Empty
  • Flow
  • Grid
  • Input
  • InputArea
  • InputGroup
  • Label
  • Layer Card
  • Link
  • Loader
  • MenuBar
  • Meter
  • Pagination
  • Popover
  • Radio
  • Select
  • Sensitive Input
  • Sidebar
  • Skeleton Line
  • Switch
  • Table
  • Table of Contents
  • Tabs
  • Text
  • Toast
  • Toolbar
  • Tooltip
  • Charts
  • Colors
  • Timeseries
  • Maps
  • Sankey
  • Custom Chart
  • Page Header
  • Resource List
  • Delete Resource
MenuBar
kumo-svelte

MenuBar

A horizontal menu bar with icon buttons, commonly used for text editors or toolbars.

<script lang="ts">
  import TextBIcon from "phosphor-svelte/lib/TextBIcon";
  import TextItalicIcon from "phosphor-svelte/lib/TextItalicIcon";
  import { MenuBar } from "kumo-svelte/components/menubar";
  let active = $state<string | undefined>("bold");

</script>

{#snippet boldIcon()}
  <TextBIcon />
{/snippet}

{#snippet italicIcon()}
  <TextItalicIcon />
{/snippet}

<MenuBar
  isActive={active}
  optionIds
  options={[
    {
      icon: boldIcon,
      id: "bold",
      tooltip: "Bold",
      onSelect: () => {
        active = active === "bold" ? undefined : "bold";
      },
    },
    {
      icon: italicIcon,
      id: "italic",
      tooltip: "Italic",
      onSelect: () => {
        active = active === "italic" ? undefined : "italic";
      },
    },
  ]}
/>

Import

import { MenuBar } from "kumo-svelte/components/menubar";

Usage

<script lang="ts">
  import TextBIcon from "phosphor-svelte/lib/TextBIcon";
  import { MenuBar } from "kumo-svelte/components/menubar";
  let active = $state<string | undefined>("bold");
</script>

{#snippet boldIcon()}
  <TextBIcon />
{/snippet}

<MenuBar
  isActive={active}
  optionIds
  options={[
    {
      icon: boldIcon,
      id: "bold",
      tooltip: "Bold",
      onSelect: () => {
        active = active === "bold" ? undefined : "bold";
      },
    },
  ]}
/>

Examples

Text Formatting

<script lang="ts">
  import TextBIcon from "phosphor-svelte/lib/TextBIcon";
  import TextItalicIcon from "phosphor-svelte/lib/TextItalicIcon";
  import { MenuBar } from "kumo-svelte/components/menubar";
  let active = $state<string | undefined>("bold");

</script>

{#snippet boldIcon()}
  <TextBIcon />
{/snippet}

{#snippet italicIcon()}
  <TextItalicIcon />
{/snippet}

<MenuBar
  isActive={active}
  optionIds
  options={[
    {
      icon: boldIcon,
      id: "bold",
      tooltip: "Bold",
      onSelect: () => {
        active = active === "bold" ? undefined : "bold";
      },
    },
    {
      icon: italicIcon,
      id: "italic",
      tooltip: "Italic",
      onSelect: () => {
        active = active === "italic" ? undefined : "italic";
      },
    },
  ]}
/>

Without Active State

<script lang="ts">
  import TextBIcon from "phosphor-svelte/lib/TextBIcon";
  import TextItalicIcon from "phosphor-svelte/lib/TextItalicIcon";
  import { MenuBar } from "kumo-svelte/components/menubar";
  let active = $state<string | undefined>();

</script>

{#snippet boldIcon()}
  <TextBIcon />
{/snippet}

{#snippet italicIcon()}
  <TextItalicIcon />
{/snippet}

<MenuBar
  isActive={active}
  optionIds
  options={[
    {
      icon: boldIcon,
      id: "bold",
      tooltip: "Bold",
      onSelect: () => {
        active = active === "bold" ? undefined : "bold";
      },
    },
    {
      icon: italicIcon,
      id: "italic",
      tooltip: "Italic",
      onSelect: () => {
        active = active === "italic" ? undefined : "italic";
      },
    },
  ]}
/>

API Reference

MenuBar

PropTypeDefault
classstring—
isActive*number | boolean | string | undefined—
optionIdsbooleanfalse
options*MenuBarOption[]—

Accessibility

MenuBar uses Bits UI’s Toolbar primitive. Each option button receives an aria-label from tooltip and an aria-pressed state based on isActive.

On this page

  • Import
  • Usage
  • Examples
    • Text Formatting
    • Without Active State
  • API Reference
    • MenuBar
  • Accessibility