@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
|
@@ -2,6 +2,7 @@ component: UiRadio
|
|
|
2
2
|
summary: >
|
|
3
3
|
UiRadio is the single-choice selection control for exclusive option sets.
|
|
4
4
|
It is the radio-style counterpart to UiCheckbox.
|
|
5
|
+
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uiradio--docs
|
|
5
6
|
|
|
6
7
|
public_import:
|
|
7
8
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
@@ -36,3 +37,42 @@ geometry:
|
|
|
36
37
|
layout: inline radio control
|
|
37
38
|
root_display: inline-flex
|
|
38
39
|
width_behavior: content-sized by default
|
|
40
|
+
|
|
41
|
+
behavior:
|
|
42
|
+
notes:
|
|
43
|
+
- Use several UiRadio controls with the same model to represent one exclusive group.
|
|
44
|
+
- The selected value comes from the option value, not from the label text.
|
|
45
|
+
|
|
46
|
+
composition:
|
|
47
|
+
works_well_with:
|
|
48
|
+
- UiField
|
|
49
|
+
- UiRadioSwitch
|
|
50
|
+
patterns:
|
|
51
|
+
- title: Simple exclusive choice
|
|
52
|
+
notes: Use UiRadio for compact vertical or inline lists of mutually exclusive values.
|
|
53
|
+
- title: Rich segmented choice
|
|
54
|
+
notes: Use UiRadioSwitch instead when the options should look like a segmented control or rich section cards.
|
|
55
|
+
|
|
56
|
+
ai_notes:
|
|
57
|
+
do:
|
|
58
|
+
- Use for plain mutually exclusive options.
|
|
59
|
+
- Keep all options in one visible group with clear labels.
|
|
60
|
+
avoid:
|
|
61
|
+
- Do not use for multiple independent selections; use UiCheckbox or UiToggleGroup.
|
|
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-radio
|
|
@@ -4,6 +4,7 @@ summary: >
|
|
|
4
4
|
a compact inline switch and a richer section-card layout. It is useful when the
|
|
5
5
|
choice set is small and always visible. For richer per-option content, compose it
|
|
6
6
|
with UiRadioSwitchOption instead of relying only on the options array.
|
|
7
|
+
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uiradioswitch--docs
|
|
7
8
|
|
|
8
9
|
public_import:
|
|
9
10
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
@@ -188,38 +189,6 @@ composition:
|
|
|
188
189
|
- title: Section cards
|
|
189
190
|
notes: Use UiRadioSwitchOption when each choice needs icon, description, or custom checkmark.
|
|
190
191
|
|
|
191
|
-
examples:
|
|
192
|
-
- title: Simple options array
|
|
193
|
-
goal: Build a compact single-choice segmented control.
|
|
194
|
-
code: |
|
|
195
|
-
<UiRadioSwitch
|
|
196
|
-
v-model:value="mode"
|
|
197
|
-
:options="[
|
|
198
|
-
{ label: 'Auto', value: 'auto' },
|
|
199
|
-
{ label: 'Manual', value: 'manual' },
|
|
200
|
-
]"
|
|
201
|
-
/>
|
|
202
|
-
- title: Rich card options
|
|
203
|
-
goal: Render section cards with object values and descriptions.
|
|
204
|
-
code: |
|
|
205
|
-
<UiRadioSwitch
|
|
206
|
-
v-model:value="mode"
|
|
207
|
-
appearance="section"
|
|
208
|
-
rubber
|
|
209
|
-
:equal-fn="(a, b) => a?.key === b?.key"
|
|
210
|
-
>
|
|
211
|
-
<UiRadioSwitchOption
|
|
212
|
-
label="Auto"
|
|
213
|
-
:value="{ key: 'auto' }"
|
|
214
|
-
description="Automatic mode"
|
|
215
|
-
/>
|
|
216
|
-
|
|
217
|
-
<UiRadioSwitchOption
|
|
218
|
-
label="Manual"
|
|
219
|
-
:value="{ key: 'manual' }"
|
|
220
|
-
description="Manual setup"
|
|
221
|
-
/>
|
|
222
|
-
</UiRadioSwitch>
|
|
223
192
|
|
|
224
193
|
ai_notes:
|
|
225
194
|
do:
|
|
@@ -3,6 +3,7 @@ summary: >
|
|
|
3
3
|
UiRadioSwitchOption is the declarative option child of UiRadioSwitch. It is the
|
|
4
4
|
richer alternative to the plain options array and is used when one option needs
|
|
5
5
|
custom icon, label, description, or selected-state checkmark content.
|
|
6
|
+
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uiradioswitch--docs
|
|
6
7
|
|
|
7
8
|
public_import:
|
|
8
9
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
@@ -99,19 +100,6 @@ composition:
|
|
|
99
100
|
- title: Rich switch option
|
|
100
101
|
notes: Use when one option needs icon, label, description, and custom selected state.
|
|
101
102
|
|
|
102
|
-
examples:
|
|
103
|
-
- title: Section option
|
|
104
|
-
goal: Define one rich option inside a radio switch.
|
|
105
|
-
code: |
|
|
106
|
-
<UiRadioSwitchOption
|
|
107
|
-
label="Manual"
|
|
108
|
-
:value="{ key: 'manual' }"
|
|
109
|
-
description="Manual setup"
|
|
110
|
-
>
|
|
111
|
-
<template #icon>
|
|
112
|
-
<IconStar />
|
|
113
|
-
</template>
|
|
114
|
-
</UiRadioSwitchOption>
|
|
115
103
|
|
|
116
104
|
ai_notes:
|
|
117
105
|
do:
|
|
@@ -119,3 +107,11 @@ ai_notes:
|
|
|
119
107
|
- Prefer label and description props for simple content and slots for richer custom markup.
|
|
120
108
|
avoid:
|
|
121
109
|
- Do not use it as a standalone control outside UiRadioSwitch.
|
|
110
|
+
|
|
111
|
+
styling:
|
|
112
|
+
notes:
|
|
113
|
+
- Use documented props and slots as the primary styling API.
|
|
114
|
+
- Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
|
|
115
|
+
- Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
|
|
116
|
+
root_classes:
|
|
117
|
+
- .ui-v1-radio-switch-option
|
|
@@ -2,6 +2,7 @@ component: UiScrollBox
|
|
|
2
2
|
summary: >
|
|
3
3
|
UiScrollBox is a scrollable container for constrained content areas. Use it when content
|
|
4
4
|
should remain inside a dedicated scrolling region instead of growing the whole page.
|
|
5
|
+
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uiscrollbox--docs
|
|
5
6
|
|
|
6
7
|
public_import:
|
|
7
8
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
@@ -29,3 +30,36 @@ geometry:
|
|
|
29
30
|
layout: scroll container
|
|
30
31
|
root_display: block
|
|
31
32
|
width_behavior: stretches to the size of its layout context
|
|
33
|
+
|
|
34
|
+
behavior:
|
|
35
|
+
notes:
|
|
36
|
+
- Use only when a bounded region should scroll independently.
|
|
37
|
+
- The parent layout must provide meaningful height or width constraints.
|
|
38
|
+
|
|
39
|
+
composition:
|
|
40
|
+
works_well_with:
|
|
41
|
+
- UiModalWindow
|
|
42
|
+
- UiModalSidebar
|
|
43
|
+
- UiTable
|
|
44
|
+
patterns:
|
|
45
|
+
- title: Modal body scrolling
|
|
46
|
+
notes: Use when modal content is long but header and footer should remain accessible.
|
|
47
|
+
- title: Constrained list
|
|
48
|
+
notes: Use for long menu or panel content when full page scrolling is undesirable.
|
|
49
|
+
|
|
50
|
+
ai_notes:
|
|
51
|
+
do:
|
|
52
|
+
- Give the surrounding layout a stable height before relying on scrolling.
|
|
53
|
+
avoid:
|
|
54
|
+
- Do not wrap normal page content in a scroll container by default.
|
|
55
|
+
|
|
56
|
+
accessibility:
|
|
57
|
+
notes:
|
|
58
|
+
- Keep visible labels and slot content meaningful.
|
|
59
|
+
- Prefer documented props and slots over custom DOM replacements so host-side accessibility behavior is preserved.
|
|
60
|
+
|
|
61
|
+
styling:
|
|
62
|
+
notes:
|
|
63
|
+
- Use documented props and slots as the primary styling API.
|
|
64
|
+
- Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
|
|
65
|
+
- Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
|
|
@@ -3,6 +3,7 @@ summary: >
|
|
|
3
3
|
UiSelect is a dropdown component for single-select and multi-select flows. It combines
|
|
4
4
|
a textbox-like trigger with a popper-based option layer. For a correct mental model,
|
|
5
5
|
read it together with UiPopper, UiPopperConnector, and UiPopperTarget.
|
|
6
|
+
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uiselect--docs
|
|
6
7
|
|
|
7
8
|
public_import:
|
|
8
9
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
@@ -271,50 +272,6 @@ composition:
|
|
|
271
272
|
- title: Popper mental model
|
|
272
273
|
notes: Think of UiSelect as target plus floating dropdown, not as a single inline control.
|
|
273
274
|
|
|
274
|
-
examples:
|
|
275
|
-
- title: Standard select in a field
|
|
276
|
-
goal: Build a labeled select with field semantics.
|
|
277
|
-
code: |
|
|
278
|
-
<UiField id="assignee" label="Assignee">
|
|
279
|
-
<template #default="field">
|
|
280
|
-
<UiSelect
|
|
281
|
-
:id="field.id"
|
|
282
|
-
:invalid="field.invalid"
|
|
283
|
-
:placeholder="'Select assignee'"
|
|
284
|
-
v-model:value="assignee"
|
|
285
|
-
>
|
|
286
|
-
<UiSelectOption value="kyle" label="Kyle Simmons" />
|
|
287
|
-
<UiSelectOption value="eduardo" label="Eduardo Henry" />
|
|
288
|
-
</UiSelect>
|
|
289
|
-
</template>
|
|
290
|
-
</UiField>
|
|
291
|
-
- title: Grouped options
|
|
292
|
-
goal: Build a grouped option tree through the safe child components.
|
|
293
|
-
code: |
|
|
294
|
-
<UiSelect placeholder="Employee">
|
|
295
|
-
<UiSelectOptionGroup label="Sales">
|
|
296
|
-
<UiSelectOption value="kyle" label="Kyle Simmons" />
|
|
297
|
-
</UiSelectOptionGroup>
|
|
298
|
-
|
|
299
|
-
<UiSelectOptionGroup label="Support">
|
|
300
|
-
<UiSelectOption value="philip" label="Philip Williamson" />
|
|
301
|
-
</UiSelectOptionGroup>
|
|
302
|
-
</UiSelect>
|
|
303
|
-
- title: Object values with equalsFn
|
|
304
|
-
goal: Avoid object comparison by reference.
|
|
305
|
-
code: |
|
|
306
|
-
<UiSelect
|
|
307
|
-
v-model:value="selectedUser"
|
|
308
|
-
:equals-fn="(left, right) => left?.id === right?.id"
|
|
309
|
-
placeholder="Employee"
|
|
310
|
-
>
|
|
311
|
-
<UiSelectOption
|
|
312
|
-
v-for="user in users"
|
|
313
|
-
:key="user.id"
|
|
314
|
-
:value="user"
|
|
315
|
-
:label="user.name"
|
|
316
|
-
/>
|
|
317
|
-
</UiSelect>
|
|
318
275
|
|
|
319
276
|
ai_notes:
|
|
320
277
|
do:
|
|
@@ -2,6 +2,7 @@ component: UiSelectOption
|
|
|
2
2
|
summary: >
|
|
3
3
|
UiSelectOption is the base selectable child of UiSelect. It represents one option node
|
|
4
4
|
in the select option tree.
|
|
5
|
+
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uiselect--docs
|
|
5
6
|
|
|
6
7
|
public_import:
|
|
7
8
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
@@ -42,3 +43,34 @@ geometry:
|
|
|
42
43
|
ai_notes:
|
|
43
44
|
do:
|
|
44
45
|
- Use as the default child node of UiSelect.
|
|
46
|
+
- Provide stable value and human-readable label.
|
|
47
|
+
- Use description for secondary explanation, not for long help text.
|
|
48
|
+
avoid:
|
|
49
|
+
- Do not put arbitrary controls inside options.
|
|
50
|
+
|
|
51
|
+
behavior:
|
|
52
|
+
notes:
|
|
53
|
+
- disabled prevents selection while keeping the option visible.
|
|
54
|
+
- counter and accent help scan dense option lists.
|
|
55
|
+
- In filterable selects, label and description participate in matching.
|
|
56
|
+
|
|
57
|
+
composition:
|
|
58
|
+
works_well_with:
|
|
59
|
+
- UiSelect
|
|
60
|
+
- UiSelectOptionGroup
|
|
61
|
+
patterns:
|
|
62
|
+
- title: Status filter option
|
|
63
|
+
notes: Use concise labels that match the visible table status names.
|
|
64
|
+
|
|
65
|
+
accessibility:
|
|
66
|
+
notes:
|
|
67
|
+
- This component is normally used inside its parent composition; accessibility behavior is completed by the parent component.
|
|
68
|
+
- Keep labels and visible text meaningful because parent keyboard and screen-reader behavior depends on child content.
|
|
69
|
+
|
|
70
|
+
styling:
|
|
71
|
+
notes:
|
|
72
|
+
- Use documented props and slots as the primary styling API.
|
|
73
|
+
- Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
|
|
74
|
+
- Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
|
|
75
|
+
root_classes:
|
|
76
|
+
- .ui-v1-select-option
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
component: UiSelectOptionGroup
|
|
2
2
|
summary: >
|
|
3
3
|
UiSelectOptionGroup groups related UiSelectOption nodes under a shared label.
|
|
4
|
+
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uiselect--docs
|
|
4
5
|
|
|
5
6
|
public_import:
|
|
6
7
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
@@ -36,3 +37,32 @@ geometry:
|
|
|
36
37
|
ai_notes:
|
|
37
38
|
do:
|
|
38
39
|
- Use to structure large option lists inside UiSelect.
|
|
40
|
+
- Keep group labels short and categorical.
|
|
41
|
+
avoid:
|
|
42
|
+
- Do not use groups for two or three obvious flat options.
|
|
43
|
+
|
|
44
|
+
behavior:
|
|
45
|
+
notes:
|
|
46
|
+
- Group visibility can change when the parent select is filterable.
|
|
47
|
+
- The group itself is not selectable; child UiSelectOption nodes provide selection.
|
|
48
|
+
|
|
49
|
+
composition:
|
|
50
|
+
works_well_with:
|
|
51
|
+
- UiSelect
|
|
52
|
+
- UiSelectOption
|
|
53
|
+
patterns:
|
|
54
|
+
- title: Large grouped select
|
|
55
|
+
notes: Use for managers by team, statuses by category, or locations by region.
|
|
56
|
+
|
|
57
|
+
accessibility:
|
|
58
|
+
notes:
|
|
59
|
+
- This component is normally used inside its parent composition; accessibility behavior is completed by the parent component.
|
|
60
|
+
- Keep labels and visible text meaningful because parent keyboard and screen-reader behavior depends on child content.
|
|
61
|
+
|
|
62
|
+
styling:
|
|
63
|
+
notes:
|
|
64
|
+
- Use documented props and slots as the primary styling API.
|
|
65
|
+
- Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
|
|
66
|
+
- Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
|
|
67
|
+
root_classes:
|
|
68
|
+
- .ui-v1-select-option-group
|
|
@@ -2,6 +2,7 @@ component: UiSkeleton
|
|
|
2
2
|
summary: >
|
|
3
3
|
UiSkeleton displays a placeholder block for loading content. It supports text,
|
|
4
4
|
rectangle and circle appearances with pulse or shimmer animation.
|
|
5
|
+
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uiskeleton--docs
|
|
5
6
|
|
|
6
7
|
public_import:
|
|
7
8
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
@@ -39,3 +40,34 @@ ai_notes:
|
|
|
39
40
|
- Use text appearance for line placeholders.
|
|
40
41
|
- Use circle appearance for avatar placeholders.
|
|
41
42
|
- Override width or height only when the preset size is not enough.
|
|
43
|
+
avoid:
|
|
44
|
+
- Do not use for errors or empty states; skeletons mean content is still expected.
|
|
45
|
+
|
|
46
|
+
behavior:
|
|
47
|
+
notes:
|
|
48
|
+
- appearance should approximate the eventual content shape.
|
|
49
|
+
- animation communicates loading; avoid excessive animated skeletons in dense screens.
|
|
50
|
+
|
|
51
|
+
composition:
|
|
52
|
+
works_well_with:
|
|
53
|
+
- UiAvatar
|
|
54
|
+
- UiTable
|
|
55
|
+
- UiLoader
|
|
56
|
+
patterns:
|
|
57
|
+
- title: Loading rows
|
|
58
|
+
notes: Use text or rectangle skeletons where table or list rows will appear.
|
|
59
|
+
- title: Loading identity
|
|
60
|
+
notes: Use circle skeletons where avatars will appear.
|
|
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-skeleton
|
|
@@ -2,6 +2,7 @@ component: UiSlider
|
|
|
2
2
|
summary: >
|
|
3
3
|
UiSlider is a range-selection control for single values or ranges on a numeric track.
|
|
4
4
|
It supports single-handle and range-handle modes.
|
|
5
|
+
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uislider--docs
|
|
5
6
|
|
|
6
7
|
public_import:
|
|
7
8
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
@@ -36,3 +37,42 @@ geometry:
|
|
|
36
37
|
layout: horizontal slider track
|
|
37
38
|
root_display: flex
|
|
38
39
|
width_behavior: stretches to container width by default
|
|
40
|
+
|
|
41
|
+
behavior:
|
|
42
|
+
notes:
|
|
43
|
+
- Use when approximate adjustment is acceptable.
|
|
44
|
+
- For exact numeric input, prefer UiTextbox with numeric inputmode or UiNumberStepper.
|
|
45
|
+
|
|
46
|
+
composition:
|
|
47
|
+
works_well_with:
|
|
48
|
+
- UiField
|
|
49
|
+
- UiNumberStepper
|
|
50
|
+
patterns:
|
|
51
|
+
- title: Bounded adjustment
|
|
52
|
+
notes: Wrap in UiField and show min, max, or current value nearby when precision matters.
|
|
53
|
+
- title: Slider plus exact value
|
|
54
|
+
notes: Pair with UiNumberStepper when users need both quick dragging and exact entry.
|
|
55
|
+
|
|
56
|
+
ai_notes:
|
|
57
|
+
do:
|
|
58
|
+
- Use only for bounded numeric ranges.
|
|
59
|
+
- Make the current value visible when the slider affects important settings.
|
|
60
|
+
avoid:
|
|
61
|
+
- Do not use for open-ended numbers, money amounts, or identifiers.
|
|
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-slider
|
|
@@ -2,6 +2,7 @@ component: UiSwitch
|
|
|
2
2
|
summary: >
|
|
3
3
|
UiSwitch is a compact boolean toggle control. It is the most concise choice for on or off state
|
|
4
4
|
when checkbox semantics would feel visually heavy.
|
|
5
|
+
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uiswitch--docs
|
|
5
6
|
|
|
6
7
|
public_import:
|
|
7
8
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
@@ -35,3 +36,40 @@ geometry:
|
|
|
35
36
|
layout: inline switch control
|
|
36
37
|
root_display: inline-block
|
|
37
38
|
width_behavior: content-sized by default
|
|
39
|
+
|
|
40
|
+
behavior:
|
|
41
|
+
notes:
|
|
42
|
+
- Best for immediate boolean settings, not for long-form confirmation choices.
|
|
43
|
+
- Disabled blocks interaction while preserving the current state visually.
|
|
44
|
+
|
|
45
|
+
composition:
|
|
46
|
+
works_well_with:
|
|
47
|
+
- UiField
|
|
48
|
+
patterns:
|
|
49
|
+
- title: Settings row
|
|
50
|
+
notes: Pair with a visible label and optional description so the on or off state is unambiguous.
|
|
51
|
+
avoid:
|
|
52
|
+
- Do not use without a nearby label; the switch alone does not explain what will change.
|
|
53
|
+
|
|
54
|
+
ai_notes:
|
|
55
|
+
do:
|
|
56
|
+
- Use for compact feature toggles and enable or disable settings.
|
|
57
|
+
avoid:
|
|
58
|
+
- Do not use for multi-select lists or legal acknowledgements; use UiCheckbox.
|
|
59
|
+
|
|
60
|
+
accessibility:
|
|
61
|
+
notes:
|
|
62
|
+
- Prefer visible text labels for interactive controls.
|
|
63
|
+
- For icon-only or custom visual content, provide an accessible name through the supported label, title, or ARIA attributes exposed by the component.
|
|
64
|
+
- Preserve native keyboard semantics by using the component root instead of recreating the control with arbitrary markup.
|
|
65
|
+
keyboard:
|
|
66
|
+
- Tab moves focus to the control when it is focusable.
|
|
67
|
+
- Enter or Space activates native button-like controls when the host implementation renders a button.
|
|
68
|
+
|
|
69
|
+
styling:
|
|
70
|
+
notes:
|
|
71
|
+
- Use documented props and slots as the primary styling API.
|
|
72
|
+
- Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
|
|
73
|
+
- Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
|
|
74
|
+
root_classes:
|
|
75
|
+
- .ui-v1-switch
|
package/docs/profiles/UiTab.yml
CHANGED
|
@@ -3,6 +3,7 @@ summary: >
|
|
|
3
3
|
UiTab is a declarative child node for UiTabGroup. It does not render meaningful
|
|
4
4
|
standalone UI by itself; instead, UiTabGroup consumes its props and slots to build
|
|
5
5
|
tab buttons, overflow menu items, and optional tab panel content.
|
|
6
|
+
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uitab--docs
|
|
6
7
|
|
|
7
8
|
public_import:
|
|
8
9
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
@@ -93,22 +94,6 @@ composition:
|
|
|
93
94
|
- title: Rich tab declaration
|
|
94
95
|
notes: Keep icon, counter, and content close to the tab declaration inside UiTabGroup.
|
|
95
96
|
|
|
96
|
-
examples:
|
|
97
|
-
- title: Rich tab child
|
|
98
|
-
goal: Declare one tab with custom icon and panel content.
|
|
99
|
-
code: |
|
|
100
|
-
<UiTab id="overview" label="Overview" counter="8">
|
|
101
|
-
<template #icon>
|
|
102
|
-
<IconStar />
|
|
103
|
-
</template>
|
|
104
|
-
|
|
105
|
-
<template #content>
|
|
106
|
-
<section>
|
|
107
|
-
<h4>Overview</h4>
|
|
108
|
-
<p>Panel content for the active tab.</p>
|
|
109
|
-
</section>
|
|
110
|
-
</template>
|
|
111
|
-
</UiTab>
|
|
112
97
|
|
|
113
98
|
ai_notes:
|
|
114
99
|
do:
|
|
@@ -117,3 +102,9 @@ ai_notes:
|
|
|
117
102
|
avoid:
|
|
118
103
|
- Do not expect UiTab to render useful DOM outside a group.
|
|
119
104
|
- Do not rely on an undocumented default slot for header rendering.
|
|
105
|
+
|
|
106
|
+
styling:
|
|
107
|
+
notes:
|
|
108
|
+
- Use documented props and slots as the primary styling API.
|
|
109
|
+
- Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
|
|
110
|
+
- Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
|
|
@@ -3,6 +3,7 @@ summary: >
|
|
|
3
3
|
UiTabGroup is the navigation container for UiTab children or simple tab items.
|
|
4
4
|
It manages active tab selection by string id, keyboard navigation, optional overflow
|
|
5
5
|
into a dropdown menu, and optional tabpanel rendering from the active UiTab content slot.
|
|
6
|
+
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uitab--docs
|
|
6
7
|
|
|
7
8
|
public_import:
|
|
8
9
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
@@ -197,36 +198,6 @@ composition:
|
|
|
197
198
|
- title: Rich tabs from UiTab
|
|
198
199
|
notes: Use UiTab children when tabs need icon, custom label, counter, or tabpanel content.
|
|
199
200
|
|
|
200
|
-
examples:
|
|
201
|
-
- title: Data-driven tabs
|
|
202
|
-
goal: Render a compact tab header from plain items.
|
|
203
|
-
code: |
|
|
204
|
-
<UiTabGroup
|
|
205
|
-
v-model:active-id="activeId"
|
|
206
|
-
:items="[
|
|
207
|
-
{ id: 'overview', label: 'Overview', counter: '8' },
|
|
208
|
-
{ id: 'orders', label: 'Orders', counter: '12' },
|
|
209
|
-
]"
|
|
210
|
-
overflowing
|
|
211
|
-
/>
|
|
212
|
-
- title: Tabs with panel content
|
|
213
|
-
goal: Render active tabpanel content from UiTab child declarations.
|
|
214
|
-
code: |
|
|
215
|
-
<UiTabGroup
|
|
216
|
-
v-model:active-id="activeId"
|
|
217
|
-
overflowing
|
|
218
|
-
>
|
|
219
|
-
<UiTab id="overview" label="Overview">
|
|
220
|
-
<template #content>
|
|
221
|
-
<section>
|
|
222
|
-
<h4>Overview</h4>
|
|
223
|
-
<p>Visible only when this tab is active.</p>
|
|
224
|
-
</section>
|
|
225
|
-
</template>
|
|
226
|
-
</UiTab>
|
|
227
|
-
|
|
228
|
-
<UiTab id="orders" label="Orders" />
|
|
229
|
-
</UiTabGroup>
|
|
230
201
|
|
|
231
202
|
ai_notes:
|
|
232
203
|
do:
|