@retailcrm/embed-ui-v1-components 0.9.19 → 0.9.22-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/AGENTS.md +9 -1
  2. package/README.md +5 -2
  3. package/assets/sprites/actions/add-square-outlined.svg +8 -0
  4. package/assets/sprites/actions/drag.svg +8 -0
  5. package/bin/embed-ui-v1-components.mjs +231 -46
  6. package/bin/postinstall.mjs +3 -2
  7. package/dist/host.cjs +1223 -501
  8. package/dist/host.css +637 -10
  9. package/dist/host.d.ts +152 -78
  10. package/dist/host.js +1224 -502
  11. package/dist/remote.cjs +1358 -298
  12. package/dist/remote.d.ts +805 -67
  13. package/dist/remote.js +1360 -300
  14. package/docs/AI.md +99 -17
  15. package/docs/COMPONENTS.md +58 -59
  16. package/docs/FORMAT.md +10 -10
  17. package/docs/PROFILES.md +39 -22
  18. package/docs/README.md +11 -5
  19. package/docs/profiles/components/UiAddButton.yml +134 -0
  20. package/docs/profiles/components/UiAlert.yml +105 -0
  21. package/docs/profiles/components/UiAvatar.yml +88 -0
  22. package/docs/profiles/{UiAvatarList.yml → components/UiAvatarList.yml} +26 -0
  23. package/docs/profiles/{UiButton.yml → components/UiButton.yml} +14 -8
  24. package/docs/profiles/components/UiCalendar.yml +190 -0
  25. package/docs/profiles/components/UiCheckbox.yml +111 -0
  26. package/docs/profiles/components/UiCollapse.yml +129 -0
  27. package/docs/profiles/components/UiCollapseBox.yml +143 -0
  28. package/docs/profiles/{UiCollapseGroup.yml → components/UiCollapseGroup.yml} +24 -0
  29. package/docs/profiles/components/UiCopyButton.yml +104 -0
  30. package/docs/profiles/components/UiDate.yml +84 -0
  31. package/docs/profiles/components/UiDatePicker.yml +138 -0
  32. package/docs/profiles/components/UiError.yml +123 -0
  33. package/docs/profiles/{UiField.yml → components/UiField.yml} +46 -15
  34. package/docs/profiles/components/UiInfobox.yml +130 -0
  35. package/docs/profiles/components/UiLink.yml +111 -0
  36. package/docs/profiles/components/UiLoader.yml +71 -0
  37. package/docs/profiles/components/UiMenuItem.yml +93 -0
  38. package/docs/profiles/{UiMenuItemGroup.yml → components/UiMenuItemGroup.yml} +25 -0
  39. package/docs/profiles/components/UiModalSidebar.yml +156 -0
  40. package/docs/profiles/components/UiModalWindow.yml +181 -0
  41. package/docs/profiles/{UiModalWindowSurface.yml → components/UiModalWindowSurface.yml} +30 -0
  42. package/docs/profiles/components/UiNumberStepper.yml +100 -0
  43. package/docs/profiles/{UiPageHeader.yml → components/UiPageHeader.yml} +39 -23
  44. package/docs/profiles/components/UiPopconfirm.yml +164 -0
  45. package/docs/profiles/{UiPopper.yml → components/UiPopper.yml} +66 -13
  46. package/docs/profiles/{UiPopperConnector.yml → components/UiPopperConnector.yml} +5 -25
  47. package/docs/profiles/{UiPopperTarget.yml → components/UiPopperTarget.yml} +5 -25
  48. package/docs/profiles/components/UiRadio.yml +91 -0
  49. package/docs/profiles/{UiRadioSwitch.yml → components/UiRadioSwitch.yml} +55 -32
  50. package/docs/profiles/{UiRadioSwitchOption.yml → components/UiRadioSwitchOption.yml} +7 -13
  51. package/docs/profiles/components/UiScrollBox.yml +108 -0
  52. package/docs/profiles/{UiSelect.yml → components/UiSelect.yml} +133 -44
  53. package/docs/profiles/components/UiSelectOption.yml +74 -0
  54. package/docs/profiles/components/UiSelectOptionGroup.yml +66 -0
  55. package/docs/profiles/components/UiSkeleton.yml +82 -0
  56. package/docs/profiles/components/UiSlider.yml +161 -0
  57. package/docs/profiles/components/UiSwitch.yml +123 -0
  58. package/docs/profiles/components/UiTab.yml +234 -0
  59. package/docs/profiles/{UiTabGroup.yml → components/UiTabGroup.yml} +0 -30
  60. package/docs/profiles/components/UiTable.yml +622 -0
  61. package/docs/profiles/{UiTableBodyCell.yml → components/UiTableBodyCell.yml} +26 -0
  62. package/docs/profiles/components/UiTableColumn.yml +87 -0
  63. package/docs/profiles/components/UiTableFooterButton.yml +85 -0
  64. package/docs/profiles/components/UiTableFooterSection.yml +73 -0
  65. package/docs/profiles/{UiTableHeadCell.yml → components/UiTableHeadCell.yml} +26 -0
  66. package/docs/profiles/{UiTableSorter.yml → components/UiTableSorter.yml} +27 -0
  67. package/docs/profiles/components/UiTag.yml +90 -0
  68. package/docs/profiles/{UiTextbox.yml → components/UiTextbox.yml} +20 -32
  69. package/docs/profiles/components/UiTimePicker.yml +144 -0
  70. package/docs/profiles/{UiToggleButton.yml → components/UiToggleButton.yml} +16 -11
  71. package/docs/profiles/{UiToggleGroup.yml → components/UiToggleGroup.yml} +25 -13
  72. package/docs/profiles/{UiToggleGroupOption.yml → components/UiToggleGroupOption.yml} +7 -11
  73. package/docs/profiles/components/UiToolbarButton.yml +87 -0
  74. package/docs/profiles/components/UiToolbarLink.yml +80 -0
  75. package/docs/profiles/components/UiTooltip.yml +97 -0
  76. package/docs/profiles/components/UiTransition.yml +62 -0
  77. package/docs/profiles/components/UiYandexMap.yml +104 -0
  78. package/docs/profiles/pages/CardSettingsPage.yml +58 -0
  79. package/docs/profiles/pages/CollapseBlockPage.yml +46 -0
  80. package/docs/profiles/pages/EntityListPage.yml +66 -0
  81. package/docs/profiles/pages/ModalSidebar.yml +158 -0
  82. package/docs/profiles/pages/ModalWindow.yml +55 -0
  83. package/docs/profiles/pages/MultiColumnPage.yml +27 -0
  84. package/docs/profiles/pages/PageComposition.yml +56 -0
  85. package/package.json +15 -15
  86. package/docs/profiles/UiAddButton.yml +0 -57
  87. package/docs/profiles/UiAlert.yml +0 -48
  88. package/docs/profiles/UiAvatar.yml +0 -48
  89. package/docs/profiles/UiCalendar.yml +0 -48
  90. package/docs/profiles/UiCheckbox.yml +0 -53
  91. package/docs/profiles/UiCollapse.yml +0 -40
  92. package/docs/profiles/UiCollapseBox.yml +0 -51
  93. package/docs/profiles/UiCopyButton.yml +0 -52
  94. package/docs/profiles/UiDate.yml +0 -38
  95. package/docs/profiles/UiDatePicker.yml +0 -59
  96. package/docs/profiles/UiError.yml +0 -32
  97. package/docs/profiles/UiImage.yml +0 -39
  98. package/docs/profiles/UiInfobox.yml +0 -45
  99. package/docs/profiles/UiLink.yml +0 -51
  100. package/docs/profiles/UiLoader.yml +0 -38
  101. package/docs/profiles/UiMenuItem.yml +0 -57
  102. package/docs/profiles/UiModalSidebar.yml +0 -46
  103. package/docs/profiles/UiModalWindow.yml +0 -44
  104. package/docs/profiles/UiNumberStepper.yml +0 -52
  105. package/docs/profiles/UiRadio.yml +0 -38
  106. package/docs/profiles/UiScrollBox.yml +0 -31
  107. package/docs/profiles/UiSelectOption.yml +0 -44
  108. package/docs/profiles/UiSelectOptionGroup.yml +0 -38
  109. package/docs/profiles/UiSkeleton.yml +0 -41
  110. package/docs/profiles/UiSlider.yml +0 -38
  111. package/docs/profiles/UiSwitch.yml +0 -37
  112. package/docs/profiles/UiTab.yml +0 -119
  113. package/docs/profiles/UiTable.yml +0 -152
  114. package/docs/profiles/UiTableColumn.yml +0 -50
  115. package/docs/profiles/UiTableFooterButton.yml +0 -44
  116. package/docs/profiles/UiTableFooterSection.yml +0 -38
  117. package/docs/profiles/UiTag.yml +0 -41
  118. package/docs/profiles/UiTimePicker.yml +0 -46
  119. package/docs/profiles/UiToolbarButton.yml +0 -37
  120. package/docs/profiles/UiToolbarLink.yml +0 -32
  121. package/docs/profiles/UiTooltip.yml +0 -43
  122. package/docs/profiles/UiTransition.yml +0 -27
  123. package/docs/profiles/UiYandexMap.yml +0 -29
