Widget | Description |
|---|---|
HStack | Horizontal stack. Convenience wrapper around Row with a spacing parameter. |
VStack | Vertical stack. Convenience wrapper around Column with a spacing parameter. |
Center | Centers its child using Align. |
Wrap | Flow layout that wraps children to the next line. Supports row and column directions. |
SplitView | Resizable split pane. Uses flex_grow to divide space by split_ratio. |
Spacer | Re-exported from fission-core. Flexible space that fills available room. |
Divider | A 1px visual separator line. Supports horizontal and vertical orientations. |
Widget | Description |
|---|---|
Modal / ModalLayout | Controlled dialog with retained header, scrolling content, adaptive actions, focus containment, dismissal, and modal semantics. Compact Modal uses ModalAction; retained ModalLayout uses explicit-variant ModalFooterAction values. |
Popover | Anchor-relative popup. Positions content next to a trigger widget using the flyout layout system. |
Tooltip | Hover-activated text label. Appears when the trigger widget is hovered. |
Drawer | Slide-out panel from the left or right edge. Renders as a portal with a dismissible backdrop. |
Toast | Notification message with icon, text, and close button. Supports Info, Success, Warning, and Error kinds. |
Portal | Renders its child into the overlay layer, outside the normal layout tree. |
Widget | Description |
|---|---|
Menu / MenuContent | Themed command surface with retained items, groups, labels, separators, supporting text, and trailing metadata. |
MenuButton / MenuButtonLayout | Controlled anchored menu trigger with popup focus and dismissal behavior. |
MenuItem | Single entry in a Menu: label, optional icon, and on_select action. |
Select / SelectLayout | Controlled fixed-choice field with retained trigger and list-box anatomy. |
DropDown | Simplified dropdown trigger button. |
Combobox / ComboboxLayout | Editable choice field with retained input and list-box anatomy. |
SegmentedControl | Horizontal row of toggle buttons. Only one option is active at a time. |
Widget | Description |
|---|---|
Tabs / TabsLayout | Controlled semantic tab list, retained triggers, and related panel content. |
Accordion / AccordionItem | Collapsible sections. Each item has a toggle header and expandable content body. |
Widget | Description |
|---|---|
Badge | Small colored label, typically used for counts or status. |
Tag | Pill-shaped label with an optional close button. |
Card / CardLayout | Design-system surface with compact or retained header, content, and footer anatomy. |
Avatar | Circular user avatar. Displays an image when src is provided, or initials derived from name. |
EmptyState | Centered placeholder with icon, title, description, and an optional action button. |
Icon | Re-exported from fission-core. Renders an SVG icon from a string. |
Widget | Description |
|---|---|
ProgressBar | Determinate progress bar. value ranges from 0.0 to 1.0. |
Spinner | Three-dot animated loading indicator. Each dot pulses with a staggered opacity animation. |
Skeleton | Placeholder shimmer rectangle. Animates opacity between 0.4 and 0.8 in an 800ms loop. |
Widget | Description |
|---|---|
Hero | Shared-element transition tag. Wraps a child with a hero_tag semantic so the framework can animate matched elements across navigation changes. |
Widget | Description |
|---|---|
FormControl / FormControlLayout | Relates retained label, input, description, required state, and validation message. |
Alert / AlertLayout | Persistent semantic message with retained leading, content, and action regions. |
absolute_fill() | Free function that wraps a child in an AbsoluteFill layout node. |
use fission_widgets::{VStack, HStack, Badge, Card, Modal, ModalAction, Tabs, TabItem};
// Stack children vertically with 8px spacing
let layout = VStack {
spacing: Some(8.0),
children: vec![
Badge { text: "New".into(), ..Default::default() }.into(),
Card { child: content }.into(),
],
}.into();
// Open a modal dialog
let dialog = Modal {
id: WidgetId::explicit("confirm-dialog"),
title: "Confirm".into(),
content: Text::new("Are you sure?").into(),
is_open: true,
on_dismiss: Some(dismiss_action),
actions: vec![
ModalAction {
label: "Cancel".into(),
on_press: Some(cancel_action),
is_primary: false,
semantics_identifier: None,
},
ModalAction {
label: "OK".into(),
on_press: Some(ok_action),
is_primary: true,
semantics_identifier: None,
},
],
width: None,
..Default::default()
};
Widget | Description |
|---|---|
HStack | Horizontal stack. Convenience wrapper around Row with a spacing parameter. |
VStack | Vertical stack. Convenience wrapper around Column with a spacing parameter. |
Center | Centers its child using Align. |
Wrap | Flow layout that wraps children to the next line. Supports row and column directions. |
SplitView | Resizable split pane. Uses flex_grow to divide space by split_ratio. |
Spacer | Re-exported from fission-core. Flexible space that fills available room. |
Divider | A 1px visual separator line. Supports horizontal and vertical orientations. |
Widget | Description |
|---|---|
Modal / ModalLayout | Controlled dialog with retained header, scrolling content, adaptive actions, focus containment, dismissal, and modal semantics. Compact Modal uses ModalAction; retained ModalLayout uses explicit-variant ModalFooterAction values. |
Popover | Anchor-relative popup. Positions content next to a trigger widget using the flyout layout system. |
Tooltip | Hover-activated text label. Appears when the trigger widget is hovered. |
Drawer | Slide-out panel from the left or right edge. Renders as a portal with a dismissible backdrop. |
Toast | Notification message with icon, text, and close button. Supports Info, Success, Warning, and Error kinds. |
Portal | Renders its child into the overlay layer, outside the normal layout tree. |
Widget | Description |
|---|---|
Menu / MenuContent | Themed command surface with retained items, groups, labels, separators, supporting text, and trailing metadata. |
MenuButton / MenuButtonLayout | Controlled anchored menu trigger with popup focus and dismissal behavior. |
MenuItem | Single entry in a Menu: label, optional icon, and on_select action. |
Select / SelectLayout | Controlled fixed-choice field with retained trigger and list-box anatomy. |
DropDown | Simplified dropdown trigger button. |
Combobox / ComboboxLayout | Editable choice field with retained input and list-box anatomy. |
SegmentedControl | Horizontal row of toggle buttons. Only one option is active at a time. |
Widget | Description |
|---|---|
Tabs / TabsLayout | Controlled semantic tab list, retained triggers, and related panel content. |
Accordion / AccordionItem | Collapsible sections. Each item has a toggle header and expandable content body. |
Widget | Description |
|---|---|
Badge | Small colored label, typically used for counts or status. |
Tag | Pill-shaped label with an optional close button. |
Card / CardLayout | Design-system surface with compact or retained header, content, and footer anatomy. |
Avatar | Circular user avatar. Displays an image when src is provided, or initials derived from name. |
EmptyState | Centered placeholder with icon, title, description, and an optional action button. |
Icon | Re-exported from fission-core. Renders an SVG icon from a string. |
Widget | Description |
|---|---|
ProgressBar | Determinate progress bar. value ranges from 0.0 to 1.0. |
Spinner | Three-dot animated loading indicator. Each dot pulses with a staggered opacity animation. |
Skeleton | Placeholder shimmer rectangle. Animates opacity between 0.4 and 0.8 in an 800ms loop. |
Widget | Description |
|---|---|
Hero | Shared-element transition tag. Wraps a child with a hero_tag semantic so the framework can animate matched elements across navigation changes. |
Widget | Description |
|---|---|
FormControl / FormControlLayout | Relates retained label, input, description, required state, and validation message. |
Alert / AlertLayout | Persistent semantic message with retained leading, content, and action regions. |
absolute_fill() | Free function that wraps a child in an AbsoluteFill layout node. |
use fission_widgets::{VStack, HStack, Badge, Card, Modal, ModalAction, Tabs, TabItem};
// Stack children vertically with 8px spacing
let layout = VStack {
spacing: Some(8.0),
children: vec![
Badge { text: "New".into(), ..Default::default() }.into(),
Card { child: content }.into(),
],
}.into();
// Open a modal dialog
let dialog = Modal {
id: WidgetId::explicit("confirm-dialog"),
title: "Confirm".into(),
content: Text::new("Are you sure?").into(),
is_open: true,
on_dismiss: Some(dismiss_action),
actions: vec![
ModalAction {
label: "Cancel".into(),
on_press: Some(cancel_action),
is_primary: false,
semantics_identifier: None,
},
ModalAction {
label: "OK".into(),
on_press: Some(ok_action),
is_primary: true,
semantics_identifier: None,
},
],
width: None,
..Default::default()
};