@contractspec/bundle.marketing 3.8.7 → 3.8.9

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 (76) hide show
  1. package/.turbo/turbo-build.log +64 -32
  2. package/CHANGELOG.md +63 -0
  3. package/dist/browser/components/templates/TemplateCard.js +83 -0
  4. package/dist/browser/components/templates/TemplateCommandDialog.js +110 -0
  5. package/dist/browser/components/templates/TemplatePreviewContent.js +96 -0
  6. package/dist/browser/components/templates/TemplatesBrowseControls.js +115 -0
  7. package/dist/browser/components/templates/TemplatesCatalogSection.js +284 -0
  8. package/dist/browser/components/templates/TemplatesClientPage.js +840 -917
  9. package/dist/browser/components/templates/TemplatesHeroSection.js +87 -0
  10. package/dist/browser/components/templates/TemplatesNextStepsSection.js +126 -0
  11. package/dist/browser/components/templates/TemplatesPreviewModal.js +136 -126
  12. package/dist/browser/components/templates/index.js +873 -950
  13. package/dist/browser/components/templates/template-catalog.js +81 -0
  14. package/dist/browser/components/templates/template-new.js +23 -0
  15. package/dist/browser/components/templates/template-preview.js +43 -0
  16. package/dist/browser/components/templates/template-source.js +19 -0
  17. package/dist/browser/index.js +873 -950
  18. package/dist/components/templates/TemplateCard.d.ts +12 -0
  19. package/dist/components/templates/TemplateCard.js +78 -0
  20. package/dist/components/templates/TemplateCommandDialog.d.ts +6 -0
  21. package/dist/components/templates/TemplateCommandDialog.js +105 -0
  22. package/dist/components/templates/TemplatePreviewContent.d.ts +5 -0
  23. package/dist/components/templates/TemplatePreviewContent.js +91 -0
  24. package/dist/components/templates/TemplatesBrowseControls.d.ts +13 -0
  25. package/dist/components/templates/TemplatesBrowseControls.js +110 -0
  26. package/dist/components/templates/TemplatesCatalogSection.d.ts +14 -0
  27. package/dist/components/templates/TemplatesCatalogSection.js +279 -0
  28. package/dist/components/templates/TemplatesClientPage.js +840 -917
  29. package/dist/components/templates/TemplatesHeroSection.d.ts +5 -0
  30. package/dist/components/templates/TemplatesHeroSection.js +82 -0
  31. package/dist/components/templates/TemplatesNextStepsSection.d.ts +1 -0
  32. package/dist/components/templates/TemplatesNextStepsSection.js +121 -0
  33. package/dist/components/templates/TemplatesPreviewModal.d.ts +3 -4
  34. package/dist/components/templates/TemplatesPreviewModal.js +136 -126
  35. package/dist/components/templates/index.js +873 -950
  36. package/dist/components/templates/template-catalog.d.ts +27 -0
  37. package/dist/components/templates/template-catalog.js +76 -0
  38. package/dist/components/templates/template-catalog.test.d.ts +1 -0
  39. package/dist/components/templates/template-new.d.ts +2 -0
  40. package/dist/components/templates/template-new.js +18 -0
  41. package/dist/components/templates/template-preview.d.ts +18 -0
  42. package/dist/components/templates/template-preview.js +38 -0
  43. package/dist/components/templates/template-source.d.ts +3 -0
  44. package/dist/components/templates/template-source.js +14 -0
  45. package/dist/index.js +873 -950
  46. package/dist/node/components/templates/TemplateCard.js +78 -0
  47. package/dist/node/components/templates/TemplateCommandDialog.js +105 -0
  48. package/dist/node/components/templates/TemplatePreviewContent.js +91 -0
  49. package/dist/node/components/templates/TemplatesBrowseControls.js +110 -0
  50. package/dist/node/components/templates/TemplatesCatalogSection.js +279 -0
  51. package/dist/node/components/templates/TemplatesClientPage.js +840 -917
  52. package/dist/node/components/templates/TemplatesHeroSection.js +82 -0
  53. package/dist/node/components/templates/TemplatesNextStepsSection.js +121 -0
  54. package/dist/node/components/templates/TemplatesPreviewModal.js +136 -126
  55. package/dist/node/components/templates/index.js +873 -950
  56. package/dist/node/components/templates/template-catalog.js +76 -0
  57. package/dist/node/components/templates/template-new.js +18 -0
  58. package/dist/node/components/templates/template-preview.js +38 -0
  59. package/dist/node/components/templates/template-source.js +14 -0
  60. package/dist/node/index.js +873 -950
  61. package/package.json +185 -30
  62. package/src/components/templates/TemplateCard.tsx +74 -0
  63. package/src/components/templates/TemplateCommandDialog.tsx +92 -0
  64. package/src/components/templates/TemplatePreviewContent.tsx +182 -0
  65. package/src/components/templates/TemplatesBrowseControls.tsx +120 -0
  66. package/src/components/templates/TemplatesCatalogSection.tsx +166 -0
  67. package/src/components/templates/TemplatesClientPage.tsx +109 -741
  68. package/src/components/templates/TemplatesHeroSection.tsx +41 -0
  69. package/src/components/templates/TemplatesNextStepsSection.tsx +80 -0
  70. package/src/components/templates/TemplatesPreviewModal.tsx +19 -294
  71. package/src/components/templates/template-catalog.test.ts +66 -0
  72. package/src/components/templates/template-catalog.ts +132 -0
  73. package/src/components/templates/template-new.ts +12 -0
  74. package/src/components/templates/template-preview.ts +57 -0
  75. package/src/components/templates/template-source.ts +13 -0
  76. package/.turbo/turbo-prebuild.log +0 -1
