@equal-experts/kuat-react 0.13.0 → 0.13.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.
- package/agent-docs/AGENTS.md +10 -0
- package/agent-docs/README.md +17 -0
- package/agent-docs/bundle-manifest.json +63 -0
- package/agent-docs/components/_template.md +21 -0
- package/agent-docs/components/button-group.md +27 -0
- package/agent-docs/components/button.md +50 -0
- package/agent-docs/components/components.manifest.json +20 -0
- package/agent-docs/components/kuat-header.md +27 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/LOADING.md +166 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/accessibility.md +444 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/brand.md +99 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/content/README.md +28 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/content/formatting.md +93 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/content/numbers.md +69 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/content/punctuation.md +75 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/content/voice-and-tone.md +263 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/content/writing-style.md +91 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/design/README.md +28 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/design/borders.md +159 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/design/colours.md +173 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/design/design-language.md +116 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/design/spacing.md +130 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/design/typography.md +155 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/logo.md +151 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/marketing/content/README.md +26 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/marketing/content/blog-posts.md +33 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/marketing/content/marketing-content.md +65 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/marketing/content/seo.md +44 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/marketing/emails.md +74 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/marketing/scenarios/README.md +18 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/marketing/scenarios/marketing-pages.md +368 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/marketing/website.md +169 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/DEPRECATIONS.md +28 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/README.md +65 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/accessibility.md +402 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/component-decision-tree.md +263 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/component-registry.md +68 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/content/README.md +29 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/content/actions.md +51 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/content/confirmations.md +57 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/content/empty-states.md +43 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/content/errors.md +54 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/content/forms.md +74 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/content/product-content.md +138 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/design.md +207 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/emails.md +71 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/review-checklist.md +57 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/review-context.md +44 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/scenarios/README.md +82 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/scenarios/authentication.md +303 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/scenarios/dashboards.md +313 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/scenarios/documentation.md +333 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/scenarios/forms.md +361 -0
- package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/technical.md +488 -0
- package/agent-docs/kuat-docs/rules/README.md +148 -0
- package/agent-docs/kuat-docs/rules/design/layouts.md +394 -0
- package/agent-docs/kuat-docs/rules/scenarios/README.md +83 -0
- package/agent-docs/kuat-docs/rules/scenarios/authentication.md +301 -0
- package/agent-docs/kuat-docs/rules/scenarios/dashboards.md +314 -0
- package/agent-docs/kuat-docs/rules/scenarios/documentation.md +333 -0
- package/agent-docs/kuat-docs/rules/scenarios/forms.md +359 -0
- package/agent-docs/kuat-docs/rules/scenarios/marketing-pages.md +367 -0
- package/agent-docs/manifest.json +9 -0
- package/agent-docs/rules/LOADING-consumer.md +27 -0
- package/dist/accordion.d.ts +2 -0
- package/dist/alert-dialog.d.ts +2 -0
- package/dist/badge.d.ts +3 -0
- package/dist/button-group.d.ts +2 -0
- package/dist/button.d.ts +3 -0
- package/dist/carousel.d.ts +2 -0
- package/dist/checkbox.d.ts +3 -0
- package/dist/components/ui/accordion/accordion.d.ts +7 -0
- package/dist/components/ui/accordion/index.d.ts +1 -0
- package/dist/components/ui/alert-dialog/alert-dialog.d.ts +20 -0
- package/dist/components/ui/alert-dialog/index.d.ts +1 -0
- package/dist/components/ui/badge/badge.d.ts +16 -0
- package/dist/components/ui/badge/index.d.ts +2 -0
- package/dist/components/ui/breadcrumb/Breadcrumb.d.ts +29 -0
- package/dist/components/ui/breadcrumb/breadcrumb-primitives.d.ts +19 -0
- package/dist/components/ui/breadcrumb/index.d.ts +4 -0
- package/dist/components/ui/button/button.d.ts +27 -0
- package/dist/components/ui/button/index.d.ts +2 -0
- package/dist/components/ui/button-group/button-group.d.ts +23 -0
- package/dist/components/ui/button-group/index.d.ts +2 -0
- package/dist/components/ui/carousel/carousel.d.ts +50 -0
- package/dist/components/ui/carousel/index.d.ts +2 -0
- package/dist/components/ui/checkbox/checkbox-field.d.ts +23 -0
- package/dist/components/ui/checkbox/checkbox.d.ts +5 -0
- package/dist/components/ui/checkbox/index.d.ts +4 -0
- package/dist/components/ui/content-card/content-card.d.ts +29 -0
- package/dist/components/ui/content-card/index.d.ts +2 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts +27 -0
- package/dist/components/ui/dropdown-menu/index.d.ts +1 -0
- package/dist/components/ui/ee-logo-icon/ee-logo-icon.d.ts +11 -0
- package/dist/components/ui/ee-logo-icon/index.d.ts +2 -0
- package/dist/components/ui/field/field.d.ts +28 -0
- package/dist/components/ui/field/index.d.ts +2 -0
- package/dist/components/ui/icon-button/icon-button.d.ts +27 -0
- package/dist/components/ui/icon-button/index.d.ts +2 -0
- package/dist/components/ui/input/index.d.ts +2 -0
- package/dist/components/ui/input/input.d.ts +20 -0
- package/dist/components/ui/kuat-carousel/index.d.ts +2 -0
- package/dist/components/ui/kuat-carousel/kuat-carousel.d.ts +16 -0
- package/dist/components/ui/kuat-header/index.d.ts +4 -0
- package/dist/components/ui/kuat-header/kuat-header.d.ts +16 -0
- package/dist/components/ui/kuat-header/kuat-header.logic.d.ts +32 -0
- package/dist/components/ui/kuat-header/kuat-header.types.d.ts +91 -0
- package/dist/components/ui/kuat-logo-lockup/index.d.ts +2 -0
- package/dist/components/ui/kuat-logo-lockup/kuat-logo-lockup.d.ts +17 -0
- package/dist/components/ui/kuat-radial-progress/index.d.ts +2 -0
- package/dist/components/ui/kuat-radial-progress/kuat-radial-progress.d.ts +16 -0
- package/dist/components/ui/radio/index.d.ts +4 -0
- package/dist/components/ui/radio/radio-field.d.ts +25 -0
- package/dist/components/ui/radio/radio.d.ts +7 -0
- package/dist/components/ui/select/constants.d.ts +19 -0
- package/dist/components/ui/select/index.d.ts +3 -0
- package/dist/components/ui/select/select.d.ts +53 -0
- package/dist/components/ui/separator/index.d.ts +2 -0
- package/dist/components/ui/separator/separator.d.ts +9 -0
- package/dist/components/ui/sonner/index.d.ts +4 -0
- package/dist/components/ui/sonner/sonner-content.d.ts +15 -0
- package/dist/components/ui/sonner/sonner.d.ts +21 -0
- package/dist/components/ui/switch/index.d.ts +4 -0
- package/dist/components/ui/switch/switch-field.d.ts +23 -0
- package/dist/components/ui/switch/switch.d.ts +5 -0
- package/dist/components/ui/textarea/index.d.ts +2 -0
- package/dist/components/ui/textarea/textarea.d.ts +9 -0
- package/dist/components/ui/toggle/constants.d.ts +4 -0
- package/dist/components/ui/toggle/index.d.ts +6 -0
- package/dist/components/ui/toggle/toggle-group.d.ts +11 -0
- package/dist/components/ui/toggle/toggle.d.ts +9 -0
- package/dist/field.d.ts +3 -0
- package/dist/icon-button.d.ts +3 -0
- package/dist/index.d.ts +47 -0
- package/dist/input.d.ts +3 -0
- package/dist/kuat-carousel.d.ts +2 -0
- package/dist/kuat-radial-progress.d.ts +7 -0
- package/dist/lib/react-node-compat.d.ts +7 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/radio.d.ts +3 -0
- package/dist/select.d.ts +3 -0
- package/dist/sonner.d.ts +1 -0
- package/dist/style.css +1 -1
- package/dist/style.css.d.ts +2 -0
- package/dist/switch.d.ts +1 -0
- package/dist/test/setup.d.ts +1 -0
- package/dist/textarea.d.ts +3 -0
- package/dist/toggle-group.d.ts +3 -0
- package/dist/toggle.d.ts +3 -0
- package/package.json +4 -2
package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/component-registry.md
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
scope: type
|
|
3
|
+
platform: web_product
|
|
4
|
+
prerequisites: foundations, component-decision-tree.md
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Component registry
|
|
8
|
+
|
|
9
|
+
Stable IDs link upstream scenarios and checklists to per-component guides in the implementation overlay or npm `agent-docs/`.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## How to use
|
|
14
|
+
|
|
15
|
+
1. Scenario or checklist cites an ID (e.g. `shadcn:button`).
|
|
16
|
+
2. Resolve via `components.manifest.json`:
|
|
17
|
+
- Package: `node_modules/@equal-experts/kuat-react/agent-docs/components.manifest.json`
|
|
18
|
+
- Overlay: `{KUAT_RULES_OVERLAY_PATH}/components.manifest.json`
|
|
19
|
+
3. Load `components/{slug}.md` from the manifest `path` field.
|
|
20
|
+
|
|
21
|
+
**Slug:** ID without namespace prefix (`shadcn:button` → `button`).
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Registry (pilot)
|
|
26
|
+
|
|
27
|
+
| ID | Display name | Source | Overlay / package doc | Upstream refs |
|
|
28
|
+
|----|--------------|--------|----------------------|---------------|
|
|
29
|
+
| `shadcn:button` | Button | shadcn CLI + `kuat-core` theme | `components/button.md` | [forms](./scenarios/forms.md), [authentication](./scenarios/authentication.md), [content/actions](./content/actions.md) |
|
|
30
|
+
| `kuat:button-group` | ButtonGroup | `@equal-experts/kuat-react` / `kuat-vue` | `components/button-group.md` | [component-decision-tree](./component-decision-tree.md) |
|
|
31
|
+
| `kuat:kuat-header` | KuatHeader | `@equal-experts/kuat-react` / `kuat-vue` block | `components/kuat-header.md` | [component-decision-tree](./component-decision-tree.md), [design](./design.md) |
|
|
32
|
+
|
|
33
|
+
Expand this table in `kuat-mono` as component docs are added. Keep IDs stable; add new rows rather than renaming IDs.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## ID conventions
|
|
38
|
+
|
|
39
|
+
| Prefix | Meaning | Example |
|
|
40
|
+
|--------|---------|---------|
|
|
41
|
+
| `kuat:` | Exported from Kuat packages or Kuat-specific | `kuat:button-group` |
|
|
42
|
+
| `shadcn:` | App-installed shadcn primitive, EE-themed via kuat-core | `shadcn:dialog` |
|
|
43
|
+
| `kuat:kuat-*` | Kuat blocks (compositions) | `kuat:kuat-header` |
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Manifest shape (downstream)
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"components": {
|
|
52
|
+
"shadcn:button": {
|
|
53
|
+
"path": "components/button.md",
|
|
54
|
+
"sources": ["shadcn:button", "@equal-experts/kuat-core"]
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Authoritative manifest lives in `kuat-mono` and is published inside each package `agent-docs/`.
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Related
|
|
65
|
+
|
|
66
|
+
- [component-decision-tree.md](./component-decision-tree.md)
|
|
67
|
+
- [consumption-architecture.md](../../../../setup/consumption-architecture.md)
|
|
68
|
+
- [DEPRECATIONS.md](./DEPRECATIONS.md)
|
package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/content/README.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Product Content Rules
|
|
2
|
+
|
|
3
|
+
UX writing and content patterns for Equal Experts web applications.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
Product content is the text inside product interfaces: buttons, errors, forms, confirmations, empty states. Load [foundations content](../../../../foundations/content/voice-and-tone.md) first, then [product-content.md](./product-content.md).
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Files
|
|
14
|
+
|
|
15
|
+
| File | Description |
|
|
16
|
+
|------|-------------|
|
|
17
|
+
| [product-content.md](./product-content.md) | Core principles, voice formula, checklist |
|
|
18
|
+
| [actions.md](./actions.md) | Buttons and links |
|
|
19
|
+
| [confirmations.md](./confirmations.md) | Confirmation dialogs |
|
|
20
|
+
| [empty-states.md](./empty-states.md) | Empty state copy |
|
|
21
|
+
| [errors.md](./errors.md) | Error messages |
|
|
22
|
+
| [forms.md](./forms.md) | Form labels, placeholders, validation, structure |
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Related
|
|
27
|
+
|
|
28
|
+
- [Foundations content](../../../../foundations/content/README.md)
|
|
29
|
+
- [Product design](../design.md)
|
package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/content/actions.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
scope: type
|
|
3
|
+
platform: web_product
|
|
4
|
+
prerequisites: foundations, foundations/content/voice-and-tone.md, product/content/product-content.md
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Actions (Buttons and Links)
|
|
8
|
+
|
|
9
|
+
Guidance for button labels and link text in product interfaces.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Buttons
|
|
14
|
+
|
|
15
|
+
**Do:**
|
|
16
|
+
- Use verb-driven labels
|
|
17
|
+
- Be specific about what happens
|
|
18
|
+
- Keep labels short (1–3 words ideal)
|
|
19
|
+
- Use sentence case
|
|
20
|
+
|
|
21
|
+
**Don't:**
|
|
22
|
+
- Use vague labels like "OK" or "Submit"
|
|
23
|
+
- Make labels overly long
|
|
24
|
+
- Use ALL CAPS
|
|
25
|
+
- Include instructions in button labels
|
|
26
|
+
|
|
27
|
+
**Good examples:**
|
|
28
|
+
- [Save and close]
|
|
29
|
+
- [Delete expense]
|
|
30
|
+
- [Send invoice now]
|
|
31
|
+
- [Connect bank]
|
|
32
|
+
|
|
33
|
+
**Bad examples:**
|
|
34
|
+
- [OK] (ambiguous)
|
|
35
|
+
- [SUBMIT FORM NOW] (shouty, vague)
|
|
36
|
+
- [Click here to continue] (generic)
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Links
|
|
41
|
+
|
|
42
|
+
- Use descriptive link text that states the destination or action
|
|
43
|
+
- Avoid "click here", "read more", or "learn more" without context
|
|
44
|
+
- See [foundations content formatting](../../../../foundations/content/formatting.md) for link guidelines
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Related
|
|
49
|
+
|
|
50
|
+
- [Product content](./product-content.md)
|
|
51
|
+
- [Confirmations](./confirmations.md)
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
scope: type
|
|
3
|
+
platform: web_product
|
|
4
|
+
prerequisites: foundations, product/content/product-content.md
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Confirmations
|
|
8
|
+
|
|
9
|
+
When and how to write confirmation dialogs for destructive or high-impact actions.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## When to Use Confirmations
|
|
14
|
+
|
|
15
|
+
**Use for:**
|
|
16
|
+
- Destructive actions (delete, remove)
|
|
17
|
+
- Actions that can't be undone
|
|
18
|
+
- Actions with significant consequences
|
|
19
|
+
|
|
20
|
+
**Don't use for:**
|
|
21
|
+
- Actions easily undone
|
|
22
|
+
- Low-stakes decisions
|
|
23
|
+
- Frequent actions
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Confirmation Pattern
|
|
28
|
+
|
|
29
|
+
1. **Clear question or statement** – What is about to happen?
|
|
30
|
+
2. **Consequences** – What will be affected? (list if helpful)
|
|
31
|
+
3. **Irreversibility** – State if the action can't be undone
|
|
32
|
+
4. **Primary action** – Specific, verb-driven (e.g. "Delete permanently")
|
|
33
|
+
5. **Cancel** – "Cancel" or "Keep [item]"
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Example
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
Delete client account?
|
|
41
|
+
|
|
42
|
+
This will permanently delete [Client Name] and all associated:
|
|
43
|
+
- Invoices (12)
|
|
44
|
+
- Payments (8)
|
|
45
|
+
- Transaction history
|
|
46
|
+
|
|
47
|
+
You can't undo this action.
|
|
48
|
+
|
|
49
|
+
[Delete permanently] [Cancel]
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Related
|
|
55
|
+
|
|
56
|
+
- [Product content](./product-content.md)
|
|
57
|
+
- [Actions](./actions.md)
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
scope: type
|
|
3
|
+
platform: web_product
|
|
4
|
+
prerequisites: foundations, product/content/product-content.md
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Empty States
|
|
8
|
+
|
|
9
|
+
How to write copy when there's no data or content to show yet.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Principles
|
|
14
|
+
|
|
15
|
+
**Do:**
|
|
16
|
+
- Explain why the state is empty
|
|
17
|
+
- Provide a clear next action
|
|
18
|
+
- Use a positive, encouraging tone
|
|
19
|
+
|
|
20
|
+
**Don't:**
|
|
21
|
+
- Leave the user guessing
|
|
22
|
+
- Use negative or blaming language
|
|
23
|
+
- Offer multiple competing actions without a clear primary one
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Example
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
No invoices yet
|
|
31
|
+
|
|
32
|
+
Create your first invoice to get paid faster.
|
|
33
|
+
It takes less than 2 minutes.
|
|
34
|
+
|
|
35
|
+
[Create invoice]
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Related
|
|
41
|
+
|
|
42
|
+
- [Product content](./product-content.md)
|
|
43
|
+
- [Actions](./actions.md)
|
package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/content/errors.md
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
scope: type
|
|
3
|
+
platform: web_product
|
|
4
|
+
prerequisites: foundations, product/content/product-content.md
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Errors
|
|
8
|
+
|
|
9
|
+
How to write error messages that help users fix the problem.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Error Message Formula
|
|
14
|
+
|
|
15
|
+
1. **What went wrong** – Be specific
|
|
16
|
+
2. **Why it happened** – If it helps the user (e.g. which field, what rule)
|
|
17
|
+
3. **How to fix it** – Actionable next step
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Do
|
|
22
|
+
|
|
23
|
+
- Be specific about the problem
|
|
24
|
+
- Use plain language
|
|
25
|
+
- Provide actionable next steps
|
|
26
|
+
- Take responsibility where appropriate ("We couldn't save..." rather than "You entered invalid data")
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Don't
|
|
31
|
+
|
|
32
|
+
- Blame the user
|
|
33
|
+
- Use technical jargon or error codes in the UI
|
|
34
|
+
- Be vague ("An error occurred")
|
|
35
|
+
- Leave the user without a next step
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Example
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
Can't save invoice
|
|
43
|
+
|
|
44
|
+
The customer email "john@example,com" has a comma instead of a period.
|
|
45
|
+
|
|
46
|
+
Fix the email address and try again.
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Related
|
|
52
|
+
|
|
53
|
+
- [Product content](./product-content.md)
|
|
54
|
+
- [Forms](./forms.md) – Validation messages
|
package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/content/forms.md
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
scope: type
|
|
3
|
+
platform: web_product
|
|
4
|
+
prerequisites: foundations, product/content/product-content.md
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Forms
|
|
8
|
+
|
|
9
|
+
Content guidance for forms: labels, placeholders, helper text, validation, and structure.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Labels
|
|
14
|
+
|
|
15
|
+
**Do:**
|
|
16
|
+
- Always use a visible label (not only a placeholder)
|
|
17
|
+
- Keep labels short and clear
|
|
18
|
+
- Use sentence case
|
|
19
|
+
- Position labels above fields (or consistent with your design system)
|
|
20
|
+
|
|
21
|
+
**Don't:**
|
|
22
|
+
- Use placeholder as the only label (placeholders disappear on focus and aren’t always read by assistive tech)
|
|
23
|
+
- Make labels overly long
|
|
24
|
+
- Hide labels on focus
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Placeholders
|
|
29
|
+
|
|
30
|
+
- Use for short hints or examples (e.g. "e.g. name@example.com")
|
|
31
|
+
- Don’t put critical instructions only in placeholders
|
|
32
|
+
- Keep placeholder text brief; move longer guidance to helper text
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Helper Text
|
|
37
|
+
|
|
38
|
+
- Use for optional instructions, format requirements, or context
|
|
39
|
+
- Place below the field or with the label
|
|
40
|
+
- Keep it concise; link to full help if needed
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Validation Messages
|
|
45
|
+
|
|
46
|
+
- Show validation at the right time (e.g. on blur or submit, depending on pattern)
|
|
47
|
+
- Be specific: "Password must be at least 8 characters" not "Invalid password"
|
|
48
|
+
- Tie the message to the field (inline or next to the field) so users know what to fix
|
|
49
|
+
- See [Errors](./errors.md) for the problem–cause–fix pattern
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Form Structure
|
|
54
|
+
|
|
55
|
+
- Group related fields (e.g. contact details, payment)
|
|
56
|
+
- Use clear section headings for long forms
|
|
57
|
+
- Order fields in a logical flow (e.g. match the user’s mental model or task order)
|
|
58
|
+
- Use progressive disclosure for optional or advanced fields so the form doesn’t feel overwhelming
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Mobile
|
|
63
|
+
|
|
64
|
+
- Keep form copy short; every word counts on small screens
|
|
65
|
+
- Consider shorter labels or stacked layout if space is tight
|
|
66
|
+
- Ensure tap targets and font sizes meet accessibility guidelines
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Related
|
|
71
|
+
|
|
72
|
+
- [Product content](./product-content.md)
|
|
73
|
+
- [Errors](./errors.md)
|
|
74
|
+
- [Foundations accessibility](../../../../foundations/accessibility.md)
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
---
|
|
2
|
+
scope: type
|
|
3
|
+
platform: web_product
|
|
4
|
+
prerequisites: foundations, foundations/content/voice-and-tone.md
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Product Content Guidelines
|
|
8
|
+
|
|
9
|
+
UX writing and content guidelines for Equal Experts web applications.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
**Prerequisites:** Load [foundations](../../../../foundations/) first, especially [voice and tone](../../../../foundations/content/voice-and-tone.md).
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Overview
|
|
18
|
+
|
|
19
|
+
Product content is the text inside product interfaces, designed to help users complete tasks. It's more concise than marketing content and action-oriented.
|
|
20
|
+
|
|
21
|
+
**Core purpose:** Give users exactly what they need, exactly when they need it, to complete their task successfully.
|
|
22
|
+
|
|
23
|
+
**Tone:** Helpful, concise, action-oriented, respectful
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Product Voice Formula
|
|
28
|
+
|
|
29
|
+
`[Action] + [Object] + [Benefit if needed]`
|
|
30
|
+
|
|
31
|
+
**Examples:**
|
|
32
|
+
- "Save invoice" (action + object)
|
|
33
|
+
- "Export to CSV" (action + object + format)
|
|
34
|
+
- "Archive project · Free up space" (action + object · benefit)
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Key Differences from Marketing
|
|
39
|
+
|
|
40
|
+
| Aspect | Marketing | Product |
|
|
41
|
+
|--------|-----------|---------|
|
|
42
|
+
| Purpose | Persuade, inform | Enable task completion |
|
|
43
|
+
| Length | Can be expansive | Must be concise |
|
|
44
|
+
| Tone | Conversational | Action-oriented |
|
|
45
|
+
| Style | Storytelling | Direct, functional |
|
|
46
|
+
| Context | User chose to read | User is trying to do |
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Foundational Principles
|
|
51
|
+
|
|
52
|
+
### 1. Understand the Audience
|
|
53
|
+
|
|
54
|
+
Before writing, know:
|
|
55
|
+
- **Who** sees this? (All users? Specific segments?)
|
|
56
|
+
- **When** do they see it? (First login? After error?)
|
|
57
|
+
- **What** are they trying to do?
|
|
58
|
+
- **How** are they feeling? (Confident? Frustrated?)
|
|
59
|
+
|
|
60
|
+
### 2. Keep Users Focused
|
|
61
|
+
|
|
62
|
+
- Surface information at moment of need
|
|
63
|
+
- Don't make users remember for later
|
|
64
|
+
- Remove info when no longer relevant
|
|
65
|
+
- Avoid "just in case" content
|
|
66
|
+
|
|
67
|
+
### 3. Get to the Point
|
|
68
|
+
|
|
69
|
+
- Lead with most important information
|
|
70
|
+
- Remove filler words and phrases
|
|
71
|
+
- Every word should earn its place
|
|
72
|
+
|
|
73
|
+
**Common filler to remove:**
|
|
74
|
+
- "Please note that..."
|
|
75
|
+
- "At this time..."
|
|
76
|
+
- "In order to..."
|
|
77
|
+
- "You may wish to..."
|
|
78
|
+
- "It appears that..."
|
|
79
|
+
|
|
80
|
+
### 4. Make It Accessible
|
|
81
|
+
|
|
82
|
+
- Ensure proper heading hierarchy
|
|
83
|
+
- Write descriptive link text
|
|
84
|
+
- Provide alt text for images
|
|
85
|
+
- Keep form labels clear and persistent
|
|
86
|
+
- Error messages must be actionable
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Common Mistakes
|
|
91
|
+
|
|
92
|
+
| Mistake | Bad | Good |
|
|
93
|
+
|---------|-----|------|
|
|
94
|
+
| Explaining obvious | "Click the button below to continue" | [Continue] |
|
|
95
|
+
| Technical language | "Authentication failed for endpoint" | "We couldn't log you in" |
|
|
96
|
+
| Being vague | "An error occurred" | "Password must be 8+ characters" |
|
|
97
|
+
| Overusing exclamation | "Success! Invoice sent!" | "Invoice sent" |
|
|
98
|
+
| Apologizing unnecessarily | "Sorry, no results found" | "No results found" |
|
|
99
|
+
| Marketing speak | "Leverage our innovative AI-powered categorization" | "Auto-categorize expenses" |
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Product Content Checklist
|
|
104
|
+
|
|
105
|
+
**Context and Timing:**
|
|
106
|
+
- [ ] Content appears at right moment
|
|
107
|
+
- [ ] Information directly relevant
|
|
108
|
+
- [ ] Content disappears when not relevant
|
|
109
|
+
|
|
110
|
+
**Clarity and Conciseness:**
|
|
111
|
+
- [ ] Every word carries meaning
|
|
112
|
+
- [ ] As short as possible while clear
|
|
113
|
+
- [ ] Most important info first
|
|
114
|
+
|
|
115
|
+
**Usability:**
|
|
116
|
+
- [ ] Users can complete task without leaving for help
|
|
117
|
+
- [ ] Button labels describe action clearly
|
|
118
|
+
- [ ] Form labels clear and persistent
|
|
119
|
+
- [ ] Error messages explain problem and fix
|
|
120
|
+
|
|
121
|
+
**Accessibility:**
|
|
122
|
+
- [ ] Accessible to screen readers
|
|
123
|
+
- [ ] Labels connected to inputs
|
|
124
|
+
- [ ] Error messages associated with fields
|
|
125
|
+
- [ ] Logical heading hierarchy
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Related Documentation
|
|
130
|
+
|
|
131
|
+
- [Foundations content](../../../../foundations/content/README.md) - Voice, tone, style
|
|
132
|
+
- [Actions](./actions.md) - Buttons and links
|
|
133
|
+
- [Confirmations](./confirmations.md) - Confirmation dialogs
|
|
134
|
+
- [Empty states](./empty-states.md) - Empty state copy
|
|
135
|
+
- [Errors](./errors.md) - Error messages
|
|
136
|
+
- [Forms](./forms.md) - Form content
|
|
137
|
+
- [Design](../design.md) - Visual design guidelines
|
|
138
|
+
- [Component Decision Tree](../component-decision-tree.md) - Component development
|