@thesage/mcp 0.2.1 → 0.3.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/dist/index.js +639 -10
- package/dist/index.mjs +639 -10
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -11,37 +11,57 @@ var COMPONENT_CATEGORIES = {
|
|
|
11
11
|
actions: {
|
|
12
12
|
label: "Actions",
|
|
13
13
|
description: "Interactive elements that trigger behaviors",
|
|
14
|
-
count:
|
|
14
|
+
count: 5
|
|
15
15
|
},
|
|
16
16
|
forms: {
|
|
17
17
|
label: "Forms",
|
|
18
18
|
description: "Input controls for data collection",
|
|
19
|
-
count:
|
|
19
|
+
count: 18
|
|
20
20
|
},
|
|
21
21
|
navigation: {
|
|
22
22
|
label: "Navigation",
|
|
23
23
|
description: "Moving through content and hierarchy",
|
|
24
|
-
count:
|
|
24
|
+
count: 10
|
|
25
25
|
},
|
|
26
26
|
overlays: {
|
|
27
27
|
label: "Overlays",
|
|
28
28
|
description: "Contextual content that appears above the main UI",
|
|
29
|
-
count:
|
|
29
|
+
count: 11
|
|
30
30
|
},
|
|
31
31
|
feedback: {
|
|
32
32
|
label: "Feedback",
|
|
33
33
|
description: "Communicating system state and user action results",
|
|
34
|
-
count:
|
|
34
|
+
count: 7
|
|
35
35
|
},
|
|
36
36
|
"data-display": {
|
|
37
37
|
label: "Data Display",
|
|
38
38
|
description: "Presenting information in structured formats",
|
|
39
|
-
count:
|
|
39
|
+
count: 16
|
|
40
40
|
},
|
|
41
41
|
layout: {
|
|
42
42
|
label: "Layout",
|
|
43
43
|
description: "Spatial organization and structural elements",
|
|
44
|
-
count:
|
|
44
|
+
count: 17
|
|
45
|
+
},
|
|
46
|
+
backgrounds: {
|
|
47
|
+
label: "Backgrounds",
|
|
48
|
+
description: "Animated background effects and decorative elements",
|
|
49
|
+
count: 3
|
|
50
|
+
},
|
|
51
|
+
cursor: {
|
|
52
|
+
label: "Cursor",
|
|
53
|
+
description: "Custom cursor effects and interactions",
|
|
54
|
+
count: 2
|
|
55
|
+
},
|
|
56
|
+
motion: {
|
|
57
|
+
label: "Motion",
|
|
58
|
+
description: "Animation components and motion effects",
|
|
59
|
+
count: 1
|
|
60
|
+
},
|
|
61
|
+
blocks: {
|
|
62
|
+
label: "Blocks",
|
|
63
|
+
description: "Composed page sections and layouts",
|
|
64
|
+
count: 2
|
|
45
65
|
}
|
|
46
66
|
};
|
|
47
67
|
var COMPONENT_REGISTRY = {
|
|
@@ -606,6 +626,71 @@ var COMPONENT_REGISTRY = {
|
|
|
606
626
|
],
|
|
607
627
|
dependencies: []
|
|
608
628
|
},
|
|
629
|
+
heading: {
|
|
630
|
+
name: "Heading",
|
|
631
|
+
category: "data-display",
|
|
632
|
+
description: "Semantic heading with automatic token-based styling and responsive sizes",
|
|
633
|
+
keywords: ["heading", "title", "h1", "h2", "h3", "h4", "h5", "h6", "typography"],
|
|
634
|
+
useCases: [
|
|
635
|
+
"Page titles",
|
|
636
|
+
"Section headings",
|
|
637
|
+
"Content hierarchy",
|
|
638
|
+
"Semantic HTML structure"
|
|
639
|
+
],
|
|
640
|
+
dependencies: []
|
|
641
|
+
},
|
|
642
|
+
text: {
|
|
643
|
+
name: "Text",
|
|
644
|
+
category: "data-display",
|
|
645
|
+
description: "Semantic text component with variants for primary, secondary, and muted styles",
|
|
646
|
+
keywords: ["text", "paragraph", "body", "typography", "content", "p", "span"],
|
|
647
|
+
useCases: [
|
|
648
|
+
"Body text",
|
|
649
|
+
"Descriptions",
|
|
650
|
+
"Helper text",
|
|
651
|
+
"Labels and captions"
|
|
652
|
+
],
|
|
653
|
+
dependencies: []
|
|
654
|
+
},
|
|
655
|
+
code: {
|
|
656
|
+
name: "Code",
|
|
657
|
+
category: "data-display",
|
|
658
|
+
description: "Code display with syntax highlighting for inline and block code",
|
|
659
|
+
keywords: ["code", "syntax", "highlighting", "programming", "snippet", "pre"],
|
|
660
|
+
useCases: [
|
|
661
|
+
"Code snippets",
|
|
662
|
+
"API documentation",
|
|
663
|
+
"Technical content",
|
|
664
|
+
"Inline code references"
|
|
665
|
+
],
|
|
666
|
+
dependencies: []
|
|
667
|
+
},
|
|
668
|
+
"collapsible-code-block": {
|
|
669
|
+
name: "CollapsibleCodeBlock",
|
|
670
|
+
category: "data-display",
|
|
671
|
+
description: "Expandable code block with syntax highlighting, preview mode, and copy functionality",
|
|
672
|
+
keywords: ["code", "collapsible", "expandable", "syntax", "copy", "preview"],
|
|
673
|
+
useCases: [
|
|
674
|
+
"Long code examples",
|
|
675
|
+
"Documentation code blocks",
|
|
676
|
+
"Tutorial code snippets",
|
|
677
|
+
"API examples"
|
|
678
|
+
],
|
|
679
|
+
dependencies: ["@thesage/tokens"]
|
|
680
|
+
},
|
|
681
|
+
"description-list": {
|
|
682
|
+
name: "DescriptionList",
|
|
683
|
+
category: "data-display",
|
|
684
|
+
description: "Key-value pair list for displaying labeled data in row or column layout",
|
|
685
|
+
keywords: ["description", "list", "key-value", "definition", "dl", "dt", "dd"],
|
|
686
|
+
useCases: [
|
|
687
|
+
"Product specifications",
|
|
688
|
+
"User profile details",
|
|
689
|
+
"Metadata display",
|
|
690
|
+
"Settings summaries"
|
|
691
|
+
],
|
|
692
|
+
dependencies: []
|
|
693
|
+
},
|
|
609
694
|
// ============================================================================
|
|
610
695
|
// LAYOUT (8)
|
|
611
696
|
// ============================================================================
|
|
@@ -717,6 +802,546 @@ var COMPONENT_REGISTRY = {
|
|
|
717
802
|
],
|
|
718
803
|
dependencies: ["@radix-ui/react-separator"],
|
|
719
804
|
radixPrimitive: "@radix-ui/react-separator"
|
|
805
|
+
},
|
|
806
|
+
grid: {
|
|
807
|
+
name: "Grid",
|
|
808
|
+
category: "layout",
|
|
809
|
+
description: "Responsive CSS grid with column and gap configuration",
|
|
810
|
+
keywords: ["grid", "layout", "columns", "responsive", "css-grid"],
|
|
811
|
+
useCases: [
|
|
812
|
+
"Card grids",
|
|
813
|
+
"Gallery layouts",
|
|
814
|
+
"Dashboard layouts",
|
|
815
|
+
"Responsive content grids"
|
|
816
|
+
],
|
|
817
|
+
dependencies: []
|
|
818
|
+
},
|
|
819
|
+
container: {
|
|
820
|
+
name: "Container",
|
|
821
|
+
category: "layout",
|
|
822
|
+
description: "Content wrapper with consistent max-width and padding variants",
|
|
823
|
+
keywords: ["container", "wrapper", "max-width", "centered", "layout"],
|
|
824
|
+
useCases: [
|
|
825
|
+
"Page content wrapper",
|
|
826
|
+
"Centered layouts",
|
|
827
|
+
"Responsive widths",
|
|
828
|
+
"Content alignment"
|
|
829
|
+
],
|
|
830
|
+
dependencies: []
|
|
831
|
+
},
|
|
832
|
+
stack: {
|
|
833
|
+
name: "Stack",
|
|
834
|
+
category: "layout",
|
|
835
|
+
description: "Flexbox layout for vertical or horizontal stacking with gap control",
|
|
836
|
+
keywords: ["stack", "flex", "vertical", "horizontal", "spacing", "layout"],
|
|
837
|
+
useCases: [
|
|
838
|
+
"Vertical layouts",
|
|
839
|
+
"Horizontal layouts",
|
|
840
|
+
"Form layouts",
|
|
841
|
+
"Button groups"
|
|
842
|
+
],
|
|
843
|
+
dependencies: []
|
|
844
|
+
},
|
|
845
|
+
sidebar: {
|
|
846
|
+
name: "Sidebar",
|
|
847
|
+
category: "layout",
|
|
848
|
+
description: "Navigation sidebar with header, content, footer sections and mobile overlay",
|
|
849
|
+
keywords: ["sidebar", "navigation", "panel", "drawer", "menu"],
|
|
850
|
+
useCases: [
|
|
851
|
+
"App navigation",
|
|
852
|
+
"Dashboard sidebars",
|
|
853
|
+
"Settings panels",
|
|
854
|
+
"Mobile menus"
|
|
855
|
+
],
|
|
856
|
+
dependencies: ["@radix-ui/react-slot"],
|
|
857
|
+
radixPrimitive: "@radix-ui/react-slot"
|
|
858
|
+
},
|
|
859
|
+
header: {
|
|
860
|
+
name: "Header",
|
|
861
|
+
category: "layout",
|
|
862
|
+
description: "Page header with sticky positioning, glass morphism, and mobile menu",
|
|
863
|
+
keywords: ["header", "navbar", "navigation", "sticky", "mobile-menu"],
|
|
864
|
+
useCases: [
|
|
865
|
+
"Site headers",
|
|
866
|
+
"App navigation bars",
|
|
867
|
+
"Sticky headers",
|
|
868
|
+
"Mobile-friendly navigation"
|
|
869
|
+
],
|
|
870
|
+
dependencies: ["lucide-react"]
|
|
871
|
+
},
|
|
872
|
+
footer: {
|
|
873
|
+
name: "Footer",
|
|
874
|
+
category: "layout",
|
|
875
|
+
description: "Page footer with multi-column layout, social links, and copyright",
|
|
876
|
+
keywords: ["footer", "navigation", "links", "copyright", "social"],
|
|
877
|
+
useCases: [
|
|
878
|
+
"Site footers",
|
|
879
|
+
"Navigation sections",
|
|
880
|
+
"Contact information",
|
|
881
|
+
"Copyright notices"
|
|
882
|
+
],
|
|
883
|
+
dependencies: []
|
|
884
|
+
},
|
|
885
|
+
"customizer-panel": {
|
|
886
|
+
name: "CustomizerPanel",
|
|
887
|
+
category: "layout",
|
|
888
|
+
description: "Floating panel for theme, mode, and motion customization",
|
|
889
|
+
keywords: ["customizer", "theme", "settings", "preferences", "dark-mode"],
|
|
890
|
+
useCases: [
|
|
891
|
+
"Theme selection",
|
|
892
|
+
"Dark mode toggle",
|
|
893
|
+
"Motion preferences",
|
|
894
|
+
"User experience customization"
|
|
895
|
+
],
|
|
896
|
+
dependencies: ["lucide-react", "@thesage/tokens"]
|
|
897
|
+
},
|
|
898
|
+
"page-layout": {
|
|
899
|
+
name: "PageLayout",
|
|
900
|
+
category: "layout",
|
|
901
|
+
description: "Flexible page layout with header, nav stacks, breadcrumbs, and footer",
|
|
902
|
+
keywords: ["layout", "page", "template", "structure", "swiss-grid"],
|
|
903
|
+
useCases: [
|
|
904
|
+
"Page structure",
|
|
905
|
+
"Content layouts",
|
|
906
|
+
"Documentation pages",
|
|
907
|
+
"Dashboard layouts"
|
|
908
|
+
],
|
|
909
|
+
dependencies: []
|
|
910
|
+
},
|
|
911
|
+
"page-template": {
|
|
912
|
+
name: "PageTemplate",
|
|
913
|
+
category: "layout",
|
|
914
|
+
description: "Opinionated page template with Swiss Grid design and customizer",
|
|
915
|
+
keywords: ["template", "page", "swiss-grid", "layout", "documentation"],
|
|
916
|
+
useCases: [
|
|
917
|
+
"Blog pages",
|
|
918
|
+
"Documentation pages",
|
|
919
|
+
"Standard app pages",
|
|
920
|
+
"Content-focused layouts"
|
|
921
|
+
],
|
|
922
|
+
dependencies: []
|
|
923
|
+
},
|
|
924
|
+
// ============================================================================
|
|
925
|
+
// ACTIONS - Additional (2 more)
|
|
926
|
+
// ============================================================================
|
|
927
|
+
link: {
|
|
928
|
+
name: "Link",
|
|
929
|
+
category: "actions",
|
|
930
|
+
description: "Styled anchor element with theme-aware colors and hover states",
|
|
931
|
+
keywords: ["link", "anchor", "href", "navigation", "a", "url"],
|
|
932
|
+
useCases: [
|
|
933
|
+
"Text links",
|
|
934
|
+
"Navigation links",
|
|
935
|
+
"External references",
|
|
936
|
+
"Inline actions"
|
|
937
|
+
],
|
|
938
|
+
dependencies: []
|
|
939
|
+
},
|
|
940
|
+
magnetic: {
|
|
941
|
+
name: "Magnetic",
|
|
942
|
+
category: "actions",
|
|
943
|
+
description: "Magnetic hover effect that attracts elements toward cursor",
|
|
944
|
+
keywords: ["magnetic", "hover", "effect", "cursor", "animation", "interactive"],
|
|
945
|
+
useCases: [
|
|
946
|
+
"Interactive buttons",
|
|
947
|
+
"Hover effects",
|
|
948
|
+
"Playful interactions",
|
|
949
|
+
"Cursor attraction"
|
|
950
|
+
],
|
|
951
|
+
dependencies: ["framer-motion"]
|
|
952
|
+
},
|
|
953
|
+
// ============================================================================
|
|
954
|
+
// FORMS - Additional (7 more)
|
|
955
|
+
// ============================================================================
|
|
956
|
+
"search-bar": {
|
|
957
|
+
name: "SearchBar",
|
|
958
|
+
category: "forms",
|
|
959
|
+
description: "Search input with icon, clear button, and keyboard shortcuts",
|
|
960
|
+
keywords: ["search", "input", "find", "query", "filter", "bar"],
|
|
961
|
+
useCases: [
|
|
962
|
+
"Site search",
|
|
963
|
+
"Content filtering",
|
|
964
|
+
"Command palette trigger",
|
|
965
|
+
"Data filtering"
|
|
966
|
+
],
|
|
967
|
+
dependencies: ["lucide-react"]
|
|
968
|
+
},
|
|
969
|
+
"filter-button": {
|
|
970
|
+
name: "FilterButton",
|
|
971
|
+
category: "forms",
|
|
972
|
+
description: "Button for filtering content with active/inactive states",
|
|
973
|
+
keywords: ["filter", "button", "toggle", "category", "selection"],
|
|
974
|
+
useCases: [
|
|
975
|
+
"Category filters",
|
|
976
|
+
"Tag selection",
|
|
977
|
+
"Content filtering",
|
|
978
|
+
"Quick filters"
|
|
979
|
+
],
|
|
980
|
+
dependencies: []
|
|
981
|
+
},
|
|
982
|
+
"theme-switcher": {
|
|
983
|
+
name: "ThemeSwitcher",
|
|
984
|
+
category: "forms",
|
|
985
|
+
description: "Multi-theme selector for switching between Studio, Terra, and Volt",
|
|
986
|
+
keywords: ["theme", "switcher", "selector", "studio", "terra", "volt"],
|
|
987
|
+
useCases: [
|
|
988
|
+
"Theme selection",
|
|
989
|
+
"Brand customization",
|
|
990
|
+
"User preferences",
|
|
991
|
+
"Design switching"
|
|
992
|
+
],
|
|
993
|
+
dependencies: []
|
|
994
|
+
},
|
|
995
|
+
"theme-toggle": {
|
|
996
|
+
name: "ThemeToggle",
|
|
997
|
+
category: "forms",
|
|
998
|
+
description: "Light/dark mode toggle with smooth transitions",
|
|
999
|
+
keywords: ["theme", "toggle", "dark-mode", "light-mode", "mode"],
|
|
1000
|
+
useCases: [
|
|
1001
|
+
"Dark mode switch",
|
|
1002
|
+
"Light mode switch",
|
|
1003
|
+
"Theme mode control",
|
|
1004
|
+
"Accessibility preference"
|
|
1005
|
+
],
|
|
1006
|
+
dependencies: ["lucide-react"]
|
|
1007
|
+
},
|
|
1008
|
+
"color-picker": {
|
|
1009
|
+
name: "ColorPicker",
|
|
1010
|
+
category: "forms",
|
|
1011
|
+
description: "Color selection input with preset swatches and custom color support",
|
|
1012
|
+
keywords: ["color", "picker", "palette", "swatch", "hex", "customization"],
|
|
1013
|
+
useCases: [
|
|
1014
|
+
"Brand color selection",
|
|
1015
|
+
"Theme customization",
|
|
1016
|
+
"Design tools",
|
|
1017
|
+
"User preferences"
|
|
1018
|
+
],
|
|
1019
|
+
dependencies: []
|
|
1020
|
+
},
|
|
1021
|
+
"drag-drop": {
|
|
1022
|
+
name: "DragDrop",
|
|
1023
|
+
category: "forms",
|
|
1024
|
+
description: "Drag and drop file upload zone with preview support",
|
|
1025
|
+
keywords: ["drag", "drop", "upload", "file", "dropzone", "input"],
|
|
1026
|
+
useCases: [
|
|
1027
|
+
"File uploads",
|
|
1028
|
+
"Image uploads",
|
|
1029
|
+
"Document uploads",
|
|
1030
|
+
"Bulk imports"
|
|
1031
|
+
],
|
|
1032
|
+
dependencies: []
|
|
1033
|
+
},
|
|
1034
|
+
"text-field": {
|
|
1035
|
+
name: "TextField",
|
|
1036
|
+
category: "forms",
|
|
1037
|
+
description: "Complete text input with label, helper text, and error states",
|
|
1038
|
+
keywords: ["text", "field", "input", "label", "form", "validation"],
|
|
1039
|
+
useCases: [
|
|
1040
|
+
"Form fields",
|
|
1041
|
+
"Labeled inputs",
|
|
1042
|
+
"Validated inputs",
|
|
1043
|
+
"Complete form controls"
|
|
1044
|
+
],
|
|
1045
|
+
dependencies: []
|
|
1046
|
+
},
|
|
1047
|
+
// ============================================================================
|
|
1048
|
+
// NAVIGATION - Additional (4 more)
|
|
1049
|
+
// ============================================================================
|
|
1050
|
+
"nav-link": {
|
|
1051
|
+
name: "NavLink",
|
|
1052
|
+
category: "navigation",
|
|
1053
|
+
description: "Navigation link with active state indicators and variants",
|
|
1054
|
+
keywords: ["nav", "link", "navigation", "active", "menu", "item"],
|
|
1055
|
+
useCases: [
|
|
1056
|
+
"Navigation menus",
|
|
1057
|
+
"Sidebar links",
|
|
1058
|
+
"Header navigation",
|
|
1059
|
+
"Active page indicators"
|
|
1060
|
+
],
|
|
1061
|
+
dependencies: []
|
|
1062
|
+
},
|
|
1063
|
+
"secondary-nav": {
|
|
1064
|
+
name: "SecondaryNav",
|
|
1065
|
+
category: "navigation",
|
|
1066
|
+
description: "Horizontal secondary navigation bar for section switching",
|
|
1067
|
+
keywords: ["secondary", "navigation", "tabs", "sections", "subnav"],
|
|
1068
|
+
useCases: [
|
|
1069
|
+
"Section navigation",
|
|
1070
|
+
"Page subsections",
|
|
1071
|
+
"Tab-like navigation",
|
|
1072
|
+
"Category switching"
|
|
1073
|
+
],
|
|
1074
|
+
dependencies: []
|
|
1075
|
+
},
|
|
1076
|
+
"tertiary-nav": {
|
|
1077
|
+
name: "TertiaryNav",
|
|
1078
|
+
category: "navigation",
|
|
1079
|
+
description: "Third-level navigation for deep content hierarchies",
|
|
1080
|
+
keywords: ["tertiary", "navigation", "deep", "hierarchy", "subnav"],
|
|
1081
|
+
useCases: [
|
|
1082
|
+
"Deep navigation",
|
|
1083
|
+
"Documentation sections",
|
|
1084
|
+
"Multi-level content",
|
|
1085
|
+
"Nested categories"
|
|
1086
|
+
],
|
|
1087
|
+
dependencies: []
|
|
1088
|
+
},
|
|
1089
|
+
breadcrumbs: {
|
|
1090
|
+
name: "Breadcrumbs",
|
|
1091
|
+
category: "navigation",
|
|
1092
|
+
description: "Breadcrumb navigation with home icon and variants",
|
|
1093
|
+
keywords: ["breadcrumbs", "navigation", "path", "trail", "hierarchy"],
|
|
1094
|
+
useCases: [
|
|
1095
|
+
"Page location",
|
|
1096
|
+
"Navigation trail",
|
|
1097
|
+
"Hierarchical navigation",
|
|
1098
|
+
"Back navigation"
|
|
1099
|
+
],
|
|
1100
|
+
dependencies: ["lucide-react"]
|
|
1101
|
+
},
|
|
1102
|
+
// ============================================================================
|
|
1103
|
+
// OVERLAYS - Additional (2 more)
|
|
1104
|
+
// ============================================================================
|
|
1105
|
+
modal: {
|
|
1106
|
+
name: "Modal",
|
|
1107
|
+
category: "overlays",
|
|
1108
|
+
description: "Simple modal wrapper around Dialog with common patterns",
|
|
1109
|
+
keywords: ["modal", "dialog", "popup", "overlay", "window"],
|
|
1110
|
+
useCases: [
|
|
1111
|
+
"Simple modals",
|
|
1112
|
+
"Confirmation dialogs",
|
|
1113
|
+
"Form modals",
|
|
1114
|
+
"Content overlays"
|
|
1115
|
+
],
|
|
1116
|
+
dependencies: ["@radix-ui/react-dialog"],
|
|
1117
|
+
radixPrimitive: "@radix-ui/react-dialog"
|
|
1118
|
+
},
|
|
1119
|
+
dropdown: {
|
|
1120
|
+
name: "Dropdown",
|
|
1121
|
+
category: "overlays",
|
|
1122
|
+
description: "Simple dropdown wrapper for common dropdown patterns",
|
|
1123
|
+
keywords: ["dropdown", "menu", "select", "options", "popover"],
|
|
1124
|
+
useCases: [
|
|
1125
|
+
"Action menus",
|
|
1126
|
+
"User menus",
|
|
1127
|
+
"Quick selections",
|
|
1128
|
+
"Option lists"
|
|
1129
|
+
],
|
|
1130
|
+
dependencies: ["@radix-ui/react-dropdown-menu"],
|
|
1131
|
+
radixPrimitive: "@radix-ui/react-dropdown-menu"
|
|
1132
|
+
},
|
|
1133
|
+
// ============================================================================
|
|
1134
|
+
// FEEDBACK - Additional (2 more)
|
|
1135
|
+
// ============================================================================
|
|
1136
|
+
spinner: {
|
|
1137
|
+
name: "Spinner",
|
|
1138
|
+
category: "feedback",
|
|
1139
|
+
description: "Animated loading spinner with size variants",
|
|
1140
|
+
keywords: ["spinner", "loading", "loader", "progress", "waiting"],
|
|
1141
|
+
useCases: [
|
|
1142
|
+
"Loading states",
|
|
1143
|
+
"Button loading",
|
|
1144
|
+
"Data fetching",
|
|
1145
|
+
"Async operations"
|
|
1146
|
+
],
|
|
1147
|
+
dependencies: []
|
|
1148
|
+
},
|
|
1149
|
+
"progress-bar": {
|
|
1150
|
+
name: "ProgressBar",
|
|
1151
|
+
category: "feedback",
|
|
1152
|
+
description: "Horizontal progress bar with percentage display",
|
|
1153
|
+
keywords: ["progress", "bar", "loading", "percentage", "completion"],
|
|
1154
|
+
useCases: [
|
|
1155
|
+
"File uploads",
|
|
1156
|
+
"Task progress",
|
|
1157
|
+
"Loading indicators",
|
|
1158
|
+
"Step completion"
|
|
1159
|
+
],
|
|
1160
|
+
dependencies: []
|
|
1161
|
+
},
|
|
1162
|
+
// ============================================================================
|
|
1163
|
+
// DATA DISPLAY - Additional (5 more)
|
|
1164
|
+
// ============================================================================
|
|
1165
|
+
brand: {
|
|
1166
|
+
name: "Brand",
|
|
1167
|
+
category: "data-display",
|
|
1168
|
+
description: "Theme-aware brand/logo component with size variants and link support",
|
|
1169
|
+
keywords: ["brand", "logo", "identity", "header", "company"],
|
|
1170
|
+
useCases: [
|
|
1171
|
+
"Site logos",
|
|
1172
|
+
"Header branding",
|
|
1173
|
+
"Footer branding",
|
|
1174
|
+
"App identity"
|
|
1175
|
+
],
|
|
1176
|
+
dependencies: []
|
|
1177
|
+
},
|
|
1178
|
+
"aspect-image": {
|
|
1179
|
+
name: "AspectImage",
|
|
1180
|
+
category: "data-display",
|
|
1181
|
+
description: "Image with configurable aspect ratio, rounded corners, and captions",
|
|
1182
|
+
keywords: ["image", "aspect", "ratio", "figure", "caption", "media"],
|
|
1183
|
+
useCases: [
|
|
1184
|
+
"Gallery images",
|
|
1185
|
+
"Article images",
|
|
1186
|
+
"Product images",
|
|
1187
|
+
"Thumbnails with captions"
|
|
1188
|
+
],
|
|
1189
|
+
dependencies: []
|
|
1190
|
+
},
|
|
1191
|
+
"variable-weight-text": {
|
|
1192
|
+
name: "VariableWeightText",
|
|
1193
|
+
category: "data-display",
|
|
1194
|
+
description: "Animated text with breathing font-weight effect using variable fonts",
|
|
1195
|
+
keywords: ["variable", "font", "weight", "animation", "breathing", "motion"],
|
|
1196
|
+
useCases: [
|
|
1197
|
+
"Hero text",
|
|
1198
|
+
"Emphasis text",
|
|
1199
|
+
"Attention grabbing",
|
|
1200
|
+
"Variable font showcase"
|
|
1201
|
+
],
|
|
1202
|
+
dependencies: ["framer-motion"]
|
|
1203
|
+
},
|
|
1204
|
+
typewriter: {
|
|
1205
|
+
name: "Typewriter",
|
|
1206
|
+
category: "data-display",
|
|
1207
|
+
description: "Typewriter text animation with cursor and loop support",
|
|
1208
|
+
keywords: ["typewriter", "typing", "animation", "cursor", "text", "effect"],
|
|
1209
|
+
useCases: [
|
|
1210
|
+
"Hero taglines",
|
|
1211
|
+
"Terminal effects",
|
|
1212
|
+
"Dynamic headings",
|
|
1213
|
+
"Attention text"
|
|
1214
|
+
],
|
|
1215
|
+
dependencies: ["framer-motion"]
|
|
1216
|
+
},
|
|
1217
|
+
"github-icon": {
|
|
1218
|
+
name: "GitHubIcon",
|
|
1219
|
+
category: "data-display",
|
|
1220
|
+
description: "GitHub logo icon that inherits text color for theme support",
|
|
1221
|
+
keywords: ["github", "icon", "social", "logo", "svg"],
|
|
1222
|
+
useCases: [
|
|
1223
|
+
"Social links",
|
|
1224
|
+
"Footer icons",
|
|
1225
|
+
"Repository links",
|
|
1226
|
+
"Open source badges"
|
|
1227
|
+
],
|
|
1228
|
+
dependencies: []
|
|
1229
|
+
},
|
|
1230
|
+
// ============================================================================
|
|
1231
|
+
// SPECIALTY - Backgrounds (3)
|
|
1232
|
+
// ============================================================================
|
|
1233
|
+
"warp-background": {
|
|
1234
|
+
name: "WarpBackground",
|
|
1235
|
+
category: "backgrounds",
|
|
1236
|
+
description: "Animated warp speed star field background effect",
|
|
1237
|
+
keywords: ["warp", "stars", "background", "animation", "space", "effect"],
|
|
1238
|
+
useCases: [
|
|
1239
|
+
"Hero backgrounds",
|
|
1240
|
+
"Landing pages",
|
|
1241
|
+
"Loading screens",
|
|
1242
|
+
"Sci-fi themes"
|
|
1243
|
+
],
|
|
1244
|
+
dependencies: ["framer-motion"]
|
|
1245
|
+
},
|
|
1246
|
+
"faulty-terminal": {
|
|
1247
|
+
name: "FaultyTerminal",
|
|
1248
|
+
category: "backgrounds",
|
|
1249
|
+
description: "Glitchy terminal background with flickering and scan lines",
|
|
1250
|
+
keywords: ["terminal", "glitch", "background", "retro", "crt", "effect"],
|
|
1251
|
+
useCases: [
|
|
1252
|
+
"Retro themes",
|
|
1253
|
+
"Hacker aesthetics",
|
|
1254
|
+
"Error pages",
|
|
1255
|
+
"Terminal UIs"
|
|
1256
|
+
],
|
|
1257
|
+
dependencies: []
|
|
1258
|
+
},
|
|
1259
|
+
"orb-background": {
|
|
1260
|
+
name: "OrbBackground",
|
|
1261
|
+
category: "backgrounds",
|
|
1262
|
+
description: "Animated floating orb with gradient blur effect",
|
|
1263
|
+
keywords: ["orb", "gradient", "background", "animation", "blur", "ambient"],
|
|
1264
|
+
useCases: [
|
|
1265
|
+
"Landing pages",
|
|
1266
|
+
"Hero sections",
|
|
1267
|
+
"Ambient backgrounds",
|
|
1268
|
+
"Modern aesthetics"
|
|
1269
|
+
],
|
|
1270
|
+
dependencies: ["framer-motion"]
|
|
1271
|
+
},
|
|
1272
|
+
// ============================================================================
|
|
1273
|
+
// SPECIALTY - Cursor (2)
|
|
1274
|
+
// ============================================================================
|
|
1275
|
+
"splash-cursor": {
|
|
1276
|
+
name: "SplashCursor",
|
|
1277
|
+
category: "cursor",
|
|
1278
|
+
description: "Custom cursor with splash/ripple effect on click",
|
|
1279
|
+
keywords: ["cursor", "splash", "ripple", "click", "effect", "interactive"],
|
|
1280
|
+
useCases: [
|
|
1281
|
+
"Interactive experiences",
|
|
1282
|
+
"Creative portfolios",
|
|
1283
|
+
"Playful interfaces",
|
|
1284
|
+
"Click feedback"
|
|
1285
|
+
],
|
|
1286
|
+
dependencies: []
|
|
1287
|
+
},
|
|
1288
|
+
"target-cursor": {
|
|
1289
|
+
name: "TargetCursor",
|
|
1290
|
+
category: "cursor",
|
|
1291
|
+
description: "Custom cursor with target/crosshair appearance",
|
|
1292
|
+
keywords: ["cursor", "target", "crosshair", "pointer", "custom"],
|
|
1293
|
+
useCases: [
|
|
1294
|
+
"Gaming interfaces",
|
|
1295
|
+
"Precision tools",
|
|
1296
|
+
"Interactive elements",
|
|
1297
|
+
"Custom pointers"
|
|
1298
|
+
],
|
|
1299
|
+
dependencies: []
|
|
1300
|
+
},
|
|
1301
|
+
// ============================================================================
|
|
1302
|
+
// SPECIALTY - Motion (1)
|
|
1303
|
+
// ============================================================================
|
|
1304
|
+
"animated-beam": {
|
|
1305
|
+
name: "AnimatedBeam",
|
|
1306
|
+
category: "motion",
|
|
1307
|
+
description: "Animated beam/line connecting two elements",
|
|
1308
|
+
keywords: ["beam", "animation", "connection", "line", "flow", "motion"],
|
|
1309
|
+
useCases: [
|
|
1310
|
+
"Connecting elements",
|
|
1311
|
+
"Data flow visualization",
|
|
1312
|
+
"Architecture diagrams",
|
|
1313
|
+
"Interactive connections"
|
|
1314
|
+
],
|
|
1315
|
+
dependencies: ["framer-motion"]
|
|
1316
|
+
},
|
|
1317
|
+
// ============================================================================
|
|
1318
|
+
// SPECIALTY - Blocks (2)
|
|
1319
|
+
// ============================================================================
|
|
1320
|
+
hero: {
|
|
1321
|
+
name: "Hero",
|
|
1322
|
+
category: "blocks",
|
|
1323
|
+
description: "Full-width hero section with title, subtitle, and CTA",
|
|
1324
|
+
keywords: ["hero", "banner", "header", "landing", "cta", "section"],
|
|
1325
|
+
useCases: [
|
|
1326
|
+
"Landing pages",
|
|
1327
|
+
"Page headers",
|
|
1328
|
+
"Marketing sections",
|
|
1329
|
+
"Feature highlights"
|
|
1330
|
+
],
|
|
1331
|
+
dependencies: []
|
|
1332
|
+
},
|
|
1333
|
+
"open-graph-card": {
|
|
1334
|
+
name: "OpenGraphCard",
|
|
1335
|
+
category: "blocks",
|
|
1336
|
+
description: "Social media preview card for Open Graph metadata",
|
|
1337
|
+
keywords: ["open-graph", "social", "preview", "card", "meta", "share"],
|
|
1338
|
+
useCases: [
|
|
1339
|
+
"Social sharing previews",
|
|
1340
|
+
"Link previews",
|
|
1341
|
+
"Meta card generation",
|
|
1342
|
+
"Marketing previews"
|
|
1343
|
+
],
|
|
1344
|
+
dependencies: []
|
|
720
1345
|
}
|
|
721
1346
|
};
|
|
722
1347
|
function getComponentsByCategory(category) {
|
|
@@ -756,13 +1381,13 @@ var server = new import_server.Server(
|
|
|
756
1381
|
var TOOLS = [
|
|
757
1382
|
{
|
|
758
1383
|
name: "list_components",
|
|
759
|
-
description: "List all available Sage UI components. Optionally filter by category (actions, forms, navigation, overlays, feedback, data-display, layout).",
|
|
1384
|
+
description: "List all available Sage UI components. Optionally filter by category (core: actions, forms, navigation, overlays, feedback, data-display, layout; specialty: backgrounds, cursor, motion, blocks).",
|
|
760
1385
|
inputSchema: {
|
|
761
1386
|
type: "object",
|
|
762
1387
|
properties: {
|
|
763
1388
|
category: {
|
|
764
1389
|
type: "string",
|
|
765
|
-
description: "Filter by category: actions, forms, navigation, overlays, feedback, data-display,
|
|
1390
|
+
description: "Filter by category. Core: actions, forms, navigation, overlays, feedback, data-display, layout. Specialty: backgrounds, cursor, motion, blocks.",
|
|
766
1391
|
enum: [
|
|
767
1392
|
"actions",
|
|
768
1393
|
"forms",
|
|
@@ -770,7 +1395,11 @@ var TOOLS = [
|
|
|
770
1395
|
"overlays",
|
|
771
1396
|
"feedback",
|
|
772
1397
|
"data-display",
|
|
773
|
-
"layout"
|
|
1398
|
+
"layout",
|
|
1399
|
+
"backgrounds",
|
|
1400
|
+
"cursor",
|
|
1401
|
+
"motion",
|
|
1402
|
+
"blocks"
|
|
774
1403
|
]
|
|
775
1404
|
}
|
|
776
1405
|
}
|