@contractspec/lib.example-shared-ui 6.0.17 → 6.0.19
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/.turbo/turbo-build.log +81 -81
- package/CHANGELOG.md +28 -0
- package/dist/EvolutionDashboard.js +1 -803
- package/dist/EvolutionSidebar.js +1 -531
- package/dist/LocalDataIndicator.js +1 -68
- package/dist/MarkdownView.js +1 -213
- package/dist/OverlayContextProvider.js +1 -202
- package/dist/PersonalizationInsights.js +1 -455
- package/dist/SaveToStudioButton.js +1 -79
- package/dist/SpecDrivenTemplateShell.js +1 -203
- package/dist/SpecEditorPanel.js +17 -364
- package/dist/TemplateShell.js +1 -195
- package/dist/browser/EvolutionDashboard.js +1 -803
- package/dist/browser/EvolutionSidebar.js +1 -531
- package/dist/browser/LocalDataIndicator.js +1 -68
- package/dist/browser/MarkdownView.js +1 -213
- package/dist/browser/OverlayContextProvider.js +1 -202
- package/dist/browser/PersonalizationInsights.js +1 -455
- package/dist/browser/SaveToStudioButton.js +1 -79
- package/dist/browser/SpecDrivenTemplateShell.js +1 -203
- package/dist/browser/SpecEditorPanel.js +17 -364
- package/dist/browser/TemplateShell.js +1 -195
- package/dist/browser/bundles/ExampleTemplateBundle.js +1 -85
- package/dist/browser/bundles/index.js +1 -85
- package/dist/browser/hooks/index.js +40 -1151
- package/dist/browser/hooks/useBehaviorTracking.js +1 -157
- package/dist/browser/hooks/useEvolution.js +1 -260
- package/dist/browser/hooks/useRegistryTemplates.js +1 -31
- package/dist/browser/hooks/useSpecContent.js +17 -224
- package/dist/browser/hooks/useWorkflowComposer.js +24 -483
- package/dist/browser/index.js +40 -3122
- package/dist/browser/lib/component-registry.js +1 -48
- package/dist/browser/lib/runtime-context.js +1 -21
- package/dist/browser/markdown/formatPresentationName.js +1 -9
- package/dist/browser/markdown/useMarkdownPresentation.js +1 -65
- package/dist/browser/utils/fetchPresentationData.js +1 -15
- package/dist/browser/utils/generateSpecFromTemplate.js +16 -62
- package/dist/browser/utils/index.js +16 -76
- package/dist/bundles/ExampleTemplateBundle.js +1 -85
- package/dist/bundles/index.js +1 -85
- package/dist/hooks/index.js +40 -1151
- package/dist/hooks/useBehaviorTracking.js +1 -157
- package/dist/hooks/useEvolution.js +1 -260
- package/dist/hooks/useRegistryTemplates.js +1 -31
- package/dist/hooks/useSpecContent.js +17 -224
- package/dist/hooks/useWorkflowComposer.js +24 -483
- package/dist/index.js +40 -3122
- package/dist/lib/component-registry.js +1 -48
- package/dist/lib/runtime-context.js +1 -21
- package/dist/markdown/formatPresentationName.js +1 -9
- package/dist/markdown/useMarkdownPresentation.js +1 -65
- package/dist/node/EvolutionDashboard.js +1 -803
- package/dist/node/EvolutionSidebar.js +1 -531
- package/dist/node/LocalDataIndicator.js +1 -68
- package/dist/node/MarkdownView.js +1 -213
- package/dist/node/OverlayContextProvider.js +1 -202
- package/dist/node/PersonalizationInsights.js +1 -455
- package/dist/node/SaveToStudioButton.js +1 -79
- package/dist/node/SpecDrivenTemplateShell.js +1 -203
- package/dist/node/SpecEditorPanel.js +17 -364
- package/dist/node/TemplateShell.js +1 -195
- package/dist/node/bundles/ExampleTemplateBundle.js +1 -85
- package/dist/node/bundles/index.js +1 -85
- package/dist/node/hooks/index.js +40 -1151
- package/dist/node/hooks/useBehaviorTracking.js +1 -157
- package/dist/node/hooks/useEvolution.js +1 -260
- package/dist/node/hooks/useRegistryTemplates.js +1 -31
- package/dist/node/hooks/useSpecContent.js +17 -224
- package/dist/node/hooks/useWorkflowComposer.js +24 -483
- package/dist/node/index.js +40 -3122
- package/dist/node/lib/component-registry.js +1 -48
- package/dist/node/lib/runtime-context.js +1 -21
- package/dist/node/markdown/formatPresentationName.js +1 -9
- package/dist/node/markdown/useMarkdownPresentation.js +1 -65
- package/dist/node/utils/fetchPresentationData.js +1 -15
- package/dist/node/utils/generateSpecFromTemplate.js +16 -62
- package/dist/node/utils/index.js +16 -76
- package/dist/utils/fetchPresentationData.js +1 -15
- package/dist/utils/generateSpecFromTemplate.js +16 -62
- package/dist/utils/index.js +16 -76
- package/package.json +13 -13
- package/src/lib/component-registry.tsx +2 -1
- package/src/lib/runtime-context.tsx +1 -1
- package/src/lib/singletons.test.ts +19 -22
package/dist/utils/index.js
CHANGED
|
@@ -1,30 +1,6 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const templateId = template?.id ?? "unknown";
|
|
5
|
-
if (!template) {
|
|
6
|
-
return generateDefaultSpec(templateId);
|
|
7
|
-
}
|
|
8
|
-
switch (templateId) {
|
|
9
|
-
case "crm-pipeline":
|
|
10
|
-
return generateCrmPipelineSpec(template.schema.contracts);
|
|
11
|
-
case "saas-boilerplate":
|
|
12
|
-
return generateSaasBoilerplateSpec(template.schema.contracts);
|
|
13
|
-
case "agent-console":
|
|
14
|
-
return generateAgentConsoleSpec(template.schema.contracts);
|
|
15
|
-
case "todos-app":
|
|
16
|
-
return generateTodosSpec(template.schema.contracts);
|
|
17
|
-
case "messaging-app":
|
|
18
|
-
return generateMessagingSpec(template.schema.contracts);
|
|
19
|
-
case "recipe-app-i18n":
|
|
20
|
-
return generateRecipeSpec(template.schema.contracts);
|
|
21
|
-
default:
|
|
22
|
-
return generateDefaultSpec(templateId);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
function generateCrmPipelineSpec(contracts) {
|
|
26
|
-
return `// CRM Pipeline Specs
|
|
27
|
-
// Contracts: ${contracts.join(", ")}
|
|
2
|
+
function G(x){let b=x?.id??"unknown";if(!x)return j(b);switch(b){case"crm-pipeline":return q(x.schema.contracts);case"saas-boilerplate":return v(x.schema.contracts);case"agent-console":return y(x.schema.contracts);case"todos-app":return z(x.schema.contracts);case"messaging-app":return E(x.schema.contracts);case"recipe-app-i18n":return F(x.schema.contracts);default:return j(b)}}function q(x){return`// CRM Pipeline Specs
|
|
3
|
+
// Contracts: ${x.join(", ")}
|
|
28
4
|
|
|
29
5
|
contractSpec("crm.deal.updateStage.v1", {
|
|
30
6
|
goal: "Move a deal to a different pipeline stage",
|
|
@@ -93,11 +69,8 @@ contractSpec("crm.contact.list.v1", {
|
|
|
93
69
|
hasMore: "boolean"
|
|
94
70
|
}
|
|
95
71
|
}
|
|
96
|
-
})
|
|
97
|
-
}
|
|
98
|
-
function generateSaasBoilerplateSpec(contracts) {
|
|
99
|
-
return `// SaaS Boilerplate Specs
|
|
100
|
-
// Contracts: ${contracts.join(", ")}
|
|
72
|
+
});`}function v(x){return`// SaaS Boilerplate Specs
|
|
73
|
+
// Contracts: ${x.join(", ")}
|
|
101
74
|
|
|
102
75
|
contractSpec("saas.project.create.v1", {
|
|
103
76
|
goal: "Create a new project in an organization",
|
|
@@ -160,11 +133,8 @@ contractSpec("saas.settings.update.v1", {
|
|
|
160
133
|
}
|
|
161
134
|
},
|
|
162
135
|
events: ["settings.updated"]
|
|
163
|
-
})
|
|
164
|
-
}
|
|
165
|
-
function generateAgentConsoleSpec(contracts) {
|
|
166
|
-
return `// Agent Console Specs
|
|
167
|
-
// Contracts: ${contracts.join(", ")}
|
|
136
|
+
});`}function y(x){return`// Agent Console Specs
|
|
137
|
+
// Contracts: ${x.join(", ")}
|
|
168
138
|
|
|
169
139
|
contractSpec("agent.run.execute.v1", {
|
|
170
140
|
goal: "Execute an agent run with specified tools",
|
|
@@ -230,11 +200,8 @@ contractSpec("agent.agent.create.v1", {
|
|
|
230
200
|
}
|
|
231
201
|
},
|
|
232
202
|
events: ["agent.created"]
|
|
233
|
-
})
|
|
234
|
-
}
|
|
235
|
-
function generateTodosSpec(contracts) {
|
|
236
|
-
return `// To-dos App Specs
|
|
237
|
-
// Contracts: ${contracts.join(", ")}
|
|
203
|
+
});`}function z(x){return`// To-dos App Specs
|
|
204
|
+
// Contracts: ${x.join(", ")}
|
|
238
205
|
|
|
239
206
|
contractSpec("tasks.board.v1", {
|
|
240
207
|
goal: "Assign and approve craft work",
|
|
@@ -293,11 +260,8 @@ contractSpec("tasks.complete.v1", {
|
|
|
293
260
|
}
|
|
294
261
|
},
|
|
295
262
|
events: ["task.completed"]
|
|
296
|
-
})
|
|
297
|
-
}
|
|
298
|
-
function generateMessagingSpec(contracts) {
|
|
299
|
-
return `// Messaging App Specs
|
|
300
|
-
// Contracts: ${contracts.join(", ")}
|
|
263
|
+
});`}function E(x){return`// Messaging App Specs
|
|
264
|
+
// Contracts: ${x.join(", ")}
|
|
301
265
|
|
|
302
266
|
contractSpec("messaging.send.v1", {
|
|
303
267
|
goal: "Deliver intent-rich updates",
|
|
@@ -350,11 +314,8 @@ contractSpec("messaging.read.v1", {
|
|
|
350
314
|
}
|
|
351
315
|
},
|
|
352
316
|
events: ["message.read"]
|
|
353
|
-
})
|
|
354
|
-
}
|
|
355
|
-
function generateRecipeSpec(contracts) {
|
|
356
|
-
return `// Recipe App (i18n) Specs
|
|
357
|
-
// Contracts: ${contracts.join(", ")}
|
|
317
|
+
});`}function F(x){return`// Recipe App (i18n) Specs
|
|
318
|
+
// Contracts: ${x.join(", ")}
|
|
358
319
|
|
|
359
320
|
contractSpec("recipes.lookup.v1", {
|
|
360
321
|
goal: "Serve bilingual rituals",
|
|
@@ -401,13 +362,10 @@ contractSpec("recipes.favorite.toggle.v1", {
|
|
|
401
362
|
}
|
|
402
363
|
},
|
|
403
364
|
events: ["recipe.favorited", "recipe.unfavorited"]
|
|
404
|
-
})
|
|
405
|
-
}
|
|
406
|
-
function generateDefaultSpec(templateId) {
|
|
407
|
-
return `// ${templateId} Specs
|
|
365
|
+
});`}function j(x){return`// ${x} Specs
|
|
408
366
|
|
|
409
|
-
contractSpec("${
|
|
410
|
-
goal: "Main operation for ${
|
|
367
|
+
contractSpec("${x}.main.v1", {
|
|
368
|
+
goal: "Main operation for ${x}",
|
|
411
369
|
transport: { gql: { query: "main" } },
|
|
412
370
|
io: {
|
|
413
371
|
input: {
|
|
@@ -417,22 +375,4 @@ contractSpec("${templateId}.main.v1", {
|
|
|
417
375
|
result: "unknown"
|
|
418
376
|
}
|
|
419
377
|
}
|
|
420
|
-
})
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
// src/utils/fetchPresentationData.ts
|
|
424
|
-
async function fetchPresentationData(_presentationName, _templateId) {
|
|
425
|
-
throw new Error("fetchPresentationData is deprecated. Use fetchData from TemplateRuntimeContext.");
|
|
426
|
-
}
|
|
427
|
-
function hasPresentationDataFetcher(_presentationName) {
|
|
428
|
-
return false;
|
|
429
|
-
}
|
|
430
|
-
function getRegisteredPresentationFetchers() {
|
|
431
|
-
return [];
|
|
432
|
-
}
|
|
433
|
-
export {
|
|
434
|
-
hasPresentationDataFetcher,
|
|
435
|
-
getRegisteredPresentationFetchers,
|
|
436
|
-
generateSpecFromTemplate,
|
|
437
|
-
fetchPresentationData
|
|
438
|
-
};
|
|
378
|
+
});`}async function J(x,b){throw Error("fetchPresentationData is deprecated. Use fetchData from TemplateRuntimeContext.")}function K(x){return!1}function L(){return[]}export{K as hasPresentationDataFetcher,L as getRegisteredPresentationFetchers,G as generateSpecFromTemplate,J as fetchPresentationData};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contractspec/lib.example-shared-ui",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.0.19",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -209,8 +209,8 @@
|
|
|
209
209
|
"dev": "contractspec-bun-build dev",
|
|
210
210
|
"clean": "rimraf dist .turbo",
|
|
211
211
|
"lint": "bun lint:fix",
|
|
212
|
-
"lint:fix": "biome check --write --unsafe --only=nursery/useSortedClasses . && biome check --write .",
|
|
213
|
-
"lint:check": "biome check .",
|
|
212
|
+
"lint:fix": "node ../../../scripts/biome.cjs check --write --unsafe --only=nursery/useSortedClasses . && node ../../../scripts/biome.cjs check --write .",
|
|
213
|
+
"lint:check": "node ../../../scripts/biome.cjs check .",
|
|
214
214
|
"test": "bun test --pass-with-no-tests",
|
|
215
215
|
"prebuild": "contractspec-bun-build prebuild",
|
|
216
216
|
"typecheck": "tsc --noEmit"
|
|
@@ -423,7 +423,7 @@
|
|
|
423
423
|
}
|
|
424
424
|
},
|
|
425
425
|
"peerDependencies": {
|
|
426
|
-
"@contractspec/lib.surface-runtime": "0.5.
|
|
426
|
+
"@contractspec/lib.surface-runtime": "0.5.19"
|
|
427
427
|
},
|
|
428
428
|
"peerDependenciesMeta": {
|
|
429
429
|
"@contractspec/lib.surface-runtime": {
|
|
@@ -431,26 +431,26 @@
|
|
|
431
431
|
}
|
|
432
432
|
},
|
|
433
433
|
"dependencies": {
|
|
434
|
-
"@apollo/client": "^4.1.
|
|
435
|
-
"@contractspec/lib.contracts-spec": "5.
|
|
436
|
-
"@contractspec/lib.design-system": "3.
|
|
437
|
-
"@contractspec/lib.ui-kit-web": "3.
|
|
438
|
-
"@tanstack/react-query": "^5.
|
|
434
|
+
"@apollo/client": "^4.1.7",
|
|
435
|
+
"@contractspec/lib.contracts-spec": "5.3.0",
|
|
436
|
+
"@contractspec/lib.design-system": "3.9.0",
|
|
437
|
+
"@contractspec/lib.ui-kit-web": "3.10.0",
|
|
438
|
+
"@tanstack/react-query": "^5.97.0",
|
|
439
439
|
"framer-motion": "^12.38.0",
|
|
440
|
-
"lucide-react": "^1.
|
|
440
|
+
"lucide-react": "^1.8.0",
|
|
441
441
|
"react": "19.2.0",
|
|
442
442
|
"react-dom": "19.2.0",
|
|
443
|
-
"@contractspec/lib.presentation-runtime-core": "3.9.
|
|
443
|
+
"@contractspec/lib.presentation-runtime-core": "3.9.7"
|
|
444
444
|
},
|
|
445
445
|
"optionalDependencies": {
|
|
446
|
-
"@contractspec/lib.surface-runtime": "0.5.
|
|
446
|
+
"@contractspec/lib.surface-runtime": "0.5.19"
|
|
447
447
|
},
|
|
448
448
|
"devDependencies": {
|
|
449
449
|
"@contractspec/tool.typescript": "3.7.13",
|
|
450
450
|
"@types/react": "^19.2.14",
|
|
451
451
|
"@types/react-dom": "^19.2.2",
|
|
452
452
|
"typescript": "^5.9.3",
|
|
453
|
-
"@contractspec/tool.bun": "3.7.
|
|
453
|
+
"@contractspec/tool.bun": "3.7.14"
|
|
454
454
|
},
|
|
455
455
|
"types": "./dist/index.d.ts"
|
|
456
456
|
}
|
|
@@ -50,7 +50,8 @@ function getTemplateComponentRegistrySingleton() {
|
|
|
50
50
|
return store[TEMPLATE_COMPONENT_REGISTRY_KEY];
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
export const templateComponentRegistry =
|
|
53
|
+
export const templateComponentRegistry =
|
|
54
|
+
getTemplateComponentRegistrySingleton();
|
|
54
55
|
|
|
55
56
|
export function registerTemplateComponents(
|
|
56
57
|
templateId: TemplateId,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import type { ApolloClient } from '@apollo/client';
|
|
4
4
|
import type { TransformEngine } from '@contractspec/lib.presentation-runtime-core/transform-engine';
|
|
5
|
-
import { createContext, useContext
|
|
5
|
+
import { type Context, createContext, useContext } from 'react';
|
|
6
6
|
import type {
|
|
7
7
|
TemplateDefinition,
|
|
8
8
|
TemplateId,
|
|
@@ -27,28 +27,25 @@ describe('@contractspec/lib.example-shared-ui singletons', () => {
|
|
|
27
27
|
);
|
|
28
28
|
});
|
|
29
29
|
|
|
30
|
-
test(
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
detail: DummyComponent,
|
|
39
|
-
};
|
|
30
|
+
test('stores TemplateComponentRegistry on globalThis and reuses registrations', async () => {
|
|
31
|
+
const registryStore = globalThis as Record<PropertyKey, unknown>;
|
|
32
|
+
const registryModule = await import('./component-registry');
|
|
33
|
+
const templateId = `singleton-test-${Date.now()}`;
|
|
34
|
+
const registration = {
|
|
35
|
+
list: DummyComponent,
|
|
36
|
+
detail: DummyComponent,
|
|
37
|
+
};
|
|
40
38
|
|
|
41
|
-
|
|
39
|
+
registerTemplateComponents(templateId, registration);
|
|
42
40
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
);
|
|
41
|
+
expect(registryStore[TEMPLATE_COMPONENT_REGISTRY_KEY]).toBe(
|
|
42
|
+
templateComponentRegistry
|
|
43
|
+
);
|
|
44
|
+
expect(registryModule.templateComponentRegistry).toBe(
|
|
45
|
+
templateComponentRegistry
|
|
46
|
+
);
|
|
47
|
+
expect(registryModule.templateComponentRegistry.get(templateId)).toBe(
|
|
48
|
+
registration
|
|
49
|
+
);
|
|
50
|
+
});
|
|
54
51
|
});
|