@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.
Files changed (150) hide show
  1. package/agent-docs/AGENTS.md +10 -0
  2. package/agent-docs/README.md +17 -0
  3. package/agent-docs/bundle-manifest.json +63 -0
  4. package/agent-docs/components/_template.md +21 -0
  5. package/agent-docs/components/button-group.md +27 -0
  6. package/agent-docs/components/button.md +50 -0
  7. package/agent-docs/components/components.manifest.json +20 -0
  8. package/agent-docs/components/kuat-header.md +27 -0
  9. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/LOADING.md +166 -0
  10. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/accessibility.md +444 -0
  11. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/brand.md +99 -0
  12. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/content/README.md +28 -0
  13. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/content/formatting.md +93 -0
  14. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/content/numbers.md +69 -0
  15. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/content/punctuation.md +75 -0
  16. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/content/voice-and-tone.md +263 -0
  17. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/content/writing-style.md +91 -0
  18. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/design/README.md +28 -0
  19. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/design/borders.md +159 -0
  20. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/design/colours.md +173 -0
  21. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/design/design-language.md +116 -0
  22. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/design/spacing.md +130 -0
  23. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/design/typography.md +155 -0
  24. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/foundations/logo.md +151 -0
  25. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/marketing/content/README.md +26 -0
  26. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/marketing/content/blog-posts.md +33 -0
  27. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/marketing/content/marketing-content.md +65 -0
  28. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/marketing/content/seo.md +44 -0
  29. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/marketing/emails.md +74 -0
  30. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/marketing/scenarios/README.md +18 -0
  31. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/marketing/scenarios/marketing-pages.md +368 -0
  32. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/marketing/website.md +169 -0
  33. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/DEPRECATIONS.md +28 -0
  34. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/README.md +65 -0
  35. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/accessibility.md +402 -0
  36. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/component-decision-tree.md +263 -0
  37. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/component-registry.md +68 -0
  38. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/content/README.md +29 -0
  39. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/content/actions.md +51 -0
  40. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/content/confirmations.md +57 -0
  41. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/content/empty-states.md +43 -0
  42. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/content/errors.md +54 -0
  43. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/content/forms.md +74 -0
  44. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/content/product-content.md +138 -0
  45. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/design.md +207 -0
  46. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/emails.md +71 -0
  47. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/review-checklist.md +57 -0
  48. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/review-context.md +44 -0
  49. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/scenarios/README.md +82 -0
  50. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/scenarios/authentication.md +303 -0
  51. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/scenarios/dashboards.md +313 -0
  52. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/scenarios/documentation.md +333 -0
  53. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/scenarios/forms.md +361 -0
  54. package/agent-docs/external/kuat-agent-rules/kuat-docs/rules/types/web/product/technical.md +488 -0
  55. package/agent-docs/kuat-docs/rules/README.md +148 -0
  56. package/agent-docs/kuat-docs/rules/design/layouts.md +394 -0
  57. package/agent-docs/kuat-docs/rules/scenarios/README.md +83 -0
  58. package/agent-docs/kuat-docs/rules/scenarios/authentication.md +301 -0
  59. package/agent-docs/kuat-docs/rules/scenarios/dashboards.md +314 -0
  60. package/agent-docs/kuat-docs/rules/scenarios/documentation.md +333 -0
  61. package/agent-docs/kuat-docs/rules/scenarios/forms.md +359 -0
  62. package/agent-docs/kuat-docs/rules/scenarios/marketing-pages.md +367 -0
  63. package/agent-docs/manifest.json +9 -0
  64. package/agent-docs/rules/LOADING-consumer.md +27 -0
  65. package/dist/accordion.d.ts +2 -0
  66. package/dist/alert-dialog.d.ts +2 -0
  67. package/dist/badge.d.ts +3 -0
  68. package/dist/button-group.d.ts +2 -0
  69. package/dist/button.d.ts +3 -0
  70. package/dist/carousel.d.ts +2 -0
  71. package/dist/checkbox.d.ts +3 -0
  72. package/dist/components/ui/accordion/accordion.d.ts +7 -0
  73. package/dist/components/ui/accordion/index.d.ts +1 -0
  74. package/dist/components/ui/alert-dialog/alert-dialog.d.ts +20 -0
  75. package/dist/components/ui/alert-dialog/index.d.ts +1 -0
  76. package/dist/components/ui/badge/badge.d.ts +16 -0
  77. package/dist/components/ui/badge/index.d.ts +2 -0
  78. package/dist/components/ui/breadcrumb/Breadcrumb.d.ts +29 -0
  79. package/dist/components/ui/breadcrumb/breadcrumb-primitives.d.ts +19 -0
  80. package/dist/components/ui/breadcrumb/index.d.ts +4 -0
  81. package/dist/components/ui/button/button.d.ts +27 -0
  82. package/dist/components/ui/button/index.d.ts +2 -0
  83. package/dist/components/ui/button-group/button-group.d.ts +23 -0
  84. package/dist/components/ui/button-group/index.d.ts +2 -0
  85. package/dist/components/ui/carousel/carousel.d.ts +50 -0
  86. package/dist/components/ui/carousel/index.d.ts +2 -0
  87. package/dist/components/ui/checkbox/checkbox-field.d.ts +23 -0
  88. package/dist/components/ui/checkbox/checkbox.d.ts +5 -0
  89. package/dist/components/ui/checkbox/index.d.ts +4 -0
  90. package/dist/components/ui/content-card/content-card.d.ts +29 -0
  91. package/dist/components/ui/content-card/index.d.ts +2 -0
  92. package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts +27 -0
  93. package/dist/components/ui/dropdown-menu/index.d.ts +1 -0
  94. package/dist/components/ui/ee-logo-icon/ee-logo-icon.d.ts +11 -0
  95. package/dist/components/ui/ee-logo-icon/index.d.ts +2 -0
  96. package/dist/components/ui/field/field.d.ts +28 -0
  97. package/dist/components/ui/field/index.d.ts +2 -0
  98. package/dist/components/ui/icon-button/icon-button.d.ts +27 -0
  99. package/dist/components/ui/icon-button/index.d.ts +2 -0
  100. package/dist/components/ui/input/index.d.ts +2 -0
  101. package/dist/components/ui/input/input.d.ts +20 -0
  102. package/dist/components/ui/kuat-carousel/index.d.ts +2 -0
  103. package/dist/components/ui/kuat-carousel/kuat-carousel.d.ts +16 -0
  104. package/dist/components/ui/kuat-header/index.d.ts +4 -0
  105. package/dist/components/ui/kuat-header/kuat-header.d.ts +16 -0
  106. package/dist/components/ui/kuat-header/kuat-header.logic.d.ts +32 -0
  107. package/dist/components/ui/kuat-header/kuat-header.types.d.ts +91 -0
  108. package/dist/components/ui/kuat-logo-lockup/index.d.ts +2 -0
  109. package/dist/components/ui/kuat-logo-lockup/kuat-logo-lockup.d.ts +17 -0
  110. package/dist/components/ui/kuat-radial-progress/index.d.ts +2 -0
  111. package/dist/components/ui/kuat-radial-progress/kuat-radial-progress.d.ts +16 -0
  112. package/dist/components/ui/radio/index.d.ts +4 -0
  113. package/dist/components/ui/radio/radio-field.d.ts +25 -0
  114. package/dist/components/ui/radio/radio.d.ts +7 -0
  115. package/dist/components/ui/select/constants.d.ts +19 -0
  116. package/dist/components/ui/select/index.d.ts +3 -0
  117. package/dist/components/ui/select/select.d.ts +53 -0
  118. package/dist/components/ui/separator/index.d.ts +2 -0
  119. package/dist/components/ui/separator/separator.d.ts +9 -0
  120. package/dist/components/ui/sonner/index.d.ts +4 -0
  121. package/dist/components/ui/sonner/sonner-content.d.ts +15 -0
  122. package/dist/components/ui/sonner/sonner.d.ts +21 -0
  123. package/dist/components/ui/switch/index.d.ts +4 -0
  124. package/dist/components/ui/switch/switch-field.d.ts +23 -0
  125. package/dist/components/ui/switch/switch.d.ts +5 -0
  126. package/dist/components/ui/textarea/index.d.ts +2 -0
  127. package/dist/components/ui/textarea/textarea.d.ts +9 -0
  128. package/dist/components/ui/toggle/constants.d.ts +4 -0
  129. package/dist/components/ui/toggle/index.d.ts +6 -0
  130. package/dist/components/ui/toggle/toggle-group.d.ts +11 -0
  131. package/dist/components/ui/toggle/toggle.d.ts +9 -0
  132. package/dist/field.d.ts +3 -0
  133. package/dist/icon-button.d.ts +3 -0
  134. package/dist/index.d.ts +47 -0
  135. package/dist/input.d.ts +3 -0
  136. package/dist/kuat-carousel.d.ts +2 -0
  137. package/dist/kuat-radial-progress.d.ts +7 -0
  138. package/dist/lib/react-node-compat.d.ts +7 -0
  139. package/dist/lib/utils.d.ts +3 -0
  140. package/dist/radio.d.ts +3 -0
  141. package/dist/select.d.ts +3 -0
  142. package/dist/sonner.d.ts +1 -0
  143. package/dist/style.css +1 -1
  144. package/dist/style.css.d.ts +2 -0
  145. package/dist/switch.d.ts +1 -0
  146. package/dist/test/setup.d.ts +1 -0
  147. package/dist/textarea.d.ts +3 -0
  148. package/dist/toggle-group.d.ts +3 -0
  149. package/dist/toggle.d.ts +3 -0
  150. package/package.json +4 -2
@@ -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)
@@ -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)
@@ -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)
@@ -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
@@ -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