@mohityadav0903/branintelle-mcp 2.2.0 → 3.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/MCP-V3-RELEASE-NOTES.md +189 -0
- package/mcp-server.js +192 -5
- package/package.json +1 -1
- package/screen-patterns.json +392 -0
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# 🎉 MCP v3.0 - Enhanced with Screen Patterns & Figma Screenshots
|
|
2
|
+
|
|
3
|
+
## ✅ What Was Completed
|
|
4
|
+
|
|
5
|
+
### 1. **6 Figma Screenshots Uploaded to S3**
|
|
6
|
+
```
|
|
7
|
+
✅ screen_001_briefs_listing_drafts.png (184 KB)
|
|
8
|
+
✅ screen_002_rfp_triage_assign_buyer.png (198 KB)
|
|
9
|
+
✅ screen_003_rfp_in_progress_all_status.png (153 KB)
|
|
10
|
+
✅ screen_004_brief_creation_step2_supporting.png (98 KB)
|
|
11
|
+
✅ screen_005_brief_creation_step4_vendor_recommendation.png (116 KB)
|
|
12
|
+
✅ screen_006_provisions_listing_grouped.png (140 KB)
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**Base URL:** `https://figr-branintelle-assets.s3.amazonaws.com/screens/`
|
|
16
|
+
|
|
17
|
+
### 2. **Created `screen-patterns.json`**
|
|
18
|
+
Comprehensive screen pattern database including:
|
|
19
|
+
- Screen metadata (type, route, module)
|
|
20
|
+
- Workflow patterns
|
|
21
|
+
- Components used
|
|
22
|
+
- Features (bulk selection, tabs, filters, etc.)
|
|
23
|
+
- Design patterns
|
|
24
|
+
- Key interactions
|
|
25
|
+
- **Screenshot URLs** 🎯
|
|
26
|
+
|
|
27
|
+
### 3. **Enhanced MCP Server (v3.0.0)**
|
|
28
|
+
|
|
29
|
+
#### 🆕 New Tools Added:
|
|
30
|
+
|
|
31
|
+
**`get_screen_patterns`**
|
|
32
|
+
```typescript
|
|
33
|
+
// Get all listing page patterns
|
|
34
|
+
get_screen_patterns({ screen_type: "listing_page" })
|
|
35
|
+
|
|
36
|
+
// Filter by workflow
|
|
37
|
+
get_screen_patterns({ workflow: "triage_assignment" })
|
|
38
|
+
|
|
39
|
+
// Filter by module
|
|
40
|
+
get_screen_patterns({ module: "P2P" })
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**`get_screen_details`**
|
|
44
|
+
```typescript
|
|
45
|
+
// Get full details of a specific screen with screenshot
|
|
46
|
+
get_screen_details({
|
|
47
|
+
screen_id: "screen_001",
|
|
48
|
+
include_components: true
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
// Returns:
|
|
52
|
+
{
|
|
53
|
+
screen: {
|
|
54
|
+
name: "Briefs Listing - Drafts Tab",
|
|
55
|
+
screenshot_url: "https://figr-branintelle-assets.s3.amazonaws.com/screens/screen_001_briefs_listing_drafts.png",
|
|
56
|
+
components_used: ["stats-cards", "tabs", "scrollable-data-table"],
|
|
57
|
+
features: { has_bulk_selection: true, has_tabs: true }
|
|
58
|
+
},
|
|
59
|
+
components_breakdown: [...]
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**`search_by_pattern`**
|
|
64
|
+
```typescript
|
|
65
|
+
// Find screens with specific features
|
|
66
|
+
search_by_pattern({
|
|
67
|
+
features: ["bulk_selection", "inline_actions"],
|
|
68
|
+
components: ["stats-cards", "data-table"]
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
// Find by workflow
|
|
72
|
+
search_by_pattern({ workflow: "active_management" })
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### 4. **All Existing Tools Still Work**
|
|
76
|
+
✅ `list_components`
|
|
77
|
+
✅ `get_component_docs`
|
|
78
|
+
✅ `get_design_tokens`
|
|
79
|
+
✅ `search_components`
|
|
80
|
+
✅ `get_usage_pattern`
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## 🎯 **How LLMs Can Use This**
|
|
85
|
+
|
|
86
|
+
### Example 1: "Show me how to build a listing page"
|
|
87
|
+
```typescript
|
|
88
|
+
// LLM calls:
|
|
89
|
+
get_screen_patterns({ screen_type: "listing_page" })
|
|
90
|
+
|
|
91
|
+
// Gets back:
|
|
92
|
+
{
|
|
93
|
+
screens: [{
|
|
94
|
+
name: "Briefs Listing",
|
|
95
|
+
screenshot_url: "https://...", // ← LLM can SEE the screen!
|
|
96
|
+
components_used: ["stats-cards", "tabs", "scrollable-data-table"],
|
|
97
|
+
features: { has_bulk_selection: true, has_tabs: true }
|
|
98
|
+
}]
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Then LLM can:
|
|
102
|
+
get_component_docs({ components: ["StatsCards", "Tabs", "ScrollableDataTable"] })
|
|
103
|
+
|
|
104
|
+
// And implement the exact pattern!
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Example 2: "Find screens with inline actions"
|
|
108
|
+
```typescript
|
|
109
|
+
search_by_pattern({ features: ["inline_actions"] })
|
|
110
|
+
|
|
111
|
+
// Returns screen_002 (RFP Triage) with screenshot showing inline "Assign Buyer" buttons
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Example 3: "Show me wizard forms"
|
|
115
|
+
```typescript
|
|
116
|
+
get_screen_patterns({ screen_type: "form_wizard" })
|
|
117
|
+
|
|
118
|
+
// Returns screen_004 and screen_005 with step-by-step wizard screenshots
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## 📊 **Screen Types Available**
|
|
124
|
+
|
|
125
|
+
| Type | Count | Examples |
|
|
126
|
+
|------|-------|----------|
|
|
127
|
+
| `listing_page` | 1 | Briefs Listing |
|
|
128
|
+
| `listing_page_workflow` | 1 | RFP Triage |
|
|
129
|
+
| `listing_page_complex` | 1 | RFP In Progress |
|
|
130
|
+
| `listing_page_grouped` | 1 | Provisions Listing |
|
|
131
|
+
| `form_wizard` | 2 | Brief Creation Steps |
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## 🔄 **Workflow Patterns**
|
|
136
|
+
|
|
137
|
+
- `classic_list_index` - Standard listing with tabs
|
|
138
|
+
- `triage_assignment` - Items awaiting assignment
|
|
139
|
+
- `active_management` - Complex status management
|
|
140
|
+
- `grouped_listing_readonly` - Collapsible vendor groups
|
|
141
|
+
- `multi_step_form` - Wizard-based forms
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## 🚀 **Publishing**
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
cd /Users/mohityadav/Downloads/branintelle-mcp
|
|
149
|
+
npm publish
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Version: **3.0.0**
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## 🎁 **Benefits**
|
|
157
|
+
|
|
158
|
+
✅ **Visual Context** - LLMs can see actual screens
|
|
159
|
+
✅ **Pattern-Based** - Find by workflow, not just components
|
|
160
|
+
✅ **Feature-Driven** - Search by capabilities (bulk ops, filters, etc.)
|
|
161
|
+
✅ **Screenshot URLs** - Direct visual reference
|
|
162
|
+
✅ **Component Mapping** - Know exactly which components to use
|
|
163
|
+
✅ **Workflow Guidance** - Understand the user flow
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## 📝 **Next Steps**
|
|
168
|
+
|
|
169
|
+
1. ✅ Publish MCP v3.0.0
|
|
170
|
+
2. ✅ Test with Claude/LLMs
|
|
171
|
+
3. ⏳ Add more screens as they're designed
|
|
172
|
+
4. ⏳ Consider adding component-to-screen mapping
|
|
173
|
+
5. ⏳ Add video/GIF support for interactions
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## 🔗 **Quick Test**
|
|
178
|
+
|
|
179
|
+
Try these in your MCP-enabled LLM:
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
"Show me listing page patterns with screenshots"
|
|
183
|
+
"Find screens that have bulk selection"
|
|
184
|
+
"What components are used in the RFP triage screen?"
|
|
185
|
+
"Show me wizard form examples"
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
The LLM will now get back visual references + component documentation! 🎯
|
|
189
|
+
|
package/mcp-server.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Branintelle UI Library - MCP Server
|
|
5
|
-
* Enhanced with
|
|
4
|
+
* Branintelle UI Library - MCP Server v3.0
|
|
5
|
+
* Enhanced with screen patterns, Figma screenshots, and workflow-based search
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
@@ -26,11 +26,16 @@ const designTokens = JSON.parse(
|
|
|
26
26
|
// Load component data
|
|
27
27
|
import { COMPONENTS_DATA, COMPONENT_CATEGORIES, USAGE_PATTERNS } from './components-data.js';
|
|
28
28
|
|
|
29
|
+
// Load screen patterns
|
|
30
|
+
const screenPatterns = JSON.parse(
|
|
31
|
+
readFileSync(join(__dirname, 'screen-patterns.json'), 'utf-8')
|
|
32
|
+
);
|
|
33
|
+
|
|
29
34
|
// Create server instance
|
|
30
35
|
const server = new Server(
|
|
31
36
|
{
|
|
32
37
|
name: 'branintelle-ui-lib',
|
|
33
|
-
version: '
|
|
38
|
+
version: '3.0.0',
|
|
34
39
|
},
|
|
35
40
|
{
|
|
36
41
|
capabilities: {
|
|
@@ -127,6 +132,70 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
127
132
|
},
|
|
128
133
|
},
|
|
129
134
|
},
|
|
135
|
+
{
|
|
136
|
+
name: 'get_screen_patterns',
|
|
137
|
+
description: 'Get Figma screen patterns with screenshots. Filter by screen type, workflow, or module to find relevant UI patterns.',
|
|
138
|
+
inputSchema: {
|
|
139
|
+
type: 'object',
|
|
140
|
+
properties: {
|
|
141
|
+
screen_type: {
|
|
142
|
+
type: 'string',
|
|
143
|
+
description: 'Filter by screen type',
|
|
144
|
+
enum: ['listing_page', 'listing_page_workflow', 'listing_page_complex', 'listing_page_grouped', 'form_wizard', 'all'],
|
|
145
|
+
},
|
|
146
|
+
workflow: {
|
|
147
|
+
type: 'string',
|
|
148
|
+
description: 'Filter by workflow pattern (e.g., triage_assignment, active_management)',
|
|
149
|
+
},
|
|
150
|
+
module: {
|
|
151
|
+
type: 'string',
|
|
152
|
+
description: 'Filter by module (e.g., P2P, Plan to Impact)',
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
name: 'get_screen_details',
|
|
159
|
+
description: 'Get detailed information about a specific screen including screenshot URL, components used, and interactions',
|
|
160
|
+
inputSchema: {
|
|
161
|
+
type: 'object',
|
|
162
|
+
properties: {
|
|
163
|
+
screen_id: {
|
|
164
|
+
type: 'string',
|
|
165
|
+
description: 'Screen ID (screen_001, screen_002, etc.)',
|
|
166
|
+
},
|
|
167
|
+
include_components: {
|
|
168
|
+
type: 'boolean',
|
|
169
|
+
description: 'Include full component documentation',
|
|
170
|
+
default: true
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
required: ['screen_id'],
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
name: 'search_by_pattern',
|
|
178
|
+
description: 'Search screens and components by workflow pattern or features (bulk_selection, inline_actions, etc.)',
|
|
179
|
+
inputSchema: {
|
|
180
|
+
type: 'object',
|
|
181
|
+
properties: {
|
|
182
|
+
workflow: {
|
|
183
|
+
type: 'string',
|
|
184
|
+
description: 'Workflow pattern to search for',
|
|
185
|
+
},
|
|
186
|
+
features: {
|
|
187
|
+
type: 'array',
|
|
188
|
+
items: { type: 'string' },
|
|
189
|
+
description: 'Required features (e.g., bulk_selection, tabs, filters)',
|
|
190
|
+
},
|
|
191
|
+
components: {
|
|
192
|
+
type: 'array',
|
|
193
|
+
items: { type: 'string' },
|
|
194
|
+
description: 'Required components (e.g., stats-cards, data-table)',
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
},
|
|
198
|
+
},
|
|
130
199
|
],
|
|
131
200
|
};
|
|
132
201
|
});
|
|
@@ -366,6 +435,123 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
366
435
|
};
|
|
367
436
|
}
|
|
368
437
|
|
|
438
|
+
// GET SCREEN PATTERNS
|
|
439
|
+
if (name === 'get_screen_patterns') {
|
|
440
|
+
const screen_type = args?.screen_type;
|
|
441
|
+
const workflow = args?.workflow;
|
|
442
|
+
const module = args?.module;
|
|
443
|
+
|
|
444
|
+
let screens = Object.values(screenPatterns.screens);
|
|
445
|
+
|
|
446
|
+
if (screen_type && screen_type !== 'all') {
|
|
447
|
+
screens = screens.filter(s => s.type === screen_type);
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
if (workflow) {
|
|
451
|
+
screens = screens.filter(s => s.workflow_pattern === workflow);
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
if (module) {
|
|
455
|
+
screens = screens.filter(s => s.module === module);
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
return {
|
|
459
|
+
content: [
|
|
460
|
+
{
|
|
461
|
+
type: 'text',
|
|
462
|
+
text: JSON.stringify({
|
|
463
|
+
filters: { screen_type, workflow, module },
|
|
464
|
+
count: screens.length,
|
|
465
|
+
screens: screens,
|
|
466
|
+
screen_types: Object.keys(screenPatterns.screenTypes || {}),
|
|
467
|
+
}, null, 2),
|
|
468
|
+
},
|
|
469
|
+
],
|
|
470
|
+
};
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
// GET SCREEN DETAILS
|
|
474
|
+
if (name === 'get_screen_details') {
|
|
475
|
+
const screen_id = args?.screen_id;
|
|
476
|
+
const include_components = args?.include_components !== false;
|
|
477
|
+
|
|
478
|
+
const screen = screenPatterns.screens[screen_id];
|
|
479
|
+
|
|
480
|
+
if (!screen) {
|
|
481
|
+
return {
|
|
482
|
+
content: [
|
|
483
|
+
{
|
|
484
|
+
type: 'text',
|
|
485
|
+
text: JSON.stringify({
|
|
486
|
+
error: 'Screen not found',
|
|
487
|
+
available_screens: Object.keys(screenPatterns.screens)
|
|
488
|
+
}, null, 2),
|
|
489
|
+
},
|
|
490
|
+
],
|
|
491
|
+
};
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
const result = { screen };
|
|
495
|
+
|
|
496
|
+
if (include_components) {
|
|
497
|
+
result.components_breakdown = screen.components_used
|
|
498
|
+
.map(name => COMPONENTS_DATA[name + 'Component'])
|
|
499
|
+
.filter(Boolean);
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
return {
|
|
503
|
+
content: [
|
|
504
|
+
{
|
|
505
|
+
type: 'text',
|
|
506
|
+
text: JSON.stringify(result, null, 2),
|
|
507
|
+
},
|
|
508
|
+
],
|
|
509
|
+
};
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
// SEARCH BY PATTERN
|
|
513
|
+
if (name === 'search_by_pattern') {
|
|
514
|
+
const workflow = args?.workflow;
|
|
515
|
+
const features = args?.features || [];
|
|
516
|
+
const components = args?.components || [];
|
|
517
|
+
|
|
518
|
+
let screens = Object.values(screenPatterns.screens);
|
|
519
|
+
|
|
520
|
+
if (workflow) {
|
|
521
|
+
screens = screens.filter(s => s.workflow_pattern === workflow);
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
if (features.length > 0) {
|
|
525
|
+
screens = screens.filter(s =>
|
|
526
|
+
features.every(f => s.features[f] === true)
|
|
527
|
+
);
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
if (components.length > 0) {
|
|
531
|
+
screens = screens.filter(s =>
|
|
532
|
+
components.every(c => s.components_used.includes(c))
|
|
533
|
+
);
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
// Get recommended components based on matching screens
|
|
537
|
+
const allComponents = new Set();
|
|
538
|
+
screens.forEach(s => s.components_used.forEach(c => allComponents.add(c)));
|
|
539
|
+
|
|
540
|
+
return {
|
|
541
|
+
content: [
|
|
542
|
+
{
|
|
543
|
+
type: 'text',
|
|
544
|
+
text: JSON.stringify({
|
|
545
|
+
filters: { workflow, features, components },
|
|
546
|
+
matching_screens: screens,
|
|
547
|
+
count: screens.length,
|
|
548
|
+
recommended_components: Array.from(allComponents),
|
|
549
|
+
}, null, 2),
|
|
550
|
+
},
|
|
551
|
+
],
|
|
552
|
+
};
|
|
553
|
+
}
|
|
554
|
+
|
|
369
555
|
return {
|
|
370
556
|
content: [
|
|
371
557
|
{
|
|
@@ -390,8 +576,9 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
390
576
|
async function main() {
|
|
391
577
|
const transport = new StdioServerTransport();
|
|
392
578
|
await server.connect(transport);
|
|
393
|
-
console.error('Branintelle UI Library MCP Server
|
|
394
|
-
console.error('Enhanced with
|
|
579
|
+
console.error('Branintelle UI Library MCP Server v3.0 running on stdio');
|
|
580
|
+
console.error('✨ Enhanced with screen patterns and Figma screenshots');
|
|
581
|
+
console.error('📸 6 screens available with visual references');
|
|
395
582
|
}
|
|
396
583
|
|
|
397
584
|
main().catch((error) => {
|
package/package.json
CHANGED
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
{
|
|
2
|
+
"screens": {
|
|
3
|
+
"screen_001": {
|
|
4
|
+
"id": "screen_001",
|
|
5
|
+
"name": "Briefs Listing - Drafts Tab",
|
|
6
|
+
"type": "listing_page",
|
|
7
|
+
"route": "/briefs",
|
|
8
|
+
"module": "Plan to Impact",
|
|
9
|
+
"workflow_pattern": "classic_list_index",
|
|
10
|
+
"screenshot_url": "https://figr-branintelle-assets.s3.amazonaws.com/screens/screen_001_briefs_listing_drafts.png",
|
|
11
|
+
"components_used": [
|
|
12
|
+
"stats-cards",
|
|
13
|
+
"tabs",
|
|
14
|
+
"action-bar",
|
|
15
|
+
"scrollable-data-table"
|
|
16
|
+
],
|
|
17
|
+
"features": {
|
|
18
|
+
"has_bulk_selection": true,
|
|
19
|
+
"has_row_actions": true,
|
|
20
|
+
"has_tabs": true,
|
|
21
|
+
"has_filters": true,
|
|
22
|
+
"has_search": true,
|
|
23
|
+
"has_export": true,
|
|
24
|
+
"has_wizard": false,
|
|
25
|
+
"has_grouping": false
|
|
26
|
+
},
|
|
27
|
+
"design_patterns": [
|
|
28
|
+
"Stats cards",
|
|
29
|
+
"Tab navigation",
|
|
30
|
+
"Data table with sorting",
|
|
31
|
+
"Bulk selection",
|
|
32
|
+
"Row actions menu",
|
|
33
|
+
"Search and filter",
|
|
34
|
+
"Primary/secondary CTAs"
|
|
35
|
+
],
|
|
36
|
+
"key_interactions": [
|
|
37
|
+
"Bulk select briefs via checkboxes",
|
|
38
|
+
"Filter briefs using filter button",
|
|
39
|
+
"Search briefs by keyword",
|
|
40
|
+
"Sort columns by clicking headers",
|
|
41
|
+
"Access row actions via 3-dot menu",
|
|
42
|
+
"Create new brief via primary CTA",
|
|
43
|
+
"Export data via Export Report button",
|
|
44
|
+
"Click on brief ID to view details",
|
|
45
|
+
"Switch between tabs to filter by status"
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"screen_002": {
|
|
49
|
+
"id": "screen_002",
|
|
50
|
+
"name": "RFP Listing - Assign Buyer (Triage)",
|
|
51
|
+
"type": "listing_page_workflow",
|
|
52
|
+
"route": "/rfp/triage",
|
|
53
|
+
"module": "P2P",
|
|
54
|
+
"workflow_pattern": "triage_assignment",
|
|
55
|
+
"screenshot_url": "https://figr-branintelle-assets.s3.amazonaws.com/screens/screen_002_rfp_triage_assign_buyer.png",
|
|
56
|
+
"components_used": [
|
|
57
|
+
"stats-cards",
|
|
58
|
+
"action-bar",
|
|
59
|
+
"scrollable-data-table",
|
|
60
|
+
"inline-actions"
|
|
61
|
+
],
|
|
62
|
+
"features": {
|
|
63
|
+
"has_bulk_selection": true,
|
|
64
|
+
"has_row_actions": true,
|
|
65
|
+
"has_tabs": false,
|
|
66
|
+
"has_filters": true,
|
|
67
|
+
"has_search": true,
|
|
68
|
+
"has_export": true,
|
|
69
|
+
"has_wizard": false,
|
|
70
|
+
"has_grouping": false
|
|
71
|
+
},
|
|
72
|
+
"design_patterns": [
|
|
73
|
+
"Stats cards with multi-label",
|
|
74
|
+
"Inline action buttons",
|
|
75
|
+
"Time urgency indicators",
|
|
76
|
+
"Bulk selection with disabled-until-selection CTA",
|
|
77
|
+
"Helper text for workflow guidance",
|
|
78
|
+
"No tabs for single-state listings",
|
|
79
|
+
"Relative time display"
|
|
80
|
+
],
|
|
81
|
+
"key_interactions": [
|
|
82
|
+
"Bulk select briefs via checkboxes",
|
|
83
|
+
"Click inline 'Assign Buyer' button on any row",
|
|
84
|
+
"Select multiple and use bulk 'Assign Buyer' action",
|
|
85
|
+
"Filter briefs using filter button",
|
|
86
|
+
"Search briefs by keyword",
|
|
87
|
+
"Sort columns by clicking headers",
|
|
88
|
+
"Export data via Export Report button",
|
|
89
|
+
"View time urgency indicators"
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
"screen_003": {
|
|
93
|
+
"id": "screen_003",
|
|
94
|
+
"name": "RFP Listing - In Progress (All Status)",
|
|
95
|
+
"type": "listing_page_complex",
|
|
96
|
+
"route": "/rfp/in-progress",
|
|
97
|
+
"module": "P2P",
|
|
98
|
+
"workflow_pattern": "active_management",
|
|
99
|
+
"screenshot_url": "https://figr-branintelle-assets.s3.amazonaws.com/screens/screen_003_rfp_in_progress_all_status.png",
|
|
100
|
+
"components_used": [
|
|
101
|
+
"stats-cards",
|
|
102
|
+
"action-bar",
|
|
103
|
+
"scrollable-data-table",
|
|
104
|
+
"inline-actions"
|
|
105
|
+
],
|
|
106
|
+
"features": {
|
|
107
|
+
"has_bulk_selection": false,
|
|
108
|
+
"has_row_actions": true,
|
|
109
|
+
"has_tabs": false,
|
|
110
|
+
"has_filters": true,
|
|
111
|
+
"has_search": true,
|
|
112
|
+
"has_export": false,
|
|
113
|
+
"has_wizard": false,
|
|
114
|
+
"has_grouping": false
|
|
115
|
+
},
|
|
116
|
+
"design_patterns": [
|
|
117
|
+
"Stats cards with state",
|
|
118
|
+
"Dropdown filters (status and user)",
|
|
119
|
+
"Inline action buttons",
|
|
120
|
+
"Progress bars with fractions",
|
|
121
|
+
"Status badges with semantic colors",
|
|
122
|
+
"Icon badges for round types",
|
|
123
|
+
"User avatar with name",
|
|
124
|
+
"No bulk selection",
|
|
125
|
+
"Row-level management"
|
|
126
|
+
],
|
|
127
|
+
"key_interactions": [
|
|
128
|
+
"Filter by status via dropdown",
|
|
129
|
+
"Filter by buyer lead via user dropdown",
|
|
130
|
+
"Add new rounds via inline + button",
|
|
131
|
+
"Expand round details via expand button",
|
|
132
|
+
"Access more options via 3-dot menu",
|
|
133
|
+
"Sort columns by clicking headers",
|
|
134
|
+
"Click RFP ID to view details",
|
|
135
|
+
"Monitor vendor participation progress",
|
|
136
|
+
"Track submission deadlines"
|
|
137
|
+
]
|
|
138
|
+
},
|
|
139
|
+
"screen_004": {
|
|
140
|
+
"id": "screen_004",
|
|
141
|
+
"name": "Brief Creation - Supporting Documents (Step 2)",
|
|
142
|
+
"type": "form_wizard",
|
|
143
|
+
"route": "/briefs/create/supporting",
|
|
144
|
+
"module": "Plan to Impact",
|
|
145
|
+
"workflow_pattern": "multi_step_form",
|
|
146
|
+
"screenshot_url": "https://figr-branintelle-assets.s3.amazonaws.com/screens/screen_004_brief_creation_step2_supporting.png",
|
|
147
|
+
"components_used": [
|
|
148
|
+
"stats-cards",
|
|
149
|
+
"action-bar",
|
|
150
|
+
"scrollable-data-table",
|
|
151
|
+
"form-sections"
|
|
152
|
+
],
|
|
153
|
+
"features": {
|
|
154
|
+
"has_bulk_selection": false,
|
|
155
|
+
"has_row_actions": false,
|
|
156
|
+
"has_tabs": false,
|
|
157
|
+
"has_filters": true,
|
|
158
|
+
"has_search": true,
|
|
159
|
+
"has_export": false,
|
|
160
|
+
"has_wizard": true,
|
|
161
|
+
"has_grouping": false
|
|
162
|
+
},
|
|
163
|
+
"design_patterns": [
|
|
164
|
+
"Wizard stepper",
|
|
165
|
+
"Sub-step indicators",
|
|
166
|
+
"File upload dropzone",
|
|
167
|
+
"File cards with actions",
|
|
168
|
+
"Error states",
|
|
169
|
+
"Confidential badge/lock",
|
|
170
|
+
"Progress tracking",
|
|
171
|
+
"Draft saving",
|
|
172
|
+
"Navigation buttons (Prev/Next)"
|
|
173
|
+
],
|
|
174
|
+
"key_interactions": [
|
|
175
|
+
"Navigate between wizard steps via left sidebar",
|
|
176
|
+
"Upload files via drag-drop or click",
|
|
177
|
+
"Mark files as confidential via lock icon",
|
|
178
|
+
"Edit file metadata via edit icon",
|
|
179
|
+
"Delete uploaded files via delete icon",
|
|
180
|
+
"Save progress as draft",
|
|
181
|
+
"Navigate to previous step",
|
|
182
|
+
"Proceed to next step (KPI's)",
|
|
183
|
+
"Go back to brief listing"
|
|
184
|
+
]
|
|
185
|
+
},
|
|
186
|
+
"screen_005": {
|
|
187
|
+
"id": "screen_005",
|
|
188
|
+
"name": "Brief Creation - Vendor Recommendation (Step 4)",
|
|
189
|
+
"type": "form_wizard",
|
|
190
|
+
"route": "/briefs/create/vendor-recommendation",
|
|
191
|
+
"module": "Plan to Impact",
|
|
192
|
+
"workflow_pattern": "multi_step_form",
|
|
193
|
+
"screenshot_url": "https://figr-branintelle-assets.s3.amazonaws.com/screens/screen_005_brief_creation_step4_vendor_recommendation.png",
|
|
194
|
+
"components_used": [
|
|
195
|
+
"stats-cards",
|
|
196
|
+
"action-bar",
|
|
197
|
+
"scrollable-data-table",
|
|
198
|
+
"form-sections"
|
|
199
|
+
],
|
|
200
|
+
"features": {
|
|
201
|
+
"has_bulk_selection": false,
|
|
202
|
+
"has_row_actions": false,
|
|
203
|
+
"has_tabs": false,
|
|
204
|
+
"has_filters": true,
|
|
205
|
+
"has_search": true,
|
|
206
|
+
"has_export": false,
|
|
207
|
+
"has_wizard": true,
|
|
208
|
+
"has_grouping": false
|
|
209
|
+
},
|
|
210
|
+
"design_patterns": [
|
|
211
|
+
"Wizard stepper",
|
|
212
|
+
"Preference cards (highlighted for top choice)",
|
|
213
|
+
"Vendor status badges",
|
|
214
|
+
"MSME type badge",
|
|
215
|
+
"Attachment count indicator",
|
|
216
|
+
"Comments section",
|
|
217
|
+
"Card actions (edit, lock, delete)",
|
|
218
|
+
"Secondary table for additional items",
|
|
219
|
+
"Add button (top-right)",
|
|
220
|
+
"Status icons (user_check, user_group)",
|
|
221
|
+
"Highlight border for active selection"
|
|
222
|
+
],
|
|
223
|
+
"key_interactions": [
|
|
224
|
+
"Add new vendors via '+ Add Vendor' button",
|
|
225
|
+
"Reorder vendor preferences (drag-drop or edit)",
|
|
226
|
+
"Mark vendors as Registered/Unregistered",
|
|
227
|
+
"Add/edit vendor comments",
|
|
228
|
+
"Attach supporting documents to vendor cards (count: 3)",
|
|
229
|
+
"Edit vendor details via edit icon",
|
|
230
|
+
"Lock vendor information via lock icon (for registered)",
|
|
231
|
+
"Delete vendors via delete icon",
|
|
232
|
+
"Move vendors between preference levels and 'Other Considerations'",
|
|
233
|
+
"View more details via 3-dot menu in table",
|
|
234
|
+
"Save progress as draft",
|
|
235
|
+
"Navigate to previous step (Cost Details)",
|
|
236
|
+
"Proceed to next step (Review and Save)"
|
|
237
|
+
]
|
|
238
|
+
},
|
|
239
|
+
"screen_006": {
|
|
240
|
+
"id": "screen_006",
|
|
241
|
+
"name": "Provisions Listing - Grouped by Vendor",
|
|
242
|
+
"type": "listing_page_grouped",
|
|
243
|
+
"route": "/p2p/provisions",
|
|
244
|
+
"module": "P2P",
|
|
245
|
+
"workflow_pattern": "grouped_listing_readonly",
|
|
246
|
+
"screenshot_url": "https://figr-branintelle-assets.s3.amazonaws.com/screens/screen_006_provisions_listing_grouped.png",
|
|
247
|
+
"components_used": [
|
|
248
|
+
"stats-cards",
|
|
249
|
+
"tabs",
|
|
250
|
+
"action-bar",
|
|
251
|
+
"scrollable-data-table"
|
|
252
|
+
],
|
|
253
|
+
"features": {
|
|
254
|
+
"has_bulk_selection": false,
|
|
255
|
+
"has_row_actions": false,
|
|
256
|
+
"has_tabs": true,
|
|
257
|
+
"has_filters": true,
|
|
258
|
+
"has_search": true,
|
|
259
|
+
"has_export": false,
|
|
260
|
+
"has_wizard": false,
|
|
261
|
+
"has_grouping": true
|
|
262
|
+
},
|
|
263
|
+
"design_patterns": [
|
|
264
|
+
"Grouped/collapsible table",
|
|
265
|
+
"View switching tabs",
|
|
266
|
+
"Stats cards with time filters",
|
|
267
|
+
"MSME vendor badges",
|
|
268
|
+
"Clickable links (PO) vs static text (WC)",
|
|
269
|
+
"Currency formatting",
|
|
270
|
+
"Date range display",
|
|
271
|
+
"Search and filter",
|
|
272
|
+
"Export report",
|
|
273
|
+
"Auto-sync indicator"
|
|
274
|
+
],
|
|
275
|
+
"key_interactions": [
|
|
276
|
+
"Switch between Vendor/Brand/PO views via tabs",
|
|
277
|
+
"Expand/collapse vendor groups",
|
|
278
|
+
"Click PO links to view details",
|
|
279
|
+
"Filter provisions",
|
|
280
|
+
"Search across provisions",
|
|
281
|
+
"Sort columns",
|
|
282
|
+
"Download Provision Report",
|
|
283
|
+
"Switch between Current Month and All Months views"
|
|
284
|
+
]
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
"workflowPatterns": {
|
|
288
|
+
"stats_cards": {
|
|
289
|
+
"count": 4,
|
|
290
|
+
"position": "top_of_page",
|
|
291
|
+
"contains": [
|
|
292
|
+
"count",
|
|
293
|
+
"budget",
|
|
294
|
+
"filter_option"
|
|
295
|
+
],
|
|
296
|
+
"interactive": true
|
|
297
|
+
},
|
|
298
|
+
"action_bar": {
|
|
299
|
+
"layout": "split",
|
|
300
|
+
"left": [
|
|
301
|
+
"filters",
|
|
302
|
+
"add",
|
|
303
|
+
"search"
|
|
304
|
+
],
|
|
305
|
+
"right": [
|
|
306
|
+
"secondary_action",
|
|
307
|
+
"primary_cta"
|
|
308
|
+
]
|
|
309
|
+
},
|
|
310
|
+
"data_table": {
|
|
311
|
+
"features": [
|
|
312
|
+
"sorting",
|
|
313
|
+
"bulk_selection",
|
|
314
|
+
"row_actions"
|
|
315
|
+
],
|
|
316
|
+
"frozen_columns": [
|
|
317
|
+
"checkbox",
|
|
318
|
+
"actions_or_id"
|
|
319
|
+
]
|
|
320
|
+
},
|
|
321
|
+
"color_coding": {
|
|
322
|
+
"brief_ids": "orange",
|
|
323
|
+
"status_badges": "semantic_colors",
|
|
324
|
+
"action_buttons": "blue"
|
|
325
|
+
}
|
|
326
|
+
},
|
|
327
|
+
"screenTypes": {
|
|
328
|
+
"listing_page": {
|
|
329
|
+
"examples": [
|
|
330
|
+
"screen_001"
|
|
331
|
+
],
|
|
332
|
+
"characteristics": [
|
|
333
|
+
"stats cards",
|
|
334
|
+
"tabs",
|
|
335
|
+
"data table",
|
|
336
|
+
"bulk actions",
|
|
337
|
+
"row actions menu"
|
|
338
|
+
]
|
|
339
|
+
},
|
|
340
|
+
"listing_page_workflow": {
|
|
341
|
+
"examples": [
|
|
342
|
+
"screen_002"
|
|
343
|
+
],
|
|
344
|
+
"characteristics": [
|
|
345
|
+
"stats cards",
|
|
346
|
+
"no tabs",
|
|
347
|
+
"inline actions",
|
|
348
|
+
"helper text",
|
|
349
|
+
"disabled CTAs"
|
|
350
|
+
]
|
|
351
|
+
},
|
|
352
|
+
"listing_page_complex": {
|
|
353
|
+
"examples": [
|
|
354
|
+
"screen_003"
|
|
355
|
+
],
|
|
356
|
+
"characteristics": [
|
|
357
|
+
"stats cards",
|
|
358
|
+
"dropdown filters",
|
|
359
|
+
"inline actions",
|
|
360
|
+
"progress bars",
|
|
361
|
+
"status badges"
|
|
362
|
+
]
|
|
363
|
+
},
|
|
364
|
+
"listing_page_grouped": {
|
|
365
|
+
"examples": [
|
|
366
|
+
"screen_006"
|
|
367
|
+
],
|
|
368
|
+
"characteristics": [
|
|
369
|
+
"stats cards",
|
|
370
|
+
"view tabs",
|
|
371
|
+
"grouped/collapsible rows",
|
|
372
|
+
"read-only",
|
|
373
|
+
"auto-sync"
|
|
374
|
+
]
|
|
375
|
+
},
|
|
376
|
+
"form_wizard": {
|
|
377
|
+
"examples": [
|
|
378
|
+
"screen_004",
|
|
379
|
+
"screen_005"
|
|
380
|
+
],
|
|
381
|
+
"characteristics": [
|
|
382
|
+
"stepper",
|
|
383
|
+
"sub-steps",
|
|
384
|
+
"prev/next nav",
|
|
385
|
+
"draft saving",
|
|
386
|
+
"validation",
|
|
387
|
+
"progress tracking"
|
|
388
|
+
]
|
|
389
|
+
}
|
|
390
|
+
},
|
|
391
|
+
"useCases": {}
|
|
392
|
+
}
|