@retailcrm/embed-ui-v1-components 0.9.19 → 0.9.21

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 (82) hide show
  1. package/AGENTS.md +8 -0
  2. package/README.md +5 -1
  3. package/bin/embed-ui-v1-components.mjs +32 -24
  4. package/bin/postinstall.mjs +2 -2
  5. package/dist/host.cjs +19 -13
  6. package/dist/host.css +8 -10
  7. package/dist/host.d.ts +52 -58
  8. package/dist/host.js +19 -13
  9. package/dist/remote.cjs +97 -94
  10. package/dist/remote.d.ts +20 -32
  11. package/dist/remote.js +97 -94
  12. package/docs/AGENT-DESIGN-GUIDELINES.md +463 -0
  13. package/docs/AI.md +89 -6
  14. package/docs/FORMAT.md +11 -9
  15. package/docs/PROFILES.md +9 -5
  16. package/docs/README.md +14 -5
  17. package/docs/assets/page-guidelines/card-settings-page.png +0 -0
  18. package/docs/assets/page-guidelines/collapse-block-page.png +0 -0
  19. package/docs/assets/page-guidelines/entity-list-page.png +0 -0
  20. package/docs/assets/page-guidelines/modal-sidebar.png +0 -0
  21. package/docs/assets/page-guidelines/modal-window.png +0 -0
  22. package/docs/assets/page-guidelines/multi-column-page.png +0 -0
  23. package/docs/profiles/UiAddButton.yml +30 -0
  24. package/docs/profiles/UiAlert.yml +27 -0
  25. package/docs/profiles/UiAvatar.yml +26 -0
  26. package/docs/profiles/UiAvatarList.yml +28 -0
  27. package/docs/profiles/UiButton.yml +1 -8
  28. package/docs/profiles/UiCalendar.yml +28 -0
  29. package/docs/profiles/UiCheckbox.yml +32 -0
  30. package/docs/profiles/UiCollapse.yml +34 -0
  31. package/docs/profiles/UiCollapseBox.yml +30 -0
  32. package/docs/profiles/UiCollapseGroup.yml +26 -0
  33. package/docs/profiles/UiCopyButton.yml +35 -0
  34. package/docs/profiles/UiDate.yml +28 -0
  35. package/docs/profiles/UiDatePicker.yml +30 -0
  36. package/docs/profiles/UiError.yml +45 -0
  37. package/docs/profiles/UiField.yml +1 -15
  38. package/docs/profiles/UiImage.yml +28 -0
  39. package/docs/profiles/UiInfobox.yml +33 -0
  40. package/docs/profiles/UiLink.yml +40 -0
  41. package/docs/profiles/UiLoader.yml +35 -0
  42. package/docs/profiles/UiMenuItem.yml +38 -0
  43. package/docs/profiles/UiMenuItemGroup.yml +27 -0
  44. package/docs/profiles/UiModalSidebar.yml +32 -0
  45. package/docs/profiles/UiModalWindow.yml +42 -0
  46. package/docs/profiles/UiModalWindowSurface.yml +32 -0
  47. package/docs/profiles/UiNumberStepper.yml +36 -0
  48. package/docs/profiles/UiPageHeader.yml +1 -23
  49. package/docs/profiles/UiPopper.yml +1 -13
  50. package/docs/profiles/UiPopperConnector.yml +7 -25
  51. package/docs/profiles/UiPopperTarget.yml +7 -25
  52. package/docs/profiles/UiRadio.yml +40 -0
  53. package/docs/profiles/UiRadioSwitch.yml +1 -32
  54. package/docs/profiles/UiRadioSwitchOption.yml +9 -13
  55. package/docs/profiles/UiScrollBox.yml +34 -0
  56. package/docs/profiles/UiSelect.yml +1 -44
  57. package/docs/profiles/UiSelectOption.yml +32 -0
  58. package/docs/profiles/UiSelectOptionGroup.yml +30 -0
  59. package/docs/profiles/UiSkeleton.yml +32 -0
  60. package/docs/profiles/UiSlider.yml +40 -0
  61. package/docs/profiles/UiSwitch.yml +38 -0
  62. package/docs/profiles/UiTab.yml +7 -16
  63. package/docs/profiles/UiTabGroup.yml +1 -30
  64. package/docs/profiles/UiTable.yml +148 -0
  65. package/docs/profiles/UiTableBodyCell.yml +28 -0
  66. package/docs/profiles/UiTableColumn.yml +39 -0
  67. package/docs/profiles/UiTableFooterButton.yml +43 -0
  68. package/docs/profiles/UiTableFooterSection.yml +37 -0
  69. package/docs/profiles/UiTableHeadCell.yml +28 -0
  70. package/docs/profiles/UiTableSorter.yml +29 -0
  71. package/docs/profiles/UiTag.yml +38 -0
  72. package/docs/profiles/UiTextbox.yml +1 -32
  73. package/docs/profiles/UiTimePicker.yml +40 -0
  74. package/docs/profiles/UiToggleButton.yml +1 -11
  75. package/docs/profiles/UiToggleGroup.yml +1 -13
  76. package/docs/profiles/UiToggleGroupOption.yml +9 -11
  77. package/docs/profiles/UiToolbarButton.yml +37 -0
  78. package/docs/profiles/UiToolbarLink.yml +37 -0
  79. package/docs/profiles/UiTooltip.yml +38 -0
  80. package/docs/profiles/UiTransition.yml +37 -0
  81. package/docs/profiles/UiYandexMap.yml +53 -0
  82. package/package.json +15 -15
