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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/AGENTS.md +8 -0
  2. package/README.md +5 -1
  3. package/bin/embed-ui-v1-components.mjs +32 -24
  4. package/bin/postinstall.mjs +2 -2
  5. package/dist/host.cjs +19 -13
  6. package/dist/host.css +8 -10
  7. package/dist/host.d.ts +52 -58
  8. package/dist/host.js +19 -13
  9. package/dist/remote.cjs +97 -94
  10. package/dist/remote.d.ts +20 -32
  11. package/dist/remote.js +97 -94
  12. package/docs/AGENT-DESIGN-GUIDELINES.md +463 -0
  13. package/docs/AI.md +89 -6
  14. package/docs/FORMAT.md +11 -9
  15. package/docs/PROFILES.md +9 -5
  16. package/docs/README.md +14 -5
  17. package/docs/assets/page-guidelines/card-settings-page.png +0 -0
  18. package/docs/assets/page-guidelines/collapse-block-page.png +0 -0
  19. package/docs/assets/page-guidelines/entity-list-page.png +0 -0
  20. package/docs/assets/page-guidelines/modal-sidebar.png +0 -0
  21. package/docs/assets/page-guidelines/modal-window.png +0 -0
  22. package/docs/assets/page-guidelines/multi-column-page.png +0 -0
  23. package/docs/profiles/UiAddButton.yml +30 -0
  24. package/docs/profiles/UiAlert.yml +27 -0
  25. package/docs/profiles/UiAvatar.yml +26 -0
  26. package/docs/profiles/UiAvatarList.yml +28 -0
  27. package/docs/profiles/UiButton.yml +1 -8
  28. package/docs/profiles/UiCalendar.yml +28 -0
  29. package/docs/profiles/UiCheckbox.yml +32 -0
  30. package/docs/profiles/UiCollapse.yml +34 -0
  31. package/docs/profiles/UiCollapseBox.yml +30 -0
  32. package/docs/profiles/UiCollapseGroup.yml +26 -0
  33. package/docs/profiles/UiCopyButton.yml +35 -0
  34. package/docs/profiles/UiDate.yml +28 -0
  35. package/docs/profiles/UiDatePicker.yml +30 -0
  36. package/docs/profiles/UiError.yml +45 -0
  37. package/docs/profiles/UiField.yml +1 -15
  38. package/docs/profiles/UiImage.yml +28 -0
  39. package/docs/profiles/UiInfobox.yml +33 -0
  40. package/docs/profiles/UiLink.yml +40 -0
  41. package/docs/profiles/UiLoader.yml +35 -0
  42. package/docs/profiles/UiMenuItem.yml +38 -0
  43. package/docs/profiles/UiMenuItemGroup.yml +27 -0
  44. package/docs/profiles/UiModalSidebar.yml +32 -0
  45. package/docs/profiles/UiModalWindow.yml +42 -0
  46. package/docs/profiles/UiModalWindowSurface.yml +32 -0
  47. package/docs/profiles/UiNumberStepper.yml +36 -0
  48. package/docs/profiles/UiPageHeader.yml +1 -23
  49. package/docs/profiles/UiPopper.yml +1 -13
  50. package/docs/profiles/UiPopperConnector.yml +7 -25
  51. package/docs/profiles/UiPopperTarget.yml +7 -25
  52. package/docs/profiles/UiRadio.yml +40 -0
  53. package/docs/profiles/UiRadioSwitch.yml +1 -32
  54. package/docs/profiles/UiRadioSwitchOption.yml +9 -13
  55. package/docs/profiles/UiScrollBox.yml +34 -0
  56. package/docs/profiles/UiSelect.yml +1 -44
  57. package/docs/profiles/UiSelectOption.yml +32 -0
  58. package/docs/profiles/UiSelectOptionGroup.yml +30 -0
  59. package/docs/profiles/UiSkeleton.yml +32 -0
  60. package/docs/profiles/UiSlider.yml +40 -0
  61. package/docs/profiles/UiSwitch.yml +38 -0
  62. package/docs/profiles/UiTab.yml +7 -16
  63. package/docs/profiles/UiTabGroup.yml +1 -30
  64. package/docs/profiles/UiTable.yml +148 -0
  65. package/docs/profiles/UiTableBodyCell.yml +28 -0
  66. package/docs/profiles/UiTableColumn.yml +39 -0
  67. package/docs/profiles/UiTableFooterButton.yml +43 -0
  68. package/docs/profiles/UiTableFooterSection.yml +37 -0
  69. package/docs/profiles/UiTableHeadCell.yml +28 -0
  70. package/docs/profiles/UiTableSorter.yml +29 -0
  71. package/docs/profiles/UiTag.yml +38 -0
  72. package/docs/profiles/UiTextbox.yml +1 -32
  73. package/docs/profiles/UiTimePicker.yml +40 -0
  74. package/docs/profiles/UiToggleButton.yml +1 -11
  75. package/docs/profiles/UiToggleGroup.yml +1 -13
  76. package/docs/profiles/UiToggleGroupOption.yml +9 -11
  77. package/docs/profiles/UiToolbarButton.yml +37 -0
  78. package/docs/profiles/UiToolbarLink.yml +37 -0
  79. package/docs/profiles/UiTooltip.yml +38 -0
  80. package/docs/profiles/UiTransition.yml +37 -0
  81. package/docs/profiles/UiYandexMap.yml +53 -0
  82. package/package.json +15 -15