@@ -16,6 +16,31 @@ related_components:
16
16
  - UiCheckbox
17
17
  - UiRadioSwitch
18
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
+
19
44
  use_when:
20
45
  - You need multiple independent selections from a short fixed set.
21
46
  - You want checkbox-like semantics with segmented button visuals.
@@ -187,19 +212,6 @@ composition:
187
212
  - title: Filter chips with icon
188
213
  notes: Use manual option composition or the shared icon slot for compact filters.
189
214
 
190
- examples:
191
- - title: Weekday selection
192
- goal: Build a segmented multi-select weekday picker.
193
- code: |
194
- <UiToggleGroup
195
- v-model:model="days"
196
- aria-label="Weekdays"
197
- rubber
198
- >
199
- <UiToggleGroupOption label="Mon" value="monday" />
200
- <UiToggleGroupOption label="Tue" value="tuesday" />
201
- <UiToggleGroupOption label="Wed" value="wednesday" />
202
- </UiToggleGroup>
203
215
 
204
216
  ai_notes:
205
217
  do:
@@ -96,17 +96,6 @@ composition:
96
96
  - title: Custom label content
97
97
  notes: Use label or default slot when the option needs richer inline markup.
98
98
 
99
- examples:
100
- - title: Icon option inside a group
101
- goal: Define one rich segmented option with icon content.
102
- code: |
103
- <UiToggleGroup v-model:model="filters" aria-label="Filters">
104
- <UiToggleGroupOption label="Files" value="files">
105
- <template #icon>
106
- <IconFile />
107
- </template>
108
- </UiToggleGroupOption>
109
- </UiToggleGroup>
110
99
 
