ui-ux-pro-mcp 1.0.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.
- package/CHANGELOG.md +26 -0
- package/LICENSE +21 -0
- package/README.md +375 -0
- package/data/.gitkeep +0 -0
- package/data/charts.csv +36 -0
- package/data/colors.csv +113 -0
- package/data/icons.csv +132 -0
- package/data/landing.csv +41 -0
- package/data/products.csv +115 -0
- package/data/prompts.csv +31 -0
- package/data/stacks/flutter.csv +53 -0
- package/data/stacks/html-tailwind.csv +64 -0
- package/data/stacks/nextjs.csv +61 -0
- package/data/stacks/nuxt-ui.csv +51 -0
- package/data/stacks/nuxtjs.csv +59 -0
- package/data/stacks/react-native.csv +52 -0
- package/data/stacks/react.csv +62 -0
- package/data/stacks/shadcn.csv +61 -0
- package/data/stacks/svelte.csv +62 -0
- package/data/stacks/swiftui.csv +51 -0
- package/data/stacks/vue.csv +58 -0
- package/data/styles.csv +71 -0
- package/data/typography.csv +73 -0
- package/data/ux-guidelines.csv +145 -0
- package/dist/data/loader.d.ts +153 -0
- package/dist/data/loader.js +93 -0
- package/dist/data/mappings.d.ts +1 -0
- package/dist/data/mappings.js +23 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +664 -0
- package/dist/search/bm25.d.ts +28 -0
- package/dist/search/bm25.js +82 -0
- package/dist/test-server.d.ts +5 -0
- package/dist/test-server.js +153 -0
- package/dist/tools/handlers.d.ts +200 -0
- package/dist/tools/handlers.js +1206 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.js +13 -0
- package/dist/tools/test-handlers.d.ts +5 -0
- package/dist/tools/test-handlers.js +102 -0
- package/package.json +67 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to UI/UX Pro MCP will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [1.0.0] - 2026-01-17
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Initial release with **1340+ curated design resources**
|
|
12
|
+
- **11 specialized search tools** for UI/UX design
|
|
13
|
+
- **UI Styles** (70 entries): Glassmorphism, Neumorphism, Brutalism, Bento Grid, Agentic Interface, Spatial UI, etc.
|
|
14
|
+
- **Color Palettes** (112 entries): Industry-specific palettes for SaaS, Fintech, Healthcare, AI/ML, Climate Tech
|
|
15
|
+
- **Typography** (72 entries): Modern font pairings including Geist, Satoshi, variable fonts
|
|
16
|
+
- **Charts** (35 types): Candlestick, Confusion Matrix, KPI Sparkline, Waterfall, etc.
|
|
17
|
+
- **UX Guidelines** (115 entries): Dashboard UX, AI Interface Design, WCAG 2.2, Voice UI
|
|
18
|
+
- **Icons** (131 entries): Lucide icons for Fintech, AI, Healthcare, E-commerce, Developer
|
|
19
|
+
- **Landing Pages** (40 patterns): AI Hero, Bento Grid, Pricing Calculator, Exit Intent
|
|
20
|
+
- **Products** (114 types): AI Assistant, Crypto/DeFi, HealthTech, Creator Economy
|
|
21
|
+
- **AI Prompts** (30 templates): Midjourney v7, DALL-E 3, Stable Diffusion, LLM code gen
|
|
22
|
+
- **Framework Guidelines** (660+ entries): React 19, Next.js 15, Vue 3.5, Svelte 5, TailwindCSS v4
|
|
23
|
+
- BM25 search algorithm with confidence-based domain detection
|
|
24
|
+
- stdio transport for VS Code/Claude Desktop integration
|
|
25
|
+
- HTTP/SSE transport for development and testing
|
|
26
|
+
- CSV-based extensible data system
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 redf0x1
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
# π¨ UI/UX Pro MCP Server
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/ui-ux-pro-mcp)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
[](https://www.typescriptlang.org/)
|
|
6
|
+
[](https://modelcontextprotocol.io/)
|
|
7
|
+
[](https://github.com/redf0x1/ui-ux-pro-mcp/stargazers)
|
|
8
|
+
|
|
9
|
+
> **AI-powered UI/UX design intelligence** β Instantly access 1340+ curated design resources through natural language search.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## β¨ Features
|
|
14
|
+
|
|
15
|
+
| Feature | Details |
|
|
16
|
+
|---------|---------|
|
|
17
|
+
| π **1340+ Documents** | Curated design knowledge across 11 domains |
|
|
18
|
+
| π§ **11 Tools** | Specialized search for styles, colors, typography, charts, icons, and more |
|
|
19
|
+
| β‘ **BM25 Ranking** | Fast, relevant search results using industry-standard text ranking |
|
|
20
|
+
| π **Universal** | Works with VS Code, Claude Desktop, Cursor, and any MCP-compatible client |
|
|
21
|
+
| π― **11 Frameworks** | Stack-specific guidelines for React, Vue, Next.js, Flutter, SwiftUI, and more |
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## π Quick Start
|
|
26
|
+
|
|
27
|
+
### Option 1: NPX (Coming Soon)
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Will be available after npm publish
|
|
31
|
+
npx ui-ux-pro-mcp
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Option 2: From Source
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# Clone the repository
|
|
38
|
+
git clone https://github.com/redf0x1/ui-ux-pro-mcp.git
|
|
39
|
+
cd ui-ux-pro-mcp
|
|
40
|
+
|
|
41
|
+
# Install dependencies
|
|
42
|
+
npm install
|
|
43
|
+
|
|
44
|
+
# Build the project
|
|
45
|
+
npm run build
|
|
46
|
+
|
|
47
|
+
# Run the server
|
|
48
|
+
npm start
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## βοΈ MCP Configuration
|
|
54
|
+
|
|
55
|
+
### VS Code / Cursor
|
|
56
|
+
|
|
57
|
+
Add to your MCP settings (`settings.json` or `mcp.json`):
|
|
58
|
+
|
|
59
|
+
```json
|
|
60
|
+
{
|
|
61
|
+
"mcpServers": {
|
|
62
|
+
"ui-ux-pro": {
|
|
63
|
+
"command": "node",
|
|
64
|
+
"args": [
|
|
65
|
+
"/path/to/ui-ux-pro-mcp/dist/index.js",
|
|
66
|
+
"--stdio"
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Configuration file locations:**
|
|
74
|
+
|
|
75
|
+
| Platform | Path |
|
|
76
|
+
|----------|------|
|
|
77
|
+
| macOS | `~/Library/Application Support/Code/User/mcp.json` |
|
|
78
|
+
| Windows | `%APPDATA%\Code\User\mcp.json` |
|
|
79
|
+
| Linux | `~/.config/Code/User/mcp.json` |
|
|
80
|
+
|
|
81
|
+
### Claude Desktop
|
|
82
|
+
|
|
83
|
+
Add to your Claude Desktop configuration:
|
|
84
|
+
|
|
85
|
+
**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
86
|
+
|
|
87
|
+
**Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
|
|
88
|
+
|
|
89
|
+
```json
|
|
90
|
+
{
|
|
91
|
+
"mcpServers": {
|
|
92
|
+
"ui-ux-pro": {
|
|
93
|
+
"command": "node",
|
|
94
|
+
"args": [
|
|
95
|
+
"/path/to/ui-ux-pro-mcp/dist/index.js",
|
|
96
|
+
"--stdio"
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## π§ Available Tools
|
|
106
|
+
|
|
107
|
+
| Tool | Documents | Description |
|
|
108
|
+
|------|-----------|-------------|
|
|
109
|
+
| `search_ui_styles` | 70 | UI design styles (Glassmorphism, Minimalism, Brutalism, etc.) with colors, effects, and use cases |
|
|
110
|
+
| `search_colors` | 112 | Color palettes for industries (SaaS, Healthcare, Fintech) with hex codes |
|
|
111
|
+
| `search_typography` | 72 | Font pairings with Google Fonts imports and Tailwind configs |
|
|
112
|
+
| `search_charts` | 35 | Chart types with implementation recommendations for dashboards |
|
|
113
|
+
| `search_ux_guidelines` | 115 | UX best practices, do's and don'ts, accessibility (WCAG) |
|
|
114
|
+
| `search_icons` | 131 | Curated Lucide icons with import codes and use cases |
|
|
115
|
+
| `search_landing` | 40 | Landing patterns, Bento Grids (Config & Maps), Responsive Strategy |
|
|
116
|
+
| `search_products` | 114 | Product type design recommendations per industry |
|
|
117
|
+
| `search_prompts` | 30 | AI prompt templates with CSS snippets and implementation checklists |
|
|
118
|
+
| `search_stack` | 660 | Framework-specific guidelines (React, Vue, Next.js, Flutter, etc.) |
|
|
119
|
+
| `search_all` | All | Unified search across all design domains |
|
|
120
|
+
| `get_design_system` | β | Generate complete design system with colors, typography, UI style, and layout in one call |
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## π¬ Example Prompts
|
|
125
|
+
|
|
126
|
+
Use these with Claude, Cursor, or any MCP-compatible AI:
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
π¨ Design Systems
|
|
130
|
+
"What UI style works best for a fintech dashboard?"
|
|
131
|
+
"Give me a color palette for a healthcare app"
|
|
132
|
+
"Find modern font pairings for a SaaS landing page"
|
|
133
|
+
|
|
134
|
+
π Data Visualization
|
|
135
|
+
"What chart type should I use for time-series data?"
|
|
136
|
+
"How do I make charts accessible?"
|
|
137
|
+
|
|
138
|
+
π₯οΈ Landing Pages
|
|
139
|
+
"Show me landing page patterns for SaaS conversion"
|
|
140
|
+
"What sections should a pricing page have?"
|
|
141
|
+
|
|
142
|
+
π± UX Guidelines
|
|
143
|
+
"What are mobile touch target best practices?"
|
|
144
|
+
"Show me accessibility guidelines for forms"
|
|
145
|
+
|
|
146
|
+
βοΈ Framework-Specific
|
|
147
|
+
"React hooks best practices"
|
|
148
|
+
"Vue 3 composition API patterns"
|
|
149
|
+
"Next.js App Router guidelines"
|
|
150
|
+
"Flutter state management recommendations"
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## π Data Sources
|
|
156
|
+
|
|
157
|
+
This server aggregates curated design intelligence from multiple domains:
|
|
158
|
+
|
|
159
|
+
| Domain | File | Count | Content |
|
|
160
|
+
|--------|------|-------|---------|
|
|
161
|
+
| Styles | `styles.csv` | 70 | UI design trends, effects, animations |
|
|
162
|
+
| Colors | `colors.csv` | 112 | Industry-specific color palettes |
|
|
163
|
+
| Typography | `typography.csv` | 72 | Font pairings and configurations |
|
|
164
|
+
| Charts | `charts.csv` | 35 | Data visualization recommendations |
|
|
165
|
+
| UX Guidelines | `ux-guidelines.csv` | 115 | Usability and accessibility best practices |
|
|
166
|
+
| Icons | `icons.csv` | 131 | Lucide icon recommendations |
|
|
167
|
+
| Landing | `landing.csv` | 40 | Patterns, Bento Layout Maps, Responsive Strategy |
|
|
168
|
+
| Products | `products.csv` | 114 | Industry design recommendations |
|
|
169
|
+
| Prompts | `prompts.csv` | 30 | AI prompt templates |
|
|
170
|
+
| Stacks | `stacks/*.csv` | 660 | Framework-specific guidelines (11 stacks) |
|
|
171
|
+
|
|
172
|
+
**Available Framework Stacks:**
|
|
173
|
+
`flutter` Β· `html-tailwind` Β· `nextjs` Β· `nuxt-ui` Β· `nuxtjs` Β· `react-native` Β· `react` Β· `shadcn` Β· `svelte` Β· `swiftui` Β· `vue`
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## π API Reference
|
|
178
|
+
|
|
179
|
+
### Common Input Parameters
|
|
180
|
+
|
|
181
|
+
All search tools accept:
|
|
182
|
+
|
|
183
|
+
| Parameter | Type | Default | Description |
|
|
184
|
+
|-----------|------|---------|-------------|
|
|
185
|
+
| `query` | string | required | Natural language search query |
|
|
186
|
+
| `max_results` | number | 3 | Maximum results to return (1-50) |
|
|
187
|
+
|
|
188
|
+
### `search_stack` Additional Parameter
|
|
189
|
+
|
|
190
|
+
| Parameter | Type | Description |
|
|
191
|
+
|-----------|------|-------------|
|
|
192
|
+
| `stack_name` | string | Framework name: `react`, `vue`, `nextjs`, `flutter`, `swiftui`, etc. |
|
|
193
|
+
|
|
194
|
+
### Response Format
|
|
195
|
+
|
|
196
|
+
All tools return results in this structure:
|
|
197
|
+
|
|
198
|
+
```typescript
|
|
199
|
+
{
|
|
200
|
+
results: Array<{
|
|
201
|
+
id: string; // Document identifier
|
|
202
|
+
score: number; // BM25 relevance score
|
|
203
|
+
type: string; // Document type (style, color, etc.)
|
|
204
|
+
data: object; // Full document data
|
|
205
|
+
}>;
|
|
206
|
+
total: number; // Total results returned
|
|
207
|
+
query: string; // Original search query
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Error Response
|
|
212
|
+
|
|
213
|
+
```typescript
|
|
214
|
+
{
|
|
215
|
+
error: string; // Error description
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## π οΈ Development
|
|
222
|
+
|
|
223
|
+
### Build Commands
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
# Build TypeScript to JavaScript
|
|
227
|
+
npm run build
|
|
228
|
+
|
|
229
|
+
# Development mode with hot reload
|
|
230
|
+
npm run dev
|
|
231
|
+
|
|
232
|
+
# Start production server (stdio mode)
|
|
233
|
+
npm start
|
|
234
|
+
|
|
235
|
+
# Start HTTP server for testing
|
|
236
|
+
npm run start:http
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Testing
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
# Run test suite
|
|
243
|
+
npm test
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### HTTP Mode for Testing
|
|
247
|
+
|
|
248
|
+
The server can run in HTTP mode for testing without MCP clients:
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
# Start HTTP server on port 3456
|
|
252
|
+
PORT=3456 npm run start:http
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
Then test with curl:
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
curl -X POST http://localhost:3456/mcp \
|
|
259
|
+
-H "Content-Type: application/json" \
|
|
260
|
+
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"search_colors","arguments":{"query":"fintech"}},"id":1}'
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### Project Structure
|
|
264
|
+
|
|
265
|
+
```
|
|
266
|
+
ui-ux-pro-mcp/
|
|
267
|
+
βββ src/
|
|
268
|
+
β βββ index.ts # MCP server entry point
|
|
269
|
+
β βββ data/
|
|
270
|
+
β β βββ loader.ts # CSV data loading utilities
|
|
271
|
+
β βββ search/
|
|
272
|
+
β β βββ bm25.ts # BM25 search implementation
|
|
273
|
+
β βββ tools/
|
|
274
|
+
β βββ index.ts # Tool exports
|
|
275
|
+
β βββ handlers.ts # Search handlers
|
|
276
|
+
βββ data/
|
|
277
|
+
β βββ *.csv # Design domain data files
|
|
278
|
+
β βββ stacks/ # Framework-specific guidelines
|
|
279
|
+
βββ dist/ # Compiled JavaScript output
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## π Environment Variables
|
|
285
|
+
|
|
286
|
+
| Variable | Default | Description |
|
|
287
|
+
|----------|---------|-------------|
|
|
288
|
+
| `MCP_LOG_LEVEL` | `info` | Log level (debug, info, warn, error) |
|
|
289
|
+
| `PORT` | `3000` | HTTP server port (when using HTTP transport) |
|
|
290
|
+
| `MCP_HTTP_HOST` | `localhost` | HTTP server host |
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## π HTTP Transport Mode
|
|
295
|
+
|
|
296
|
+
For development and testing, you can run the server in HTTP mode:
|
|
297
|
+
|
|
298
|
+
```bash
|
|
299
|
+
# Start HTTP server
|
|
300
|
+
npm run start:http
|
|
301
|
+
|
|
302
|
+
# Server runs at http://localhost:3000
|
|
303
|
+
# SSE endpoint: GET /sse
|
|
304
|
+
# Message endpoint: POST /message
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
Test with curl:
|
|
308
|
+
```bash
|
|
309
|
+
curl -X POST http://localhost:3000/message \
|
|
310
|
+
-H "Content-Type: application/json" \
|
|
311
|
+
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_colors","arguments":{"query":"fintech"}}}'
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
## β Troubleshooting
|
|
317
|
+
|
|
318
|
+
### MCP Connection Issues
|
|
319
|
+
|
|
320
|
+
**"Cannot find MCP server"**
|
|
321
|
+
- Ensure `npm run build` completed successfully
|
|
322
|
+
- Check the path in your MCP config points to `dist/index.js`
|
|
323
|
+
- Verify Node.js is in your PATH
|
|
324
|
+
|
|
325
|
+
**"No results returned"**
|
|
326
|
+
- Try broader search terms
|
|
327
|
+
- Use `search_all` for cross-domain queries
|
|
328
|
+
- Check if the domain matches your query type
|
|
329
|
+
|
|
330
|
+
**"Server not responding"**
|
|
331
|
+
- Restart VS Code/Claude Desktop
|
|
332
|
+
- Check terminal for error messages
|
|
333
|
+
- Verify the server process is running
|
|
334
|
+
|
|
335
|
+
### Common Queries
|
|
336
|
+
|
|
337
|
+
| Need | Best Tool |
|
|
338
|
+
|------|----------|
|
|
339
|
+
| Color palettes | `search_colors` |
|
|
340
|
+
| UI components | `search_ui_styles` |
|
|
341
|
+
| Best practices | `search_ux_guidelines` |
|
|
342
|
+
| Icons | `search_icons` |
|
|
343
|
+
| Framework tips | `search_stack` |
|
|
344
|
+
| Everything | `search_all` |
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## οΏ½ Contact
|
|
349
|
+
|
|
350
|
+
- **Telegram**: [@redf0x1](https://t.me/redf0x1)
|
|
351
|
+
- **GitHub**: [@redf0x1](https://github.com/redf0x1)
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
## οΏ½π License
|
|
356
|
+
|
|
357
|
+
MIT License β see [LICENSE](LICENSE) for details.
|
|
358
|
+
|
|
359
|
+
---
|
|
360
|
+
|
|
361
|
+
## π Acknowledgments
|
|
362
|
+
|
|
363
|
+
- **Original Data:** Based on [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
|
|
364
|
+
- **MCP SDK:** Built with [@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/sdk)
|
|
365
|
+
- **Search:** BM25 ranking algorithm for relevance scoring
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
369
|
+
<div align="center">
|
|
370
|
+
|
|
371
|
+
**[β Star this repo](https://github.com/redf0x1/ui-ux-pro-mcp)** if you find it useful!
|
|
372
|
+
|
|
373
|
+
Made with β€οΈ by [redf0x1](https://github.com/redf0x1)
|
|
374
|
+
|
|
375
|
+
</div>
|
package/data/.gitkeep
ADDED
|
File without changes
|
package/data/charts.csv
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
No,Data Type,Keywords,Best Chart Type,Secondary Options,Color Guidance,Performance Impact,Accessibility Notes,Library Recommendation,Interactive Level,ChartJS_Config,Recharts_Config,Data_Schema,Mock_Data_Example
|
|
2
|
+
1,Trend Over Time,"trend, time-series, line, growth, timeline, progress",Line Chart,"Area Chart, Smooth Area",Primary: #0080FF. Multiple series: use distinct colors. Fill: 20% opacity,β‘ Excellent (optimized),β Clear line patterns for colorblind users. Add pattern overlays.,"Chart.js, Recharts, ApexCharts",Hover + Zoom,"{ type: 'line', options: { responsive: true, plugins: { legend: { position: 'top' } }, scales: { x: { type: 'time' }, y: { beginAtZero: true } } } }",<LineChart><XAxis dataKey='time' /><YAxis /><Tooltip /><Legend /><Line type='monotone' dataKey='value' stroke='#0080FF' strokeWidth={2} /></LineChart>,interface DataPoint { time: string; value: number; category?: string; }[],"[{ ""time"": ""2026-01"", ""value"": 400 }, { ""time"": ""2026-02"", ""value"": 600 }]"
|
|
3
|
+
2,Compare Categories,"compare, categories, bar, comparison, ranking",Bar Chart (Horizontal or Vertical),"Column Chart, Grouped Bar",Each bar: distinct color. Category: grouped same color. Sorted: descending order,β‘ Excellent,β Easy to compare. Add value labels on bars for clarity.,"Chart.js, Recharts, D3.js",Hover + Sort,"{ type: 'bar', options: { responsive: true, indexAxis: 'x', plugins: { legend: { display: true } }, scales: { y: { beginAtZero: true } } } }",<BarChart><XAxis dataKey='category' /><YAxis /><Tooltip /><Legend /><Bar dataKey='value' fill='#8884d8' /></BarChart>,interface DataPoint { category: string; value: number; color?: string; }[],"[{ ""category"": ""A"", ""value"": 100 }, { ""category"": ""B"", ""value"": 200 }]"
|
|
4
|
+
3,Part-to-Whole,"part-to-whole, pie, donut, percentage, proportion, share",Pie Chart or Donut,"Stacked Bar, Treemap",Colors: 5-6 max. Contrasting palette. Large slices first. Use labels.,β‘ Good (limit 6 slices),β Hard for accessibility. Better: Stacked bar with legend. Avoid pie if >5 items.,"Chart.js, Recharts, D3.js",Hover + Drill,"{ type: 'doughnut', options: { cutout: '60%', plugins: { legend: { position: 'right' }, tooltip: { enabled: true } } } }",<PieChart><Pie data={data} dataKey='value' nameKey='name' cx='50%' cy='50%' innerRadius={60} outerRadius={80} fill='#8884d8' label /></PieChart>,interface Slice { name: string; value: number; color?: string; }[],"[{ ""name"": ""Mobile"", ""value"": 60 }, { ""name"": ""Desktop"", ""value"": 40 }]"
|
|
5
|
+
4,Correlation/Distribution,"correlation, distribution, scatter, relationship, pattern",Scatter Plot or Bubble Chart,"Heat Map, Matrix",Color axis: gradient (blue-red). Size: relative. Opacity: 0.6-0.8 to show density,β Moderate (many points),β Provide data table alternative. Use pattern + color distinction.,"D3.js, Plotly, Recharts",Hover + Brush,"{ type: 'scatter', options: { responsive: true, plugins: { legend: { display: true } }, scales: { x: { type: 'linear' }, y: { type: 'linear' } } } }",<ScatterChart><XAxis dataKey='x' type='number' /><YAxis dataKey='y' type='number' /><Tooltip /><Scatter data={data} fill='#8884d8' /></ScatterChart>,interface Point { x: number; y: number; z?: number; label?: string; }[],"[{ ""x"": 10, ""y"": 20 }, { ""x"": 15, ""y"": 35 }]"
|
|
6
|
+
5,Heatmap/Intensity,"heatmap, heat-map, intensity, density, matrix",Heat Map or Choropleth,"Grid Heat Map, Bubble Heat",Gradient: Cool (blue) to Hot (red). Scale: clear legend. Divergent for Β±data,β‘ Excellent (color CSS),β Colorblind: Use pattern overlay. Provide numerical legend.,"D3.js, Plotly, ApexCharts",Hover + Zoom,"{ type: 'matrix', options: { responsive: true, plugins: { legend: { display: true } }, scales: { x: { type: 'category' }, y: { type: 'category' } } } }",<ResponsiveContainer><ComposedChart><XAxis dataKey='x' /><YAxis dataKey='y' /><Tooltip /></ComposedChart></ResponsiveContainer>,interface Cell { x: string; y: string; value: number; }[],"[{ ""x"": ""Mon"", ""y"": ""Morning"", ""value"": 5 }, { ""x"": ""Mon"", ""y"": ""Evening"", ""value"": 8 }]"
|
|
7
|
+
6,Geographic Data,"geographic, map, location, region, geo, spatial","Choropleth Map, Bubble Map",Geographic Heat Map,Regional: single color gradient or categorized colors. Legend: clear scale,β Moderate (rendering),β Include text labels for regions. Provide data table alternative.,"D3.js, Mapbox, Leaflet",Pan + Zoom + Drill,"{ type: 'choropleth', options: { responsive: true, showOutline: true, plugins: { legend: { position: 'bottom' } } } }",Use react-simple-maps: <ComposableMap><Geographies geography={geoUrl}>{geographies.map(geo => <Geography key={geo.rsmKey} geography={geo} />)}</Geographies></ComposableMap>,interface Region { id: string; value: number; name: string; }[],"[{ ""id"": ""US"", ""value"": 100, ""name"": ""United States"" }, { ""id"": ""DE"", ""value"": 50, ""name"": ""Germany"" }]"
|
|
8
|
+
7,Funnel/Flow,funnel/flow,"Funnel Chart, Sankey",Waterfall (for flows),Stages: gradient (starting color β ending color). Show conversion %,β‘ Good,β Clear stage labels + percentages. Good for accessibility if labeled.,"D3.js, Recharts, Custom SVG",Hover + Drill,"{ type: 'bar', options: { indexAxis: 'y', responsive: true, plugins: { legend: { display: false } }, scales: { x: { stacked: true } } } }",<FunnelChart><Funnel dataKey='value' data={data} isAnimationActive><LabelList position='right' fill='#000' dataKey='name' /></Funnel></FunnelChart>,interface Stage { stage: string; value: number; conversionRate?: number; }[],"[{ ""stage"": ""Visits"", ""value"": 1000 }, { ""stage"": ""Signups"", ""value"": 200 }]"
|
|
9
|
+
8,Performance vs Target,performance-vs-target,Gauge Chart or Bullet Chart,"Dial, Thermometer",Performance: RedβYellowβGreen gradient. Target: marker line. Threshold colors,β‘ Good,β Add numerical value + percentage label beside gauge.,"D3.js, ApexCharts, Custom SVG",Hover,"{ type: 'doughnut', options: { circumference: 180, rotation: -90, cutout: '75%', plugins: { tooltip: { enabled: false } } } }",<RadialBarChart innerRadius='80%' outerRadius='100%' data={data} startAngle={180} endAngle={0}><RadialBar dataKey='value' fill='#22C55E' /><Legend /></RadialBarChart>,interface GaugeData { value: number; min: number; max: number; target?: number; },"{ ""value"": 75, ""min"": 0, ""max"": 100, ""target"": 80 }"
|
|
10
|
+
9,Time-Series Forecast,time-series-forecast,Line with Confidence Band,Ribbon Chart,Actual: solid line #0080FF. Forecast: dashed #FF9500. Band: light shading,β‘ Good,β Clearly distinguish actual vs forecast. Add legend.,"Chart.js, ApexCharts, Plotly",Hover + Toggle,"{ type: 'line', options: { responsive: true, plugins: { legend: { position: 'top' } }, scales: { x: { type: 'time' } } } }",<ComposedChart><XAxis dataKey='time' /><YAxis /><Area dataKey='confidence' fill='#8884d8' fillOpacity={0.3} /><Line type='monotone' dataKey='actual' stroke='#0080FF' /><Line type='monotone' dataKey='forecast' stroke='#FF9500' strokeDasharray='5 5' /></ComposedChart>,interface ForecastPoint { time: string; actual: number; forecast: number; confidenceLow: number; confidenceHigh: number; }[],"[{ ""time"": ""2026-Q1"", ""actual"": 100, ""forecast"": 100 }, { ""time"": ""2026-Q2"", ""actual"": null, ""forecast"": 120, ""confidenceLow"": 110, ""confidenceHigh"": 130 }]"
|
|
11
|
+
10,Anomaly Detection,anomaly-detection,Line Chart with Highlights,Scatter with Alert,Normal: blue #0080FF. Anomaly: red #FF0000 circle/square marker + alert,β‘ Good,β Circle/marker for anomalies. Add text alert annotation.,"D3.js, Plotly, ApexCharts",Hover + Alert,"{ type: 'line', options: { responsive: true, plugins: { annotation: { annotations: { anomaly: { type: 'point', backgroundColor: '#FF0000' } } } } } }",<ComposedChart><XAxis dataKey='time' /><YAxis /><Line type='monotone' dataKey='value' stroke='#0080FF' /><Scatter data={anomalies} fill='#FF0000' /></ComposedChart>,interface DataPoint { time: string; value: number; isAnomaly: boolean; }[],"[{ ""time"": ""10:00"", ""value"": 50, ""isAnomaly"": false }, { ""time"": ""10:05"", ""value"": 150, ""isAnomaly"": true }]"
|
|
12
|
+
11,Hierarchical/Nested Data,hierarchical/nested-data,Treemap,"Sunburst, Nested Donut, Icicle",Parent: distinct hues. Children: lighter shades. White borders 2-3px.,β Moderate,β Poor - provide table alternative. Label large areas.,"D3.js, Recharts, ApexCharts",Hover + Drilldown,"{ type: 'treemap', options: { responsive: true, plugins: { legend: { display: false } }, tree: { spacing: 2 } } }",<Treemap data={data} dataKey='size' aspectRatio={4/3} stroke='#fff' fill='#8884d8'><Tooltip /></Treemap>,interface TreeNode { name: string; size: number; children?: TreeNode[]; },"{ ""name"": ""Root"", ""children"": [{ ""name"": ""A"", ""size"": 100 }, { ""name"": ""B"", ""size"": 50 }] }"
|
|
13
|
+
12,Flow/Process Data,flow/process-data,Sankey Diagram,"Alluvial, Chord Diagram",Gradient from source to target. Opacity 0.4-0.6 for flows.,β Moderate,β Poor - provide flow table alternative.,"D3.js (d3-sankey), Plotly",Hover + Drilldown,"{ type: 'sankey', options: { responsive: true, plugins: { tooltip: { enabled: true } } } }",<Sankey data={data} nodeWidth={10} nodePadding={20}><Tooltip /></Sankey>,interface Flow { source: string; target: string; value: number; }[],"[{ ""source"": ""Page A"", ""target"": ""Page B"", ""value"": 50 }, { ""source"": ""Page B"", ""target"": ""Checkout"", ""value"": 20 }]"
|
|
14
|
+
13,Cumulative Changes,cumulative-changes,Waterfall Chart,"Stacked Bar, Cascade",Increases: #4CAF50. Decreases: #F44336. Start: #2196F3. End: #0D47A1.,β‘ Good,β Good - clear directional colors with labels.,"ApexCharts, Highcharts, Plotly",Hover,"{ type: 'bar', options: { responsive: true, plugins: { legend: { display: false } } } }","<BarChart><XAxis dataKey='name' /><YAxis /><Bar dataKey='value'>{data.map((e, i) => <Cell key={i} fill={e.value > 0 ? '#4CAF50' : '#F44336'} />)}</Bar></BarChart>",interface WaterfallItem { category: string; value: number; type?: 'increase' | 'decrease' | 'total'; }[],"[{ ""category"": ""Start"", ""value"": 100 }, { ""category"": ""Sales"", ""value"": 50 }, { ""category"": ""Cost"", ""value"": -30 }]"
|
|
15
|
+
14,Multi-Variable Comparison,multi-variable-comparison,Radar/Spider Chart,"Parallel Coordinates, Grouped Bar",Single: #0080FF 20% fill. Multiple: distinct colors per dataset.,β‘ Good,β Moderate - limit 5-8 axes. Add data table.,"Chart.js, Recharts, ApexCharts",Hover + Toggle,"{ type: 'radar', options: { responsive: true, plugins: { legend: { position: 'top' } }, scales: { r: { beginAtZero: true } } } }",<RadarChart outerRadius={90} data={data}><PolarGrid /><PolarAngleAxis dataKey='subject' /><PolarRadiusAxis /><Radar dataKey='value' stroke='#0080FF' fill='#0080FF' fillOpacity={0.2} /></RadarChart>,interface RadarPoint { subject: string; A: number; B: number; fullMark: number; }[],"[{ ""subject"": ""Math"", ""A"": 120, ""B"": 110, ""fullMark"": 150 }, { ""subject"": ""History"", ""A"": 98, ""B"": 130, ""fullMark"": 150 }]"
|
|
16
|
+
15,Stock/Trading OHLC,stock/trading-ohlc,Candlestick Chart,"OHLC Bar, Heikin-Ashi",Bullish: #26A69A. Bearish: #EF5350. Volume: 40% opacity below.,β‘ Good,β Moderate - provide OHLC data table.,"Lightweight Charts (TradingView), ApexCharts",Real-time + Hover + Zoom,"{ type: 'candlestick', options: { responsive: true, plugins: { legend: { display: false } }, scales: { x: { type: 'time' } } } }",Use recharts-candlestick or custom ComposedChart with Bar and ErrorBar components,interface OHLC { time: string; open: number; high: number; low: number; close: number; }[],"[{ ""time"": ""2026-01-01"", ""open"": 100, ""high"": 110, ""low"": 90, ""close"": 105 }]"
|
|
17
|
+
16,Relationship/Connection Data,relationship/connection-data,Network Graph,"Hierarchical Tree, Adjacency Matrix",Node types: categorical colors. Edges: #90A4AE 60% opacity.,β Poor (500+ nodes struggles),β Very Poor - provide adjacency list alternative.,"D3.js (d3-force), Vis.js, Cytoscape.js",Drilldown + Hover + Drag,"{ type: 'networkGraph', options: { responsive: true, plugins: { legend: { display: true } }, force: { repulsion: 100 } } }",Use react-force-graph or visx for network graphs - not native to Recharts,interface Graph { nodes: { id: string; group: number }[]; links: { source: string; target: string; value: number }[]; },"{ ""nodes"": [{ ""id"": ""A"", ""group"": 1 }, { ""id"": ""B"", ""group"": 2 }], ""links"": [{ ""source"": ""A"", ""target"": ""B"", ""value"": 1 }] }"
|
|
18
|
+
17,Distribution/Statistical,distribution/statistical,Box Plot,"Violin Plot, Beeswarm",Box: #BBDEFB. Border: #1976D2. Median: #D32F2F. Outliers: #F44336.,β‘ Excellent,"β Good - include stats table (min, Q1, median, Q3, max).","Plotly, D3.js, Chart.js (plugin)",Hover,"{ type: 'boxplot', options: { responsive: true, plugins: { legend: { display: true } } } }",<ComposedChart><XAxis dataKey='category' /><YAxis /><Bar dataKey='range' fill='#BBDEFB' stroke='#1976D2' /><Scatter dataKey='outliers' fill='#F44336' /></ComposedChart>,interface BoxPlot { category: string; min: number; q1: number; median: number; q3: number; max: number; outliers?: number[]; }[],"[{ ""category"": ""Group A"", ""min"": 0, ""q1"": 25, ""median"": 50, ""q3"": 75, ""max"": 100 }]"
|
|
19
|
+
18,Performance vs Target (Compact),performance-vs-target-(compact),Bullet Chart,"Gauge, Progress Bar","Ranges: #FFCDD2, #FFF9C4, #C8E6C9. Performance: #1976D2. Target: black 3px.",β‘ Excellent,β Excellent - compact with clear values.,"D3.js, Plotly, Custom SVG",Hover,"{ type: 'bar', options: { indexAxis: 'y', responsive: true, plugins: { annotation: { annotations: { target: { type: 'line', borderColor: 'black', borderWidth: 3 } } } } } }",<ComposedChart layout='vertical'><YAxis type='category' dataKey='name' /><XAxis type='number' /><Bar dataKey='ranges' stackId='a' fill='#C8E6C9' /><Bar dataKey='actual' fill='#1976D2' /><ReferenceLine x={target} stroke='black' strokeWidth={3} /></ComposedChart>,interface BulletData { title: string; ranges: number[]; measures: number[]; markers: number[]; }[],"[{ ""title"": ""Revenue"", ""ranges"": [150, 225, 300], ""measures"": [220], ""markers"": [250] }]"
|
|
20
|
+
19,Proportional/Percentage,proportional/percentage,Waffle Chart,"Pictogram, Stacked Bar 100%",10x10 grid. 3-5 categories max. 2-3px spacing between squares.,β‘ Good,β Good - better than pie for accessibility.,"D3.js, React-Waffle, Custom CSS Grid",Hover,"{ type: 'bar', options: { indexAxis: 'y', responsive: true, scales: { x: { stacked: true, max: 100 } } } }",Use @nivo/waffle: <Waffle total={100} data={data} rows={10} columns={10} />,interface WaffleData { id: string; label: string; value: number; color?: string; }[],"[{ ""id"": ""men"", ""label"": ""Men"", ""value"": 30 }, { ""id"": ""women"", ""label"": ""Women"", ""value"": 70 }]"
|
|
21
|
+
20,Hierarchical Proportional,hierarchical-proportional,Sunburst Chart,"Treemap, Icicle, Circle Packing",Center to outer: darker to lighter. 15-20% lighter per level.,β Moderate,β Poor - provide hierarchy table alternative.,"D3.js (d3-hierarchy), Recharts, ApexCharts",Drilldown + Hover,"{ type: 'doughnut', options: { cutout: '0%', plugins: { legend: { display: false } } } }",Use recharts-sunburst or visx for sunburst charts,interface SunburstNode { name: string; value?: number; children?: SunburstNode[]; },"{ ""name"": ""Topic"", ""children"": [{ ""name"": ""Subtopic A"", ""value"": 100 }, { ""name"": ""Subtopic B"", ""value"": 50 }] }"
|
|
22
|
+
21,Root Cause Analysis,"root cause, decomposition, tree, hierarchy, drill-down, ai-split",Decomposition Tree,"Decision Tree, Flow Chart",Nodes: #2563EB (Primary) vs #EF4444 (Negative impact). Connectors: Neutral grey.,β Moderate (calculation heavy),β clear hierarchy. Allow keyboard navigation for nodes.,"Power BI (native), React-Flow, Custom D3.js",Drill + Expand,"{ type: 'tree', options: { responsive: true, tree: { orientation: 'horizontal' }, plugins: { legend: { display: false } } } }",Use react-flow: <ReactFlow nodes={nodes} edges={edges} fitView><Background /><Controls /></ReactFlow>,interface DecisionTree { id: string; label: string; parentId?: string; value?: string; }[],"[{ ""id"": ""1"", ""label"": ""Root"" }, { ""id"": ""2"", ""label"": ""Option A"", ""parentId"": ""1"" }]"
|
|
23
|
+
22,3D Spatial Data,"3d, spatial, immersive, terrain, molecular, volumetric",3D Scatter/Surface Plot,"Volumetric Rendering, Point Cloud",Depth cues: lighting/shading. Z-axis: color gradient (cool to warm).,β Heavy (WebGL required),β Poor - requires alternative 2D view or data table.,"Three.js, Deck.gl, Plotly 3D",Rotate + Zoom + VR,"{ type: 'scatter3D', options: { responsive: true, scales: { x: { type: 'linear' }, y: { type: 'linear' }, z: { type: 'linear' } } } }",Not supported in Recharts - use @react-three/fiber with drei for 3D,interface Point3D { x: number; y: number; z: number; category?: string; }[],"[{ ""x"": 10, ""y"": 20, ""z"": 30 }, { ""x"": 15, ""y"": 25, ""z"": 10 }]"
|
|
24
|
+
23,Real-Time Streaming,"streaming, real-time, ticker, live, velocity, pulse",Streaming Area Chart,"Ticker Tape, Moving Gauge",Current: Bright Pulse (#00FF00). History: Fading opacity. Grid: Dark.,β‘ Optimized (canvas/webgl),β Flashing elements - provide pause button. High contrast.,"Smoothed D3.js, CanvasJS, SciChart",Real-time + Pause,"{ type: 'line', options: { responsive: true, animation: { duration: 0 }, scales: { x: { type: 'realtime' } } } }",<AreaChart data={streamData} isAnimationActive={false}><XAxis dataKey='time' /><YAxis /><Area type='monotone' dataKey='value' stroke='#00FF00' fill='#00FF00' fillOpacity={0.3} /></AreaChart>,interface StreamData { time: string; value: number; }[],"[{ ""time"": ""12:00:00"", ""value"": 50 }, { ""time"": ""12:00:01"", ""value"": 55 }]"
|
|
25
|
+
24,Sentiment/Emotion,"sentiment, emotion, nlp, opinion, feeling",Word Cloud with Sentiment,"Sentiment Arc, Radar Chart",Positive: #22C55E. Negative: #EF4444. Neutral: #94A3B8. Size = Frequency.,β‘ Good,β Word clouds poor for screen readers. Use list view.,"D3-cloud, Highcharts, Nivo",Hover + Filter,"{ type: 'wordCloud', options: { responsive: true, plugins: { legend: { display: false } } } }","Use react-wordcloud: <WordCloud words={words} options={{ colors: ['#22C55E', '#94A3B8', '#EF4444'] }} />",interface Word { text: string; value: number; sentiment?: 'pos' | 'neg' | 'neu'; }[],"[{ ""text"": ""Good"", ""value"": 100, ""sentiment"": ""pos"" }, { ""text"": ""Bad"", ""value"": 20, ""sentiment"": ""neg"" }]"
|
|
26
|
+
25,Process Mining,"process, mining, variants, path, bottleneck, log",Process Map / Graph,"Directed Acyclic Graph (DAG), Petri Net",Happy path: #10B981 (Thick). Deviations: #F59E0B (Thin). Bottlenecks: #EF4444.,β Moderate to Heavy,β Complex graphs hard to navigate. Provide path summary.,"React-Flow, Cytoscape.js, Recharts",Drag + Node-Click,"{ type: 'sankey', options: { responsive: true, plugins: { tooltip: { enabled: true } } } }",Use react-flow: <ReactFlow nodes={processNodes} edges={processEdges}><Background variant='dots' /><MiniMap /></ReactFlow>,interface ProcessNode { id: string; label: string; type: string; } interface ProcessEdge { source: string; target: string; label?: string; },"{ ""nodes"": [{ ""id"": ""1"", ""label"": ""Start"", ""type"": ""event"" }], ""edges"": [{ ""source"": ""1"", ""target"": ""2"" }] }"
|
|
27
|
+
26,Candlestick Trading,"candlestick, ohlc, trading, stocks, financial, market",Candlestick Chart,"OHLC Bar, Heikin-Ashi, Line with range",Bullish: #22C55E. Bearish: #EF4444. Volume: 30% opacity. Grid: subtle #E5E7EB.,β‘ Good,β Provide data table alternative. Color-blind friendly with icons.,"TradingView Lightweight Charts, ApexCharts, Recharts",Real-time + Zoom + Crosshair,"{ type: 'candlestick', options: { responsive: true, scales: { x: { type: 'time' }, y: { position: 'right' } } } }",Use lightweight-charts or custom ComposedChart with Bar components for OHLC,interface OHLCV { time: string; open: number; high: number; low: number; close: number; volume: number; }[],"[{ ""time"": ""2026-01-01"", ""open"": 100, ""high"": 110, ""low"": 90, ""close"": 105, ""volume"": 1000 }]"
|
|
28
|
+
27,Confusion Matrix,"confusion, matrix, ml, classification, model, accuracy",Confusion Matrix Heatmap,"Normalized Matrix, Error Analysis Grid",True Positive/Negative: #22C55E gradient. False: #EF4444 gradient. Diagonal highlight.,β‘ Excellent,β Clear labels essential. Include precision/recall metrics.,"Plotly, D3.js, Custom SVG",Hover + Cell Details,"{ type: 'matrix', options: { responsive: true, plugins: { tooltip: { enabled: true } }, scales: { color: { type: 'color' } } } }","Use @nivo/heatmap: <HeatMap data={matrix} keys={labels} indexBy='actual' colors={{ type: 'diverging', scheme: 'red_yellow_green' }} />",interface ConfusionMatrix { actual: string; predicted: string; count: number; }[],"[{ ""actual"": ""True"", ""predicted"": ""True"", ""count"": 100 }, { ""actual"": ""True"", ""predicted"": ""False"", ""count"": 10 }]"
|
|
29
|
+
28,KPI Sparkline,"kpi, sparkline, metric, indicator, trend, card",KPI Card with Sparkline,"Metric Card, Stat Box",KPI value: Large #0F172A. Sparkline: #3B82F6. Trend: Green up Red down.,β‘ Excellent,β Include numeric values. Trend direction with text.,"Recharts, Tremor, Custom SVG",Hover + Click Drill,"{ type: 'line', options: { responsive: true, plugins: { legend: { display: false } }, scales: { x: { display: false }, y: { display: false } }, elements: { point: { radius: 0 } } } }",<AreaChart width={100} height={40} data={sparkData}><Area type='monotone' dataKey='value' stroke='#3B82F6' fill='#3B82F6' fillOpacity={0.2} /></AreaChart>,interface SparkLine { time: string; value: number; }[],"[{ ""time"": ""1"", ""value"": 10 }, { ""time"": ""2"", ""value"": 15 }, { ""time"": ""3"", ""value"": 8 }]"
|
|
30
|
+
29,Radial Gauge,"gauge, speedometer, progress, dial, radial, meter",Radial Gauge / Speedometer,"Bullet Chart, Progress Ring",Zones: Red #EF4444 Yellow #F59E0B Green #22C55E. Needle: #1E293B.,β‘ Good,β Add numeric value display. Clear zone labels.,"ApexCharts, D3.js, ECharts",Hover,"{ type: 'doughnut', options: { circumference: 270, rotation: 225, cutout: '80%', plugins: { tooltip: { enabled: false } } } }","<RadialBarChart innerRadius='60%' outerRadius='100%' data={gaugeData} startAngle={225} endAngle={-45}><PolarAngleAxis type='number' domain={[0, 100]} tick={false} /><RadialBar dataKey='value' cornerRadius={10} fill='#22C55E' /></RadialBarChart>",interface GaugeValue { value: number; max: number; unit: string; },"{ ""value"": 80, ""max"": 100, ""unit"": ""km/h"" }"
|
|
31
|
+
30,Bullet Progress,"bullet, progress, target, performance, comparison",Bullet Chart,"Gauge, Progress Bar, Bar with Target",Ranges: Light to dark gray gradient. Actual: #3B82F6. Target: Black 2px line.,β‘ Excellent,β Excellent accessibility. Clear value labels.,"D3.js, Plotly, Custom SVG",Hover,"{ type: 'bar', options: { indexAxis: 'y', responsive: true, plugins: { annotation: { annotations: { target: { type: 'line', borderColor: '#000', borderWidth: 2 } } } } } }",<ComposedChart layout='vertical'><YAxis type='category' dataKey='name' hide /><XAxis type='number' /><Bar dataKey='poor' stackId='range' fill='#E5E7EB' /><Bar dataKey='ok' stackId='range' fill='#CBD5E1' /><Bar dataKey='good' stackId='range' fill='#94A3B8' /><Bar dataKey='actual' fill='#3B82F6' /><ReferenceLine x={target} stroke='#000' strokeWidth={2} /></ComposedChart>,interface BulletChart { target: number; actual: number; rangeLow: number; rangeMid: number; rangeHigh: number; },"{ ""target"": 90, ""actual"": 85, ""rangeLow"": 0, ""rangeMid"": 50, ""rangeHigh"": 100 }"
|
|
32
|
+
31,Stream Flow,"stream, flow, volume, stacked, area, time",Stream Graph,"Stacked Area, ThemeRiver",Color per category. Center-aligned baseline. 60-80% opacity.,β Moderate,β Hard to read exact values. Provide data table.,"D3.js, Nivo, Recharts",Hover + Toggle Layers,"{ type: 'line', options: { responsive: true, scales: { y: { stacked: true } }, elements: { line: { tension: 0.4, fill: true } } } }",<AreaChart stackOffset='silhouette'><XAxis dataKey='time' /><YAxis />{categories.map(cat => <Area type='monotone' dataKey={cat} stackId='1' fill={colors[cat]} fillOpacity={0.7} />)}</AreaChart>,interface StreamLayer { id: string; data: { x: any; y: number }[]; }[],"[{ ""id"": ""Layer A"", ""data"": [{ ""x"": 1, ""y"": 10 }, { ""x"": 2, ""y"": 20 }] }, { ""id"": ""Layer B"", ""data"": [{ ""x"": 1, ""y"": 15 }, { ""x"": 2, ""y"": 25 }] }]"
|
|
33
|
+
32,Waterfall Financial,"waterfall, financial, bridge, cumulative, change",Waterfall Chart,"Cascade Chart, Bridge Chart",Increase: #22C55E. Decrease: #EF4444. Total: #3B82F6. Connectors: #94A3B8.,β‘ Good,β Good accessibility with clear labels. Show running total.,"ApexCharts, Recharts, Plotly",Hover + Annotations,"{ type: 'bar', options: { responsive: true, plugins: { legend: { display: false } } } }","<BarChart><XAxis dataKey='name' /><YAxis /><Bar dataKey='start' stackId='a' fill='transparent' /><Bar dataKey='value' stackId='a'>{data.map((e, i) => <Cell key={i} fill={e.type === 'increase' ? '#22C55E' : '#EF4444'} />)}</Bar></BarChart>",interface FinancialWaterfall { label: string; amount: number; isTotal?: boolean; }[],"[{ ""label"": ""Product Revenue"", ""amount"": 100 }, { ""label"": ""Services Revenue"", ""amount"": 30 }, { ""label"": ""Total"", ""amount"": 130, ""isTotal"": true }]"
|
|
34
|
+
33,Chord Relationships,"chord, relationships, flow, connections, matrix",Chord Diagram,"Sankey, Arc Diagram, Network",Color per group. Arc connections 40% opacity. Hover highlight 100%.,β Moderate,β Complex for screen readers. Provide matrix alternative.,"D3.js (d3-chord), Nivo, Plotly",Hover + Click Filter,"{ type: 'chord', options: { responsive: true, plugins: { tooltip: { enabled: true } }, arc: { borderWidth: 1 } } }",Use @nivo/chord: <Chord matrix={matrix} keys={keys} colors={{ scheme: 'nivo' }} arcOpacity={0.65} ribbonOpacity={0.4} />,interface ChordMatrix { keys: string[]; matrix: number[][]; },"{ ""keys"": [""A"", ""B""], ""matrix"": [[10, 20], [5, 15]] }"
|
|
35
|
+
34,Parallel Coordinates,"parallel, coordinates, multivariate, dimensions, comparison",Parallel Coordinates Plot,"Radar Chart, Scatter Matrix",Lines: Category colors 40% opacity. Axes: #64748B. Selected: 100% bright.,β Moderate,β Complex visualization. Limit to 5-8 dimensions. Provide table.,"D3.js, Plotly, Vega-Lite",Brush + Select + Filter,"{ type: 'line', options: { responsive: true, plugins: { legend: { display: true } }, scales: { y: { display: false } } } }",Use @visx/shape ParallelCoordinates or D3.js - not native to Recharts,interface ParallelData { [dimension: string]: number | string; }[],"[{ ""dim1"": 10, ""dim2"": 5, ""category"": ""A"" }, { ""dim1"": 20, ""dim2"": 8, ""category"": ""B"" }]"
|
|
36
|
+
35,Marimekko Market,"marimekko, mekko, market, composition, two-dimensional",Marimekko / Mekko Chart,"Treemap, Stacked Bar, Mosaic",Category colors. Width = market size. Height = share. Clear borders.,β Moderate,β Can be confusing. Clear labels essential. Provide breakdown table.,"D3.js, Plotly, ECharts",Hover + Drill,"{ type: 'bar', options: { responsive: true, scales: { x: { stacked: true }, y: { stacked: true, max: 100 } } } }",Use @nivo/marimekko: <Marimekko data={data} id='segment' value='population' dimensions={dimensions} innerPadding={3} />,interface MekkoData { x: string; y: string; value: number; }[],"[{ ""x"": ""Region A"", ""y"": ""Product X"", ""value"": 100 }, { ""x"": ""Region A"", ""y"": ""Product Y"", ""value"": 50 }]"
|