@retailcrm/embed-ui-v1-components 0.9.15 → 0.9.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/assets/sprites/map-and-places/navigate.svg +3 -0
  2. package/dist/host.cjs +1229 -616
  3. package/dist/host.css +346 -0
  4. package/dist/host.d.ts +300 -118
  5. package/dist/host.js +1229 -616
  6. package/dist/remote.cjs +501 -61
  7. package/dist/remote.d.ts +667 -81
  8. package/dist/remote.js +502 -62
  9. package/docs/COMPONENTS.md +4 -0
  10. package/docs/FORMAT.md +19 -0
  11. package/docs/PROFILES.md +2 -0
  12. package/docs/profiles/UiAddButton.yml +12 -0
  13. package/docs/profiles/UiAlert.yml +12 -0
  14. package/docs/profiles/UiAvatar.yml +12 -0
  15. package/docs/profiles/UiAvatarList.yml +12 -0
  16. package/docs/profiles/UiButton.yml +8 -0
  17. package/docs/profiles/UiCalendar.yml +12 -0
  18. package/docs/profiles/UiCheckbox.yml +12 -0
  19. package/docs/profiles/UiCollapse.yml +12 -0
  20. package/docs/profiles/UiCollapseBox.yml +12 -0
  21. package/docs/profiles/UiCollapseGroup.yml +12 -0
  22. package/docs/profiles/UiCopyButton.yml +12 -0
  23. package/docs/profiles/UiDate.yml +12 -0
  24. package/docs/profiles/UiDatePicker.yml +12 -0
  25. package/docs/profiles/UiError.yml +12 -0
  26. package/docs/profiles/UiField.yml +5 -1
  27. package/docs/profiles/UiImage.yml +12 -0
  28. package/docs/profiles/UiInfobox.yml +12 -0
  29. package/docs/profiles/UiLink.yml +12 -0
  30. package/docs/profiles/UiLoader.yml +12 -0
  31. package/docs/profiles/UiMenuItem.yml +12 -0
  32. package/docs/profiles/UiMenuItemGroup.yml +12 -0
  33. package/docs/profiles/UiModalSidebar.yml +12 -0
  34. package/docs/profiles/UiModalWindow.yml +12 -0
  35. package/docs/profiles/UiModalWindowSurface.yml +12 -0
  36. package/docs/profiles/UiNumberStepper.yml +12 -0
  37. package/docs/profiles/UiPageHeader.yml +5 -1
  38. package/docs/profiles/UiPopper.yml +5 -1
  39. package/docs/profiles/UiPopperConnector.yml +6 -0
  40. package/docs/profiles/UiPopperTarget.yml +6 -0
  41. package/docs/profiles/UiRadio.yml +12 -0
  42. package/docs/profiles/UiRadioSwitch.yml +7 -0
  43. package/docs/profiles/UiRadioSwitchOption.yml +8 -0
  44. package/docs/profiles/UiScrollBox.yml +12 -0
  45. package/docs/profiles/UiSelect.yml +9 -0
  46. package/docs/profiles/UiSelectOption.yml +12 -0
  47. package/docs/profiles/UiSelectOptionGroup.yml +12 -0
  48. package/docs/profiles/UiSkeleton.yml +41 -0
  49. package/docs/profiles/UiSlider.yml +12 -0
  50. package/docs/profiles/UiSwitch.yml +12 -0
  51. package/docs/profiles/UiTab.yml +5 -0
  52. package/docs/profiles/UiTabGroup.yml +5 -0
  53. package/docs/profiles/UiTable.yml +5 -1
  54. package/docs/profiles/UiTableBodyCell.yml +12 -0
  55. package/docs/profiles/UiTableColumn.yml +12 -0
  56. package/docs/profiles/UiTableFooterButton.yml +12 -0
  57. package/docs/profiles/UiTableFooterSection.yml +12 -0
  58. package/docs/profiles/UiTableHeadCell.yml +12 -0
  59. package/docs/profiles/UiTableSorter.yml +12 -0
  60. package/docs/profiles/UiTag.yml +12 -0
  61. package/docs/profiles/UiTextbox.yml +5 -1
  62. package/docs/profiles/UiTimePicker.yml +12 -0
  63. package/docs/profiles/UiToggleButton.yml +211 -0
  64. package/docs/profiles/UiToggleGroup.yml +211 -0
  65. package/docs/profiles/UiToggleGroupOption.yml +116 -0
  66. package/docs/profiles/UiToolbarButton.yml +12 -0
  67. package/docs/profiles/UiToolbarLink.yml +12 -0
  68. package/docs/profiles/UiTooltip.yml +12 -0
  69. package/docs/profiles/UiTransition.yml +12 -0
  70. package/docs/profiles/UiYandexMap.yml +12 -0
  71. package/package.json +2 -2