@@ -2,6 +2,7 @@ component: UiTable
2
2
  summary: >
3
3
  UiTable is the main data table component. It supports row rendering, grouping, expandable rows,
4
4
  footer areas, and row-level interactions.
5
+ usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uitable--docs
5
6
 
6
7
  public_import:
7
8
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -10,6 +11,9 @@ public_import:
10
11
 
11
12
  related_components:
12
13
  - UiTableColumn
14
+ - UiTableFooterButton
15
+ - UiTableFooterSection
16
+ - UiTableSorter
13
17
 
14
18
  use_when:
15
19
  - You need structured tabular data.
@@ -36,6 +40,18 @@ api:
36
40
  - name: footer
37
41
  zone: footer
38
42
  creates: Full footer area.
43
+ - name: footer-summary
44
+ zone: structured-footer
45
+ creates: Summary or selected-count area above table footer controls.
46
+ - name: footer-page-size
47
+ zone: structured-footer
48
+ creates: Page-size controls in the footer control row.
49
+ - name: footer-export
50
+ zone: structured-footer
51
+ creates: Export controls in the footer control row.
52
+ - name: footer-pagination
53
+ zone: structured-footer
54
+ creates: Pagination controls in the footer control row.
39
55
  - name: group-head
40
56
  zone: group-head
41
57
  creates: Group heading content.
@@ -75,12 +91,16 @@ geometry:
75
91
  - Root fills available width.
76
92
  - fixed=true switches table-layout from auto to fixed.
77
93
  - bordered=true adds border and corner rounding through CSS variables.
94
+ - Filters and search controls should usually be placed above the table, not in the table root.
95
+ - Table-scoped pagination belongs in footer slots when custom controls are needed.
78
96
 
79
97
  styling:
80
98
  notes:
81
99
  - UiTable exposes a relatively rich CSS-variable surface for spacing and table chrome.
82
100
  - Prefer table props and slot composition first, then CSS variables for spacing or background tuning.
83
101
  - Internal classes are descriptive and mainly useful for debugging or narrow local integration.
102
+ - For reference-style footers, add a local class to UiTable and scope footer styles through that class.
103
+ - When styling footer pagination buttons, combine the internal footer button class with the local state class so base footer styles do not override page, active, or arrow colors.
84
104
  root_classes:
