@flowstack-ui/agent-tools 0.1.0-bootstrap.0
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/.codex-plugin/plugin.json +37 -0
- package/CHANGELOG.md +21 -0
- package/LICENSE +21 -0
- package/README.md +125 -0
- package/docs/architecture.md +77 -0
- package/docs/releasing.md +26 -0
- package/docs/testing.md +32 -0
- package/package.json +63 -0
- package/public/index.json +2073 -0
- package/public/llms.txt +19 -0
- package/public/packages/atom/0.24.0/components/accordion.txt +131 -0
- package/public/packages/atom/0.24.0/components/alert-dialog.txt +112 -0
- package/public/packages/atom/0.24.0/components/app-bar.txt +96 -0
- package/public/packages/atom/0.24.0/components/aspect-ratio.txt +111 -0
- package/public/packages/atom/0.24.0/components/avatar.txt +119 -0
- package/public/packages/atom/0.24.0/components/badge.txt +123 -0
- package/public/packages/atom/0.24.0/components/bottom-navigation.txt +96 -0
- package/public/packages/atom/0.24.0/components/breadcrumb.txt +96 -0
- package/public/packages/atom/0.24.0/components/button.txt +98 -0
- package/public/packages/atom/0.24.0/components/carousel.txt +128 -0
- package/public/packages/atom/0.24.0/components/checkbox-group.txt +118 -0
- package/public/packages/atom/0.24.0/components/checkbox.txt +100 -0
- package/public/packages/atom/0.24.0/components/clipboard.txt +112 -0
- package/public/packages/atom/0.24.0/components/collapsible.txt +112 -0
- package/public/packages/atom/0.24.0/components/color-picker.txt +117 -0
- package/public/packages/atom/0.24.0/components/combobox.txt +126 -0
- package/public/packages/atom/0.24.0/components/context-menu.txt +114 -0
- package/public/packages/atom/0.24.0/components/data-grid.txt +136 -0
- package/public/packages/atom/0.24.0/components/dialog.txt +116 -0
- package/public/packages/atom/0.24.0/components/direction.txt +132 -0
- package/public/packages/atom/0.24.0/components/divider.txt +94 -0
- package/public/packages/atom/0.24.0/components/drag-drop.txt +141 -0
- package/public/packages/atom/0.24.0/components/drawer.txt +96 -0
- package/public/packages/atom/0.24.0/components/dropdown-menu.txt +112 -0
- package/public/packages/atom/0.24.0/components/feed.txt +132 -0
- package/public/packages/atom/0.24.0/components/field.txt +108 -0
- package/public/packages/atom/0.24.0/components/fieldset.txt +96 -0
- package/public/packages/atom/0.24.0/components/file-upload.txt +120 -0
- package/public/packages/atom/0.24.0/components/form.txt +98 -0
- package/public/packages/atom/0.24.0/components/hover-card.txt +114 -0
- package/public/packages/atom/0.24.0/components/image.txt +94 -0
- package/public/packages/atom/0.24.0/components/input.txt +96 -0
- package/public/packages/atom/0.24.0/components/label.txt +121 -0
- package/public/packages/atom/0.24.0/components/link.txt +100 -0
- package/public/packages/atom/0.24.0/components/list.txt +131 -0
- package/public/packages/atom/0.24.0/components/listbox.txt +120 -0
- package/public/packages/atom/0.24.0/components/menu.txt +126 -0
- package/public/packages/atom/0.24.0/components/menubar.txt +120 -0
- package/public/packages/atom/0.24.0/components/modal.txt +118 -0
- package/public/packages/atom/0.24.0/components/multi-select.txt +120 -0
- package/public/packages/atom/0.24.0/components/nav-list.txt +104 -0
- package/public/packages/atom/0.24.0/components/navigation-menu.txt +104 -0
- package/public/packages/atom/0.24.0/components/number-input.txt +124 -0
- package/public/packages/atom/0.24.0/components/otp-field.txt +122 -0
- package/public/packages/atom/0.24.0/components/pagination.txt +111 -0
- package/public/packages/atom/0.24.0/components/password-toggle-field.txt +116 -0
- package/public/packages/atom/0.24.0/components/popover.txt +122 -0
- package/public/packages/atom/0.24.0/components/pressable.txt +94 -0
- package/public/packages/atom/0.24.0/components/progress.txt +130 -0
- package/public/packages/atom/0.24.0/components/radio-group.txt +118 -0
- package/public/packages/atom/0.24.0/components/rating.txt +122 -0
- package/public/packages/atom/0.24.0/components/reorder.txt +141 -0
- package/public/packages/atom/0.24.0/components/scroll-area.txt +96 -0
- package/public/packages/atom/0.24.0/components/select.txt +126 -0
- package/public/packages/atom/0.24.0/components/sidebar.txt +96 -0
- package/public/packages/atom/0.24.0/components/skip-link.txt +96 -0
- package/public/packages/atom/0.24.0/components/slider.txt +124 -0
- package/public/packages/atom/0.24.0/components/swipeable-item.txt +118 -0
- package/public/packages/atom/0.24.0/components/switch.txt +116 -0
- package/public/packages/atom/0.24.0/components/table.txt +128 -0
- package/public/packages/atom/0.24.0/components/tabs.txt +96 -0
- package/public/packages/atom/0.24.0/components/textarea.txt +96 -0
- package/public/packages/atom/0.24.0/components/toast.txt +124 -0
- package/public/packages/atom/0.24.0/components/toggle-group.txt +118 -0
- package/public/packages/atom/0.24.0/components/toggle.txt +110 -0
- package/public/packages/atom/0.24.0/components/toolbar.txt +98 -0
- package/public/packages/atom/0.24.0/components/tooltip.txt +112 -0
- package/public/packages/atom/0.24.0/components/tree-grid.txt +138 -0
- package/public/packages/atom/0.24.0/components/tree.txt +138 -0
- package/public/packages/atom/0.24.0/components/visually-hidden.txt +119 -0
- package/public/packages/atom/0.24.0/docs/guides/agent-knowledge.txt +55 -0
- package/public/packages/atom/0.24.0/docs/guides/getting-started.txt +65 -0
- package/public/packages/atom/0.24.0/docs/guides/imports.txt +26 -0
- package/public/packages/atom/0.24.0/docs/guides/public-api.txt +100 -0
- package/public/packages/atom/0.24.0/guides/behavior-composition.txt +277 -0
- package/public/packages/atom/0.24.0/guides/layer-selection.txt +807 -0
- package/public/packages/atom/0.24.0/index.txt +89 -0
- package/public/packages/brick/0.1.11/components/accordion.txt +158 -0
- package/public/packages/brick/0.1.11/components/alert-dialog.txt +175 -0
- package/public/packages/brick/0.1.11/components/app-bar.txt +134 -0
- package/public/packages/brick/0.1.11/components/appearance.txt +143 -0
- package/public/packages/brick/0.1.11/components/aspect-ratio.txt +136 -0
- package/public/packages/brick/0.1.11/components/avatar.txt +152 -0
- package/public/packages/brick/0.1.11/components/badge.txt +139 -0
- package/public/packages/brick/0.1.11/components/bleed.txt +104 -0
- package/public/packages/brick/0.1.11/components/bottom-navigation.txt +106 -0
- package/public/packages/brick/0.1.11/components/breadcrumb.txt +96 -0
- package/public/packages/brick/0.1.11/components/button.txt +103 -0
- package/public/packages/brick/0.1.11/components/card.txt +132 -0
- package/public/packages/brick/0.1.11/components/carousel.txt +206 -0
- package/public/packages/brick/0.1.11/components/checkbox-group.txt +175 -0
- package/public/packages/brick/0.1.11/components/checkbox.txt +103 -0
- package/public/packages/brick/0.1.11/components/chip.txt +128 -0
- package/public/packages/brick/0.1.11/components/code-block.txt +134 -0
- package/public/packages/brick/0.1.11/components/code.txt +120 -0
- package/public/packages/brick/0.1.11/components/collapsible.txt +179 -0
- package/public/packages/brick/0.1.11/components/color-picker.txt +135 -0
- package/public/packages/brick/0.1.11/components/color-swatch.txt +98 -0
- package/public/packages/brick/0.1.11/components/combobox.txt +157 -0
- package/public/packages/brick/0.1.11/components/container.txt +112 -0
- package/public/packages/brick/0.1.11/components/context-menu.txt +174 -0
- package/public/packages/brick/0.1.11/components/data-grid.txt +199 -0
- package/public/packages/brick/0.1.11/components/data-list.txt +115 -0
- package/public/packages/brick/0.1.11/components/dialog.txt +176 -0
- package/public/packages/brick/0.1.11/components/divider.txt +104 -0
- package/public/packages/brick/0.1.11/components/drawer.txt +146 -0
- package/public/packages/brick/0.1.11/components/dropdown-menu.txt +179 -0
- package/public/packages/brick/0.1.11/components/feed.txt +143 -0
- package/public/packages/brick/0.1.11/components/field.txt +115 -0
- package/public/packages/brick/0.1.11/components/fieldset.txt +103 -0
- package/public/packages/brick/0.1.11/components/file-upload.txt +154 -0
- package/public/packages/brick/0.1.11/components/form.txt +108 -0
- package/public/packages/brick/0.1.11/components/frame.txt +132 -0
- package/public/packages/brick/0.1.11/components/grid.txt +141 -0
- package/public/packages/brick/0.1.11/components/group.txt +136 -0
- package/public/packages/brick/0.1.11/components/hide.txt +121 -0
- package/public/packages/brick/0.1.11/components/hover-card.txt +156 -0
- package/public/packages/brick/0.1.11/components/icon-button.txt +119 -0
- package/public/packages/brick/0.1.11/components/icon.txt +160 -0
- package/public/packages/brick/0.1.11/components/image.txt +163 -0
- package/public/packages/brick/0.1.11/components/input.txt +101 -0
- package/public/packages/brick/0.1.11/components/link-box.txt +161 -0
- package/public/packages/brick/0.1.11/components/link.txt +133 -0
- package/public/packages/brick/0.1.11/components/list.txt +139 -0
- package/public/packages/brick/0.1.11/components/menubar.txt +174 -0
- package/public/packages/brick/0.1.11/components/multi-select.txt +153 -0
- package/public/packages/brick/0.1.11/components/nav-list.txt +130 -0
- package/public/packages/brick/0.1.11/components/navigation-menu.txt +150 -0
- package/public/packages/brick/0.1.11/components/notification-badge.txt +148 -0
- package/public/packages/brick/0.1.11/components/number-input.txt +150 -0
- package/public/packages/brick/0.1.11/components/otp-field.txt +146 -0
- package/public/packages/brick/0.1.11/components/pagination.txt +124 -0
- package/public/packages/brick/0.1.11/components/password-toggle-field.txt +146 -0
- package/public/packages/brick/0.1.11/components/popover.txt +181 -0
- package/public/packages/brick/0.1.11/components/progress-circle.txt +142 -0
- package/public/packages/brick/0.1.11/components/progress.txt +150 -0
- package/public/packages/brick/0.1.11/components/radio-group.txt +152 -0
- package/public/packages/brick/0.1.11/components/rating.txt +151 -0
- package/public/packages/brick/0.1.11/components/reorderable-list.txt +130 -0
- package/public/packages/brick/0.1.11/components/scroll-area.txt +110 -0
- package/public/packages/brick/0.1.11/components/section.txt +118 -0
- package/public/packages/brick/0.1.11/components/segment-group.txt +116 -0
- package/public/packages/brick/0.1.11/components/select.txt +157 -0
- package/public/packages/brick/0.1.11/components/show.txt +121 -0
- package/public/packages/brick/0.1.11/components/sidebar.txt +126 -0
- package/public/packages/brick/0.1.11/components/skeleton.txt +127 -0
- package/public/packages/brick/0.1.11/components/skip-link.txt +102 -0
- package/public/packages/brick/0.1.11/components/slider.txt +147 -0
- package/public/packages/brick/0.1.11/components/stack.txt +155 -0
- package/public/packages/brick/0.1.11/components/status.txt +110 -0
- package/public/packages/brick/0.1.11/components/surface.txt +194 -0
- package/public/packages/brick/0.1.11/components/swipeable-item.txt +154 -0
- package/public/packages/brick/0.1.11/components/switch.txt +152 -0
- package/public/packages/brick/0.1.11/components/table.txt +183 -0
- package/public/packages/brick/0.1.11/components/tabs.txt +136 -0
- package/public/packages/brick/0.1.11/components/text.txt +148 -0
- package/public/packages/brick/0.1.11/components/textarea.txt +101 -0
- package/public/packages/brick/0.1.11/components/toast.txt +150 -0
- package/public/packages/brick/0.1.11/components/toggle-group.txt +149 -0
- package/public/packages/brick/0.1.11/components/toggle.txt +140 -0
- package/public/packages/brick/0.1.11/components/toolbar.txt +118 -0
- package/public/packages/brick/0.1.11/components/tooltip.txt +156 -0
- package/public/packages/brick/0.1.11/components/tree-grid.txt +160 -0
- package/public/packages/brick/0.1.11/components/tree.txt +156 -0
- package/public/packages/brick/0.1.11/components/visually-hidden.txt +123 -0
- package/public/packages/brick/0.1.11/components/z-stack.txt +143 -0
- package/public/packages/brick/0.1.11/docs/guides/agent-knowledge.txt +67 -0
- package/public/packages/brick/0.1.11/docs/guides/appearance-and-tokens.txt +179 -0
- package/public/packages/brick/0.1.11/docs/guides/browser-support.txt +25 -0
- package/public/packages/brick/0.1.11/docs/guides/control-sizing.txt +59 -0
- package/public/packages/brick/0.1.11/docs/guides/installation.txt +79 -0
- package/public/packages/brick/0.1.11/docs/guides/theme-contract.txt +90 -0
- package/public/packages/brick/0.1.11/guides/interface-composition.txt +665 -0
- package/public/packages/brick/0.1.11/guides/layer-selection.txt +1437 -0
- package/public/packages/brick/0.1.11/index.txt +110 -0
- package/public/packages/colors/0.1.1/docs/agent-knowledge.txt +63 -0
- package/public/packages/colors/0.1.1/docs/architecture.txt +74 -0
- package/public/packages/colors/0.1.1/docs/color-foundations.txt +128 -0
- package/public/packages/colors/0.1.1/docs/compatibility.txt +75 -0
- package/public/packages/colors/0.1.1/docs/dependency-qualification.txt +117 -0
- package/public/packages/colors/0.1.1/docs/installation.txt +48 -0
- package/public/packages/colors/0.1.1/docs/palette-generation.txt +151 -0
- package/public/packages/colors/0.1.1/docs/releasing.txt +34 -0
- package/public/packages/colors/0.1.1/docs/testing.txt +51 -0
- package/public/packages/colors/0.1.1/guides/colors-system.txt +282 -0
- package/public/packages/colors/0.1.1/index.txt +29 -0
- package/public/packages/colors/0.1.1/operations/color-conversion.txt +14 -0
- package/public/packages/colors/0.1.1/operations/color-inspection.txt +23 -0
- package/public/packages/colors/0.1.1/operations/color-measurement.txt +18 -0
- package/public/packages/colors/0.1.1/operations/color-provenance.txt +14 -0
- package/public/packages/colors/0.1.1/operations/named-palette-reference.txt +15 -0
- package/public/packages/colors/0.1.1/operations/palette-candidate.txt +37 -0
- package/public/packages/theme/0.1.1/docs/agent-knowledge.txt +44 -0
- package/public/packages/theme/0.1.1/docs/appearances-and-portals.txt +41 -0
- package/public/packages/theme/0.1.1/docs/architecture.txt +121 -0
- package/public/packages/theme/0.1.1/docs/authoring.txt +141 -0
- package/public/packages/theme/0.1.1/docs/colors-interchange.txt +82 -0
- package/public/packages/theme/0.1.1/docs/fonts.txt +40 -0
- package/public/packages/theme/0.1.1/docs/installation.txt +45 -0
- package/public/packages/theme/0.1.1/docs/migration.txt +40 -0
- package/public/packages/theme/0.1.1/docs/testing.txt +64 -0
- package/public/packages/theme/0.1.1/docs/troubleshooting.txt +53 -0
- package/public/packages/theme/0.1.1/guides/theme-system.txt +340 -0
- package/public/packages/theme/0.1.1/index.txt +31 -0
- package/public/packages/theme/0.1.1/operations/brick-contract-compatibility.txt +35 -0
- package/public/packages/theme/0.1.1/operations/colors-interchange.txt +35 -0
- package/public/packages/theme/0.1.1/operations/theme-artifacts.txt +19 -0
- package/public/packages/theme/0.1.1/operations/theme-cli.txt +10 -0
- package/public/packages/theme/0.1.1/operations/theme-compilation.txt +23 -0
- package/public/packages/theme/0.1.1/operations/theme-definition.txt +36 -0
- package/public/packages/theme/0.1.1/operations/theme-validation.txt +19 -0
- package/public/tasks/data.txt +39 -0
- package/public/tasks/forms.txt +65 -0
- package/public/tasks/layout.txt +37 -0
- package/public/tasks/navigation.txt +51 -0
- package/public/tasks/overlays.txt +39 -0
- package/public/tasks/theming.txt +37 -0
- package/skills/flowstack-ui-builder/SKILL.md +35 -0
- package/skills/flowstack-ui-builder/agents/openai.yaml +4 -0
- package/skills/flowstack-ui-builder/scripts/resolve-agent-knowledge.mjs +399 -0
- package/skills/flowstack-ui-compose/SKILL.md +32 -0
- package/skills/flowstack-ui-compose/agents/openai.yaml +4 -0
- package/skills/flowstack-ui-compose/scripts/resolve-agent-knowledge.mjs +399 -0
- package/skills/flowstack-ui-maintainer/SKILL.md +40 -0
- package/skills/flowstack-ui-maintainer/agents/openai.yaml +4 -0
- package/skills/flowstack-ui-maintainer/scripts/resolve-agent-knowledge.mjs +399 -0
- package/skills/flowstack-ui-review/SKILL.md +29 -0
- package/skills/flowstack-ui-review/agents/openai.yaml +4 -0
- package/skills/flowstack-ui-review/scripts/resolve-agent-knowledge.mjs +399 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Container
|
|
2
|
+
|
|
3
|
+
Source: @flowstack-ui/brick@0.1.11
|
|
4
|
+
Kind: component
|
|
5
|
+
ID: container
|
|
6
|
+
|
|
7
|
+
# Container agent guide
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Own consistent centered content width, logical page gutters, and size variants for sections and application shells.
|
|
12
|
+
|
|
13
|
+
## Use when
|
|
14
|
+
|
|
15
|
+
- Page or section content needs a shared maximum inline size and responsive logical gutters.
|
|
16
|
+
|
|
17
|
+
## Choose something else when
|
|
18
|
+
|
|
19
|
+
- The region needs a visual boundary or only a local one-axis relationship. Use Surface/Card or Stack.
|
|
20
|
+
|
|
21
|
+
## Required composition
|
|
22
|
+
|
|
23
|
+
- Place section content inside Container, then use Stack or Grid for internal relationships; let full-bleed backgrounds live outside it.
|
|
24
|
+
|
|
25
|
+
## Rules
|
|
26
|
+
|
|
27
|
+
- **MUST:** Use Container rather than repeating application max-width, auto-margin, and gutter CSS across sections.
|
|
28
|
+
- **MUST:** Give adjacent shell regions that must share alignment lines, such as an App Bar, hero content, and attached proof rail, the same Container measure and gutter recipe.
|
|
29
|
+
- **MUST:** Do not use Container as a visual card or background owner.
|
|
30
|
+
- **MUST:** Load styles.css or core.css plus container.css.
|
|
31
|
+
|
|
32
|
+
## Common mistakes
|
|
33
|
+
|
|
34
|
+
- **Avoid:** Applying a separate max-width class to every page section, giving visually connected shell regions different measures or gutters, or nesting Containers without a width reason. **Instead:** Use one deliberate Container boundary per aligned content region and repeat the same named measure and gutter where separate regions must share a grid line.
|
|
35
|
+
|
|
36
|
+
## Validation checklist
|
|
37
|
+
|
|
38
|
+
- Check gutters, max width, and shared alignment lines at all adopted breakpoints, zoom levels, and RTL.
|
|
39
|
+
- Confirm full-bleed and contained regions align intentionally and CSS is loaded.
|
|
40
|
+
|
|
41
|
+
## Related guidance
|
|
42
|
+
|
|
43
|
+
- `stack`
|
|
44
|
+
- `grid`
|
|
45
|
+
- `surface`
|
|
46
|
+
- `card`
|
|
47
|
+
- `app-bar`
|
|
48
|
+
|
|
49
|
+
## Machine record
|
|
50
|
+
|
|
51
|
+
```json
|
|
52
|
+
{
|
|
53
|
+
"schema": "flowstack.agent-component.v1",
|
|
54
|
+
"id": "container",
|
|
55
|
+
"name": "Container",
|
|
56
|
+
"package": "@flowstack-ui/brick",
|
|
57
|
+
"layer": "brick",
|
|
58
|
+
"kind": "component",
|
|
59
|
+
"purpose": "Own consistent centered content width, logical page gutters, and size variants for sections and application shells.",
|
|
60
|
+
"useWhen": [
|
|
61
|
+
"Page or section content needs a shared maximum inline size and responsive logical gutters."
|
|
62
|
+
],
|
|
63
|
+
"avoidWhen": [
|
|
64
|
+
{
|
|
65
|
+
"condition": "The region needs a visual boundary or only a local one-axis relationship.",
|
|
66
|
+
"useInstead": "Surface/Card or Stack"
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
"composition": [
|
|
70
|
+
"Place section content inside Container, then use Stack or Grid for internal relationships; let full-bleed backgrounds live outside it."
|
|
71
|
+
],
|
|
72
|
+
"rules": [
|
|
73
|
+
{
|
|
74
|
+
"id": "container-width-owner",
|
|
75
|
+
"level": "must",
|
|
76
|
+
"statement": "Use Container rather than repeating application max-width, auto-margin, and gutter CSS across sections."
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"id": "container-shared-geometry",
|
|
80
|
+
"level": "must",
|
|
81
|
+
"statement": "Give adjacent shell regions that must share alignment lines, such as an App Bar, hero content, and attached proof rail, the same Container measure and gutter recipe."
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"id": "container-not-surface",
|
|
85
|
+
"level": "must",
|
|
86
|
+
"statement": "Do not use Container as a visual card or background owner."
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "container-css",
|
|
90
|
+
"level": "must",
|
|
91
|
+
"statement": "Load styles.css or core.css plus container.css."
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"commonMistakes": [
|
|
95
|
+
{
|
|
96
|
+
"mistake": "Applying a separate max-width class to every page section, giving visually connected shell regions different measures or gutters, or nesting Containers without a width reason.",
|
|
97
|
+
"correction": "Use one deliberate Container boundary per aligned content region and repeat the same named measure and gutter where separate regions must share a grid line."
|
|
98
|
+
}
|
|
99
|
+
],
|
|
100
|
+
"validation": [
|
|
101
|
+
"Check gutters, max width, and shared alignment lines at all adopted breakpoints, zoom levels, and RTL.",
|
|
102
|
+
"Confirm full-bleed and contained regions align intentionally and CSS is loaded."
|
|
103
|
+
],
|
|
104
|
+
"related": [
|
|
105
|
+
"stack",
|
|
106
|
+
"grid",
|
|
107
|
+
"surface",
|
|
108
|
+
"card",
|
|
109
|
+
"app-bar"
|
|
110
|
+
]
|
|
111
|
+
}
|
|
112
|
+
```
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# ContextMenu
|
|
2
|
+
|
|
3
|
+
Source: @flowstack-ui/brick@0.1.11
|
|
4
|
+
Kind: component
|
|
5
|
+
ID: context-menu
|
|
6
|
+
|
|
7
|
+
# ContextMenu agent guide
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Present finished target-specific commands at a secondary-click, keyboard context-menu invocation, or cancel-safe touch and pen long press while Atom owns invocation, menu semantics, focus, dismissal, and positioning.
|
|
12
|
+
|
|
13
|
+
## Use when
|
|
14
|
+
|
|
15
|
+
- Commands belong to the exact file, row, canvas object, or region invoked contextually and every important command also has a visible or keyboard-discoverable route.
|
|
16
|
+
|
|
17
|
+
## Choose something else when
|
|
18
|
+
|
|
19
|
+
- The actions need a visible button, are the only route to an important task, or belong to a persistent application command bar. Use DropdownMenu, visible Brick controls, or Menubar.
|
|
20
|
+
- The content is site navigation or form-value selection. Use NavigationMenu or NavList, or Select.
|
|
21
|
+
|
|
22
|
+
## Required composition
|
|
23
|
+
|
|
24
|
+
- Compose ContextMenu.Root with ContextMenu.Trigger around the owned target and ContextMenu.Portal with ContextMenu.Content. Build Content from uniquely valued Item, CheckboxItem, RadioGroup and RadioItem, Group and Label, Separator, and paired Sub, SubTrigger, and SubContent parts; use Leading, ItemLabel, Description, Shortcut, and ItemIndicator for finished rows.
|
|
25
|
+
- Keep Trigger paintless and preserve the target's native semantics through asChild or render. Give Content ariaLabel when the target cannot supply an appropriate menu label, and reproduce any local Appearance scope on the portalled visual root.
|
|
26
|
+
|
|
27
|
+
## Rules
|
|
28
|
+
|
|
29
|
+
- **MUST:** Provide another visible or keyboard-discoverable route to every important command; ContextMenu is an enhancement, never the only access path.
|
|
30
|
+
- **MUST:** Keep Trigger as a paintless behavior wrapper and preserve the target's native role, name, action, handlers, and composition instead of inventing button semantics or target paint.
|
|
31
|
+
- **MUST:** Rely on Atom for secondary-click coordinates, Shift+F10 and Context Menu key anchoring, cross-target handoff, and the fixed cancel-safe 700 ms touch and pen long press; do not add gesture timers or positioning listeners.
|
|
32
|
+
- **MUST:** Give Content an explicit ariaLabel when the contextual target cannot generate an appropriate accessible menu name.
|
|
33
|
+
- **MUST:** Use uniquely valued command, checkbox, and radio item roles, provide textValue when rendered content is not searchable text, and preserve disabled-item navigation, typeahead, closeOnSelect, and paired submenu behavior.
|
|
34
|
+
- **MUST:** Use Leading, ItemLabel, Description, Shortcut, ItemIndicator, and tone=danger for their documented jobs instead of rebuilding row columns, selection glyphs, or destructive emphasis.
|
|
35
|
+
- **SHOULD:** Keep Content collision-aware and internally scrollable at its available height; verify repeated invocation points, edge collision, zoom, narrow viewports, long labels, and LTR and RTL submenus without changing it into a mobile tray.
|
|
36
|
+
- **MUST:** When Portal leaves a local Appearance scope, reproduce that scope on the portalled visual root or target a portal container inside it.
|
|
37
|
+
- **MUST:** Load styles.css or core.css plus context-menu.css and every composed child component stylesheet.
|
|
38
|
+
|
|
39
|
+
## Common mistakes
|
|
40
|
+
|
|
41
|
+
- **Avoid:** Making right-click the only route to an action, styling Trigger as a control, or implementing another long-press and point-positioning system. **Instead:** Keep visible alternatives, preserve target semantics, and use ContextMenu's owned invocation contract.
|
|
42
|
+
- **Avoid:** Using ContextMenu for navigation or form selection, hand-building row columns, or closing the menu tree with document listeners. **Instead:** Choose the semantic owner, compose the public item anatomy, and rely on Atom's Menu focus and dismissal behavior.
|
|
43
|
+
|
|
44
|
+
## Validation checklist
|
|
45
|
+
|
|
46
|
+
- Verify the visible alternative, secondary click at changing coordinates, Shift+F10 and Context Menu key opening, repeated and cross-target invocation, disabled state, and touch and pen hold cancellation for movement, scroll, release, cancellation, second pointer, native contextmenu, and unmount.
|
|
47
|
+
- Verify Content naming, real item focus, Home/End and typeahead, disabled navigation without activation, checkbox mixed and radio state, selection close policy, submenu keys and whole-tree dismissal, Tab, Escape, outside activation, and focus return.
|
|
48
|
+
- Verify three densities, row anatomy and danger meaning, constrained scrolling, collision placement, zoom, narrow viewports, LTR and RTL, reduced motion, forced colors, light and dark portalled appearance, and complete CSS.
|
|
49
|
+
|
|
50
|
+
## Related guidance
|
|
51
|
+
|
|
52
|
+
- `@flowstack-ui/atom/agents/context-menu`
|
|
53
|
+
- `@flowstack-ui/atom/agents/menu`
|
|
54
|
+
- `dropdown-menu`
|
|
55
|
+
- `menubar`
|
|
56
|
+
- `navigation-menu`
|
|
57
|
+
- `nav-list`
|
|
58
|
+
- `select`
|
|
59
|
+
- `button`
|
|
60
|
+
- `appearance`
|
|
61
|
+
|
|
62
|
+
## Machine record
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"schema": "flowstack.agent-component.v1",
|
|
67
|
+
"id": "context-menu",
|
|
68
|
+
"name": "ContextMenu",
|
|
69
|
+
"package": "@flowstack-ui/brick",
|
|
70
|
+
"layer": "brick",
|
|
71
|
+
"kind": "component",
|
|
72
|
+
"purpose": "Present finished target-specific commands at a secondary-click, keyboard context-menu invocation, or cancel-safe touch and pen long press while Atom owns invocation, menu semantics, focus, dismissal, and positioning.",
|
|
73
|
+
"useWhen": [
|
|
74
|
+
"Commands belong to the exact file, row, canvas object, or region invoked contextually and every important command also has a visible or keyboard-discoverable route."
|
|
75
|
+
],
|
|
76
|
+
"avoidWhen": [
|
|
77
|
+
{
|
|
78
|
+
"condition": "The actions need a visible button, are the only route to an important task, or belong to a persistent application command bar.",
|
|
79
|
+
"useInstead": "DropdownMenu, visible Brick controls, or Menubar"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"condition": "The content is site navigation or form-value selection.",
|
|
83
|
+
"useInstead": "NavigationMenu or NavList, or Select"
|
|
84
|
+
}
|
|
85
|
+
],
|
|
86
|
+
"composition": [
|
|
87
|
+
"Compose ContextMenu.Root with ContextMenu.Trigger around the owned target and ContextMenu.Portal with ContextMenu.Content. Build Content from uniquely valued Item, CheckboxItem, RadioGroup and RadioItem, Group and Label, Separator, and paired Sub, SubTrigger, and SubContent parts; use Leading, ItemLabel, Description, Shortcut, and ItemIndicator for finished rows.",
|
|
88
|
+
"Keep Trigger paintless and preserve the target's native semantics through asChild or render. Give Content ariaLabel when the target cannot supply an appropriate menu label, and reproduce any local Appearance scope on the portalled visual root."
|
|
89
|
+
],
|
|
90
|
+
"rules": [
|
|
91
|
+
{
|
|
92
|
+
"id": "context-menu-supplemental",
|
|
93
|
+
"level": "must",
|
|
94
|
+
"statement": "Provide another visible or keyboard-discoverable route to every important command; ContextMenu is an enhancement, never the only access path."
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"id": "context-menu-trigger-semantics",
|
|
98
|
+
"level": "must",
|
|
99
|
+
"statement": "Keep Trigger as a paintless behavior wrapper and preserve the target's native role, name, action, handlers, and composition instead of inventing button semantics or target paint."
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"id": "context-menu-input-contract",
|
|
103
|
+
"level": "must",
|
|
104
|
+
"statement": "Rely on Atom for secondary-click coordinates, Shift+F10 and Context Menu key anchoring, cross-target handoff, and the fixed cancel-safe 700 ms touch and pen long press; do not add gesture timers or positioning listeners."
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"id": "context-menu-content-name",
|
|
108
|
+
"level": "must",
|
|
109
|
+
"statement": "Give Content an explicit ariaLabel when the contextual target cannot generate an appropriate accessible menu name."
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"id": "context-menu-item-model",
|
|
113
|
+
"level": "must",
|
|
114
|
+
"statement": "Use uniquely valued command, checkbox, and radio item roles, provide textValue when rendered content is not searchable text, and preserve disabled-item navigation, typeahead, closeOnSelect, and paired submenu behavior."
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"id": "context-menu-row-anatomy",
|
|
118
|
+
"level": "must",
|
|
119
|
+
"statement": "Use Leading, ItemLabel, Description, Shortcut, ItemIndicator, and tone=danger for their documented jobs instead of rebuilding row columns, selection glyphs, or destructive emphasis."
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"id": "context-menu-responsive",
|
|
123
|
+
"level": "should",
|
|
124
|
+
"statement": "Keep Content collision-aware and internally scrollable at its available height; verify repeated invocation points, edge collision, zoom, narrow viewports, long labels, and LTR and RTL submenus without changing it into a mobile tray."
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"id": "context-menu-theme-scope",
|
|
128
|
+
"level": "must",
|
|
129
|
+
"statement": "When Portal leaves a local Appearance scope, reproduce that scope on the portalled visual root or target a portal container inside it."
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"id": "context-menu-css",
|
|
133
|
+
"level": "must",
|
|
134
|
+
"statement": "Load styles.css or core.css plus context-menu.css and every composed child component stylesheet."
|
|
135
|
+
}
|
|
136
|
+
],
|
|
137
|
+
"commonMistakes": [
|
|
138
|
+
{
|
|
139
|
+
"mistake": "Making right-click the only route to an action, styling Trigger as a control, or implementing another long-press and point-positioning system.",
|
|
140
|
+
"correction": "Keep visible alternatives, preserve target semantics, and use ContextMenu's owned invocation contract."
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"mistake": "Using ContextMenu for navigation or form selection, hand-building row columns, or closing the menu tree with document listeners.",
|
|
144
|
+
"correction": "Choose the semantic owner, compose the public item anatomy, and rely on Atom's Menu focus and dismissal behavior."
|
|
145
|
+
}
|
|
146
|
+
],
|
|
147
|
+
"validation": [
|
|
148
|
+
"Verify the visible alternative, secondary click at changing coordinates, Shift+F10 and Context Menu key opening, repeated and cross-target invocation, disabled state, and touch and pen hold cancellation for movement, scroll, release, cancellation, second pointer, native contextmenu, and unmount.",
|
|
149
|
+
"Verify Content naming, real item focus, Home/End and typeahead, disabled navigation without activation, checkbox mixed and radio state, selection close policy, submenu keys and whole-tree dismissal, Tab, Escape, outside activation, and focus return.",
|
|
150
|
+
"Verify three densities, row anatomy and danger meaning, constrained scrolling, collision placement, zoom, narrow viewports, LTR and RTL, reduced motion, forced colors, light and dark portalled appearance, and complete CSS."
|
|
151
|
+
],
|
|
152
|
+
"related": [
|
|
153
|
+
{
|
|
154
|
+
"kind": "package",
|
|
155
|
+
"package": "@flowstack-ui/atom",
|
|
156
|
+
"id": "context-menu",
|
|
157
|
+
"versionPolicy": "installed-exact"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"kind": "package",
|
|
161
|
+
"package": "@flowstack-ui/atom",
|
|
162
|
+
"id": "menu",
|
|
163
|
+
"versionPolicy": "installed-exact"
|
|
164
|
+
},
|
|
165
|
+
"dropdown-menu",
|
|
166
|
+
"menubar",
|
|
167
|
+
"navigation-menu",
|
|
168
|
+
"nav-list",
|
|
169
|
+
"select",
|
|
170
|
+
"button",
|
|
171
|
+
"appearance"
|
|
172
|
+
]
|
|
173
|
+
}
|
|
174
|
+
```
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
# Data Grid
|
|
2
|
+
|
|
3
|
+
Source: @flowstack-ui/brick@0.1.11
|
|
4
|
+
Kind: component
|
|
5
|
+
ID: data-grid
|
|
6
|
+
|
|
7
|
+
# Data Grid agent guide
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Present flat interactive tabular data with Atom-owned active-cell navigation and optional row selection while applications own data, sorting, filtering, and pagination.
|
|
12
|
+
|
|
13
|
+
## Use when
|
|
14
|
+
|
|
15
|
+
- People must navigate tabular cells with arrow keys, select rows, or activate sortable column headers.
|
|
16
|
+
|
|
17
|
+
## Choose something else when
|
|
18
|
+
|
|
19
|
+
- People only need to read and compare static row-and-column data. Use Table.
|
|
20
|
+
- The content is a visual card collection or ordinary two-dimensional page layout. Use Grid, List, or Card composition.
|
|
21
|
+
- Cells must contain independent controls, support editing, resize or pin columns, virtualize rows, or expose a schema-driven enterprise data engine. Use An application-owned data tool or a separately qualified future component.
|
|
22
|
+
|
|
23
|
+
## Required composition
|
|
24
|
+
|
|
25
|
+
- Compose explicit Container when wide content needs horizontal overflow, then Root with Caption or another stable accessible name, Header, Body, optional Footer, indexed Rows, indexed ColumnHeaders, and Cells.
|
|
26
|
+
- Keep all row and column indexes one-based and provide truthful logical rowCount and columnCount, including when only one page or window is rendered.
|
|
27
|
+
- Place external Toolbar, filtering controls, result count, and Pagination around the grid; Data Grid never creates or executes those systems.
|
|
28
|
+
- For application-controlled sorting, give the ColumnHeader onAction, update the data and sortDirection outside Data Grid, and keep SortIndicator decorative.
|
|
29
|
+
|
|
30
|
+
## Rules
|
|
31
|
+
|
|
32
|
+
- **MUST:** Choose Data Grid only when composite keyboard navigation, row selection, or sortable-header activation has real value; use Table for static comparison.
|
|
33
|
+
- **MUST:** Provide one stable accessible name, one-based row and column indexes, and truthful logical counts for the complete represented data set.
|
|
34
|
+
- **MUST:** Keep data transformation, filtering, sorting direction changes, fetching, caching, URL state, pagination, stale-request cancellation, and persistence in the application.
|
|
35
|
+
- **MUST:** Compose independently named Brick controls and Pagination outside Root; do not place arbitrary interactive controls inside v1 cells or make the grid itself own surrounding workflow state.
|
|
36
|
+
- **MUST:** Author DataGrid.Container explicitly when honest columns need horizontal overflow; Root never inserts containment and narrow layouts must preserve the tabular relationships.
|
|
37
|
+
- **MUST:** Let the outline Root own its border, radius, and exposed cell corners; do not add a second framed or clipping wrapper to repair the outline recipe.
|
|
38
|
+
- **MUST:** Use stable row IDs as selection values, keep active cell and row selection as independent states, and do not derive identity from the current visual index.
|
|
39
|
+
- **MUST:** Give an actionable sortable ColumnHeader pointer and Enter parity, expose sortDirection only on the active sorted header, and treat SortIndicator as decorative.
|
|
40
|
+
- **MUST:** If an application windows rows, preserve full logical one-based indexes and totals and keep the active cell mounted or move active state before it leaves the DOM; geometry utilities do not own grid semantics or focus.
|
|
41
|
+
- **MUST:** Load styles.css or core.css plus data-grid.css.
|
|
42
|
+
|
|
43
|
+
## Common mistakes
|
|
44
|
+
|
|
45
|
+
- **Avoid:** Using Data Grid because a static table has many rows. **Instead:** Use Table until arrow-key cell navigation, row selection, or sortable-header activation is a genuine task requirement.
|
|
46
|
+
- **Avoid:** Putting search, filters, pagination, fetches, and data mutation inside Data Grid. **Instead:** Compose those application-owned systems around the public Data Grid anatomy.
|
|
47
|
+
- **Avoid:** Placing buttons, links, editable fields, or menus in v1 cells without an interaction mode. **Instead:** Keep cells non-editing and use an application-owned data tool when independent cell controls are required.
|
|
48
|
+
- **Avoid:** Using zero-based or page-local indexes while claiming a larger logical set. **Instead:** Pass one-based logical indexes and truthful counts so active-descendant announcements remain coherent.
|
|
49
|
+
- **Avoid:** Wrapping an outline Data Grid in another bordered or rounded clipping surface to hide sharp cell corners. **Instead:** Keep Container responsible only for overflow and let the outline Root own one complete rounded boundary.
|
|
50
|
+
|
|
51
|
+
## Validation checklist
|
|
52
|
+
|
|
53
|
+
- Inspect the accessible name, roles, one-based indexes, logical counts, active descendant, selection metadata, disabled/read-only states, and sort direction.
|
|
54
|
+
- Test one Tab entry, arrows, Home and End, PageUp and PageDown, Ctrl or Meta plus Home and End, RTL mapping, disabled skipping, and pointer or Enter sortable-header parity.
|
|
55
|
+
- Verify stable selection IDs and focus after application sorting, filtering, page changes, or reordered data.
|
|
56
|
+
- Check explicit Container overflow, complete outline corners with and without Header or Footer, 320 CSS pixels, 200% text, 400% zoom, long content, dark appearance, forced colors, and no page-level horizontal overflow.
|
|
57
|
+
- Confirm editing, arbitrary cell controls, virtualization, schemas, fetching, filtering, pagination, and persistence remain excluded.
|
|
58
|
+
|
|
59
|
+
## Related guidance
|
|
60
|
+
|
|
61
|
+
- `@flowstack-ui/atom/agents/data-grid`
|
|
62
|
+
- `table`
|
|
63
|
+
- `tree-grid`
|
|
64
|
+
- `toolbar`
|
|
65
|
+
- `pagination`
|
|
66
|
+
- `badge`
|
|
67
|
+
- `scroll-area`
|
|
68
|
+
|
|
69
|
+
## Machine record
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"schema": "flowstack.agent-component.v1",
|
|
74
|
+
"id": "data-grid",
|
|
75
|
+
"name": "Data Grid",
|
|
76
|
+
"package": "@flowstack-ui/brick",
|
|
77
|
+
"layer": "brick",
|
|
78
|
+
"kind": "component",
|
|
79
|
+
"purpose": "Present flat interactive tabular data with Atom-owned active-cell navigation and optional row selection while applications own data, sorting, filtering, and pagination.",
|
|
80
|
+
"useWhen": [
|
|
81
|
+
"People must navigate tabular cells with arrow keys, select rows, or activate sortable column headers."
|
|
82
|
+
],
|
|
83
|
+
"avoidWhen": [
|
|
84
|
+
{
|
|
85
|
+
"condition": "People only need to read and compare static row-and-column data.",
|
|
86
|
+
"useInstead": "Table"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"condition": "The content is a visual card collection or ordinary two-dimensional page layout.",
|
|
90
|
+
"useInstead": "Grid, List, or Card composition"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"condition": "Cells must contain independent controls, support editing, resize or pin columns, virtualize rows, or expose a schema-driven enterprise data engine.",
|
|
94
|
+
"useInstead": "An application-owned data tool or a separately qualified future component"
|
|
95
|
+
}
|
|
96
|
+
],
|
|
97
|
+
"composition": [
|
|
98
|
+
"Compose explicit Container when wide content needs horizontal overflow, then Root with Caption or another stable accessible name, Header, Body, optional Footer, indexed Rows, indexed ColumnHeaders, and Cells.",
|
|
99
|
+
"Keep all row and column indexes one-based and provide truthful logical rowCount and columnCount, including when only one page or window is rendered.",
|
|
100
|
+
"Place external Toolbar, filtering controls, result count, and Pagination around the grid; Data Grid never creates or executes those systems.",
|
|
101
|
+
"For application-controlled sorting, give the ColumnHeader onAction, update the data and sortDirection outside Data Grid, and keep SortIndicator decorative."
|
|
102
|
+
],
|
|
103
|
+
"rules": [
|
|
104
|
+
{
|
|
105
|
+
"id": "data-grid-interactive-boundary",
|
|
106
|
+
"level": "must",
|
|
107
|
+
"statement": "Choose Data Grid only when composite keyboard navigation, row selection, or sortable-header activation has real value; use Table for static comparison."
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"id": "data-grid-name-index-count",
|
|
111
|
+
"level": "must",
|
|
112
|
+
"statement": "Provide one stable accessible name, one-based row and column indexes, and truthful logical counts for the complete represented data set."
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"id": "data-grid-data-ownership",
|
|
116
|
+
"level": "must",
|
|
117
|
+
"statement": "Keep data transformation, filtering, sorting direction changes, fetching, caching, URL state, pagination, stale-request cancellation, and persistence in the application."
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"id": "data-grid-external-controls",
|
|
121
|
+
"level": "must",
|
|
122
|
+
"statement": "Compose independently named Brick controls and Pagination outside Root; do not place arbitrary interactive controls inside v1 cells or make the grid itself own surrounding workflow state."
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"id": "data-grid-overflow",
|
|
126
|
+
"level": "must",
|
|
127
|
+
"statement": "Author DataGrid.Container explicitly when honest columns need horizontal overflow; Root never inserts containment and narrow layouts must preserve the tabular relationships."
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"id": "data-grid-outline-owner",
|
|
131
|
+
"level": "must",
|
|
132
|
+
"statement": "Let the outline Root own its border, radius, and exposed cell corners; do not add a second framed or clipping wrapper to repair the outline recipe."
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"id": "data-grid-selection-identity",
|
|
136
|
+
"level": "must",
|
|
137
|
+
"statement": "Use stable row IDs as selection values, keep active cell and row selection as independent states, and do not derive identity from the current visual index."
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"id": "data-grid-sort-composition",
|
|
141
|
+
"level": "must",
|
|
142
|
+
"statement": "Give an actionable sortable ColumnHeader pointer and Enter parity, expose sortDirection only on the active sorted header, and treat SortIndicator as decorative."
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"id": "data-grid-virtualization",
|
|
146
|
+
"level": "must",
|
|
147
|
+
"statement": "If an application windows rows, preserve full logical one-based indexes and totals and keep the active cell mounted or move active state before it leaves the DOM; geometry utilities do not own grid semantics or focus."
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"id": "data-grid-css",
|
|
151
|
+
"level": "must",
|
|
152
|
+
"statement": "Load styles.css or core.css plus data-grid.css."
|
|
153
|
+
}
|
|
154
|
+
],
|
|
155
|
+
"commonMistakes": [
|
|
156
|
+
{
|
|
157
|
+
"mistake": "Using Data Grid because a static table has many rows.",
|
|
158
|
+
"correction": "Use Table until arrow-key cell navigation, row selection, or sortable-header activation is a genuine task requirement."
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"mistake": "Putting search, filters, pagination, fetches, and data mutation inside Data Grid.",
|
|
162
|
+
"correction": "Compose those application-owned systems around the public Data Grid anatomy."
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"mistake": "Placing buttons, links, editable fields, or menus in v1 cells without an interaction mode.",
|
|
166
|
+
"correction": "Keep cells non-editing and use an application-owned data tool when independent cell controls are required."
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"mistake": "Using zero-based or page-local indexes while claiming a larger logical set.",
|
|
170
|
+
"correction": "Pass one-based logical indexes and truthful counts so active-descendant announcements remain coherent."
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"mistake": "Wrapping an outline Data Grid in another bordered or rounded clipping surface to hide sharp cell corners.",
|
|
174
|
+
"correction": "Keep Container responsible only for overflow and let the outline Root own one complete rounded boundary."
|
|
175
|
+
}
|
|
176
|
+
],
|
|
177
|
+
"validation": [
|
|
178
|
+
"Inspect the accessible name, roles, one-based indexes, logical counts, active descendant, selection metadata, disabled/read-only states, and sort direction.",
|
|
179
|
+
"Test one Tab entry, arrows, Home and End, PageUp and PageDown, Ctrl or Meta plus Home and End, RTL mapping, disabled skipping, and pointer or Enter sortable-header parity.",
|
|
180
|
+
"Verify stable selection IDs and focus after application sorting, filtering, page changes, or reordered data.",
|
|
181
|
+
"Check explicit Container overflow, complete outline corners with and without Header or Footer, 320 CSS pixels, 200% text, 400% zoom, long content, dark appearance, forced colors, and no page-level horizontal overflow.",
|
|
182
|
+
"Confirm editing, arbitrary cell controls, virtualization, schemas, fetching, filtering, pagination, and persistence remain excluded."
|
|
183
|
+
],
|
|
184
|
+
"related": [
|
|
185
|
+
{
|
|
186
|
+
"kind": "package",
|
|
187
|
+
"package": "@flowstack-ui/atom",
|
|
188
|
+
"id": "data-grid",
|
|
189
|
+
"versionPolicy": "installed-exact"
|
|
190
|
+
},
|
|
191
|
+
"table",
|
|
192
|
+
"tree-grid",
|
|
193
|
+
"toolbar",
|
|
194
|
+
"pagination",
|
|
195
|
+
"badge",
|
|
196
|
+
"scroll-area"
|
|
197
|
+
]
|
|
198
|
+
}
|
|
199
|
+
```
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Data List
|
|
2
|
+
|
|
3
|
+
Source: @flowstack-ui/brick@0.1.11
|
|
4
|
+
Kind: component
|
|
5
|
+
ID: data-list
|
|
6
|
+
|
|
7
|
+
# Data List agent guide
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Present repeated term/value metadata with native description-list semantics and a finished responsive recipe.
|
|
12
|
+
|
|
13
|
+
## Use when
|
|
14
|
+
|
|
15
|
+
- Several related labels and values describe one record, profile, object, or specification set.
|
|
16
|
+
|
|
17
|
+
## Choose something else when
|
|
18
|
+
|
|
19
|
+
- Items are peers rather than terms and descriptions, or the content is a columnar dataset. Use List for peers or Table/Data Grid for columnar data.
|
|
20
|
+
- The values are editable form controls. Use Field or Fieldset.
|
|
21
|
+
|
|
22
|
+
## Required composition
|
|
23
|
+
|
|
24
|
+
- Compose Root with Item groups; place one or more Label parts before one or more Value parts inside every Item.
|
|
25
|
+
|
|
26
|
+
## Rules
|
|
27
|
+
|
|
28
|
+
- **MUST:** Use Root, Item, Label, and Value so the rendered dl/div/dt/dd grammar remains valid; do not recreate the relationship with ul/li or generic Stack children.
|
|
29
|
+
- **MUST:** Keep one label-then-value source order and use responsive orientation rather than duplicating mobile and desktop metadata trees.
|
|
30
|
+
- **MUST:** Write visible meaningful labels; do not add empty Label parts solely to force alignment.
|
|
31
|
+
- **MUST:** Load styles.css or core.css plus data-list.css.
|
|
32
|
+
|
|
33
|
+
## Common mistakes
|
|
34
|
+
|
|
35
|
+
- **Avoid:** Using List for phone/email/title facts or adding ARIA term/definition roles to native Data List parts. **Instead:** Use DataList native anatomy and rely on its native semantics without redundant ARIA.
|
|
36
|
+
|
|
37
|
+
## Validation checklist
|
|
38
|
+
|
|
39
|
+
- Check dl/div/dt/dd anatomy, complete visible labels, source order, horizontal and vertical orientation, long values, links inside Value, zoom, RTL, forced colors, and CSS loading.
|
|
40
|
+
|
|
41
|
+
## Related guidance
|
|
42
|
+
|
|
43
|
+
- `list`
|
|
44
|
+
- `table`
|
|
45
|
+
- `data-grid`
|
|
46
|
+
- `field`
|
|
47
|
+
- `stack`
|
|
48
|
+
|
|
49
|
+
## Machine record
|
|
50
|
+
|
|
51
|
+
```json
|
|
52
|
+
{
|
|
53
|
+
"schema": "flowstack.agent-component.v1",
|
|
54
|
+
"id": "data-list",
|
|
55
|
+
"name": "Data List",
|
|
56
|
+
"package": "@flowstack-ui/brick",
|
|
57
|
+
"layer": "brick",
|
|
58
|
+
"kind": "component",
|
|
59
|
+
"purpose": "Present repeated term/value metadata with native description-list semantics and a finished responsive recipe.",
|
|
60
|
+
"useWhen": [
|
|
61
|
+
"Several related labels and values describe one record, profile, object, or specification set."
|
|
62
|
+
],
|
|
63
|
+
"avoidWhen": [
|
|
64
|
+
{
|
|
65
|
+
"condition": "Items are peers rather than terms and descriptions, or the content is a columnar dataset.",
|
|
66
|
+
"useInstead": "List for peers or Table/Data Grid for columnar data"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"condition": "The values are editable form controls.",
|
|
70
|
+
"useInstead": "Field or Fieldset"
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"composition": [
|
|
74
|
+
"Compose Root with Item groups; place one or more Label parts before one or more Value parts inside every Item."
|
|
75
|
+
],
|
|
76
|
+
"rules": [
|
|
77
|
+
{
|
|
78
|
+
"id": "data-list-native-anatomy",
|
|
79
|
+
"level": "must",
|
|
80
|
+
"statement": "Use Root, Item, Label, and Value so the rendered dl/div/dt/dd grammar remains valid; do not recreate the relationship with ul/li or generic Stack children."
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"id": "data-list-responsive-source",
|
|
84
|
+
"level": "must",
|
|
85
|
+
"statement": "Keep one label-then-value source order and use responsive orientation rather than duplicating mobile and desktop metadata trees."
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"id": "data-list-labels",
|
|
89
|
+
"level": "must",
|
|
90
|
+
"statement": "Write visible meaningful labels; do not add empty Label parts solely to force alignment."
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"id": "data-list-css",
|
|
94
|
+
"level": "must",
|
|
95
|
+
"statement": "Load styles.css or core.css plus data-list.css."
|
|
96
|
+
}
|
|
97
|
+
],
|
|
98
|
+
"commonMistakes": [
|
|
99
|
+
{
|
|
100
|
+
"mistake": "Using List for phone/email/title facts or adding ARIA term/definition roles to native Data List parts.",
|
|
101
|
+
"correction": "Use DataList native anatomy and rely on its native semantics without redundant ARIA."
|
|
102
|
+
}
|
|
103
|
+
],
|
|
104
|
+
"validation": [
|
|
105
|
+
"Check dl/div/dt/dd anatomy, complete visible labels, source order, horizontal and vertical orientation, long values, links inside Value, zoom, RTL, forced colors, and CSS loading."
|
|
106
|
+
],
|
|
107
|
+
"related": [
|
|
108
|
+
"list",
|
|
109
|
+
"table",
|
|
110
|
+
"data-grid",
|
|
111
|
+
"field",
|
|
112
|
+
"stack"
|
|
113
|
+
]
|
|
114
|
+
}
|
|
115
|
+
```
|