1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// SPDX-License-Identifier: MPL-2.0
// SPDX-FileCopyrightText: 2026 FernTech
//! Tier-3 style protocol for `SplitButton`.
//!
//! See `docs/styling-system.md`. The trait is object-safe so
//! `Rc<dyn SplitButtonStyle>` can be stored in a theme slot or attached
//! per-call via `SplitButton::style(...)`.
//!
//! Mirrors [`ButtonStyle`](crate::styles::ButtonStyle): the active style
//! receives a pre-built `content` subtree (the SplitButton's interactive
//! row — default-action region │ divider │ chevron region, with its text
//! already coloured and its tap / menu handlers attached) and arranges the
//! shared frame chrome (background fill, border, corner radius, min size)
//! around it. The widget keeps ownership of text-colour resolution and all
//! event wiring, exactly as `Button` keeps `resolve_text_role`.
use Rc;
use crateBuildContext;
use crateSignal;
use crateButtonVariant;
use crateWidgetId;
/// Inputs handed to a [`SplitButtonStyle::make_body`] call.
///
/// `content` is the pre-built interactive row (the style only frames it; it
/// never builds the regions or divider itself). The four boolean signals
/// carry the live interaction state — the style can `.zip` / `.map` them to
/// drive a reactive background / border. `variant` is the design-language
/// hint the style may honour or remap (shared with [`ButtonVariant`]).
/// Style protocol for `SplitButton`. The active style owns the shared frame
/// chrome (fill, border, corner radius, overall min size) and arranges it
/// around the pre-built interactive `content` row.
///
/// `'static` (no `Send + Sync`) for the same reason as [`ButtonStyle`](crate::styles::ButtonStyle):
/// the rest of teksilo-core is single-threaded (`Signal` uses `Rc`).
/// Shared handle for a `SplitButtonStyle` impl. Cheap to clone; one shared
/// `Rc` is used per theme slot and per-call override.
pub type SharedSplitButtonStyle = ;