Package-level declarations

Types

Link copied to clipboard
class NestedNavigationGraphEntryBuilder(screenId: String, initialTiles: TileSchemaBuilderScope.() -> Unit = {}, initialEvents: EventSchemaBuilderScope.() -> Unit = {}, failureTiles: TileSchemaBuilderScope.() -> Unit = {}, failureEvents: EventSchemaBuilderScope.() -> Unit = {}, transition: ContentTransitionSchema? = null, popTransition: ContentTransitionSchema? = null, predictivePopTransition: ContentTransitionSchema? = null) : GenericBuilder<NestedNavigationGraphTileSchema.Entry>
Link copied to clipboard
class TabItemSchemaBuilder(id: String, label: String? = null, icon: IconSchema? = null, badgeText: String? = null) : GenericBuilder<TabsTileSchema.TabItem>

Functions

Link copied to clipboard
fun TileSchemaBuilderScope.NavigationBar(id: String = randomId(), events: EventSchemaBuilderScope.() -> Unit = {}, style: StyleSchemaBuilderScope.() -> Unit = {}, visibility: TileSchema.Visibility = visible(), searchableTerms: List<String>? = null, selectedItemId: String, items: NavigationBarItemSchemaBuilderScope.() -> Unit)

Renders a Material 3 navigation bar with one entry per item declared via items (built with item). An item is selected when its id equals selectedItemId; the selected item's icon is drawn in its filled variant, the others outlined, and its label is centered under the icon (or omitted when not given). Tapping an item flips selectedItemId locally on the client (no server round trip needed for the highlight to move) — tapping the already-selected item still fires everything again. The bar itself is not clickable and fires no display trigger; it only tracks the selected item, so performing the actual navigation is up to the events wired to the item clicks. Dispatches onNavigationBarItemClick(itemId) when an item is tapped, so events can be wired per item.

Link copied to clipboard
fun TileSchemaBuilderScope.NavigationRail(id: String = randomId(), events: EventSchemaBuilderScope.() -> Unit = {}, style: StyleSchemaBuilderScope.() -> Unit = {}, visibility: TileSchema.Visibility = visible(), searchableTerms: List<String>? = null, selectedItemId: String, header: TileSchemaBuilderScope.() -> Unit? = null, footer: TileSchemaBuilderScope.() -> Unit? = null, items: NavigationRailItemSchemaBuilderScope.() -> Unit)

Renders a Material 3 navigation rail — the side-rail counterpart of NavigationBar — with one entry per item declared via items (built with addItem). An item is selected when its id equals selectedItemId; the selected item's icon is drawn in its filled variant, the others outlined, and its label is centered under the icon (or omitted when not given). header is rendered above the items and footer at the very bottom (pushed down by a weighted spacer so it hugs the bottom edge); both are optional, arbitrary tiles. Tapping an item flips selectedItemId locally on the client (no server round trip needed for the highlight to move) — tapping the already-selected item still fires everything again. The rail itself is not clickable and fires no display trigger; it only tracks the selected item, so performing the actual navigation is up to the events wired to the item clicks. Dispatches onNavigationRailItemClick(itemId) when an item is tapped, so events can be wired per item.

Link copied to clipboard
fun TileSchemaBuilderScope.NestedNavigationGraph(id: String = randomId(), events: EventSchemaBuilderScope.() -> Unit = {}, style: StyleSchemaBuilderScope.() -> Unit = {}, visibility: TileSchema.Visibility = visible(), searchableTerms: List<String>? = null, navigatorId: String, startEntryId: String, defaultTransition: ContentTransitionSchema? = null, defaultPopTransition: ContentTransitionSchema? = null, defaultPredictivePopTransition: ContentTransitionSchema? = null, entries: NestedNavigationGraphEntryBuilderScope.() -> Unit)

Hosts a self-contained navigation back stack inside a tile, so a region of a screen can navigate independently of the rest. The stack starts at startEntryId and every screen it can show is declared via entries (built with entry). On first composition the tile registers itself under navigatorId — that id is how Navigate events address this graph — and that registration (along with each entry) is torn down when the tile leaves composition, so the graph and its entries only exist while the tile is on screen; each entry gets its own state holder, so screen state survives navigating back and forth within the graph. The system back gesture pops this graph's own stack, not the outer one. For each navigation, the entry's own Entry transitions win; when an entry does not define one, defaultTransition / defaultPopTransition / defaultPredictivePopTransition apply; when neither is set the navigation is instantaneous. Dispatches onNavigationEntrySet(screenId) whenever an entry is displayed — including the start destination and every time navigation returns to an entry — so events can be wired per destination.

Link copied to clipboard

Primary tab row emphasis.

Link copied to clipboard

Secondary tab row emphasis.

Link copied to clipboard
fun TileSchemaBuilderScope.Tabs(id: String = randomId(), events: EventSchemaBuilderScope.() -> Unit = {}, style: StyleSchemaBuilderScope.() -> Unit = {}, visibility: TileSchema.Visibility = visible(), searchableTerms: List<String>? = null, selectedTabId: String, tabType: TabsTileSchema.Type = primaryTabs(), scrollable: Boolean = false, tabItems: TabItemSchemaBuilderScope.() -> Unit)

Renders a Material 3 tab row with one tab per entry declared via tabItems (built with addTab). tabType picks the emphasis — primary or secondary — and scrollable chooses between a fixed row and a scrollable one. Each tab shows its label and icon, both optional; the selected tab is the one whose id equals selectedTabId — when it matches none of tabItems the first tab is highlighted as a fallback, and an empty tabItems renders nothing at all. When a tab's badge text is set (via addTab), it gets a badge attached to its icon (or its label when it has none) — an empty string renders a small dot badge, any other value renders as the badge's text. Tapping a tab flips selectedTabId locally on the client (no server round trip needed for the indicator to move); the tile only tracks the selection, so swapping the content shown below the tabs is up to the events wired to the tab clicks. Dispatches onTabItemClick(tabId) when a tab is tapped, so events can be wired per tab.