@@ -3,6 +3,7 @@ summary: >
3
3
  UiField is a remote-only form field wrapper. It connects a label and an inner control through
4
4
  id and ARIA data, supports a hint tooltip near the label, and exposes an addon zone on the
5
5
  right side of the headline.
6
+ usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uifield--docs
6
7
 
7
8
  public_import:
8
9
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -208,21 +209,6 @@ composition:
208
209
  - title: Safe field wiring
209
210
  notes: Use slot props for semantics, not just for visual wrapping.
210
211
 
211
- examples:
212
- - title: Text field with propagated semantics
213
- goal: Build a text field with correct ARIA wiring.
214
- code: |
215
- <UiField id="comment" label="Comment" hint="Visible to managers">
216
- <template #default="field">
217
- <UiTextbox
218
- :id="field.id"
219
- :input-attributes="{
220
- 'aria-labelledby': field.ariaLabelledby,
221
- 'aria-invalid': field.ariaInvalid,
222
- }"
223
- />
224
- </template>
225
- </UiField>
226
212
 
227
213
  ai_notes:
228
214
  do:
@@ -2,6 +2,7 @@ component: UiImage
2
2
  summary: >
3
3
  UiImage is a generic image display component with optional resize and crop hints.
4
4
  Use it for regular visual content rather than identity avatars.
5
+ usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uiimage--docs
5
6
 
6
7
  public_import:
7
8
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -37,3 +38,30 @@ geometry:
37
38
  ai_notes:
38
39
  do:
39
40
  - Use UiImage for general media and UiAvatar for people or identity.
41
+ - Provide alt text unless the image is purely decorative in the host context.
42
+ avoid:
43
+ - Do not use for status icons or avatars.
44
+
45
+ behavior:
46
+ notes:
47
+ - resize and crop are image processing hints, not layout containers.
48
+ - Intrinsic image dimensions still matter unless the parent constrains size.
49
+
50
+ composition:
51
+ works_well_with:
52
+ - UiAvatar
53
+ - UiSkeleton
54
+ patterns:
55
+ - title: Content image
56
+ notes: Use for product, attachment, or preview images where real media is the content.
57
+
58
+ accessibility:
59
+ notes:
60
+ - Keep rendered text concise and meaningful for screen-reader users.
61
+ - Do not use this component as the only carrier of critical state if the state also needs form-level validation or focus management.
62
+
63
+ styling:
64
+ notes:
65
+ - Use documented props and slots as the primary styling API.
66
+ - Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
67
+ - Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
@@ -2,6 +2,7 @@ component: UiInfobox
2
2
  summary: >
3
3
  UiInfobox is a richer explanatory block for inline product, warning, or helper content.
4
4
  It can be closable and expandable.
5
+ usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uiinfobox--docs
5
6
 
6
7
  public_import:
7
8
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -43,3 +44,35 @@ geometry:
43
44
  ai_notes:
44
45
  do:
45
46
  - Use UiInfobox for richer guidance blocks, not tiny alerts.