@@ -16,6 +16,8 @@ Detailed AI-friendly profiles are collected in [`PROFILES.md`](./PROFILES.md).
16
16
  - [`UiRadio`](./profiles/UiRadio.yml): single choice
17
17
  - [`UiRadioSwitch`](./profiles/UiRadioSwitch.yml): segmented single-choice switch with inline or section-card appearance
18
18
  - [`UiRadioSwitchOption`](./profiles/UiRadioSwitchOption.yml): rich option child for UiRadioSwitch
19
+ - [`UiToggleGroup`](./profiles/UiToggleGroup.yml): segmented multi-select group built from toggle buttons
20
+ - [`UiToggleGroupOption`](./profiles/UiToggleGroupOption.yml): rich option child for UiToggleGroup
19
21
  - [`UiSwitch`](./profiles/UiSwitch.yml): state toggle
20
22
  - [`UiSlider`](./profiles/UiSlider.yml): ranged value selection
21
23
  - [`UiSelect`](./profiles/UiSelect.yml): select container for single or multiple choice
@@ -29,6 +31,7 @@ Detailed AI-friendly profiles are collected in [`PROFILES.md`](./PROFILES.md).
29
31
  ## Actions And Navigation
30
32
 
31
33
  - [`UiButton`](./profiles/UiButton.yml): main action button that can render as a button or anchor
34
+ - [`UiToggleButton`](./profiles/UiToggleButton.yml): stateful toggle button primitive for standalone or grouped use
32
35
  - [`UiAddButton`](./profiles/UiAddButton.yml): add action button
33
36
  - [`UiCopyButton`](./profiles/UiCopyButton.yml): copy value action
34
37
  - [`UiToolbarButton`](./profiles/UiToolbarButton.yml): toolbar button
@@ -54,6 +57,7 @@ Detailed AI-friendly profiles are collected in [`PROFILES.md`](./PROFILES.md).
54
57
  - [`UiInfobox`](./profiles/UiInfobox.yml): highlighted explanatory block
55
58
  - [`UiError`](./profiles/UiError.yml): compact error state
56
59
  - [`UiLoader`](./profiles/UiLoader.yml): loading indicator
60
+ - [`UiSkeleton`](./profiles/UiSkeleton.yml): content placeholder for loading state
57
61
  - [`UiTag`](./profiles/UiTag.yml): labels and statuses
58
62
 
59
63
  ## Overlays And Modal Patterns
package/docs/FORMAT.md CHANGED
@@ -52,6 +52,17 @@ api:
52
52
  - name: update:value
53
53
  payload: unknown
54
54
 
55
+ rendered_structure:
56
+ descriptive_only: true
57
+ root:
58
+ shape: div.ui-v1-component
59
+ tag: div
60
+
61
+ geometry:
62
+ layout: block-like root
63
+ root_display: block
64
+ width_behavior: stretches to container width by default
65
+
55
66
  styling:
56
67
  root_classes:
57
68
  - .ui-v1-component
@@ -140,6 +151,7 @@ Inside `api`, it is useful to distinguish:
140
151
  Describe the actual rendered shape:
141
152
 
142
153
  - the root container;
154
+ - the actual root tag or tags when they matter, for example `button`, `a`, `div`, or `span`;
143
155
  - the main internal zones;
144
156
  - where label, control, action area, icon area, popper content, and similar parts live;
145
157
  - current root classes and state classes, if they help reasoning.
@@ -155,10 +167,17 @@ Important:
155
167
  Capture:
156
168
 
157
169
  - whether the component is block-like or inline-like;
