@contractspec/bundle.marketing 3.8.8 → 3.8.10

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 (96) hide show
  1. package/.turbo/turbo-build.log +73 -29
  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 +130 -0
  7. package/dist/browser/components/templates/TemplatesCatalogSection.js +307 -0
  8. package/dist/browser/components/templates/TemplatesClientPage.js +1020 -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/TemplatesOverlays.js +2874 -0
  12. package/dist/browser/components/templates/TemplatesPreviewModal.js +136 -126
  13. package/dist/browser/components/templates/index.js +1055 -952
  14. package/dist/browser/components/templates/template-catalog.js +83 -0
  15. package/dist/browser/components/templates/template-filters.js +99 -0
  16. package/dist/browser/components/templates/template-new.js +23 -0
  17. package/dist/browser/components/templates/template-preview.js +43 -0
  18. package/dist/browser/components/templates/template-source.js +19 -0
  19. package/dist/browser/components/templates/template-tag-visibility.js +40 -0
  20. package/dist/browser/components/templates/useTemplateBrowseState.js +191 -0
  21. package/dist/browser/index.js +1055 -952
  22. package/dist/components/templates/TemplateCard.d.ts +12 -0
  23. package/dist/components/templates/TemplateCard.js +78 -0
  24. package/dist/components/templates/TemplateCommandDialog.d.ts +6 -0
  25. package/dist/components/templates/TemplateCommandDialog.js +105 -0
  26. package/dist/components/templates/TemplatePreviewContent.d.ts +5 -0
  27. package/dist/components/templates/TemplatePreviewContent.js +91 -0
  28. package/dist/components/templates/TemplatesBrowseControls.d.ts +18 -0
  29. package/dist/components/templates/TemplatesBrowseControls.js +125 -0
  30. package/dist/components/templates/TemplatesCatalogSection.d.ts +17 -0
  31. package/dist/components/templates/TemplatesCatalogSection.js +302 -0
  32. package/dist/components/templates/TemplatesClientPage.js +1020 -917
  33. package/dist/components/templates/TemplatesHeroSection.d.ts +5 -0
  34. package/dist/components/templates/TemplatesHeroSection.js +82 -0
  35. package/dist/components/templates/TemplatesNextStepsSection.d.ts +1 -0
  36. package/dist/components/templates/TemplatesNextStepsSection.js +121 -0
  37. package/dist/components/templates/TemplatesOverlays.d.ts +10 -0
  38. package/dist/components/templates/TemplatesOverlays.js +2869 -0
  39. package/dist/components/templates/TemplatesPreviewModal.d.ts +3 -4
  40. package/dist/components/templates/TemplatesPreviewModal.js +136 -126
  41. package/dist/components/templates/index.js +1055 -952
  42. package/dist/components/templates/template-catalog.d.ts +28 -0
  43. package/dist/components/templates/template-catalog.js +78 -0
  44. package/dist/components/templates/template-catalog.test.d.ts +1 -0
  45. package/dist/components/templates/template-filters.d.ts +12 -0
  46. package/dist/components/templates/template-filters.js +94 -0
  47. package/dist/components/templates/template-new.d.ts +2 -0
  48. package/dist/components/templates/template-new.js +18 -0
  49. package/dist/components/templates/template-preview.d.ts +18 -0
  50. package/dist/components/templates/template-preview.js +38 -0
  51. package/dist/components/templates/template-source.d.ts +3 -0
  52. package/dist/components/templates/template-source.js +14 -0
  53. package/dist/components/templates/template-tag-visibility.d.ts +10 -0
  54. package/dist/components/templates/template-tag-visibility.js +35 -0
  55. package/dist/components/templates/useTemplateBrowseState.d.ts +22 -0
  56. package/dist/components/templates/useTemplateBrowseState.js +186 -0
  57. package/dist/index.js +1055 -952
  58. package/dist/node/components/templates/TemplateCard.js +78 -0
  59. package/dist/node/components/templates/TemplateCommandDialog.js +105 -0
  60. package/dist/node/components/templates/TemplatePreviewContent.js +91 -0
  61. package/dist/node/components/templates/TemplatesBrowseControls.js +125 -0
  62. package/dist/node/components/templates/TemplatesCatalogSection.js +302 -0
  63. package/dist/node/components/templates/TemplatesClientPage.js +1020 -917
  64. package/dist/node/components/templates/TemplatesHeroSection.js +82 -0
  65. package/dist/node/components/templates/TemplatesNextStepsSection.js +121 -0
  66. package/dist/node/components/templates/TemplatesOverlays.js +2869 -0
  67. package/dist/node/components/templates/TemplatesPreviewModal.js +136 -126
  68. package/dist/node/components/templates/index.js +1055 -952
  69. package/dist/node/components/templates/template-catalog.js +78 -0
  70. package/dist/node/components/templates/template-filters.js +94 -0
  71. package/dist/node/components/templates/template-new.js +18 -0
  72. package/dist/node/components/templates/template-preview.js +38 -0
  73. package/dist/node/components/templates/template-source.js +14 -0
  74. package/dist/node/components/templates/template-tag-visibility.js +35 -0
  75. package/dist/node/components/templates/useTemplateBrowseState.js +186 -0
  76. package/dist/node/index.js +1055 -952
  77. package/package.json +237 -26
  78. package/src/components/templates/TemplateCard.tsx +74 -0
  79. package/src/components/templates/TemplateCommandDialog.tsx +92 -0
  80. package/src/components/templates/TemplatePreviewContent.tsx +182 -0
  81. package/src/components/templates/TemplatesBrowseControls.tsx +144 -0
  82. package/src/components/templates/TemplatesCatalogSection.tsx +191 -0
  83. package/src/components/templates/TemplatesClientPage.tsx +85 -773
  84. package/src/components/templates/TemplatesHeroSection.tsx +41 -0
  85. package/src/components/templates/TemplatesNextStepsSection.tsx +80 -0
  86. package/src/components/templates/TemplatesOverlays.tsx +65 -0
  87. package/src/components/templates/TemplatesPreviewModal.tsx +19 -294
  88. package/src/components/templates/template-catalog.test.ts +162 -0
  89. package/src/components/templates/template-catalog.ts +140 -0
  90. package/src/components/templates/template-filters.ts +57 -0
  91. package/src/components/templates/template-new.ts +12 -0
  92. package/src/components/templates/template-preview.ts +57 -0
  93. package/src/components/templates/template-source.ts +13 -0
  94. package/src/components/templates/template-tag-visibility.ts +58 -0
  95. package/src/components/templates/useTemplateBrowseState.ts +101 -0
  96. package/.turbo/turbo-prebuild.log +0 -1