47
+ - Use expandable when secondary explanation would otherwise make the screen noisy.
48
+ avoid:
49
+ - Do not use for transient success or error states; use UiAlert.
50
+
51
+ behavior:
52
+ notes:
53
+ - shown controls visibility.
54
+ - expandable and expanded control progressive disclosure.
55
+ - warning changes the visual tone for cautionary guidance.
56
+
57
+ composition:
58
+ works_well_with:
59
+ - UiAlert
60
+ - UiCollapse
61
+ patterns:
62
+ - title: Product guidance
63
+ notes: Use near the related form or table, not as a decorative card.
64
+ - title: Long explanation
65
+ notes: Prefer expandable content when the text is useful but not always needed.
66
+
67
+ accessibility:
68
+ notes:
69
+ - Keep rendered text concise and meaningful for screen-reader users.
70
+ - Do not use this component as the only carrier of critical state if the state also needs form-level validation or focus management.
71
+
72
+ styling:
73
+ notes:
74
+ - Use documented props and slots as the primary styling API.
75
+ - Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
76
+ - Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
77
+ root_classes:
78
+ - .ui-v1-infobox
@@ -2,6 +2,7 @@ component: UiLink
2
2
  summary: >
3
3
  UiLink is the main text-link component for inline navigation and inline actions that should
4
4
  still read as links rather than buttons.
5
+ usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uilink--docs
5
6
 
6
7
  public_import:
7
8
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -21,6 +22,7 @@ api:
21
22
  - name: external
22
23
  - name: appearance
23
24
  - name: size
25
+ notes: Defaults to body text. Use size="small" inside UiTable cells to match table body typography.
24
26
  - name: accent
25
27
  - name: ellipsis
26
28
  slots:
@@ -44,8 +46,46 @@ geometry:
44
46
  root_display: inline-flex
45
47
  width_behavior: content-sized by default
46
48
 
49
+ composition:
50
+ works_well_with:
51
+ - UiTable
52
+ - UiToolbarLink
53
+ - UiButton
54
+ patterns:
55
+ - title: Table primary link
56
+ notes: Use size="small", accent, and ellipsis for the primary object link in a table cell.
57
+ - title: External link
58
+ notes: Use external when the link opens outside the current extension context.
59
+ - title: Button-shaped navigation
60
+ notes: Use UiButton with href when the navigation should visually read as a command button.
61
+
47
62
  ai_notes:
48
63
  do:
49
64
  - Use UiLink for real link semantics and inline navigation.
65
+ - Use size="small" for links inside UiTable body cells.
66
+ - Use ellipsis when a table-cell link can contain long names.
50
67
  avoid:
51
68
  - Do not use UiLink where the action should read as a button.
69
+ - Do not leave table-cell links at the default body size unless the link is intentionally emphasized.
70
+
71
+ behavior:
72
+ notes:
73
+ - Read key_props first to identify supported states and variants.
74
+ - Prefer controlled props and documented emits when synchronizing component state with screen logic.
75
+
76
+ accessibility:
77
+ notes:
78
+ - Prefer visible text labels for interactive controls.
79
+ - For icon-only or custom visual content, provide an accessible name through the supported label, title, or ARIA attributes exposed by the component.
80
+ - Preserve native keyboard semantics by using the component root instead of recreating the control with arbitrary markup.
81
+ keyboard:
82
+ - Tab moves focus to the control when it is focusable.
83
+ - Enter or Space activates native button-like controls when the host implementation renders a button.
84
+
85
+ styling:
86
+ notes:
87
+ - Use documented props and slots as the primary styling API.
88
+ - Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
89
+ - Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
90
+ root_classes:
91
+ - .ui-v1-link
@@ -1,6 +1,7 @@
1
1
  component: UiLoader
2
2
  summary: >
3
3
  UiLoader displays loading progress or waiting state. It can be used inline or as an overlay.
4
+ usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uiskeleton--docs
4
5
 
5
6
  public_import:
6
7
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -35,4 +36,38 @@ geometry:
35
36
 
36
37
  ai_notes:
37
38
  do:
39
+ - Use overlay=true when the loader should dim the covered page or module content.
38
40
  - Use overlay or fixed only when the loader should escape normal inline flow.