170
+ - what the root behaves like in layout terms, for example `block`, `inline-block`, `inline-flex`, or `flex`;
158
171
  - what stretches to `width: 100%` and what stays content-sized;
159
172
  - how the component behaves in a row, grid, header, or popper;
160
173
  - which props affect dimensions: `size`, `multiline`, `autofit`, `popperFitTrigger`, and so on.
161
174
 
175
+ Useful optional fields:
176
+
177
+ - `root_display` for the root display mode or the common display modes when the root changes by props;
178
+ - `width_behavior` for whether the component stretches, shrinks to content, or switches between those modes;
179
+ - `notes` for short practical remarks about how the root behaves in layout and composition.
180
+
162
181
  ## 8. `styling`
163
182
 
164
183
  Capture only the styling data that helps an agent make safe decisions:
package/docs/PROFILES.md CHANGED
@@ -36,6 +36,8 @@ Current high-signal core profiles:
36
36
  - [`UiField`](./profiles/UiField.yml)
37
37
  - [`UiTextbox`](./profiles/UiTextbox.yml)
38
38
  - [`UiButton`](./profiles/UiButton.yml)
39
+ - [`UiToggleButton`](./profiles/UiToggleButton.yml)
40
+ - [`UiToggleGroup`](./profiles/UiToggleGroup.yml)
39
41
  - [`UiPageHeader`](./profiles/UiPageHeader.yml)
40
42
  - [`UiSelect`](./profiles/UiSelect.yml)
41
43
  - [`UiRadioSwitch`](./profiles/UiRadioSwitch.yml)
@@ -34,6 +34,18 @@ api:
34
34
  zone: secondary-copy
35
35
  creates: Optional secondary description near the main label.
36
36
 
37
+ rendered_structure:
38
+ descriptive_only: true
39
+ root:
40
+ shape: button.ui-v1-add-button
41
+ tag: button
42
+ notes: Current root is a single action button with optional icon and description zones.
43
+
44
+ geometry:
45
+ layout: button-like action root
46
+ root_display: flex
47
+ width_behavior: content-sized by default
48
+
37
49
  behavior:
38
50
  notes:
39
51
  - Behaves like a clickable add action with standard button focus and click semantics.
@@ -24,6 +24,18 @@ api:
24
24
  - name: closable
25
25
  - name: fluid
26
26
 
27
+ rendered_structure:
28
+ descriptive_only: true
29
+ root:
30
+ shape: div.ui-v1-alert
31
+ tag: div
32
+ notes: Current alert body is wrapped in UiTransition and uses one flex row for icon, content, and optional closer.
33
+
34
+ geometry:
35
+ layout: block-like feedback row
36
+ root_display: flex
37
+ width_behavior: stretches to container width by default
38
+
27
39
  behavior:
28
40
  notes:
29
41
  - shown controls visibility.
@@ -24,6 +24,18 @@ api:
24
24
  - name: size
25
25
  - name: href
26
26
 
27
+ rendered_structure:
28
+ descriptive_only: true
29
+ root:
30
+ shape: div.ui-v1-avatar or a.ui-v1-avatar
31
+ tag: div or a
32
+ notes: The root switches to anchor when href is provided.
33
+
34
+ geometry:
35
+ layout: avatar frame
36
+ root_display: inline-block
37
+ width_behavior: content-sized by size
38
+
27
39
  behavior:
28
40
  notes:
29
41
  - Can render linked avatar behavior when href is provided.
@@ -23,6 +23,18 @@ api:
23
23
  - name: avatars
24
24
  - name: size
25
25
 
26
+ rendered_structure:
27
+ descriptive_only: true
28
+ root:
29
+ shape: div.ui-v1-avatar-list
30
+ tag: div
31
+ notes: Renders one wrapper around a compact row of avatars.
32
+
33
+ geometry:
34
+ layout: inline avatar row
35
+ root_display: flex
36
+ width_behavior: content-sized by default
37
+
26
38
  ai_notes:
27
39
  do:
28
40
  - Use for compact grouped identity display.
@@ -83,7 +83,9 @@ rendered_structure:
83
83
  This internal DOM description is useful for reasoning, not for styling against implementation details.
84
84
  root:
85
85
  button_shape: button.ui-v1-button