@@ -1,13 +1,11 @@
1
1
  $ contractspec-bun-build prebuild
2
- $ bun run prebuild && bun run build:bundle && bun run build:types
3
- $ contractspec-bun-build prebuild
2
+ $ bun run build:bundle && bun run build:types
4
3
  $ contractspec-bun-build transpile
5
- [contractspec-bun-build] transpile target=bun root=src entries=45 noBundle=false
6
- Bundled 45 modules in 23ms
4
+ [contractspec-bun-build] transpile target=bun root=src entries=60 noBundle=false
5
+ Bundled 60 modules in 32ms
7
6
 
8
7
  bundles/MarketingBundle.js 8.0 KB (entry point)
9
- libs/email/types.js 49 bytes (entry point)
10
- ./index.js 229.90 KB (entry point)
8
+ ./index.js 225.25 KB (entry point)
11
9
  libs/email/waitlist-application.js 11.18 KB (entry point)
12
10
  libs/email/waitlist.js 7.48 KB (entry point)
13
11
  registry/index.js 154.47 KB (entry point)
@@ -15,14 +13,30 @@ Bundled 45 modules in 23ms
15
13
  registry/utils.js 154.1 KB (entry point)
16
14
  registry/engine.js 152.52 KB (entry point)
17
15
  registry/registry.js 151.99 KB (entry point)
18
- registry/registry-docs.js 27.11 KB (entry point)
19
16
  registry/registry-landing.js 124.66 KB (entry point)
17
+ registry/registry-docs.js 27.11 KB (entry point)
20
18
  registry/factory.js 1.35 KB (entry point)
21
- components/templates/index.js 181.15 KB (entry point)
22
- components/templates/TemplatesClientPage.js 174.21 KB (entry point)
23
- components/templates/TemplatesPage.js 6.85 KB (entry point)
24
- components/templates/TemplatesPreviewModal.js 9.86 KB (entry point)
25
19
  libs/email/newsletter.js 6.88 KB (entry point)
20
+ libs/email/types.js 49 bytes (entry point)
21
+ components/templates/index.js 176.50 KB (entry point)
22
+ components/templates/TemplatesPage.js 6.85 KB (entry point)
23
+ components/templates/TemplatesClientPage.js 169.52 KB (entry point)
24
+ components/templates/useTemplateBrowseState.js 7.78 KB (entry point)
25
+ components/templates/template-source.js 379 bytes (entry point)
26
+ components/templates/template-tag-visibility.js 1.13 KB (entry point)
27
+ components/templates/TemplatesOverlays.js 134.37 KB (entry point)
28
+ components/templates/TemplatesPreviewModal.js 7.43 KB (entry point)
29
+ components/templates/template-filters.js 4.1 KB (entry point)
30
+ components/templates/TemplateCommandDialog.js 3.99 KB (entry point)
31
+ components/templates/TemplatePreviewContent.js 5.19 KB (entry point)
32
+ components/templates/TemplatesBrowseControls.js 6.0 KB (entry point)
33
+ components/templates/TemplatesCatalogSection.js 12.73 KB (entry point)
34
+ components/templates/template-catalog.js 3.20 KB (entry point)
35
+ components/templates/template-new.js 414 bytes (entry point)
36
+ components/templates/template-preview.js 1.1 KB (entry point)
37
+ components/templates/TemplateCard.js 2.92 KB (entry point)
38
+ components/templates/TemplatesHeroSection.js 3.37 KB (entry point)
39
+ components/templates/TemplatesNextStepsSection.js 5.90 KB (entry point)
26
40
  components/marketing/sections/FearsSection.js 3.36 KB (entry point)
27
41
  components/marketing/sections/HeroMarketingSection.js 3.65 KB (entry point)
28
42
  components/marketing/sections/OutputsSection.js 3.26 KB (entry point)
@@ -51,12 +65,11 @@ Bundled 45 modules in 23ms
51
65
  components/marketing/DesignPartnerPage.js 10.45 KB (entry point)
52
66
  components/marketing/LandingPage.js 25.71 KB (entry point)
53
67
 
