@contractspec/bundle.marketing 3.7.6 → 3.8.2

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 (164) hide show
  1. package/.turbo/turbo-build.log +87 -87
  2. package/AGENTS.md +29 -21
  3. package/CHANGELOG.md +59 -0
  4. package/README.md +36 -49
  5. package/dist/browser/components/marketing/ChangelogPage.js +8 -8
  6. package/dist/browser/components/marketing/CofounderPage.js +167 -523
  7. package/dist/browser/components/marketing/ContactClient.js +200 -207
  8. package/dist/browser/components/marketing/ContributePage.js +211 -463
  9. package/dist/browser/components/marketing/DesignPartnerPage.js +165 -218
  10. package/dist/browser/components/marketing/LandingPage.js +464 -568
  11. package/dist/browser/components/marketing/PricingClient.js +213 -839
  12. package/dist/browser/components/marketing/ProductClientPage.js +265 -463
  13. package/dist/browser/components/marketing/index.js +2007 -3338
  14. package/dist/browser/components/marketing/pricing-thinking-modal.js +12 -12
  15. package/dist/browser/components/marketing/sections/AudienceSection.js +2 -2
  16. package/dist/browser/components/marketing/sections/CorePositioningSection.js +2 -2
  17. package/dist/browser/components/marketing/sections/CtaSection.js +3 -3
  18. package/dist/browser/components/marketing/sections/FearsSection.js +3 -3
  19. package/dist/browser/components/marketing/sections/HeroMarketingSection.js +6 -6
  20. package/dist/browser/components/marketing/sections/IconGridSection.js +2 -2
  21. package/dist/browser/components/marketing/sections/OutputsSection.js +2 -2
  22. package/dist/browser/components/marketing/sections/ProblemSection.js +2 -2
  23. package/dist/browser/components/marketing/sections/SolutionSection.js +2 -2
  24. package/dist/browser/components/marketing/sections/StepsSection.js +4 -4
  25. package/dist/browser/components/marketing/studio-signup-section.js +25 -41
  26. package/dist/browser/components/templates/TemplatesClientPage.js +2374 -3571
  27. package/dist/browser/components/templates/TemplatesPage.js +1 -1
  28. package/dist/browser/components/templates/TemplatesPreviewModal.js +27 -3
  29. package/dist/browser/components/templates/index.js +2412 -3609
  30. package/dist/browser/index.js +2415 -3612
  31. package/dist/browser/libs/email/client.js +1 -1
  32. package/dist/browser/libs/email/contact.js +1 -1
  33. package/dist/browser/libs/email/newsletter.js +1 -1
  34. package/dist/browser/libs/email/waitlist-application.js +1 -1
  35. package/dist/browser/libs/email/waitlist.js +1 -1
  36. package/dist/browser/registry/engine.js +2003 -3334
  37. package/dist/browser/registry/index.js +2003 -3334
  38. package/dist/browser/registry/registry-docs.js +2 -2
  39. package/dist/browser/registry/registry-landing.js +2007 -3338
  40. package/dist/browser/registry/registry.js +2003 -3334
  41. package/dist/browser/registry/utils.js +2003 -3334
  42. package/dist/components/marketing/ChangelogPage.js +8 -8
  43. package/dist/components/marketing/CofounderPage.js +167 -523
  44. package/dist/components/marketing/ContactClient.js +200 -207
  45. package/dist/components/marketing/ContributePage.d.ts +0 -2
  46. package/dist/components/marketing/ContributePage.js +211 -463
  47. package/dist/components/marketing/DesignPartnerPage.js +165 -218
  48. package/dist/components/marketing/LandingPage.js +464 -568
  49. package/dist/components/marketing/PricingClient.js +213 -839
  50. package/dist/components/marketing/ProductClientPage.js +265 -463
  51. package/dist/components/marketing/index.d.ts +5 -5
  52. package/dist/components/marketing/index.js +2007 -3338
  53. package/dist/components/marketing/pricing-thinking-modal.js +12 -12
  54. package/dist/components/marketing/sections/AudienceSection.js +2 -2
  55. package/dist/components/marketing/sections/CorePositioningSection.js +2 -2
  56. package/dist/components/marketing/sections/CtaSection.js +3 -3
  57. package/dist/components/marketing/sections/FearsSection.js +3 -3
  58. package/dist/components/marketing/sections/HeroMarketingSection.js +6 -6
  59. package/dist/components/marketing/sections/IconGridSection.d.ts +3 -3
  60. package/dist/components/marketing/sections/IconGridSection.js +2 -2
  61. package/dist/components/marketing/sections/OutputsSection.js +2 -2
  62. package/dist/components/marketing/sections/ProblemSection.js +2 -2
  63. package/dist/components/marketing/sections/SolutionSection.js +2 -2
  64. package/dist/components/marketing/sections/StepsSection.js +4 -4
  65. package/dist/components/marketing/studio-signup-section.js +25 -41
  66. package/dist/components/templates/TemplatesClientPage.js +2374 -3571
  67. package/dist/components/templates/TemplatesPage.js +1 -1
  68. package/dist/components/templates/TemplatesPreviewModal.js +27 -3
  69. package/dist/components/templates/index.js +2412 -3609
  70. package/dist/index.js +2415 -3612
  71. package/dist/libs/email/client.js +1 -1
  72. package/dist/libs/email/contact.js +1 -1
  73. package/dist/libs/email/newsletter.js +1 -1
  74. package/dist/libs/email/waitlist-application.js +1 -1
  75. package/dist/libs/email/waitlist.js +1 -1
  76. package/dist/node/components/marketing/ChangelogPage.js +8 -8
  77. package/dist/node/components/marketing/CofounderPage.js +167 -523
  78. package/dist/node/components/marketing/ContactClient.js +200 -207
  79. package/dist/node/components/marketing/ContributePage.js +211 -463
  80. package/dist/node/components/marketing/DesignPartnerPage.js +165 -218
  81. package/dist/node/components/marketing/LandingPage.js +464 -568
  82. package/dist/node/components/marketing/PricingClient.js +213 -839
  83. package/dist/node/components/marketing/ProductClientPage.js +265 -463
  84. package/dist/node/components/marketing/index.js +2007 -3338
  85. package/dist/node/components/marketing/pricing-thinking-modal.js +12 -12
  86. package/dist/node/components/marketing/sections/AudienceSection.js +2 -2
  87. package/dist/node/components/marketing/sections/CorePositioningSection.js +2 -2
  88. package/dist/node/components/marketing/sections/CtaSection.js +3 -3
  89. package/dist/node/components/marketing/sections/FearsSection.js +3 -3
  90. package/dist/node/components/marketing/sections/HeroMarketingSection.js +6 -6
  91. package/dist/node/components/marketing/sections/IconGridSection.js +2 -2
  92. package/dist/node/components/marketing/sections/OutputsSection.js +2 -2
  93. package/dist/node/components/marketing/sections/ProblemSection.js +2 -2
  94. package/dist/node/components/marketing/sections/SolutionSection.js +2 -2
  95. package/dist/node/components/marketing/sections/StepsSection.js +4 -4
  96. package/dist/node/components/marketing/studio-signup-section.js +25 -41
  97. package/dist/node/components/templates/TemplatesClientPage.js +2374 -3571
  98. package/dist/node/components/templates/TemplatesPage.js +1 -1
  99. package/dist/node/components/templates/TemplatesPreviewModal.js +27 -3
  100. package/dist/node/components/templates/index.js +2412 -3609
  101. package/dist/node/index.js +2415 -3612
  102. package/dist/node/libs/email/client.js +1 -1
  103. package/dist/node/libs/email/contact.js +1 -1
  104. package/dist/node/libs/email/newsletter.js +1 -1
  105. package/dist/node/libs/email/waitlist-application.js +1 -1
  106. package/dist/node/libs/email/waitlist.js +1 -1
  107. package/dist/node/registry/engine.js +2003 -3334
  108. package/dist/node/registry/index.js +2003 -3334
  109. package/dist/node/registry/registry-docs.js +2 -2
  110. package/dist/node/registry/registry-landing.js +2007 -3338
  111. package/dist/node/registry/registry.js +2003 -3334
  112. package/dist/node/registry/utils.js +2003 -3334
  113. package/dist/registry/engine.js +2003 -3334
  114. package/dist/registry/index.js +2003 -3334
  115. package/dist/registry/registry-docs.js +2 -2
  116. package/dist/registry/registry-landing.js +2007 -3338
  117. package/dist/registry/registry.js +2003 -3334
  118. package/dist/registry/utils.js +2003 -3334
  119. package/package.json +31 -29
  120. package/src/bundles/MarketingBundle.ts +273 -273
  121. package/src/components/marketing/ChangelogPage.tsx +72 -100
  122. package/src/components/marketing/CofounderPage.tsx +120 -384
  123. package/src/components/marketing/ContactClient.tsx +164 -154
  124. package/src/components/marketing/ContributePage.tsx +139 -313
  125. package/src/components/marketing/DesignPartnerPage.tsx +133 -171
  126. package/src/components/marketing/LandingPage.tsx +353 -25
  127. package/src/components/marketing/PricingClient.tsx +192 -437
  128. package/src/components/marketing/ProductClientPage.tsx +255 -377
  129. package/src/components/marketing/index.ts +5 -5
  130. package/src/components/marketing/pricing-thinking-modal.tsx +197 -197
  131. package/src/components/marketing/sections/AudienceSection.tsx +55 -56
  132. package/src/components/marketing/sections/CorePositioningSection.tsx +37 -37
  133. package/src/components/marketing/sections/CtaSection.tsx +49 -50
  134. package/src/components/marketing/sections/DevelopersSection.tsx +26 -27
  135. package/src/components/marketing/sections/FearsSection.tsx +36 -37
  136. package/src/components/marketing/sections/HeroMarketingSection.tsx +59 -59
  137. package/src/components/marketing/sections/IconGridSection.tsx +71 -71
  138. package/src/components/marketing/sections/OutputsSection.tsx +51 -52
  139. package/src/components/marketing/sections/ProblemSection.tsx +39 -40
  140. package/src/components/marketing/sections/SolutionSection.tsx +39 -40
  141. package/src/components/marketing/sections/StepsSection.tsx +47 -48
  142. package/src/components/marketing/studio-signup-section.tsx +39 -41
  143. package/src/components/templates/TemplatesClientPage.tsx +763 -685
  144. package/src/components/templates/TemplatesPage.tsx +110 -110
  145. package/src/components/templates/TemplatesPreviewModal.tsx +251 -198
  146. package/src/index.ts +4 -4
  147. package/src/libs/email/client.test.ts +81 -81
  148. package/src/libs/email/client.ts +111 -111
  149. package/src/libs/email/contact.ts +35 -35
  150. package/src/libs/email/newsletter.ts +46 -46
  151. package/src/libs/email/types.ts +29 -29
  152. package/src/libs/email/utils.ts +5 -5
  153. package/src/libs/email/waitlist-application.ts +72 -72
  154. package/src/libs/email/waitlist.ts +46 -46
  155. package/src/libs/pricing-examples.ts +12 -12
  156. package/src/registry/engine.ts +16 -16
  157. package/src/registry/factory.ts +57 -57
  158. package/src/registry/registry-docs.ts +656 -666
  159. package/src/registry/registry-landing.ts +94 -95
  160. package/src/registry/registry.ts +36 -37
  161. package/src/registry/types.ts +2 -2
  162. package/src/registry/utils.ts +56 -56
  163. package/tsconfig.json +11 -11
  164. package/tsdown.config.js +5 -5