@@ -0,0 +1,27 @@
1
+ import type { ExampleKind, ExampleSandboxMode, ExampleSpec } from '@contractspec/lib.contracts-spec/examples/types';
2
+ import type { Stability } from '@contractspec/lib.contracts-spec/ownership';
3
+ import type { TemplateDefinition, TemplateId } from '@contractspec/lib.example-shared-ui';
4
+ export interface LocalTemplateCatalogItem {
5
+ id: TemplateId;
6
+ title: string;
7
+ description: string;
8
+ tags: string[];
9
+ kind: ExampleKind;
10
+ stability: Stability;
11
+ previewUrl: string;
12
+ featureList: string[];
13
+ sandboxModes: readonly ExampleSandboxMode[];
14
+ renderTargets: string[];
15
+ isNew: boolean;
16
+ packageName: string;
17
+ }
18
+ interface TemplateFilterCandidate {
19
+ title: string;
20
+ description: string;
21
+ tags: readonly string[];
22
+ }
23
+ export declare function buildLocalTemplateCatalog(examples?: readonly ExampleSpec[], templates?: readonly TemplateDefinition[]): LocalTemplateCatalogItem[];
24
+ export declare function matchesTemplateFilters(template: TemplateFilterCandidate, search: string, selectedTag: string | null): boolean;
25
+ export declare function formatExampleKindLabel(kind: ExampleKind): string;
26
+ export declare function formatStabilityLabel(stability: Stability): string;
27
+ export {};
@@ -0,0 +1,76 @@
1
+ // @bun
2
+ var __require = import.meta.require;
3
+
4
+ // src/components/templates/template-new.ts
5
+ var NEW_TEMPLATE_IDS = [
6
+ "minimal",
7
+ "messaging-agent-actions",
8
+ "policy-safe-knowledge-assistant",
9
+ "visualization-showcase"
10
+ ];
11
+ var NEW_TEMPLATE_ID_SET = new Set(NEW_TEMPLATE_IDS);
12
+ function isNewTemplateId(templateId) {
13
+ return NEW_TEMPLATE_ID_SET.has(templateId);
14
+ }
15
+
16
+ // src/components/templates/template-catalog.ts
17
+ import { listExamples, listTemplates } from "@contractspec/module.examples";
18
+ var NEW_TEMPLATE_INDEX = new Map(NEW_TEMPLATE_IDS.map((templateId, index) => [templateId, index]));
19
+ function buildLocalTemplateCatalog(examples = listExamples(), templates = listTemplates()) {
20
+ const templatesById = new Map(templates.map((template) => [template.id, template]));
21
+ return examples.filter((example) => example.meta.visibility === "public" && example.surfaces.templates).map((example) => {
22
+ const template = templatesById.get(example.meta.key);
23
+ const tags = Array.from(new Set(example.meta.tags.map((tag) => tag.trim()).filter(Boolean))).sort((left, right) => left.localeCompare(right));
24
+ return {
25
+ id: example.meta.key,
26
+ title: example.meta.title ?? template?.name ?? example.meta.key,
27
+ description: example.meta.summary ?? example.meta.description,
28
+ tags,
29
+ kind: example.meta.kind,
30
+ stability: example.meta.stability,
31
+ previewUrl: template?.preview?.demoUrl ?? `/sandbox?template=${encodeURIComponent(example.meta.key)}`,
32
+ featureList: [...template?.features ?? []],
33
+ sandboxModes: example.surfaces.sandbox.modes,
34
+ renderTargets: [...template?.renderTargets ?? []],
35
+ isNew: isNewTemplateId(example.meta.key),
36
+ packageName: example.entrypoints.packageName
37
+ };
38
+ }).sort(compareLocalTemplateCatalogItems);
39
+ }
40
+ function matchesTemplateFilters(template, search, selectedTag) {
41
+ const haystack = [
42
+ template.title,
43
+ template.description,
44
+ template.tags.join(" ")
45
+ ].join(" ").toLowerCase();
46
+ const searchTokens = search.trim().toLowerCase().split(/\s+/).filter(Boolean);
47
+ const matchesSearch = searchTokens.length === 0 || searchTokens.every((token) => haystack.includes(token));
48
+ const matchesTag = selectedTag === null || template.tags.includes(selectedTag);
49
+ return matchesSearch && matchesTag;
50
+ }
51
+ function formatExampleKindLabel(kind) {
52
+ return kind.split("-").map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join(" ");
53
+ }
54
+ function formatStabilityLabel(stability) {
55
+ return stability.split("_").map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join(" ");
56
+ }
57
+ function compareLocalTemplateCatalogItems(left, right) {
58
+ const leftNewIndex = NEW_TEMPLATE_INDEX.get(left.id);
59
+ const rightNewIndex = NEW_TEMPLATE_INDEX.get(right.id);
60
+ if (leftNewIndex !== undefined || rightNewIndex !== undefined) {
61
+ if (leftNewIndex === undefined) {
62
+ return 1;
63
+ }
64
+ if (rightNewIndex === undefined) {
65
+ return -1;
66
+ }
67
+ return leftNewIndex - rightNewIndex;
68
+ }
69
+ return left.title.localeCompare(right.title);
70
+ }
71
+ export {
72
+ matchesTemplateFilters,
73
+ formatStabilityLabel,
74
+ formatExampleKindLabel,
75
+ buildLocalTemplateCatalog
76
+ };
@@ -0,0 +1,2 @@
1
+ export declare const NEW_TEMPLATE_IDS: readonly ["minimal", "messaging-agent-actions", "policy-safe-knowledge-assistant", "visualization-showcase"];
2
+ export declare function isNewTemplateId(templateId: string): boolean;
@@ -0,0 +1,18 @@
1
+ // @bun
2
+ var __require = import.meta.require;
3
+
4
+ // src/components/templates/template-new.ts
5
+ var NEW_TEMPLATE_IDS = [
6
+ "minimal",
7
+ "messaging-agent-actions",
8
+ "policy-safe-knowledge-assistant",
9
+ "visualization-showcase"
10
+ ];
11
+ var NEW_TEMPLATE_ID_SET = new Set(NEW_TEMPLATE_IDS);
12
+ function isNewTemplateId(templateId) {
13
+ return NEW_TEMPLATE_ID_SET.has(templateId);
14
+ }
15
+ export {
16
+ isNewTemplateId,
17
+ NEW_TEMPLATE_IDS
18
+ };
@@ -0,0 +1,18 @@
1
+ import type { RegistryTemplate, TemplateId } from '@contractspec/lib.example-shared-ui';
2
+ import type { LocalTemplateCatalogItem } from './template-catalog';
3
+ export type TemplatePreviewAction = {
4
+ kind: 'modal';
5
+ templateId: TemplateId;
6
+ } | {
7
+ kind: 'sandbox';
8
+ href: string;
9
+ } | {
10
+ kind: 'disabled';
11
+ };
12
+ export type LocalTemplatePreviewAction = Exclude<TemplatePreviewAction, {
13
+ kind: 'disabled';
14
+ }>;
15
+ export declare const INLINE_TEMPLATE_PREVIEW_IDS: readonly ["agent-console", "ai-chat-assistant", "analytics-dashboard", "crm-pipeline", "data-grid-showcase", "integration-hub", "marketplace", "saas-boilerplate", "visualization-showcase", "workflow-system"];
16
+ export declare function supportsInlineTemplatePreview(templateId: TemplateId): boolean;
17
+ export declare function getLocalTemplatePreviewAction(template: LocalTemplateCatalogItem): LocalTemplatePreviewAction;
18
+ export declare function getRegistryTemplatePreviewAction(template: RegistryTemplate, localTemplate?: LocalTemplateCatalogItem): TemplatePreviewAction;
@@ -0,0 +1,38 @@
1
+ // @bun
2
+ var __require = import.meta.require;
3
+
4
+ // src/components/templates/template-preview.ts
5
+ var INLINE_TEMPLATE_PREVIEW_IDS = [
6
+ "agent-console",
7
+ "ai-chat-assistant",
8
+ "analytics-dashboard",
9
+ "crm-pipeline",
10
+ "data-grid-showcase",
11
+ "integration-hub",
12
+ "marketplace",
13
+ "saas-boilerplate",
14
+ "visualization-showcase",
15
+ "workflow-system"
16
+ ];
17
+ var INLINE_TEMPLATE_PREVIEW_SET = new Set(INLINE_TEMPLATE_PREVIEW_IDS);
18
+ function supportsInlineTemplatePreview(templateId) {
19
+ return INLINE_TEMPLATE_PREVIEW_SET.has(templateId);
20
+ }
21
+ function getLocalTemplatePreviewAction(template) {
22
+ if (supportsInlineTemplatePreview(template.id)) {
23
+ return { kind: "modal", templateId: template.id };
24
+ }
25
+ return { kind: "sandbox", href: template.previewUrl };
26
+ }
27
+ function getRegistryTemplatePreviewAction(template, localTemplate) {
28
+ if (!localTemplate) {
29
+ return { kind: "disabled" };
30
+ }
31
+ return getLocalTemplatePreviewAction(localTemplate);
32
+ }
33
+ export {
34
+ supportsInlineTemplatePreview,
35
+ getRegistryTemplatePreviewAction,
36
+ getLocalTemplatePreviewAction,
37
+ INLINE_TEMPLATE_PREVIEW_IDS
38
+ };
@@ -0,0 +1,3 @@
1
+ export type TemplateSource = 'local' | 'registry';
2
+ export declare function isRegistryConfigured(registryUrl: string | null | undefined): boolean;
3
+ export declare function getAvailableTemplateSources(registryUrl: string | null | undefined): readonly TemplateSource[];
@@ -0,0 +1,14 @@
1
+ // @bun
2
+ var __require = import.meta.require;
3
+
4
+ // src/components/templates/template-source.ts
5
+ function isRegistryConfigured(registryUrl) {
6
+ return Boolean(registryUrl?.trim());
7
+ }
8
+ function getAvailableTemplateSources(registryUrl) {
9
+ return isRegistryConfigured(registryUrl) ? ["local", "registry"] : ["local"];
10
+ }
11
+ export {
12
+ isRegistryConfigured,
13
+ getAvailableTemplateSources
14
+ };