54
- [contractspec-bun-build] transpile target=node root=src entries=45 noBundle=false
55
- Bundled 45 modules in 22ms
68
+ [contractspec-bun-build] transpile target=node root=src entries=60 noBundle=false
69
+ Bundled 60 modules in 32ms
56
70
 
57
71
  bundles/MarketingBundle.js 8.1 KB (entry point)
58
- libs/email/types.js 41 bytes (entry point)
59
- ./index.js 229.85 KB (entry point)
72
+ ./index.js 225.22 KB (entry point)
60
73
  libs/email/waitlist-application.js 11.23 KB (entry point)
61
74
  libs/email/waitlist.js 7.53 KB (entry point)
62
75
  registry/index.js 154.50 KB (entry point)
@@ -64,14 +77,30 @@ Bundled 45 modules in 22ms
64
77
  registry/utils.js 154.1 KB (entry point)
65
78
  registry/engine.js 152.56 KB (entry point)
66
79
  registry/registry.js 152.0 KB (entry point)
67
- registry/registry-docs.js 27.18 KB (entry point)
68
80
  registry/registry-landing.js 124.69 KB (entry point)
81
+ registry/registry-docs.js 27.18 KB (entry point)
69
82
  registry/factory.js 1.42 KB (entry point)
70
- components/templates/index.js 181.15 KB (entry point)
71
- components/templates/TemplatesClientPage.js 174.21 KB (entry point)
72
- components/templates/TemplatesPage.js 6.91 KB (entry point)
73
- components/templates/TemplatesPreviewModal.js 9.92 KB (entry point)
74
83
  libs/email/newsletter.js 6.93 KB (entry point)
84
+ libs/email/types.js 41 bytes (entry point)
85
+ components/templates/index.js 176.52 KB (entry point)
86
+ components/templates/TemplatesPage.js 6.91 KB (entry point)
87
+ components/templates/TemplatesClientPage.js 169.54 KB (entry point)
88
+ components/templates/useTemplateBrowseState.js 7.84 KB (entry point)
89
+ components/templates/template-source.js 443 bytes (entry point)
90
+ components/templates/template-tag-visibility.js 1.19 KB (entry point)
91
+ components/templates/TemplatesOverlays.js 134.41 KB (entry point)
92
+ components/templates/TemplatesPreviewModal.js 7.50 KB (entry point)
93
+ components/templates/template-filters.js 4.13 KB (entry point)
94
+ components/templates/TemplateCommandDialog.js 4.1 KB (entry point)
95
+ components/templates/TemplatePreviewContent.js 5.26 KB (entry point)
96
+ components/templates/TemplatesBrowseControls.js 6.1 KB (entry point)
97
+ components/templates/TemplatesCatalogSection.js 12.79 KB (entry point)
98
+ components/templates/template-catalog.js 3.27 KB (entry point)
99
+ components/templates/template-new.js 478 bytes (entry point)
100
+ components/templates/template-preview.js 1.15 KB (entry point)
101
+ components/templates/TemplateCard.js 2.98 KB (entry point)
102
+ components/templates/TemplatesHeroSection.js 3.43 KB (entry point)
103
+ components/templates/TemplatesNextStepsSection.js 5.96 KB (entry point)
75
104
  components/marketing/sections/FearsSection.js 3.42 KB (entry point)
76
105
  components/marketing/sections/HeroMarketingSection.js 3.71 KB (entry point)
77
106
  components/marketing/sections/OutputsSection.js 3.32 KB (entry point)
@@ -100,12 +129,11 @@ Bundled 45 modules in 22ms
100
129
  components/marketing/DesignPartnerPage.js 10.51 KB (entry point)
101
130
  components/marketing/LandingPage.js 25.76 KB (entry point)
102
131
 
103
- [contractspec-bun-build] transpile target=browser root=src entries=45 noBundle=false
104
- Bundled 45 modules in 31ms
132
+ [contractspec-bun-build] transpile target=browser root=src entries=60 noBundle=false
133
+ Bundled 60 modules in 29ms
105
134
 
106
135
  bundles/MarketingBundle.js 8.36 KB (entry point)
107
- libs/email/types.js 41 bytes (entry point)
108
- ./index.js 230.11 KB (entry point)
136
+ ./index.js 225.48 KB (entry point)
109
137
  libs/email/waitlist-application.js 11.49 KB (entry point)
110
138
  libs/email/waitlist.js 7.79 KB (entry point)
111
139
  registry/index.js 154.76 KB (entry point)
@@ -113,14 +141,30 @@ Bundled 45 modules in 31ms
113
141
  registry/utils.js 154.36 KB (entry point)
114
142
  registry/engine.js 152.82 KB (entry point)
115
143
  registry/registry.js 152.28 KB (entry point)
116
- registry/registry-docs.js 27.44 KB (entry point)
117
144
  registry/registry-landing.js 124.95 KB (entry point)
145
+ registry/registry-docs.js 27.44 KB (entry point)
118
146
  registry/factory.js 1.68 KB (entry point)
119
- components/templates/index.js 181.41 KB (entry point)
120
- components/templates/TemplatesClientPage.js 174.47 KB (entry point)
121
- components/templates/TemplatesPage.js 7.17 KB (entry point)
122
- components/templates/TemplatesPreviewModal.js 10.18 KB (entry point)
123
147
  libs/email/newsletter.js 7.19 KB (entry point)
