Skip to main content

Crate teksilo_widgets

Crate teksilo_widgets 

Source

Re-exports§

pub use code_editor::BracketPair;
pub use code_editor::COMMON_BRACKETS;
pub use code_editor::CodeConfig;
pub use code_editor::CodeEditor;
pub use code_editor::CodeEditorHandle;
pub use code_editor::CompletionContext;
pub use code_editor::CompletionItem;
pub use code_editor::CompletionKind;
pub use code_editor::IndentStyle;
pub use code_editor::LogView;
pub use code_editor::LogViewHandle;
pub use code_editor::PlainTextEditor;
pub use tooltip::TooltipWidget;
pub use accordion::Accordion;
pub use accordion::AccordionOrientation;
pub use animations::Blur;
pub use animations::Collapse;
pub use animations::Crossfade;
pub use animations::Cycle;
pub use animations::Fade;
pub use animations::Pulse;
pub use animations::Rotate;
pub use animations::Scale;
pub use animations::ScaleOrigin;
pub use animations::Shake;
pub use animations::Slide;
pub use animations::SlideEdge;
pub use animations::SmoothSize;
pub use animations::SmoothSizeAxes;
pub use animations::Unroll;
pub use animations::UnrollFrom;
pub use avatar::Avatar;
pub use badge::Badge;
pub use banner::Banner;
pub use breadcrumb::Breadcrumb;
pub use breadcrumb::BreadcrumbItem;
pub use button::Button;
pub use button::IconLocation;
pub use calendar::Calendar;
pub use calendar::DateRange;
pub use calendar::WeekNumberDisplay;
pub use card::Card;
pub use checkbox::Checkbox;
pub use color_edit::ColorEdit;
pub use color_picker::ColorPicker;
pub use color_picker::ColorSwatch;
pub use color_picker::DEFAULT_SWATCHES;
pub use combo_box::ComboBox;
pub use command_link_button::CommandLinkButton;
pub use command_palette::CommandPalette;
pub use command_palette::PaletteCommand;
pub use date_edit::DateEdit;
pub use date_range_edit::DateRangeEdit;
pub use date_time_edit::DateTimeEdit;
pub use dialog::Dialog;
pub use dialog::DialogContent;
pub use dialog::ModalContainer;
pub use dialog::ModalScrim;
pub use docking::CornerOwners;
pub use docking::DockAction;
pub use docking::DockActionId;
pub use docking::DockActionPlacement;
pub use docking::DockCorner;
pub use docking::DockLayoutState;
pub use docking::DockOpenLocation;
pub use docking::DockOpenMode;
pub use docking::DockPolicy;
pub use docking::DockRail;
pub use docking::DockRailItemSize;
pub use docking::DockRailSlot;
pub use docking::DockSide;
pub use docking::DockTabDisplay;
pub use docking::DockTabId;
pub use docking::DockWidget;
pub use docking::DockWidgetId;
pub use docking::DockingLayout;
pub use docking::DockingModel;
pub use docking::TabPresentation;
pub use drop_target::DropRegionSpec;
pub use drop_target::DropTarget;
pub use drop_zone::DropZone;
pub use file_picker_field::FilePickerField;
pub use file_picker_field::FilePickerKind;
pub use focus_scope::FocusScope;
pub use font_picker::FontMeta;
pub use font_picker::FontPicker;
pub use font_picker::FontPreviewMode;
pub use font_picker::FontSpacingFilter;
pub use grid_view::GridSectionProvider;
pub use grid_view::GridSizing;
pub use grid_view::GridTabTraversal;
pub use grid_view::GridView;
pub use grid_view::GroupingSections;
pub use grid_view::ScrollAnchor;
pub use grid_view::TileContext;
pub use grid_view::grouping_sections;
pub use group_box::GroupBox;
pub use group_header::GroupHeader;
pub use hex_color_input::HexColorInput;
pub use icon_button::BuiltInIcons;
pub use icon_button::IconButton;
pub use input_dialog::InputDialog;
pub use language_switcher::LanguageSwitcher;
pub use list_view::ListView;
pub use menu::MenuEntry;
pub use menu::MenuItemState;
pub use menu::MenuItems;
pub use menu::MenuModel;
pub use menu::MenuNode;
pub use menu::NativeMenuMode;
pub use menu::StandardMenu;
pub use menu_bar::CollapsePolicy;
pub use menu_bar::MenuBar;
pub use menu_item::MenuItem;
pub use menu_list::MenuList;
pub use menu_list::MenuSeparator;
pub use message_box::ButtonRole;
pub use message_box::EventContextMessageBoxExt;
pub use message_box::MessageBox;
pub use message_box::MessageBoxButton;
pub use message_box::MessageBoxButtons;
pub use message_box::MessageBoxResult;
pub use message_box::MessageBoxSeverity;
pub use message_box::StandardButton;
pub use notification::ARCHIVE_FILE_NAME;
pub use notification::ArchivedAction;
pub use notification::ArchivedActionStyle;
pub use notification::DEFAULT_ARCHIVE_LIMIT;
pub use notification::NotificationArchive;
pub use notification::NotificationArchiveModel;
pub use notification::NotificationCenterButton;
pub use notification::NotificationEntry;
pub use notification::NotificationLog;
pub use notification::NotificationLogDialog;
pub use notification::NotificationUpdate;
pub use overlay_trigger::OverlayTrigger;
pub use panel::Panel;
pub use password_field::AtRevealPolicy;
pub use password_field::EchoMode;
pub use password_field::PasswordField;
pub use password_field::RevealMode;
pub use popover_surface::PopoverSurface;
pub use popover_widget::PopoverButton;
pub use popover_widget::PopoverCustom;
pub use popover_widget::PopoverIconButton;
pub use popover_widget::PopoverTrigger;
pub use popover_widget::PopoverWidget;
pub use primitives::text_input_field::InputPurpose;
pub use primitives::text_input_field::ValidationFeedback;
pub use primitives::text_input_field::ValidationOutcome;
pub use primitives::AspectRatio;
pub use primitives::Center;
pub use primitives::ColumnFlow;
pub use primitives::DeadZone;
pub use primitives::Divider;
pub use primitives::Expand;
pub use primitives::FixedSize;
pub use primitives::FormLayout;
pub use primitives::Grid;
pub use primitives::HStack;
pub use primitives::IconWidget;
pub use primitives::ImageFit;
pub use primitives::ImageWidget;
pub use primitives::MasonryLayout;
pub use primitives::MaxSize;
pub use primitives::MinSize;
pub use primitives::Padding;
pub use primitives::RectWidget;
pub use primitives::Shrinkable;
pub use primitives::Spacer;
pub use primitives::Switcher;
pub use primitives::TextWidget;
pub use primitives::TrackSize;
pub use primitives::VStack;
pub use primitives::Wrap;
pub use primitives::ZStack;
pub use primitives::TextFieldHandle;
pub use primitives::TextInputField;
pub use progress_bar::ProgressBar;
pub use radio_button::RadioButton;
pub use radio_group::RadioGroup;
pub use radio_tile::RadioTile;
pub use radio_tile::RadioTileIndicatorSide;
pub use radio_tile_group::RadioTileGroup;
pub use radio_tile_group::TileLayout;
pub use repeater::Repeater;
pub use scroll_area::ScrollArea;
pub use scroll_area::ScrollBarMode;
pub use scroll_area::ScrollBarPolicy;
pub use scroll_bar::ScrollBar;
pub use search_field::SearchField;
pub use segmented_control::Segment;
pub use segmented_control::SegmentDisplay;
pub use segmented_control::SegmentId;
pub use segmented_control::SegmentOverflow;
pub use segmented_control::SegmentSizing;
pub use segmented_control::SegmentedControl;
pub use shortcut_settings::ShortcutSettings;
pub use slider::Slider;
pub use snackbar::Snackbar;
pub use spin_box::SpinBox;
pub use spin_box::SpinValue;
pub use spin_box::StepType;
pub use spin_box::WheelMode;
pub use spin_box::WrapMode;
pub use spinner::Spinner;
pub use split_button::SplitButton;
pub use splitter::PaneDescriptor;
pub use splitter::PaneSnapshot;
pub use splitter::PaneState;
pub use splitter::Splitter;
pub use splitter::SplitterModel;
pub use splitter::SplitterState;
pub use standard_item::StandardListItem;
pub use standard_item::StandardTreeItem;
pub use status_bar::StatusBar;
pub use stepper::ChromePosition;
pub use stepper::Step;
pub use stepper::StepStatus;
pub use stepper::Stepper;
pub use stepper::StepperController;
pub use stepper::StepperOrientation;
pub use stepper::Wizard;
pub use tab_widget::ContextMenuFactory;
pub use tab_widget::IconFactory as TabIconFactory;
pub use tab_widget::STATIC_KIND;
pub use tab_widget::StaticContentFactory;
pub use tab_widget::TabBar;
pub use tab_widget::TabBarOrientation;
pub use tab_widget::TabBarVisibility;
pub use tab_widget::TabDelegate;
pub use tab_widget::TabDisplayMode;
pub use tab_widget::TabHandle;
pub use tab_widget::TabId;
pub use tab_widget::TabInfo;
pub use tab_widget::TabOverflowButton;
pub use tab_widget::TabSizing;
pub use tab_widget::TabWidget;
pub use table_view::Alignment as TableAlignment;
pub use table_view::CellContext;
pub use table_view::CellSelectionModel;
pub use table_view::Column;
pub use table_view::ColumnContext;
pub use table_view::ColumnResizePolicy;
pub use table_view::ColumnWidth;
pub use table_view::EditTriggers;
pub use table_view::GridLines;
pub use table_view::PinnedSide;
pub use table_view::TabTraversal;
pub use table_view::TableSelectionMode;
pub use table_view::TableView;
pub use table_view::TruncationPolicy;
pub use text_input::TextInput;
pub use text_input::ValidationState;
pub use text_scale_control::TextScaleControl;
pub use theme_switcher::ThemeSwitcher;
pub use time_edit::SecondsMode;
pub use time_edit::TimeEdit;
pub use time_edit::TimeFormat;
pub use title_bar::DragRegion;
pub use title_bar::ResizeStrip;
pub use title_bar::TitleBar;
pub use title_bar::WindowControls;
pub use title_bar::WindowFrame;
pub use toast::EventContextToastExt;
pub use toast::Toast;
pub use toast::ToastAction;
pub use toast::ToastActionStyle;
pub use toast::ToastAudience;
pub use toast::ToastDismissCause;
pub use toast::ToastHandle;
pub use toast::ToastHost;
pub use toast::ToastInstallOptions;
pub use toast::ToastRegistry;
pub use toast::ToastRoute;
pub use toast::ToastSurface;
pub use toggle::Toggle;
pub use tool_box::ToolBox;
pub use tool_box::ToolBoxItem;
pub use tool_box::ToolBoxOrientation;
pub use toolbar::Toolbar;
pub use toolbar::ToolbarAction;
pub use toolbar::ToolbarItem;
pub use toolbar::ToolbarOrientation;
pub use toolbar::ToolbarOverflow;
pub use tree_table_view::TreeTableView;
pub use tree_view::TreeRowContext;
pub use tree_view::TreeView;