@@ -1,105 +1,128 @@
1
1
  'use client';
2
2
 
3
- import { useMemo } from 'react';
4
-
5
- import dynamic from 'next/dynamic';
3
+ import type { TemplateId } from '@contractspec/lib.example-shared-ui';
4
+ import { LoadingSpinner } from '@contractspec/lib.ui-kit-web/ui/atoms/LoadingSpinner';
6
5
  import { Dialog, DialogContent } from '@contractspec/lib.ui-kit-web/ui/dialog';
7
6
  import { ScrollArea } from '@contractspec/lib.ui-kit-web/ui/scroll-area';
8
- import { LoadingSpinner } from '@contractspec/lib.ui-kit-web/ui/atoms/LoadingSpinner';
9
- import type { TemplateId } from '@contractspec/lib.example-shared-ui';
7
+ import dynamic from 'next/dynamic';
8
+ import { useMemo } from 'react';
10
9
 
11
10
  // Dynamically import template components with ssr: false
12
11
  const TemplateShell = dynamic(
13
- () =>
14
- import('@contractspec/lib.example-shared-ui').then(
15
- (mod) => mod.TemplateShell
16
- ),
17
- { ssr: false, loading: () => <LoadingSpinner /> }
12
+ () =>
13
+ import('@contractspec/lib.example-shared-ui').then(
14
+ (mod) => mod.TemplateShell
15
+ ),
16
+ { ssr: false, loading: () => <LoadingSpinner /> }
18
17
  );
