@webspire/mcp 0.8.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  MCP server for [Webspire](https://webspire.de) — AI-native discovery of CSS snippets, UI patterns, and page templates with a 3-layer design token system.
4
4
 
5
- **49 CSS snippets** + **212 UI patterns** + **18 page templates** — all Tailwind v4, token-based, dark mode, accessible.
5
+ Includes CSS snippets, UI patterns, and page templates — all Tailwind v4, token-based, dark mode, accessible.
6
6
 
7
7
  ## Quick Start
8
8
 
@@ -19,7 +19,7 @@ MCP server for [Webspire](https://webspire.de) — AI-native discovery of CSS sn
19
19
  }
20
20
  ```
21
21
 
22
- ## Available Tools (12)
22
+ ## Available Tools
23
23
 
24
24
  | Tool | Description |
25
25
  |------|-------------|
@@ -27,8 +27,9 @@ MCP server for [Webspire](https://webspire.de) — AI-native discovery of CSS sn
27
27
  | `search_snippets` | Search snippets by keyword, use case, or CSS technique |
28
28
  | `get_snippet` | Get full CSS source, metadata, and usage example |
29
29
  | `recommend_snippet` | Describe a UI problem, get best matching snippets |
30
- | `list_pattern_families` | List all 55 pattern families with counts |
31
- | `search_patterns` | Search 212 UI patterns by intent, family, or tier |
30
+ | `list_pattern_families` | List pattern families with counts |
31
+ | `search_patterns` | Search UI patterns by intent, family, or tier |
32
+ | `compose_page` | Compose a full page structure and recommend matching snippets |
32
33
  | `get_pattern` | Get full pattern HTML with component token references |
33
34
  | `list_templates` | List all page templates by category |
34
35
  | `search_templates` | Search templates by keyword, category, or style |
@@ -90,15 +91,15 @@ Host Tokens (your project) → WebSpire Alias Tokens → Component Tokens → Ma
90
91
 
91
92
  ## Content
92
93
 
93
- ### CSS Snippets (49)
94
+ ### CSS Snippets
94
95
 
95
- Effects that Tailwind v4 can't do natively: glass, animations, easing, scroll, decorative, interactions, text.
96
+ Effects that Tailwind v4 can't do natively across 12 categories: glass, animations, easing, scroll, decorative, interactions, text, lighting, depth, masks, surfaces, atmosphere.
96
97
 
97
- ### UI Patterns (212)
98
+ ### UI Patterns
98
99
 
99
- 55 families across Page Sections and Content Elements — all using `--ws-*` component tokens.
100
+ Patterns across page sections and content elements — all using `--ws-*` component tokens.
100
101
 
101
- ### Page Templates (18)
102
+ ### Page Templates
102
103
 
103
104
  Complete standalone pages: SaaS, agency, portfolio, shop, company — with Tailwind CDN.
104
105
 
@@ -115,3 +116,15 @@ const results = searchSnippets(registry, {
115
116
  ```
116
117
 
117
118
  Docs: https://webspire.de/tokens
119
+
120
+ ## Page Composition
121
+
122
+ `compose_page` combines semantic pattern selection with a lightweight snippet recommendation layer.
123
+
124
+ Typical flow:
125
+
126
+ 1. Call `compose_page` with `domain`, `tone`, and `ux_goals`
127
+ 2. Retrieve section markup with `get_pattern(id)`
128
+ 3. Retrieve enhancement CSS with `get_snippet(id)` for the recommended snippets
129
+
130
+ That keeps structure and polish separate, but coordinated.
@@ -479,3 +479,179 @@
479
479
  --ws-error-500-action-bg: var(--ws-color-primary);
480
480
  --ws-error-500-action-text: var(--ws-color-primary-text);
481
481
  }
