Normative baseline for standardized boolean control and boolean indicator widget classes
FROG — Free Open Graphical Language
- Widgets index
- Expression widget instances
- Expression widget interaction
- Expression widget realization
- Widget package publication
- Executable UI primitives
- Profile posture for widget-class adoption
- 1. Overview
- 2. Classes Defined Here
- 3. Boolean Class versus Realization
- 4. Label, Caption, and State Text Posture
- 5. Common Family Posture
- 6. Public Visual Part Model
- 7. Standard Property Surface
- 8.
frog.widgets.boolean_control - 9.
frog.widgets.boolean_indicator - 10. Default SVG Realization Posture
- 11. Rectangular and Circular Realization Variants
- 12. Diagram Interaction Posture
- 13. Behavior Expectations
- 14. Validation Expectations
- 15. Compatibility with Bounded Flat Slices
- 16. Summary
This document defines the intrinsic standardized baseline for boolean widgets in FROG.
The boolean family provides the standard widget surfaces used for true/false interaction and true/false display. It is intentionally small, portable, inspectable, and strong enough to serve as part of the reusable front-panel baseline.
The intrinsic boolean baseline is strictly true/false. It does not standardize a tri-state boolean model in the intrinsic core.
This file defines the boolean class law. It does not make a particular SVG asset, host toolkit, runtime implementation, or IDE editor operation the semantic owner of the widget.
frog.widgets.boolean_controlfrog.widgets.boolean_indicator
A boolean class is not the same thing as its visible embodiment.
The class owns the boolean value meaning, the control-versus-indicator distinction, the public property inventory, the public method inventory, the public event inventory, the public part model, and the legality of object-style access through frog.ui.*.
The realization owns rectangular, circular, checkbox-like, switch-like, toggle-like, LED-like, or other visual embodiment choices, SVG assets or host-native drawing resources, part-to-visual bindings, state-to-visual mappings, text placement and anchoring, skin resources, and compatible visual variants.
A different shape does not automatically create a different boolean class.
A rectangular boolean and a circular boolean remain frog.widgets.boolean_control or frog.widgets.boolean_indicator as long as their public contract remains the same.
The rectangular Boolean realization is a Boolean value-control / value-indicator skin.
It MUST NOT be treated as the standardized Button command widget; Button command behavior is defined separately by frog.widgets.button.
The boolean family follows the shared FROG label/caption convention and adds a boolean-specific internal state text surface.
label.*
- structural / logical widget name surface
caption.*
- front-panel presentation caption shown near the widget
state_text.*
- optional text displayed inside the boolean face for true/false values
This distinction prevents ambiguity between the text naming the widget, the user-facing caption, and the text displayed as part of the true/false embodiment.
- family: scalar boolean widget family
- primary value: present
- value type:
bool - primary value mirror property:
value - natural value participation: yes
- object-style access surface: yes
- structural label surface:
label.* - front-panel caption surface:
caption.* - internal state text surface:
state_text.* - interaction surface:
interaction.* - portable style surface:
style.* - portable realization-selection surface:
realization.*
The boolean family follows these architectural rules:
valueis class-owned semantic boolean data.label.textis class-owned logical widget-name text.caption.textis class-owned front-panel display caption text.state_text.true_textandstate_text.false_textare optional state text surfaces, not the semantic source of the boolean value.outer_faceandinner_faceare stable public visual parts, not runtime-private decorations.
root— root widget surface and hit-test container,label— structural label surface when displayed by tooling or host,caption— front-panel user-facing caption surface,outer_face— outside boolean visual structure, frame, or body,inner_face— inside boolean state surface or state marker,state_text— optional internal true/false text surface,focus_ring— optional focus visualization surface,frame— optional outer frame surface when a realization separates frame from outer face.
value : bool— primary boolean value.
label.visible : boollabel.text : stringlabel.style.text_color : frog.color.rgba8label.style.font_family : stringlabel.style.font_size : lengthlabel.style.font_weight : enumlabel.style.font_style : enumlabel.style.text_decoration : enum
caption.visible : boolcaption.text : stringcaption.placement : enum— preferred caption placement such astop,bottom,left, orright.caption.padding : lengthcaption.style.text_color : frog.color.rgba8caption.style.font_family : stringcaption.style.font_size : lengthcaption.style.font_weight : enumcaption.style.font_style : enumcaption.style.text_decoration : enumcaption.style.text_alignment : enum
state_text.visible : boolstate_text.true_text : stringstate_text.false_text : stringstate_text.placement : enumstate_text.style.text_color.true : frog.color.rgba8state_text.style.text_color.false : frog.color.rgba8state_text.style.font_family : stringstate_text.style.font_size : lengthstate_text.style.font_weight : enumstate_text.style.font_style : enumstate_text.style.text_decoration : enumstate_text.style.text_alignment : enum
interaction.visible : boolinteraction.enabled : boolinteraction.focusable : boolinteraction.focused : boolinteraction.pressed : bool— readable transient pressed posture for controls when exposed.
style.outer.fill_color.true : frog.color.rgba8style.outer.fill_color.false : frog.color.rgba8style.outer.border_color.true : frog.color.rgba8style.outer.border_color.false : frog.color.rgba8style.outer.border_width : lengthstyle.outer.corner_radius : lengthstyle.outer.opacity : number
style.inner.visible.true : boolstyle.inner.visible.false : boolstyle.inner.fill_color.true : frog.color.rgba8style.inner.fill_color.false : frog.color.rgba8style.inner.border_color.true : frog.color.rgba8style.inner.border_color.false : frog.color.rgba8style.inner.border_width : lengthstyle.inner.inset : lengthstyle.inner.corner_radius : lengthstyle.inner.opacity : number
style.focus_ring.visible : boolstyle.focus_ring.color : frog.color.rgba8style.focus_ring.width : lengthstyle.disabled.opacity : number
realization.family : stringrealization.variant : string— such asrectangularorcircular.realization.skin_id : string
- class_id:
frog.widgets.boolean_control - family:
boolean_widget - compatible role:
control
- primary value: present
- value type:
bool - natural value participation: yes
- user-mutable: yes
- diagram-mutable: yes
- runtime-mutable: yes
- mirrored property:
value
focus()toggle()set_true()set_false()reset_to_default()
value_changedpressedreleasedfocus_gainedfocus_lost
- class_id:
frog.widgets.boolean_indicator - family:
boolean_widget - compatible role:
indicator
- primary value: present
- value type:
bool - natural value participation: yes
- user-mutable: no in the standard portable posture
- diagram-mutable: yes
- runtime-mutable: yes
- mirrored property:
value
focus()when supported by the host and active publication corridor.reset_to_default()when default value or style defaults exist and the active publication corridor exposes them.
value_renderedfocus_gainedfocus_lost
The boolean family should have a default SVG-oriented realization posture. This does not mean that the SVG file owns boolean semantics. It means that a standard realization package may publish SVG-backed assets and part mappings that consume the public boolean property surface.
A default SVG realization SHOULD support resizing, structural label and caption placement, internal state-text rendering, state-dependent color application, configurable border widths, configurable fills, and focus ring display.
widget property
-> realization parameter
-> SVG part/style application
The standard boolean class may be realized through rectangular and circular variants. These are realization variants, not separate widget classes.
realization.variant = rectangularrealization.variant = circular
Changing realization.variant changes embodiment, not class meaning.
The boolean family supports natural value participation through widget_value, property access through frog.ui.property_read and frog.ui.property_write, method invocation through frog.ui.method_invoke, and event observation through frog.ui.event_observe where legal.
Typical legal object-style surfaces include value, label.*, caption.*, state_text.*, interaction.*, style.*, and realization.*.
- the primary value remains boolean,
- boolean controls accept user-originated toggling only when enabled,
- boolean value transitions may emit
value_changed, - indicator realizations may emit
value_renderedwhen their visible state is refreshed, - state text follows the current boolean value but does not define it.
Validators SHOULD diagnose non-boolean values, role/class mismatches, unsupported public members, illegal writes to indicator-only surfaces, attempts to treat realization-only internals as public class members, and attempts to use styling or realization selection to imply a distinct boolean class without explicit class publication.
Some bounded executable slices may preserve older flat property names for stability. Those slice-local compatibility surfaces do not replace the canonical boolean widget law defined here.
Tools may support explicit compatibility mappings for frozen examples, but new boolean-facing widget work should use the hierarchical surface defined in this document.
The boolean widget family defines the intrinsic standardized true/false widget baseline of FROG:
frog.widgets.boolean_controlfrog.widgets.boolean_indicator
The boolean family now follows the shared label / caption convention while preserving boolean-specific state_text for true/false text inside the state face.