19
18
 
20
19
  const TodosTaskList = dynamic(
21
- () =>
22
- import('@contractspec/bundle.library/components/templates/todos/TaskList').then(
23
- (mod) => mod.TaskList
24
- ),
25
- { ssr: false, loading: () => <LoadingSpinner /> }
20
+ () =>
21
+ import(
22
+ '@contractspec/bundle.library/components/templates/todos/TaskList'
23
+ ).then((mod) => mod.TaskList),
24
+ { ssr: false, loading: () => <LoadingSpinner /> }
26
25
  );
27
26
 
28
27
  const MessagingWorkspace = dynamic(
29
- () =>
30
- import('@contractspec/bundle.library/components/templates/messaging/MessagingWorkspace').then(
31
- (mod) => mod.MessagingWorkspace
32
- ),
33
- { ssr: false, loading: () => <LoadingSpinner /> }
28
+ () =>
29
+ import(
30
+ '@contractspec/bundle.library/components/templates/messaging/MessagingWorkspace'
31
+ ).then((mod) => mod.MessagingWorkspace),
32
+ { ssr: false, loading: () => <LoadingSpinner /> }
34
33
  );
35
34
 
36
35
  const RecipesExperience = dynamic(
37
- () =>
38
- import('@contractspec/bundle.library/components/templates/recipes/RecipeList').then(
39
- (mod) => mod.RecipeList
40
- ),
41
- { ssr: false, loading: () => <LoadingSpinner /> }
36
+ () =>
37
+ import(
38
+ '@contractspec/bundle.library/components/templates/recipes/RecipeList'
39
+ ).then((mod) => mod.RecipeList),
40
+ { ssr: false, loading: () => <LoadingSpinner /> }
42
41
  );
