For the complete documentation index, see llms.txt. Markdown variants are available by appending .md to any URL or sending an Accept: text/markdown header. An agent skill is available at /.well-known/agent-skills/site-skill.md.
/
3
Sponsor

Segmented Control

A segmented control for switching between views.

Import

use maccn::{MacSegment, MacSegmentedControl};

Usage

MacSegmentedControl::new("view-toggle")
    .child(MacSegment::new("list").selected(true).child("List"))
    .child(MacSegment::new("grid").child("Grid"))
    .child(MacSegment::new("columns").child("Columns"));

Multiple

use maccn::{MacSegment, MacSegmentedControl};
 
MacSegmentedControl::new("segmented-multiple")
    .w(px(220.))
    .child(
        MacSegment::new("seg-m-0")
            .selected(selected.contains(&0))
            .child("B")
            .on_click({ ... }),
    )
    .child(
        MacSegment::new("seg-m-1")
            .selected(selected.contains(&1))
            .child("I")
            .on_click({ ... }),
    )
    .child(
        MacSegment::new("seg-m-2")
            .selected(selected.contains(&2))
            .child("U")
            .on_click({ ... }),
    )

Sizes

use gpui::div;
use maccn::{MacControlSize, MacSegment, MacSegmentedControl};
 
div()
    .flex()
    .items_center()
    .gap_2()
    .child(
        MacSegmentedControl::new("segmented-xl")
            .size(MacControlSize::ExtraLarge)
            .w(px(320.))
            .child(MacSegment::new("seg-xl-0").selected(true).child("Left"))
            .child(MacSegment::new("seg-xl-1").child("Right")),
    )
    .child(
        MacSegmentedControl::new("segmented-m")
            .size(MacControlSize::Mini)
            .w(px(140.))
            .child(MacSegment::new("seg-m-0").selected(true).child("On"))
            .child(MacSegment::new("seg-m-1").child("Off")),
    )

Disabled

use gpui::div;
use maccn::{MacSegment, MacSegmentedControl};
 
div()
    .flex()
    .flex_col()
    .gap_2()
    .child(
        MacSegmentedControl::new("segmented-d")
            .w(px(220.))
            .disabled(true)
            .child(MacSegment::new("seg-d-0").selected(true).child("On"))
            .child(MacSegment::new("seg-d-1").child("Off")),
    )

API

MacSegmentedControl Props

PropTypeDefault
sizeMacControlSizeRegular
disabledboolfalse

MacSegment Props

PropTypeDefault
selectedboolfalse
sizeMacControlSizeRegular
disabledboolfalse

Events

EventPayload
on_click(&ClickEvent, &mut Window, &mut App)