@seed-ship/mcp-ui-solid 2.0.1 → 2.1.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.
Files changed (136) hide show
  1. package/dist/components/AutocompleteDropdown.cjs +201 -0
  2. package/dist/components/AutocompleteDropdown.cjs.map +1 -0
  3. package/dist/components/AutocompleteDropdown.d.ts +71 -0
  4. package/dist/components/AutocompleteDropdown.d.ts.map +1 -0
  5. package/dist/components/AutocompleteDropdown.js +201 -0
  6. package/dist/components/AutocompleteDropdown.js.map +1 -0
  7. package/dist/components/AutocompleteFormField.cjs +289 -0
  8. package/dist/components/AutocompleteFormField.cjs.map +1 -0
  9. package/dist/components/AutocompleteFormField.d.ts +52 -0
  10. package/dist/components/AutocompleteFormField.d.ts.map +1 -0
  11. package/dist/components/AutocompleteFormField.js +289 -0
  12. package/dist/components/AutocompleteFormField.js.map +1 -0
  13. package/dist/components/DraggableGridItem.cjs +133 -0
  14. package/dist/components/DraggableGridItem.cjs.map +1 -0
  15. package/dist/components/DraggableGridItem.d.ts +95 -0
  16. package/dist/components/DraggableGridItem.d.ts.map +1 -0
  17. package/dist/components/DraggableGridItem.js +133 -0
  18. package/dist/components/DraggableGridItem.js.map +1 -0
  19. package/dist/components/EditableUIResourceRenderer.cjs +199 -0
  20. package/dist/components/EditableUIResourceRenderer.cjs.map +1 -0
  21. package/dist/components/EditableUIResourceRenderer.d.ts +43 -0
  22. package/dist/components/EditableUIResourceRenderer.d.ts.map +1 -0
  23. package/dist/components/EditableUIResourceRenderer.js +199 -0
  24. package/dist/components/EditableUIResourceRenderer.js.map +1 -0
  25. package/dist/components/GhostText.cjs +105 -0
  26. package/dist/components/GhostText.cjs.map +1 -0
  27. package/dist/components/GhostText.d.ts +113 -0
  28. package/dist/components/GhostText.d.ts.map +1 -0
  29. package/dist/components/GhostText.js +105 -0
  30. package/dist/components/GhostText.js.map +1 -0
  31. package/dist/components/ResizeHandle.cjs +177 -0
  32. package/dist/components/ResizeHandle.cjs.map +1 -0
  33. package/dist/components/ResizeHandle.d.ts +50 -0
  34. package/dist/components/ResizeHandle.d.ts.map +1 -0
  35. package/dist/components/ResizeHandle.js +177 -0
  36. package/dist/components/ResizeHandle.js.map +1 -0
  37. package/dist/context/AutocompleteContext.cjs +158 -0
  38. package/dist/context/AutocompleteContext.cjs.map +1 -0
  39. package/dist/context/AutocompleteContext.d.ts +77 -0
  40. package/dist/context/AutocompleteContext.d.ts.map +1 -0
  41. package/dist/context/AutocompleteContext.js +158 -0
  42. package/dist/context/AutocompleteContext.js.map +1 -0
  43. package/dist/hooks/index.d.ts +6 -0
  44. package/dist/hooks/index.d.ts.map +1 -1
  45. package/dist/hooks/useAutocomplete.cjs +242 -0
  46. package/dist/hooks/useAutocomplete.cjs.map +1 -0
  47. package/dist/hooks/useAutocomplete.d.ts +119 -0
  48. package/dist/hooks/useAutocomplete.d.ts.map +1 -0
  49. package/dist/hooks/useAutocomplete.js +242 -0
  50. package/dist/hooks/useAutocomplete.js.map +1 -0
  51. package/dist/hooks/useDragDrop.cjs +170 -0
  52. package/dist/hooks/useDragDrop.cjs.map +1 -0
  53. package/dist/hooks/useDragDrop.d.ts +100 -0
  54. package/dist/hooks/useDragDrop.d.ts.map +1 -0
  55. package/dist/hooks/useDragDrop.js +170 -0
  56. package/dist/hooks/useDragDrop.js.map +1 -0
  57. package/dist/hooks/useResize.cjs +209 -0
  58. package/dist/hooks/useResize.cjs.map +1 -0
  59. package/dist/hooks/useResize.d.ts +87 -0
  60. package/dist/hooks/useResize.d.ts.map +1 -0
  61. package/dist/hooks/useResize.js +209 -0
  62. package/dist/hooks/useResize.js.map +1 -0
  63. package/dist/hooks.cjs +6 -0
  64. package/dist/hooks.cjs.map +1 -1
  65. package/dist/hooks.d.cts +6 -0
  66. package/dist/hooks.d.ts +6 -0
  67. package/dist/hooks.js +6 -0
  68. package/dist/hooks.js.map +1 -1
  69. package/dist/index.cjs +29 -0
  70. package/dist/index.cjs.map +1 -1
  71. package/dist/index.d.cts +18 -3
  72. package/dist/index.d.ts +18 -3
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +29 -0
  75. package/dist/index.js.map +1 -1
  76. package/dist/plugins/duckdb.cjs +192 -0
  77. package/dist/plugins/duckdb.cjs.map +1 -0
  78. package/dist/plugins/duckdb.d.ts +20 -0
  79. package/dist/plugins/duckdb.d.ts.map +1 -0
  80. package/dist/plugins/duckdb.js +170 -0
  81. package/dist/plugins/duckdb.js.map +1 -0
  82. package/dist/plugins/groq.cjs +97 -0
  83. package/dist/plugins/groq.cjs.map +1 -0
  84. package/dist/plugins/groq.d.ts +13 -0
  85. package/dist/plugins/groq.d.ts.map +1 -0
  86. package/dist/plugins/groq.js +97 -0
  87. package/dist/plugins/groq.js.map +1 -0
  88. package/dist/plugins/index.d.ts +10 -0
  89. package/dist/plugins/index.d.ts.map +1 -0
  90. package/dist/plugins/rest.cjs +92 -0
  91. package/dist/plugins/rest.cjs.map +1 -0
  92. package/dist/plugins/rest.d.ts +13 -0
  93. package/dist/plugins/rest.d.ts.map +1 -0
  94. package/dist/plugins/rest.js +92 -0
  95. package/dist/plugins/rest.js.map +1 -0
  96. package/dist/plugins/supabase.cjs +79 -0
  97. package/dist/plugins/supabase.cjs.map +1 -0
  98. package/dist/plugins/supabase.d.ts +13 -0
  99. package/dist/plugins/supabase.d.ts.map +1 -0
  100. package/dist/plugins/supabase.js +79 -0
  101. package/dist/plugins/supabase.js.map +1 -0
  102. package/dist/types/index.d.ts +430 -0
  103. package/dist/types/index.d.ts.map +1 -1
  104. package/dist/types.d.cts +430 -0
  105. package/dist/types.d.ts +430 -0
  106. package/esbuild-why-Full bundle (with deps).html +51 -0
  107. package/esbuild-why-Hooks only.html +51 -0
  108. package/esbuild-why-Streaming renderer.html +51 -0
  109. package/package.json +16 -1
  110. package/src/components/AutocompleteDropdown.tsx +329 -0
  111. package/src/components/AutocompleteFormField.tsx +288 -0
  112. package/src/components/DraggableGridItem.tsx +274 -0
  113. package/src/components/EditableUIResourceRenderer.tsx +268 -0
  114. package/src/components/GhostText.tsx +262 -0
  115. package/src/components/ResizeHandle.tsx +267 -0
  116. package/src/context/AutocompleteContext.tsx +317 -0
  117. package/src/hooks/index.ts +23 -0
  118. package/src/hooks/useAutocomplete.test.ts +334 -0
  119. package/src/hooks/useAutocomplete.ts +482 -0
  120. package/src/hooks/useDragDrop.test.ts +355 -0
  121. package/src/hooks/useDragDrop.ts +379 -0
  122. package/src/hooks/useResize.test.ts +313 -0
  123. package/src/hooks/useResize.ts +372 -0
  124. package/src/index.ts +71 -0
  125. package/src/plugins/duckdb.ts +269 -0
  126. package/src/plugins/groq.ts +137 -0
  127. package/src/plugins/index.ts +14 -0
  128. package/src/plugins/rest.ts +147 -0
  129. package/src/plugins/supabase.ts +120 -0
  130. package/src/styles/autocomplete.css +356 -0
  131. package/src/styles/drag-drop.css +297 -0
  132. package/src/styles/index.css +7 -0
  133. package/src/types/index.ts +529 -0
  134. package/src/vite-env.d.ts +18 -0
  135. package/tsconfig.tsbuildinfo +1 -1
  136. package/vite.config.ts +2 -0
