@equal-experts/kuat-vue 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 (205) 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 +3 -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.vue.d.ts +26 -0
  73. package/dist/components/ui/accordion/AccordionContent.vue.d.ts +27 -0
  74. package/dist/components/ui/accordion/AccordionItem.vue.d.ts +27 -0
  75. package/dist/components/ui/accordion/AccordionTrigger.vue.d.ts +28 -0
  76. package/dist/components/ui/accordion/index.d.ts +4 -0
  77. package/dist/components/ui/alert-dialog/AlertDialog.vue.d.ts +26 -0
  78. package/dist/components/ui/alert-dialog/AlertDialogAction.vue.d.ts +27 -0
  79. package/dist/components/ui/alert-dialog/AlertDialogCancel.vue.d.ts +27 -0
  80. package/dist/components/ui/alert-dialog/AlertDialogContent.vue.d.ts +41 -0
  81. package/dist/components/ui/alert-dialog/AlertDialogDescription.vue.d.ts +27 -0
  82. package/dist/components/ui/alert-dialog/AlertDialogFooter.vue.d.ts +26 -0
  83. package/dist/components/ui/alert-dialog/AlertDialogHeader.vue.d.ts +26 -0
  84. package/dist/components/ui/alert-dialog/AlertDialogTitle.vue.d.ts +27 -0
  85. package/dist/components/ui/alert-dialog/AlertDialogTrigger.vue.d.ts +22 -0
  86. package/dist/components/ui/alert-dialog/index.d.ts +9 -0
  87. package/dist/components/ui/badge/Badge.vue.d.ts +49 -0
  88. package/dist/components/ui/badge/constants.d.ts +4 -0
  89. package/dist/components/ui/badge/index.d.ts +14 -0
  90. package/dist/components/ui/breadcrumb/Breadcrumb.vue.d.ts +34 -0
  91. package/dist/components/ui/breadcrumb/index.d.ts +2 -0
  92. package/dist/components/ui/breadcrumb/types.d.ts +8 -0
  93. package/dist/components/ui/button/Button.vue.d.ts +53 -0
  94. package/dist/components/ui/button/constants.d.ts +12 -0
  95. package/dist/components/ui/button/index.d.ts +12 -0
  96. package/dist/components/ui/button-group/ButtonGroup.vue.d.ts +43 -0
  97. package/dist/components/ui/button-group/ButtonGroupSeparator.vue.d.ts +32 -0
  98. package/dist/components/ui/button-group/ButtonGroupText.vue.d.ts +40 -0
  99. package/dist/components/ui/button-group/constants.d.ts +2 -0
  100. package/dist/components/ui/button-group/index.d.ts +14 -0
  101. package/dist/components/ui/carousel/Carousel.vue.d.ts +59 -0
  102. package/dist/components/ui/carousel/CarouselContent.vue.d.ts +25 -0
  103. package/dist/components/ui/carousel/CarouselItem.vue.d.ts +32 -0
  104. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +16 -0
  105. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +16 -0
  106. package/dist/components/ui/carousel/context.d.ts +26 -0
  107. package/dist/components/ui/carousel/index.d.ts +7 -0
  108. package/dist/components/ui/checkbox/Checkbox.vue.d.ts +13 -0
  109. package/dist/components/ui/checkbox/CheckboxField.vue.d.ts +68 -0
  110. package/dist/components/ui/checkbox/constants.d.ts +4 -0
  111. package/dist/components/ui/checkbox/index.d.ts +4 -0
  112. package/dist/components/ui/content-card/ContentCard.vue.d.ts +72 -0
  113. package/dist/components/ui/content-card/index.d.ts +1 -0
  114. package/dist/components/ui/field/Field.vue.d.ts +48 -0
  115. package/dist/components/ui/field/FieldContent.vue.d.ts +26 -0
  116. package/dist/components/ui/field/FieldDescription.vue.d.ts +26 -0
  117. package/dist/components/ui/field/FieldError.vue.d.ts +33 -0
  118. package/dist/components/ui/field/FieldGroup.vue.d.ts +26 -0
  119. package/dist/components/ui/field/FieldLabel.vue.d.ts +26 -0
  120. package/dist/components/ui/field/FieldLegend.vue.d.ts +43 -0
  121. package/dist/components/ui/field/FieldSeparator.vue.d.ts +26 -0
  122. package/dist/components/ui/field/FieldSet.vue.d.ts +26 -0
  123. package/dist/components/ui/field/FieldTitle.vue.d.ts +26 -0
  124. package/dist/components/ui/field/constants.d.ts +4 -0
  125. package/dist/components/ui/field/index.d.ts +12 -0
  126. package/dist/components/ui/icon-button/IconButton.vue.d.ts +62 -0
  127. package/dist/components/ui/icon-button/constants.d.ts +13 -0
  128. package/dist/components/ui/icon-button/index.d.ts +14 -0
  129. package/dist/components/ui/input/Input.vue.d.ts +34 -0
  130. package/dist/components/ui/input/constants.d.ts +2 -0
  131. package/dist/components/ui/input/index.d.ts +3 -0
  132. package/dist/components/ui/kuat-carousel/KuatCarousel.vue.d.ts +51 -0
  133. package/dist/components/ui/kuat-carousel/KuatCarouselContent.vue.d.ts +25 -0
  134. package/dist/components/ui/kuat-carousel/KuatCarouselItem.vue.d.ts +27 -0
  135. package/dist/components/ui/kuat-carousel/KuatCarouselNext.vue.d.ts +16 -0
  136. package/dist/components/ui/kuat-carousel/KuatCarouselPrevious.vue.d.ts +16 -0
  137. package/dist/components/ui/kuat-carousel/index.d.ts +6 -0
  138. package/dist/components/ui/kuat-header/EELogo.vue.d.ts +32 -0
  139. package/dist/components/ui/kuat-header/KuatHeader.vue.d.ts +56 -0
  140. package/dist/components/ui/kuat-header/constants.d.ts +83 -0
  141. package/dist/components/ui/kuat-header/index.d.ts +16 -0
  142. package/dist/components/ui/kuat-header/kuat-header.logic.d.ts +29 -0
  143. package/dist/components/ui/kuat-logo-lockup/EELogoIcon.vue.d.ts +18 -0
  144. package/dist/components/ui/kuat-logo-lockup/KuatLogoLockup.vue.d.ts +45 -0
  145. package/dist/components/ui/kuat-logo-lockup/constants.d.ts +4 -0
  146. package/dist/components/ui/kuat-logo-lockup/index.d.ts +4 -0
  147. package/dist/components/ui/kuat-radial-progress/KuatRadialProgress.vue.d.ts +52 -0
  148. package/dist/components/ui/kuat-radial-progress/constants.d.ts +4 -0
  149. package/dist/components/ui/kuat-radial-progress/index.d.ts +3 -0
  150. package/dist/components/ui/radio/RadioField.vue.d.ts +58 -0
  151. package/dist/components/ui/radio/RadioGroup.vue.d.ts +31 -0
  152. package/dist/components/ui/radio/RadioGroupItem.vue.d.ts +22 -0
  153. package/dist/components/ui/radio/constants.d.ts +4 -0
  154. package/dist/components/ui/radio/index.d.ts +5 -0
  155. package/dist/components/ui/select/KuatSelect.vue.d.ts +104 -0
  156. package/dist/components/ui/select/Select.vue.d.ts +28 -0
  157. package/dist/components/ui/select/SelectContent.vue.d.ts +52 -0
  158. package/dist/components/ui/select/SelectGroup.vue.d.ts +22 -0
  159. package/dist/components/ui/select/SelectItem.vue.d.ts +40 -0
  160. package/dist/components/ui/select/SelectLabel.vue.d.ts +27 -0
  161. package/dist/components/ui/select/SelectScrollDownButton.vue.d.ts +18 -0
  162. package/dist/components/ui/select/SelectScrollUpButton.vue.d.ts +18 -0
  163. package/dist/components/ui/select/SelectSeparator.vue.d.ts +18 -0
  164. package/dist/components/ui/select/SelectTrigger.vue.d.ts +72 -0
  165. package/dist/components/ui/select/SelectValue.vue.d.ts +18 -0
  166. package/dist/components/ui/select/constants.d.ts +18 -0
  167. package/dist/components/ui/select/index.d.ts +13 -0
  168. package/dist/components/ui/separator/Separator.vue.d.ts +35 -0
  169. package/dist/components/ui/separator/index.d.ts +1 -0
  170. package/dist/components/ui/sonner/KuatSonner.vue.d.ts +54 -0
  171. package/dist/components/ui/sonner/KuatSonnerContent.vue.d.ts +53 -0
  172. package/dist/components/ui/sonner/constants.d.ts +2 -0
  173. package/dist/components/ui/sonner/index.d.ts +7 -0
  174. package/dist/components/ui/sonner/toast.d.ts +17 -0
  175. package/dist/components/ui/switch/Switch.vue.d.ts +13 -0
  176. package/dist/components/ui/switch/SwitchField.vue.d.ts +68 -0
  177. package/dist/components/ui/switch/constants.d.ts +4 -0
  178. package/dist/components/ui/switch/index.d.ts +4 -0
  179. package/dist/components/ui/textarea/Textarea.vue.d.ts +24 -0
  180. package/dist/components/ui/textarea/constants.d.ts +2 -0
  181. package/dist/components/ui/textarea/index.d.ts +3 -0
  182. package/dist/components/ui/toggle/Toggle.vue.d.ts +42 -0
  183. package/dist/components/ui/toggle/constants.d.ts +4 -0
  184. package/dist/components/ui/toggle/index.d.ts +3 -0
  185. package/dist/components/ui/toggle-group/ToggleGroup.vue.d.ts +45 -0
  186. package/dist/components/ui/toggle-group/ToggleGroupItem.vue.d.ts +49 -0
  187. package/dist/components/ui/toggle-group/constants.d.ts +2 -0
  188. package/dist/components/ui/toggle-group/index.d.ts +4 -0
  189. package/dist/field.d.ts +3 -0
  190. package/dist/icon-button.d.ts +3 -0
  191. package/dist/index.d.ts +46 -0
  192. package/dist/input.d.ts +3 -0
  193. package/dist/kuat-carousel.d.ts +2 -0
  194. package/dist/lib/utils.d.ts +3 -0
  195. package/dist/radio.d.ts +3 -0
  196. package/dist/select.d.ts +3 -0
  197. package/dist/sonner.d.ts +1 -0
  198. package/dist/style.css +1 -1
  199. package/dist/style.css.d.ts +2 -0
  200. package/dist/switch.d.ts +1 -0
  201. package/dist/test/setup.d.ts +1 -0
  202. package/dist/textarea.d.ts +3 -0
  203. package/dist/toggle-group.d.ts +5 -0
  204. package/dist/toggle.d.ts +3 -0
  205. package/package.json +4 -2