148
+ libs/email/types.js 41 bytes (entry point)
149
+ components/templates/index.js 176.78 KB (entry point)
150
+ components/templates/TemplatesPage.js 7.17 KB (entry point)
151
+ components/templates/TemplatesClientPage.js 169.80 KB (entry point)
152
+ components/templates/useTemplateBrowseState.js 8.10 KB (entry point)
153
+ components/templates/template-source.js 0.70 KB (entry point)
154
+ components/templates/template-tag-visibility.js 1.45 KB (entry point)
155
+ components/templates/TemplatesOverlays.js 134.67 KB (entry point)
156
+ components/templates/TemplatesPreviewModal.js 7.76 KB (entry point)
157
+ components/templates/template-filters.js 4.39 KB (entry point)
158
+ components/templates/TemplateCommandDialog.js 4.31 KB (entry point)
159
+ components/templates/TemplatePreviewContent.js 5.52 KB (entry point)
160
+ components/templates/TemplatesBrowseControls.js 6.36 KB (entry point)
161
+ components/templates/TemplatesCatalogSection.js 13.0 KB (entry point)
162
+ components/templates/template-catalog.js 3.53 KB (entry point)
163
+ components/templates/template-new.js 0.74 KB (entry point)
164
+ components/templates/template-preview.js 1.41 KB (entry point)
165
+ components/templates/TemplateCard.js 3.24 KB (entry point)
166
+ components/templates/TemplatesHeroSection.js 3.69 KB (entry point)
167
+ components/templates/TemplatesNextStepsSection.js 6.22 KB (entry point)
124
168
  components/marketing/sections/FearsSection.js 3.68 KB (entry point)
125
169
  components/marketing/sections/HeroMarketingSection.js 3.97 KB (entry point)
126
170
  components/marketing/sections/OutputsSection.js 3.58 KB (entry point)
package/CHANGELOG.md CHANGED
@@ -1,5 +1,68 @@
1
1
  # @contractspec/bundle.marketing
2
2
 
3
+ ## 3.8.10
4
+
5
+ ### Patch Changes
6
+
7
+ - Fix workflow runtime imports for sandboxed workflow execution and keep workflow authoring on safe subpaths.
8
+ - Migration: Keep Node-only workflow runner code out of "use workflow" entrypoints.
9
+ - Deprecations: Importing the broad `@contractspec/lib.contracts-spec/workflow` barrel from sandboxed workflow entrypoints is discouraged.
10
+ - Updated dependencies because of Fix workflow runtime imports for sandboxed workflow execution and keep workflow authoring on safe subpaths.
11
+ - Updated dependencies because of Add versioning-backed release capsules, generated patch notes, and guided upgrade flows.
12
+ - @contractspec/lib.contracts-runtime-client-react@3.8.5
13
+ - @contractspec/example.visualization-showcase@3.9.9
14
+ - @contractspec/example.analytics-dashboard@3.9.9
15
+ - @contractspec/example.data-grid-showcase@3.8.9
16
+ - @contractspec/example.ai-chat-assistant@3.8.9
17
+ - @contractspec/example.saas-boilerplate@3.8.9
18
+ - @contractspec/example.integration-hub@3.8.9
19
+ - @contractspec/example.workflow-system@3.8.9
20
+ - @contractspec/example.agent-console@3.8.9
21
+ - @contractspec/lib.example-shared-ui@6.0.17
22
+ - @contractspec/example.crm-pipeline@3.7.17
23
+ - @contractspec/example.marketplace@3.8.9
24
+ - @contractspec/lib.runtime-sandbox@2.7.14
25
+ - @contractspec/lib.surface-runtime@0.5.17
26
+ - @contractspec/lib.contracts-spec@5.1.0
27
+ - @contractspec/lib.design-system@3.8.10
28
+ - @contractspec/lib.ui-kit-core@3.7.13
29
+ - @contractspec/module.examples@3.8.9
30
+ - @contractspec/bundle.library@3.8.10
31
+ - @contractspec/lib.ui-kit-web@3.9.9
32
+ - @contractspec/lib.ui-link@3.7.13
33
+ - @contractspec/lib.logger@3.7.13
34
+ - @contractspec/lib.email@3.7.13
35
+
36
+ ## 3.8.9
37
+
38
+ ### Patch Changes
39
+
40
+ - 2b59171: fix: crypto package issue due to nodejs only runtime
41
+ - Updated dependencies [2b59171]
42
+ - @contractspec/lib.contracts-runtime-client-react@3.8.4
43
+ - @contractspec/example.visualization-showcase@3.9.8
44
+ - @contractspec/example.analytics-dashboard@3.9.8
45
+ - @contractspec/example.data-grid-showcase@3.8.8
46
+ - @contractspec/example.ai-chat-assistant@3.8.8
47
+ - @contractspec/example.saas-boilerplate@3.8.8
48
+ - @contractspec/example.integration-hub@3.8.8
49
+ - @contractspec/example.workflow-system@3.8.8
50
+ - @contractspec/example.agent-console@3.8.8
51
+ - @contractspec/lib.example-shared-ui@6.0.16
52
+ - @contractspec/example.crm-pipeline@3.7.16
53
+ - @contractspec/example.marketplace@3.8.8
54
+ - @contractspec/lib.runtime-sandbox@2.7.13
55
+ - @contractspec/lib.surface-runtime@0.5.16
56
+ - @contractspec/lib.contracts-spec@5.0.4
57
+ - @contractspec/lib.design-system@3.8.9
58
+ - @contractspec/lib.ui-kit-core@3.7.12
59
+ - @contractspec/module.examples@3.8.8
60
+ - @contractspec/bundle.library@3.8.9
61
+ - @contractspec/lib.ui-kit-web@3.9.8
62
+ - @contractspec/lib.ui-link@3.7.12
63
+ - @contractspec/lib.logger@3.7.12
64
+ - @contractspec/lib.email@3.7.12
65
+
3
66
  ## 3.8.8