@@ -0,0 +1,356 @@
1
+ /**
2
+ * Autocomplete Styles
3
+ * CSS styles for autocomplete components
4
+ *
5
+ * Sprint Autocomplete Feature
6
+ */
7
+
8
+ /* =============================================================================
9
+ ANIMATIONS
10
+ ============================================================================= */
11
+
12
+ @keyframes mcp-spin {
13
+ to {
14
+ transform: rotate(360deg);
15
+ }
16
+ }
17
+
18
+ /* =============================================================================
19
+ GHOST TEXT
20
+ ============================================================================= */
21
+
22
+ .mcp-ghost-text-container {
23
+ position: relative;
24
+ display: inline-block;
25
+ width: 100%;
26
+ }
27
+
28
+ .mcp-ghost-text-overlay {
29
+ position: absolute;
30
+ top: 0;
31
+ left: 0;
32
+ right: 0;
33
+ bottom: 0;
34
+ pointer-events: none;
35
+ overflow: hidden;
36
+ white-space: pre;
37
+ }
38
+
39
+ .mcp-ghost-text {
40
+ color: #9ca3af;
41
+ opacity: 0.7;
42
+ }
43
+
44
+ .mcp-ghost-text-hint {
45
+ position: absolute;
46
+ right: 8px;
47
+ top: 50%;
48
+ transform: translateY(-50%);
49
+ font-size: 0.75rem;
50
+ color: #6b7280;
51
+ background-color: rgba(255, 255, 255, 0.95);
52
+ padding: 2px 8px;
53
+ border-radius: 4px;
54
+ border: 1px solid #e5e7eb;
55
+ pointer-events: none;
56
+ animation: mcp-hint-fade-in 150ms ease;
57
+ }
58
+
59
+ @keyframes mcp-hint-fade-in {
60
+ from {
61
+ opacity: 0;
62
+ transform: translateY(-50%) translateX(4px);
63
+ }
64
+ to {
65
+ opacity: 1;
66
+ transform: translateY(-50%) translateX(0);
67
+ }
68
+ }
69
+
70
+ .mcp-ghost-text-input-wrapper {
71
+ position: relative;
72
+ }
73
+
74
+ .mcp-ghost-text-input {
75
+ position: relative;
76
+ background-color: transparent;
77
+ caret-color: inherit;
78
+ }
79
+
80
+ /* =============================================================================
81
+ AUTOCOMPLETE DROPDOWN
82
+ ============================================================================= */
83
+
84
+ .mcp-autocomplete-dropdown {
85
+ position: absolute;
86
+ left: 0;
87
+ right: 0;
88
+ z-index: 50;
89
+ background-color: #ffffff;
90
+ border: 1px solid #e5e7eb;
91
+ border-radius: 6px;
92
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
93
+ overflow: hidden;
94
+ animation: mcp-dropdown-enter 150ms ease;
95
+ }
96
+
97
+ @keyframes mcp-dropdown-enter {
98
+ from {
99
+ opacity: 0;
100
+ transform: translateY(-4px);
101
+ }
102
+ to {
103
+ opacity: 1;
104
+ transform: translateY(0);
105
+ }
106
+ }
107
+
108
+ .mcp-autocomplete-options {
109
+ margin: 0;
110
+ padding: 4px 0;
111
+ list-style: none;
112
+ max-height: 200px;
113
+ overflow-y: auto;
114
+ }
115
+
116
+ .mcp-autocomplete-option {
117
+ padding: 8px 16px;
118
+ cursor: pointer;
119
+ transition: background-color 150ms ease;
120
+ }
121
+
122
+ .mcp-autocomplete-option:hover {
123
+ background-color: #f3f4f6;
124
+ }
125
+
126
+ .mcp-autocomplete-option-selected {
127
+ background-color: #eff6ff !important;
128
+ }
129
+
130
+ .mcp-autocomplete-option-disabled {
131
+ cursor: not-allowed;
132
+ opacity: 0.5;
133
+ }
134
+
135
+ .mcp-autocomplete-option-disabled:hover {
136
+ background-color: transparent;
137
+ }
138
+
139
+ .mcp-autocomplete-option-content {
140
+ display: flex;
141
+ align-items: center;
142
+ gap: 8px;
143
+ }
144
+
145
+ .mcp-autocomplete-option-icon {
146
+ flex-shrink: 0;
147
+ width: 20px;
148
+ height: 20px;
149
+ display: flex;
150
+ align-items: center;
151
+ justify-content: center;
152
+ }
153
+
154
+ .mcp-autocomplete-option-text {
155
+ flex: 1;
156
+ min-width: 0;
157
+ }
158
+
159
+ .mcp-autocomplete-option-label {
160
+ display: block;
161
+ font-size: 0.875rem;
162
+ color: #374151;
163
+ white-space: nowrap;
164
+ overflow: hidden;
165
+ text-overflow: ellipsis;
166
+ }
167
+
168
+ .mcp-autocomplete-option-description {
169
+ display: block;
170
+ font-size: 0.75rem;
171
+ color: #6b7280;
172
+ white-space: nowrap;
173
+ overflow: hidden;
174
+ text-overflow: ellipsis;
175
+ margin-top: 2px;
176
+ }
177
+
178
+ .mcp-autocomplete-highlight {
179
+ font-weight: 600;
180
+ color: #1d4ed8;
181
+ }
182
+
183
+ .mcp-autocomplete-loading,
184
+ .mcp-autocomplete-empty {
185
+ padding: 12px 16px;
186
+ font-size: 0.875rem;
187
+ color: #6b7280;
188
+ }
189
+
190
+ .mcp-autocomplete-loading {
191
+ display: flex;
192
+ align-items: center;
193
+ gap: 8px;
194
+ }
195
+
196
+ .mcp-autocomplete-empty {
197
+ text-align: center;
198
+ }
199
+
200
+ .mcp-autocomplete-footer {
201
+ padding: 6px 12px;
202
+ border-top: 1px solid #e5e7eb;
203
+ background-color: #f9fafb;
204
+ font-size: 0.75rem;
205
+ color: #6b7280;
206
+ }
207
+
208
+ /* =============================================================================
209
+ DARK MODE
210
+ ============================================================================= */
211
+
212
+ @media (prefers-color-scheme: dark) {
213
+ .mcp-ghost-text {
214
+ color: #6b7280;
215
+ }
216
+
217
+ .mcp-ghost-text-hint {
218
+ background-color: rgba(31, 41, 55, 0.95);
219
+ border-color: #374151;
220
+ color: #9ca3af;
221
+ }
222
+
223
+ .mcp-autocomplete-dropdown {
224
+ background-color: #1f2937;
225
+ border-color: #374151;
226
+ }
227
+
228
+ .mcp-autocomplete-option:hover {
229
+ background-color: #374151;
230
+ }
231
+
232
+ .mcp-autocomplete-option-selected {
233
+ background-color: #1e3a5f !important;
234
+ }
235
+
236
+ .mcp-autocomplete-option-label {
237
+ color: #e5e7eb;
238
+ }
239
+
240
+ .mcp-autocomplete-option-description {
241
+ color: #9ca3af;
242
+ }
243
+
244
+ .mcp-autocomplete-highlight {
245
+ color: #60a5fa;
246
+ }
247
+
248
+ .mcp-autocomplete-loading,
249
+ .mcp-autocomplete-empty {
250
+ color: #9ca3af;
251
+ }
252
+
253
+ .mcp-autocomplete-footer {
254
+ background-color: #111827;
255
+ border-color: #374151;
256
+ color: #9ca3af;
257
+ }
258
+
259
+ .mcp-autocomplete-footer kbd {
260
+ background-color: #374151;
261
+ color: #d1d5db;
262
+ }
263
+ }
264
+
265
+ /* Explicit dark mode class support */
266
+ .dark .mcp-ghost-text {
267
+ color: #6b7280;
268
+ }
269
+
270
+ .dark .mcp-ghost-text-hint {
271
+ background-color: rgba(31, 41, 55, 0.95);
272
+ border-color: #374151;
273
+ color: #9ca3af;
274
+ }
275
+
276
+ .dark .mcp-autocomplete-dropdown {
277
+ background-color: #1f2937;
278
+ border-color: #374151;
279
+ }
280
+
281
+ .dark .mcp-autocomplete-option:hover {
282
+ background-color: #374151;
283
+ }
284
+
285
+ .dark .mcp-autocomplete-option-selected {
286
+ background-color: #1e3a5f !important;
287
+ }
288
+
289
+ .dark .mcp-autocomplete-option-label {
290
+ color: #e5e7eb;
291
+ }
292
+
293
+ .dark .mcp-autocomplete-option-description {
294
+ color: #9ca3af;
295
+ }
296
+
297
+ .dark .mcp-autocomplete-highlight {
298
+ color: #60a5fa;
299
+ }
300
+
301
+ .dark .mcp-autocomplete-loading,
302
+ .dark .mcp-autocomplete-empty {
303
+ color: #9ca3af;
304
+ }
305
+
306
+ .dark .mcp-autocomplete-footer {
307
+ background-color: #111827;
308
+ border-color: #374151;
309
+ color: #9ca3af;
310
+ }
311
+
312
+ .dark .mcp-autocomplete-footer kbd {
313
+ background-color: #374151;
314
+ color: #d1d5db;
315
+ }
316
+
317
+ /* =============================================================================
318
+ SCROLLBAR STYLING
319
+ ============================================================================= */
320
+
321
+ .mcp-autocomplete-options::-webkit-scrollbar {
322
+ width: 6px;
323
+ }
324
+
325
+ .mcp-autocomplete-options::-webkit-scrollbar-track {
326
+ background: transparent;
327
+ }
328
+
329
+ .mcp-autocomplete-options::-webkit-scrollbar-thumb {
330
+ background-color: #d1d5db;
331
+ border-radius: 3px;
332
+ }
333
+
334
+ .dark .mcp-autocomplete-options::-webkit-scrollbar-thumb {
335
+ background-color: #4b5563;
336
+ }
337
+
338
+ /* =============================================================================
339
+ ACCESSIBILITY
340
+ ============================================================================= */
341
+
342
+ /* Focus styles */
343
+ .mcp-autocomplete-option:focus {
344
+ outline: 2px solid #3b82f6;
345
+ outline-offset: -2px;
346
+ }
347
+
348
+ /* Reduced motion */
349
+ @media (prefers-reduced-motion: reduce) {
350
+ .mcp-autocomplete-dropdown,
351
+ .mcp-ghost-text-hint,
352
+ .mcp-autocomplete-option {
353
+ animation: none !important;
354
+ transition: none !important;
355
+ }
356
+ }
@@ -0,0 +1,297 @@
1
+ /**
2
+ * Drag-Drop Styles
3
+ * CSS styles for drag-and-drop grid editing
4
+ *
5
+ * Sprint Drag-Drop Feature
6
+ */
7
+
8
+ /* =============================================================================
9
+ DRAGGABLE GRID ITEM
10
+ ============================================================================= */
11
+
12
+ .mcp-draggable-grid-item {
13
+ position: relative;
14
+ transition: all 200ms ease-out;
15
+ }
16
+
17
+ /* Hover state - show drag handle */
18
+ .mcp-draggable-grid-item.mcp-draggable:hover .mcp-drag-handle {
19
+ opacity: 1 !important;
20
+ }
21
+
22
+ /* Dragging state */
23
+ .mcp-draggable-grid-item.mcp-dragging {
24
+ opacity: 0.5;
25
+ transform: scale(1.02);
26
+ z-index: 100;
27
+ cursor: grabbing;
28
+ }
29
+
30
+ /* Drop target state */
31
+ .mcp-draggable-grid-item.mcp-drop-target:not(.mcp-dragging) {
32
+ box-shadow: 0 0 0 2px #3b82f6;
33
+ border-radius: 4px;
34
+ }
35
+
36
+ /* Resizing state */
37
+ .mcp-draggable-grid-item.mcp-resizing {
38
+ z-index: 100;
39
+ transition: none;
40
+ }
41
+
42
+ /* =============================================================================
43
+ DRAG HANDLE
44
+ ============================================================================= */
45
+
46
+ .mcp-drag-handle {
47
+ position: absolute;
48
+ top: 4px;
49
+ left: 50%;
50
+ transform: translateX(-50%);
51
+ width: 40px;
52
+ height: 4px;
53
+ background-color: rgba(0, 0, 0, 0.2);
54
+ border-radius: 2px;
55
+ cursor: grab;
56
+ opacity: 0;
57
+ transition: opacity 150ms ease, background-color 150ms ease;
58
+ z-index: 5;
59
+ }
60
+
61
+ .mcp-drag-handle:hover {
62
+ background-color: rgba(0, 0, 0, 0.4);
63
+ }
64
+
65
+ .mcp-drag-handle:active {
66
+ cursor: grabbing;
67
+ }
68
+
69
+ /* =============================================================================
70
+ RESIZE HANDLES
71
+ ============================================================================= */
72
+
73
+ .mcp-resize-handle {
74
+ position: absolute;
75
+ z-index: 10;
76
+ user-select: none;
77
+ touch-action: none;
78
+ }
79
+
80
+ /* Horizontal resize handles */
81
+ .mcp-resize-handle-left,
82
+ .mcp-resize-handle-right {
83
+ cursor: ew-resize;
84
+ width: 12px;
85
+ height: 100%;
86
+ top: 0;
87
+ }
88
+
89
+ .mcp-resize-handle-left {
90
+ left: -6px;
91
+ }
92
+
93
+ .mcp-resize-handle-right {
94
+ right: -6px;
95
+ }
96
+
97
+ /* Vertical resize handles */
98
+ .mcp-resize-handle-top,
99
+ .mcp-resize-handle-bottom {
100
+ cursor: ns-resize;
101
+ height: 12px;
102
+ width: 100%;
103
+ left: 0;
104
+ }
105
+
106
+ .mcp-resize-handle-top {
107
+ top: -6px;
108
+ }
109
+
110
+ .mcp-resize-handle-bottom {
111
+ bottom: -6px;
112
+ }
113
+
114
+ /* Resize indicator (visible line) */
115
+ .mcp-resize-indicator {
116
+ position: absolute;
117
+ background-color: #9ca3af;
118
+ border-radius: 2px;
119
+ transition: background-color 150ms ease, opacity 150ms ease;
120
+ opacity: 0;
121
+ }
122
+
123
+ /* Show indicator on hover */
124
+ .mcp-resize-handle:hover .mcp-resize-indicator,
125
+ .mcp-resize-handle-active .mcp-resize-indicator {
126
+ opacity: 1;
127
+ background-color: #3b82f6;
128
+ }
129
+
130
+ /* Show indicators when parent item is hovered */
131
+ .mcp-draggable-grid-item.mcp-resizable:hover .mcp-resize-indicator {
132
+ opacity: 0.6;
133
+ }
134
+
135
+ /* Active resize state */
136
+ .mcp-resize-handle-active .mcp-resize-indicator {
137
+ opacity: 1 !important;
138
+ background-color: #3b82f6 !important;
139
+ }
140
+
141
+ /* Disabled state */
142
+ .mcp-resize-handle-disabled {
143
+ pointer-events: none;
144
+ cursor: default;
145
+ }
146
+
147
+ .mcp-resize-handle-disabled .mcp-resize-indicator {
148
+ display: none;
149
+ }
150
+
151
+ /* =============================================================================
152
+ DROP INDICATOR
153
+ ============================================================================= */
154
+
155
+ .mcp-drop-indicator {
156
+ position: absolute;
157
+ top: -2px;
158
+ left: 0;
159
+ right: 0;
160
+ height: 4px;
161
+ background-color: #3b82f6;
162
+ border-radius: 2px;
163
+ z-index: 20;
164
+ animation: drop-indicator-pulse 1s ease-in-out infinite;
165
+ }
166
+
167
+ @keyframes drop-indicator-pulse {
168
+ 0%, 100% {
169
+ opacity: 1;
170
+ }
171
+ 50% {
172
+ opacity: 0.6;
173
+ }
174
+ }
175
+
176
+ /* =============================================================================
177
+ GRID OVERLAY
178
+ ============================================================================= */
179
+
180
+ .mcp-grid-overlay {
181
+ position: absolute;
182
+ inset: 0;
183
+ pointer-events: none;
184
+ z-index: 0;
185
+ }
186
+
187
+ .mcp-grid-overlay-column {
188
+ background-color: rgba(59, 130, 246, 0.05);
189
+ border: 1px dashed rgba(59, 130, 246, 0.2);
190
+ border-radius: 4px;
191
+ }
192
+
193
+ /* =============================================================================
194
+ DRAG GHOST (browser's drag image)
195
+ ============================================================================= */
196
+
197
+ /* Style the element while it's being dragged (browser creates a snapshot) */
198
+ .mcp-draggable-grid-item[draggable="true"] {
199
+ cursor: grab;
200
+ }
201
+
202
+ .mcp-draggable-grid-item[draggable="true"]:active {
203
+ cursor: grabbing;
204
+ }
205
+
206
+ /* =============================================================================
207
+ EDITABLE UI RENDERER
208
+ ============================================================================= */
209
+
210
+ .editable-ui-renderer {
211
+ position: relative;
212
+ }
213
+
214
+ .editable-ui-renderer[data-editing="true"] {
215
+ min-height: 200px;
216
+ }
217
+
218
+ /* =============================================================================
219
+ TRANSITIONS
220
+ ============================================================================= */
221
+
222
+ /* Smooth transitions for position changes */
223
+ .mcp-draggable-grid-item:not(.mcp-dragging):not(.mcp-resizing) {
224
+ transition:
225
+ grid-column 200ms ease-out,
226
+ grid-row 200ms ease-out,
227
+ transform 200ms ease-out,
228
+ opacity 200ms ease-out,
229
+ box-shadow 200ms ease-out;
230
+ }
231
+
232
+ /* =============================================================================
233
+ ACCESSIBILITY
234
+ ============================================================================= */
235
+
236
+ /* Focus styles for keyboard navigation */
237
+ .mcp-resize-handle:focus {
238
+ outline: 2px solid #3b82f6;
239
+ outline-offset: 2px;
240
+ }
241
+
242
+ .mcp-resize-handle:focus .mcp-resize-indicator {
243
+ opacity: 1;
244
+ background-color: #3b82f6;
245
+ }
246
+
247
+ /* Reduced motion */
248
+ @media (prefers-reduced-motion: reduce) {
249
+ .mcp-draggable-grid-item,
250
+ .mcp-drag-handle,
251
+ .mcp-resize-indicator,
252
+ .mcp-drop-indicator {
253
+ transition: none !important;
254
+ animation: none !important;
255
+ }
256
+ }
257
+
258
+ /* =============================================================================
259
+ DARK MODE
260
+ ============================================================================= */
261
+
262
+ @media (prefers-color-scheme: dark) {
263
+ .mcp-drag-handle {
264
+ background-color: rgba(255, 255, 255, 0.2);
265
+ }
266
+
267
+ .mcp-drag-handle:hover {
268
+ background-color: rgba(255, 255, 255, 0.4);
269
+ }
270
+
271
+ .mcp-resize-indicator {
272
+ background-color: #6b7280;
273
+ }
274
+
275
+ .mcp-grid-overlay-column {
276
+ background-color: rgba(59, 130, 246, 0.1);
277
+ border-color: rgba(59, 130, 246, 0.3);
278
+ }
279
+ }
280
+
281
+ /* Explicit dark mode class support */
282
+ .dark .mcp-drag-handle {
283
+ background-color: rgba(255, 255, 255, 0.2);
284
+ }
285
+
286
+ .dark .mcp-drag-handle:hover {
287
+ background-color: rgba(255, 255, 255, 0.4);
288
+ }
289
+
290
+ .dark .mcp-resize-indicator {
291
+ background-color: #6b7280;
292
+ }
293
+
294
+ .dark .mcp-grid-overlay-column {
295
+ background-color: rgba(59, 130, 246, 0.1);
296
+ border-color: rgba(59, 130, 246, 0.3);
297
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * MCP UI Styles Index
3
+ * Import this file to include all component styles
4
+ */
5
+
6
+ @import './drag-drop.css';
7
+ @import './autocomplete.css';