85
105
  - .ui-v1-table
86
106
  state_classes:
@@ -150,3 +170,131 @@ styling:
150
170
  size: 12px
151
171
  line_height: 14px
152
172
  weight: 400
173
+ reference_footer_css:
174
+ notes:
175
+ - Use this as the minimum CSS contract when recreating the Storybook reference table footer.
176
+ - Keep class names local to the screen, but preserve the same geometry and state rules.
177
+ - Plain CSS values below mirror the package palette: blue #005eeb, black #1e2248, grey #afb9c3 / #dee2e6.
178
+ example: |
179
+ .entity-list-table {
180
+ --ui-v1-table-cell-padding-x: 12px;
181
+ --ui-v1-table-cell-padding-y: 12px;
182
+ --ui-v1-table-padding-start: 16px;
183
+ --ui-v1-table-padding-end: 16px;
184
+ --ui-v1-table-rounding: 4px;
185
+ --ui-v1-table-head-cell-padding-block-start: 14px;
186
+ --ui-v1-table-head-cell-padding-block-end: 14px;
187
+ --ui-v1-table-body-cell-padding-block-start: 15px;
188
+ --ui-v1-table-body-cell-padding-block-end: 15px;
189
+ }
190
+
191
+ .entity-list-table .ui-v1-table__footer-meta {
192
+ min-height: 40px;
193
+ font-weight: 400;
194
+ }
195
+
196
+ .entity-list-table .ui-v1-table__footer-controls {
197
+ min-height: 52px;
198
+ background: #f9fafb;
199
+ }
200
+
201
+ .entity-list-table .ui-v1-table__footer-section {
202
+ font-size: 14px;
203
+ line-height: 20px;
204
+ }
205
+
206
+ .entity-list-table .ui-v1-table__footer-side > .entity-list-table__pagination-section {
207
+ padding-block: 8px;
208
+ }
209
+
210
+ .entity-list-table__pagination {
211
+ display: flex;
212
+ align-items: center;
213
+ gap: 8px;
214
+ height: 36px;
215
+ }
216
+
217
+ .entity-list-table__pagination-button,
218
+ .entity-list-table__pagination-arrow {
219
+ width: 36px;
220
+ height: 36px;
221
+ border-radius: 4px;
222
+ }
223
+
224
+ .entity-list-table .ui-v1-table__footer-button.entity-list-table__pagination-button {
225
+ color: #1e2248;
226
+ font-size: 14px;
227
+ line-height: 20px;
228
+ }
229
+
230
+ .entity-list-table .ui-v1-table__footer-button.entity-list-table__pagination-button_current {
231
+ color: #fff;
232
+ background: #005eeb;
233
+ }
234
+
235
+ .entity-list-table .ui-v1-table__footer-button.entity-list-table__pagination-arrow {
236
+ color: #afb9c3;
237
+ }
238
+
239
+ .entity-list-table__pagination-arrow-icon {
240
+ display: block;
241
+ width: 24px;
242
+ height: 24px;
243
+ }
244
+
245
+ .entity-list-table__pagination-divider {
246
+ width: 1px;
247
+ height: 52px;
248
+ margin-block: -8px;
249
+ background: #dee2e6;
250
+ }
251
+
252
+ composition:
253
+ filters:
254
+ notes:
255
+ - Keep filter controls directly above UiTable so the relationship between filters and rows is obvious.
256
+ - Use UiTextbox for text search and UiSelect or compact toggle controls for finite filters.
257
+ - Persist filter values in URL query parameters when routing is available.
258
+ sorting:
259
+ notes:
260
+ - Use UiTableSorter inside a UiTableColumn label slot for sortable columns.
261
+ - Reset pagination to the first page when sorting changes.
262
+ - Persist sort key and direction in URL query parameters when routing is available.
263
+ pagination:
264
+ notes:
265
+ - Use footer-summary, footer-page-size, footer-export, and footer-pagination slots for structured footer controls.
266
+ - footer-pagination should use UiTableFooterSection as the root wrapper.
267
+ - Use UiTableFooterButton for page numbers and previous/next arrow controls.
268
+ - Do not use regular UiButton for table footer pagination.
269
+ - Use a local inner flex group for page buttons, dividers, and arrow buttons when recreating the reference-table footer pattern.
270
+ - Use chevron icon assets for previous/next arrows instead of text glyphs such as < or >.
271
+ - Add scoped CSS for footer meta height, control-row background, pagination button size, active page state, arrow icon size, and vertical dividers.
272
+ - Persist page and page size in URL query parameters when routing is available.
273
+ - Reset page to 1 when filters or sorting change.
274
+
275
+ ai_notes:
276
+ do:
277
+ - Read ../AI.md table-screen rules before generating complete table screens.
278
+ - Provide row-key for stable row identity.
279
+ - Put table filters above the table.
280
+ - Use structured footer slots for summary, page-size controls, export, and pagination.
281
+ - Compose footer controls with UiTableFooterSection and UiTableFooterButton.
282
+ - Copy the reference_footer_css pattern when building a realistic entity-list footer.
283
+ - Use UiTableSorter for sortable headers.
284
+ avoid:
285
+ - Do not hide table filters in page header actions.
286
+ - Do not use UiButton inside table footer pagination.
287
+ - Do not put pagination only in local state when the screen has routable result sets.
288
+ - Do not import table internals from host or src paths.
289
+
290
+ behavior:
291
+ notes:
292
+ - Read key_props first to identify supported states and variants.
293
+ - Prefer controlled props and documented emits when synchronizing component state with screen logic.
294
+
295
+ accessibility:
296
+ notes:
297
+ - Use meaningful column labels so screen-reader users can understand each cell in context.
298
+ - Use stable row keys so expanded rows and row-level state remain attached to the correct data item.
299
+ - Put interactive controls inside cells as real controls such as UiLink or UiButton, not plain clickable text.
300
+ - When rows are clickable, keep the primary row action visible as a link or button as well.
@@ -2,6 +2,7 @@ component: UiTableBodyCell
2
2
  summary: >
