@retailcrm/embed-ui-v1-components 0.9.18 → 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.
- package/AGENTS.md +8 -0
- package/README.md +5 -1
- package/bin/embed-ui-v1-components.mjs +32 -24
- package/bin/postinstall.mjs +2 -2
- package/dist/host.cjs +19 -13
- package/dist/host.css +8 -10
- package/dist/host.d.ts +52 -58
- package/dist/host.js +19 -13
- package/dist/remote.cjs +110 -100
- package/dist/remote.d.ts +30 -36
- package/dist/remote.js +110 -100
- package/docs/AGENT-DESIGN-GUIDELINES.md +463 -0
- package/docs/AI.md +89 -6
- package/docs/FORMAT.md +11 -9
- package/docs/PROFILES.md +9 -5
- package/docs/README.md +14 -5
- package/docs/assets/page-guidelines/card-settings-page.png +0 -0
- package/docs/assets/page-guidelines/collapse-block-page.png +0 -0
- package/docs/assets/page-guidelines/entity-list-page.png +0 -0
- package/docs/assets/page-guidelines/modal-sidebar.png +0 -0
- package/docs/assets/page-guidelines/modal-window.png +0 -0
- package/docs/assets/page-guidelines/multi-column-page.png +0 -0
- package/docs/profiles/UiAddButton.yml +30 -0
- package/docs/profiles/UiAlert.yml +27 -0
- package/docs/profiles/UiAvatar.yml +26 -0
- package/docs/profiles/UiAvatarList.yml +28 -0
- package/docs/profiles/UiButton.yml +1 -8
- package/docs/profiles/UiCalendar.yml +28 -0
- package/docs/profiles/UiCheckbox.yml +32 -0
- package/docs/profiles/UiCollapse.yml +34 -0
- package/docs/profiles/UiCollapseBox.yml +30 -0
- package/docs/profiles/UiCollapseGroup.yml +26 -0
- package/docs/profiles/UiCopyButton.yml +35 -0
- package/docs/profiles/UiDate.yml +28 -0
- package/docs/profiles/UiDatePicker.yml +30 -0
- package/docs/profiles/UiError.yml +45 -0
- package/docs/profiles/UiField.yml +1 -15
- package/docs/profiles/UiImage.yml +28 -0
- package/docs/profiles/UiInfobox.yml +33 -0
- package/docs/profiles/UiLink.yml +40 -0
- package/docs/profiles/UiLoader.yml +35 -0
- package/docs/profiles/UiMenuItem.yml +38 -0
- package/docs/profiles/UiMenuItemGroup.yml +27 -0
- package/docs/profiles/UiModalSidebar.yml +32 -0
- package/docs/profiles/UiModalWindow.yml +42 -0
- package/docs/profiles/UiModalWindowSurface.yml +32 -0
- package/docs/profiles/UiNumberStepper.yml +36 -0
- package/docs/profiles/UiPageHeader.yml +1 -23
- package/docs/profiles/UiPopper.yml +1 -13
- package/docs/profiles/UiPopperConnector.yml +7 -25
- package/docs/profiles/UiPopperTarget.yml +7 -25
- package/docs/profiles/UiRadio.yml +40 -0
- package/docs/profiles/UiRadioSwitch.yml +1 -32
- package/docs/profiles/UiRadioSwitchOption.yml +9 -13
- package/docs/profiles/UiScrollBox.yml +34 -0
- package/docs/profiles/UiSelect.yml +1 -44
- package/docs/profiles/UiSelectOption.yml +32 -0
- package/docs/profiles/UiSelectOptionGroup.yml +30 -0
- package/docs/profiles/UiSkeleton.yml +32 -0
- package/docs/profiles/UiSlider.yml +40 -0
- package/docs/profiles/UiSwitch.yml +38 -0
- package/docs/profiles/UiTab.yml +7 -16
- package/docs/profiles/UiTabGroup.yml +1 -30
- package/docs/profiles/UiTable.yml +148 -0
- package/docs/profiles/UiTableBodyCell.yml +28 -0
- package/docs/profiles/UiTableColumn.yml +39 -0
- package/docs/profiles/UiTableFooterButton.yml +43 -0
- package/docs/profiles/UiTableFooterSection.yml +37 -0
- package/docs/profiles/UiTableHeadCell.yml +28 -0
- package/docs/profiles/UiTableSorter.yml +29 -0
- package/docs/profiles/UiTag.yml +38 -0
- package/docs/profiles/UiTextbox.yml +1 -32
- package/docs/profiles/UiTimePicker.yml +40 -0
- package/docs/profiles/UiToggleButton.yml +1 -11
- package/docs/profiles/UiToggleGroup.yml +1 -13
- package/docs/profiles/UiToggleGroupOption.yml +9 -11
- package/docs/profiles/UiToolbarButton.yml +37 -0
- package/docs/profiles/UiToolbarLink.yml +37 -0
- package/docs/profiles/UiTooltip.yml +38 -0
- package/docs/profiles/UiTransition.yml +37 -0
- package/docs/profiles/UiYandexMap.yml +53 -0
- 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
|
package/docs/profiles/UiLink.yml
CHANGED
|
@@ -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.
|