@salesforce/metadata-visualizer-web 1.0.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 (66) hide show
  1. package/LICENSE.txt +27 -0
  2. package/README.md +269 -0
  3. package/dist/WebVisualizationEngine.d.ts +165 -0
  4. package/dist/WebVisualizationEngine.d.ts.map +1 -0
  5. package/dist/WebVisualizationEngine.js +284 -0
  6. package/dist/WebVisualizationEngine.js.map +1 -0
  7. package/dist/createWebVisualizationEngine.d.ts +27 -0
  8. package/dist/createWebVisualizationEngine.d.ts.map +1 -0
  9. package/dist/createWebVisualizationEngine.js +91 -0
  10. package/dist/createWebVisualizationEngine.js.map +1 -0
  11. package/dist/design-system/platform.css +623 -0
  12. package/dist/errors/index.d.ts +25 -0
  13. package/dist/errors/index.d.ts.map +1 -0
  14. package/dist/errors/index.js +31 -0
  15. package/dist/errors/index.js.map +1 -0
  16. package/dist/index.d.ts +22 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +18 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/internal/CompositeFileSystem.d.ts +28 -0
  21. package/dist/internal/CompositeFileSystem.d.ts.map +1 -0
  22. package/dist/internal/CompositeFileSystem.js +82 -0
  23. package/dist/internal/CompositeFileSystem.js.map +1 -0
  24. package/dist/internal/assetInliner.d.ts +30 -0
  25. package/dist/internal/assetInliner.d.ts.map +1 -0
  26. package/dist/internal/assetInliner.js +126 -0
  27. package/dist/internal/assetInliner.js.map +1 -0
  28. package/dist/internal/constants.d.ts +20 -0
  29. package/dist/internal/constants.d.ts.map +1 -0
  30. package/dist/internal/constants.js +34 -0
  31. package/dist/internal/constants.js.map +1 -0
  32. package/dist/internal/htmlPipeline.d.ts +50 -0
  33. package/dist/internal/htmlPipeline.d.ts.map +1 -0
  34. package/dist/internal/htmlPipeline.js +86 -0
  35. package/dist/internal/htmlPipeline.js.map +1 -0
  36. package/dist/pluginAssets/BundledPluginAssetReader.d.ts +34 -0
  37. package/dist/pluginAssets/BundledPluginAssetReader.d.ts.map +1 -0
  38. package/dist/pluginAssets/BundledPluginAssetReader.js +77 -0
  39. package/dist/pluginAssets/BundledPluginAssetReader.js.map +1 -0
  40. package/dist/plugins/flexipage/ui/assets/index-BAFqMU7k.js +48 -0
  41. package/dist/plugins/flexipage/ui/assets/index-U3SB2gLS.css +1 -0
  42. package/dist/plugins/flexipage/ui/index.html +16 -0
  43. package/dist/plugins/schema/ui/assets/index-DCLgZby3.css +1 -0
  44. package/dist/plugins/schema/ui/assets/index-Ho7jg9o_.js +70 -0
  45. package/dist/plugins/schema/ui/index.html +14 -0
  46. package/dist/types/HttpAsset.d.ts +18 -0
  47. package/dist/types/HttpAsset.d.ts.map +1 -0
  48. package/dist/types/HttpAsset.js +8 -0
  49. package/dist/types/HttpAsset.js.map +1 -0
  50. package/dist/types/PluginDataUpdateMessage.d.ts +24 -0
  51. package/dist/types/PluginDataUpdateMessage.d.ts.map +1 -0
  52. package/dist/types/PluginDataUpdateMessage.js +8 -0
  53. package/dist/types/PluginDataUpdateMessage.js.map +1 -0
  54. package/dist/types/PluginInfo.d.ts +20 -0
  55. package/dist/types/PluginInfo.d.ts.map +1 -0
  56. package/dist/types/PluginInfo.js +8 -0
  57. package/dist/types/PluginInfo.js.map +1 -0
  58. package/dist/types/VisualizeOutcome.d.ts +19 -0
  59. package/dist/types/VisualizeOutcome.d.ts.map +1 -0
  60. package/dist/types/VisualizeOutcome.js +8 -0
  61. package/dist/types/VisualizeOutcome.js.map +1 -0
  62. package/dist/types/WebAdapterOptions.d.ts +22 -0
  63. package/dist/types/WebAdapterOptions.d.ts.map +1 -0
  64. package/dist/types/WebAdapterOptions.js +8 -0
  65. package/dist/types/WebAdapterOptions.js.map +1 -0
  66. package/package.json +77 -0