3
3
  UiTableBodyCell is the low-level body cell primitive used inside UiTable rows.
4
4
  Use it only for custom table layouts built from public table parts.
5
+ usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uitable--docs
5
6
 
6
7
  public_import:
7
8
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -43,5 +44,32 @@ geometry:
43
44
  ai_notes:
44
45
  do:
45
46
  - Keep it inside UiTable row composition.
47
+ - Use theme="group" only for group header style cells.
46
48
  avoid:
47
49
  - Do not use it as a generic box or layout wrapper.
50
+
51
+ composition:
52
+ works_well_with:
53
+ - UiTable
54
+ - UiTableColumn
55
+ patterns:
56
+ - title: Custom row structure
57
+ notes: Prefer UiTableColumn cell slots first; use UiTableBodyCell only for low-level custom rows.
58
+
59
+ behavior:
60
+ notes:
61
+ - Behavior is mostly coordinated by the parent component.
62
+ - Use this child only in the documented parent composition.
63
+
64
+ accessibility:
65
+ notes:
66
+ - This component is normally used inside its parent composition; accessibility behavior is completed by the parent component.
67
+ - Keep labels and visible text meaningful because parent keyboard and screen-reader behavior depends on child content.
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-table
@@ -2,6 +2,7 @@ component: UiTableColumn
2
2
  summary: >
3
3
  UiTableColumn declares one logical column inside UiTable. It carries label and sizing metadata
4
4
  and defines how header labels and cells render.
5
+ usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uitable--docs
5
6
 
6
7
  public_import:
7
8
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -48,3 +49,41 @@ geometry:
48
49
  layout: structural table column
49
50
  root_display: table-column