41
+ - Preserve surrounding filters and headers when only the content area is loading.
42
+ avoid:
43
+ - Do not create custom dimming markup around UiLoader; use the overlay prop.
44
+ - Do not replace content-shaped loading with a page-wide loader when UiSkeleton would communicate layout better.
45
+
46
+ behavior:
47
+ notes:
48
+ - overlay=true adds the dimmed backdrop for covered content.
49
+ - fixed and overlay change the loader from inline feedback into a surface-covering state.
50
+ - diameter and thickness tune the visual weight of the indicator.
51
+
52
+ composition:
53
+ works_well_with:
54
+ - UiSkeleton
55
+ - UiAlert
56
+ patterns:
57
+ - title: Table loading
58
+ notes: Keep filters visible and show loading in the table area.
59
+ - title: Blocking operation
60
+ notes: Use overlay only when interaction with the covered content must be blocked.
61
+
62
+ accessibility:
63
+ notes:
64
+ - Keep rendered text concise and meaningful for screen-reader users.
65
+ - Do not use this component as the only carrier of critical state if the state also needs form-level validation or focus management.
66
+
67
+ styling:
68
+ notes:
69
+ - Use documented props and slots as the primary styling API.
70
+ - Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
71
+ - Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
72
+ root_classes:
73
+ - .ui-v1-loader
@@ -2,6 +2,7 @@ component: UiMenuItem
2
2
  summary: >
3
3
  UiMenuItem is a structured menu row component with support for icons, avatar, description,
4
4
  counters, and active or danger styling.
5
+ usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/uimenuitem--docs
5
6
 
6
7
  public_import:
7
8
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -55,3 +56,40 @@ geometry:
55
56
  ai_notes:
56
57
  do:
57
58
  - Use structured slots instead of custom wrappers inside menu rows.
59
+ - Use danger only for destructive menu actions.
60
+ avoid:
61
+ - Do not use as a generic card or list row outside menu-like surfaces.
62
+
63
+ behavior:
64
+ notes:
65
+ - active marks the current or selected item.
66
+ - disabled prevents interaction.
67
+ - danger changes semantic tone for destructive actions.
68
+
69
+ composition:
70
+ works_well_with:
71
+ - UiMenuItemGroup
72
+ - UiAvatar
73
+ - UiTag
74
+ patterns:
75
+ - title: Command menu row
76
+ notes: Use leading-icon for action identity and trailing-icon for disclosure or shortcut-like hints.
77
+ - title: Entity menu row
78
+ notes: Use avatar and description slots for users, customers, or entities.
79
+
80
+ accessibility:
81
+ notes:
82
+ - Prefer visible text labels for interactive controls.
83
+ - For icon-only or custom visual content, provide an accessible name through the supported label, title, or ARIA attributes exposed by the component.
84
+ - Preserve native keyboard semantics by using the component root instead of recreating the control with arbitrary markup.
85
+ keyboard:
86
+ - Tab moves focus to the control when it is focusable.
87
+ - Enter or Space activates native button-like controls when the host implementation renders a button.
88
+
89
+ styling:
90
+ notes:
91
+ - Use documented props and slots as the primary styling API.
92
+ - Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
93
+ - Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
94
+ root_classes:
95
+ - .ui-v1-menu-item
@@ -2,6 +2,7 @@ component: UiMenuItemGroup
2
2
  summary: >
3
3
  UiMenuItemGroup groups related menu items and exposes dedicated zones for group label
4
4
  and quantity metadata.
5
+ usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/uimenuitem--docs
5
6
 
6
7
  public_import:
7
8
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -48,3 +49,29 @@ geometry:
48
49
  ai_notes:
49
50
  do:
50
51
  - Use for grouped menu structure instead of manual heading-plus-list markup.
52
+ avoid:
53
+ - Do not group unrelated actions only for visual spacing.
54
+
55
+ behavior:
56
+ notes:
57
+ - The group organizes nested menu rows but does not manage selection by itself.
58
+
59
+ composition:
60
+ works_well_with:
61
+ - UiMenuItem
62
+ patterns:
63
+ - title: Grouped options
64
+ notes: Use label and quantity slots to clarify large option groups.
65
+
66
+ accessibility:
67
+ notes:
68
+ - Keep visible labels and slot content meaningful.
69
+ - Prefer documented props and slots over custom DOM replacements so host-side accessibility behavior is preserved.
70
+
71
+ styling:
72
+ notes:
73
+ - Use documented props and slots as the primary styling API.
74
+ - Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
75
+ - Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
76
+ root_classes:
77
+ - .ui-v1-menu-item-group
@@ -2,6 +2,7 @@ component: UiModalSidebar
2
2
  summary: >
3
3
  UiModalSidebar is a side-docked modal surface with open state, direction, size, and
4
4
  scrolling control. Use it when the UI should slide from an edge instead of opening as a centered dialog.