Modules§

accordion
Accordion — a collapsible section with a clickable header that shows or hides its content when activated.
animations
Animation wrapper widgets — subtree wrappers that drive a framework Signal<f32> to animate a paint-time property (opacity, transform, layout slot) on the wrapped child.
avatar
Avatar — circular (or rounded-square / square) user-identity widget.
badge
Badge — a pill-shaped label for tags, status indicators, and counts.
banner
Banner — persistent inline status strip (info / success / warning / error).
breadcrumb
Breadcrumb — a navigational trail with automatic overflow into a menu.
button
Button — a labelled, activatable action trigger.
calendar
Calendar — month-grid date picker, standalone widget.
card
Card — a surface container with optional header, content, and footer slots.
checkbox
Checkbox — a two-state or tristate checkbox with an optional label.
code_editor
Multi-line plain-text and code editing surfaces.
color_edit
ColorEdit — compact field-style color picker trigger that opens a popover containing a ColorPicker.
color_picker
ColorPicker — embeddable composite color selector.
combo_box
ComboBox — dropdown selection widget.
command_link_button
CommandLinkButton — large two-line button with icon, title, and subtitle. Used for wizard landing screens, onboarding choices, and any “card-shaped CTA” pattern.
command_palette
CommandPalette — type-to-run access to every command an app has registered.
common
Cross-widget shared infrastructure.
date_edit
DateEdit — text input + calendar popover, bound to Signal<Option<Date>>.
date_range_edit
DateRangeEdit — single unified control for picking a DateRange.
date_time_edit
DateTimeEdit — single unified control for picking a DateTime.
dialog
Modal dialogs — a trigger button that presents a centered modal panel.
docking
DockingLayout — a VS Code-style dockable layout: a fixed centre slot (the app’s main content) surrounded by four collapsible, splittable, draggable side regions (leading / trailing / top / bottom), backed by a cloneable, serializable DockingModel.
drop_target
DropTarget — a transparent wrapping drop container.
drop_zone
DropZone — a “drop files here” target for external (OS) drag-and-drop.
file_picker_field
FilePickerField — a text-input preset for path entry with a Browse button.
focus_scope
FocusScope — a layout-transparent wrapper that declares a traversal boundary for Tab / Shift+Tab focus cycling.
font_picker
FontPicker — a drop-in font-family selector.
grid_view
Virtualized 2D tile grid bound to a ListModel<T> / ListDataSource.
group_box
GroupBox — titled cluster of controls in Int UI / Jewel style.
group_header
GroupHeader — a horizontal section header: label followed by a trailing rule line that fills the remaining width.
hex_color_input
HexColorInput — single-line #RRGGBB[AA] color editor.
icon_button
IconButton — a square, icon-only, flat-surface button.
input_dialog
InputDialog — a QInputDialog-style modal that prompts the user for a single string. Built on the same present_modal infrastructure as MessageBox, with a TextInput body between the prompt and the Ok / Cancel buttons.
keystroke_format
Platform- and locale-aware formatting for [KeyStroke]s.
language_switcher
LanguageSwitcher — a drop-in UI-language picker for settings screens.
link
Link — a clickable text label rendered as underlined inline text.
list_view
ListView — a virtualized, scrollable list backed by a reactive data model.
menu
Declarative menu model — a single source of truth for both the in-window MenuBar and the platform’s native menu bar (NSMenu on macOS).
menu_bar
MenuBar — a horizontal application menu bar with keyboard-driven dropdowns.
menu_item
MenuItem — a single command row in a menu or context menu.
menu_list
MenuList — a themed vertical menu container with keyboard navigation.
message_box
MessageBox — QMessageBox-style alert dialog.
notification
Persistent notification archive — the storage and data-model layer backing NotificationLog, NotificationCenterButton, and NotificationLogDialog.
overlay_trigger
panel
Panel — a themed single-child container that provides a background, border, corner radius, and padding.
password_field
PasswordField — secure single-line text entry with a reveal toggle, masking, Caps Lock warning, and clipboard protection.
popover_surface
PopoverSurface — the themed panel a popover’s content sits in.
popover_widget
PopoverWidget<T> — a generic trigger that opens a popover when activated, plus the PopoverButton / PopoverIconButton aliases.
primitives
progress_bar
ProgressBar — a bar showing progress from 0.0 to 1.0.
radio_button
RadioButton — mutually exclusive selection control.
radio_group
RadioGroup — invisible layout container that groups RadioButtons and wires their accessibility metadata.
radio_tile
RadioTile — a “selectable card” radio option.
radio_tile_group
RadioTileGroup — an N-ary group of RadioTiles with single selection.
repeater
Repeater — non-virtualized dynamic widget list driven by a ListModel<T>.
rich_text
Rich text editor and viewer widget.
scroll_area
ScrollArea — a clipping viewport that scrolls its content on wheel, touch, and assistive-technology actions.
scroll_bar
ScrollBar — pointer and keyboard affordance for a ScrollArea.
search_field
SearchField — a TextInput preset configured for search workflows: leading magnifier glyph, default-on clear-X, and an optional anchored suggestions popover with keyboard navigation and the ARIA combobox-with-listbox accessibility pattern. The popover is shown via OverlayRequest so it floats above sibling content and escapes ancestor clipping (same pattern as ComboBox).
segmented_control
SegmentedControl — mutually exclusive segments in a horizontal row.
shadow
Layered drop-shadow helper for elevated surfaces.
shortcut_settings
ShortcutSettings — user-facing widget for browsing and rebinding application shortcuts.
slider
Slider — a draggable value selector bound to a Signal<f32>.
snackbar
Snackbar — a transient, button-triggered floating notification surface.
spin_box
SpinBox — numeric input with increment/decrement buttons.
spinner
Spinner — a shader-driven circular-arc loading indicator.
split_button
SplitButton — a button split into two regions sharing a single frame.
splitter
N-pane split container with draggable, collapsible dividers.
standard_item
Canonical row layout for ListView / TreeView delegates.
status_bar
StatusBar — a horizontal chrome bar at the bottom of a window for status information.
stepper
Stepper — a modern, embeddable step-flow widget (Material/Ant/Flutter “stepper”), and Wizard, a thin modal launcher built on it.
styles
Default Recipe*Style impls — the IntUI look ships here. Apps that want a different design language write their own impl FooStyle blocks (per-call via Foo::style(...) or theme-wide via theme.style_slots).
tab_widget
Tabbed-container widgets.
table_view
TableView<T> — generic, virtualized, accessible tabular widget.
text_input
TextInput — styled single-line text field composite.
text_scale_control
TextScaleControl — the settings control that grows all text in the app.
theme_switcher
ThemeSwitcher — a drop-in app-theme picker for settings screens & toolbars.
time_edit
TimeEdit — text input for time-of-day, bound to Signal<Option<Time>>.
title_bar
Custom window title bar widget.
toast
Toast notification — stackable, action-rich, severity-aware floating notification (the “upgrade path” from Snackbar).
toggle
Toggle — an animated on/off switch bound to a Signal<bool>.
tool_box
ToolBox — a vertical stack of collapsible sections, exactly one expanded at a time.
toolbar
Toolbar — a command bar with automatic overflow.
tooltip
Tooltip system — hover-triggered overlays with configurable delay.
tree_table_view
TreeTableView<T> — hierarchical multi-column data table with expand/collapse.
tree_view
TreeView — a virtualized, expandable/collapsible hierarchical list widget.