50
51
  width_behavior: controlled by table layout and width props on the parent table
52
+
53
+ composition:
54
+ works_well_with:
55
+ - UiTable
56
+ - UiTableSorter
57
+ - UiLink
58
+ - UiTag
59
+ patterns:
60
+ - title: Primary link column
61
+ notes: Put the row's main UiLink in the first meaningful text column and set link size to small.
62
+ - title: Sortable header
63
+ notes: Use the label slot with UiTableSorter when the column supports sorting.
64
+ - title: Status column
65
+ notes: Use UiTag for categorical statuses instead of raw colored text.
66
+
67
+ ai_notes:
68
+ do:
69
+ - Set minWidth for important text columns so generated tables remain scannable.
70
+ - Use align="right" for numbers, money, and percentages.
71
+ - Use trim only for narrow checkbox, icon, or action columns.
72
+ avoid:
73
+ - Do not place filters inside column labels; filters belong above the table.
74
+
75
+ behavior:
76
+ notes:
77
+ - Behavior is mostly coordinated by the parent component.
78
+ - Use this child only in the documented parent composition.
79
+
80
+ accessibility:
81
+ notes:
82
+ - This component is normally used inside its parent composition; accessibility behavior is completed by the parent component.
83
+ - Keep labels and visible text meaningful because parent keyboard and screen-reader behavior depends on child content.
84
+
85
+ styling:
86
+ notes:
87
+ - Use documented props and slots as the primary styling API.
88
+ - Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
89
+ - Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
@@ -2,6 +2,7 @@ component: UiTableFooterButton
2
2
  summary: >
3
3
  UiTableFooterButton is a footer-scoped action control for custom table footer layouts.
4
4
  It behaves like a table-specific button primitive rather than a full replacement for UiButton.
5
+ usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.20/?path=/docs/components-uitable--docs
5
6
 
6
7
  public_import:
7
8
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -40,5 +41,47 @@ geometry:
40
41
  ai_notes:
41
42
  do:
42
43
  - Keep it in table footer usage.
44
+ - Use for page-size, pagination, export, and compact table-scoped footer actions.
43
45
  avoid:
44
46
  - Do not substitute it for general page-level actions.
47
+
48
+ composition:
49
+ works_well_with:
50
+ - UiTableFooterSection
51
+ - UiTable
52
+ patterns:
53
+ - title: Pagination control
54
+ notes: Use inside footer-pagination slot for previous, next, and page controls.
55
+ states:
56
+ - name: ordinary-page
57
+ notes: Render the page number as UiTableFooterButton text.
58
+ - name: current-page
59
+ notes: Mark the active page with a local custom class and style it inside the table example scope.
60
+ - name: arrow
61
+ notes: Render the previous/next chevron icon inside UiTableFooterButton and provide an aria-label.
62
+ - name: passive-or-disabled
63
+ notes: Use disabled when the control is unavailable; use a local custom class only for visual passive states such as selected page size.
64
+ - title: Page-size control
65
+ notes: Use inside footer-page-size slot for compact page-size choices.
66
+
67
+ behavior:
68
+ notes:
69
+ - Behavior is mostly coordinated by the parent component.
70
+ - Use this child only in the documented parent composition.
71
+
72
+ accessibility:
73
+ notes:
74
+ - This component is normally used inside its parent composition; accessibility behavior is completed by the parent component.
75
+ - Keep labels and visible text meaningful because parent keyboard and screen-reader behavior depends on child content.
76
+
77
+ styling:
78
+ notes:
79
+ - Use documented props and slots as the primary styling API.
80
+ - Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
81
+ - Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
82
+ - For footer pagination, style local custom classes on UiTableFooterButton instead of replacing it with UiButton.
83
+ - For page buttons, use a 36px square target with 4px radius, 14px text, black ordinary page color, and blue active background.
84
+ - For arrow buttons, use a 36px square target with a 24px chevron icon and grey color.
85
+ - Combine selectors like `.entity-list-table .ui-v1-table__footer-button.entity-list-table__pagination-button_current` when overriding active states, because base footer button styles set link-like colors.
86
+ root_classes:
87
+ - .ui-v1-table
@@ -2,6 +2,7 @@ component: UiTableFooterSection
2
2
  summary: >