43
42
 
44
43
  const SaasDashboard = dynamic(
45
- () =>
46
- import('@contractspec/example.saas-boilerplate').then(
47
- (mod) => mod.SaasDashboard
48
- ),
49
- { ssr: false, loading: () => <LoadingSpinner /> }
44
+ () =>
45
+ import('@contractspec/example.saas-boilerplate').then(
46
+ (mod) => mod.SaasDashboard
47
+ ),
48
+ { ssr: false, loading: () => <LoadingSpinner /> }
50
49
  );
51
50
 
52
51
  const CrmDashboard = dynamic(
53
- () =>
54
- import('@contractspec/example.crm-pipeline').then(
55
- (mod) => mod.CrmDashboard
56
- ),
57
- { ssr: false, loading: () => <LoadingSpinner /> }
52
+ () =>
53
+ import('@contractspec/example.crm-pipeline').then(
54
+ (mod) => mod.CrmDashboard
55
+ ),
56
+ { ssr: false, loading: () => <LoadingSpinner /> }
57
+ );
58
+
59
+ const DataGridShowcase = dynamic(
60
+ () =>
61
+ import('@contractspec/example.data-grid-showcase/ui').then(
62
+ (mod) => mod.DataGridShowcase
63
+ ),
64
+ { ssr: false, loading: () => <LoadingSpinner /> }
65
+ );
66
+
67
+ const VisualizationShowcase = dynamic(
68
+ () =>
69
+ import('@contractspec/example.visualization-showcase/ui').then(
70
+ (mod) => mod.VisualizationShowcase
71
+ ),
72
+ { ssr: false, loading: () => <LoadingSpinner /> }
58
73
  );