5
+ usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uimodalsidebar--docs
5
6
 
6
7
  public_import:
7
8
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -44,3 +45,34 @@ behavior:
44
45
  ai_notes:
45
46
  do:
46
47
  - Use UiModalSidebar when page context should stay visually connected to the modal content.
48
+ - Use for inspect, edit, or secondary workflows that relate to the current list or page.
49
+ avoid:
50
+ - Do not use for short confirmations; use UiModalWindow.
51
+
52
+ composition:
53
+ works_well_with:
54
+ - UiTable
55
+ - UiField
56
+ - UiButton
57
+ patterns:
58
+ - title: Row detail side panel
59
+ notes: Open from a table row when the user should keep list context visible.
60
+ - title: Side edit form
61
+ notes: Put primary actions in the sidebar footer when the form edits the selected object.
62
+
63
+ accessibility:
64
+ notes:
65
+ - Prefer visible text labels for interactive controls.
66
+ - For icon-only or custom visual content, provide an accessible name through the supported label, title, or ARIA attributes exposed by the component.
67
+ - Preserve native keyboard semantics by using the component root instead of recreating the control with arbitrary markup.
68
+ keyboard:
69
+ - Tab moves focus to the control when it is focusable.
70
+ - Enter or Space activates native button-like controls when the host implementation renders a button.
71
+
72
+ styling:
73
+ notes:
74
+ - Use documented props and slots as the primary styling API.
75
+ - Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
76
+ - Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
77
+ root_classes:
78
+ - .ui-v1-modal-sidebar-overlay
@@ -2,6 +2,7 @@ component: UiModalWindow
2
2
  summary: >
3
3
  UiModalWindow is the main centered modal container. It supports open state, closability,
4
4
  appearance variants, fullscreen and responsive behavior, and dialog roles.
5
+ usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uimodalwindow--docs
5
6
 
6
7
  public_import:
7
8
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -42,3 +43,44 @@ geometry:
42
43
  layout: teleported modal layer with centered surface
43
44
  root_display: flex
44
45
  width_behavior: viewport-covering overlay with content-sized or responsive surface
46
+
47
+ behavior:
48
+ notes:
49
+ - opened controls modal visibility.
50
+ - closable should be false only when the user must complete or acknowledge a blocking flow.
51
+ - fullscreen and responsive affect surface sizing rather than modal semantics.
52
+
53
+ composition:
54
+ works_well_with:
55
+ - UiButton
56
+ - UiField
57
+ - UiModalWindowSurface
58
+ patterns:
59
+ - title: Confirmation dialog
60
+ notes: Keep copy concise and put primary and secondary actions in the footer.
61
+ - title: Focused form
62
+ notes: Use for short forms that should not navigate away from the current page.
63
+
64
+ ai_notes:
65
+ do:
66
+ - Use for focused blocking tasks and confirmations.
67
+ - Provide clear title, body, and footer actions when the modal asks the user to decide.
68
+ avoid:
69
+ - Do not use as a general page layout or for long workflows that deserve a full page or sidebar.
70
+
71
+ accessibility:
72
+ notes:
73
+ - Prefer visible text labels for interactive controls.
74
+ - For icon-only or custom visual content, provide an accessible name through the supported label, title, or ARIA attributes exposed by the component.
75
+ - Preserve native keyboard semantics by using the component root instead of recreating the control with arbitrary markup.
76
+ keyboard:
77
+ - Tab moves focus to the control when it is focusable.
78
+ - Enter or Space activates native button-like controls when the host implementation renders a button.
79
+
80
+ styling:
81
+ notes:
82
+ - Use documented props and slots as the primary styling API.
83
+ - Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
84
+ - Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
85
+ root_classes:
86
+ - .ui-v1-modal-window
@@ -2,6 +2,7 @@ component: UiModalWindowSurface
2
2
  summary: >
3
3
  UiModalWindowSurface is the lower-level modal surface API behind modal window flows.
4
4
  Use it when you need modal surface behavior with more explicit composition control.
5
+ usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uimodalwindow--docs
5
6
 
6
7
  public_import:
7
8
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -39,3 +40,34 @@ geometry:
39
40
  layout: teleported modal overlay
40
41
  root_display: flex
41
42
  width_behavior: viewport-covering overlay with content-sized or responsive surface