3
3
  UiTableFooterSection is the low-level footer container for custom table footer layouts.
4
4
  It is mainly useful when UiTable footer slots are not enough on their own.
5
+ usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.20/?path=/docs/components-uitable--docs
5
6
 
6
7
  public_import:
7
8
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -19,6 +20,12 @@ avoid_when:
19
20
  - UiTable footer slots already solve the layout.
20
21
  - You do not need explicit footer structure.
21
22
 
23
+ api:
24
+ slots:
25
+ - name: default
26
+ zone: footer-section-content
27
+ creates: Compact footer controls or metadata.
28
+
22
29
  rendered_structure:
23
30
  descriptive_only: true
24
31
  root:
@@ -34,5 +41,35 @@ geometry:
34
41
  ai_notes:
35
42
  do:
36
43
  - Use it only as part of custom table footer composition.
44
+ - Keep content compact and table-scoped.
45
+ - Add local CSS on the table root for footer row height, background, typography, and pagination spacing when recreating the reference footer.
37
46
  avoid:
38
47
  - Do not treat it as a standalone layout section.
48
+
49
+ composition:
50
+ works_well_with:
51
+ - UiTable
52
+ - UiTableFooterButton
53
+ patterns:
54
+ - title: Structured table footer
55
+ notes: Use in footer-page-size, footer-export, and footer-pagination slots to match table footer spacing.
56
+
57
+ behavior:
58
+ notes:
59
+ - Behavior is mostly coordinated by the parent component.
60
+ - Use this child only in the documented parent composition.
61
+
62
+ accessibility:
63
+ notes:
64
+ - This component is normally used inside its parent composition; accessibility behavior is completed by the parent component.
65
+ - Keep labels and visible text meaningful because parent keyboard and screen-reader behavior depends on child content.
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
+ - For reference-style footer controls, apply a local class to each UiTableFooterSection and style it through the UiTable root class.
73
+ - The pagination section usually needs padding-block 8px and an inner flex group with 8px gaps.
74
+ root_classes:
75
+ - .ui-v1-table
@@ -2,6 +2,7 @@ component: UiTableHeadCell
2
2
  summary: >
3
3
  UiTableHeadCell is the low-level table header cell primitive used inside UiTable head rows.
4
4
  Use it only when you build custom table structure from public table parts.
5
+ usage: https://retailcrm.github.io/embed-ui/v1-components/0.9.18/?path=/docs/components-uitable--docs
5
6
 
6
7
  public_import:
7
8
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -40,5 +41,32 @@ geometry:
40
41
  ai_notes:
41
42
  do:
42
43
  - Prefer UiTableColumn first for regular table headers.
44
+ - Use with UiTableSorter when building fully custom table structure.
43
45
  avoid:
44
46
  - Do not use it as a generic container outside table head rows.
47
+
48
+ composition:
49
+ works_well_with:
50
+ - UiTableSorter
51
+ - UiTableColumn
52
+ patterns:
53
+ - title: Low-level sortable head
54
+ notes: Use only when UiTableColumn label slot cannot express the needed header.
55
+
56
+ behavior:
57
+ notes:
58
+ - Behavior is mostly coordinated by the parent component.
59
+ - Use this child only in the documented parent composition.
60
+
61
+ accessibility:
62
+ notes:
63
+ - This component is normally used inside its parent composition; accessibility behavior is completed by the parent component.
64
+ - Keep labels and visible text meaningful because parent keyboard and screen-reader behavior depends on child content.
65
+
66
+ styling:
67
+ notes:
68
+ - Use documented props and slots as the primary styling API.
69
+ - Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
70
+ - Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
71
+ root_classes:
72
+ - .ui-v1-table
@@ -2,6 +2,7 @@ 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
5
6
 