86
+ button_tag: button
86
87
  link_shape: a.ui-v1-button
88
+ link_tag: a
87
89
  zones:
88
90
  - .ui-v1-button__content
89
91
  - text span
@@ -95,7 +97,13 @@ rendered_structure:
95
97
 
96
98
  geometry:
97
99
  layout: inline-block
100
+ root_display:
101
+ default_button: inline-block
102
+ default_link: inline-block
103
+ width_behavior: content-sized by default
98
104
  notes:
105
+ - Fits naturally into inline rows and action strips.
106
+ - Does not behave like a full-width block unless constrained by the parent layout.
99
107
  - Size controls dimensions and internal paddings.
100
108
  - Icon-only content leads to a square-like layout through state classes.
101
109
  - The component fits naturally into inline rows, header actions, and compact action zones.
@@ -24,6 +24,18 @@ api:
24
24
  - name: maxDate
25
25
  - name: locale
26
26
 
27
+ rendered_structure:
28
+ descriptive_only: true
29
+ root:
30
+ shape: div.ui-v1-calendar
31
+ tag: div
32
+ notes: The root contains header controls, weekday labels, and the date grid.
33
+
34
+ geometry:
35
+ layout: block-like calendar panel
36
+ root_display: flex
37
+ width_behavior: stretches to container width by default
38
+
27
39
  behavior:
28
40
  notes:
29
41
  - Supports single and range selection.
@@ -29,6 +29,18 @@ api:
29
29
  - name: focus
30
30
  - name: blur
31
31
 
32
+ rendered_structure:
33
+ descriptive_only: true
34
+ root:
35
+ shape: span.ui-v1-checkbox
36
+ tag: span
37
+ notes: One inline wrapper around the visual checkbox control and label content.
38
+
39
+ geometry:
40
+ layout: inline checkbox control
41
+ root_display: inline-flex
42
+ width_behavior: content-sized by default
43
+
32
44
  behavior:
33
45
  notes:
34
46
  - model plus value supports group-style selection.
@@ -21,6 +21,18 @@ api:
21
21
  - name: collapseBehaviour
22
22
  - name: duration
23
23
 
24
+ rendered_structure:
25
+ descriptive_only: true
26
+ root:
27
+ shape: div.ui-v1-collapse
28
+ tag: div
29
+ notes: The animated container is wrapped in a native transition and exists only while shown or expanded.
30
+
31
+ geometry:
32
+ layout: block-like animated container
33
+ root_display: block
34
+ width_behavior: stretches to container width by default
35
+
24
36
  ai_notes:
25
37
  do:
26
38
  - Use UiCollapse as a primitive for expandable content regions.
@@ -28,6 +28,18 @@ api:
28
28
  - name: disabled
29
29
  - name: color
30
30
 
31
+ rendered_structure:
32
+ descriptive_only: true
33
+ root:
34
+ shape: section.ui-v1-collapse-box
35
+ tag: section
36
+ notes: Renders one section root with a header button and a collapsible body region.
37
+
38
+ geometry:
39
+ layout: block-like collapsible section
40
+ root_display: flex
41
+ width_behavior: stretches to container width by default
42
+
31
43
  behavior:
32
44
  notes:
33
45
  - Supports controlled expanded state and grouped interaction.
@@ -22,6 +22,18 @@ api:
22
22
  key_props:
23
23
  - name: activeBoxId
24
24
 
25
+ rendered_structure:
26
+ descriptive_only: true
27
+ root:
28
+ shape: div
29
+ tag: div
30
+ notes: Current implementation is an unstyled wrapper that coordinates child UiCollapseBox nodes.
31
+
32
+ geometry:
33
+ layout: block wrapper for stacked collapse boxes
34
+ root_display: block
35
+ width_behavior: stretches to container width by default
36
+
25
37
  ai_notes:
26
38
  do:
27
39
  - Use with UiCollapseBox when grouped expansion matters.
@@ -35,6 +35,18 @@ api:
35
35
  zone: tooltip
36
36
  creates: Tooltip content after copy succeeds.
37
37
 