59
74
 
60
75
  const AgentDashboard = dynamic(
61
- () =>
62
- import('@contractspec/example.agent-console/ui').then(
63
- (mod) => mod.AgentDashboard
64
- ),
65
- { ssr: false, loading: () => <LoadingSpinner /> }
76
+ () =>
77
+ import('@contractspec/example.agent-console/ui').then(
78
+ (mod) => mod.AgentDashboard
79
+ ),
80
+ { ssr: false, loading: () => <LoadingSpinner /> }
66
81
  );
67
82
 
68
83
  const WorkflowDashboard = dynamic(
69
- () =>
70
- import('@contractspec/example.workflow-system/ui').then(
71
- (mod) => mod.WorkflowDashboard
72
- ),
73
- { ssr: false, loading: () => <LoadingSpinner /> }
84
+ () =>
85
+ import('@contractspec/example.workflow-system/ui').then(
86
+ (mod) => mod.WorkflowDashboard
87
+ ),
88
+ { ssr: false, loading: () => <LoadingSpinner /> }
74
89
  );
75
90
 
76
91
  const MarketplaceDashboard = dynamic(
77
- () =>
78
- import('@contractspec/example.marketplace/ui').then(
79
- (mod) => mod.MarketplaceDashboard
80
- ),
81
- { ssr: false, loading: () => <LoadingSpinner /> }
92
+ () =>
93
+ import('@contractspec/example.marketplace/ui').then(
94
+ (mod) => mod.MarketplaceDashboard
95
+ ),
96
+ { ssr: false, loading: () => <LoadingSpinner /> }
82
97
  );
83
98
 
84
99
  const IntegrationDashboard = dynamic(
85
- () =>
86
- import('@contractspec/example.integration-hub/ui').then(
87
- (mod) => mod.IntegrationDashboard
88
- ),
89
- { ssr: false, loading: () => <LoadingSpinner /> }
100
+ () =>
101
+ import('@contractspec/example.integration-hub/ui').then(
102
+ (mod) => mod.IntegrationDashboard
103
+ ),
104
+ { ssr: false, loading: () => <LoadingSpinner /> }
90
105
  );
91
106
 
92
107
  const AnalyticsDashboard = dynamic(
93
- () =>
94
- import('@contractspec/example.analytics-dashboard').then(
95
- (mod) => mod.AnalyticsDashboard
96
- ),
97
- { ssr: false, loading: () => <LoadingSpinner /> }
108
+ () =>
109
+ import('@contractspec/example.analytics-dashboard').then(
110
+ (mod) => mod.AnalyticsDashboard
111
+ ),
112
+ { ssr: false, loading: () => <LoadingSpinner /> }
113
+ );
114
+
115
+ const AiChatAssistantDashboard = dynamic(
116
+ () =>
117
+ import('@contractspec/example.ai-chat-assistant').then(
118
+ (mod) => mod.AiChatAssistantDashboard
119
+ ),
120
+ { ssr: false, loading: () => <LoadingSpinner /> }
98
121
  );
99
122
 
100
123
  interface TemplatePreviewModalProps {
101
- templateId: TemplateId | null;
102
- onClose: () => void;
124
+ templateId: TemplateId | null;
125
+ onClose: () => void;
103
126
  }