6
7
  public_import:
7
8
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -41,5 +42,33 @@ geometry:
41
42
  ai_notes:
42
43
  do:
43
44
  - Pair it with explicit sort state in screen logic.
45
+ - Persist sort key and direction in URL query parameters when the table is routable.
46
+ - Reset the current page to 1 when sorting changes.
44
47
  avoid:
45
48
  - Do not use it as a generic icon-only control outside table headers.
49
+
50
+ composition:
51
+ works_well_with:
52
+ - UiTableColumn
53
+ - UiTableHeadCell
54
+ patterns:
55
+ - title: Column label slot
56
+ notes: Place in UiTableColumn label slot for normal sortable columns.
57
+
58
+ behavior:
59
+ notes:
60
+ - Behavior is mostly coordinated by the parent component.
61
+ - Use this child only in the documented parent composition.
62
+
63
+ accessibility:
64
+ notes:
65
+ - This component is normally used inside its parent composition; accessibility behavior is completed by the parent component.
66
+ - Keep labels and visible text meaningful because parent keyboard and screen-reader behavior depends on child content.
67
+
68
+ styling:
69
+ notes:
70
+ - Use documented props and slots as the primary styling API.
71
+ - 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
+ root_classes:
74
+ - .ui-v1-table
@@ -1,6 +1,7 @@
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
4
5
 
5
6
  public_import:
6
7
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -39,3 +40,40 @@ geometry:
39
40
  layout: wrapper around a content-sized tag pill
40
41
  root_display: block
41
42
  width_behavior: root follows normal block flow, inner tag stays content-sized
43
+
44
+ behavior:
45
+ notes:
46
+ - interactive makes the tag feel actionable; use it only when click handling exists.
47
+ - removable should emit remove and needs a clear removal consequence.
48
+ - background is useful for semantic status palettes, but keep contrast readable.
49
+
50
+ composition:
51
+ works_well_with:
52
+ - UiTable
53
+ - UiSelectOption
54
+ - UiMenuItem
55
+ patterns:
56
+ - title: Table status
57
+ notes: Use in UiTable cells for categorical states instead of raw colored text.
58
+ - title: Removable filter chip
59
+ notes: Use removable tags to show active filters when space allows.
60
+
61
+ ai_notes:
62
+ do:
63
+ - Use for short statuses, categories, and active filter chips.
64
+ - Keep labels concise; tags should scan quickly.
65
+ avoid:
66
+ - Do not use as a full command button or as long explanatory text.
67
+
68
+ accessibility:
69
+ notes:
70
+ - Keep rendered text concise and meaningful for screen-reader users.
71
+ - Do not use this component as the only carrier of critical state if the state also needs form-level validation or focus management.
72
+
73
+ styling:
74
+ notes:
75
+ - Use documented props and slots as the primary styling API.
76
+ - 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
+ root_classes:
79
+ - .ui-v1-tag-wrapper
@@ -2,6 +2,7 @@ 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
5
6
 
6
7
  public_import:
7
8
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -346,38 +347,6 @@ composition:
346
347
  - title: Inline control
347
348
  notes: Use UiTextbox as a self-contained control, not as a wrapper for arbitrary content.
348
349
 
