You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Libraries/Widgets/Readme.md
+54-7Lines changed: 54 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -58,6 +58,12 @@ The standard widget baseline does not replace the general widget architecture de
58
58
Instead, it instantiates that architecture through a first published set of reusable classes with explicit public object surfaces.
59
59
</p>
60
60
61
+
<p>
62
+
The baseline also assumes that standardized widgets may be styled, skinned, and realized through compatible realization families without turning those realization choices into hidden class splits.
63
+
The intrinsic class layer remains semantic and portable.
64
+
Realization remains downstream and embodiment-oriented.
65
+
</p>
66
+
61
67
<hr/>
62
68
63
69
<h2id="why-this-directory-exists">2. Why this Directory Exists</h2>
@@ -220,9 +226,21 @@ It is a published portable object surface that runtimes may implement and progra
220
226
221
227
<p>
222
228
That public surface may include semantic label-bearing or value-bearing members such as <code>label.text</code>, <code>value</code>, <code>value_display</code>, <code>text_display</code>, <code>plot_area</code>, or other public surfaces when the class requires them.
223
-
However, the existence of such members does not mean that realization-side placement, styling defaults, anchors, text regions, or decorative assets become part of the intrinsic class law unless explicitly published here.
229
+
However, the existence of such members does not mean that realization-side placement, styling defaults, anchors, text regions, skin resources, or decorative assets become part of the intrinsic class law unless explicitly published here.
230
+
</p>
231
+
232
+
<p>
233
+
A standard class may also expose bounded public styling or realization-selection surfaces when those surfaces are intended to be portable and inspectable.
<li>where dynamic public surfaces are placed,</li>
243
261
<li>how visual states are embodied,</li>
244
262
<li>which anchors, text regions, or resource layers are used,</li>
245
-
<li>which assets or host-native layers provide the embodiment.</li>
263
+
<li>which assets or host-native layers provide the embodiment,</li>
264
+
<li>how compatible variants and skins are selected and applied.</li>
246
265
</ul>
247
266
248
267
<hr/>
@@ -456,6 +475,12 @@ A new class is justified only when the public contract changes in a meaningful w
456
475
<li>different standardized behavior meaning.</li>
457
476
</ul>
458
477
478
+
<p>
479
+
The same rule also applies to skinning and styling.
480
+
A different skin, a different compatible SVG set, a different host-native chrome, or a different compatible realization variant does not automatically create a new class.
481
+
A widget remains the same standardized class as long as its public contract remains unchanged.
<li>interactive classes use property <code>interaction.enabled</code> where applicable,</li>
477
502
<li>the root part is named <code>root</code>,</li>
478
503
<li>the outer framing part, when present, is named <code>frame</code>,</li>
504
+
<li>portable styling surfaces, when exposed, use the <code>style.*</code> namespace,</li>
505
+
<li>portable realization-selection surfaces, when exposed, use the <code>realization.*</code> namespace,</li>
479
506
<li>controls typically emit <code>value_changed</code> for primary value mutation,</li>
480
507
<li>indicators typically emit <code>value_rendered</code> for visible refresh-oriented notification.</li>
481
508
</ul>
@@ -612,7 +639,7 @@ A class may expose <code>value</code> as a legal public property, while the exec
612
639
</ul>
613
640
614
641
<p>
615
-
Likewise, if a class exposes members such as <code>label.text</code>, axis properties, history members, or methods such as <code>append_sample(sample)</code> or <code>clear_history()</code>, this directory owns their legality and meaning, while <code>frog.ui.*</code> owns the executable primitive vocabulary used to access them.
642
+
Likewise, if a class exposes members such as <code>label.text</code>, axis properties, history members, portable <code>style.*</code> surfaces, portable <code>realization.*</code> members, or methods such as <code>append_sample(sample)</code> or <code>clear_history()</code>, this directory owns their legality and meaning, while <code>frog.ui.*</code> owns the executable primitive vocabulary used to access them.
616
643
</p>
617
644
618
645
<hr/>
@@ -632,7 +659,8 @@ A standard widget class may later be accompanied by:
632
659
<li>one or more machine-readable realization packages,</li>
633
660
<li>state-sensitive resource maps,</li>
634
661
<li>structural part bindings,</li>
635
-
<li>anchor or text-region publication for dynamic public parts.</li>
662
+
<li>anchor or text-region publication for dynamic public parts,</li>
663
+
<li>compatible realization variants and compatible skin identities.</li>
636
664
</ul>
637
665
638
666
<p>
@@ -699,6 +727,10 @@ Portability does require:
699
727
Where a class exposes semantic text-bearing or value-bearing public surfaces, portability also requires that runtimes preserve their public meaning even if the visual embodiment differs.
700
728
</p>
701
729
730
+
<p>
731
+
Where a class exposes portable styling or realization-selection surfaces, portability also requires that runtimes treat those surfaces as bounded public configuration surfaces rather than as permission to redefine class semantics.
@@ -729,6 +761,10 @@ Those structures may embody, place, or render the surface.
729
761
They do not redefine its class meaning.
730
762
</p>
731
763
764
+
<p>
765
+
Likewise, a runtime MUST NOT use styling, skinning, or variant selection as a hidden mechanism for silently introducing a different class contract while still claiming conformance to the original published class.
766
+
</p>
767
+
732
768
<hr/>
733
769
734
770
<h2id="status">19. Status</h2>
@@ -757,6 +793,7 @@ The immediate closure direction is:
757
793
<li>stabilize the intrinsic v1 widget core,</li>
758
794
<li>stabilize the status of standardized support widgets relative to that core,</li>
759
795
<li>stabilize the doctrine that distinct visible embodiments do not automatically create distinct classes,</li>
796
+
<li>stabilize the doctrine that bounded styling and skinning remain realization-oriented unless explicitly promoted into class law,</li>
760
797
<li>avoid premature expansion of the intrinsic core,</li>
761
798
<li>preserve the minimum object-surface rule across all intrinsic baseline widgets,</li>
762
799
<li>add near-core classes only after the intrinsic core is fully coherent.</li>
@@ -786,15 +823,25 @@ In short:
786
823
<li><code>.wfrog</code> artifacts publish machine-readable widget and realization artifacts without collapsing those ownership layers.</li>
787
824
</ul>
788
825
826
+
<p>
827
+
The intrinsic baseline is intentionally semantic-first:
828
+
</p>
829
+
830
+
<ul>
831
+
<li>class law defines public meaning,</li>
832
+
<li>realization defines embodiment,</li>
833
+
<li>skins and variants remain compatible realization choices unless public class law explicitly diverges.</li>
834
+
</ul>
835
+
789
836
<p>
790
837
The next most coherent file to handle after this rewrite is:
0 commit comments