@@ -0,0 +1,444 @@
1
+ ---
2
+ scope: general
3
+ ---
4
+
5
+ # Accessibility
6
+
7
+ Foundational accessibility requirements for Equal Experts content and products. These rules ensure products and services deliver the best experience for all users.
8
+
9
+ **Target: WCAG 2.2 Level AA compliance.**
10
+
11
+ ---
12
+
13
+ ## Quick reference
14
+
15
+ - **Standard:** WCAG 2.2 Level AA (legal baseline for many contexts).
16
+ - **Contrast:** Body text 4.5:1, large text/UI 3:1; never rely on colour alone for meaning.
17
+ - **Typography:** Min body 11pt (14px), line height 1.5; use relative units; support 200% zoom.
18
+ - **Motion:** Provide reduced-motion alternative; no auto-play without user control.
19
+ - **Images:** Meaningful images need alt text; decorative images need empty or role="presentation".
20
+ - **Links/buttons:** Descriptive labels; visible focus; keyboard operable.
21
+ - **Content:** Plain language; logical structure (headings, lists); person-first language.
22
+ - **Testing:** Use contrast checkers and automated a11y tools; test with keyboard and screen reader.
23
+
24
+ *Full detail follows.*
25
+
26
+ ---
27
+
28
+ ## Why Accessibility Matters
29
+
30
+ Accessibility is the practice of making information, activities, and environments sensible, meaningful, and usable for as many people as possible.
31
+
32
+ ### The Case for Accessibility
33
+
34
+ - **16% of the global population** (1.3 billion people) live with a significant disability
35
+ - **Legal requirements** - UK Public Sector organisations must create accessible products, websites, and services
36
+ - **Better UX for everyone** - Accessible design benefits older people, non-native English speakers, those with temporary disabilities, and situational limitations (bright sunlight, noisy environments)
37
+ - **Extended reach** - Accessible content reaches more users and improves overall satisfaction
38
+
39
+ ### Equal Experts Commitment
40
+
41
+ If we want clients to trust us on accessibility, we must lead by example. All content we produce—websites, documents, applications—should reflect our commitment to accessibility.
42
+
43
+ ---
44
+
45
+ ## WCAG Principles (POUR)
46
+
47
+ The Web Content Accessibility Guidelines are built on four principles:
48
+
49
+ | Principle | Description |
50
+ |-----------|-------------|
51
+ | **Perceivable** | Information must be presented in ways users can perceive using their senses |
52
+ | **Operable** | All users must be able to interact with interface components |
53
+ | **Understandable** | Users must be able to understand information and how to operate the UI |
54
+ | **Robust** | Content must work with assistive technologies and user agents |
55
+
56
+ ### Conformance Levels
57
+
58
+ | Level | Description |
59
+ |-------|-------------|
60
+ | A | Minimum conformance (bare minimum) |
61
+ | **AA** | Mid-range conformance (our target) |
62
+ | AAA | Highest conformance level |
63
+
64
+ **Equal Experts targets AA compliance** - this is the standard for most legal requirements.
65
+
66
+ ---
67
+
68
+ ## Visual Accessibility
69
+
70
+ Visual accessibility ensures that design choices don't exclude users with visual impairments, colour blindness, or other conditions that affect how they perceive content.
71
+
72
+ **Key principle:** Design should never rely solely on visual characteristics to convey meaning.
73
+
74
+ ### Colour Contrast
75
+
76
+ Sufficient contrast between text and background is essential for readability.
77
+
78
+ | Content Type | Minimum Ratio | Example |
79
+ |--------------|---------------|---------|
80
+ | Body text | 4.5:1 | Standard paragraphs, labels |
81
+ | Large text (18pt+ or 14pt bold) | 3:1 | Headings, large buttons |
82
+ | UI components | 3:1 | Borders, icons, focus indicators |
83
+ | Print materials | 7:1 | Higher due to printing variables |
84
+
85
+ Use contrast checking tools to verify ratios. See [Testing Tools](#testing-tools).
86
+
87
+ ### Colour Usage
88
+
89
+ **Never use colour alone to convey information.**
90
+
91
+ | Bad | Good |
92
+ |-----|------|
93
+ | Red text for errors | Red text + error icon + "Error:" prefix |
94
+ | Green for success | Green + checkmark icon + success message |
95
+ | Link only distinguished by colour | Link with underline + colour |
96
+
97
+ ### Status Indicators
98
+
99
+ When using colour for status (red/amber/green):
100
+
101
+ 1. **Add shapes** - Different shapes for each status (circle, triangle, square)
102
+ 2. **Add labels** - Text labels alongside colours
103
+ 3. **Include legend** - Always explain what colours mean
104
+ 4. **Consider colour blindness** - Red/green are commonly confused
105
+
106
+ ### Charts and Data Visualisation
107
+
108
+ - Use patterns or textures in addition to colours
109
+ - Ensure adjacent colours have sufficient contrast
110
+ - Provide data tables as alternatives to charts
111
+
112
+ ---
113
+
114
+ ## Typography Accessibility
115
+
116
+ ### Minimum Sizes
117
+
118
+ | Context | Minimum Size |
119
+ |---------|--------------|
120
+ | Body text | 11pt (14px) |
121
+ | Small text (captions, labels) | 10pt (12px) - use sparingly |
122
+ | Touch device body | 16px recommended |
123
+
124
+ ### Line Spacing
125
+
126
+ | Content Type | Line Height |
127
+ |--------------|-------------|
128
+ | Body copy | 1.5x font size |
129
+ | Headings | 1.2x font size |
130
+ | Dense UI (tables) | 1.3x minimum |
131
+
132
+ ### Text Scaling
133
+
134
+ - Text must be scalable to 200% without loss of content or functionality
135
+ - Use relative units (rem, em) not fixed pixels for font sizes
136
+ - Test layouts at 200% zoom
137
+
138
+ ### Typeface Selection
139
+
140
+ - Prefer sans-serif fonts for screen readability
141
+ - Avoid decorative fonts for body text
142
+ - Ensure consistent character spacing
143
+
144
+ ### Text Alignment
145
+
146
+ - **Left-align** body text (default)
147
+ - **Avoid justified** text - uneven spacing hinders readability
148
+ - **Centre-align** sparingly - only for short headings or CTAs
149
+
150
+ ---
151
+
152
+ ## Motion and Animation
153
+
154
+ ### Risks
155
+
156
+ - Flashing content can trigger epileptic seizures
157
+ - Excessive motion causes nausea/disorientation for some users
158
+ - Auto-playing content is distracting
159
+
160
+ ### Requirements
161
+
162
+ | Requirement | Implementation |
163
+ |-------------|----------------|
164
+ | No flashing | Never use content that flashes more than 3 times per second |
165
+ | Pause controls | All auto-playing content must have pause/stop controls |
166
+ | Reduced motion | Respect user preferences for reduced motion |
167
+ | Duration limits | Auto-playing content longer than 5 seconds needs controls |
168
+
169
+ ### GIFs and Animated Content
170
+
171
+ - Limit excessive movement
172
+ - Provide static fallback images where possible
173
+ - Never use GIFs for essential information
174
+
175
+ ---
176
+
177
+ ## Icons
178
+
179
+ ### Size Requirements
180
+
181
+ | Context | Minimum Size |
182
+ |---------|--------------|
183
+ | Touch targets | 44x44px minimum tap area |
184
+ | Visual icon | 24x24px minimum visible size |
185
+ | Dense UI | 20x20px with adequate spacing |
186
+
187
+ ### Accessibility Requirements
188
+
189
+ - **High contrast** - Icons must meet 3:1 contrast ratio
190
+ - **Universal symbols** - Use well-understood icons (magnifying glass for search)
191
+ - **Consistent style** - Same visual style throughout application
192
+ - **Text alternatives** - Provide labels or text alternatives for meaningful icons
193
+ - **Decorative icons** - Mark purely decorative icons appropriately
194
+
195
+ ---
196
+
197
+ ## Images
198
+
199
+ ### Background Images
200
+
201
+ - **Never place text on busy backgrounds**
202
+ - Use colour overlays to improve contrast when text over images is necessary
203
+ - Test text legibility across the full image area
204
+
205
+ ### Inclusive Imagery
206
+
207
+ - Represent diverse ages, backgrounds, and perspectives
208
+ - Prioritise diversity year-round, not just during awareness events
209
+ - Avoid stereotypical representations
210
+
211
+ ### Decorative vs Meaningful Images
212
+
213
+ | Type | Alt Text | Example |
214
+ |------|----------|---------|
215
+ | Decorative | Empty or none | Background patterns, visual flourishes |
216
+ | Meaningful | Descriptive text | Photos, diagrams, charts |
217
+ | Functional | Describes action | Icons in buttons |
218
+
219
+ ---
220
+
221
+ ## Content Accessibility
222
+
223
+ Accessible content can be understood by everyone—including people with cognitive disabilities, non-native English speakers, and those using assistive technologies.
224
+
225
+ **Key principle:** Write content that users can understand the first time they read or hear it.
226
+
227
+ ### Plain Language
228
+
229
+ | Do | Don't |
230
+ |----|-------|
231
+ | Use short sentences | Write long, complex sentences |
232
+ | Use active voice | Use passive voice |
233
+ | Use common words | Use jargon or technical terms without explanation |
234
+ | Be direct and specific | Be vague or ambiguous |
235
+ | Use concrete examples | Use abstract concepts without illustration |
236
+
237
+ ### Readability Targets
238
+
239
+ - Aim for reading level that most users can understand first time
240
+ - Break complex concepts into digestible chunks
241
+ - Test with readability tools (see [Testing Tools](#testing-tools))
242
+
243
+ ### Content Structure
244
+
245
+ **Headings:**
246
+ - Descriptive headings that accurately describe the content below
247
+ - Hierarchical structure - H1 → H2 → H3 (never skip levels)
248
+ - One H1 per page - the main page title
249
+ - Headings help users navigate and scan content
250
+
251
+ **Paragraphs:**
252
+ - Keep paragraphs short - 3-4 sentences maximum
253
+ - One idea per paragraph
254
+ - Avoid walls of text - dense blocks are hard to read
255
+
256
+ **Lists:**
257
+ - Use bullet points for unordered items
258
+ - Use numbered lists for sequential steps
259
+ - Keep list items concise
260
+
261
+ **Reading Order:**
262
+ - Content should make sense when read linearly
263
+ - Don't rely on visual layout to convey meaning
264
+
265
+ ---
266
+
267
+ ## Alternative Text
268
+
269
+ ### When Alt Text is Required
270
+
271
+ | Image Type | Alt Text Required | Approach |
272
+ |------------|-------------------|----------|
273
+ | Informative images | Yes | Describe content and purpose |
274
+ | Decorative images | No | Mark as decorative |
275
+ | Functional images (buttons, links) | Yes | Describe the action |
276
+ | Charts and diagrams | Yes | Summarize data, link to full data |
277
+ | Images with text | Yes | Include all text from image |
278
+
279
+ ### Writing Good Alt Text
280
+
281
+ | Do | Don't |
282
+ |----|-------|
283
+ | Describe content and purpose | Start with "Image of..." or "Picture of..." |
284
+ | Be concise (under 125 characters) | Write lengthy descriptions |
285
+ | Include text that appears in image | Describe visual appearance only |
286
+ | Provide context for charts | Just say "Chart" or "Graph" |
287
+
288
+ ### Examples
289
+
290
+ | Context | Bad Alt Text | Good Alt Text |
291
+ |---------|--------------|---------------|
292
+ | Company logo | "Logo" | "Equal Experts" |
293
+ | Chart | "Bar chart" | "Monthly sales chart showing 40% growth in Q4" |
294
+ | Product photo | "Image of laptop" | "MacBook Pro with dashboard displayed" |
295
+ | Icon button | "Icon" | "Search" |
296
+
297
+ ### Complex Images
298
+
299
+ For complex diagrams or charts:
300
+
301
+ 1. Provide brief alt text summarizing the image
302
+ 2. Include detailed description in surrounding text or linked page
303
+ 3. For data charts, provide accessible data table alternative
304
+
305
+ ---
306
+
307
+ ## Links and Buttons
308
+
309
+ ### Link Text
310
+
311
+ Links should tell users where they're going and why.
312
+
313
+ | Bad | Good |
314
+ |-----|------|
315
+ | "Click here" | "View our pricing plans" |
316
+ | "Read more" | "Read more about accessibility guidelines" |
317
+ | "Learn more" | "Learn more about our consulting services" |
318
+ | URL as link text | Descriptive text for the destination |
319
+
320
+ ### Link Visibility
321
+
322
+ - Links must be visually distinct from regular text
323
+ - Use **underline** plus colour change
324
+ - Don't rely on colour alone
325
+
326
+ ### Button Labels
327
+
328
+ - Describe the action clearly
329
+ - Use verbs: "Submit", "Save", "Delete", "Cancel"
330
+ - Be specific: "Save changes" not just "Save"
331
+ - Match user expectation to actual outcome
332
+
333
+ ---
334
+
335
+ ## Abbreviations and Acronyms
336
+
337
+ ### First Use
338
+
339
+ Always spell out abbreviations on first use:
340
+
341
+ - "Artificial Intelligence (AI)" - then use "AI" thereafter
342
+ - "Application Programming Interface (API)"
343
+ - "User Experience (UX)"
344
+
345
+ ### Screen Reader Considerations
346
+
347
+ - Use capitals for abbreviations: `HMRC` not `Hmrc`
348
+ - Screen readers may mispronounce lowercase abbreviations as words
349
+
350
+ ---
351
+
352
+ ## Text Formatting
353
+
354
+ ### Capitalisation
355
+
356
+ | Do | Don't |
357
+ |----|-------|
358
+ | Use sentence case | USE ALL CAPS FOR EMPHASIS |
359
+ | Capitalise proper nouns | use alternating caps (LiKe ThIs) |
360
+ | Use bold for emphasis | Rely on caps for emphasis |
361
+
362
+ **Why:** Screen readers cannot convey the context of ALL CAPS. Alternating caps is read as gibberish.
363
+
364
+ ### Semantic Formatting
365
+
366
+ - Use appropriate markup for important text, not just bold styling
367
+ - Use appropriate markup for emphasis, not just italic styling
368
+ - Use semantic lists, not manual bullet characters
369
+
370
+ ---
371
+
372
+ ## Inclusive Language
373
+
374
+ ### Guidelines
375
+
376
+ - Use language that is respectful and free of bias
377
+ - Avoid exclusionary terms or outdated phrases
378
+ - Consider diverse audiences and perspectives
379
+ - When in doubt, research current preferred terminology
380
+
381
+ ### Person-First Language
382
+
383
+ - "Person with a disability" not "disabled person"
384
+ - "User who is blind" not "blind user"
385
+ - Focus on the person, not the condition
386
+
387
+ ---
388
+
389
+ ## Multimedia Content
390
+
391
+ ### Video
392
+
393
+ - **Captions required** - Essential for deaf/hard-of-hearing users
394
+ - 85% of social media videos are watched without sound
395
+ - Captions can be burned-in or added via platform tools
396
+
397
+ ### Audio
398
+
399
+ - **Transcripts required** - Full text alternative for audio content
400
+ - Helps users who can't listen (noisy environment, preference)
401
+ - Benefits SEO and searchability
402
+
403
+ ### Auto-Playing Content
404
+
405
+ - Provide pause/stop controls
406
+ - Never auto-play audio without user consent
407
+ - Limit duration of auto-playing visual content
408
+
409
+ ---
410
+
411
+ ## Testing Tools
412
+
413
+ ### Colour Contrast
414
+
415
+ - [WebAIM Contrast Checker](https://webaim.org/resources/contrastchecker/) - Text contrast
416
+ - [Contrast Checker](https://contrastchecker.com/) - Images
417
+ - [Brandwood A11y](https://www.brandwood.com/a11y/) - Text over images
418
+
419
+ ### Automated Testing
420
+
421
+ - [WAVE Browser Extension](https://wave.webaim.org/extension/) - Page accessibility evaluation
422
+ - [Axe DevTools](https://www.deque.com/axe/devtools/) - Comprehensive accessibility testing
423
+
424
+ ### Content Readability
425
+
426
+ - [WebFX Readability Test](https://www.webfx.com/tools/read-able/)
427
+ - [Hemingway Editor](https://hemingwayapp.com/)
428
+
429
+ ---
430
+
431
+ ## Further Reading
432
+
433
+ - [Introduction to Web Accessibility (W3C)](https://www.w3.org/WAI/fundamentals/accessibility-intro/)
434
+ - [WCAG 2.2 Guidelines](https://www.w3.org/TR/WCAG22/)
435
+ - [UK Government Accessibility Guidelines](https://gcs.civilservice.gov.uk/guidance/digital-communication/planning-creating-and-publishing-accessible-website-content/)
436
+
437
+ ---
438
+
439
+ ## Related Documentation
440
+
441
+ - [Colours](./design/colours.md) - Brand colour palette and contrast
442
+ - [Typography](./design/typography.md) - Font families and type scale
443
+ - [Content](./content/README.md) - Writing style and tone
444
+ - [Web Technical Accessibility](../types/web/product/accessibility.md) - Implementation details
@@ -0,0 +1,99 @@
1
+ # Equal Experts Brand
2
+
3
+ Core brand principles and identity guidelines for Equal Experts.
4
+
5
+ ---
6
+
7
+ ## Brand Identity
8
+
9
+ Equal Experts is a network of experienced software consultants, helping organisations deliver better digital products and services.
10
+
11
+ **Key Brand Attributes:**
12
+ - **Expert** - Deep technical expertise and experience
13
+ - **Equal** - Collaborative, flat structure, no hierarchies
14
+ - **Honest** - Direct, transparent communication
15
+ - **Pragmatic** - Practical solutions over theoretical perfection
16
+
17
+ ---
18
+
19
+ ## Brand Values
20
+
21
+ ### 1. Expertise Through Experience
22
+
23
+ We hire only experienced consultants. Our expertise comes from years of hands-on work, not certifications or titles.
24
+
25
+ ### 2. Equality and Collaboration
26
+
27
+ Everyone is equal. We work alongside clients as partners, not vendors. No account managers, no hierarchy - just experts working together.
28
+
29
+ ### 3. Honesty and Transparency
30
+
31
+ We tell clients what they need to hear, not what they want to hear. We're direct about risks, challenges, and realistic outcomes.
32
+
33
+ ### 4. Pragmatism Over Perfection
34
+
35
+ We focus on delivering value, not following processes for their own sake. We choose practical solutions that work in the real world.
36
+
37
+ ---
38
+
39
+ ## Brand Voice
40
+
41
+ ### Tone Characteristics
42
+
43
+ | Characteristic | Description |
44
+ |----------------|-------------|
45
+ | Confident | We know our craft and speak with authority |
46
+ | Humble | We acknowledge what we don't know |
47
+ | Direct | We get to the point without jargon |
48
+ | Helpful | We focus on enabling others to succeed |
49
+ | Pragmatic | We favour practical over theoretical |
50
+
51
+ ### Voice Do's
52
+
53
+ - Be clear and direct
54
+ - Use plain language
55
+ - Show expertise through clarity, not complexity
56
+ - Acknowledge uncertainty when appropriate
57
+ - Focus on outcomes and value
58
+
59
+ ### Voice Don'ts
60
+
61
+ - Don't use buzzwords without substance
62
+ - Don't overclaim or overpromise
63
+ - Don't hide behind jargon
64
+ - Don't be condescending
65
+ - Don't use corporate speak
66
+
67
+ ---
68
+
69
+ ## Brand Positioning
70
+
71
+ **What we are:**
72
+ - A network of experienced software consultants
73
+ - Partners who work alongside client teams
74
+ - Experts who deliver, not just advise
75
+
76
+ **What we're not:**
77
+ - A traditional consultancy with hierarchies
78
+ - A body shop providing resources
79
+ - Theorists who don't get hands dirty
80
+
81
+ ---
82
+
83
+ ## Brand Consistency
84
+
85
+ When representing Equal Experts:
86
+
87
+ 1. **Use official brand assets** - Logo, colors, typography from brand guidelines
88
+ 2. **Maintain voice consistency** - Apply brand voice across all touchpoints
89
+ 3. **Respect the brand** - Don't modify, distort, or misrepresent
90
+ 4. **Be authentic** - Represent the real Equal Experts culture
91
+
92
+ ---
93
+
94
+ ## Related Documentation
95
+
96
+ - [Logo Usage](./logo.md) - Logo variants, sizing, placement
97
+ - [Colours](./design/colours.md) - Brand color palette
98
+ - [Typography](./design/typography.md) - Brand fonts
99
+ - [Content](./content/README.md) - Writing style and tone
@@ -0,0 +1,28 @@
1
+ # Content Rules
2
+
3
+ Writing style, voice, tone, and usage for Equal Experts. Apply to all content before platform-specific guidance.
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ These rules cover how we write: voice and tone, style principles, formatting, numbers, and punctuation. Load [voice-and-tone.md](./voice-and-tone.md) first; use the others as needed for the task.
10
+
11
+ ---
12
+
13
+ ## Files
14
+
15
+ | File | Description |
16
+ |------|-------------|
17
+ | [voice-and-tone.md](./voice-and-tone.md) | Voice, tone, audience, quality checklist, AI content |
18
+ | [writing-style.md](./writing-style.md) | Active voice, plain language, contractions, conciseness |
19
+ | [formatting.md](./formatting.md) | Capitalisation, bold/italic, headings, links, lists, acronyms |
20
+ | [numbers.md](./numbers.md) | Dates, times, currency, percentages, units |
21
+ | [punctuation.md](./punctuation.md) | Commas, dashes, apostrophes, quotation marks |
22
+
23
+ ---
24
+
25
+ ## Related
26
+
27
+ - [Foundations](../README.md) – Brand, logo, accessibility
28
+ - [Design](../design/README.md) – Visual design and tokens
@@ -0,0 +1,93 @@
1
+ # Formatting
2
+
3
+ How to use bold, capitalisation, headings, links, lists, and abbreviations in Equal Experts content.
4
+
5
+ ---
6
+
7
+ ## Quick Reference
8
+
9
+ - **Capitalisation:** Sentence case for headings, buttons, and body copy; title case only for proper nouns and product names
10
+ - **Bold:** Use sparingly for emphasis or key terms
11
+ - **Links:** Descriptive link text, not "click here" or raw URLs
12
+ - **Lists:** Use when items are parallel; keep items concise
13
+ - **Acronyms:** Spell out on first use, then use the short form
14
+
15
+ ---
16
+
17
+ ## Capitalisation
18
+
19
+ ### Sentence case
20
+
21
+ Use sentence case for:
22
+ - Headings and subheadings
23
+ - Button and link labels
24
+ - List items
25
+ - Body copy
26
+
27
+ **Examples:**
28
+ "Getting started"
29
+ "Save and continue"
30
+ "Contact the team"
31
+
32
+ ### Title case
33
+
34
+ Reserve for:
35
+ - Proper nouns (Equal Experts, product names)
36
+ - Official titles when they are the full name of something
37
+
38
+ Do not use title case for general headings or UI labels.
39
+
40
+ ---
41
+
42
+ ## Bold and Italic
43
+
44
+ - **Bold:** Use for a small number of key terms or one-off emphasis. Don't bold whole sentences or paragraphs.
45
+ - *Italic:* Use for titles of works, technical terms on first use if needed, or subtle emphasis. Use sparingly in UI copy.
46
+
47
+ ---
48
+
49
+ ## Headings
50
+
51
+ - One H1 per page or screen (the main title)
52
+ - Use a logical hierarchy: H1 → H2 → H3; don't skip levels
53
+ - Make headings descriptive so they work as a scan of the content
54
+ - Prefer sentence case
55
+
56
+ ---
57
+
58
+ ## Links
59
+
60
+ - Link text should describe the destination or action
61
+ - Avoid "click here", "read more", "learn more" without context
62
+
63
+ | Prefer | Avoid |
64
+ |--------|--------|
65
+ | Read the accessibility guidelines | Click here for guidelines |
66
+ | Pricing plans | Learn more |
67
+ | Contact the team | https://example.com/contact |
68
+
69
+ ---
70
+
71
+ ## Lists
72
+
73
+ - Use bullet lists for unordered items
74
+ - Use numbered lists for steps or ranked items
75
+ - Keep list items parallel in structure
76
+ - Start with a lead-in sentence if it helps; don't repeat the same lead-in word in every item when not needed
77
+ - Prefer sentence case and consistent punctuation (full stops only if items are full sentences)
78
+
79
+ ---
80
+
81
+ ## Abbreviations and Acronyms
82
+
83
+ - Spell out on first use with the short form in parentheses: "Application Programming Interface (API)"
84
+ - Use the short form consistently after that
85
+ - For well-known terms in your audience (e.g. API, UX), first-use expansion is still helpful in public-facing or mixed-audience content
86
+
87
+ ---
88
+
89
+ ## Related Documentation
90
+
91
+ - [Voice and tone](./voice-and-tone.md)
92
+ - [Writing style](./writing-style.md)
93
+ - [Numbers](./numbers.md) - Dates, currency, units