@equal-experts/kuat-react 0.13.0 → 0.14.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +55 -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 +23 -0
  8. package/agent-docs/components/kuat-header.md +27 -0
  9. package/agent-docs/external/kuat-agent-rules/reference/accessibility/README.md +7 -0
  10. package/agent-docs/external/kuat-agent-rules/reference/accessibility/accessibility.md +446 -0
  11. package/agent-docs/external/kuat-agent-rules/reference/brand/README.md +9 -0
  12. package/agent-docs/external/kuat-agent-rules/reference/brand/brand.md +109 -0
  13. package/agent-docs/external/kuat-agent-rules/reference/brand/logo.md +152 -0
  14. package/agent-docs/external/kuat-agent-rules/reference/brand/voice-and-tone.md +166 -0
  15. package/agent-docs/external/kuat-agent-rules/reference/content/README.md +12 -0
  16. package/agent-docs/external/kuat-agent-rules/reference/content/formatting.md +120 -0
  17. package/agent-docs/external/kuat-agent-rules/reference/content/numbers.md +87 -0
  18. package/agent-docs/external/kuat-agent-rules/reference/content/punctuation.md +94 -0
  19. package/agent-docs/external/kuat-agent-rules/reference/content/writing-style.md +96 -0
  20. package/agent-docs/external/kuat-agent-rules/reference/design-language/README.md +11 -0
  21. package/agent-docs/external/kuat-agent-rules/reference/design-language/borders.md +160 -0
  22. package/agent-docs/external/kuat-agent-rules/reference/design-language/colours.md +201 -0
  23. package/agent-docs/external/kuat-agent-rules/reference/design-language/design-language.md +117 -0
  24. package/agent-docs/external/kuat-agent-rules/reference/design-language/spacing.md +131 -0
  25. package/agent-docs/external/kuat-agent-rules/reference/design-language/tokens/README.md +29 -0
  26. package/agent-docs/external/kuat-agent-rules/reference/design-language/tokens/colors.tokens.json +84 -0
  27. package/agent-docs/external/kuat-agent-rules/reference/design-language/typography.md +156 -0
  28. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-marketing/README.md +10 -0
  29. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-marketing/content/README.md +26 -0
  30. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-marketing/content/blog-posts.md +29 -0
  31. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-marketing/content/marketing-content.md +61 -0
  32. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-marketing/content/seo.md +40 -0
  33. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-marketing/emails.md +68 -0
  34. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-marketing/patterns/README.md +7 -0
  35. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-marketing/patterns/marketing-pages.md +368 -0
  36. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-marketing/website.md +154 -0
  37. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/README.md +16 -0
  38. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/accessibility.md +392 -0
  39. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/component-decision-tree.md +248 -0
  40. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/component-registry.md +49 -0
  41. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/content/README.md +29 -0
  42. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/content/actions.md +45 -0
  43. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/content/confirmations.md +51 -0
  44. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/content/empty-states.md +37 -0
  45. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/content/errors.md +48 -0
  46. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/content/forms.md +68 -0
  47. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/content/product-content.md +128 -0
  48. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/design.md +177 -0
  49. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/emails.md +65 -0
  50. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/patterns/README.md +10 -0
  51. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/patterns/authentication.md +303 -0
  52. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/patterns/dashboards.md +313 -0
  53. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/patterns/documentation.md +333 -0
  54. package/agent-docs/external/kuat-agent-rules/reference/media-types/web-product/patterns/forms.md +361 -0
  55. package/agent-docs/kuat-docs/rules/README.md +155 -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,131 @@
1
+ # Spacing Rules
2
+
3
+ Spacing specifications for Equal Experts. This document defines the spacing scale, patterns, and usage guidelines.
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ The design system uses a **4px base unit** for consistent, predictable spacing.
10
+
11
+ **Key Principle:** Use spacing as the primary tool for visual hierarchy and separation. Prefer spacing over borders when possible.
12
+
13
+ ---
14
+
15
+ ## Spacing Scale
16
+
17
+ Each unit = 4px:
18
+
19
+ | Unit | Pixels | Usage |
20
+ |------|--------|-------|
21
+ | 0 | 0px | No spacing |
22
+ | 0.5 | 2px | Tight spacing, fine adjustments |
23
+ | 1 | 4px | Minimal spacing, tight groups |
24
+ | 1.5 | 6px | Small spacing |
25
+ | 2 | 8px | Small spacing, compact layouts |
26
+ | 3 | 12px | Medium spacing |
27
+ | 4 | 16px | Standard spacing (default) |
28
+ | 5 | 20px | Medium-large spacing |
29
+ | 6 | 24px | Large spacing, section separation |
30
+ | 8 | 32px | Extra large, major sections |
31
+ | 10 | 40px | Very large spacing |
32
+ | 12 | 48px | Maximum spacing, page sections |
33
+ | 16 | 64px | Hero spacing, large sections |
34
+ | 20 | 80px | Maximum hero spacing |
35
+ | 24 | 96px | Ultra large spacing |
36
+
37
+ ---
38
+
39
+ ## Common Spacing Patterns
40
+
41
+ ### Content Padding
42
+
43
+ | Context | Spacing | Pixels |
44
+ |---------|---------|--------|
45
+ | Tight padding | 4 | 16px |
46
+ | Standard padding | 6 | 24px |
47
+ | Large padding | 8 | 32px |
48
+ | Hero/feature areas | 12-16 | 48-64px |
49
+
50
+ ### Section Spacing
51
+
52
+ | Type | Spacing | Pixels |
53
+ |------|---------|--------|
54
+ | Tight (related content) | 4 | 16px |
55
+ | Standard sections | 6 | 24px |
56
+ | Large sections | 8 | 32px |
57
+ | Major page sections | 12 | 48px |
58
+
59
+ ### Element Spacing
60
+
61
+ | Relationship | Spacing | Pixels |
62
+ |--------------|---------|--------|
63
+ | Tightly related elements | 2-4 | 8-16px |
64
+ | Related groups | 6-8 | 24-32px |
65
+ | Distinct sections | 12-16 | 48-64px |
66
+
67
+ ---
68
+
69
+ ## Spacing Relationships
70
+
71
+ Use consistent spacing relationships:
72
+
73
+ | Relationship | Spacing |
74
+ |--------------|---------|
75
+ | Tightly related elements | 8-16px |
76
+ | Component groups | 24-32px |
77
+ | Major sections | 48-64px |
78
+
79
+ **Rule of thumb:** Related items have smaller spacing; distinct sections have larger spacing.
80
+
81
+ ---
82
+
83
+ ## Usage Guidelines
84
+
85
+ ### Do's
86
+
87
+ 1. **Use the spacing scale** - Stick to defined values (4, 8, 12, 16, 24, 32, 48)
88
+ 2. **Prefer spacing over borders** - Create separation with space first
89
+ 3. **Maintain relationships** - Smaller spacing for related items, larger for sections
90
+ 4. **Be consistent** - Same spacing patterns for similar content
91
+ 5. **Use white space intentionally** - It creates visual breathing room
92
+
93
+ ### Don'ts
94
+
95
+ 1. **Don't use arbitrary values** - Never use random pixel values
96
+ 2. **Don't mix spacing systems** - Use only the defined scale
97
+ 3. **Don't overuse spacing** - Excessive spacing breaks visual flow
98
+ 4. **Don't ignore hierarchy** - Spacing communicates relationships
99
+ 5. **Don't be afraid of white space** - It improves readability
100
+
101
+ ---
102
+
103
+ ## Spacing vs Borders
104
+
105
+ **Prefer spacing when:**
106
+ - Creating separation between related content
107
+ - Establishing visual hierarchy
108
+ - Adding breathing room
109
+
110
+ **Use borders when:**
111
+ - Spacing alone is insufficient
112
+ - Defining interactive element boundaries
113
+ - Indicating state changes
114
+
115
+ ---
116
+
117
+ ## Platform-Specific Spacing
118
+
119
+ For platform-specific spacing guidance:
120
+
121
+ - **Web product** - See [media-types/web-product/](../media-types/web-product/)
122
+ - **Web marketing** - See [media-types/web-marketing/](../media-types/web-marketing/)
123
+ - **Slides** - See [media-types/slides/](../media-types/slides/)
124
+ - **Graphics** - See [media-types/imagery/patterns/graphics/](../media-types/imagery/patterns/graphics/)
125
+
126
+ ---
127
+
128
+ ## Related Documentation
129
+
130
+ - [Borders](./borders.md) - Border philosophy and specifications
131
+ - [Typography](./typography.md) - Text spacing
@@ -0,0 +1,29 @@
1
+ # Design tokens — source of truth
2
+
3
+ This folder holds the **canonical design tokens** for the Equal Experts design system, **upstream** in `kuat-agent-rules`. It is the single source of truth; everything else is generated from it.
4
+
5
+ - **`colors.tokens.json`** — brand colour palettes (EE Blue, Tech Blue, Transform Teal, Equal Ember) + aliases, in [W3C Design Tokens](https://tr.designtokens.org/format/) format. `$value` is hex; OKLCH is preserved in `$extensions`.
6
+
7
+ ## Generated artifacts (do not hand-edit — regenerate from here)
8
+
9
+ | Artifact | Repo | Note |
10
+ |----------|------|------|
11
+ | `reference/design-language/colours.md` | kuat-agent-rules | human-readable mirror |
12
+ | `@equal-experts/kuat-core` `src/variables.css` | kuat-mono (**downstream**) | CSS implementation; consumes these tokens via the upstream→mono sync |
13
+
14
+ ## Rules
15
+
16
+ - **Change colours here, then regenerate.** Never hand-edit `colours.md` or `variables.css` — they drift (that's how EE Blue became `#0066CC`). The drift check fails if a generated artifact diverges from these tokens.
17
+ - **Direction is one-way:** tokens (upstream) → `colours.md` + kuat-core (downstream). Never generate these tokens *from* kuat-core.
18
+ - **Support scales** (slate/red/indigo) are not brand colours and live only in kuat-core.
19
+
20
+ ## How to regenerate (Phase 7)
21
+
22
+ ```bash
23
+ npm run tokens:generate # rewrite reference/design-language/colours.md from this token file
24
+ npm run tokens:check # CI drift gate — exits 1 if colours.md diverges from the tokens
25
+ ```
26
+
27
+ - The generator is `skills/scripts/generate-tokens.mjs`; `colours.md` carries a `GENERATED FILE — DO NOT EDIT BY HAND` banner. Prose lives in the generator template — change it there and regenerate.
28
+ - `tokens:check` runs in `.github/workflows/drift-check.yml` and inside the reference review gate (`npm run reference:check`).
29
+ - The **downstream** `@equal-experts/kuat-core` `variables.css` half is generated in **kuat-mono** from the synced tokens (Phase 7 Run B — see `docs/migration/phase-7-kuat-mono-handoff.md`). The contributor workflow for colour changes is the repo-local `generate-tokens` skill (`.claude/skills/generate-tokens/`).
@@ -0,0 +1,84 @@
1
+ {
2
+ "$schema": "https://tr.designtokens.org/format/",
3
+ "$description": "Equal Experts brand COLOUR tokens — the SINGLE SOURCE OF TRUTH (upstream, in kuat-agent-rules). Downstream artifacts are GENERATED from this file: reference/design-language/colours.md (human-readable) and @equal-experts/kuat-core src/variables.css (CSS). Never hand-edit those; change colours HERE. kuat-core is downstream — do not invert. Support scales (slate/red/indigo) are NOT brand colours and live only in kuat-core. Format: W3C Design Tokens; $value is hex, oklch preserved in $extensions.",
4
+ "color": {
5
+ "ee-blue": {
6
+ "$description": "EE Blue — primary brand colour (trust, technology). Scale 50 (light) → 950 (dark).",
7
+ "50": { "$type": "color", "$value": "#e6f5fc", "$extensions": { "oklch": "oklch(0.945 0.028 237.5)" } },
8
+ "100": { "$type": "color", "$value": "#b3e2f7", "$extensions": { "oklch": "oklch(0.885 0.055 237.5)" } },
9
+ "200": { "$type": "color", "$value": "#80cff2", "$extensions": { "oklch": "oklch(0.825 0.082 237.5)" } },
10
+ "300": { "$type": "color", "$value": "#4dbced", "$extensions": { "oklch": "oklch(0.765 0.109 237.5)" } },
11
+ "400": { "$type": "color", "$value": "#26a8e3", "$extensions": { "oklch": "oklch(0.705 0.136 237.5)" } },
12
+ "500": { "$type": "color", "$value": "#1795d4", "$extensions": { "oklch": "oklch(0.645 0.163 237.5)" } },
13
+ "600": { "$type": "color", "$value": "#1378ae", "$extensions": { "oklch": "oklch(0.585 0.145 237.5)" } },
14
+ "700": { "$type": "color", "$value": "#105c88", "$extensions": { "oklch": "oklch(0.525 0.127 237.5)" } },
15
+ "800": { "$type": "color", "$value": "#0c4062", "$extensions": { "oklch": "oklch(0.365 0.109 237.5)" } },
16
+ "900": { "$type": "color", "$value": "#08243c", "$extensions": { "oklch": "oklch(0.245 0.082 237.5)" } },
17
+ "950": { "$type": "color", "$value": "#04121e", "$extensions": { "oklch": "oklch(0.145 0.055 237.5)" } }
18
+ },
19
+ "tech-blue": {
20
+ "$description": "Tech Blue — dark/structural (navigation, sidebar, depth).",
21
+ "50": { "$type": "color", "$value": "#e8eef3", "$extensions": { "oklch": "oklch(0.935 0.015 240.0)" } },
22
+ "100": { "$type": "color", "$value": "#bdcfdc", "$extensions": { "oklch": "oklch(0.835 0.030 240.0)" } },
23
+ "200": { "$type": "color", "$value": "#92b0c5", "$extensions": { "oklch": "oklch(0.735 0.045 240.0)" } },
24
+ "300": { "$type": "color", "$value": "#6791ae", "$extensions": { "oklch": "oklch(0.635 0.060 240.0)" } },
25
+ "400": { "$type": "color", "$value": "#447496", "$extensions": { "oklch": "oklch(0.535 0.075 240.0)" } },
26
+ "500": { "$type": "color", "$value": "#22567c", "$extensions": { "oklch": "oklch(0.435 0.090 240.0)" } },
27
+ "600": { "$type": "color", "$value": "#1b4563", "$extensions": { "oklch": "oklch(0.365 0.080 240.0)" } },
28
+ "700": { "$type": "color", "$value": "#15354a", "$extensions": { "oklch": "oklch(0.295 0.070 240.0)" } },
29
+ "800": { "$type": "color", "$value": "#0e2431", "$extensions": { "oklch": "oklch(0.205 0.060 240.0)" } },
30
+ "900": { "$type": "color", "$value": "#071218", "$extensions": { "oklch": "oklch(0.125 0.040 240.0)" } },
31
+ "950": { "$type": "color", "$value": "#03090c", "$extensions": { "oklch": "oklch(0.075 0.025 240.0)" } }
32
+ },
33
+ "transform-teal": {
34
+ "$description": "Transform Teal — secondary (transformation, growth).",
35
+ "50": { "$type": "color", "$value": "#e9f6f6", "$extensions": { "oklch": "oklch(0.945 0.020 185.0)" } },
36
+ "100": { "$type": "color", "$value": "#bfe7e7", "$extensions": { "oklch": "oklch(0.885 0.040 185.0)" } },
37
+ "200": { "$type": "color", "$value": "#95d8d9", "$extensions": { "oklch": "oklch(0.825 0.060 185.0)" } },
38
+ "300": { "$type": "color", "$value": "#6bc9ca", "$extensions": { "oklch": "oklch(0.765 0.080 185.0)" } },
39
+ "400": { "$type": "color", "$value": "#48b8b9", "$extensions": { "oklch": "oklch(0.705 0.100 185.0)" } },
40
+ "500": { "$type": "color", "$value": "#269c9e", "$extensions": { "oklch": "oklch(0.645 0.120 185.0)" } },
41
+ "600": { "$type": "color", "$value": "#1f7d7e", "$extensions": { "oklch": "oklch(0.545 0.105 185.0)" } },
42
+ "700": { "$type": "color", "$value": "#175e5f", "$extensions": { "oklch": "oklch(0.445 0.090 185.0)" } },
43
+ "800": { "$type": "color", "$value": "#103f3f", "$extensions": { "oklch": "oklch(0.305 0.075 185.0)" } },
44
+ "900": { "$type": "color", "$value": "#081f20", "$extensions": { "oklch": "oklch(0.185 0.055 185.0)" } },
45
+ "950": { "$type": "color", "$value": "#040f10", "$extensions": { "oklch": "oklch(0.105 0.035 185.0)" } }
46
+ },
47
+ "equal-ember": {
48
+ "$description": "Equal Ember — warm accent (energy, attention; use sparingly).",
49
+ "50": { "$type": "color", "$value": "#fff3e6", "$extensions": { "oklch": "oklch(0.975 0.035 65.0)" } },
50
+ "100": { "$type": "color", "$value": "#ffdbb3", "$extensions": { "oklch": "oklch(0.925 0.070 65.0)" } },
51
+ "200": { "$type": "color", "$value": "#ffc380", "$extensions": { "oklch": "oklch(0.875 0.105 65.0)" } },
52
+ "300": { "$type": "color", "$value": "#ffab4d", "$extensions": { "oklch": "oklch(0.825 0.140 65.0)" } },
53
+ "400": { "$type": "color", "$value": "#ff941a", "$extensions": { "oklch": "oklch(0.775 0.175 65.0)" } },
54
+ "500": { "$type": "color", "$value": "#f07c00", "$extensions": { "oklch": "oklch(0.625 0.200 65.0)" } },
55
+ "600": { "$type": "color", "$value": "#c06300", "$extensions": { "oklch": "oklch(0.525 0.180 65.0)" } },
56
+ "700": { "$type": "color", "$value": "#904a00", "$extensions": { "oklch": "oklch(0.425 0.160 65.0)" } },
57
+ "800": { "$type": "color", "$value": "#603100", "$extensions": { "oklch": "oklch(0.325 0.140 65.0)" } },
58
+ "900": { "$type": "color", "$value": "#301900", "$extensions": { "oklch": "oklch(0.225 0.120 65.0)" } },
59
+ "950": { "$type": "color", "$value": "#180c00", "$extensions": { "oklch": "oklch(0.125 0.100 65.0)" } }
60
+ }
61
+ },
62
+ "brand": {
63
+ "$description": "Named brand aliases — the canonical reference points. Use these, not raw scale steps.",
64
+ "ee-blue": { "$type": "color", "$value": "{color.ee-blue.500}" },
65
+ "tech-blue": { "$type": "color", "$value": "{color.tech-blue.500}" },
66
+ "transform-teal": { "$type": "color", "$value": "{color.transform-teal.500}" },
67
+ "equal-ember": { "$type": "color", "$value": "{color.equal-ember.500}" },
68
+ "ee-blue-accent": { "$type": "color", "$value": "{color.ee-blue.50}" },
69
+ "dark-data": { "$type": "color", "$value": "#212526", "$description": "Primary text dark." },
70
+ "the-cloud": { "$type": "color", "$value": "#f5f5f5", "$description": "Light surface." },
71
+ "byte-white": { "$type": "color", "$value": "#ffffff" }
72
+ },
73
+ "alias": {
74
+ "$description": "Semantic role → brand mapping (mirrors kuat-core ee-light). Support-scale-backed roles (muted/border/ring/destructive) resolve to non-brand scales in kuat-core and are intentionally omitted here except destructive.",
75
+ "primary": { "$type": "color", "$value": "{brand.ee-blue}" },
76
+ "secondary": { "$type": "color", "$value": "{brand.transform-teal}" },
77
+ "sidebar": { "$type": "color", "$value": "{brand.tech-blue}", "$description": "Dark navigation." },
78
+ "accent": { "$type": "color", "$value": "{brand.ee-blue-accent}" },
79
+ "foreground": { "$type": "color", "$value": "{brand.dark-data}" },
80
+ "background": { "$type": "color", "$value": "{brand.byte-white}" },
81
+ "muted": { "$type": "color", "$value": "{brand.the-cloud}" },
82
+ "destructive": { "$type": "color", "$value": "#dc2626", "$description": "Red 600 (support scale, not brand)." }
83
+ }
84
+ }
@@ -0,0 +1,156 @@
1
+ # Typography Rules
2
+
3
+ Typography specifications for Equal Experts. This document defines font families, type scale, and usage guidelines.
4
+
5
+ ---
6
+
7
+ ## Font Families
8
+
9
+ ### Sans Serif (Default)
10
+
11
+ **Font:** Lexend
12
+ **Fallback:** `Lexend, ui-sans-serif, sans-serif, system-ui`
13
+
14
+ **Use for:** All primary content - body text, headings, interface copy, presentations
15
+
16
+ ### Serif
17
+
18
+ **Font:** Lora
19
+ **Fallback:** `Lora, ui-serif, Georgia, serif`
20
+
21
+ **Use for:** Decorative text, special emphasis, editorial content (use sparingly)
22
+
23
+ ### Monospace
24
+
25
+ **Font:** JetBrains Mono
26
+ **Fallback:** `JetBrains Mono, ui-monospace, monospace`
27
+
28
+ **Use for:** Code blocks, technical content, data display
29
+
30
+ ---
31
+
32
+ ## Type Scale
33
+
34
+ | Name | Size | Line Height | Usage |
35
+ |------|------|-------------|-------|
36
+ | xs | 12px | 16px | Labels, captions, metadata |
37
+ | sm | 14px | 20px | Secondary text, small body |
38
+ | base | 16px | 24px | Body text (default) |
39
+ | lg | 18px | 28px | Large body, subheadings |
40
+ | xl | 20px | 28px | Section headings |
41
+ | 2xl | 24px | 32px | Page headings |
42
+ | 3xl | 30px | 36px | Large headings |
43
+ | 4xl | 36px | 40px | Display text |
44
+ | 5xl | 48px | 1 | Hero headings |
45
+ | 6xl | 60px | 1 | Large hero text |
46
+ | 7xl | 72px | 1 | Extra large display |
47
+ | 8xl | 96px | 1 | Maximum display |
48
+
49
+ ---
50
+
51
+ ## Font Weights
52
+
53
+ | Weight | Value | Usage |
54
+ |--------|-------|-------|
55
+ | light | 300 | Large display text, subtle emphasis |
56
+ | normal | 400 | Default body text |
57
+ | medium | 500 | Form inputs, UI labels, subtle emphasis |
58
+ | semibold | 600 | Headings, important labels |
59
+ | bold | 700 | Strong emphasis, primary headings |
60
+ | extrabold | 800 | Maximum emphasis (use sparingly) |
61
+
62
+ ### Recommended Weight Usage
63
+
64
+ - **Body Text:** 400 (normal)
65
+ - **Headings:** 600 (semibold) or 700 (bold)
66
+ - **Labels:** 500 (medium)
67
+ - **Display Text:** 300 (light) for large sizes, 700 (bold) for impact
68
+
69
+ ---
70
+
71
+ ## Typography Hierarchy
72
+
73
+ Establish clear visual hierarchy:
74
+
75
+ | Level | Size | Weight | Usage |
76
+ |-------|------|--------|-------|
77
+ | H1 | 4xl-5xl | bold | Main page/slide title |
78
+ | H2 | 2xl-3xl | semibold/bold | Section heading |
79
+ | H3 | xl-2xl | semibold | Subsection heading |
80
+ | Body | base | normal | Primary content |
81
+ | Supporting | sm | normal/medium | Secondary information |
82
+ | Labels/Captions | xs-sm | medium | Metadata, captions |
83
+
84
+ ---
85
+
86
+ ## Letter Spacing
87
+
88
+ | Name | Value | Usage |
89
+ |------|-------|-------|
90
+ | tighter | -0.05em | Tighter spacing |
91
+ | tight | -0.025em | Slightly tighter |
92
+ | normal | 0.01em | Default spacing |
93
+ | wide | +0.025em | Slightly wider |
94
+ | wider | +0.05em | Wider spacing |
95
+ | widest | +0.1em | Maximum spacing (all caps) |
96
+
97
+ ---
98
+
99
+ ## Line Height
100
+
101
+ | Name | Value | Usage |
102
+ |------|-------|-------|
103
+ | none | 1 | Tight spacing (large headings) |
104
+ | tight | 1.25 | Compact text |
105
+ | snug | 1.375 | Slightly tight |
106
+ | normal | 1.5 | Default body text |
107
+ | relaxed | 1.625 | Comfortable reading |
108
+ | loose | 2 | Generous spacing |
109
+
110
+ ---
111
+
112
+ ## Accessibility Requirements
113
+
114
+ - **Normal text:** Minimum 4.5:1 contrast ratio
115
+ - **Large text (18px+ or 14px+ bold):** Minimum 3:1 contrast ratio
116
+ - **Proper heading hierarchy:** H1 → H2 → H3 (no skipping levels)
117
+ - **Minimum body text size:** 12px
118
+
119
+ ---
120
+
121
+ ## Usage Guidelines
122
+
123
+ ### Do's
124
+
125
+ 1. **Use Lexend for primary content** - It's the brand font
126
+ 2. **Maintain hierarchy** - Visual styling matches content structure
127
+ 3. **Stick to the scale** - Use defined sizes, not arbitrary values
128
+ 4. **Ensure readability** - Sufficient contrast and line height
129
+ 5. **Be consistent** - Same styles for same content types
130
+
131
+ ### Don'ts
132
+
133
+ 1. **Don't use arbitrary sizes** - Stick to the type scale
134
+ 2. **Don't skip heading levels** - H1 → H3 is invalid
135
+ 3. **Don't use low-contrast colors** - Verify accessibility
136
+ 4. **Don't mix too many weights** - Keep it simple
137
+ 5. **Don't use sizes smaller than 12px** - Maintain readability
138
+
139
+ ---
140
+
141
+ ## Platform-Specific Typography
142
+
143
+ For platform-specific typography guidance:
144
+
145
+ - **Web product** - See [media-types/web-product/](../media-types/web-product/)
146
+ - **Web marketing** - See [media-types/web-marketing/](../media-types/web-marketing/)
147
+ - **Slides** - See [media-types/slides/](../media-types/slides/)
148
+ - **Graphics** - See [media-types/imagery/patterns/graphics/](../media-types/imagery/patterns/graphics/)
149
+
150
+ ---
151
+
152
+ ## Related Documentation
153
+
154
+ - [Brand Guidelines](../brand/brand.md) - Brand principles
155
+ - [Colours](./colours.md) - Text colors
156
+ - [Spacing](./spacing.md) - Text spacing patterns
@@ -0,0 +1,10 @@
1
+ # Web Marketing
2
+
3
+ Reference for Equal Experts public-facing marketing websites, landing pages, and marketing emails.
4
+
5
+ | File | Scope |
6
+ |------|-------|
7
+ | [website.md](./website.md) | Marketing website layout and visual patterns |
8
+ | [emails.md](./emails.md) | Marketing email patterns |
9
+ | [content/](./content/) | Marketing copy, blog posts, SEO |
10
+ | [patterns/](./patterns/) | Marketing page-type patterns |
@@ -0,0 +1,26 @@
1
+ # Marketing Content Rules
2
+
3
+ Content guidance for Equal Experts marketing websites, landing pages, and blog posts.
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ Marketing content informs, engages, and supports conversion. See [voice and tone](../../../brand/voice-and-tone.md) and [marketing-content.md](./marketing-content.md) for principles and content types.
10
+
11
+ ---
12
+
13
+ ## Files
14
+
15
+ | File | Description |
16
+ |------|-------------|
17
+ | [marketing-content.md](./marketing-content.md) | Principles, tone, case studies, content types |
18
+ | [blog-posts.md](./blog-posts.md) | Blog structure and style |
19
+ | [seo.md](./seo.md) | SEO content and meta guidelines |
20
+
21
+ ---
22
+
23
+ ## Related
24
+
25
+ - [Content](../../../content/)
26
+ - [Marketing website](../website.md)
@@ -0,0 +1,29 @@
1
+ # Blog Posts
2
+
3
+ Structure and style for Equal Experts blog content.
4
+
5
+ ---
6
+
7
+ ## Structure
8
+
9
+ 1. **Introduction** – Hook the reader: story, question, or clear insight. Get to the point quickly.
10
+ 2. **Problem or question** – What you're addressing. Set expectations.
11
+ 3. **Main content** – Evidence-based insights with examples. Use headings and short paragraphs.
12
+ 4. **Takeaways** – Actionable guidance the reader can use.
13
+ 5. **Call to action** – Invite further engagement (e.g. contact, subscribe, read more).
14
+
15
+ ---
16
+
17
+ ## Voice and Format
18
+
19
+ - Use [writing style](../../../content/writing-style.md): active voice, plain language, "you" and "we".
20
+ - Keep paragraphs short (3–4 sentences). Use lists and headings so content is scannable.
21
+ - Support claims with evidence and examples. Avoid generic or unsupported statements.
22
+ - Typical length: enough to cover the topic clearly; avoid padding. For many posts, a few hundred to ~1,500 words works well.
23
+
24
+ ---
25
+
26
+ ## Related
27
+
28
+ - [Marketing content](./marketing-content.md)
29
+ - [SEO](./seo.md)
@@ -0,0 +1,61 @@
1
+ # Marketing Content
2
+
3
+ Writing principles and content types for Equal Experts marketing websites and landing pages.
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ Marketing content is written to build awareness, demonstrate expertise, and support leads and opportunities. It can be more expansive than product UI copy but should still be clear and evidence-based.
10
+
11
+ ---
12
+
13
+ ## What Marketing Content Should Do
14
+
15
+ - Build awareness and reputation
16
+ - Demonstrate expertise through evidence
17
+ - Generate leads and opportunities
18
+ - Educate external audiences
19
+
20
+ ---
21
+
22
+ ## Tone
23
+
24
+ **Tone range:** Confident to conversational (depends on content type)
25
+ **Key balance:** Expertise + Clarity = Credibility
26
+
27
+ Stay true to [voice and tone](../../../brand/voice-and-tone.md): clear, direct, helpful. Avoid hype or vague claims.
28
+
29
+ ---
30
+
31
+ ## Content Types
32
+
33
+ | Type | Guidance |
34
+ |------|----------|
35
+ | Case studies | Context → Challenge → Approach → Solution → Results. Start with business problem; use specific numbers. |
36
+ | Blog posts | See [blog-posts.md](./blog-posts.md) |
37
+ | Landing pages | Clear value proposition above the fold; scannable headings; clear CTAs; trust indicators |
38
+ | SEO | See [seo.md](./seo.md) |
39
+
40
+ ### Case Studies
41
+
42
+ **Structure:**
43
+ 1. Context – What was the situation?
44
+ 2. Challenge – What problems needed solving?
45
+ 3. Our approach – How did we help?
46
+ 4. Solution and implementation – What was built or changed?
47
+ 5. Results – Measurable business impact
48
+
49
+ **Tips:**
50
+ - Start with the business problem, not technology
51
+ - Use specific numbers and evidence
52
+ - Make it understandable by a broad audience
53
+
54
+ ---
55
+
56
+ ## Related
57
+
58
+ - [Content](../../../content/)
59
+ - [Blog posts](./blog-posts.md)
60
+ - [SEO](./seo.md)
61
+ - [Marketing website](../website.md)
@@ -0,0 +1,40 @@
1
+ # SEO Content
2
+
3
+ Guidance for findable, readable, and helpful marketing content.
4
+
5
+ ---
6
+
7
+ ## Principles
8
+
9
+ - **Findable** – Use language people search for; structure and meta data support discovery.
10
+ - **Readable** – Clear headings, short paragraphs, plain language (see [writing style](../../../content/writing-style.md)).
11
+ - **Helpful** – Content should answer a real question or need. Don't optimise for search at the expense of the reader.
12
+
13
+ ---
14
+
15
+ ## Page Titles and Meta Descriptions
16
+
17
+ - **Title:** Clear, descriptive, and relevant to the page. Include key terms where natural. Keep within typical display length (e.g. ~50–60 characters) for important pages.
18
+ - **Meta description:** Summarise the page and encourage a click. Match the page content; avoid generic or duplicate copy.
19
+
20
+ ---
21
+
22
+ ## Headings
23
+
24
+ - Use a logical hierarchy (H1 → H2 → H3). One H1 per page.
25
+ - Make headings descriptive so they work for both scanning and search. Use key phrases where they fit naturally; don't stuff keywords.
26
+
27
+ ---
28
+
29
+ ## Links
30
+
31
+ - Use descriptive link text that states the destination or topic (good for accessibility and context).
32
+ - Internal links help users and crawlers discover related content.
33
+
34
+ ---
35
+
36
+ ## Related
37
+
38
+ - [Formatting](../../../content/formatting.md) – Headings, links
39
+ - [Marketing content](./marketing-content.md)
40
+ - [Blog posts](./blog-posts.md)
@@ -0,0 +1,68 @@
1
+ # Marketing Email Rules
2
+
3
+ Guidelines for Equal Experts marketing emails and campaigns.
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ Marketing emails are external communications designed to engage, inform, and convert prospects and customers.
10
+
11
+ ---
12
+
13
+ ## Key Principles
14
+
15
+ 1. **Value-first** - Every email should provide value to the recipient
16
+ 2. **Clear purpose** - One primary goal per email
17
+ 3. **Scannable** - Easy to read on mobile devices
18
+ 4. **Brand-consistent** - Use Equal Experts visual identity
19
+
20
+ ---
21
+
22
+ ## Email Types
23
+
24
+ - **Newsletter** - Regular updates and insights
25
+ - **Product announcements** - New features and releases
26
+ - **Event invitations** - Webinars, conferences, meetups
27
+ - **Nurture sequences** - Educational content series
28
+ - **Transactional** - Confirmations, receipts (see product emails)
29
+
30
+ ---
31
+
32
+ ## To Be Defined
33
+
34
+ - Email template designs
35
+ - Header and footer specifications
36
+ - Logo placement and sizing
37
+ - Color usage in emails
38
+ - Typography for email clients
39
+ - CTA button styling
40
+ - Mobile-first design requirements
41
+ - Accessibility requirements (alt text, etc.)
42
+ - Subject line guidelines
43
+ - Preview text best practices
44
+
45
+ ---
46
+
47
+ ## Content Guidelines
48
+
49
+ Follow [content](../../content/) for writing style.
50
+
51
+ ### Subject Lines
52
+ - Keep under 50 characters for mobile
53
+ - Be specific about content
54
+ - Avoid spam triggers
55
+
56
+ ### Body Content
57
+ - Lead with the most important information
58
+ - Use short paragraphs
59
+ - Include clear CTA
60
+ - Provide value before asking
61
+
62
+ ---
63
+
64
+ ## Related Documentation
65
+
66
+ - [Reference home](../../README.md) - Brand and design language
67
+ - [Marketing Website](./website.md) - Website guidelines
68
+ - [Content](../../content/) - Writing style
@@ -0,0 +1,7 @@
1
+ # Web Marketing Patterns
2
+
3
+ Applied layout and design patterns for marketing website page types.
4
+
5
+ | Pattern | For | Base layout |
6
+ |---------|-----|-------------|
7
+ | [marketing-pages.md](./marketing-pages.md) | Landing pages, pricing, features, case studies | Horizontal navigation |