111
100
  ai_notes:
112
101
  do:
@@ -114,3 +103,10 @@ ai_notes:
114
103
  - Prefer label prop for plain text and slots for richer content.
115
104
  avoid:
116
105
  - Do not use it as a standalone control outside UiToggleGroup.
106
+
107
+ styling:
108
+ notes:
109
+ - Use documented props and slots as the primary styling API.
110
+ - Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
111
+ root_classes:
112
+ - .ui-v1-toggle-button
@@ -0,0 +1,87 @@
1
+ component: UiToolbarButton
2
+ summary: >
3
+ UiToolbarButton is a compact button for toolbar zones. It shares action semantics with buttons
4
+ but is tuned for dense toolbar layouts.
5
+
6
+ public_import:
7
+ from: '@retailcrm/embed-ui-v1-components/remote'
8
+ named:
9
+ - UiToolbarButton
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
+
26
+ use_when:
27
+ - You need a compact button in a toolbar or action strip.
28
+
29
+ avoid_when:
30
+ - You need the full visual weight of UiButton.
31
+
32
+ api:
33
+ emits:
34
+ - name: click
35
+ - name: focus
36
+ - name: blur
37
+ methods:
38
+ - name: click
39
+ - name: focus
40
+ - name: blur
41
+
42
+ rendered_structure:
43
+ descriptive_only: true
44
+ root:
45
+ shape: button.ui-v1-button or a.ui-v1-button via UiButton
46
+ tag: button or a
47
+ notes: The component delegates its actual root element and layout behavior to UiButton.
48
+
49
+ geometry:
50
+ layout: compact toolbar action
51
+ root_display: inline-block
52
+ width_behavior: content-sized by default
53
+
54
+ behavior:
55
+ notes:
56
+ - Delegates button semantics to UiButton.
57
+ - Use for dense repeated toolbar actions, not primary form submission.
58
+
59
+ composition:
60
+ works_well_with:
61
+ - UiToolbarLink
62
+ - UiButton
63
+ patterns:
64
+ - title: Compact action strip
65
+ notes: Use for secondary actions near tables, editors, or filter bars.
66
+
67
+ ai_notes:
68
+ do:
69
+ - Use in toolbar zones where UiButton would be too visually heavy.
70
+ avoid:
71
+ - Do not use for the main page CTA; use UiButton.
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
+ root_classes:
87
+ - .ui-v1-button
@@ -0,0 +1,80 @@
1
+ component: UiToolbarLink
2
+ summary: >
3
+ UiToolbarLink is a compact toolbar-oriented link. It is the link counterpart to UiToolbarButton.
4
+
5
+ public_import:
6
+ from: '@retailcrm/embed-ui-v1-components/remote'
7
+ named:
8
+ - UiToolbarLink
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
+
23
+ use_when:
24
+ - You need a compact link in a toolbar area.
25
+
26
+ avoid_when:
27
+ - You need a regular inline content link.
28
+
29
+ api:
30
+ emits:
31
+ - name: click
32
+ - name: focus
33
+ - name: blur
34
+
35
+ rendered_structure:
36
+ descriptive_only: true
37
+ root:
38
+ shape: a.ui-v1-link via UiLink
39
+ tag: a
40
+ notes: The component delegates its actual root element and layout behavior to UiLink.
41
+
42
+ geometry:
43
+ layout: compact toolbar link
44
+ root_display: inline-flex
45
+ width_behavior: content-sized by default
46
+
47
+ behavior:
48
+ notes:
49
+ - Delegates link semantics to UiLink.
50
+ - Use only for real navigation or link-shaped actions in dense toolbar areas.
51
+
52
+ composition:
53
+ works_well_with:
54
+ - UiToolbarButton
55
+ - UiLink
56
+ patterns:
57
+ - title: Toolbar navigation
58
+ notes: Use for compact links next to toolbar buttons when the action navigates.
59
+
60
+ ai_notes:
61
+ do:
62
+ - Use in toolbar zones when a compact real link is needed.
63
+ avoid:
64
+ - Do not use for ordinary inline content links; use UiLink.
65
+
66
+ accessibility:
67
+ notes:
68
+ - Prefer visible text labels for interactive controls.
69
+ - For icon-only or custom visual content, provide an accessible name through the supported label, title, or ARIA attributes exposed by the component.
70
+ - Preserve native keyboard semantics by using the component root instead of recreating the control with arbitrary markup.
71
+ keyboard:
72
+ - Tab moves focus to the control when it is focusable.
73
+ - Enter or Space activates native button-like controls when the host implementation renders a button.
74
+
75
+ styling:
76
+ notes:
77
+ - Use documented props and slots as the primary styling API.
78
+ - Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
79
+ root_classes:
80
+ - .ui-v1-link
@@ -0,0 +1,97 @@
1
+ component: UiTooltip
2
+ summary: >
3
+ UiTooltip is the tooltip-specialized floating layer built on top of popper mechanics.
4
+ Use it for compact helper content anchored to one target.
5
+
6
+ public_import:
7
+ from: '@retailcrm/embed-ui-v1-components/remote'
8
+ named:
9
+ - UiTooltip
10
+
11
+ related_components:
12
+ - UiPopper
13
+ - UiPopperConnector
14
+ - UiPopperTarget
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>
34
+ use_when:
35
+ - You need compact helper text or tooltip content.
36
+
37
+ avoid_when:
38
+ - You need a dropdown or rich popup layout.
39
+
40
+ api:
41
+ key_props:
42
+ - name: visible
43
+ - name: placement
44
+ - name: targetTriggers
45
+ - name: popperTriggers
46
+
47
+ rendered_structure:
48
+ descriptive_only: true
49
+ root:
50
+ shape: div.ui-v1-popper via UiPopper
51
+ tag: div
52
+ notes: The component delegates the actual floating root to UiPopper and renders its content inside the popper body.
53
+
54
+ geometry:
55
+ layout: floating tooltip layer outside normal document flow
56
+ root_display: block
57
+ width_behavior: content-sized by tooltip content
58
+
59
+ ai_notes:
60
+ do:
61
+ - Use UiTooltip for tooltip semantics and UiPopper for lower-level floating behavior.
62
+ - Keep tooltip content short and non-essential.
63
+ avoid:
64
+ - Do not put forms, tables, or multi-step interactions in tooltips.
65
+
66
+ behavior:
67
+ notes:
68
+ - visible can control display explicitly.
69
+ - targetTriggers and popperTriggers define how the tooltip opens and closes.
70
+ - placement controls the preferred floating position.
71
+
72
+ composition:
73
+ works_well_with:
74
+ - UiPopperConnector
75
+ - UiPopperTarget
76
+ - UiButton
77
+ patterns:
78
+ - title: Icon helper
79
+ notes: Pair with an icon-only or compact control when a short explanation is needed.
80
+ - title: Truncated text hint
81
+ notes: Use to reveal full text only when the visible cell or label is intentionally truncated.
82
+
83
+ accessibility:
84
+ notes:
85
+ - Prefer visible text labels for interactive controls.
86
+ - For icon-only or custom visual content, provide an accessible name through the supported label, title, or ARIA attributes exposed by the component.
87
+ - Preserve native keyboard semantics by using the component root instead of recreating the control with arbitrary markup.
88
+ keyboard:
89
+ - Tab moves focus to the control when it is focusable.
90
+ - Enter or Space activates native button-like controls when the host implementation renders a button.
91
+
92
+ styling:
93
+ notes:
94
+ - Use documented props and slots as the primary styling API.
95
+ - Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
96
+ root_classes:
97
+ - .ui-v1-popper
@@ -0,0 +1,62 @@
1
+ component: UiTransition
2
+ summary: >
3
+ UiTransition is a transition wrapper for animated mount, unmount, and visibility flows.
4
+ Use it to express motion without switching to raw transition markup.
5
+
6
+ public_import:
7
+ from: '@retailcrm/embed-ui-v1-components/remote'
8
+ named:
9
+ - UiTransition
10
+
11
+ use_when:
12
+ - You need transition behavior around content.
13
+
14
+ avoid_when:
15
+ - You need static content with no transition behavior.
16
+
17
+ rendered_structure:
18
+ descriptive_only: true
19
+ root:
20
+ shape: no persistent DOM root
21
+ tag: none
22
+ notes: The component is a thin wrapper around the native Vue transition and forwards its slot content.
23
+
24
+ geometry:
25
+ layout: no standalone layout of its own
26
+ root_display: none
27
+ width_behavior: defined entirely by the transitioned child
28
+
29
+ api:
30
+ key_props:
31
+ - name: name
32
+ - name: appear
33
+
34
+ behavior:
35
+ notes:
36
+ - Adds transition semantics around the slotted child.
37
+ - Does not create layout or styling by itself.
38
+
39
+ composition:
40
+ works_well_with:
41
+ - UiAlert
42
+ - UiCollapse
43
+ - UiModalWindow
44
+ patterns:
45
+ - title: Animated presence
46
+ notes: Use when content should mount or unmount with the shared transition behavior.
47
+
48
+ ai_notes:
49
+ do:
50
+ - Use around one logical child whose own layout should remain responsible for size.
51
+ avoid:
52
+ - Do not use as a layout wrapper or visual container.
53
+
54
+ accessibility:
55
+ notes:
56
+ - Keep rendered text concise and meaningful for screen-reader users.
57
+ - Do not use this component as the only carrier of critical state if the state also needs form-level validation or focus management.
58
+
59
+ styling:
60
+ notes:
61
+ - Use documented props and slots as the primary styling API.
62
+ - Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
@@ -0,0 +1,104 @@
1
+ component: UiYandexMap
2
+ summary: >
3
+ UiYandexMap is the Yandex map component for map display and related location scenarios.
4
+ Treat it as unstable for now and avoid it unless the screen explicitly requires a map surface.
5
+
6
+ public_import:
7
+ from: '@retailcrm/embed-ui-v1-components/remote'
8
+ named:
9
+ - UiYandexMap
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
+
35
+ use_when:
36
+ - You need a Yandex map view.
37
+ - You need location display inside extension UI.
38
+
39
+ avoid_when:
40
+ - You can solve the task without an embedded map and do not want to depend on an unstable component.
41
+ - You only need text address output.
42
+
43
+ rendered_structure:
44
+ descriptive_only: true
45
+ root:
46
+ shape: div.ui-v1-yandex-map
47
+ tag: div
48
+ notes: The root is one map container that hosts the Yandex map instance.
49
+
50
+ geometry:
51
+ layout: block-like map container
52
+ root_display: flex
53
+ width_behavior: stretches to container width by default
54
+
55
+ api:
56
+ key_props:
57
+ - name: apiKey
58
+ notes: Required Yandex Maps API key.
59
+ - name: address
60
+ notes: Address string used by the map and update channel.
61
+ - name: plugins
62
+ notes: Optional map plugins such as locator integration.
63
+ emits:
64
+ - name: update:address
65
+ - name: change
66
+
67
+ behavior:
68
+ notes:
69
+ - Depends on Yandex map runtime availability.
70
+ - Should be treated as a specialized surface, not a generic layout block.
71
+ - The current public API is address-oriented rather than marker-list oriented.
72
+
73
+ composition:
74
+ works_well_with:
75
+ - UiLoader
76
+ - UiAlert
77
+ patterns:
78
+ - title: Location display
79
+ notes: Use only when map interaction or spatial context is essential.
80
+ - title: Address-only view
81
+ notes: Prefer text address output when a map does not add actionable value.
82
+
83
+ ai_notes:
84
+ do:
85
+ - Use only for explicit map requirements.
86
+ - Provide a non-map fallback or error state when the map runtime can fail.
87
+ avoid:
88
+ - Do not add maps as decorative content.
89
+
90
+ accessibility:
91
+ notes:
92
+ - Prefer visible text labels for interactive controls.
93
+ - For icon-only or custom visual content, provide an accessible name through the supported label, title, or ARIA attributes exposed by the component.
94
+ - Preserve native keyboard semantics by using the component root instead of recreating the control with arbitrary markup.
95
+ keyboard:
96
+ - Tab moves focus to the control when it is focusable.
97
+ - Enter or Space activates native button-like controls when the host implementation renders a button.
98
+
99
+ styling:
100
+ notes:
101
+ - Use documented props and slots as the primary styling API.
102
+ - Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
103
+ root_classes:
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.