349
- examples:
350
- - title: Field wiring
351
- goal: Build a standard text field with correct ARIA wiring.
352
- code: |
353
- <UiField id="name" label="Name">
354
- <template #default="field">
355
- <UiTextbox
356
- :id="field.id"
357
- :input-attributes="{
358
- 'aria-labelledby': field.ariaLabelledby,
359
- 'aria-invalid': field.ariaInvalid,
360
- }"
361
- v-model:value="name"
362
- />
363
- </template>
364
- </UiField>
365
- - title: Search pattern
366
- goal: Build a textbox with a leading icon and clear action.
367
- code: |
368
- <UiTextbox v-model:value="term" clearable>
369
- <template #leading-icon>
370
- <IconSearch aria-hidden="true" />
371
- </template>
372
- </UiTextbox>
373
- - title: Prefix and suffix zones
374
- goal: Show safe markup for prefix and suffix content.
375
- code: |
376
- <UiTextbox v-model:value="amount" inputmode="decimal" suffix="₽">
377
- <template #prefix>
378
- <span>Amount</span>
379
- </template>
380
- </UiTextbox>
381
350
 
382
351
  ai_notes:
383
352
  do:
@@ -2,6 +2,7 @@ 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
5
6
 
6
7
  public_import:
7
8
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -44,3 +45,42 @@ geometry:
44
45
  layout: combobox wrapper with floating menu
45
46
  root_display: block
46
47
  width_behavior: follows normal block flow for the wrapper, with a floating dropdown layer
48
+
49
+ behavior:
50
+ notes:
51
+ - interval and timeVariants shape the selectable list.
52
+ - minTime and maxTime constrain valid selection.
53
+ - textboxOptions should be used for trigger sizing and placeholder behavior.
54
+
55
+ composition:
56
+ works_well_with:
57
+ - UiField
58
+ - UiTextbox
59
+ patterns:
60
+ - title: Time field
61
+ notes: Wrap in UiField for forms and settings screens.
62
+ - title: Bounded scheduler input
63
+ notes: Use minTime, maxTime, and interval for schedules instead of allowing arbitrary text.
64
+
65
+ ai_notes:
66
+ do:
67
+ - Use for semantic time values and schedule inputs.
68
+ avoid:
69
+ - Do not use UiTextbox alone when the value must be a valid bounded time.
70
+
71
+ accessibility:
72
+ notes:
73
+ - Prefer visible text labels for interactive controls.
74
+ - For icon-only or custom visual content, provide an accessible name through the supported label, title, or ARIA attributes exposed by the component.
75
+ - Preserve native keyboard semantics by using the component root instead of recreating the control with arbitrary markup.
76
+ keyboard:
77
+ - Tab moves focus to the control when it is focusable.
78
+ - Enter or Space activates native button-like controls when the host implementation renders a button.
79
+
80
+ styling:
81
+ notes:
82
+ - Use documented props and slots as the primary styling API.
83
+ - Internal .ui-v1-* classes are descriptive implementation details for reasoning and debugging unless a profile marks them as public theme hooks.
84
+ - Use Storybook from the usage link to verify visual variants before generating custom layout around the component.
85
+ root_classes:
86
+ - .ui-v1-time-picker
@@ -4,6 +4,7 @@ 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
7
8
 
8
9
  public_import:
9
10
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -189,17 +190,6 @@ composition:
189
190
  - title: Segmented multi-select primitive
190
191
  notes: Use grouped buttons when composing a custom segmented row or when extending UiToggleGroup behavior.
191
192
 
192
- examples:
193
- - title: Standalone pressed state
194
- goal: Build a toggleable filter button.
195
- code: |
196
- <UiToggleButton
197
- :pressed="filtersOpened"
198
- :aria-pressed="filtersOpened"
199
- @click="filtersOpened = !filtersOpened"
200
- >
201
- Filters
202
- </UiToggleButton>
203
193
 
204
194
  ai_notes:
205
195
  do:
@@ -4,6 +4,7 @@ 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
7
8
 
8
9
  public_import:
9
10
  from: '@retailcrm/embed-ui-v1-components/remote'
@@ -187,19 +188,6 @@ composition:
187
188
  - title: Filter chips with icon
188
189
  notes: Use manual option composition or the shared icon slot for compact filters.
189
190
 
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
191
 
204
192
  ai_notes:
205
193
  do: