@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,367 @@
1
+ # Marketing Page Scenarios
2
+
3
+ Patterns for landing pages, feature pages, pricing, testimonials, and promotional content.
4
+
5
+ ---
6
+
7
+ ## Principles
8
+
9
+ ### User Goals
10
+
11
+ - **Understand the value** - What's in it for me?
12
+ - **Build trust** - Is this credible?
13
+ - **Make decisions** - Which option is right for me?
14
+ - **Take action** - Easy path to next step
15
+
16
+ ### UX Principles
17
+
18
+ | Principle | Implementation |
19
+ |-----------|----------------|
20
+ | Clear value proposition | Hero communicates benefit immediately |
21
+ | Social proof | Testimonials, logos, metrics build trust |
22
+ | Scannable content | Users skim before they read |
23
+ | Clear CTAs | Obvious next steps at every section |
24
+
25
+ ### Success Metrics
26
+
27
+ - Time on page
28
+ - Scroll depth
29
+ - CTA click-through rate
30
+ - Conversion rate
31
+
32
+ ---
33
+
34
+ ## Layout
35
+
36
+ **Base Layout:** [Horizontal Navigation](../design/layouts.md#1-horizontal-navigation-layout)
37
+
38
+ Marketing pages use full-width sections with contained content.
39
+
40
+ ### Landing Page Structure
41
+
42
+ ```
43
+ ┌─────────────────────────────────────┐
44
+ │ Header │
45
+ ├─────────────────────────────────────┤
46
+ │ Hero Section (full width) │
47
+ ├─────────────────────────────────────┤
48
+ │ Social Proof / Logos │
49
+ ├─────────────────────────────────────┤
50
+ │ Features Section │
51
+ ├─────────────────────────────────────┤
52
+ │ Benefits / How It Works │
53
+ ├─────────────────────────────────────┤
54
+ │ Testimonials │
55
+ ├─────────────────────────────────────┤
56
+ │ CTA Section │
57
+ ├─────────────────────────────────────┤
58
+ │ Footer │
59
+ └─────────────────────────────────────┘
60
+ ```
61
+
62
+ ### Pricing Page Structure
63
+
64
+ ```
65
+ ┌─────────────────────────────────────┐
66
+ │ Header │
67
+ ├─────────────────────────────────────┤
68
+ │ Heading: "Pricing" or "Choose Plan" │
69
+ │ [Monthly] [Annual] toggle │
70
+ ├─────────────────────────────────────┤
71
+ │ ┌─────┐ ┌─────┐ ┌─────┐ │
72
+ │ │Free │ │ Pro │ │Enter│ │
73
+ │ │ │ │ ★ │ │prise│ │
74
+ │ └─────┘ └─────┘ └─────┘ │
75
+ ├─────────────────────────────────────┤
76
+ │ Feature Comparison Table │
77
+ ├─────────────────────────────────────┤
78
+ │ FAQ Section │
79
+ ├─────────────────────────────────────┤
80
+ │ Footer │
81
+ └─────────────────────────────────────┘
82
+ ```
83
+
84
+ ### Specifications
85
+
86
+ | Element | Value |
87
+ |---------|-------|
88
+ | Header height | 64-80px |
89
+ | Content container | max-width 1200-1400px, centered |
90
+ | Section padding | 64-96px vertical |
91
+ | Footer padding | 48-64px vertical |
92
+
93
+ ---
94
+
95
+ ## Design
96
+
97
+ ### Color Tokens
98
+
99
+ | Element | Token |
100
+ |---------|-------|
101
+ | Page background | `bg-background` |
102
+ | Header | `bg-background` (light) |
103
+ | Alternating sections | `bg-muted` or `bg-background` |
104
+ | CTA sections | `bg-primary` or dark |
105
+ | Footer | `bg-muted` |
106
+
107
+ ### Typography
108
+
109
+ | Element | Style |
110
+ |---------|-------|
111
+ | Hero heading | `text-4xl md:text-5xl lg:text-6xl font-bold` |
112
+ | Hero subheading | `text-xl text-muted-foreground` |
113
+ | Section heading | `text-3xl font-bold` |
114
+ | Section subheading | `text-lg text-muted-foreground` |
115
+ | Body text | `text-base` or `text-lg` |
116
+ | Feature title | `text-lg font-semibold` |
117
+
118
+ ### Spacing Between Sections
119
+
120
+ | Section Type | Vertical Padding |
121
+ |--------------|-----------------|
122
+ | Hero | 64-96px |
123
+ | Standard content | 64px |
124
+ | CTA sections | 64-80px |
125
+ | Compact (logos) | 32-48px |
126
+
127
+ ---
128
+
129
+ ## Content
130
+
131
+ ### Hero Section
132
+
133
+ **Required Elements:**
134
+
135
+ 1. Headline - Clear value proposition
136
+ 2. Subheadline - Supporting detail
137
+ 3. Primary CTA button
138
+ 4. Secondary CTA (optional)
139
+ 5. Hero image/illustration (optional)
140
+
141
+ **Hero Variants:**
142
+
143
+ | Variant | Structure |
144
+ |---------|-----------|
145
+ | Centered | Text centered, buttons centered below |
146
+ | Split | Text left (50%), image right (50%) |
147
+ | With background | Dark/image background, light text |
148
+
149
+ **Specifications:**
150
+
151
+ | Element | Value |
152
+ |---------|-------|
153
+ | Heading | Max 10-12 words |
154
+ | Subheading | 1-2 sentences |
155
+ | CTA spacing | 16px between buttons |
156
+
157
+ ### Feature Sections
158
+
159
+ **Feature Grid:**
160
+
161
+ ```
162
+ ┌─────────┐ ┌─────────┐ ┌─────────┐
163
+ │ Icon │ │ Icon │ │ Icon │
164
+ │ Heading │ │ Heading │ │ Heading │
165
+ │ Text │ │ Text │ │ Text │
166
+ └─────────┘ └─────────┘ └─────────┘
167
+ ```
168
+
169
+ | Element | Specification |
170
+ |---------|---------------|
171
+ | Grid | 3 columns desktop, 2 tablet, 1 mobile |
172
+ | Gap | 32px |
173
+ | Icon size | 48px, brand color |
174
+ | Alignment | Center or left |
175
+
176
+ **Feature Alternating:**
177
+
178
+ ```
179
+ ┌─────────────────────────────────────┐
180
+ │ [Image] Text content │
181
+ ├─────────────────────────────────────┤
182
+ │ Text content [Image] │
183
+ ├─────────────────────────────────────┤
184
+ │ [Image] Text content │
185
+ └─────────────────────────────────────┘
186
+ ```
187
+
188
+ - Alternate image position left/right
189
+ - 50/50 or 60/40 split
190
+ - Stack on mobile (image above text)
191
+
192
+ ### Pricing Cards
193
+
194
+ | Element | Specification |
195
+ |---------|---------------|
196
+ | Card padding | 32px (`p-8`) |
197
+ | Highlighted tier | `border-primary`, "Popular" badge |
198
+ | Price display | `text-4xl font-bold` |
199
+ | Period | `text-sm text-muted-foreground` |
200
+ | Feature list | 8-10 items max, checkmarks |
201
+ | CTA button | Full width at bottom |
202
+
203
+ ### Testimonials
204
+
205
+ **Card Pattern:**
206
+
207
+ | Element | Specification |
208
+ |---------|---------------|
209
+ | Quote | `text-lg`, optional quotation marks |
210
+ | Avatar | 48-64px, rounded full |
211
+ | Name | `font-semibold` |
212
+ | Title/Company | `text-muted-foreground` |
213
+ | Logo | 80-120px wide |
214
+
215
+ **Layout Options:**
216
+
217
+ | Layout | Use Case |
218
+ |--------|----------|
219
+ | Grid (3 col) | Multiple equal testimonials |
220
+ | Carousel | Many testimonials, limited space |
221
+ | Featured | Single prominent quote |
222
+
223
+ ### CTA Sections
224
+
225
+ **Mid-page CTA:**
226
+
227
+ | Element | Specification |
228
+ |---------|---------------|
229
+ | Background | `bg-muted` |
230
+ | Padding | 64px vertical |
231
+ | Content | Centered heading + button |
232
+
233
+ **Final CTA (above footer):**
234
+
235
+ | Element | Specification |
236
+ |---------|---------------|
237
+ | Background | `bg-primary` or dark |
238
+ | Text | White/light |
239
+ | Padding | 80-96px vertical |
240
+ | Content | Strong headline + single button |
241
+
242
+ ---
243
+
244
+ ## Accessibility
245
+
246
+ **Base requirements:** See [accessibility/design.md](../accessibility/design.md), [accessibility/content.md](../accessibility/content.md), and [accessibility/technical.md](../accessibility/technical.md)
247
+
248
+ **Scenario-specific:**
249
+
250
+ | Requirement | Implementation |
251
+ |-------------|----------------|
252
+ | Image alt text | Describe meaningful images, decorative get empty alt |
253
+ | Heading structure | H1 (hero) → H2 (sections) → H3 (sub-sections) |
254
+ | Link purpose | CTAs describe destination/action |
255
+ | Contrast on dark sections | Ensure text meets 4.5:1 on dark backgrounds |
256
+ | Video captions | All promotional videos have captions |
257
+
258
+ ### Pricing Table Accessibility
259
+
260
+ - Use semantic `<table>` for comparison tables
261
+ - Clear header row with `<th>` elements
262
+ - Don't rely on color alone for highlighting
263
+
264
+ ---
265
+
266
+ ## Implementation
267
+
268
+ ### Header Pattern
269
+
270
+ | Element | Specification |
271
+ |---------|---------------|
272
+ | Background | `bg-background` (light) |
273
+ | Logo | Full-color, left-aligned, 120-150px |
274
+ | Navigation | Right-aligned, horizontal |
275
+ | CTA button | Primary action in header |
276
+ | Height | 64-80px |
277
+
278
+ ### Footer Pattern
279
+
280
+ | Element | Specification |
281
+ |---------|---------------|
282
+ | Background | `bg-muted` |
283
+ | Logo | Full-color, 100-120px |
284
+ | Link columns | Company, Resources, Legal |
285
+ | Social links | Icons, 24px |
286
+ | Copyright | Bottom, `text-sm text-muted-foreground` |
287
+
288
+ ### Case Study Structure
289
+
290
+ 1. Hero with client logo and headline
291
+ 2. Challenge section - What problem?
292
+ 3. Solution section - How did we help?
293
+ 4. Results section - Metrics and outcomes
294
+ 5. Client quote
295
+ 6. Related case studies CTA
296
+
297
+ **Results Display:**
298
+
299
+ ```
300
+ ┌──────┐ ┌──────┐ ┌──────┐
301
+ │ 50% │ │ 3x │ │ 24h │
302
+ │ cost │ │faster│ │deploy│
303
+ │ saved│ │ time │ │ time │
304
+ └──────┘ └──────┘ └──────┘
305
+ ```
306
+
307
+ - Use KPI card pattern
308
+ - Include context (e.g., "50% reduction in...")
309
+
310
+ ### Responsive Behavior
311
+
312
+ | Element | Desktop | Tablet | Mobile |
313
+ |---------|---------|--------|--------|
314
+ | Hero heading | `text-6xl` | `text-5xl` | `text-4xl` |
315
+ | Feature grid | 3 columns | 2 columns | 1 column |
316
+ | Pricing cards | 3 horizontal | 3 horizontal | Stacked |
317
+ | Split sections | 50/50 | 50/50 | Stacked |
318
+ | Testimonials | 3 columns | 2 columns | 1 column |
319
+
320
+ ---
321
+
322
+ ## Best Practices
323
+
324
+ ### Do's
325
+
326
+ 1. **Lead with value** - Hero should answer "what's in it for me?"
327
+ 2. **Use social proof** - Logos, testimonials, metrics
328
+ 3. **Clear CTAs** - One primary action per section
329
+ 4. **Scannable content** - Users skim before reading
330
+ 5. **Mobile-first** - Many visitors are on mobile
331
+ 6. **Fast loading** - Optimize images, lazy load below fold
332
+
333
+ ### Don'ts
334
+
335
+ 1. **Don't overwhelm** - One message per section
336
+ 2. **Don't hide CTAs** - Make them prominent
337
+ 3. **Don't use jargon** - Plain language for broad audience
338
+ 4. **Don't auto-play video with sound** - Respect user preferences
339
+ 5. **Don't neglect footer** - Important for trust and navigation
340
+
341
+ ### Common Mistakes
342
+
343
+ | Mistake | Solution |
344
+ |---------|----------|
345
+ | Unclear value prop | Test headline with users |
346
+ | Too many CTAs | One primary per section |
347
+ | Walls of text | Break into scannable sections |
348
+ | Generic testimonials | Specific, credible quotes |
349
+ | Missing social proof | Add logos, numbers, quotes |
350
+ | Slow loading | Optimize images, lazy load |
351
+
352
+ ### Edge Cases
353
+
354
+ | Case | Handling |
355
+ |------|----------|
356
+ | No testimonials yet | Use partner logos, team credentials |
357
+ | Complex pricing | Summary cards + detailed table |
358
+ | Many features | Categorize, show top 3-6, link to full list |
359
+ | Video content | Thumbnail + play button, don't auto-play |
360
+ | International | Consider localization, currency display |
361
+
362
+ ---
363
+
364
+ ## Related Documentation
365
+
366
+ - [Layout Primitives](../design/layouts.md) - Horizontal Navigation layout
367
+ - [Rules index](../README.md) - Marketing content and logo (paths under *Types — web — marketing* and *Foundations — logo*)
@@ -0,0 +1,9 @@
1
+ {
2
+ "packageVersion": "0.14.0-beta.0",
3
+ "rules": {
4
+ "snapshotRef": "538afc80d4372a6c6cdcd75c4d35782b5988a664",
5
+ "snapshotDate": "2026-06-24T13:14:07.261Z",
6
+ "sourceRepo": "equalexperts/kuat-agent-docs",
7
+ "loadingPath": "agent-docs/rules/LOADING-consumer.md"
8
+ }
9
+ }
@@ -0,0 +1,27 @@
1
+ # Kuat consumer rules (bundled)
2
+
3
+ **Package:** @equal-experts/kuat-core (and mirrored in kuat-react / kuat-vue agent-docs)
4
+
5
+ **Snapshot:** 538afc80d437
6
+
7
+ ## Default load (web product / marketing UI)
8
+
9
+ 1. `external/kuat-agent-rules/reference/` foundations — `brand/`, `design-language/`, `content/`, `accessibility/`
10
+ 2. `external/kuat-agent-rules/reference/media-types/web-product/` — core files + patterns + content (examples excluded)
11
+ 3. `external/kuat-agent-rules/reference/media-types/web-marketing/`
12
+ 4. `kuat-docs/rules/design/layouts.md` — Kuat layout primitives
13
+ 5. `kuat-docs/rules/scenarios/` — Kuat scenario overlays
14
+ 6. Component guides on demand: `components/{slug}.md` via `components.manifest.json`
15
+
16
+ ## Component IDs
17
+
18
+ Resolve `shadcn:button`, `kuat:button-group`, etc. using `components/components.manifest.json`.
19
+
20
+ ## Full org taxonomy
21
+
22
+ Set `KUAT_RULES_PATH` to a `kuat-agent-docs` git clone for slides, graphics, and latest upstream.
23
+
24
+ ## Related
25
+
26
+ - [README.md](../README.md)
27
+ - Upstream reference index [reference/README.md](../external/kuat-agent-rules/reference/README.md)
@@ -0,0 +1,2 @@
1
+ export { cn } from './lib/utils';
2
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent, } from './components/ui/accordion';
@@ -0,0 +1,2 @@
1
+ export { cn } from './lib/utils';
2
+ export { AlertDialog, AlertDialogPortal, AlertDialogOverlay, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, } from './components/ui/alert-dialog';
@@ -0,0 +1,3 @@
1
+ export { cn } from './lib/utils';
2
+ export { Badge, badgeVariants } from './components/ui/badge';
3
+ export type { BadgeProps } from './components/ui/badge';
@@ -0,0 +1,2 @@
1
+ export { cn } from './lib/utils';
2
+ export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants, } from './components/ui/button-group';
@@ -0,0 +1,3 @@
1
+ export { cn } from './lib/utils';
2
+ export { Button, buttonVariants } from './components/ui/button';
3
+ export type { ButtonProps } from './components/ui/button';
@@ -0,0 +1,2 @@
1
+ export { Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext, useCarousel, } from './components/ui/carousel';
2
+ export type { CarouselItemBasis, CarouselResponsiveBasis, CarouselEventHandler, CarouselEventHandlers, CarouselProps, CarouselContentProps, CarouselItemProps, } from './components/ui/carousel';
@@ -0,0 +1,3 @@
1
+ export { cn } from './lib/utils';
2
+ export { Checkbox, CheckboxField, CHECKBOX_FIELD_APPEARANCES, CHECKBOX_FIELD_LAYOUTS, } from './components/ui/checkbox';
3
+ export type { CheckboxProps, CheckboxFieldAppearance, CheckboxFieldLayout, CheckboxFieldProps, } from './components/ui/checkbox';
@@ -0,0 +1,7 @@
1
+ import * as React from "react";
2
+ import * as AccordionPrimitive from "@radix-ui/react-accordion";
3
+ declare const Accordion: React.ForwardRefExoticComponent<(AccordionPrimitive.AccordionSingleProps | AccordionPrimitive.AccordionMultipleProps) & React.RefAttributes<HTMLDivElement>>;
4
+ declare const AccordionItem: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
5
+ declare const AccordionTrigger: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
6
+ declare const AccordionContent: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
7
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
@@ -0,0 +1 @@
1
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent, } from './accordion';
@@ -0,0 +1,20 @@
1
+ import * as React from "react";
2
+ import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
3
+ declare const AlertDialog: React.FC<AlertDialogPrimitive.AlertDialogProps>;
4
+ declare const AlertDialogTrigger: React.ForwardRefExoticComponent<AlertDialogPrimitive.AlertDialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
5
+ declare const AlertDialogPortal: React.FC<AlertDialogPrimitive.AlertDialogPortalProps>;
6
+ declare const AlertDialogOverlay: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
7
+ declare const AlertDialogContent: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
8
+ declare const AlertDialogHeader: {
9
+ ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
10
+ displayName: string;
11
+ };
12
+ declare const AlertDialogFooter: {
13
+ ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
14
+ displayName: string;
15
+ };
16
+ declare const AlertDialogTitle: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogTitleProps & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
17
+ declare const AlertDialogDescription: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
18
+ declare const AlertDialogAction: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogActionProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
19
+ declare const AlertDialogCancel: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogCancelProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
20
+ export { AlertDialog, AlertDialogPortal, AlertDialogOverlay, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, };
@@ -0,0 +1 @@
1
+ export { AlertDialog, AlertDialogPortal, AlertDialogOverlay, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, } from './alert-dialog';
@@ -0,0 +1,16 @@
1
+ import * as React from "react";
2
+ export declare const BADGE_VARIANTS: readonly ["default", "secondary", "destructive", "outline", "ghost"];
3
+ export type BadgeVariant = (typeof BADGE_VARIANTS)[number];
4
+ export declare const BADGE_ROUNDNESS: readonly ["default", "round"];
5
+ export type BadgeRoundness = (typeof BADGE_ROUNDNESS)[number];
6
+ export interface BadgeProps extends React.HTMLAttributes<HTMLDivElement> {
7
+ variant?: BadgeVariant;
8
+ roundness?: BadgeRoundness;
9
+ }
10
+ declare function Badge({ className, variant, roundness, ...props }: BadgeProps): import("react/jsx-runtime").JSX.Element;
11
+ /** Returns class string for badge variant (backward compatibility). */
12
+ export declare function badgeVariants(options: {
13
+ variant?: BadgeVariant;
14
+ roundness?: BadgeRoundness;
15
+ }): string;
16
+ export { Badge };
@@ -0,0 +1,2 @@
1
+ export { Badge, badgeVariants, BADGE_VARIANTS, BADGE_ROUNDNESS } from './badge';
2
+ export type { BadgeProps, BadgeVariant, BadgeRoundness } from './badge';
@@ -0,0 +1,29 @@
1
+ import * as React from "react";
2
+ /** Single breadcrumb entry for the trail. */
3
+ export interface BreadcrumbItemEntry {
4
+ /** Visible label. */
5
+ label: string;
6
+ /** Link URL. Omit for current page when no children. */
7
+ href?: string;
8
+ /** Sub-items; when set, this item is rendered as a dropdown. */
9
+ children?: Array<{
10
+ label: string;
11
+ href: string;
12
+ }>;
13
+ }
14
+ export interface BreadcrumbProps extends Omit<React.ComponentPropsWithoutRef<"nav">, "children"> {
15
+ /** Breadcrumb trail: ordered list of items. Last item is current page if it has no href. */
16
+ items: BreadcrumbItemEntry[];
17
+ /** Custom link component (e.g. Next.js Link). Receives { href, children } and should render a link. */
18
+ linkComponent?: React.ComponentType<{
19
+ href: string;
20
+ children: React.ReactNode;
21
+ className?: string;
22
+ }>;
23
+ /** Custom separator node (e.g. icon). Default is chevron. */
24
+ separator?: React.ReactNode;
25
+ /** aria-label for the nav. Default "Breadcrumb". */
26
+ "aria-label"?: string;
27
+ }
28
+ declare const Breadcrumb: React.ForwardRefExoticComponent<BreadcrumbProps & React.RefAttributes<HTMLElement>>;
29
+ export { Breadcrumb };
@@ -0,0 +1,19 @@
1
+ import * as React from "react";
2
+ declare const BreadcrumbRoot: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "ref"> & {
3
+ "aria-label"?: string;
4
+ } & React.RefAttributes<HTMLElement>>;
5
+ declare const BreadcrumbList: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.OlHTMLAttributes<HTMLOListElement>, HTMLOListElement>, "ref"> & React.RefAttributes<HTMLOListElement>>;
6
+ declare const BreadcrumbItem: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "ref"> & React.RefAttributes<HTMLLIElement>>;
7
+ interface BreadcrumbLinkProps extends React.ComponentPropsWithoutRef<"a"> {
8
+ /** When provided, render this element instead of <a> (e.g. Next.js Link). */
9
+ render?: React.ReactElement;
10
+ asChild?: boolean;
11
+ }
12
+ declare const BreadcrumbLink: React.ForwardRefExoticComponent<BreadcrumbLinkProps & React.RefAttributes<HTMLAnchorElement>>;
13
+ declare const BreadcrumbPage: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
14
+ declare const BreadcrumbSeparator: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & {
15
+ children?: React.ReactNode;
16
+ } & React.RefAttributes<HTMLSpanElement>>;
17
+ declare const BreadcrumbEllipsis: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
18
+ export { BreadcrumbRoot, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, BreadcrumbEllipsis, };
19
+ export type { BreadcrumbLinkProps };
@@ -0,0 +1,4 @@
1
+ export { Breadcrumb } from './Breadcrumb';
2
+ export type { BreadcrumbProps, BreadcrumbItemEntry } from './Breadcrumb';
3
+ export { BreadcrumbRoot, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, BreadcrumbEllipsis, } from './breadcrumb-primitives';
4
+ export type { BreadcrumbLinkProps } from './breadcrumb-primitives';
@@ -0,0 +1,27 @@
1
+ import * as React from "react";
2
+ export declare const BUTTON_VARIANTS: readonly ["primary", "secondary", "outline", "ghost", "ghost-muted", "destructive"];
3
+ /** @deprecated Use "primary" instead. */
4
+ export declare const BUTTON_VARIANT_DEFAULT_ALIAS = "default";
5
+ export declare const BUTTON_SIZES: readonly ["mini", "small", "default", "large", "icon"];
6
+ /** @deprecated Use "small" instead. */
7
+ export declare const BUTTON_SIZE_SM_ALIAS = "sm";
8
+ /** @deprecated Use "large" instead. */
9
+ export declare const BUTTON_SIZE_LG_ALIAS = "lg";
10
+ export declare const BUTTON_COLORS: readonly ["ee-blue", "tech-blue", "byte-white", "the-cloud", "dark-data", "transform-teal", "equal-ember"];
11
+ export type ButtonVariant = (typeof BUTTON_VARIANTS)[number];
12
+ export type ButtonSize = (typeof BUTTON_SIZES)[number];
13
+ export type ButtonColor = (typeof BUTTON_COLORS)[number];
14
+ export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
15
+ variant?: ButtonVariant | typeof BUTTON_VARIANT_DEFAULT_ALIAS;
16
+ size?: ButtonSize | typeof BUTTON_SIZE_SM_ALIAS | typeof BUTTON_SIZE_LG_ALIAS;
17
+ color?: ButtonColor;
18
+ asChild?: boolean;
19
+ }
20
+ declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
21
+ /** Returns class string for button variant/size/color (backward compatibility). */
22
+ export declare function buttonVariants(options?: {
23
+ variant?: ButtonVariant | "default";
24
+ size?: ButtonSize | "sm" | "lg";
25
+ color?: ButtonColor;
26
+ }): string;
27
+ export { Button };
@@ -0,0 +1,2 @@
1
+ export { Button, buttonVariants, BUTTON_VARIANTS, BUTTON_SIZES, BUTTON_COLORS, } from './button';
2
+ export type { ButtonProps, ButtonVariant, ButtonSize, ButtonColor } from './button';
@@ -0,0 +1,23 @@
1
+ import { KuatSlotContent } from '../../../lib/react-node-compat';
2
+ import { Separator } from '../separator';
3
+ import * as React from "react";
4
+ export declare const BUTTON_GROUP_ORIENTATIONS: readonly ["horizontal", "vertical"];
5
+ export type ButtonGroupOrientation = (typeof BUTTON_GROUP_ORIENTATIONS)[number];
6
+ export interface ButtonGroupProps extends Omit<React.ComponentProps<"div">, "children"> {
7
+ orientation?: ButtonGroupOrientation;
8
+ children?: KuatSlotContent;
9
+ }
10
+ declare const ButtonGroup: React.ForwardRefExoticComponent<Omit<ButtonGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
11
+ export interface ButtonGroupTextProps extends Omit<React.ComponentProps<"div">, "children"> {
12
+ asChild?: boolean;
13
+ children?: KuatSlotContent;
14
+ }
15
+ declare const ButtonGroupText: React.ForwardRefExoticComponent<Omit<ButtonGroupTextProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
16
+ export interface ButtonGroupSeparatorProps extends React.ComponentProps<typeof Separator> {
17
+ }
18
+ declare const ButtonGroupSeparator: React.ForwardRefExoticComponent<Omit<ButtonGroupSeparatorProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
19
+ /** Returns class string for button group (backward compatibility). */
20
+ export declare function buttonGroupVariants(options?: {
21
+ orientation?: ButtonGroupOrientation;
22
+ }): string;
23
+ export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, };
@@ -0,0 +1,2 @@
1
+ export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants, BUTTON_GROUP_ORIENTATIONS, } from './button-group';
2
+ export type { ButtonGroupProps, ButtonGroupTextProps, ButtonGroupSeparatorProps, ButtonGroupOrientation, } from './button-group';