43
+
44
+ behavior:
45
+ notes:
46
+ - Lower-level surface keeps modal mechanics while leaving more composition responsibility to the caller.
47
+ - Use role intentionally for dialog or alertdialog flows.
48
+
49
+ composition:
50
+ works_well_with:
51
+ - UiModalWindow
52
+ patterns:
53
+ - title: Custom modal shell
54
+ notes: Use only when UiModalWindow does not expose enough structure for the required modal.
55
+
56
+ ai_notes:
57
+ do:
58
+ - Prefer UiModalWindow for ordinary centered dialogs.
59
+ avoid:
60
+ - Do not choose the surface API just to change simple body content.
61
+
62
+ accessibility:
63
+ notes:
64
+ - Keep visible labels and slot content meaningful.
65
+ - Prefer documented props and slots over custom DOM replacements so host-side accessibility behavior is preserved.
66
+
67
+ styling:
68
+ notes:
69
+ - Use documented props and slots as the primary styling API.
70
+ - Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
71
+ - Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
72
+ root_classes:
73
+ - .ui-v1-modal-window
@@ -2,6 +2,7 @@ component: UiNumberStepper
2
2
  summary: >
3
3
  UiNumberStepper is a numeric input with increase and decrease controls. It is built for
4
4
  constrained numeric entry where arrowing and step-based changes matter.
5
+ usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uinumberstepper--docs
5
6
 
6
7
  public_import:
7
8
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -50,3 +51,38 @@ behavior:
50
51
  notes:
51
52
  - Can clamp values into range.
52
53
  - Supports horizontal and vertical direction.
54
+
55
+ composition:
56
+ works_well_with:
57
+ - UiField
58
+ - UiTextbox
59
+ - UiSlider
60
+ patterns:
61
+ - title: Exact bounded number
62
+ notes: Use for quantities, limits, delays, and other settings where increment and decrement controls are useful.
63
+ - title: Numeric filter
64
+ notes: In table filters, keep the value in query parameters when routing exists.
65
+
66
+ ai_notes:
67
+ do:
68
+ - Use for precise numeric settings with known min, max, or step.
69
+ - Prefer nullable when clearing the value is a valid state.
70
+ avoid:
71
+ - Do not use when the value is an identifier, phone, code, or other numeric-looking text.
72
+
73
+ accessibility:
74
+ notes:
75
+ - Prefer visible text labels for interactive controls.
76
+ - For icon-only or custom visual content, provide an accessible name through the supported label, title, or ARIA attributes exposed by the component.
77
+ - Preserve native keyboard semantics by using the component root instead of recreating the control with arbitrary markup.
78
+ keyboard:
79
+ - Tab moves focus to the control when it is focusable.
80
+ - Enter or Space activates native button-like controls when the host implementation renders a button.
81
+
82
+ styling:
83
+ notes:
84
+ - Use documented props and slots as the primary styling API.
85
+ - Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
86
+ - Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
87
+ root_classes:
88
+ - .ui-v1-number-stepper
@@ -3,6 +3,7 @@ summary: >
3
3
  UiPageHeader is a page or major section header with an optional inline addon next to the title
4
4
  and an optional actions area on the right. In display state it renders the title as a semantic h1;
5
5
  in edit state it switches to UiTextbox.
6
+ usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uipageheader--docs
6
7
 
7
8
  public_import:
8
9
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -209,29 +210,6 @@ composition:
209
210
  - title: Compact actions
210
211
  notes: Keep only one or two compact actions on the right.
211
212
 
212
- examples:
213
- - title: Editable header with addon and actions
214
- goal: Build a page header with inline validation and a link near the title.
215
- code: |
216
- <UiPageHeader
217
- v-model:value="title"
218
- :invalid="!title"
219
- :error="title ? '' : 'Title is required'"
220
- editable
221
- placeholder="Enter a title"
222
- >
223
- <template #addon>
224
- <UiLink>
225
- Collapse filter
226
- </UiLink>
227
- </template>
228
-
229
- <template #actions>
230
- <UiButton appearance="tertiary">
231
- Actions
232
- </UiButton>
233
- </template>
234
- </UiPageHeader>
235
213
 
236
214
  ai_notes:
237
215
  do:
@@ -3,6 +3,7 @@ summary: >
3
3
  UiPopper is the low-level floating layer used for tooltips, dropdowns, and popups.
4
4
  It controls visibility, teleport container, positioning, and trigger logic, but is usually
5
5
  consumed as part of a higher-level component rather than as a standalone content wrapper.
