Normative baseline for the standardized simple frame support widget
FROG - Free Open Graphical Language
- Widgets index
- Expression widget instances
- Expression widget realization
- Widget package publication
- Default frame realization
- Default frame realization manifest
This document defines frog.widgets.frame, the standardized simple frame support widget.
A Frame is a front-panel support rectangle. It provides only a background and a border so a source can visually group, separate, or emphasize a region of the front panel.
The simple Frame is intentionally not a value control, not an indicator, not a subpanel, not a scrollable container,
and not a method-bearing object. It does not load another .frog and it does not own the widgets visually placed
inside its bounds.
frog.widgets.frame
FROG distinguishes:
frame
- a public part inside another widget realization
frog.widgets.frame
- standalone simple support rectangle placed on the front panel
A numeric widget may have a frame part. A button may have a frame part.
That is not the same thing as the standalone frog.widgets.frame class.
- class_id:
frog.widgets.frame - family:
support_widget - compatible role:
support - primary business value: absent
- natural
widget_valueparticipation: absent - standard behavior: visual background and border only
The Frame is source-owned front-panel decoration. Position and size live in the .frog instance layout.
Default visual properties live in the Default realization manifest and may be overridden by the .frog instance.
rootbackgroundborder
No caption, scrollbar, focus ring, value surface, child host, or content-region ownership is part of the simple Frame baseline.
A title can be composed with a separate frog.widgets.label instance when needed.
layout.x : lengthlayout.y : lengthlayout.width : lengthlayout.height : length
style.background.visible : boolstyle.background.fill_color : frog.color.rgba8
style.border.visible : boolstyle.border.color : frog.color.rgba8style.border.width : length
Border width is a single global thickness value. It must remain visually uniform on all four sides regardless of Frame size or aspect ratio. The simple Frame baseline uses a continuous rectangular border only; dashed, dotted, textured, or side-specific border styles are not part of this widget.
- No
caption.*surface. Use a separate Label widget for text. - No Frame-specific method-node surface.
- No Frame-specific property-node behavior beyond ordinary source-owned visual style data.
- No scrollbars. A scrollable region is a separate container concept, not this simple Frame.
- No child
.frogreference. Use Subpanel for embedded front panels. - No hidden ownership of widgets placed visually inside the rectangle.
The Default realization exposes one rectangular SVG template with:
- a
backgroundpart, - a
borderpart, vector-effect="non-scaling-stroke"on the border to preserve uniform stroke thickness while resizing.
The SVG provides geometry and visual hooks only. It does not own grouping semantics, child layout, or execution behavior.
Validators SHOULD diagnose:
- attempts to treat
frog.widgets.frameas a scalar value-carrying widget, - attempts to use Frame as a Subpanel or child
.froghost, - attempts to attach caption, scrollbar, method, or execution semantics to the simple Frame baseline,
- use of a non-uniform border thickness after resizing,
- attempts to expose dashed, dotted, textured, or side-specific borders on the simple Frame baseline,
- runtime hardcoding of background color, border color, or border width instead of consuming source/default realization data.
frog.widgets.frame is the simplest visual grouping support object in the FROG baseline:
a resizable rectangle with configurable background and border.