4
67
 
5
68
  ### Patch Changes
@@ -0,0 +1,83 @@
1
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
2
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
3
+ }) : x)(function(x) {
4
+ if (typeof require !== "undefined")
5
+ return require.apply(this, arguments);
6
+ throw Error('Dynamic require of "' + x + '" is not supported');
7
+ });
8
+
9
+ // src/components/templates/TemplateCard.tsx
10
+ import { jsxDEV } from "react/jsx-dev-runtime";
11
+ "use client";
12
+ function TemplateCard({
13
+ title,
14
+ description,
15
+ metaBadges,
16
+ tags,
17
+ featureList = [],
18
+ isNew = false,
19
+ previewAction,
20
+ useAction
21
+ }) {
22
+ return /* @__PURE__ */ jsxDEV("div", {
23
+ className: "editorial-panel relative flex flex-col space-y-4 transition-colors hover:border-[color:rgb(162_79_42_/_0.55)]",
24
+ children: [
25
+ isNew ? /* @__PURE__ */ jsxDEV("span", {
26
+ className: "absolute top-4 right-4 rounded-full bg-[color:var(--success)] px-2.5 py-1 font-medium text-[11px] text-white uppercase",
27
+ children: "New"
28
+ }, undefined, false, undefined, this) : null,
29
+ /* @__PURE__ */ jsxDEV("div", {
30
+ children: [
31
+ /* @__PURE__ */ jsxDEV("h3", {
32
+ className: "font-serif text-2xl tracking-[-0.03em]",
33
+ children: title
34
+ }, undefined, false, undefined, this),
35
+ /* @__PURE__ */ jsxDEV("p", {
36
+ className: "mt-1 text-muted-foreground text-sm",
37
+ children: description
38
+ }, undefined, false, undefined, this)
39
+ ]
40
+ }, undefined, true, undefined, this),
41
+ /* @__PURE__ */ jsxDEV("div", {
42
+ className: "flex-1 space-y-3",
43
+ children: [
44
+ /* @__PURE__ */ jsxDEV("div", {
45
+ className: "flex flex-wrap gap-2",
46
+ children: metaBadges.map((badge) => /* @__PURE__ */ jsxDEV("span", {
47
+ className: "rounded-full border border-border bg-background px-3 py-1 text-[11px] text-foreground",
48
+ children: badge
49
+ }, badge, false, undefined, this))
50
+ }, undefined, false, undefined, this),
51
+ featureList.length > 0 ? /* @__PURE__ */ jsxDEV("p", {
52
+ className: "text-muted-foreground text-xs",
53
+ children: [
54
+ /* @__PURE__ */ jsxDEV("span", {
55
+ className: "font-medium text-foreground",
56
+ children: "Features:"
57
+ }, undefined, false, undefined, this),
58
+ " ",
59
+ featureList.join(", ")
60
+ ]
61
+ }, undefined, true, undefined, this) : null,
62
+ /* @__PURE__ */ jsxDEV("div", {
63
+ className: "flex flex-wrap gap-1",
64
+ children: tags.map((tag) => /* @__PURE__ */ jsxDEV("span", {
65
+ className: "rounded-full border border-border bg-muted px-3 py-1 text-[11px] text-muted-foreground",
66
+ children: tag
67
+ }, tag, false, undefined, this))
68
+ }, undefined, false, undefined, this)
69
+ ]
70
+ }, undefined, true, undefined, this),
71
+ /* @__PURE__ */ jsxDEV("div", {
72
+ className: "flex gap-2 pt-4",
73
+ children: [
74
+ previewAction,
75
+ useAction
76
+ ]
77
+ }, undefined, true, undefined, this)
78
+ ]
79
+ }, undefined, true, undefined, this);
80
+ }
81
+ export {
82
+ TemplateCard
83
+ };
@@ -0,0 +1,110 @@
1
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
2
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
3
+ }) : x)(function(x) {
4
+ if (typeof require !== "undefined")
5
+ return require.apply(this, arguments);
6
+ throw Error('Dynamic require of "' + x + '" is not supported');
7
+ });
8
+
9
+ // src/components/templates/TemplateCommandDialog.tsx
10
+ import {
11
+ analyticsEventNames,
12
+ captureAnalyticsEvent
13
+ } from "@contractspec/bundle.library/libs/posthog/client";
14
+ import {
15
+ Dialog,
16
+ DialogContent,
17
+ DialogDescription,
18
+ DialogHeader,
19
+ DialogTitle
20
+ } from "@contractspec/lib.ui-kit-web/ui/dialog";
21
+ import { jsxDEV } from "react/jsx-dev-runtime";
22
+ "use client";
23
+ function TemplateCommandDialog({
24
+ templateId,
25
+ onClose,
26
+ onDeployStudio
27
+ }) {
28
+ const command = templateId ? `npx contractspec init --template ${templateId}` : "";
29
+ return /* @__PURE__ */ jsxDEV(Dialog, {
30
+ open: !!templateId,
31
+ onOpenChange: (open) => !open && onClose(),
32
+ children: /* @__PURE__ */ jsxDEV(DialogContent, {
33
+ className: "max-w-md",
34
+ children: [
35
+ /* @__PURE__ */ jsxDEV(DialogHeader, {
36
+ children: [
37
+ /* @__PURE__ */ jsxDEV(DialogTitle, {
38
+ children: "Use this template"
39
+ }, undefined, false, undefined, this),
40
+ /* @__PURE__ */ jsxDEV(DialogDescription, {
41
+ children: "Initialize a new project with this template using the CLI."
42
+ }, undefined, false, undefined, this)
43
+ ]
44
+ }, undefined, true, undefined, this),
45
+ /* @__PURE__ */ jsxDEV("div", {
46
+ className: "space-y-4 pt-4",
47
+ children: [
48
+ /* @__PURE__ */ jsxDEV("div", {
49
+ className: "rounded-md border border-zinc-800 bg-zinc-950 p-4 font-mono text-sm text-zinc-50",
50
+ children: command
51
+ }, undefined, false, undefined, this),
52
+ /* @__PURE__ */ jsxDEV("div", {
53
+ className: "flex gap-2",
54
+ children: /* @__PURE__ */ jsxDEV("button", {
55
+ className: "btn-secondary w-full",
56
+ onClick: () => {
57
+ if (!templateId) {
58
+ return;
59
+ }
60
+ navigator.clipboard.writeText(command);
61
+ captureAnalyticsEvent(analyticsEventNames.COPY_COMMAND_CLICK, {
62
+ surface: "templates",
63
+ templateId,
64
+ filename: "templates-cli"
65
+ });
66
+ },
67
+ children: "Copy Command"
68
+ }, undefined, false, undefined, this)
69
+ }, undefined, false, undefined, this),
70
+ /* @__PURE__ */ jsxDEV("div", {
71
+ className: "relative",
72
+ children: [
73
+ /* @__PURE__ */ jsxDEV("div", {
74
+ className: "absolute inset-0 flex items-center",
75
+ children: /* @__PURE__ */ jsxDEV("span", {
76
+ className: "w-full border-border border-t"
77
+ }, undefined, false, undefined, this)
78
+ }, undefined, false, undefined, this),
79
+ /* @__PURE__ */ jsxDEV("div", {
80
+ className: "relative flex justify-center text-xs uppercase",
81
+ children: /* @__PURE__ */ jsxDEV("span", {
82
+ className: "bg-background px-2 text-muted-foreground",
83
+ children: "Or"
84
+ }, undefined, false, undefined, this)
85
+ }, undefined, false, undefined, this)
86
+ ]
87
+ }, undefined, true, undefined, this),
88
+ /* @__PURE__ */ jsxDEV("button", {
89
+ className: "btn-ghost w-full text-sm",
90
+ onClick: () => {
91
+ if (!templateId) {
92
+ return;
93
+ }
94
+ captureAnalyticsEvent(analyticsEventNames.CTA_STUDIO_CLICK, {
95
+ surface: "templates",
96
+ templateId
97
+ });
98
+ onDeployStudio();
99
+ },
100
+ children: "Deploy to Studio"
101
+ }, undefined, false, undefined, this)
102
+ ]
103
+ }, undefined, true, undefined, this)
104
+ ]
105
+ }, undefined, true, undefined, this)
106
+ }, undefined, false, undefined, this);
107
+ }
108
+ export {
109
+ TemplateCommandDialog
110
+ };
@@ -0,0 +1,96 @@
1
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
2
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
3
+ }) : x)(function(x) {
4
+ if (typeof require !== "undefined")
5
+ return require.apply(this, arguments);
6
+ throw Error('Dynamic require of "' + x + '" is not supported');
7
+ });
8
+
9
+ // src/components/templates/TemplatePreviewContent.tsx
10
+ import {
11
+ TemplateShell
12
+ } from "@contractspec/lib.example-shared-ui";
13
+ import { LoadingSpinner } from "@contractspec/lib.ui-kit-web/ui/atoms/LoadingSpinner";
14
+ import dynamic from "next/dynamic";
15
+ import { jsxDEV } from "react/jsx-dev-runtime";
16
+ "use client";
17
+ var SaasDashboard = dynamic(() => import("@contractspec/example.saas-boilerplate").then((module) => module.SaasDashboard), { ssr: false, loading: () => /* @__PURE__ */ jsxDEV(LoadingSpinner, {}, undefined, false, undefined, this) });
18
+ var CrmDashboard = dynamic(() => import("@contractspec/example.crm-pipeline").then((module) => module.CrmDashboard), { ssr: false, loading: () => /* @__PURE__ */ jsxDEV(LoadingSpinner, {}, undefined, false, undefined, this) });
19
+ var DataGridShowcase = dynamic(() => import("@contractspec/example.data-grid-showcase/ui").then((module) => module.DataGridShowcase), { ssr: false, loading: () => /* @__PURE__ */ jsxDEV(LoadingSpinner, {}, undefined, false, undefined, this) });
20
+ var VisualizationShowcase = dynamic(() => import("@contractspec/example.visualization-showcase/ui").then((module) => module.VisualizationShowcase), { ssr: false, loading: () => /* @__PURE__ */ jsxDEV(LoadingSpinner, {}, undefined, false, undefined, this) });
21
+ var AgentDashboard = dynamic(() => import("@contractspec/example.agent-console/ui").then((module) => module.AgentDashboard), { ssr: false, loading: () => /* @__PURE__ */ jsxDEV(LoadingSpinner, {}, undefined, false, undefined, this) });
22
+ var AiChatAssistantDashboard = dynamic(() => import("@contractspec/example.ai-chat-assistant").then((module) => module.AiChatAssistantDashboard), { ssr: false, loading: () => /* @__PURE__ */ jsxDEV(LoadingSpinner, {}, undefined, false, undefined, this) });
23
+ var WorkflowDashboard = dynamic(() => import("@contractspec/example.workflow-system/ui").then((module) => module.WorkflowDashboard), { ssr: false, loading: () => /* @__PURE__ */ jsxDEV(LoadingSpinner, {}, undefined, false, undefined, this) });
24
+ var MarketplaceDashboard = dynamic(() => import("@contractspec/example.marketplace/ui").then((module) => module.MarketplaceDashboard), { ssr: false, loading: () => /* @__PURE__ */ jsxDEV(LoadingSpinner, {}, undefined, false, undefined, this) });
25
+ var IntegrationDashboard = dynamic(() => import("@contractspec/example.integration-hub/ui").then((module) => module.IntegrationDashboard), { ssr: false, loading: () => /* @__PURE__ */ jsxDEV(LoadingSpinner, {}, undefined, false, undefined, this) });
26
+ var AnalyticsDashboard = dynamic(() => import("@contractspec/example.analytics-dashboard").then((module) => module.AnalyticsDashboard), { ssr: false, loading: () => /* @__PURE__ */ jsxDEV(LoadingSpinner, {}, undefined, false, undefined, this) });
27
+ var PREVIEW_DEFINITIONS = {
28
+ "saas-boilerplate": {
29
+ title: "SaaS Boilerplate",
30
+ description: "Multi-tenant organizations, projects, settings, and billing usage tracking.",
31
+ component: SaasDashboard
32
+ },
33
+ "crm-pipeline": {
34
+ title: "CRM Pipeline",
35
+ description: "Sales CRM with contacts, companies, deals, and pipeline stages.",
36
+ component: CrmDashboard
37
+ },
38
+ "data-grid-showcase": {
39
+ title: "Data Grid Showcase",
40
+ description: "Shared ContractSpec table primitives with client, server, and DataView-driven lanes.",
41
+ component: DataGridShowcase
42
+ },
43
+ "visualization-showcase": {
44
+ title: "Visualization Showcase",
45
+ description: "ContractSpec-owned chart primitives rendered through shared visualization contracts and design-system wrappers.",
46
+ component: VisualizationShowcase
47
+ },
48
+ "agent-console": {
49
+ title: "AI Agent Console",
50
+ description: "AI agent orchestration with tools, agents, runs, and execution logs.",
51
+ component: AgentDashboard
52
+ },
53
+ "ai-chat-assistant": {
54
+ title: "AI Chat Assistant",
55
+ description: "Focused assistant surface with reasoning, sources, suggestions, and MCP-aware tools.",
56
+ component: AiChatAssistantDashboard
57
+ },
58
+ "workflow-system": {
59
+ title: "Workflow System",
60
+ description: "Multi-step workflows with role-based approvals.",
61
+ component: WorkflowDashboard
62
+ },
63
+ marketplace: {
64
+ title: "Marketplace",
65
+ description: "Two-sided marketplace with stores, products, orders, and payouts.",
66
+ component: MarketplaceDashboard
67
+ },
68
+ "integration-hub": {
69
+ title: "Integration Hub",
70
+ description: "Third-party integrations with connections, sync configs, and field mapping.",
71
+ component: IntegrationDashboard
72
+ },
73
+ "analytics-dashboard": {
74
+ title: "Analytics Dashboard",
75
+ description: "Custom dashboards with widgets and queries.",
76
+ component: AnalyticsDashboard
77
+ }
78
+ };
79
+ function TemplatePreviewContent({
80
+ templateId
81
+ }) {
82
+ const preview = PREVIEW_DEFINITIONS[templateId];
83
+ if (!preview) {
84
+ return null;
85
+ }
86
+ const PreviewComponent = preview.component;
87
+ return /* @__PURE__ */ jsxDEV(TemplateShell, {
88
+ title: preview.title,
89
+ description: preview.description,
90
+ showSaveAction: false,
91
+ children: /* @__PURE__ */ jsxDEV(PreviewComponent, {}, undefined, false, undefined, this)
92
+ }, undefined, false, undefined, this);
93
+ }
94
+ export {
95
+ TemplatePreviewContent
96
+ };
@@ -0,0 +1,130 @@
1
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
2
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
3
+ }) : x)(function(x) {
4
+ if (typeof require !== "undefined")
5
+ return require.apply(this, arguments);
6
+ throw Error('Dynamic require of "' + x + '" is not supported');
7
+ });
8
+
9
+ // src/components/templates/TemplatesBrowseControls.tsx
10
+ import { cn } from "@contractspec/lib.ui-kit-core/utils";
11
+ import { Search } from "lucide-react";
12
+ import { jsxDEV } from "react/jsx-dev-runtime";
13
+ "use client";
14
+ function TemplatesBrowseControls({
15
+ registryConfigured,
16
+ availableSources,
17
+ source,
18
+ onSourceChange,
19
+ search,
20
+ onSearchChange,
21
+ selectedTag,
22
+ onTagChange,
23
+ showTagFilters,
24
+ visibleTagFacets,
25
+ hiddenTagFacets,
26
+ showAllTags,
27
+ onShowAllTagsChange
28
+ }) {
29
+ return /* @__PURE__ */ jsxDEV("section", {
30
+ className: "editorial-section",
31
+ children: /* @__PURE__ */ jsxDEV("div", {
32
+ className: "editorial-shell space-y-6",
33
+ children: [
34
+ /* @__PURE__ */ jsxDEV("div", {
35
+ className: "flex flex-col gap-6 lg:flex-row lg:items-end lg:justify-between",
36
+ children: [
37
+ /* @__PURE__ */ jsxDEV("div", {
38
+ className: "max-w-3xl space-y-3",
39
+ children: [
40
+ /* @__PURE__ */ jsxDEV("p", {
41
+ className: "editorial-kicker",
42
+ children: "Browse by source"
43
+ }, undefined, false, undefined, this),
44
+ /* @__PURE__ */ jsxDEV("h2", {
45
+ className: "font-serif text-4xl tracking-[-0.04em]",
46
+ children: "Use local scenarios for core proof, then scan the community."
47
+ }, undefined, false, undefined, this),
48
+ /* @__PURE__ */ jsxDEV("p", {
49
+ className: "text-muted-foreground text-sm leading-7",
50
+ children: registryConfigured ? "Local templates show the official adoption path. Community templates show where the ecosystem is pushing the system next." : "Local templates show the official adoption path. Community browsing appears automatically when a registry URL is configured."
51
+ }, undefined, false, undefined, this)
52
+ ]
53
+ }, undefined, true, undefined, this),
54
+ registryConfigured ? /* @__PURE__ */ jsxDEV("div", {
55
+ className: "flex gap-2",
56
+ children: availableSources.map((option) => /* @__PURE__ */ jsxDEV("button", {
57
+ onClick: () => onSourceChange(option),
58
+ className: cn("rounded-full px-4 py-2 font-medium text-sm transition-colors", {
59
+ "bg-primary text-primary-foreground": source === option,
60
+ "border border-border bg-card hover:bg-card/80": source !== option
61
+ }),
62
+ "aria-pressed": source === option,
63
+ children: option === "local" ? "Local" : "Community"
64
+ }, option, false, undefined, this))
65
+ }, undefined, false, undefined, this) : null
66
+ ]
67
+ }, undefined, true, undefined, this),
68
+ /* @__PURE__ */ jsxDEV("div", {
69
+ className: "editorial-panel space-y-5",
70
+ children: [
71
+ /* @__PURE__ */ jsxDEV("div", {
72
+ className: "relative",
73
+ children: [
74
+ /* @__PURE__ */ jsxDEV(Search, {
75
+ className: "absolute top-3.5 left-4 text-muted-foreground",
76
+ size: 18
77
+ }, undefined, false, undefined, this),
78
+ /* @__PURE__ */ jsxDEV("input", {
79
+ type: "text",
80
+ placeholder: "Search scenarios, industries, or tags",
81
+ value: search,
82
+ onChange: (event) => onSearchChange(event.target.value),
83
+ className: "w-full rounded-full border border-border bg-background px-12 py-3 text-sm focus:outline-none focus:ring-2 focus:ring-ring",
84
+ "aria-label": "Search templates"
85
+ }, undefined, false, undefined, this)
86
+ ]
87
+ }, undefined, true, undefined, this),
88
+ showTagFilters ? /* @__PURE__ */ jsxDEV("div", {
89
+ className: "space-y-3",
90
+ children: [
91
+ /* @__PURE__ */ jsxDEV("div", {
92
+ className: "flex flex-wrap gap-2",
93
+ children: [
94
+ /* @__PURE__ */ jsxDEV("button", {
95
+ onClick: () => onTagChange(null),
96
+ className: cn("rounded-full px-4 py-2 font-medium text-sm transition-colors", {
97
+ "bg-primary text-primary-foreground": selectedTag === null,
98
+ "border border-border bg-card hover:bg-card/80": selectedTag !== null
99
+ }),
100
+ "aria-pressed": selectedTag === null,
101
+ children: "All"
102
+ }, undefined, false, undefined, this),
103
+ visibleTagFacets.map((facet) => /* @__PURE__ */ jsxDEV("button", {
104
+ onClick: () => onTagChange(facet.tag),
105
+ className: cn("rounded-full px-4 py-2 font-medium text-sm transition-colors", {
106
+ "bg-primary text-primary-foreground": selectedTag === facet.tag,
107
+ "border border-border bg-card hover:bg-card/80": selectedTag !== facet.tag
108
+ }),
109
+ "aria-pressed": selectedTag === facet.tag,
110
+ children: facet.tag
111
+ }, facet.tag, false, undefined, this))
112
+ ]
113
+ }, undefined, true, undefined, this),
114
+ hiddenTagFacets.length > 0 || showAllTags ? /* @__PURE__ */ jsxDEV("button", {
115
+ type: "button",
116
+ onClick: () => onShowAllTagsChange(!showAllTags),
117
+ className: "text-muted-foreground text-sm transition-colors hover:text-foreground",
118
+ children: showAllTags ? "Show fewer" : "More tags"
119
+ }, undefined, false, undefined, this) : null
120
+ ]
121
+ }, undefined, true, undefined, this) : null
122
+ ]
123
+ }, undefined, true, undefined, this)
124
+ ]
125
+ }, undefined, true, undefined, this)
126
+ }, undefined, false, undefined, this);
127
+ }
128
+ export {
129
+ TemplatesBrowseControls
130
+ };