38
+ rendered_structure:
39
+ descriptive_only: true
40
+ root:
41
+ shape: div.ui-v1-copy-button
42
+ tag: div
43
+ notes: The root wraps the trigger, tooltip, and fallback input for clipboard support.
44
+
45
+ geometry:
46
+ layout: inline trigger wrapper
47
+ root_display: inline-block
48
+ width_behavior: content-sized by default
49
+
38
50
  ai_notes:
39
51
  do:
40
52
  - Use for copy-specific flows instead of recreating copy state manually.
@@ -21,6 +21,18 @@ api:
21
21
  - name: withTime
22
22
  - name: locale
23
23
 
24
+ rendered_structure:
25
+ descriptive_only: true
26
+ root:
27
+ shape: time
28
+ tag: time
29
+ notes: Renders one semantic time element with formatted date text.
30
+
31
+ geometry:
32
+ layout: inline date text
33
+ root_display: inline
34
+ width_behavior: content-sized by content
35
+
24
36
  ai_notes:
25
37
  do:
26
38
  - Use UiDate for formatted output and UiDatePicker for input.
@@ -35,6 +35,18 @@ api:
35
35
  - name: close
36
36
  - name: toggle
37
37
 
38
+ rendered_structure:
39
+ descriptive_only: true
40
+ root:
41
+ shape: span.ui-v1-date-picker
42
+ tag: span
43
+ notes: The visible trigger behaves like an inline date control that opens a floating calendar.
44
+
45
+ geometry:
46
+ layout: inline date input trigger
47
+ root_display: inline-block
48
+ width_behavior: content-sized by default
49
+
38
50
  behavior:
39
51
  notes:
40
52
  - Supports single-date and range flows.
@@ -15,6 +15,18 @@ use_when:
15
15
  avoid_when:
16
16
  - You need a richer feedback block, use UiAlert or UiInfobox instead.
17
17
 
18
+ rendered_structure:
19
+ descriptive_only: true
20
+ root:
21
+ shape: div.ui-v1-error
22
+ tag: div
23
+ notes: Renders one text container for error content.
24
+
25
+ geometry:
26
+ layout: block-like error text container
27
+ root_display: block
28
+ width_behavior: stretches to container width by default
29
+
18
30
  ai_notes:
19
31
  do:
20
32
  - Use for compact error presentation.
@@ -116,7 +116,9 @@ rendered_structure:
116
116
  descriptive_only: true
117
117
  notes: >
118
118
  This is a debugging and reasoning model, not a public styling contract.
119
- root: .ui-v1-field
119
+ root:
120
+ shape: div.ui-v1-field
121
+ tag: div
120
122
  zones:
121
123
  - .ui-v1-field__headline
122
124
  - .ui-v1-field__label
@@ -126,8 +128,10 @@ rendered_structure:
126
128
 
127
129
  geometry:
128
130
  layout: grid
131
+ root_display: grid
129
132
  width: 100%
130
133
  min_width: 0
134
+ width_behavior: stretches to container width by default
131
135
  notes:
132
136
  - Root uses grid with a 4px gap.
133
137
  - The headline is a flex row.
@@ -22,6 +22,18 @@ api:
22
22
  - name: resize
23
23
  - name: crop
24
24
 
25
+ rendered_structure:
26
+ descriptive_only: true
27
+ root:
28
+ shape: img
29
+ tag: img
30
+ notes: The component renders a single image element.
31
+
32
+ geometry:
33
+ layout: replaced media element
34
+ root_display: inline-block
35
+ width_behavior: intrinsic by image source or explicit dimensions
36
+
25
37
  ai_notes:
26
38
  do:
27
39
  - Use UiImage for general media and UiAvatar for people or identity.
@@ -28,6 +28,18 @@ api:
28
28
  - name: hide
29
29
  - name: toggle
30
30
 
31
+ rendered_structure:
32
+ descriptive_only: true
33
+ root:
34
+ shape: div.ui-v1-infobox
35
+ tag: div
36
+ notes: The visible infobox body is wrapped in UiTransition and uses one flex row for media, content, and optional closer.
37
+
38
+ geometry:
39
+ layout: block-like message panel
40
+ root_display: flex
41
+ width_behavior: stretches to container width by default
42
+
31
43
  ai_notes:
32
44
  do:
33
45
  - Use UiInfobox for richer guidance blocks, not tiny alerts.