482
+
483
+ /* ── Widgets (inspired by Wigggle UI) ── */
484
+
485
+ .ws-weather-widget {
486
+ --ws-weather-widget-bg: var(--ws-color-surface);
487
+ --ws-weather-widget-text: var(--ws-color-text);
488
+ --ws-weather-widget-text-soft: var(--ws-color-text-soft);
489
+ --ws-weather-widget-text-muted: var(--ws-color-text-muted);
490
+ --ws-weather-widget-border: var(--ws-color-border);
491
+ --ws-weather-widget-accent: var(--ws-color-accent);
492
+ --ws-weather-widget-accent-soft: var(--ws-color-accent-soft);
493
+ }
494
+
495
+ .ws-stock-widget {
496
+ --ws-stock-widget-bg: var(--ws-color-surface);
497
+ --ws-stock-widget-text: var(--ws-color-text);
498
+ --ws-stock-widget-text-soft: var(--ws-color-text-soft);
499
+ --ws-stock-widget-text-muted: var(--ws-color-text-muted);
500
+ --ws-stock-widget-border: var(--ws-color-border);
501
+ --ws-stock-widget-positive: var(--ws-color-success);
502
+ --ws-stock-widget-negative: var(--ws-color-danger);
503
+ }
504
+
505
+ .ws-calendar-widget {
506
+ --ws-calendar-widget-bg: var(--ws-color-surface);
507
+ --ws-calendar-widget-text: var(--ws-color-text);
508
+ --ws-calendar-widget-text-soft: var(--ws-color-text-soft);
509
+ --ws-calendar-widget-text-muted: var(--ws-color-text-muted);
510
+ --ws-calendar-widget-border: var(--ws-color-border);
511
+ --ws-calendar-widget-active: var(--ws-color-primary);
512
+ --ws-calendar-widget-active-text: var(--ws-color-primary-text);
513
+ --ws-calendar-widget-today-bg: var(--ws-color-primary-soft);
514
+ }
515
+
516
+ .ws-media-widget {
517
+ --ws-media-widget-bg: var(--ws-color-surface);
518
+ --ws-media-widget-text: var(--ws-color-text);
519
+ --ws-media-widget-text-soft: var(--ws-color-text-soft);
520
+ --ws-media-widget-text-muted: var(--ws-color-text-muted);
521
+ --ws-media-widget-border: var(--ws-color-border);
522
+ --ws-media-widget-accent: var(--ws-color-primary);
523
+ --ws-media-widget-accent-soft: var(--ws-color-primary-soft);
524
+ }
525
+
526
+ .ws-task-widget {
527
+ --ws-task-widget-bg: var(--ws-color-surface);
528
+ --ws-task-widget-text: var(--ws-color-text);
529
+ --ws-task-widget-text-soft: var(--ws-color-text-soft);
530
+ --ws-task-widget-text-muted: var(--ws-color-text-muted);
531
+ --ws-task-widget-border: var(--ws-color-border);
532
+ --ws-task-widget-accent: var(--ws-color-primary);
533
+ --ws-task-widget-success: var(--ws-color-success);
534
+ --ws-task-widget-muted-bg: var(--ws-color-surface-muted);
535
+ }
536
+
537
+ .ws-stat-widget {
538
+ --ws-stat-widget-bg: var(--ws-color-surface);
539
+ --ws-stat-widget-text: var(--ws-color-text);
540
+ --ws-stat-widget-text-soft: var(--ws-color-text-soft);
541
+ --ws-stat-widget-text-muted: var(--ws-color-text-muted);
542
+ --ws-stat-widget-border: var(--ws-color-border);
543
+ --ws-stat-widget-accent: var(--ws-color-primary);
544
+ --ws-stat-widget-accent-soft: var(--ws-color-primary-soft);
545
+ --ws-stat-widget-positive: var(--ws-color-success);
546
+ --ws-stat-widget-negative: var(--ws-color-danger);
547
+ }
548
+
549
+ .ws-clock-widget {
550
+ --ws-clock-widget-bg: var(--ws-color-surface);
551
+ --ws-clock-widget-text: var(--ws-color-text);
552
+ --ws-clock-widget-text-soft: var(--ws-color-text-soft);
553
+ --ws-clock-widget-text-muted: var(--ws-color-text-muted);
554
+ --ws-clock-widget-border: var(--ws-color-border);
555
+ --ws-clock-widget-accent: var(--ws-color-primary);
556
+ --ws-clock-widget-accent-soft: var(--ws-color-primary-soft);
557
+ }
558
+
559
+ .ws-profile-widget {
560
+ --ws-profile-widget-bg: var(--ws-color-surface);
561
+ --ws-profile-widget-text: var(--ws-color-text);
562
+ --ws-profile-widget-text-soft: var(--ws-color-text-soft);
563
+ --ws-profile-widget-text-muted: var(--ws-color-text-muted);
564
+ --ws-profile-widget-border: var(--ws-color-border);
565
+ --ws-profile-widget-accent: var(--ws-color-primary);
566
+ --ws-profile-widget-accent-soft: var(--ws-color-primary-soft);
567
+ --ws-profile-widget-success: var(--ws-color-success);
568
+ }
569
+
570
+ .ws-notification-widget {
571
+ --ws-notification-widget-bg: var(--ws-color-surface);
572
+ --ws-notification-widget-text: var(--ws-color-text);
573
+ --ws-notification-widget-text-soft: var(--ws-color-text-soft);
574
+ --ws-notification-widget-text-muted: var(--ws-color-text-muted);
575
+ --ws-notification-widget-border: var(--ws-color-border);
576
+ --ws-notification-widget-accent: var(--ws-color-primary);
577
+ --ws-notification-widget-accent-soft: var(--ws-color-primary-soft);
578
+ --ws-notification-widget-danger: var(--ws-color-danger);
579
+ --ws-notification-widget-warning: var(--ws-color-warning);
580
+ --ws-notification-widget-success: var(--ws-color-success);
581
+ }
582
+
583
+ .ws-progress-widget {
584
+ --ws-progress-widget-bg: var(--ws-color-surface);
585
+ --ws-progress-widget-text: var(--ws-color-text);
586
+ --ws-progress-widget-text-soft: var(--ws-color-text-soft);
587
+ --ws-progress-widget-text-muted: var(--ws-color-text-muted);
588
+ --ws-progress-widget-border: var(--ws-color-border);
589
+ --ws-progress-widget-accent: var(--ws-color-primary);
590
+ --ws-progress-widget-accent-soft: var(--ws-color-primary-soft);
591
+ --ws-progress-widget-track: var(--ws-color-surface-muted);
592
+ }
593
+
594
+ .ws-analytics-widget {
595
+ --ws-analytics-widget-bg: var(--ws-color-surface);
596
+ --ws-analytics-widget-text: var(--ws-color-text);
597
+ --ws-analytics-widget-text-soft: var(--ws-color-text-soft);
598
+ --ws-analytics-widget-text-muted: var(--ws-color-text-muted);
599
+ --ws-analytics-widget-border: var(--ws-color-border);
600
+ --ws-analytics-widget-accent: var(--ws-color-primary);
601
+ --ws-analytics-widget-accent-soft: var(--ws-color-primary-soft);
602
+ --ws-analytics-widget-positive: var(--ws-color-success);
603
+ }
604
+
605
+ .ws-storage-widget {
606
+ --ws-storage-widget-bg: var(--ws-color-surface);
607
+ --ws-storage-widget-text: var(--ws-color-text);
608
+ --ws-storage-widget-text-soft: var(--ws-color-text-soft);
609
+ --ws-storage-widget-text-muted: var(--ws-color-text-muted);
610
+ --ws-storage-widget-border: var(--ws-color-border);
611
+ --ws-storage-widget-accent: var(--ws-color-primary);
612
+ --ws-storage-widget-track: var(--ws-color-surface-muted);
613
+ }
614
+
615
+ .ws-currency-widget {
616
+ --ws-currency-widget-bg: var(--ws-color-surface);
617
+ --ws-currency-widget-text: var(--ws-color-text);
618
+ --ws-currency-widget-text-soft: var(--ws-color-text-soft);
619
+ --ws-currency-widget-text-muted: var(--ws-color-text-muted);
620
+ --ws-currency-widget-border: var(--ws-color-border);
621
+ --ws-currency-widget-accent: var(--ws-color-primary);
622
+ --ws-currency-widget-positive: var(--ws-color-success);
623
+ --ws-currency-widget-negative: var(--ws-color-danger);
624
+ }
625
+
626
+ .ws-shipping-widget {
627
+ --ws-shipping-widget-bg: var(--ws-color-surface);
628
+ --ws-shipping-widget-text: var(--ws-color-text);
629
+ --ws-shipping-widget-text-soft: var(--ws-color-text-soft);
630
+ --ws-shipping-widget-text-muted: var(--ws-color-text-muted);
631
+ --ws-shipping-widget-border: var(--ws-color-border);
632
+ --ws-shipping-widget-accent: var(--ws-color-primary);
633
+ --ws-shipping-widget-accent-soft: var(--ws-color-primary-soft);
634
+ --ws-shipping-widget-success: var(--ws-color-success);
635
+ }
636
+
637
+ .ws-rating-widget {
638
+ --ws-rating-widget-bg: var(--ws-color-surface);
639
+ --ws-rating-widget-text: var(--ws-color-text);
640
+ --ws-rating-widget-text-soft: var(--ws-color-text-soft);
641
+ --ws-rating-widget-text-muted: var(--ws-color-text-muted);
642
+ --ws-rating-widget-border: var(--ws-color-border);
643
+ --ws-rating-widget-accent: var(--ws-color-warning);
644
+ --ws-rating-widget-accent-soft: var(--ws-color-warning-soft);
645
+ }
646
+
647
+ .ws-chat-widget {
648
+ --ws-chat-widget-bg: var(--ws-color-surface);
649
+ --ws-chat-widget-text: var(--ws-color-text);
650
+ --ws-chat-widget-text-soft: var(--ws-color-text-soft);
651
+ --ws-chat-widget-text-muted: var(--ws-color-text-muted);
652
+ --ws-chat-widget-border: var(--ws-color-border);
653
+ --ws-chat-widget-accent: var(--ws-color-primary);
654
+ --ws-chat-widget-accent-soft: var(--ws-color-primary-soft);
655
+ --ws-chat-widget-accent-text: var(--ws-color-primary-text);
656
+ --ws-chat-widget-muted-bg: var(--ws-color-surface-muted);
657
+ }