@contractspec/bundle.marketing 1.12.0
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$colon$types.log +1 -0
- package/.turbo/turbo-build.log +175 -0
- package/.turbo/turbo-lint.log +3 -0
- package/AGENTS.md +36 -0
- package/CHANGELOG.md +416 -0
- package/README.md +57 -0
- package/dist/components/marketing/ChangelogPage.d.ts +21 -0
- package/dist/components/marketing/ChangelogPage.d.ts.map +1 -0
- package/dist/components/marketing/ChangelogPage.js +65 -0
- package/dist/components/marketing/ChangelogPage.js.map +1 -0
- package/dist/components/marketing/CofounderPage.d.ts +7 -0
- package/dist/components/marketing/CofounderPage.d.ts.map +1 -0
- package/dist/components/marketing/CofounderPage.js +468 -0
- package/dist/components/marketing/CofounderPage.js.map +1 -0
- package/dist/components/marketing/ContactClient.d.ts +7 -0
- package/dist/components/marketing/ContactClient.d.ts.map +1 -0
- package/dist/components/marketing/ContactClient.js +158 -0
- package/dist/components/marketing/ContactClient.js.map +1 -0
- package/dist/components/marketing/ContributePage.d.ts +9 -0
- package/dist/components/marketing/ContributePage.d.ts.map +1 -0
- package/dist/components/marketing/ContributePage.js +362 -0
- package/dist/components/marketing/ContributePage.js.map +1 -0
- package/dist/components/marketing/DesignPartnerPage.d.ts +9 -0
- package/dist/components/marketing/DesignPartnerPage.d.ts.map +1 -0
- package/dist/components/marketing/DesignPartnerPage.js +215 -0
- package/dist/components/marketing/DesignPartnerPage.js.map +1 -0
- package/dist/components/marketing/LandingPage.d.ts +7 -0
- package/dist/components/marketing/LandingPage.d.ts.map +1 -0
- package/dist/components/marketing/LandingPage.js +38 -0
- package/dist/components/marketing/LandingPage.js.map +1 -0
- package/dist/components/marketing/PricingClient.d.ts +7 -0
- package/dist/components/marketing/PricingClient.d.ts.map +1 -0
- package/dist/components/marketing/PricingClient.js +521 -0
- package/dist/components/marketing/PricingClient.js.map +1 -0
- package/dist/components/marketing/ProductClientPage.d.ts +7 -0
- package/dist/components/marketing/ProductClientPage.d.ts.map +1 -0
- package/dist/components/marketing/ProductClientPage.js +460 -0
- package/dist/components/marketing/ProductClientPage.js.map +1 -0
- package/dist/components/marketing/index.d.ts +11 -0
- package/dist/components/marketing/index.js +12 -0
- package/dist/components/marketing/pricing-thinking-modal.d.ts +16 -0
- package/dist/components/marketing/pricing-thinking-modal.d.ts.map +1 -0
- package/dist/components/marketing/pricing-thinking-modal.js +202 -0
- package/dist/components/marketing/pricing-thinking-modal.js.map +1 -0
- package/dist/components/marketing/sections/AudienceSection.d.ts +7 -0
- package/dist/components/marketing/sections/AudienceSection.d.ts.map +1 -0
- package/dist/components/marketing/sections/AudienceSection.js +68 -0
- package/dist/components/marketing/sections/AudienceSection.js.map +1 -0
- package/dist/components/marketing/sections/CorePositioningSection.d.ts +7 -0
- package/dist/components/marketing/sections/CorePositioningSection.d.ts.map +1 -0
- package/dist/components/marketing/sections/CorePositioningSection.js +59 -0
- package/dist/components/marketing/sections/CorePositioningSection.js.map +1 -0
- package/dist/components/marketing/sections/CtaSection.d.ts +7 -0
- package/dist/components/marketing/sections/CtaSection.d.ts.map +1 -0
- package/dist/components/marketing/sections/CtaSection.js +54 -0
- package/dist/components/marketing/sections/CtaSection.js.map +1 -0
- package/dist/components/marketing/sections/DevelopersSection.d.ts +7 -0
- package/dist/components/marketing/sections/DevelopersSection.d.ts.map +1 -0
- package/dist/components/marketing/sections/DevelopersSection.js +45 -0
- package/dist/components/marketing/sections/DevelopersSection.js.map +1 -0
- package/dist/components/marketing/sections/FearsSection.d.ts +7 -0
- package/dist/components/marketing/sections/FearsSection.d.ts.map +1 -0
- package/dist/components/marketing/sections/FearsSection.js +48 -0
- package/dist/components/marketing/sections/FearsSection.js.map +1 -0
- package/dist/components/marketing/sections/HeroMarketingSection.d.ts +7 -0
- package/dist/components/marketing/sections/HeroMarketingSection.d.ts.map +1 -0
- package/dist/components/marketing/sections/HeroMarketingSection.js +77 -0
- package/dist/components/marketing/sections/HeroMarketingSection.js.map +1 -0
- package/dist/components/marketing/sections/IconGridSection.d.ts +45 -0
- package/dist/components/marketing/sections/IconGridSection.d.ts.map +1 -0
- package/dist/components/marketing/sections/IconGridSection.js +44 -0
- package/dist/components/marketing/sections/IconGridSection.js.map +1 -0
- package/dist/components/marketing/sections/OutputsSection.d.ts +7 -0
- package/dist/components/marketing/sections/OutputsSection.d.ts.map +1 -0
- package/dist/components/marketing/sections/OutputsSection.js +59 -0
- package/dist/components/marketing/sections/OutputsSection.js.map +1 -0
- package/dist/components/marketing/sections/ProblemSection.d.ts +7 -0
- package/dist/components/marketing/sections/ProblemSection.d.ts.map +1 -0
- package/dist/components/marketing/sections/ProblemSection.js +46 -0
- package/dist/components/marketing/sections/ProblemSection.js.map +1 -0
- package/dist/components/marketing/sections/SolutionSection.d.ts +7 -0
- package/dist/components/marketing/sections/SolutionSection.d.ts.map +1 -0
- package/dist/components/marketing/sections/SolutionSection.js +46 -0
- package/dist/components/marketing/sections/SolutionSection.js.map +1 -0
- package/dist/components/marketing/sections/StepsSection.d.ts +7 -0
- package/dist/components/marketing/sections/StepsSection.d.ts.map +1 -0
- package/dist/components/marketing/sections/StepsSection.js +52 -0
- package/dist/components/marketing/sections/StepsSection.js.map +1 -0
- package/dist/components/marketing/waitlist-section.d.ts +15 -0
- package/dist/components/marketing/waitlist-section.d.ts.map +1 -0
- package/dist/components/marketing/waitlist-section.js +578 -0
- package/dist/components/marketing/waitlist-section.js.map +1 -0
- package/dist/components/templates/TemplatesClientPage.d.ts +7 -0
- package/dist/components/templates/TemplatesClientPage.d.ts.map +1 -0
- package/dist/components/templates/TemplatesClientPage.js +625 -0
- package/dist/components/templates/TemplatesClientPage.js.map +1 -0
- package/dist/components/templates/TemplatesPage.d.ts +7 -0
- package/dist/components/templates/TemplatesPage.d.ts.map +1 -0
- package/dist/components/templates/TemplatesPage.js +125 -0
- package/dist/components/templates/TemplatesPage.js.map +1 -0
- package/dist/components/templates/TemplatesPreviewModal.d.ts +15 -0
- package/dist/components/templates/TemplatesPreviewModal.d.ts.map +1 -0
- package/dist/components/templates/TemplatesPreviewModal.js +137 -0
- package/dist/components/templates/TemplatesPreviewModal.js.map +1 -0
- package/dist/components/templates/index.d.ts +4 -0
- package/dist/components/templates/index.js +5 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.js +28 -0
- package/dist/libs/email/client.d.ts +15 -0
- package/dist/libs/email/client.d.ts.map +1 -0
- package/dist/libs/email/client.js +113 -0
- package/dist/libs/email/client.js.map +1 -0
- package/dist/libs/email/contact.d.ts +7 -0
- package/dist/libs/email/contact.d.ts.map +1 -0
- package/dist/libs/email/contact.js +71 -0
- package/dist/libs/email/contact.js.map +1 -0
- package/dist/libs/email/newsletter.d.ts +7 -0
- package/dist/libs/email/newsletter.d.ts.map +1 -0
- package/dist/libs/email/newsletter.js +95 -0
- package/dist/libs/email/newsletter.js.map +1 -0
- package/dist/libs/email/types.d.ts +53 -0
- package/dist/libs/email/types.d.ts.map +1 -0
- package/dist/libs/email/types.js +1 -0
- package/dist/libs/email/utils.d.ts +6 -0
- package/dist/libs/email/utils.d.ts.map +1 -0
- package/dist/libs/email/utils.js +7 -0
- package/dist/libs/email/utils.js.map +1 -0
- package/dist/libs/email/waitlist-application.d.ts +7 -0
- package/dist/libs/email/waitlist-application.d.ts.map +1 -0
- package/dist/libs/email/waitlist-application.js +170 -0
- package/dist/libs/email/waitlist-application.js.map +1 -0
- package/dist/libs/email/waitlist.d.ts +7 -0
- package/dist/libs/email/waitlist.d.ts.map +1 -0
- package/dist/libs/email/waitlist.js +105 -0
- package/dist/libs/email/waitlist.js.map +1 -0
- package/dist/libs/pricing-examples.d.ts +22 -0
- package/dist/libs/pricing-examples.d.ts.map +1 -0
- package/dist/libs/pricing-examples.js +21 -0
- package/dist/libs/pricing-examples.js.map +1 -0
- package/dist/registry/engine.d.ts +17 -0
- package/dist/registry/engine.d.ts.map +1 -0
- package/dist/registry/engine.js +24 -0
- package/dist/registry/engine.js.map +1 -0
- package/dist/registry/factory.d.ts +64 -0
- package/dist/registry/factory.d.ts.map +1 -0
- package/dist/registry/factory.js +61 -0
- package/dist/registry/factory.js.map +1 -0
- package/dist/registry/index.d.ts +8 -0
- package/dist/registry/index.js +8 -0
- package/dist/registry/registry-docs.d.ts +15 -0
- package/dist/registry/registry-docs.d.ts.map +1 -0
- package/dist/registry/registry-docs.js +305 -0
- package/dist/registry/registry-docs.js.map +1 -0
- package/dist/registry/registry-landing.d.ts +19 -0
- package/dist/registry/registry-landing.d.ts.map +1 -0
- package/dist/registry/registry-landing.js +95 -0
- package/dist/registry/registry-landing.js.map +1 -0
- package/dist/registry/registry.d.ts +30 -0
- package/dist/registry/registry.d.ts.map +1 -0
- package/dist/registry/registry.js +61 -0
- package/dist/registry/registry.js.map +1 -0
- package/dist/registry/types.d.ts +19 -0
- package/dist/registry/types.d.ts.map +1 -0
- package/dist/registry/types.js +0 -0
- package/dist/registry/utils.d.ts +31 -0
- package/dist/registry/utils.d.ts.map +1 -0
- package/dist/registry/utils.js +54 -0
- package/dist/registry/utils.js.map +1 -0
- package/package.json +151 -0
- package/src/components/marketing/ChangelogPage.tsx +110 -0
- package/src/components/marketing/CofounderPage.tsx +409 -0
- package/src/components/marketing/ContactClient.tsx +174 -0
- package/src/components/marketing/ContributePage.tsx +319 -0
- package/src/components/marketing/DesignPartnerPage.tsx +181 -0
- package/src/components/marketing/LandingPage.tsx +30 -0
- package/src/components/marketing/PricingClient.tsx +446 -0
- package/src/components/marketing/ProductClientPage.tsx +391 -0
- package/src/components/marketing/index.ts +10 -0
- package/src/components/marketing/pricing-thinking-modal.tsx +224 -0
- package/src/components/marketing/sections/AudienceSection.tsx +66 -0
- package/src/components/marketing/sections/CorePositioningSection.tsx +44 -0
- package/src/components/marketing/sections/CtaSection.tsx +57 -0
- package/src/components/marketing/sections/DevelopersSection.tsx +38 -0
- package/src/components/marketing/sections/FearsSection.tsx +45 -0
- package/src/components/marketing/sections/HeroMarketingSection.tsx +73 -0
- package/src/components/marketing/sections/IconGridSection.tsx +91 -0
- package/src/components/marketing/sections/OutputsSection.tsx +59 -0
- package/src/components/marketing/sections/ProblemSection.tsx +47 -0
- package/src/components/marketing/sections/SolutionSection.tsx +47 -0
- package/src/components/marketing/sections/StepsSection.tsx +55 -0
- package/src/components/marketing/waitlist-section.tsx +606 -0
- package/src/components/templates/TemplatesClientPage.tsx +711 -0
- package/src/components/templates/TemplatesPage.tsx +129 -0
- package/src/components/templates/TemplatesPreviewModal.tsx +260 -0
- package/src/components/templates/index.ts +3 -0
- package/src/index.ts +15 -0
- package/src/libs/email/client.test.ts +107 -0
- package/src/libs/email/client.ts +146 -0
- package/src/libs/email/contact.ts +80 -0
- package/src/libs/email/newsletter.ts +108 -0
- package/src/libs/email/types.ts +59 -0
- package/src/libs/email/utils.ts +8 -0
- package/src/libs/email/waitlist-application.ts +192 -0
- package/src/libs/email/waitlist.ts +118 -0
- package/src/libs/pricing-examples.ts +19 -0
- package/src/registry/engine.ts +38 -0
- package/src/registry/factory.ts +110 -0
- package/src/registry/index.ts +7 -0
- package/src/registry/registry-docs.ts +843 -0
- package/src/registry/registry-landing.ts +118 -0
- package/src/registry/registry.ts +85 -0
- package/src/registry/types.ts +17 -0
- package/src/registry/utils.ts +99 -0
- package/tsconfig.json +13 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/tsdown.config.js +10 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waitlist.d.ts","names":[],"sources":["../../../src/libs/email/waitlist.ts"],"mappings":";;;cAWa,YAAA,GACX,QAAA,EAAU,QAAA,KACT,OAAA,CAAQ,oBAAA"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
'use server';
|
|
2
|
+
|
|
3
|
+
import { getEmailConfig, sendEmail } from "./client.js";
|
|
4
|
+
import { formatMultilineHtml } from "./utils.js";
|
|
5
|
+
|
|
6
|
+
//#region src/libs/email/waitlist.ts
|
|
7
|
+
const WAITLIST_MISSING_CONFIG = "Waitlist service is not configured. Please try again later.";
|
|
8
|
+
const WAITLIST_SEND_ERROR = "Failed to join waitlist. Please try again later or contact us directly.";
|
|
9
|
+
const joinWaitlist = async (formData) => {
|
|
10
|
+
const email = (formData.get("email") ?? "").toString().trim();
|
|
11
|
+
if (!email || !email.includes("@")) return {
|
|
12
|
+
success: false,
|
|
13
|
+
text: "Please enter a valid email address."
|
|
14
|
+
};
|
|
15
|
+
const configResult = getEmailConfig();
|
|
16
|
+
if (!configResult.ok || !configResult.config) return {
|
|
17
|
+
success: false,
|
|
18
|
+
text: configResult.errorMessage ?? WAITLIST_MISSING_CONFIG
|
|
19
|
+
};
|
|
20
|
+
const waitlistText = `
|
|
21
|
+
You're on the waitlist!
|
|
22
|
+
|
|
23
|
+
Thanks for joining the ContractSpec waitlist. You're now in line for early access to:
|
|
24
|
+
|
|
25
|
+
• Stabilize your AI-generated code with ContractSpec
|
|
26
|
+
• Multi-surface consistency (API, DB, UI, events)
|
|
27
|
+
• Safe regeneration without breaking changes
|
|
28
|
+
• AI governance and contract enforcement
|
|
29
|
+
|
|
30
|
+
We'll notify you as soon as early access is available. In the meantime, you can:
|
|
31
|
+
|
|
32
|
+
• Check out our docs: https://contractspec.io/docs
|
|
33
|
+
• Follow our progress on GitHub
|
|
34
|
+
• Book a demo call to see ContractSpec in action
|
|
35
|
+
|
|
36
|
+
We're excited to have you on board!
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
ContractSpec Team
|
|
40
|
+
https://contractspec.io
|
|
41
|
+
|
|
42
|
+
To remove yourself from the waitlist, reply to this email with "remove"
|
|
43
|
+
`.trim();
|
|
44
|
+
if (!(await sendEmail(configResult.config, {
|
|
45
|
+
to: [{ email }],
|
|
46
|
+
subject: "You're on the ContractSpec waitlist!",
|
|
47
|
+
text: waitlistText,
|
|
48
|
+
html: `
|
|
49
|
+
<div style="font-family: sans-serif; max-width: 640px; margin: 0 auto;">
|
|
50
|
+
<h1 style="color: #8b5cf6;">You're on the waitlist!</h1>
|
|
51
|
+
<p>Thanks for joining the ContractSpec waitlist. You're now in line for early access to:</p>
|
|
52
|
+
<ul style="line-height: 1.8;">
|
|
53
|
+
<li>Stabilize your AI-generated code with ContractSpec</li>
|
|
54
|
+
<li>Multi-surface consistency (API, DB, UI, events)</li>
|
|
55
|
+
<li>Safe regeneration without breaking changes</li>
|
|
56
|
+
<li>AI governance and contract enforcement</li>
|
|
57
|
+
</ul>
|
|
58
|
+
<p>We'll notify you as soon as early access is available. In the meantime, you can:</p>
|
|
59
|
+
<ul style="line-height: 1.8;">
|
|
60
|
+
<li>Check out our <a href="https://contractspec.io/docs" style="color: #8b5cf6;">docs</a></li>
|
|
61
|
+
<li>Follow our progress on GitHub</li>
|
|
62
|
+
<li>Book a demo call to see ContractSpec in action</li>
|
|
63
|
+
</ul>
|
|
64
|
+
<p>We're excited to have you on board!</p>
|
|
65
|
+
<hr style="margin: 30px 0; border: none; border-top: 1px solid #e5e7eb;" />
|
|
66
|
+
<p style="color: #6b7280; font-size: 14px;">
|
|
67
|
+
ContractSpec Team<br />
|
|
68
|
+
<a href="https://contractspec.io" style="color: #8b5cf6;">contractspec.io</a>
|
|
69
|
+
</p>
|
|
70
|
+
<p style="color: #9ca3af; font-size: 12px;">
|
|
71
|
+
To remove yourself from the waitlist, reply to this email with "remove"
|
|
72
|
+
</p>
|
|
73
|
+
</div>
|
|
74
|
+
`,
|
|
75
|
+
context: "waitlist-welcome"
|
|
76
|
+
})).success) return {
|
|
77
|
+
success: false,
|
|
78
|
+
text: WAITLIST_SEND_ERROR
|
|
79
|
+
};
|
|
80
|
+
const teamNotificationText = `New waitlist signup from: ${email}`;
|
|
81
|
+
const teamNotificationHtml = `
|
|
82
|
+
<div style="font-family: sans-serif; max-width: 640px; margin: 0 auto;">
|
|
83
|
+
<p style="margin: 0 0 8px;">New waitlist signup</p>
|
|
84
|
+
<p style="margin: 0;"><strong>Email:</strong> ${formatMultilineHtml(email)}</p>
|
|
85
|
+
</div>
|
|
86
|
+
`;
|
|
87
|
+
if (!(await sendEmail(configResult.config, {
|
|
88
|
+
to: [configResult.config.teamInbox],
|
|
89
|
+
subject: `New Waitlist Signup: ${email}`,
|
|
90
|
+
text: teamNotificationText,
|
|
91
|
+
html: teamNotificationHtml,
|
|
92
|
+
context: "waitlist-team-notification"
|
|
93
|
+
})).success) return {
|
|
94
|
+
success: false,
|
|
95
|
+
text: WAITLIST_SEND_ERROR
|
|
96
|
+
};
|
|
97
|
+
return {
|
|
98
|
+
success: true,
|
|
99
|
+
text: "Successfully joined waitlist!"
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
//#endregion
|
|
104
|
+
export { joinWaitlist };
|
|
105
|
+
//# sourceMappingURL=waitlist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waitlist.js","names":[],"sources":["../../../src/libs/email/waitlist.ts"],"sourcesContent":["'use server';\n\nimport { getEmailConfig, sendEmail } from './client';\nimport { formatMultilineHtml } from './utils';\nimport type { SubmitWaitlistResult } from './types';\n\nconst WAITLIST_MISSING_CONFIG =\n 'Waitlist service is not configured. Please try again later.';\nconst WAITLIST_SEND_ERROR =\n 'Failed to join waitlist. Please try again later or contact us directly.';\n\nexport const joinWaitlist = async (\n formData: FormData\n): Promise<SubmitWaitlistResult> => {\n const email = (formData.get('email') ?? '').toString().trim();\n\n if (!email || !email.includes('@')) {\n return {\n success: false,\n text: 'Please enter a valid email address.',\n };\n }\n\n const configResult = getEmailConfig();\n if (!configResult.ok || !configResult.config) {\n return {\n success: false,\n text: configResult.errorMessage ?? WAITLIST_MISSING_CONFIG,\n };\n }\n\n const waitlistText = `\nYou're on the waitlist!\n\nThanks for joining the ContractSpec waitlist. You're now in line for early access to:\n\n• Stabilize your AI-generated code with ContractSpec\n• Multi-surface consistency (API, DB, UI, events)\n• Safe regeneration without breaking changes\n• AI governance and contract enforcement\n\nWe'll notify you as soon as early access is available. In the meantime, you can:\n\n• Check out our docs: https://contractspec.io/docs\n• Follow our progress on GitHub\n• Book a demo call to see ContractSpec in action\n\nWe're excited to have you on board!\n\n---\nContractSpec Team\nhttps://contractspec.io\n\nTo remove yourself from the waitlist, reply to this email with \"remove\"\n `.trim();\n\n const waitlistHtml = `\n <div style=\"font-family: sans-serif; max-width: 640px; margin: 0 auto;\">\n <h1 style=\"color: #8b5cf6;\">You're on the waitlist!</h1>\n <p>Thanks for joining the ContractSpec waitlist. You're now in line for early access to:</p>\n <ul style=\"line-height: 1.8;\">\n <li>Stabilize your AI-generated code with ContractSpec</li>\n <li>Multi-surface consistency (API, DB, UI, events)</li>\n <li>Safe regeneration without breaking changes</li>\n <li>AI governance and contract enforcement</li>\n </ul>\n <p>We'll notify you as soon as early access is available. In the meantime, you can:</p>\n <ul style=\"line-height: 1.8;\">\n <li>Check out our <a href=\"https://contractspec.io/docs\" style=\"color: #8b5cf6;\">docs</a></li>\n <li>Follow our progress on GitHub</li>\n <li>Book a demo call to see ContractSpec in action</li>\n </ul>\n <p>We're excited to have you on board!</p>\n <hr style=\"margin: 30px 0; border: none; border-top: 1px solid #e5e7eb;\" />\n <p style=\"color: #6b7280; font-size: 14px;\">\n ContractSpec Team<br />\n <a href=\"https://contractspec.io\" style=\"color: #8b5cf6;\">contractspec.io</a>\n </p>\n <p style=\"color: #9ca3af; font-size: 12px;\">\n To remove yourself from the waitlist, reply to this email with \"remove\"\n </p>\n </div>\n `;\n\n const userSend = await sendEmail(configResult.config, {\n to: [{ email }],\n subject: \"You're on the ContractSpec waitlist!\",\n text: waitlistText,\n html: waitlistHtml,\n context: 'waitlist-welcome',\n });\n\n if (!userSend.success) {\n return { success: false, text: WAITLIST_SEND_ERROR };\n }\n\n const teamNotificationText = `New waitlist signup from: ${email}`;\n const teamNotificationHtml = `\n <div style=\"font-family: sans-serif; max-width: 640px; margin: 0 auto;\">\n <p style=\"margin: 0 0 8px;\">New waitlist signup</p>\n <p style=\"margin: 0;\"><strong>Email:</strong> ${formatMultilineHtml(email)}</p>\n </div>\n `;\n\n const teamSend = await sendEmail(configResult.config, {\n to: [configResult.config.teamInbox],\n subject: `New Waitlist Signup: ${email}`,\n text: teamNotificationText,\n html: teamNotificationHtml,\n context: 'waitlist-team-notification',\n });\n\n if (!teamSend.success) {\n return { success: false, text: WAITLIST_SEND_ERROR };\n }\n\n return { success: true, text: 'Successfully joined waitlist!' };\n};\n"],"mappings":";;;;;;AAMA,MAAM,0BACJ;AACF,MAAM,sBACJ;AAEF,MAAa,eAAe,OAC1B,aACkC;CAClC,MAAM,SAAS,SAAS,IAAI,QAAQ,IAAI,IAAI,UAAU,CAAC,MAAM;AAE7D,KAAI,CAAC,SAAS,CAAC,MAAM,SAAS,IAAI,CAChC,QAAO;EACL,SAAS;EACT,MAAM;EACP;CAGH,MAAM,eAAe,gBAAgB;AACrC,KAAI,CAAC,aAAa,MAAM,CAAC,aAAa,OACpC,QAAO;EACL,SAAS;EACT,MAAM,aAAa,gBAAgB;EACpC;CAGH,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;IAuBnB,MAAM;AAsCR,KAAI,EARa,MAAM,UAAU,aAAa,QAAQ;EACpD,IAAI,CAAC,EAAE,OAAO,CAAC;EACf,SAAS;EACT,MAAM;EACN,MAhCmB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCnB,SAAS;EACV,CAAC,EAEY,QACZ,QAAO;EAAE,SAAS;EAAO,MAAM;EAAqB;CAGtD,MAAM,uBAAuB,6BAA6B;CAC1D,MAAM,uBAAuB;;;sDAGuB,oBAAoB,MAAM,CAAC;;;AAY/E,KAAI,EARa,MAAM,UAAU,aAAa,QAAQ;EACpD,IAAI,CAAC,aAAa,OAAO,UAAU;EACnC,SAAS,wBAAwB;EACjC,MAAM;EACN,MAAM;EACN,SAAS;EACV,CAAC,EAEY,QACZ,QAAO;EAAE,SAAS;EAAO,MAAM;EAAqB;AAGtD,QAAO;EAAE,SAAS;EAAM,MAAM;EAAiC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/libs/pricing-examples.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Tentative pricing example values for UI display.
|
|
4
|
+
* These are examples only and subject to change based on learnings from design partners.
|
|
5
|
+
*/
|
|
6
|
+
declare const PRICING_EXAMPLES: {
|
|
7
|
+
readonly free: {
|
|
8
|
+
readonly regenerationsPerMonth: 200;
|
|
9
|
+
readonly aiActionsPerMonth: 100;
|
|
10
|
+
readonly projects: 1;
|
|
11
|
+
};
|
|
12
|
+
readonly builder: {
|
|
13
|
+
readonly regenerationsPerMonthHint: "1,000–2,000+";
|
|
14
|
+
readonly aiActionsPerMonthHint: "1,000+";
|
|
15
|
+
};
|
|
16
|
+
readonly team: {
|
|
17
|
+
readonly description: "Higher limits + cheaper per-regen at scale";
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
//#endregion
|
|
21
|
+
export { PRICING_EXAMPLES };
|
|
22
|
+
//# sourceMappingURL=pricing-examples.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing-examples.d.ts","names":[],"sources":["../../src/libs/pricing-examples.ts"],"mappings":";;AAKA;;;cAAa,gBAAA;EAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/libs/pricing-examples.ts
|
|
2
|
+
/**
|
|
3
|
+
* Tentative pricing example values for UI display.
|
|
4
|
+
* These are examples only and subject to change based on learnings from design partners.
|
|
5
|
+
*/
|
|
6
|
+
const PRICING_EXAMPLES = {
|
|
7
|
+
free: {
|
|
8
|
+
regenerationsPerMonth: 200,
|
|
9
|
+
aiActionsPerMonth: 100,
|
|
10
|
+
projects: 1
|
|
11
|
+
},
|
|
12
|
+
builder: {
|
|
13
|
+
regenerationsPerMonthHint: "1,000–2,000+",
|
|
14
|
+
aiActionsPerMonthHint: "1,000+"
|
|
15
|
+
},
|
|
16
|
+
team: { description: "Higher limits + cheaper per-regen at scale" }
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
export { PRICING_EXAMPLES };
|
|
21
|
+
//# sourceMappingURL=pricing-examples.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing-examples.js","names":[],"sources":["../../src/libs/pricing-examples.ts"],"sourcesContent":["/**\n * Tentative pricing example values for UI display.\n * These are examples only and subject to change based on learnings from design partners.\n */\n\nexport const PRICING_EXAMPLES = {\n free: {\n regenerationsPerMonth: 200,\n aiActionsPerMonth: 100,\n projects: 1,\n },\n builder: {\n regenerationsPerMonthHint: '1,000–2,000+',\n aiActionsPerMonthHint: '1,000+',\n },\n team: {\n description: 'Higher limits + cheaper per-regen at scale',\n },\n} as const;\n"],"mappings":";;;;;AAKA,MAAa,mBAAmB;CAC9B,MAAM;EACJ,uBAAuB;EACvB,mBAAmB;EACnB,UAAU;EACX;CACD,SAAS;EACP,2BAA2B;EAC3B,uBAAuB;EACxB;CACD,MAAM,EACJ,aAAa,8CACd;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ComponentMap } from "./types.js";
|
|
2
|
+
import { TransformEngine } from "@contractspec/lib.contracts/presentations";
|
|
3
|
+
|
|
4
|
+
//#region src/registry/engine.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Create and configure the TransformEngine for web-landing presentations.
|
|
7
|
+
* Includes React and Markdown renderers with component map registration.
|
|
8
|
+
*/
|
|
9
|
+
declare function createPresentationEngine(customComponentMap?: ComponentMap): TransformEngine;
|
|
10
|
+
/**
|
|
11
|
+
* Singleton engine instance for the app.
|
|
12
|
+
* Use this for rendering presentations.
|
|
13
|
+
*/
|
|
14
|
+
declare const presentationEngine: TransformEngine;
|
|
15
|
+
//#endregion
|
|
16
|
+
export { createPresentationEngine, presentationEngine };
|
|
17
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","names":[],"sources":["../../src/registry/engine.ts"],"mappings":";;;;;;AAcA;;iBAAgB,wBAAA,CACd,kBAAA,GAAqB,YAAA,GACpB,eAAA;;;;;cAqBU,kBAAA,EAAkB,eAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { componentMap } from "./registry.js";
|
|
2
|
+
import { createDefaultTransformEngine, registerBasicValidation, registerDefaultReactRenderer, registerReactToMarkdownRenderer } from "@contractspec/lib.contracts/presentations";
|
|
3
|
+
|
|
4
|
+
//#region src/registry/engine.ts
|
|
5
|
+
/**
|
|
6
|
+
* Create and configure the TransformEngine for web-landing presentations.
|
|
7
|
+
* Includes React and Markdown renderers with component map registration.
|
|
8
|
+
*/
|
|
9
|
+
function createPresentationEngine(customComponentMap) {
|
|
10
|
+
const engine = createDefaultTransformEngine();
|
|
11
|
+
registerDefaultReactRenderer(engine);
|
|
12
|
+
registerBasicValidation(engine);
|
|
13
|
+
registerReactToMarkdownRenderer(engine, customComponentMap ?? componentMap);
|
|
14
|
+
return engine;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Singleton engine instance for the app.
|
|
18
|
+
* Use this for rendering presentations.
|
|
19
|
+
*/
|
|
20
|
+
const presentationEngine = createPresentationEngine();
|
|
21
|
+
|
|
22
|
+
//#endregion
|
|
23
|
+
export { createPresentationEngine, presentationEngine };
|
|
24
|
+
//# sourceMappingURL=engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","names":[],"sources":["../../src/registry/engine.ts"],"sourcesContent":["import {\n createDefaultTransformEngine,\n registerBasicValidation,\n registerDefaultReactRenderer,\n registerReactToMarkdownRenderer,\n type TransformEngine,\n} from '@contractspec/lib.contracts/presentations';\nimport { componentMap } from './registry';\nimport type { ComponentMap } from './types';\n\n/**\n * Create and configure the TransformEngine for web-landing presentations.\n * Includes React and Markdown renderers with component map registration.\n */\nexport function createPresentationEngine(\n customComponentMap?: ComponentMap\n): TransformEngine {\n const engine = createDefaultTransformEngine();\n\n // Register React renderer\n registerDefaultReactRenderer(engine);\n\n // Register basic validation\n registerBasicValidation(engine);\n\n // Register React-to-markdown renderer with component map\n // This enables rendering React components to markdown for LLM consumption\n const mapToUse = customComponentMap ?? componentMap;\n registerReactToMarkdownRenderer(engine, mapToUse);\n\n return engine;\n}\n\n/**\n * Singleton engine instance for the app.\n * Use this for rendering presentations.\n */\nexport const presentationEngine = createPresentationEngine();\n"],"mappings":";;;;;;;;AAcA,SAAgB,yBACd,oBACiB;CACjB,MAAM,SAAS,8BAA8B;AAG7C,8BAA6B,OAAO;AAGpC,yBAAwB,OAAO;AAK/B,iCAAgC,QADf,sBAAsB,aACU;AAEjD,QAAO;;;;;;AAOT,MAAa,qBAAqB,0BAA0B"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { PresentationSpec, PresentationTarget } from "@contractspec/lib.contracts/presentations";
|
|
2
|
+
import { Owner, Stability, Tag } from "@contractspec/lib.contracts/ownership";
|
|
3
|
+
|
|
4
|
+
//#region src/registry/factory.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Options for creating a React component presentation.
|
|
7
|
+
*/
|
|
8
|
+
interface CreateComponentPresentationOptions {
|
|
9
|
+
/** Fully-qualified spec key (e.g., "web-landing.home") */
|
|
10
|
+
key: string;
|
|
11
|
+
/** Component key resolved by host componentMap */
|
|
12
|
+
componentKey: string;
|
|
13
|
+
/** Short human-friendly summary */
|
|
14
|
+
description: string;
|
|
15
|
+
/** Business goal: why this exists */
|
|
16
|
+
goal: string;
|
|
17
|
+
/** Background, constraints, scope edges */
|
|
18
|
+
context: string;
|
|
19
|
+
/** Breaking changes => bump version @default '1.0.0' */
|
|
20
|
+
version?: string;
|
|
21
|
+
/** Lifecycle marker @default StabilityEnum.Stable */
|
|
22
|
+
stability?: Stability;
|
|
23
|
+
/** Owners for CODEOWNERS / on-call @default [OwnersEnum.PlatformCore] */
|
|
24
|
+
owners?: Owner[];
|
|
25
|
+
/** Search tags, grouping, docs navigation @default [] */
|
|
26
|
+
tags?: Tag[];
|
|
27
|
+
/** Render targets @default ['react', 'markdown'] */
|
|
28
|
+
targets?: PresentationTarget[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Creates a PresentationSpec for a React component with all required metadata.
|
|
32
|
+
*
|
|
33
|
+
* @param opts - Configuration options for the presentation
|
|
34
|
+
* @returns A fully-typed PresentationSpec
|
|
35
|
+
*/
|
|
36
|
+
declare function createComponentPresentation(opts: CreateComponentPresentationOptions): PresentationSpec;
|
|
37
|
+
/**
|
|
38
|
+
* Helper to derive tags from a URL path.
|
|
39
|
+
* Example: "/docs/libraries/ai-agent" -> ["docs", "libraries", "ai-agent"]
|
|
40
|
+
*/
|
|
41
|
+
declare function tagsFromPath(path: string): Tag[];
|
|
42
|
+
/**
|
|
43
|
+
* Default goal for documentation pages.
|
|
44
|
+
*/
|
|
45
|
+
declare const DOCS_GOAL = "Educate developers on ContractSpec usage and concepts";
|
|
46
|
+
/**
|
|
47
|
+
* Default context for documentation pages.
|
|
48
|
+
*/
|
|
49
|
+
declare const DOCS_CONTEXT = "Part of the ContractSpec documentation site, rendered on contractspec.io";
|
|
50
|
+
/**
|
|
51
|
+
* Default goal for marketing/landing pages.
|
|
52
|
+
*/
|
|
53
|
+
declare const MARKETING_GOAL = "Convert visitors into ContractSpec users and customers";
|
|
54
|
+
/**
|
|
55
|
+
* Default context for marketing pages.
|
|
56
|
+
*/
|
|
57
|
+
declare const MARKETING_CONTEXT = "Marketing content on contractspec.io, designed for conversion";
|
|
58
|
+
/**
|
|
59
|
+
* Default tags for documentation pages.
|
|
60
|
+
*/
|
|
61
|
+
declare const DOCS_TAGS: Tag[];
|
|
62
|
+
//#endregion
|
|
63
|
+
export { CreateComponentPresentationOptions, DOCS_CONTEXT, DOCS_GOAL, DOCS_TAGS, MARKETING_CONTEXT, MARKETING_GOAL, createComponentPresentation, tagsFromPath };
|
|
64
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","names":[],"sources":["../../src/registry/factory.ts"],"mappings":";;;;;;AAiBA;UAAiB,kCAAA;;EAEf,GAAA;EAcS;EAZT,YAAA;EAgBU;EAdV,WAAA;EAc4B;EAZ5B,IAAA;EAJA;EAMA,OAAA;EAFA;EAIA,OAAA;EAAA;EAEA,SAAA,GAAY,SAAA;EAAA;EAEZ,MAAA,GAAS,KAAA;EAAA;EAET,IAAA,GAAO,GAAA;EAAA;EAEP,OAAA,GAAU,kBAAA;AAAA;;;AASZ;;;;iBAAgB,2BAAA,CACd,IAAA,EAAM,kCAAA,GACL,gBAAA;;;;;iBA2Ba,YAAA,CAAa,IAAA,WAAe,GAAA;;;;cAU/B,SAAA;AAAb;;;AAAA,cAMa,YAAA;;AAAb;;cAMa,cAAA;;;AAAb;cAMa,iBAAA;;;;cAMA,SAAA,EAAW,GAAA"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { OwnersEnum, StabilityEnum, TagsEnum } from "@contractspec/lib.contracts/ownership";
|
|
2
|
+
|
|
3
|
+
//#region src/registry/factory.ts
|
|
4
|
+
/**
|
|
5
|
+
* Creates a PresentationSpec for a React component with all required metadata.
|
|
6
|
+
*
|
|
7
|
+
* @param opts - Configuration options for the presentation
|
|
8
|
+
* @returns A fully-typed PresentationSpec
|
|
9
|
+
*/
|
|
10
|
+
function createComponentPresentation(opts) {
|
|
11
|
+
const source = {
|
|
12
|
+
type: "component",
|
|
13
|
+
framework: "react",
|
|
14
|
+
componentKey: opts.componentKey
|
|
15
|
+
};
|
|
16
|
+
return {
|
|
17
|
+
meta: {
|
|
18
|
+
key: opts.key,
|
|
19
|
+
version: opts.version ?? "1.0.0",
|
|
20
|
+
description: opts.description,
|
|
21
|
+
goal: opts.goal,
|
|
22
|
+
context: opts.context,
|
|
23
|
+
stability: opts.stability ?? StabilityEnum.Stable,
|
|
24
|
+
owners: opts.owners ?? [OwnersEnum.PlatformCore],
|
|
25
|
+
tags: opts.tags ?? []
|
|
26
|
+
},
|
|
27
|
+
source,
|
|
28
|
+
targets: opts.targets ?? ["react", "markdown"]
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Helper to derive tags from a URL path.
|
|
33
|
+
* Example: "/docs/libraries/ai-agent" -> ["docs", "libraries", "ai-agent"]
|
|
34
|
+
*/
|
|
35
|
+
function tagsFromPath(path) {
|
|
36
|
+
return path.split("/").filter((segment) => segment.length > 0).map((segment) => segment);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Default goal for documentation pages.
|
|
40
|
+
*/
|
|
41
|
+
const DOCS_GOAL = "Educate developers on ContractSpec usage and concepts";
|
|
42
|
+
/**
|
|
43
|
+
* Default context for documentation pages.
|
|
44
|
+
*/
|
|
45
|
+
const DOCS_CONTEXT = "Part of the ContractSpec documentation site, rendered on contractspec.io";
|
|
46
|
+
/**
|
|
47
|
+
* Default goal for marketing/landing pages.
|
|
48
|
+
*/
|
|
49
|
+
const MARKETING_GOAL = "Convert visitors into ContractSpec users and customers";
|
|
50
|
+
/**
|
|
51
|
+
* Default context for marketing pages.
|
|
52
|
+
*/
|
|
53
|
+
const MARKETING_CONTEXT = "Marketing content on contractspec.io, designed for conversion";
|
|
54
|
+
/**
|
|
55
|
+
* Default tags for documentation pages.
|
|
56
|
+
*/
|
|
57
|
+
const DOCS_TAGS = [TagsEnum.Docs];
|
|
58
|
+
|
|
59
|
+
//#endregion
|
|
60
|
+
export { DOCS_CONTEXT, DOCS_GOAL, DOCS_TAGS, MARKETING_CONTEXT, MARKETING_GOAL, createComponentPresentation, tagsFromPath };
|
|
61
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","names":[],"sources":["../../src/registry/factory.ts"],"sourcesContent":["import {\n type Owner,\n OwnersEnum,\n type Stability,\n StabilityEnum,\n type Tag,\n TagsEnum,\n} from '@contractspec/lib.contracts/ownership';\nimport type {\n PresentationSourceComponentReact,\n PresentationSpec,\n PresentationTarget,\n} from '@contractspec/lib.contracts/presentations';\n\n/**\n * Options for creating a React component presentation.\n */\nexport interface CreateComponentPresentationOptions {\n /** Fully-qualified spec key (e.g., \"web-landing.home\") */\n key: string;\n /** Component key resolved by host componentMap */\n componentKey: string;\n /** Short human-friendly summary */\n description: string;\n /** Business goal: why this exists */\n goal: string;\n /** Background, constraints, scope edges */\n context: string;\n /** Breaking changes => bump version @default '1.0.0' */\n version?: string;\n /** Lifecycle marker @default StabilityEnum.Stable */\n stability?: Stability;\n /** Owners for CODEOWNERS / on-call @default [OwnersEnum.PlatformCore] */\n owners?: Owner[];\n /** Search tags, grouping, docs navigation @default [] */\n tags?: Tag[];\n /** Render targets @default ['react', 'markdown'] */\n targets?: PresentationTarget[];\n}\n\n/**\n * Creates a PresentationSpec for a React component with all required metadata.\n *\n * @param opts - Configuration options for the presentation\n * @returns A fully-typed PresentationSpec\n */\nexport function createComponentPresentation(\n opts: CreateComponentPresentationOptions\n): PresentationSpec {\n const source: PresentationSourceComponentReact = {\n type: 'component',\n framework: 'react',\n componentKey: opts.componentKey,\n };\n\n return {\n meta: {\n key: opts.key,\n version: opts.version ?? '1.0.0',\n description: opts.description,\n goal: opts.goal,\n context: opts.context,\n stability: opts.stability ?? StabilityEnum.Stable,\n owners: opts.owners ?? [OwnersEnum.PlatformCore],\n tags: opts.tags ?? [],\n },\n source,\n targets: opts.targets ?? ['react', 'markdown'],\n };\n}\n\n/**\n * Helper to derive tags from a URL path.\n * Example: \"/docs/libraries/ai-agent\" -> [\"docs\", \"libraries\", \"ai-agent\"]\n */\nexport function tagsFromPath(path: string): Tag[] {\n return path\n .split('/')\n .filter((segment) => segment.length > 0)\n .map((segment) => segment as Tag);\n}\n\n/**\n * Default goal for documentation pages.\n */\nexport const DOCS_GOAL =\n 'Educate developers on ContractSpec usage and concepts';\n\n/**\n * Default context for documentation pages.\n */\nexport const DOCS_CONTEXT =\n 'Part of the ContractSpec documentation site, rendered on contractspec.io';\n\n/**\n * Default goal for marketing/landing pages.\n */\nexport const MARKETING_GOAL =\n 'Convert visitors into ContractSpec users and customers';\n\n/**\n * Default context for marketing pages.\n */\nexport const MARKETING_CONTEXT =\n 'Marketing content on contractspec.io, designed for conversion';\n\n/**\n * Default tags for documentation pages.\n */\nexport const DOCS_TAGS: Tag[] = [TagsEnum.Docs];\n"],"mappings":";;;;;;;;;AA8CA,SAAgB,4BACd,MACkB;CAClB,MAAM,SAA2C;EAC/C,MAAM;EACN,WAAW;EACX,cAAc,KAAK;EACpB;AAED,QAAO;EACL,MAAM;GACJ,KAAK,KAAK;GACV,SAAS,KAAK,WAAW;GACzB,aAAa,KAAK;GAClB,MAAM,KAAK;GACX,SAAS,KAAK;GACd,WAAW,KAAK,aAAa,cAAc;GAC3C,QAAQ,KAAK,UAAU,CAAC,WAAW,aAAa;GAChD,MAAM,KAAK,QAAQ,EAAE;GACtB;EACD;EACA,SAAS,KAAK,WAAW,CAAC,SAAS,WAAW;EAC/C;;;;;;AAOH,SAAgB,aAAa,MAAqB;AAChD,QAAO,KACJ,MAAM,IAAI,CACV,QAAQ,YAAY,QAAQ,SAAS,EAAE,CACvC,KAAK,YAAY,QAAe;;;;;AAMrC,MAAa,YACX;;;;AAKF,MAAa,eACX;;;;AAKF,MAAa,iBACX;;;;AAKF,MAAa,oBACX;;;;AAKF,MAAa,YAAmB,CAAC,SAAS,KAAK"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ComponentMap, RoutePresentation } from "./types.js";
|
|
2
|
+
import { createPresentationEngine, presentationEngine } from "./engine.js";
|
|
3
|
+
import { CreateComponentPresentationOptions, DOCS_CONTEXT, DOCS_GOAL, DOCS_TAGS, MARKETING_CONTEXT, MARKETING_GOAL, createComponentPresentation, tagsFromPath } from "./factory.js";
|
|
4
|
+
import { componentMap, getAllPresentationRoutes, getPresentationForRoute, hasPresentation, presentationRegistry } from "./registry.js";
|
|
5
|
+
import { docsComponentMap, docsPresentations } from "./registry-docs.js";
|
|
6
|
+
import { landingComponentMap, landingPresentations, learningPresentations } from "./registry-landing.js";
|
|
7
|
+
import { AIChatProvider, aiChatProviders, getMarkdownUrl, renderPresentationToMarkdown, renderPresentationToReact } from "./utils.js";
|
|
8
|
+
export { AIChatProvider, ComponentMap, CreateComponentPresentationOptions, DOCS_CONTEXT, DOCS_GOAL, DOCS_TAGS, MARKETING_CONTEXT, MARKETING_GOAL, RoutePresentation, aiChatProviders, componentMap, createComponentPresentation, createPresentationEngine, docsComponentMap, docsPresentations, getAllPresentationRoutes, getMarkdownUrl, getPresentationForRoute, hasPresentation, landingComponentMap, landingPresentations, learningPresentations, presentationEngine, presentationRegistry, renderPresentationToMarkdown, renderPresentationToReact, tagsFromPath };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DOCS_CONTEXT, DOCS_GOAL, DOCS_TAGS, MARKETING_CONTEXT, MARKETING_GOAL, createComponentPresentation, tagsFromPath } from "./factory.js";
|
|
2
|
+
import { docsComponentMap, docsPresentations } from "./registry-docs.js";
|
|
3
|
+
import { landingComponentMap, landingPresentations, learningPresentations } from "./registry-landing.js";
|
|
4
|
+
import { componentMap, getAllPresentationRoutes, getPresentationForRoute, hasPresentation, presentationRegistry } from "./registry.js";
|
|
5
|
+
import { createPresentationEngine, presentationEngine } from "./engine.js";
|
|
6
|
+
import { aiChatProviders, getMarkdownUrl, renderPresentationToMarkdown, renderPresentationToReact } from "./utils.js";
|
|
7
|
+
|
|
8
|
+
export { DOCS_CONTEXT, DOCS_GOAL, DOCS_TAGS, MARKETING_CONTEXT, MARKETING_GOAL, aiChatProviders, componentMap, createComponentPresentation, createPresentationEngine, docsComponentMap, docsPresentations, getAllPresentationRoutes, getMarkdownUrl, getPresentationForRoute, hasPresentation, landingComponentMap, landingPresentations, learningPresentations, presentationEngine, presentationRegistry, renderPresentationToMarkdown, renderPresentationToReact, tagsFromPath };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ComponentMap } from "./types.js";
|
|
2
|
+
import { PresentationSpec } from "@contractspec/lib.contracts/presentations";
|
|
3
|
+
|
|
4
|
+
//#region src/registry/registry-docs.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Component map for documentation page React rendering.
|
|
7
|
+
*/
|
|
8
|
+
declare const docsComponentMap: ComponentMap;
|
|
9
|
+
/**
|
|
10
|
+
* Presentation specs for documentation pages.
|
|
11
|
+
*/
|
|
12
|
+
declare const docsPresentations: [string, PresentationSpec][];
|
|
13
|
+
//#endregion
|
|
14
|
+
export { docsComponentMap, docsPresentations };
|
|
15
|
+
//# sourceMappingURL=registry-docs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-docs.d.ts","names":[],"sources":["../../src/registry/registry-docs.ts"],"mappings":";;;;;;AAsIA;cAAa,gBAAA,EAAkB,YAAA;;;;cAkIlB,iBAAA,WAA4B,gBAAA"}
|