Structs§

DropRegionSet
Which DropRegions a DropTarget currently exposes. The default (Center only) reproduces the classic whole-bounds single-zone behaviour.
DropTargetStyleConfig
Inputs handed to a DropTargetStyle to build the wrapping chrome.
RadioTileStyleConfig
Everything a RadioTileStyle needs to render one tile’s chrome.
RowDragData
The public, generic drag payload every data-view row (or selected set) emits. It occupies the single typed slot of a [teksilo_core::drag_payload::DragPayload] and serves both audiences:
TreeRow
Per-row context handed to a TreeView::from_source delegate — the key-erased counterpart of the built-in TreeRowContext. Carries the row’s flat metadata plus a one-call chevron toggle that flips the row’s expansion through the source (by index → key → set_expanded).
TreeRowMeta
Key-erased per-row flat metadata, derived from the source’s FlatEntry.
ViewId
Opaque, kind-tagged, process-unique identity of a drag-capable data-view instance. Used to tell a view’s OWN reorder (SameView) from a foreign drop on the receive side. Apps only ever compare two ViewIds for equality (e.g. out of a received RowDragData); there is no public constructor, and the value is stable for a view instance’s lifetime, so it is safe to compare even across windows (each mint is globally unique).

Enums§

ActivateOn
How a data-view row/tile is activated (opened/committed) by pointer — distinct from selection, which also moves on arrow-key navigation. Mirrors the platform split other toolkits expose (Qt SH_ItemView_ActivateItemOnSingleClick, GTK activate-on-single-click). Enter/Space always activates regardless of this mode.
AvatarCorner
Where the presence dot is rendered relative to the avatar bounds.
AvatarPresence
Presence indicator dot drawn at one corner of the avatar.
AvatarShape
Outer outline.
AvatarSize
Discrete avatar size variants. Custom(px) accepts an arbitrary logical-pixel side length. The default size resolution table lives in teksilo_widgets::styles::recipe_avatar_style::avatar_pixel_size.
BannerSeverity
Banner severity level. Drives the surface tint, glyph color, and glyph shape. Apps with a “neutral” callout requirement should use a Card instead.
ButtonVariant
Closed enum naming the design-language variants of Button. See teksilo_core::styles::ButtonVariant for the canonical definition.
CheckState
ColorPickerLayout
Layout variant — controls how the recipe arranges the rows. Re-exported from color_picker_style so the config and any custom ColorPickerStyle impl can branch on it without an upward dep on teksilo-widgets.
DragTransferMode
What the origin view does to its own rows once a drag is accepted by a foreign target (a different DropTarget / view / the OS). Purely an origin-side cleanup choice — the receiver is unaffected. A same-view reorder is never a transfer, so this never applies to it.
DropRegion
One of the five drop regions a DropTarget can expose. Each is independently enable-able and carries an optional hint.
DropTargetDragState
Interaction state of a drop target, driving the overlay’s surface and border colors and the hint card’s visibility. Defined here (not in teksilo-widgets) so the core style trait and the default recipe can both name it — mirroring DropZoneVisualState.
DropTargetVariant
Visual prominence of the drop target’s hover indicator.
IconButtonSize
Size variant for IconButton. See teksilo_core::styles::IconButtonSize for the canonical definition. Variants are calibrated to the IntelliJ Int UI scale (Compact 22 dp, Default 24 dp, Toolbar 30 dp, Large 40 dp, Hero 50 dp). Five sizes calibrated to the IntelliJ Int UI scale. Apps usually pick one per call; the active style maps each to a (square_size, icon_size) pair from its recipe.
Orientation
Orientation for widgets that can be horizontal or vertical.
OverscrollBehavior
Controls whether a scrollable surface chains scroll events to its ancestor when it reaches a boundary — the equivalent of CSS overscroll-behavior.
RadioTileVariant
Design-language variant for a RadioTile (in teksilo-widgets). The active RadioTileStyle decides what each variant means visually.
ScrollBarOrientation
SortDirection
Sort direction emitted by TableView / TreeTableView headers and consumed by sort projections.
SpinButtonLayout
Step-button visibility / placement. Moved up from teksilo_widgets::spin_box::ButtonLayout so the trait config can carry it without forcing the recipe to depend on the widget crate.
StandardMenuRole
Standard, platform-defined menus with required placement/behaviour (the macOS App / Window / Help menus, with their About / Hide / Quit / window-management items wired to system selectors). The backend supplies the native structure; the in-window MenuBar ignores these.
TabIndicatorPosition
Which edge of a tab the active-tab highlight indicator hugs.
ToastPriority
Queue / assertiveness level — shared with the public Toast builder API. Lives here in teksilo-core so the style trait can take it in its config without depending on teksilo-widgets.
ToastSeverity
Toast severity — re-export of BannerSeverity so apps that mix Banner and Toast share one severity vocabulary. The same severity.surface() / severity.glyph_color(theme) helpers apply. Banner severity level. Drives the surface tint, glyph color, and glyph shape. Apps with a “neutral” callout requirement should use a Card instead.
TraversalScopePolicy
Policy for a focus traversal scope, declared via the FocusScope wrapper widget. Controls what Tab / Shift+Tab does when it reaches the scope’s ends.

Traits§

DropTargetStyle
Tier-3 style protocol for DropTarget. Produces the body: the wrapped child plus the reactive overlay and the optional centered hint.
RadioTileStyle
Tier-3 style protocol for RadioTile. Implement this to fully replace the card chrome (per-call RadioTile::style(...) or theme-wide theme.style_slots.radio_tile = Some(Rc::new(MyTile))).

Functions§

framework_locales
The framework bundle: teksilo-widgets’ own translatable strings, grouped by locale. Registered by applications via I18nConfig::framework_locales(teksilo_widgets::framework_locales()) at startup.

Type Aliases§

SharedDropTargetStyle
Shared, theme-installable handle to a DropTargetStyle.
SharedRadioTileStyle