104
127
  //
105
128
  // return (
@@ -119,142 +142,172 @@ interface TemplatePreviewModalProps {
119
142
  // };
120
143
 
121
144
  export const TemplatePreviewModal = ({
122
- templateId,
123
- onClose,
145
+ templateId,
146
+ onClose,
124
147
  }: TemplatePreviewModalProps) => {
125
- const previewComponent = useMemo(() => {
126
- switch (templateId) {
127
- case 'todos-app':
128
- return (
129
- <TemplateShell
130
- title="Starter tasks"
131
- description="Track work items with filters, priorities, and per-tenant data isolation."
132
- showSaveAction={false}
133
- >
134
- <TodosTaskList />
135
- </TemplateShell>
136
- );
137
- case 'messaging-app':
138
- return (
139
- <TemplateShell
140
- title="Messaging workspace"
141
- description="Realtime-ready messaging surface with optimistic delivery."
142
- showSaveAction={false}
143
- >
144
- <MessagingWorkspace />
145
- </TemplateShell>
146
- );
147
- case 'recipe-app-i18n':
148
- return (
149
- <TemplateShell
150
- title="Ceremony recipes"
151
- description="Switch locales and preview how rituals translate across teams."
152
- showSaveAction={false}
153
- >
154
- <RecipesExperience />
155
- </TemplateShell>
156
- );
157
- case 'saas-boilerplate':
158
- return (
159
- <TemplateShell
160
- title="SaaS Boilerplate"
161
- description="Multi-tenant organizations, projects, settings, and billing usage tracking."
162
- showSaveAction={false}
163
- >
164
- <SaasDashboard />
165
- </TemplateShell>
166
- );
167
- case 'crm-pipeline':
168
- return (
169
- <TemplateShell
170
- title="CRM Pipeline"
171
- description="Sales CRM with contacts, companies, deals, and pipeline stages."
172
- showSaveAction={false}
173
- >
174
- <CrmDashboard />
175
- </TemplateShell>
176
- );
177
- case 'agent-console':
178
- return (
179
- <TemplateShell
180
- title="AI Agent Console"
181
- description="AI agent orchestration with tools, agents, runs, and execution logs."
182
- showSaveAction={false}
183
- >
184
- <AgentDashboard />
185
- </TemplateShell>
186
- );
187
- case 'workflow-system':
188
- return (
189
- <TemplateShell
190
- title="Workflow System"
191
- description="Multi-step workflows with role-based approvals."
192
- showSaveAction={false}
193
- >
194
- <WorkflowDashboard />
195
- </TemplateShell>
196
- );
197
- case 'marketplace':
198
- return (
199
- <TemplateShell
200
- title="Marketplace"
201
- description="Two-sided marketplace with stores, products, and orders."
202
- showSaveAction={false}
203
- >
204
- <MarketplaceDashboard />
205
- </TemplateShell>
206
- );
207
- case 'integration-hub':
208
- return (
209
- <TemplateShell
210
- title="Integration Hub"
211
- description="Third-party integrations with sync and field mapping."
212
- showSaveAction={false}
213
- >
214
- <IntegrationDashboard />
215
- </TemplateShell>
216
- );
217
- case 'analytics-dashboard':
218
- return (
219
- <TemplateShell
220
- title="Analytics Dashboard"
221
- description="Custom dashboards with widgets and queries."
222
- showSaveAction={false}
223
- >
224
- <AnalyticsDashboard />
225
- </TemplateShell>
226
- );
227
- case null:
228
- return null;
229
- default:
230
- return null;
231
- }
232
- }, [templateId]);
148
+ const previewComponent = useMemo(() => {
149
+ switch (templateId) {
150
+ case 'todos-app':
151
+ return (
152
+ <TemplateShell
153
+ title="Starter tasks"
154
+ description="Track work items with filters, priorities, and per-tenant data isolation."
155
+ showSaveAction={false}
156
+ >
157
+ <TodosTaskList />
158
+ </TemplateShell>
159
+ );
160
+ case 'messaging-app':
161
+ return (
162
+ <TemplateShell
163
+ title="Messaging workspace"
164
+ description="Realtime-ready messaging surface with optimistic delivery."
165
+ showSaveAction={false}
166
+ >
167
+ <MessagingWorkspace />
168
+ </TemplateShell>
169
+ );
170
+ case 'recipe-app-i18n':
171
+ return (
172
+ <TemplateShell
173
+ title="Ceremony recipes"
174
+ description="Switch locales and preview how rituals translate across teams."
175
+ showSaveAction={false}
176
+ >
177
+ <RecipesExperience />
178
+ </TemplateShell>
179
+ );
180
+ case 'saas-boilerplate':
181
+ return (
182
+ <TemplateShell
183
+ title="SaaS Boilerplate"
184
+ description="Multi-tenant organizations, projects, settings, and billing usage tracking."
185
+ showSaveAction={false}
186
+ >
187
+ <SaasDashboard />
188
+ </TemplateShell>
189
+ );
190
+ case 'crm-pipeline':
191
+ return (
192
+ <TemplateShell
193
+ title="CRM Pipeline"
194
+ description="Sales CRM with contacts, companies, deals, and pipeline stages."
195
+ showSaveAction={false}
196
+ >
197
+ <CrmDashboard />
198
+ </TemplateShell>
199
+ );
200
+ case 'data-grid-showcase':
201
+ return (
202
+ <TemplateShell
203
+ title="Data Grid Showcase"
204
+ description="Shared ContractSpec table primitives with client, server, and DataView-driven lanes."
205
+ showSaveAction={false}
206
+ >
207
+ <DataGridShowcase />
208
+ </TemplateShell>
209
+ );
210
+ case 'visualization-showcase':
211
+ return (
212
+ <TemplateShell
213
+ title="Visualization Showcase"
214
+ description="ContractSpec-owned chart primitives rendered through shared visualization contracts and design-system wrappers."
215
+ showSaveAction={false}
216
+ >
217
+ <VisualizationShowcase />
218
+ </TemplateShell>
219
+ );
220
+ case 'agent-console':
221
+ return (
222
+ <TemplateShell
223
+ title="AI Agent Console"
224
+ description="AI agent orchestration with tools, agents, runs, and execution logs."
225
+ showSaveAction={false}
226
+ >
227
+ <AgentDashboard />
228
+ </TemplateShell>
229
+ );
230
+ case 'ai-chat-assistant':
231
+ return (
232
+ <TemplateShell
233
+ title="AI Chat Assistant"
234
+ description="Focused assistant surface with reasoning, sources, suggestions, and MCP-aware tools."
235
+ showSaveAction={false}
236
+ >
237
+ <AiChatAssistantDashboard />
238
+ </TemplateShell>
239
+ );
240
+ case 'workflow-system':
241
+ return (
242
+ <TemplateShell
243
+ title="Workflow System"
244
+ description="Multi-step workflows with role-based approvals."
245
+ showSaveAction={false}
246
+ >
247
+ <WorkflowDashboard />
248
+ </TemplateShell>
249
+ );
250
+ case 'marketplace':
251
+ return (
252
+ <TemplateShell
253
+ title="Marketplace"
254
+ description="Two-sided marketplace with stores, products, and orders."
255
+ showSaveAction={false}
256
+ >
257
+ <MarketplaceDashboard />
258
+ </TemplateShell>
259
+ );
260
+ case 'integration-hub':
261
+ return (
262
+ <TemplateShell
263
+ title="Integration Hub"
264
+ description="Third-party integrations with sync and field mapping."
265
+ showSaveAction={false}
266
+ >
267
+ <IntegrationDashboard />
268
+ </TemplateShell>
269
+ );
270
+ case 'analytics-dashboard':
271
+ return (
272
+ <TemplateShell
273
+ title="Analytics Dashboard"
274
+ description="Custom dashboards with widgets and queries."
275
+ showSaveAction={false}
276
+ >
277
+ <AnalyticsDashboard />
278
+ </TemplateShell>
279
+ );
280
+ case null:
281
+ return null;
282
+ default:
283
+ return null;
284
+ }
285
+ }, [templateId]);
233
286
 
234
- return (
235
- <Dialog open={!!previewComponent} onOpenChange={onClose}>
236
- {/*<DialogTrigger asChild>*/}
237
- {/* <Button variant="outline">Fullscreen Dialog</Button>*/}
238
- {/*</DialogTrigger>*/}
239
- <DialogContent className="mb-8 flex h-[calc(100vh-2rem)] min-w-[calc(100vw-2rem)] flex-col justify-between gap-0 p-0">
240
- <ScrollArea className="flex flex-col justify-between overflow-hidden">
241
- {/*<DialogHeader className="contents space-y-0 text-left">*/}
242
- {/* <DialogTitle className="px-6 pt-6">Product Information</DialogTitle>*/}
243
- {/* <DialogDescription asChild>*/}
244
- {/* </DialogDescription>*/}
245
- {/*</DialogHeader>*/}
246
- {previewComponent}
247
- </ScrollArea>
248
- {/*<DialogFooter className="px-6 pb-6 sm:justify-end">*/}
249
- {/* <DialogClose asChild>*/}
250
- {/* <Button variant="outline">*/}
251
- {/* <ChevronLeftIcon />*/}
252
- {/* Back*/}
253
- {/* </Button>*/}
254
- {/* </DialogClose>*/}
255
- {/* <Button type="button">Read More</Button>*/}
256
- {/*</DialogFooter>*/}
257
- </DialogContent>
258
- </Dialog>
259
- );
287
+ return (
288
+ <Dialog open={!!previewComponent} onOpenChange={onClose}>
289
+ {/*<DialogTrigger asChild>*/}
290
+ {/* <Button variant="outline">Fullscreen Dialog</Button>*/}
291
+ {/*</DialogTrigger>*/}
292
+ <DialogContent className="mb-8 flex h-[calc(100vh-2rem)] min-w-[calc(100vw-2rem)] flex-col justify-between gap-0 p-0">
293
+ <ScrollArea className="flex flex-col justify-between overflow-hidden">
294
+ {/*<DialogHeader className="contents space-y-0 text-left">*/}
295
+ {/* <DialogTitle className="px-6 pt-6">Product Information</DialogTitle>*/}
296
+ {/* <DialogDescription asChild>*/}
297
+ {/* </DialogDescription>*/}
298
+ {/*</DialogHeader>*/}
299
+ {previewComponent}
300
+ </ScrollArea>
301
+ {/*<DialogFooter className="px-6 pb-6 sm:justify-end">*/}
302
+ {/* <DialogClose asChild>*/}
303
+ {/* <Button variant="outline">*/}
304
+ {/* <ChevronLeftIcon />*/}
305
+ {/* Back*/}
306
+ {/* </Button>*/}
307
+ {/* </DialogClose>*/}
308
+ {/* <Button type="button">Read More</Button>*/}
309
+ {/*</DialogFooter>*/}
310
+ </DialogContent>
311
+ </Dialog>
312
+ );
260
313
  };
package/src/index.ts CHANGED
@@ -4,10 +4,10 @@ export * from './components/templates';
4
4
  export { submitContactForm } from './libs/email/contact';
5
5
  export { subscribeToNewsletter } from './libs/email/newsletter';
6
6
  export type {
7
- SubmitContactFormResult,
8
- SubmitNewsletterResult,
9
- SubmitWaitlistApplicationResult,
10
- SubmitWaitlistResult,
7
+ SubmitContactFormResult,
8
+ SubmitNewsletterResult,
9
+ SubmitWaitlistApplicationResult,
10
+ SubmitWaitlistResult,
11
11
  } from './libs/email/types';
12
12
  export { joinWaitlist } from './libs/email/waitlist';
13
13
  export { submitWaitlistApplication } from './libs/email/waitlist-application';