@retailcrm/embed-ui-v1-components 0.9.21 → 0.9.22-alpha.2
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 +3 -3
- package/README.md +3 -4
- package/assets/sprites/actions/add-square-outlined.svg +8 -0
- package/assets/sprites/actions/drag.svg +8 -0
- package/bin/embed-ui-v1-components.mjs +227 -50
- package/bin/postinstall.mjs +2 -1
- package/dist/host.cjs +1204 -488
- package/dist/host.css +629 -0
- package/dist/host.d.ts +100 -20
- package/dist/host.js +1205 -489
- package/dist/remote.cjs +1210 -153
- package/dist/remote.d.ts +786 -36
- package/dist/remote.js +1212 -155
- package/docs/AI.md +19 -20
- package/docs/COMPONENTS.md +58 -59
- package/docs/FORMAT.md +6 -8
- package/docs/PROFILES.md +34 -21
- package/docs/README.md +3 -6
- package/docs/profiles/{UiAddButton.yml → components/UiAddButton.yml} +49 -2
- package/docs/profiles/{UiAlert.yml → components/UiAlert.yml} +32 -2
- package/docs/profiles/{UiAvatar.yml → components/UiAvatar.yml} +17 -3
- package/docs/profiles/{UiAvatarList.yml → components/UiAvatarList.yml} +0 -2
- package/docs/profiles/{UiButton.yml → components/UiButton.yml} +14 -1
- package/docs/profiles/components/UiCalendar.yml +190 -0
- package/docs/profiles/{UiCheckbox.yml → components/UiCheckbox.yml} +28 -2
- package/docs/profiles/{UiCollapse.yml → components/UiCollapse.yml} +57 -2
- package/docs/profiles/{UiCollapseBox.yml → components/UiCollapseBox.yml} +64 -2
- package/docs/profiles/{UiCollapseGroup.yml → components/UiCollapseGroup.yml} +0 -2
- package/docs/profiles/{UiCopyButton.yml → components/UiCopyButton.yml} +19 -2
- package/docs/profiles/{UiDate.yml → components/UiDate.yml} +20 -2
- package/docs/profiles/{UiDatePicker.yml → components/UiDatePicker.yml} +51 -2
- package/docs/profiles/{UiError.yml → components/UiError.yml} +48 -2
- package/docs/profiles/{UiField.yml → components/UiField.yml} +46 -1
- package/docs/profiles/{UiInfobox.yml → components/UiInfobox.yml} +54 -2
- package/docs/profiles/{UiLink.yml → components/UiLink.yml} +22 -2
- package/docs/profiles/{UiLoader.yml → components/UiLoader.yml} +0 -2
- package/docs/profiles/{UiMenuItem.yml → components/UiMenuItem.yml} +0 -2
- package/docs/profiles/{UiMenuItemGroup.yml → components/UiMenuItemGroup.yml} +0 -2
- package/docs/profiles/{UiModalSidebar.yml → components/UiModalSidebar.yml} +80 -2
- package/docs/profiles/components/UiModalWindow.yml +181 -0
- package/docs/profiles/{UiModalWindowSurface.yml → components/UiModalWindowSurface.yml} +0 -2
- package/docs/profiles/{UiNumberStepper.yml → components/UiNumberStepper.yml} +14 -2
- package/docs/profiles/{UiPageHeader.yml → components/UiPageHeader.yml} +39 -1
- package/docs/profiles/components/UiPopconfirm.yml +164 -0
- package/docs/profiles/{UiPopper.yml → components/UiPopper.yml} +66 -1
- package/docs/profiles/{UiPopperConnector.yml → components/UiPopperConnector.yml} +0 -2
- package/docs/profiles/{UiPopperTarget.yml → components/UiPopperTarget.yml} +0 -2
- package/docs/profiles/{UiRadio.yml → components/UiRadio.yml} +15 -2
- package/docs/profiles/{UiRadioSwitch.yml → components/UiRadioSwitch.yml} +55 -1
- package/docs/profiles/{UiRadioSwitchOption.yml → components/UiRadioSwitchOption.yml} +0 -2
- package/docs/profiles/{UiScrollBox.yml → components/UiScrollBox.yml} +45 -2
- package/docs/profiles/{UiSelect.yml → components/UiSelect.yml} +133 -1
- package/docs/profiles/{UiSelectOption.yml → components/UiSelectOption.yml} +0 -2
- package/docs/profiles/{UiSelectOptionGroup.yml → components/UiSelectOptionGroup.yml} +0 -2
- package/docs/profiles/{UiSkeleton.yml → components/UiSkeleton.yml} +11 -2
- package/docs/profiles/{UiSlider.yml → components/UiSlider.yml} +85 -2
- package/docs/profiles/{UiSwitch.yml → components/UiSwitch.yml} +50 -2
- package/docs/profiles/{UiTab.yml → components/UiTab.yml} +126 -2
- package/docs/profiles/{UiTabGroup.yml → components/UiTabGroup.yml} +0 -1
- package/docs/profiles/components/UiTable.yml +622 -0
- package/docs/profiles/{UiTableBodyCell.yml → components/UiTableBodyCell.yml} +0 -2
- package/docs/profiles/{UiTableColumn.yml → components/UiTableColumn.yml} +0 -2
- package/docs/profiles/{UiTableFooterButton.yml → components/UiTableFooterButton.yml} +0 -2
- package/docs/profiles/{UiTableFooterSection.yml → components/UiTableFooterSection.yml} +0 -2
- package/docs/profiles/{UiTableHeadCell.yml → components/UiTableHeadCell.yml} +0 -2
- package/docs/profiles/{UiTableSorter.yml → components/UiTableSorter.yml} +0 -2
- package/docs/profiles/{UiTag.yml → components/UiTag.yml} +13 -2
- package/docs/profiles/{UiTextbox.yml → components/UiTextbox.yml} +20 -1
- package/docs/profiles/{UiTimePicker.yml → components/UiTimePicker.yml} +60 -2
- package/docs/profiles/{UiToggleButton.yml → components/UiToggleButton.yml} +16 -1
- package/docs/profiles/{UiToggleGroup.yml → components/UiToggleGroup.yml} +25 -1
- package/docs/profiles/{UiToggleGroupOption.yml → components/UiToggleGroupOption.yml} +0 -2
- package/docs/profiles/{UiToolbarButton.yml → components/UiToolbarButton.yml} +15 -2
- package/docs/profiles/{UiToolbarLink.yml → components/UiToolbarLink.yml} +13 -2
- package/docs/profiles/{UiTooltip.yml → components/UiTooltip.yml} +18 -2
- package/docs/profiles/{UiTransition.yml → components/UiTransition.yml} +0 -2
- package/docs/profiles/{UiYandexMap.yml → components/UiYandexMap.yml} +24 -2
- package/docs/profiles/pages/CardSettingsPage.yml +58 -0
- package/docs/profiles/pages/CollapseBlockPage.yml +46 -0
- package/docs/profiles/pages/EntityListPage.yml +66 -0
- package/docs/profiles/pages/ModalSidebar.yml +158 -0
- package/docs/profiles/pages/ModalWindow.yml +55 -0
- package/docs/profiles/pages/MultiColumnPage.yml +27 -0
- package/docs/profiles/pages/PageComposition.yml +56 -0
- package/package.json +1 -1
- package/docs/AGENT-DESIGN-GUIDELINES.md +0 -463
- 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/UiCalendar.yml +0 -76
- package/docs/profiles/UiImage.yml +0 -67
- package/docs/profiles/UiModalWindow.yml +0 -86
- package/docs/profiles/UiTable.yml +0 -300
|
@@ -2,7 +2,6 @@ component: UiTableSorter
|
|
|
2
2
|
summary: >
|
|
3
3
|
UiTableSorter is a compact sort control primitive for custom table head content.
|
|
4
4
|
Use it when header rendering is composed manually and sorting state must be shown explicitly.
|
|
5
|
-
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uitable--docs
|
|
6
5
|
|
|
7
6
|
public_import:
|
|
8
7
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
@@ -69,6 +68,5 @@ styling:
|
|
|
69
68
|
notes:
|
|
70
69
|
- Use documented props and slots as the primary styling API.
|
|
71
70
|
- Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
|
|
72
|
-
- Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
|
|
73
71
|
root_classes:
|
|
74
72
|
- .ui-v1-table
|
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
component: UiTag
|
|
2
2
|
summary: >
|
|
3
3
|
UiTag is a compact label or status pill. It can be interactive, removable, pinned, or visually saturated.
|
|
4
|
-
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uitag--docs
|
|
5
4
|
|
|
6
5
|
public_import:
|
|
7
6
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
8
7
|
named:
|
|
9
8
|
- UiTag
|
|
10
9
|
|
|
10
|
+
examples:
|
|
11
|
+
- title: Slots
|
|
12
|
+
code: |
|
|
13
|
+
<template>
|
|
14
|
+
<UiTag background="#FEA530" saturated>
|
|
15
|
+
VIP
|
|
16
|
+
</UiTag>
|
|
17
|
+
</template>
|
|
18
|
+
|
|
19
|
+
<script lang="ts" setup>
|
|
20
|
+
import { UiTag } from '@retailcrm/embed-ui-v1-components/remote'
|
|
21
|
+
</script>
|
|
22
|
+
|
|
11
23
|
use_when:
|
|
12
24
|
- You need a short status or label pill.
|
|
13
25
|
- You need removable or interactive tags.
|
|
@@ -74,6 +86,5 @@ styling:
|
|
|
74
86
|
notes:
|
|
75
87
|
- Use documented props and slots as the primary styling API.
|
|
76
88
|
- Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
|
|
77
|
-
- Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
|
|
78
89
|
root_classes:
|
|
79
90
|
- .ui-v1-tag-wrapper
|
|
@@ -2,7 +2,6 @@ component: UiTextbox
|
|
|
2
2
|
summary: >
|
|
3
3
|
UiTextbox is the base text and numeric input component. It covers single-line input,
|
|
4
4
|
textarea mode, numeric and decimal input, plus prefix, suffix, icon zones, and a clear action.
|
|
5
|
-
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uitextbox--docs
|
|
6
5
|
|
|
7
6
|
public_import:
|
|
8
7
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
@@ -14,6 +13,26 @@ related_components:
|
|
|
14
13
|
- UiPageHeader
|
|
15
14
|
- UiSelect
|
|
16
15
|
|
|
16
|
+
examples:
|
|
17
|
+
- title: Slots
|
|
18
|
+
code: |
|
|
19
|
+
<template>
|
|
20
|
+
<UiTextbox v-model:value="term">
|
|
21
|
+
<template #leading-icon>
|
|
22
|
+
<IconSearch aria-hidden="true" />
|
|
23
|
+
</template>
|
|
24
|
+
</UiTextbox>
|
|
25
|
+
</template>
|
|
26
|
+
|
|
27
|
+
<script lang="ts" setup>
|
|
28
|
+
import IconSearch from '@retailcrm/embed-ui-v1-components/assets/sprites/actions/search.svg'
|
|
29
|
+
import { UiTextbox } from '@retailcrm/embed-ui-v1-components/remote'
|
|
30
|
+
|
|
31
|
+
import { ref } from 'vue'
|
|
32
|
+
|
|
33
|
+
const term = ref('')
|
|
34
|
+
</script>
|
|
35
|
+
|
|
17
36
|
use_when:
|
|
18
37
|
- You need a standard text input.
|
|
19
38
|
- You need search, email, phone, url, or password input.
|
|
@@ -2,7 +2,6 @@ component: UiTimePicker
|
|
|
2
2
|
summary: >
|
|
3
3
|
UiTimePicker is a time input component that combines textbox-like entry with a list of
|
|
4
4
|
normalized time variants and bounds.
|
|
5
|
-
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uitimepicker--docs
|
|
6
5
|
|
|
7
6
|
public_import:
|
|
8
7
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
@@ -13,6 +12,66 @@ related_components:
|
|
|
13
12
|
- UiTextbox
|
|
14
13
|
- UiPopper
|
|
15
14
|
|
|
15
|
+
examples:
|
|
16
|
+
- title: Example
|
|
17
|
+
code: |
|
|
18
|
+
<template>
|
|
19
|
+
<UiTimePicker v-model:value="value" />
|
|
20
|
+
</template>
|
|
21
|
+
|
|
22
|
+
<script lang="ts" setup>
|
|
23
|
+
import { ref } from 'vue'
|
|
24
|
+
import { UiTimePicker } from '@retailcrm/embed-ui-v1-components/remote'
|
|
25
|
+
|
|
26
|
+
const value = ref('10:30')
|
|
27
|
+
</script>
|
|
28
|
+
- title: Option interval (`interval`)
|
|
29
|
+
code: |
|
|
30
|
+
<template>
|
|
31
|
+
<UiTimePicker
|
|
32
|
+
v-model:value="value"
|
|
33
|
+
:interval="15"
|
|
34
|
+
/>
|
|
35
|
+
</template>
|
|
36
|
+
|
|
37
|
+
<script lang="ts" setup>
|
|
38
|
+
import { ref } from 'vue'
|
|
39
|
+
import { UiTimePicker } from '@retailcrm/embed-ui-v1-components/remote'
|
|
40
|
+
|
|
41
|
+
const value = ref('10:30')
|
|
42
|
+
</script>
|
|
43
|
+
- title: Range limit (`minTime` / `maxTime`)
|
|
44
|
+
code: |
|
|
45
|
+
<template>
|
|
46
|
+
<UiTimePicker
|
|
47
|
+
v-model:value="value"
|
|
48
|
+
:min-time="[9, 30]"
|
|
49
|
+
:max-time="[18, 0]"
|
|
50
|
+
/>
|
|
51
|
+
</template>
|
|
52
|
+
|
|
53
|
+
<script lang="ts" setup>
|
|
54
|
+
import { ref } from 'vue'
|
|
55
|
+
import { UiTimePicker } from '@retailcrm/embed-ui-v1-components/remote'
|
|
56
|
+
|
|
57
|
+
const value = ref('10:30')
|
|
58
|
+
</script>
|
|
59
|
+
- title: Custom options (`timeVariants`)
|
|
60
|
+
code: |
|
|
61
|
+
<template>
|
|
62
|
+
<UiTimePicker
|
|
63
|
+
v-model:value="value"
|
|
64
|
+
:time-variants="['09:00', '09:30', '12:25', '16:00']"
|
|
65
|
+
/>
|
|
66
|
+
|
|
67
|
+
</template>
|
|
68
|
+
|
|
69
|
+
<script lang="ts" setup>
|
|
70
|
+
import { ref } from 'vue'
|
|
71
|
+
import { UiTimePicker } from '@retailcrm/embed-ui-v1-components/remote'
|
|
72
|
+
|
|
73
|
+
const value = ref('10:30')
|
|
74
|
+
</script>
|
|
16
75
|
use_when:
|
|
17
76
|
- You need editable time input.
|
|
18
77
|
- You need bounded time variants or interval-based time selection.
|
|
@@ -81,6 +140,5 @@ styling:
|
|
|
81
140
|
notes:
|
|
82
141
|
- Use documented props and slots as the primary styling API.
|
|
83
142
|
- 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
143
|
root_classes:
|
|
86
144
|
- .ui-v1-time-picker
|
|
@@ -4,7 +4,6 @@ summary: >
|
|
|
4
4
|
native button shape and methods, but the pressed state is controlled externally and
|
|
5
5
|
can be used either for a standalone toggle or as the visual basis of segmented groups
|
|
6
6
|
such as UiToggleGroup.
|
|
7
|
-
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uitogglebutton--docs
|
|
8
7
|
|
|
9
8
|
public_import:
|
|
10
9
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
@@ -16,6 +15,22 @@ related_components:
|
|
|
16
15
|
- UiCheckbox
|
|
17
16
|
- UiSwitch
|
|
18
17
|
|
|
18
|
+
examples:
|
|
19
|
+
- title: Single toggle
|
|
20
|
+
code: |
|
|
21
|
+
<template>
|
|
22
|
+
<UiToggleButton :pressed="opened" @click="opened = !opened">
|
|
23
|
+
Filters
|
|
24
|
+
</UiToggleButton>
|
|
25
|
+
</template>
|
|
26
|
+
|
|
27
|
+
<script lang="ts" setup>
|
|
28
|
+
import { ref } from 'vue'
|
|
29
|
+
import { UiToggleButton } from '@retailcrm/embed-ui-v1-components/remote'
|
|
30
|
+
|
|
31
|
+
const opened = ref(false)
|
|
32
|
+
</script>
|
|
33
|
+
|
|
19
34
|
use_when:
|
|
20
35
|
- You need a button-looking control with externally managed pressed state.
|
|
21
36
|
- You need a primitive for segmented controls or compact filter chips.
|
|
@@ -4,7 +4,6 @@ summary: >
|
|
|
4
4
|
designed for short always-visible choice sets such as weekdays, filters, or compact
|
|
5
5
|
mode flags where classic checkboxes would feel visually heavy. For richer option
|
|
6
6
|
markup, compose it with UiToggleGroupOption instead of relying only on the options array.
|
|
7
|
-
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uitogglegroup--docs
|
|
8
7
|
|
|
9
8
|
public_import:
|
|
10
9
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
@@ -17,6 +16,31 @@ related_components:
|
|
|
17
16
|
- UiCheckbox
|
|
18
17
|
- UiRadioSwitch
|
|
19
18
|
|
|
19
|
+
examples:
|
|
20
|
+
- title: Weekday selection
|
|
21
|
+
code: |
|
|
22
|
+
<template>
|
|
23
|
+
<UiToggleGroup v-model:model="days" rubber>
|
|
24
|
+
<UiToggleGroupOption label="Mon" value="monday" />
|
|
25
|
+
<UiToggleGroupOption label="Tue" value="tuesday" />
|
|
26
|
+
<UiToggleGroupOption label="Wed" value="wednesday" />
|
|
27
|
+
<UiToggleGroupOption label="Thu" value="thursday" />
|
|
28
|
+
<UiToggleGroupOption label="Fri" value="friday" />
|
|
29
|
+
<UiToggleGroupOption label="Sat" value="saturday" />
|
|
30
|
+
<UiToggleGroupOption label="Sun" value="sunday" />
|
|
31
|
+
</UiToggleGroup>
|
|
32
|
+
</template>
|
|
33
|
+
|
|
34
|
+
<script lang="ts" setup>
|
|
35
|
+
import { ref } from 'vue'
|
|
36
|
+
import {
|
|
37
|
+
UiToggleGroup,
|
|
38
|
+
UiToggleGroupOption,
|
|
39
|
+
} from '@retailcrm/embed-ui-v1-components/remote'
|
|
40
|
+
|
|
41
|
+
const days = ref(['monday', 'wednesday', 'friday'])
|
|
42
|
+
</script>
|
|
43
|
+
|
|
20
44
|
use_when:
|
|
21
45
|
- You need multiple independent selections from a short fixed set.
|
|
22
46
|
- You want checkbox-like semantics with segmented button visuals.
|
|
@@ -3,7 +3,6 @@ summary: >
|
|
|
3
3
|
UiToggleGroupOption is the declarative option child of UiToggleGroup. It is the
|
|
4
4
|
richer alternative to the plain options array and is used when one segment needs
|
|
5
5
|
custom icon, custom label markup, or a non-trivial value.
|
|
6
|
-
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uitogglegroup--docs
|
|
7
6
|
|
|
8
7
|
public_import:
|
|
9
8
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
@@ -109,6 +108,5 @@ styling:
|
|
|
109
108
|
notes:
|
|
110
109
|
- Use documented props and slots as the primary styling API.
|
|
111
110
|
- Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
|
|
112
|
-
- Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
|
|
113
111
|
root_classes:
|
|
114
112
|
- .ui-v1-toggle-button
|
|
@@ -2,13 +2,27 @@ component: UiToolbarButton
|
|
|
2
2
|
summary: >
|
|
3
3
|
UiToolbarButton is a compact button for toolbar zones. It shares action semantics with buttons
|
|
4
4
|
but is tuned for dense toolbar layouts.
|
|
5
|
-
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uitoolbarbutton--docs
|
|
6
5
|
|
|
7
6
|
public_import:
|
|
8
7
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
9
8
|
named:
|
|
10
9
|
- UiToolbarButton
|
|
11
10
|
|
|
11
|
+
examples:
|
|
12
|
+
- title: Toolbar action
|
|
13
|
+
code: |
|
|
14
|
+
<template>
|
|
15
|
+
<UiToolbarButton>
|
|
16
|
+
<IconAdd aria-hidden="true" />
|
|
17
|
+
Create
|
|
18
|
+
</UiToolbarButton>
|
|
19
|
+
</template>
|
|
20
|
+
|
|
21
|
+
<script lang="ts" setup>
|
|
22
|
+
import IconAdd from '@retailcrm/embed-ui-v1-components/assets/sprites/actions/add.svg'
|
|
23
|
+
import { UiToolbarButton } from '@retailcrm/embed-ui-v1-components/remote'
|
|
24
|
+
</script>
|
|
25
|
+
|
|
12
26
|
use_when:
|
|
13
27
|
- You need a compact button in a toolbar or action strip.
|
|
14
28
|
|
|
@@ -69,6 +83,5 @@ styling:
|
|
|
69
83
|
notes:
|
|
70
84
|
- Use documented props and slots as the primary styling API.
|
|
71
85
|
- Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
|
|
72
|
-
- Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
|
|
73
86
|
root_classes:
|
|
74
87
|
- .ui-v1-button
|
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
component: UiToolbarLink
|
|
2
2
|
summary: >
|
|
3
3
|
UiToolbarLink is a compact toolbar-oriented link. It is the link counterpart to UiToolbarButton.
|
|
4
|
-
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uitoolbarlink--docs
|
|
5
4
|
|
|
6
5
|
public_import:
|
|
7
6
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
8
7
|
named:
|
|
9
8
|
- UiToolbarLink
|
|
10
9
|
|
|
10
|
+
examples:
|
|
11
|
+
- title: Toolbar link
|
|
12
|
+
code: |
|
|
13
|
+
<template>
|
|
14
|
+
<UiToolbarLink href="https://example.com">
|
|
15
|
+
Hyperlink
|
|
16
|
+
</UiToolbarLink>
|
|
17
|
+
</template>
|
|
18
|
+
|
|
19
|
+
<script lang="ts" setup>
|
|
20
|
+
import { UiToolbarLink } from '@retailcrm/embed-ui-v1-components/remote'
|
|
21
|
+
</script>
|
|
22
|
+
|
|
11
23
|
use_when:
|
|
12
24
|
- You need a compact link in a toolbar area.
|
|
13
25
|
|
|
@@ -64,6 +76,5 @@ styling:
|
|
|
64
76
|
notes:
|
|
65
77
|
- Use documented props and slots as the primary styling API.
|
|
66
78
|
- 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.
|
|
68
79
|
root_classes:
|
|
69
80
|
- .ui-v1-link
|
|
@@ -2,7 +2,6 @@ component: UiTooltip
|
|
|
2
2
|
summary: >
|
|
3
3
|
UiTooltip is the tooltip-specialized floating layer built on top of popper mechanics.
|
|
4
4
|
Use it for compact helper content anchored to one target.
|
|
5
|
-
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uitooltip--docs
|
|
6
5
|
|
|
7
6
|
public_import:
|
|
8
7
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
@@ -14,6 +13,24 @@ related_components:
|
|
|
14
13
|
- UiPopperConnector
|
|
15
14
|
- UiPopperTarget
|
|
16
15
|
|
|
16
|
+
examples:
|
|
17
|
+
- title: Usage
|
|
18
|
+
code: |
|
|
19
|
+
<template>
|
|
20
|
+
<UiPopperConnector>
|
|
21
|
+
<UiButton disabled>
|
|
22
|
+
Save
|
|
23
|
+
</UiButton>
|
|
24
|
+
|
|
25
|
+
<UiTooltip>
|
|
26
|
+
Complete all required fields before saving
|
|
27
|
+
</UiTooltip>
|
|
28
|
+
</UiPopperConnector>
|
|
29
|
+
</template>
|
|
30
|
+
|
|
31
|
+
<script lang="ts" setup>
|
|
32
|
+
import { UiButton, UiPopperConnector, UiTooltip } from '@retailcrm/embed-ui-v1-components/remote'
|
|
33
|
+
</script>
|
|
17
34
|
use_when:
|
|
18
35
|
- You need compact helper text or tooltip content.
|
|
19
36
|
|
|
@@ -76,6 +93,5 @@ styling:
|
|
|
76
93
|
notes:
|
|
77
94
|
- Use documented props and slots as the primary styling API.
|
|
78
95
|
- Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
|
|
79
|
-
- Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
|
|
80
96
|
root_classes:
|
|
81
97
|
- .ui-v1-popper
|
|
@@ -2,7 +2,6 @@ component: UiTransition
|
|
|
2
2
|
summary: >
|
|
3
3
|
UiTransition is a transition wrapper for animated mount, unmount, and visibility flows.
|
|
4
4
|
Use it to express motion without switching to raw transition markup.
|
|
5
|
-
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uialert--docs
|
|
6
5
|
|
|
7
6
|
public_import:
|
|
8
7
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
@@ -61,4 +60,3 @@ styling:
|
|
|
61
60
|
notes:
|
|
62
61
|
- Use documented props and slots as the primary styling API.
|
|
63
62
|
- Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
|
|
64
|
-
- Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
|
|
@@ -2,13 +2,36 @@ component: UiYandexMap
|
|
|
2
2
|
summary: >
|
|
3
3
|
UiYandexMap is the Yandex map component for map display and related location scenarios.
|
|
4
4
|
Treat it as unstable for now and avoid it unless the screen explicitly requires a map surface.
|
|
5
|
-
usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/experimental-uiyandexmap--docs
|
|
6
5
|
|
|
7
6
|
public_import:
|
|
8
7
|
from: '@retailcrm/embed-ui-v1-components/remote'
|
|
9
8
|
named:
|
|
10
9
|
- UiYandexMap
|
|
11
10
|
|
|
11
|
+
examples:
|
|
12
|
+
- title: Address picker map
|
|
13
|
+
code: |
|
|
14
|
+
<template>
|
|
15
|
+
<div style="width: 640px; max-width: 100%;">
|
|
16
|
+
<UiYandexMap
|
|
17
|
+
v-model:address="address"
|
|
18
|
+
api-key="YOUR_YANDEX_MAPS_API_KEY"
|
|
19
|
+
:plugins="plugins"
|
|
20
|
+
/>
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<p>Selected address:</p>
|
|
24
|
+
{{ address }}
|
|
25
|
+
</template>
|
|
26
|
+
|
|
27
|
+
<script lang="ts" setup>
|
|
28
|
+
import { ref } from 'vue'
|
|
29
|
+
import { UiYandexMap } from '@retailcrm/embed-ui-v1-components/remote'
|
|
30
|
+
|
|
31
|
+
const address = ref('')
|
|
32
|
+
const plugins = []
|
|
33
|
+
</script>
|
|
34
|
+
|
|
12
35
|
use_when:
|
|
13
36
|
- You need a Yandex map view.
|
|
14
37
|
- You need location display inside extension UI.
|
|
@@ -77,6 +100,5 @@ styling:
|
|
|
77
100
|
notes:
|
|
78
101
|
- Use documented props and slots as the primary styling API.
|
|
79
102
|
- Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
|
|
80
|
-
- Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
|
|
81
103
|
root_classes:
|
|
82
104
|
- .ui-v1-yandex-map
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
page_profile: CardSettingsPage
|
|
2
|
+
summary: >
|
|
3
|
+
Settings page or entity card pattern for screens made mostly from forms and local actions.
|
|
4
|
+
|
|
5
|
+
use_when:
|
|
6
|
+
- You need to edit an entity.
|
|
7
|
+
- You need a settings form.
|
|
8
|
+
- You need a white content surface with fields and local controls.
|
|
9
|
+
|
|
10
|
+
examples_from_design:
|
|
11
|
+
- tracked event page
|
|
12
|
+
- sending limit settings
|
|
13
|
+
- email template settings
|
|
14
|
+
- trigger page
|
|
15
|
+
|
|
16
|
+
expected_structure:
|
|
17
|
+
- UiPageHeader with a page title.
|
|
18
|
+
- The title can be editable via an inline-edit pattern when the product flow requires it.
|
|
19
|
+
- One or more 48px header buttons on the right.
|
|
20
|
+
- Header actions can be accompanied by text information or status labels.
|
|
21
|
+
- Optional top tabs.
|
|
22
|
+
- Main content sits on a white content surface.
|
|
23
|
+
- Content can include text, buttons, fields, checkboxes, radio groups, switches, and other form controls.
|
|
24
|
+
- A bottom save panel is optional.
|
|
25
|
+
|
|
26
|
+
recommended_components:
|
|
27
|
+
- name: UiPageHeader
|
|
28
|
+
profile: ../components/UiPageHeader.yml
|
|
29
|
+
- name: UiButton
|
|
30
|
+
profile: ../components/UiButton.yml
|
|
31
|
+
- name: UiField
|
|
32
|
+
profile: ../components/UiField.yml
|
|
33
|
+
- name: UiTextbox
|
|
34
|
+
profile: ../components/UiTextbox.yml
|
|
35
|
+
- name: UiSelect
|
|
36
|
+
profile: ../components/UiSelect.yml
|
|
37
|
+
- name: UiCheckbox
|
|
38
|
+
profile: ../components/UiCheckbox.yml
|
|
39
|
+
- name: UiRadio
|
|
40
|
+
profile: ../components/UiRadio.yml
|
|
41
|
+
- name: UiRadioSwitch
|
|
42
|
+
profile: ../components/UiRadioSwitch.yml
|
|
43
|
+
- name: UiSwitch
|
|
44
|
+
profile: ../components/UiSwitch.yml
|
|
45
|
+
- name: UiTabGroup
|
|
46
|
+
profile: ../components/UiTabGroup.yml
|
|
47
|
+
- name: UiTab
|
|
48
|
+
profile: ../components/UiTab.yml
|
|
49
|
+
- name: UiTag
|
|
50
|
+
profile: ../components/UiTag.yml
|
|
51
|
+
|
|
52
|
+
ai_notes:
|
|
53
|
+
do:
|
|
54
|
+
- Keep form controls grouped by task or semantic section.
|
|
55
|
+
- Use UiField around labelled form controls.
|
|
56
|
+
- Use tabs only when they reduce visible complexity without hiding required work.
|
|
57
|
+
avoid:
|
|
58
|
+
- Do not create a decorative landing page for operational settings.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
page_profile: CollapseBlockPage
|
|
2
|
+
summary: >
|
|
3
|
+
Settings page pattern for content split into independent collapsible semantic groups.
|
|
4
|
+
|
|
5
|
+
use_when:
|
|
6
|
+
- You need settings split into semantic groups.
|
|
7
|
+
- You need optional or advanced sections that can collapse independently.
|
|
8
|
+
|
|
9
|
+
examples_from_design:
|
|
10
|
+
- product editing
|
|
11
|
+
- mailing editing
|
|
12
|
+
- Double Opt-In settings
|
|
13
|
+
|
|
14
|
+
expected_structure:
|
|
15
|
+
- Multiple collapsible blocks with their own content and local actions.
|
|
16
|
+
- If the page contains only collapse blocks, the white page surface is not needed.
|
|
17
|
+
- If every collapse block has its own save action, the bottom save panel is not needed.
|
|
18
|
+
- Collapse blocks can contain text, buttons, fields, controls, and small tables.
|
|
19
|
+
|
|
20
|
+
avoid_inside_blocks:
|
|
21
|
+
- complex tables
|
|
22
|
+
- nested collapse blocks
|
|
23
|
+
- two-column content split across separate surfaces
|
|
24
|
+
|
|
25
|
+
recommended_components:
|
|
26
|
+
- name: UiCollapse
|
|
27
|
+
profile: ../components/UiCollapse.yml
|
|
28
|
+
- name: UiCollapseBox
|
|
29
|
+
profile: ../components/UiCollapseBox.yml
|
|
30
|
+
- name: UiCollapseGroup
|
|
31
|
+
profile: ../components/UiCollapseGroup.yml
|
|
32
|
+
- name: UiButton
|
|
33
|
+
profile: ../components/UiButton.yml
|
|
34
|
+
- name: UiField
|
|
35
|
+
profile: ../components/UiField.yml
|
|
36
|
+
- name: UiTable
|
|
37
|
+
profile: ../components/UiTable.yml
|
|
38
|
+
notes: Use only for small, simple tables.
|
|
39
|
+
|
|
40
|
+
ai_notes:
|
|
41
|
+
do:
|
|
42
|
+
- Use collapses for optional or separable sections.
|
|
43
|
+
- Keep required critical actions visible enough for the workflow.
|
|
44
|
+
avoid:
|
|
45
|
+
- Do not nest collapses inside collapses.
|
|
46
|
+
- Do not hide complex tables inside collapse blocks.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
page_profile: EntityListPage
|
|
2
|
+
summary: >
|
|
3
|
+
Separate page pattern for listing entities with filtering, sorting, table data, pagination,
|
|
4
|
+
and a primary create action.
|
|
5
|
+
|
|
6
|
+
use_when:
|
|
7
|
+
- You need a searchable, filterable registry.
|
|
8
|
+
- You need an order list, customer list, mailing list, task list, catalog, journal, or search-result page.
|
|
9
|
+
|
|
10
|
+
examples_from_design:
|
|
11
|
+
- order list
|
|
12
|
+
- customer list
|
|
13
|
+
- mailing list
|
|
14
|
+
- task list
|
|
15
|
+
|
|
16
|
+
expected_structure:
|
|
17
|
+
- UiPageHeader with a page title.
|
|
18
|
+
- One or more 48px page buttons on the right side of the header.
|
|
19
|
+
- If there are multiple header buttons, one should be primary and the rest can be secondary or tertiary.
|
|
20
|
+
- The main primary button usually creates a new entity for the list.
|
|
21
|
+
- Filters above the table, built from controls such as select, textbox, and combobox-like selection components.
|
|
22
|
+
- Filter controls should run in rows of roughly 4-5 fields, then wrap to the next row.
|
|
23
|
+
- Filters can be collapsible.
|
|
24
|
+
- Filter apply action uses a default secondary 36px text button.
|
|
25
|
+
- Filter reset action uses a danger secondary 36px icon button.
|
|
26
|
+
- Entity data is shown in a table.
|
|
27
|
+
- The table may scroll and may support export.
|
|
28
|
+
|
|
29
|
+
recommended_components:
|
|
30
|
+
- name: UiPageHeader
|
|
31
|
+
profile: ../components/UiPageHeader.yml
|
|
32
|
+
- name: UiButton
|
|
33
|
+
profile: ../components/UiButton.yml
|
|
34
|
+
- name: UiField
|
|
35
|
+
profile: ../components/UiField.yml
|
|
36
|
+
- name: UiTextbox
|
|
37
|
+
profile: ../components/UiTextbox.yml
|
|
38
|
+
- name: UiSelect
|
|
39
|
+
profile: ../components/UiSelect.yml
|
|
40
|
+
- name: UiTable
|
|
41
|
+
profile: ../components/UiTable.yml
|
|
42
|
+
- name: UiTableColumn
|
|
43
|
+
profile: ../components/UiTableColumn.yml
|
|
44
|
+
- name: UiTableSorter
|
|
45
|
+
profile: ../components/UiTableSorter.yml
|
|
46
|
+
- name: UiTableFooterSection
|
|
47
|
+
profile: ../components/UiTableFooterSection.yml
|
|
48
|
+
- name: UiTableFooterButton
|
|
49
|
+
profile: ../components/UiTableFooterButton.yml
|
|
50
|
+
|
|
51
|
+
table_footer_rules:
|
|
52
|
+
- Use UiTableFooterSection and UiTableFooterButton for table footer pagination.
|
|
53
|
+
- Do not replace table footer pagination controls with regular UiButton.
|
|
54
|
+
- Use chevron icon assets for arrow controls, not text glyphs.
|
|
55
|
+
- Keep footer styling scoped to a local table root class.
|
|
56
|
+
- Override the internal footer button class together with the local class when changing pagination text, active page, or arrow colours.
|
|
57
|
+
- "Reference Vue and CSS footer pattern: ../components/UiTable.yml"
|
|
58
|
+
|
|
59
|
+
ai_notes:
|
|
60
|
+
do:
|
|
61
|
+
- Keep filters and table controls directly above the table.
|
|
62
|
+
- Persist filters, sorting, page, and page size in query parameters when routing is available.
|
|
63
|
+
- Reset page to 1 when filters or sorting change.
|
|
64
|
+
avoid:
|
|
65
|
+
- Do not hide filters in page header actions.
|
|
66
|
+
- Do not put pagination only in local state when the result set is routable.
|