6
+ usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uipopper--docs
6
7
 
7
8
  public_import:
8
9
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -178,19 +179,6 @@ composition:
178
179
  - title: Shared target context
179
180
  notes: The target ref usually comes through UiPopperConnector and UiPopperTarget.
180
181
 
181
- examples:
182
- - title: Mental model
183
- goal: Understand the basic target plus floating content pattern.
184
- code: |
185
- <UiPopperConnector>
186
- <UiPopperTarget>
187
- <button type="button">Open</button>
188
- </UiPopperTarget>
189
-
190
- <UiPopper :visible="open">
191
- Popup content
192
- </UiPopper>
193
- </UiPopperConnector>
194
182
 
195
183
  ai_notes:
196
184
  do:
@@ -3,6 +3,7 @@ summary: >
3
3
  UiPopperConnector is a lightweight wrapper that gives target-side and popper-side parts
4
4
  a shared target context. It has almost no UI meaning on its own, but is often required
5
5
  for correct target-driven floating behavior.
6
+ usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uipopper--docs
6
7
 
7
8
  public_import:
8
9
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -80,31 +81,6 @@ composition:
80
81
  - title: Explicit anchor
81
82
  notes: Add UiPopperTarget only when the anchor must be limited to a specific wrapper or sub-area.
82
83
 
83
- examples:
84
- - title: Shared target context
85
- goal: Connect target and popper through one shared wrapper.
86
- code: |
87
- <UiPopperConnector>
88
- <UiPopperTarget>
89
- <button type="button">Open</button>
90
- </UiPopperTarget>
91
-
92
- <UiPopper :visible="open">
93
- Content
94
- </UiPopper>
95
- </UiPopperConnector>
96
- - title: Connector without explicit target
97
- goal: Use a button as the implicit anchor.
98
- code: |
99
- <UiPopperConnector>
100
- <UiButton appearance="secondary">
101
- Open
102
- </UiButton>
103
-
104
- <UiPopper :visible="open">
105
- Content
106
- </UiPopper>
107
- </UiPopperConnector>
108
84
 
109
85
  ai_notes:
110
86
  do:
@@ -113,3 +89,9 @@ ai_notes:
113
89
  avoid:
114
90
  - Do not use it as a styling wrapper.
115
91
  - Do not add UiPopperTarget automatically around every trigger.
92
+
93
+ styling:
94
+ notes:
95
+ - Use documented props and slots as the primary styling API.
96
+ - Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
97
+ - Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
@@ -2,6 +2,7 @@ component: UiPopperTarget
2
2
  summary: >
3
3
  UiPopperTarget is the target-side wrapper that registers a DOM element in popper context.
4
4
  A good mental model is "this node is the anchor", not "this is a visual layout wrapper".
5
+ usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uipopper--docs
5
6
 
6
7
  public_import:
7
8
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -83,31 +84,6 @@ composition:
83
84
  - title: Not always needed
84
85
  notes: Connector-only composition is enough when the trigger already exposes its root element.
85
86
 
86
- examples:
87
- - title: Tooltip anchor
88
- goal: Anchor a floating layer to a specific title or button wrapper.
89
- code: |
90
- <UiPopperConnector>
91
- <UiPopperTarget tag="span">
92
- <span>Title</span>
93
- </UiPopperTarget>
94
-
95
- <UiPopper :visible="open">
96
- Tooltip
97
- </UiPopper>
98
- </UiPopperConnector>
99
- - title: Explicit title-only anchor
100
- goal: Bind the floating layer to a title wrapper instead of the whole row.
101
- code: |
102
- <UiPopperConnector>
103
- <UiPopperTarget tag="span">
104
- <span class="header-title">Title</span>
105
- </UiPopperTarget>
106
-
107
- <UiPopper :visible="open">
108
- Tooltip
109
- </UiPopper>
110
- </UiPopperConnector>
111
87
 
112
88
  ai_notes:
113
89
  do:
@@ -116,3 +92,9 @@ ai_notes:
116
92
  avoid:
117
93
  - Do not treat the wrapper as decorative only; it affects what the floating layer anchors to.
118
94
  - Do not wrap every UiButton or similar trigger with UiPopperTarget if connector already gives the correct anchor.
95
+
96
+ styling:
97
+ notes:
98
+ - Use documented props and slots as the primary styling API.
99
+ - Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
100
+ - Use Storybook from the usage link to verify visual variants before generating custom layout around the component.