@@ -0,0 +1,623 @@
1
+ /* ===== RESET & BASE STYLES ===== */
2
+
3
+ *,
4
+ *::before,
5
+ *::after {
6
+ box-sizing: border-box;
7
+ }
8
+
9
+ html,
10
+ body {
11
+ margin: 0;
12
+ padding: 0;
13
+ width: 100%;
14
+ height: 100%;
15
+ overflow-x: hidden;
16
+ }
17
+
18
+ body {
19
+ font-family: var(--vscode-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif);
20
+ font-size: var(--vscode-editor-font-size, 13px);
21
+ font-weight: var(--vscode-editor-font-weight, 400);
22
+ line-height: 1.4;
23
+ color: var(--vscode-foreground, #cccccc);
24
+ background: var(--vscode-editor-background, #1e1e1e);
25
+ -webkit-font-smoothing: antialiased;
26
+ -moz-osx-font-smoothing: grayscale;
27
+ }
28
+
29
+ h1, h2, h3, h4, h5, h6,
30
+ p, blockquote, pre,
31
+ dl, dd, ol, ul,
32
+ figure, hr {
33
+ margin: 0;
34
+ padding: 0;
35
+ }
36
+
37
+ ol, ul {
38
+ list-style: none;
39
+ }
40
+
41
+ img {
42
+ max-width: 100%;
43
+ height: auto;
44
+ display: block;
45
+ }
46
+
47
+ button, input, select, textarea {
48
+ font-family: inherit;
49
+ font-size: inherit;
50
+ line-height: inherit;
51
+ }
52
+
53
+ button {
54
+ background: transparent;
55
+ border: none;
56
+ cursor: pointer;
57
+ padding: 0;
58
+ }
59
+
60
+ a {
61
+ color: var(--vscode-textLink-foreground, #3794ff);
62
+ text-decoration: none;
63
+ }
64
+
65
+ a:hover {
66
+ color: var(--vscode-textLink-activeForeground, #3794ff);
67
+ text-decoration: underline;
68
+ }
69
+
70
+ :focus-visible {
71
+ outline: 2px solid var(--vscode-focusBorder, #007fd4);
72
+ outline-offset: 2px;
73
+ }
74
+
75
+ ::-webkit-scrollbar {
76
+ width: 10px;
77
+ height: 10px;
78
+ }
79
+
80
+ ::-webkit-scrollbar-track {
81
+ background: var(--vscode-scrollbarSlider-background, rgba(121, 121, 121, 0.4));
82
+ }
83
+
84
+ ::-webkit-scrollbar-thumb {
85
+ background: var(--vscode-scrollbarSlider-background, rgba(121, 121, 121, 0.4));
86
+ border-radius: 10px;
87
+ }
88
+
89
+ ::-webkit-scrollbar-thumb:hover {
90
+ background: var(--vscode-scrollbarSlider-hoverBackground, rgba(100, 100, 100, 0.7));
91
+ }
92
+
93
+ /* ===== DESIGN TOKENS ===== */
94
+
95
+ :root {
96
+ /* ===== 1. CANVAS & SHELL (Global Environment) ===== */
97
+ /* The immutable stage - ensures every visualization looks native to VS Code */
98
+
99
+ /* Canvas */
100
+ --mv-canvas-bg: var(--vscode-editor-background, #1e1e1e);
101
+ --mv-canvas-grid: var(--vscode-editorRuler-foreground, #e5e5e5);
102
+ --mv-minimap-bg: var(--vscode-minimap-background, #f0f0f0);
103
+
104
+ /* Chrome / Shell */
105
+ --mv-panel-bg: var(--vscode-editorWidget-background, #252526);
106
+ --mv-panel-border: var(--vscode-editorGroup-border, #454545);
107
+ --mv-panel-shadow: 0 4px 16px var(--vscode-widget-shadow, rgba(0, 0, 0, 0.36));
108
+
109
+ /* ===== 2. CORE ENTITIES (Node Contract) ===== */
110
+ /* Base tokens for all entity cards - ensures consistent elevation and behavior */
111
+
112
+ /* Node Base */
113
+ --mv-node-bg: var(--vscode-editorWidget-background, #252526);
114
+ --mv-node-border: var(--vscode-widget-border, #454545);
115
+ --mv-node-border-focus: var(--vscode-focusBorder, #007fd4);
116
+
117
+ --mv-node-bg-hover: var(--vscode-list-hoverBackground, #2a2d2e);
118
+ --mv-node-bg-selected: var(--vscode-list-activeSelectionBackground, #094771);
119
+ --mv-node-fg: var(--vscode-foreground, #cccccc);
120
+ --mv-node-fg-secondary: var(--vscode-descriptionForeground, #cccccc99);
121
+ --mv-node-fg-selected: var(--vscode-list-activeSelectionForeground, #ffffff);
122
+
123
+ --mv-edge-neutral: var(--vscode-charts-lines, #cccccc);
124
+ --mv-edge-active: var(--vscode-textLink-activeForeground, #3794ff);
125
+
126
+ /* ===== 3. SEMANTIC VARIANTS & SYNTAX ===== */
127
+
128
+ /* 3A. Functional Accents - The "Four Pillars" */
129
+ /* Teams must map their metadata concepts to these four categories */
130
+ --mv-accent-data: var(--vscode-charts-purple, #b180d7);
131
+ --mv-accent-logic: var(--vscode-charts-blue, #3794ff);
132
+ --mv-accent-ui: var(--vscode-charts-yellow, #ffb454);
133
+ --mv-accent-system: var(--vscode-charts-orange, #d18616);
134
+
135
+ /* Syntax Primitives */
136
+ --mv-syntax-string: var(--vscode-debugTokenExpression-string, #ce9178);
137
+ --mv-syntax-number: var(--vscode-debugTokenExpression-number, #b5cea8);
138
+ --mv-syntax-boolean: var(--vscode-debugTokenExpression-boolean, #569cd6);
139
+ --mv-syntax-property: var(--vscode-symbolIcon-propertyForeground, #cccccc);
140
+ --mv-syntax-class: var(--vscode-symbolIcon-classForeground, #ee9d28);
141
+
142
+
143
+ /* 3B. State Indicators - Universal Status */
144
+ /* Teams must use these for state indication - custom colors forbidden */
145
+ --mv-status-positive: var(--vscode-charts-green, #23d18b);
146
+ --mv-status-negative: var(--vscode-charts-red, #f14c4c);
147
+ --mv-status-warning: var(--vscode-charts-orange, #d18616);
148
+ --mv-status-info: var(--vscode-charts-blue, #3794ff);
149
+ --mv-status-neutral: var(--vscode-disabledForeground, #656565);
150
+
151
+ /* ===== 4. INTERNAL COMPONENT TOKENS ===== */
152
+ /* Standardized internal elements for within nodes */
153
+ --mv-marker-primary: var(--vscode-foreground, #cccccc);
154
+ --mv-marker-muted: var(--vscode-disabledForeground, #656565);
155
+ --mv-separator: var(--vscode-editorRuler-foreground, #e5e5ee);
156
+ --mv-region-zone: var(--vscode-editor-selectionBackground, rgba(38, 79, 120, 0.4));
157
+
158
+ /* ===== 5. ACCESSIBILITY (High Contrast) ===== */
159
+ /* Platform-enforced overrides for High Contrast mode */
160
+ --mv-hc-border: var(--vscode-contrastBorder, transparent);
161
+ --mv-hc-selection: var(--vscode-focusBorder, #007fd4);
162
+
163
+ /* ===== GENERAL PURPOSE TOKENS ===== */
164
+
165
+ /* Background Colors */
166
+ --mv-bg-primary: var(--vscode-editor-background, #1e1e1e);
167
+ --mv-bg-secondary: var(--vscode-sideBar-background, #252526);
168
+ --mv-bg-elevated: var(--vscode-dropdown-background, #3c3c3c);
169
+ --mv-bg-surface: var(--vscode-panel-background, #1e1e1e);
170
+ --mv-bg-surface-hover: var(--vscode-list-hoverBackground, #2a2d2e);
171
+ --mv-bg-input: var(--vscode-input-background, #3c3c3c);
172
+ --mv-bg-badge: var(--vscode-badge-background, #4d4d4d);
173
+ --mv-fg-badge: var(--vscode-badge-foreground, #ffffff);
174
+
175
+ /* Text Colors */
176
+ --mv-text-primary: var(--vscode-foreground, #cccccc);
177
+ --mv-text-secondary: var(--vscode-descriptionForeground, #999999);
178
+ --mv-text-muted: var(--vscode-disabledForeground, #656565);
179
+ --mv-text-inverse: var(--vscode-list-activeSelectionForeground, #ffffff);
180
+
181
+ /* Interactive Colors */
182
+ --mv-interactive-primary: var(--vscode-textLink-foreground, #3794ff);
183
+ --mv-interactive-primary-hover: var(--vscode-textLink-activeForeground, #3794ff);
184
+ --mv-interactive-secondary: var(--vscode-textPreformat-foreground, #d7ba7d);
185
+ --mv-interactive-focus: var(--vscode-button-background, #0e639c);
186
+ --mv-interactive-focus-border: var(--vscode-focusBorder, #007fd4);
187
+ --mv-button-primary-bg: var(--vscode-button-background, #0e639c);
188
+ --mv-button-primary-fg: var(--vscode-button-foreground, #ffffff);
189
+ --mv-button-secondary-bg: var(--vscode-button-secondaryBackground, #5f6a79);
190
+ --mv-button-secondary-fg: var(--vscode-button-secondaryForeground, #ffffff);
191
+
192
+ /* Border Colors */
193
+ --mv-border-default: var(--vscode-panel-border, #454545);
194
+ --mv-border-primary: var(--vscode-editorGroup-border, #454545);
195
+ --mv-border-hover: var(--vscode-list-hoverBackground, #2a2d2e);
196
+ --mv-border-input: var(--vscode-input-border, #454545);
197
+ --mv-border-focus: var(--vscode-focusBorder, #007fd4);
198
+ --mv-border-dropdown: var(--vscode-dropdown-border, #454545);
199
+
200
+ /* Status Colors */
201
+ --mv-status-error: var(--vscode-errorForeground, #f14c4c);
202
+ --mv-status-error-bg: var(--vscode-inputValidation-errorBackground, #5a1d1d);
203
+ --mv-status-error-border: var(--vscode-inputValidation-errorBorder, #be1100);
204
+ --mv-status-success: var(--vscode-terminal-ansiGreen, #23d18b);
205
+
206
+ /* Accent Colors */
207
+ --mv-accent-cyan: var(--vscode-terminal-ansiCyan, #11b7ee);
208
+ --mv-accent-cyan-light: var(--vscode-debugTokenExpression-name, #9cdcfe);
209
+ --mv-accent-yellow: var(--vscode-terminal-ansiYellow, #ffb454);
210
+
211
+ /* Shadows & Effects */
212
+ --mv-shadow-light: rgba(0, 0, 0, 0.1);
213
+ --mv-shadow-medium: rgba(0, 0, 0, 0.15);
214
+ --mv-shadow-heavy: rgba(0, 0, 0, 0.3);
215
+ --mv-shadow-text: rgba(0, 0, 0, 0.4);
216
+ --mv-bg-overlay: var(--vscode-widget-background, rgba(37, 37, 38, 0.8));
217
+
218
+ /* Typography */
219
+ --mv-font-family: var(--vscode-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif);
220
+ --mv-font-family-mono: var(--vscode-editor-font-family, 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace);
221
+ --mv-font-size-xs: 0.75rem;
222
+ --mv-font-size-sm: 0.875rem;
223
+ --mv-font-size-base: 1rem;
224
+ --mv-font-size-lg: 1.125rem;
225
+ --mv-font-size-xl: 1.25rem;
226
+ --mv-font-size-2xl: 1.5rem;
227
+ --mv-font-size-3xl: 1.875rem;
228
+ --mv-font-weight-normal: 400;
229
+ --mv-font-weight-medium: 500;
230
+ --mv-font-weight-semibold: 600;
231
+ --mv-font-weight-bold: 700;
232
+ --mv-line-height-tight: 1.25;
233
+ --mv-line-height-normal: 1.5;
234
+ --mv-line-height-relaxed: 1.75;
235
+
236
+ /* Spacing */
237
+ --mv-spacing-xs: 0.25rem;
238
+ --mv-spacing-sm: 0.5rem;
239
+ --mv-spacing-md: 1rem;
240
+ --mv-spacing-lg: 1.5rem;
241
+ --mv-spacing-xl: 2rem;
242
+ --mv-spacing-2xl: 3rem;
243
+ --mv-spacing-3xl: 4rem;
244
+
245
+ /* Shadows */
246
+ --mv-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
247
+ --mv-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
248
+ --mv-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
249
+ --mv-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
250
+
251
+ /* Border Radius */
252
+ --mv-radius-none: 0;
253
+ --mv-radius-sm: 0.125rem;
254
+ --mv-radius-md: 0.25rem;
255
+ --mv-radius-lg: 0.5rem;
256
+ --mv-radius-xl: 0.75rem;
257
+ --mv-radius-full: 9999px;
258
+
259
+ /* Transitions */
260
+ --mv-transition-fast: 150ms ease;
261
+ --mv-transition-base: 250ms ease;
262
+ --mv-transition-slow: 350ms ease;
263
+
264
+ /* Layout */
265
+ --mv-container-max-width: 1200px;
266
+ --mv-content-max-width: 65ch;
267
+ }
268
+
269
+ /* ===== UTILITY CLASSES ===== */
270
+
271
+ /* Layout */
272
+ .mv-container {
273
+ width: 100%;
274
+ max-width: var(--mv-container-max-width);
275
+ margin: 0 auto;
276
+ padding: var(--mv-spacing-lg);
277
+ }
278
+
279
+ .mv-container-full {
280
+ width: 100%;
281
+ padding: var(--mv-spacing-lg);
282
+ }
283
+
284
+ .mv-flex {
285
+ display: flex;
286
+ }
287
+
288
+ .mv-flex-col {
289
+ display: flex;
290
+ flex-direction: column;
291
+ }
292
+
293
+ .mv-items-center {
294
+ align-items: center;
295
+ }
296
+
297
+ .mv-justify-between {
298
+ justify-content: space-between;
299
+ }
300
+
301
+ .mv-justify-center {
302
+ justify-content: center;
303
+ }
304
+
305
+ .mv-grid {
306
+ display: grid;
307
+ }
308
+
309
+ .mv-grid-cols-2 {
310
+ grid-template-columns: repeat(2, 1fr);
311
+ }
312
+
313
+ .mv-grid-cols-3 {
314
+ grid-template-columns: repeat(3, 1fr);
315
+ }
316
+
317
+ .mv-grid-cols-4 {
318
+ grid-template-columns: repeat(4, 1fr);
319
+ }
320
+
321
+ /* Gap */
322
+ .mv-gap-xs { gap: var(--mv-spacing-xs); }
323
+ .mv-gap-sm { gap: var(--mv-spacing-sm); }
324
+ .mv-gap-md { gap: var(--mv-spacing-md); }
325
+ .mv-gap-lg { gap: var(--mv-spacing-lg); }
326
+
327
+ /* Padding */
328
+ .mv-p-xs { padding: var(--mv-spacing-xs); }
329
+ .mv-p-sm { padding: var(--mv-spacing-sm); }
330
+ .mv-p-md { padding: var(--mv-spacing-md); }
331
+ .mv-p-lg { padding: var(--mv-spacing-lg); }
332
+ .mv-px-sm { padding-left: var(--mv-spacing-sm); padding-right: var(--mv-spacing-sm); }
333
+ .mv-px-md { padding-left: var(--mv-spacing-md); padding-right: var(--mv-spacing-md); }
334
+ .mv-py-sm { padding-top: var(--mv-spacing-sm); padding-bottom: var(--mv-spacing-sm); }
335
+ .mv-py-md { padding-top: var(--mv-spacing-md); padding-bottom: var(--mv-spacing-md); }
336
+
337
+ /* Margins */
338
+ .mv-mb-sm { margin-bottom: var(--mv-spacing-sm); }
339
+ .mv-mb-md { margin-bottom: var(--mv-spacing-md); }
340
+ .mv-mb-lg { margin-bottom: var(--mv-spacing-lg); }
341
+ .mv-mt-sm { margin-top: var(--mv-spacing-sm); }
342
+ .mv-mt-md { margin-top: var(--mv-spacing-md); }
343
+
344
+ /* Typography */
345
+ .mv-text-xs {
346
+ font-size: var(--mv-font-size-xs);
347
+ line-height: var(--mv-line-height-normal);
348
+ }
349
+
350
+ .mv-text-sm {
351
+ font-size: var(--mv-font-size-sm);
352
+ line-height: var(--mv-line-height-normal);
353
+ }
354
+
355
+ .mv-text-base {
356
+ font-size: var(--mv-font-size-base);
357
+ line-height: var(--mv-line-height-normal);
358
+ }
359
+
360
+ .mv-text-lg {
361
+ font-size: var(--mv-font-size-lg);
362
+ line-height: var(--mv-line-height-normal);
363
+ }
364
+
365
+ .mv-text-xl {
366
+ font-size: var(--mv-font-size-xl);
367
+ line-height: var(--mv-line-height-tight);
368
+ }
369
+
370
+ .mv-text-2xl {
371
+ font-size: var(--mv-font-size-2xl);
372
+ line-height: var(--mv-line-height-tight);
373
+ }
374
+
375
+ .mv-font-medium { font-weight: var(--mv-font-weight-medium); }
376
+ .mv-font-semibold { font-weight: var(--mv-font-weight-semibold); }
377
+ .mv-font-bold { font-weight: var(--mv-font-weight-bold); }
378
+
379
+ .mv-text-primary { color: var(--mv-text-primary); }
380
+ .mv-text-secondary { color: var(--mv-text-secondary); }
381
+ .mv-text-muted { color: var(--mv-text-muted); }
382
+ .mv-text-error { color: var(--mv-status-error); }
383
+ .mv-text-warning { color: var(--mv-status-warning); }
384
+ .mv-text-success { color: var(--mv-status-success); }
385
+ .mv-text-info { color: var(--mv-status-info); }
386
+
387
+ .mv-text-center { text-align: center; }
388
+
389
+ /* ===== COMPONENTS ===== */
390
+
391
+ /* Cards */
392
+ .mv-card {
393
+ background: var(--mv-bg-surface);
394
+ border: 1px solid var(--mv-border-default);
395
+ border-radius: var(--mv-radius-lg);
396
+ padding: var(--mv-spacing-lg);
397
+ box-shadow: var(--mv-shadow-sm);
398
+ transition: box-shadow var(--mv-transition-base);
399
+ }
400
+
401
+ .mv-card:hover {
402
+ box-shadow: var(--mv-shadow-md);
403
+ }
404
+
405
+ .mv-card-elevated {
406
+ background: var(--mv-bg-elevated);
407
+ box-shadow: var(--mv-shadow-lg);
408
+ }
409
+
410
+ /* Headers */
411
+ .mv-header {
412
+ display: flex;
413
+ align-items: center;
414
+ justify-content: space-between;
415
+ padding: var(--mv-spacing-lg);
416
+ border-bottom: 1px solid var(--mv-border-default);
417
+ margin-bottom: var(--mv-spacing-lg);
418
+ }
419
+
420
+ .mv-header-title {
421
+ font-size: var(--mv-font-size-xl);
422
+ font-weight: var(--mv-font-weight-semibold);
423
+ color: var(--mv-text-primary);
424
+ margin: 0;
425
+ display: flex;
426
+ align-items: center;
427
+ gap: var(--mv-spacing-sm);
428
+ }
429
+
430
+ .mv-header-subtitle {
431
+ font-size: var(--mv-font-size-sm);
432
+ color: var(--mv-text-secondary);
433
+ margin-top: var(--mv-spacing-xs);
434
+ }
435
+
436
+ /* Buttons */
437
+ .mv-button {
438
+ display: inline-flex;
439
+ align-items: center;
440
+ justify-content: center;
441
+ gap: var(--mv-spacing-xs);
442
+ padding: var(--mv-spacing-sm) var(--mv-spacing-md);
443
+ border: none;
444
+ border-radius: var(--mv-radius-md);
445
+ font-family: var(--mv-font-family);
446
+ font-size: var(--mv-font-size-sm);
447
+ font-weight: var(--mv-font-weight-medium);
448
+ cursor: pointer;
449
+ transition: all var(--mv-transition-fast);
450
+ text-decoration: none;
451
+ }
452
+
453
+ .mv-button:focus-visible {
454
+ outline: 2px solid var(--mv-border-focus);
455
+ outline-offset: 2px;
456
+ }
457
+
458
+ .mv-button-primary {
459
+ background: var(--mv-button-primary-bg);
460
+ color: var(--mv-button-primary-fg);
461
+ }
462
+
463
+ .mv-button-primary:hover {
464
+ filter: brightness(1.1);
465
+ }
466
+
467
+ .mv-button-secondary {
468
+ background: var(--mv-button-secondary-bg);
469
+ color: var(--mv-button-secondary-fg);
470
+ }
471
+
472
+ .mv-button-outline {
473
+ background: transparent;
474
+ color: var(--mv-interactive-primary);
475
+ border: 1px solid var(--mv-border-default);
476
+ }
477
+
478
+ .mv-button-outline:hover {
479
+ background: var(--mv-bg-elevated);
480
+ }
481
+
482
+ .mv-button-sm {
483
+ padding: var(--mv-spacing-xs) var(--mv-spacing-sm);
484
+ font-size: var(--mv-font-size-xs);
485
+ }
486
+
487
+ /* Badges */
488
+ .mv-badge {
489
+ display: inline-flex;
490
+ align-items: center;
491
+ padding: var(--mv-spacing-xs) var(--mv-spacing-sm);
492
+ background: var(--mv-bg-elevated);
493
+ color: var(--mv-text-primary);
494
+ font-size: var(--mv-font-size-xs);
495
+ font-weight: var(--mv-font-weight-medium);
496
+ border-radius: var(--mv-radius-full);
497
+ border: 1px solid var(--mv-border-default);
498
+ }
499
+
500
+ .mv-badge-primary {
501
+ background: var(--mv-interactive-primary);
502
+ color: var(--mv-text-inverse);
503
+ border-color: var(--mv-interactive-primary);
504
+ }
505
+
506
+ .mv-badge-error {
507
+ background: var(--mv-status-error);
508
+ color: var(--mv-text-inverse);
509
+ border-color: var(--mv-status-error);
510
+ }
511
+
512
+ .mv-badge-warning {
513
+ background: var(--mv-status-warning);
514
+ color: var(--mv-text-inverse);
515
+ border-color: var(--mv-status-warning);
516
+ }
517
+
518
+ .mv-badge-success {
519
+ background: var(--mv-status-success);
520
+ color: var(--mv-text-inverse);
521
+ border-color: var(--mv-status-success);
522
+ }
523
+
524
+ .mv-badge-info {
525
+ background: var(--mv-status-info);
526
+ color: var(--mv-text-inverse);
527
+ border-color: var(--mv-status-info);
528
+ }
529
+
530
+ /* Status dots */
531
+ .mv-status-dot {
532
+ display: inline-block;
533
+ width: 8px;
534
+ height: 8px;
535
+ border-radius: var(--mv-radius-full);
536
+ background: var(--mv-text-muted);
537
+ }
538
+
539
+ .mv-status-dot-error { background: var(--mv-status-error); }
540
+ .mv-status-dot-warning { background: var(--mv-status-warning); }
541
+ .mv-status-dot-success { background: var(--mv-status-success); }
542
+ .mv-status-dot-info { background: var(--mv-status-info); }
543
+
544
+ /* Form elements */
545
+ .mv-input {
546
+ width: 100%;
547
+ padding: var(--mv-spacing-sm) var(--mv-spacing-md);
548
+ background: var(--mv-bg-input);
549
+ border: 1px solid var(--mv-border-input);
550
+ border-radius: var(--mv-radius-md);
551
+ color: var(--mv-text-primary);
552
+ font-family: var(--mv-font-family);
553
+ font-size: var(--mv-font-size-sm);
554
+ transition: border-color var(--mv-transition-fast);
555
+ }
556
+
557
+ .mv-input:focus {
558
+ outline: none;
559
+ border-color: var(--mv-border-focus);
560
+ }
561
+
562
+ .mv-input::placeholder {
563
+ color: var(--mv-text-muted);
564
+ }
565
+
566
+ /* Lists */
567
+ .mv-list {
568
+ display: flex;
569
+ flex-direction: column;
570
+ gap: var(--mv-spacing-xs);
571
+ }
572
+
573
+ .mv-list-item {
574
+ display: flex;
575
+ align-items: center;
576
+ gap: var(--mv-spacing-sm);
577
+ padding: var(--mv-spacing-sm);
578
+ border-radius: var(--mv-radius-md);
579
+ transition: background-color var(--mv-transition-fast);
580
+ }
581
+
582
+ .mv-list-item:hover {
583
+ background: var(--mv-bg-elevated);
584
+ }
585
+
586
+ /* Utilities */
587
+ .mv-hidden {
588
+ display: none !important;
589
+ }
590
+
591
+ .mv-truncate {
592
+ overflow: hidden;
593
+ text-overflow: ellipsis;
594
+ white-space: nowrap;
595
+ }
596
+
597
+ /* Loading spinner */
598
+ .mv-spinner {
599
+ display: inline-block;
600
+ width: 20px;
601
+ height: 20px;
602
+ border: 2px solid var(--mv-text-muted);
603
+ border-radius: 50%;
604
+ border-top-color: var(--mv-interactive-primary);
605
+ animation: mv-spin 1s ease-in-out infinite;
606
+ }
607
+
608
+ @keyframes mv-spin {
609
+ to { transform: rotate(360deg); }
610
+ }
611
+
612
+ /* Responsive */
613
+ @media (max-width: 768px) {
614
+ .mv-container {
615
+ padding: var(--mv-spacing-md);
616
+ }
617
+
618
+ .mv-grid-cols-2,
619
+ .mv-grid-cols-3,
620
+ .mv-grid-cols-4 {
621
+ grid-template-columns: 1fr;
622
+ }
623
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Copyright (c) 2025, Salesforce, Inc.
3
+ * All rights reserved.
4
+ * Licensed under the BSD 3-Clause license.
5
+ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
6
+ **/
7
+ /**
8
+ * Internal error types thrown by the asset reader. Callers in this package
9
+ * catch them and convert to PluginError before crossing the public boundary,
10
+ * so these are not exported from the package entrypoint.
11
+ */
12
+ /**
13
+ * Thrown when the requested pluginId is not registered in the bundled set.
14
+ */
15
+ export declare class PluginNotFoundError extends Error {
16
+ constructor(pluginId: string);
17
+ }
18
+ /**
19
+ * Thrown when a plugin asset (JS, CSS, font, etc.) requested by the
20
+ * plugin's HTML doesn't exist in the bundled `dist/`.
21
+ */
22
+ export declare class AssetNotFoundError extends Error {
23
+ constructor(pluginId: string, relativePath: string);
24
+ }
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;;;IAKI;AAEJ;;;;GAIG;AAEH;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,QAAQ,EAAE,MAAM;CAI7B;AAED;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CAInD"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Copyright (c) 2025, Salesforce, Inc.
3
+ * All rights reserved.
4
+ * Licensed under the BSD 3-Clause license.
5
+ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
6
+ **/
7
+ /**
8
+ * Internal error types thrown by the asset reader. Callers in this package
9
+ * catch them and convert to PluginError before crossing the public boundary,
10
+ * so these are not exported from the package entrypoint.
11
+ */
12
+ /**
13
+ * Thrown when the requested pluginId is not registered in the bundled set.
14
+ */
15
+ export class PluginNotFoundError extends Error {
16
+ constructor(pluginId) {
17
+ super(`Plugin not found: ${pluginId}`);
18
+ this.name = 'PluginNotFoundError';
19
+ }
20
+ }
21
+ /**
22
+ * Thrown when a plugin asset (JS, CSS, font, etc.) requested by the
23
+ * plugin's HTML doesn't exist in the bundled `dist/`.
24
+ */
25
+ export class AssetNotFoundError extends Error {
26
+ constructor(pluginId, relativePath) {
27
+ super(`Plugin asset not found: ${pluginId}/${relativePath}`);
28
+ this.name = 'AssetNotFoundError';
29
+ }
30
+ }
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;;;IAKI;AAEJ;;;;GAIG;AAEH;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,QAAgB;QAC1B,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,QAAgB,EAAE,YAAoB;QAChD,KAAK,CAAC,2BAA2B,QAAQ,IAAI,YAAY,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Copyright (c) 2025, Salesforce, Inc.
3
+ * All rights reserved.
4
+ * Licensed under the BSD 3-Clause license.
5
+ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
6
+ **/
7
+ /**
8
+ * @salesforce/metadata-visualizer-web — Public API.
9
+ *
10
+ * Web/HTTP SDK for the Salesforce Metadata Visualizer framework. Lets any
11
+ * HTTP-style host (custom web services, browser applications, demo pages)
12
+ * plug a host-supplied IFileSystem into the framework and serve plugin
13
+ * visualizations to a browser without seeing plugin internals.
14
+ */
15
+ export { createWebVisualizationEngine } from './createWebVisualizationEngine.js';
16
+ export { WebVisualizationEngine } from './WebVisualizationEngine.js';
17
+ export type { HttpAsset } from './types/HttpAsset.js';
18
+ export type { PluginInfo } from './types/PluginInfo.js';
19
+ export type { PluginDataUpdateMessage } from './types/PluginDataUpdateMessage.js';
20
+ export type { VisualizeOutcome } from './types/VisualizeOutcome.js';
21
+ export type { WebAdapterOptions } from './types/WebAdapterOptions.js';
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;IAKI;AAEJ;;;;;;;GAOG;AAGH,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGrE,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAClF,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,YAAY,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC"}