@@ -32,6 +32,18 @@ api:
32
32
  - name: focus
33
33
  - name: blur
34
34
 
35
+ rendered_structure:
36
+ descriptive_only: true
37
+ root:
38
+ shape: a.ui-v1-link
39
+ tag: a
40
+ notes: The root is one anchor element with inline icon and text zones.
41
+
42
+ geometry:
43
+ layout: inline link root
44
+ root_display: inline-flex
45
+ width_behavior: content-sized by default
46
+
35
47
  ai_notes:
36
48
  do:
37
49
  - Use UiLink for real link semantics and inline navigation.
@@ -21,6 +21,18 @@ api:
21
21
  - name: fixed
22
22
  - name: overlay
23
23
 
24
+ rendered_structure:
25
+ descriptive_only: true
26
+ root:
27
+ shape: div.ui-v1-loader
28
+ tag: div
29
+ notes: The loader body may be wrapped in UiTransition, but the visible loader itself is one div root.
30
+
31
+ geometry:
32
+ layout: loader surface or overlay
33
+ root_display: block
34
+ width_behavior: content-sized by default, viewport-covering in fixed or overlay modes
35
+
24
36
  ai_notes:
25
37
  do:
26
38
  - Use overlay or fixed only when the loader should escape normal inline flow.
@@ -40,6 +40,18 @@ api:
40
40
  zone: trailing-icon
41
41
  creates: Trailing icon zone.
42
42
 
43
+ rendered_structure:
44
+ descriptive_only: true
45
+ root:
46
+ shape: div.ui-v1-menu-item
47
+ tag: div
48
+ notes: The root is one menu row container with leading, main, and trailing content zones.
49
+
50
+ geometry:
51
+ layout: menu row
52
+ root_display: flex
53
+ width_behavior: stretches to available menu width
54
+
43
55
  ai_notes:
44
56
  do:
45
57
  - Use structured slots instead of custom wrappers inside menu rows.
@@ -33,6 +33,18 @@ api:
33
33
  zone: group-meta
34
34
  creates: Group quantity or meta area.
35
35
 
36
+ rendered_structure:
37
+ descriptive_only: true
38
+ root:
39
+ shape: div.ui-v1-menu-item-group
40
+ tag: div
41
+ notes: The root wraps the group head and the nested option content.
42
+
43
+ geometry:
44
+ layout: block-like menu group wrapper
45
+ root_display: block
46
+ width_behavior: stretches to available menu width
47
+
36
48
  ai_notes:
37
49
  do:
38
50
  - Use for grouped menu structure instead of manual heading-plus-list markup.
@@ -24,6 +24,18 @@ api:
24
24
  - name: scrolling
25
25
  - name: fixed
26
26
 
27
+ rendered_structure:
28
+ descriptive_only: true
29
+ root:
30
+ shape: div.ui-v1-modal-sidebar-overlay
31
+ tag: div
32
+ notes: The component is teleported; the overlay div contains the actual aside.ui-v1-modal-sidebar panel.
33
+
34
+ geometry:
35
+ layout: teleported overlay with side panel
36
+ root_display: flex
37
+ width_behavior: viewport-covering overlay with fixed-width sidebar surface
38
+
27
39
  behavior:
28
40
  notes:
29
41
  - opened controls visibility.
@@ -30,3 +30,15 @@ api:
30
30
  methods:
31
31
  - name: open
32
32
  - name: close
33
+
34
+ rendered_structure:
35
+ descriptive_only: true
36
+ root:
37
+ shape: div.ui-v1-modal-window via UiModalWindowSurface
38
+ tag: div
39
+ notes: The component delegates the actual teleported modal root to UiModalWindowSurface and renders header, content, and footer inside it.
40
+
41
+ geometry:
42
+ layout: teleported modal layer with centered surface
43
+ root_display: flex
44
+ width_behavior: viewport-covering overlay with content-sized or responsive surface
@@ -27,3 +27,15 @@ api:
27
27
  - name: responsive
28
28
  - name: scrolling
29
29
  - name: role
30
+
31
+ rendered_structure:
32
+ descriptive_only: true
33
+ root:
34
+ shape: div.ui-v1-modal-window
35
+ tag: div
36
+ notes: The component is teleported and renders the modal overlay and surface container directly.
37
+
38
+ geometry:
39
+ layout: teleported modal overlay
40
+ root_display: flex
41
+ width_behavior: viewport-covering overlay with content-sized or responsive surface
@@ -34,6 +34,18 @@ api:
34
34
  - name: increase
35
35
  - name: decrease
36
36
 
37
+ rendered_structure:
38
+ descriptive_only: true
39
+ root:
40
+ shape: div.ui-v1-number-stepper
41
+ tag: div
42
+ notes: One inline control root wraps the text input and increment or decrement actions.
43
+
44
+ geometry:
45
+ layout: inline numeric control
46
+ root_display: inline-flex
47
+ width_behavior: content-sized by default
48
+
37
49
  behavior:
38
50
  notes:
39
51
  - Can clamp values into range.
@@ -106,7 +106,9 @@ rendered_structure:
106
106
  descriptive_only: true
107
107
  notes: >
108
108
  This structure is useful for reasoning and debugging, not as a public styling API.
109
- root: .ui-v1-page-header
109
+ root:
110
+ shape: div.ui-v1-page-header
111
+ tag: div
110
112
  zones:
111
113
  - .ui-v1-page-header__main
112
114
  - .ui-v1-page-header__title
@@ -120,6 +122,8 @@ rendered_structure:
120
122
 
121
123
  geometry:
122
124
  layout: flex
125
+ root_display: flex
126
+ width_behavior: stretches to container width by default
123
127
  notes:
124
128
  - Root uses justify-content space-between and can wrap.
125
129
  - The main area contains title and optional addon.
@@ -94,7 +94,9 @@ api:
94
94
 
95
95
  rendered_structure:
96
96
  descriptive_only: true
97
- root: .ui-v1-popper
97
+ root:
98
+ shape: div.ui-v1-popper
99
+ tag: div
98
100
  zones:
99
101
  - .ui-v1-popper__arrow when withArrow=true
100
102
  - .ui-v1-popper__content
@@ -102,6 +104,8 @@ rendered_structure:
102
104
 
103
105
  geometry:
104
106
  layout: floating layer outside normal document flow
107
+ root_display: block
108
+ width_behavior: content-sized by floating content
105
109
  notes:
106
110
  - Position is calculated relative to the target element.
107
111
  - Container controls where the DOM node is teleported.
@@ -43,10 +43,16 @@ api:
43
43
 
44
44
  rendered_structure:
45
45
  descriptive_only: true
46
+ root:
47
+ shape: no persistent DOM root
48
+ tag: none
46
49
  notes: >
47
50
  The connector exists mainly to provide target context. It is not a styled layout primitive.
48
51
 
49
52
  geometry:
53
+ layout: no standalone layout of its own
54
+ root_display: none
55
+ width_behavior: defined by slotted children
50
56
  notes:
51
57
  - It usually has no meaningful layout behavior on its own.
52
58
  - Treat it as a context wrapper, not as a visual block.
@@ -46,11 +46,17 @@ api:
46
46
 
47
47
  rendered_structure:
48
48
  descriptive_only: true
49
+ root:
50
+ shape: configurable wrapper tag
51
+ tag: configurable, div by default
49
52
  notes: >
50
53
  The component renders a configurable wrapper tag and stores its element ref in popper context.
51
54
  It does not add complex UI logic on its own.
52
55
 
53
56
  geometry:
57
+ layout: wrapper defined by the chosen tag
58
+ root_display: depends on the chosen tag
59
+ width_behavior: follows the chosen tag and its children
54
60
  notes:
55
61
  - Layout depends on the chosen tag and its children.
56
62
  - Its main purpose is to provide the correct anchor ref for the popper.
@@ -24,3 +24,15 @@ api:
24
24
  - name: click
25
25
  - name: focus
26
26
  - name: blur
27
+
28
+ rendered_structure:
29
+ descriptive_only: true
30
+ root:
31
+ shape: span.ui-v1-radio
32
+ tag: span
33
+ notes: One inline wrapper around the visual radio control and label content.
34
+
35
+ geometry:
36
+ layout: inline radio control
37
+ root_display: inline-flex
38
+ width_behavior: content-sized by default