@contractspec/bundle.marketing 3.7.6 → 3.7.7

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 (163) hide show
  1. package/.turbo/turbo-build.log +84 -84
  2. package/AGENTS.md +29 -21
  3. package/README.md +36 -49
  4. package/dist/browser/components/marketing/ChangelogPage.js +8 -8
  5. package/dist/browser/components/marketing/CofounderPage.js +167 -523
  6. package/dist/browser/components/marketing/ContactClient.js +200 -207
  7. package/dist/browser/components/marketing/ContributePage.js +211 -463
  8. package/dist/browser/components/marketing/DesignPartnerPage.js +165 -218
  9. package/dist/browser/components/marketing/LandingPage.js +464 -568
  10. package/dist/browser/components/marketing/PricingClient.js +213 -839
  11. package/dist/browser/components/marketing/ProductClientPage.js +265 -463
  12. package/dist/browser/components/marketing/index.js +2007 -3338
  13. package/dist/browser/components/marketing/pricing-thinking-modal.js +12 -12
  14. package/dist/browser/components/marketing/sections/AudienceSection.js +2 -2
  15. package/dist/browser/components/marketing/sections/CorePositioningSection.js +2 -2
  16. package/dist/browser/components/marketing/sections/CtaSection.js +3 -3
  17. package/dist/browser/components/marketing/sections/FearsSection.js +3 -3
  18. package/dist/browser/components/marketing/sections/HeroMarketingSection.js +6 -6
  19. package/dist/browser/components/marketing/sections/IconGridSection.js +2 -2
  20. package/dist/browser/components/marketing/sections/OutputsSection.js +2 -2
  21. package/dist/browser/components/marketing/sections/ProblemSection.js +2 -2
  22. package/dist/browser/components/marketing/sections/SolutionSection.js +2 -2
  23. package/dist/browser/components/marketing/sections/StepsSection.js +4 -4
  24. package/dist/browser/components/marketing/studio-signup-section.js +25 -41
  25. package/dist/browser/components/templates/TemplatesClientPage.js +2324 -3578
  26. package/dist/browser/components/templates/TemplatesPage.js +1 -1
  27. package/dist/browser/components/templates/TemplatesPreviewModal.js +3 -3
  28. package/dist/browser/components/templates/index.js +2361 -3615
  29. package/dist/browser/index.js +2363 -3617
  30. package/dist/browser/libs/email/client.js +1 -1
  31. package/dist/browser/libs/email/contact.js +1 -1
  32. package/dist/browser/libs/email/newsletter.js +1 -1
  33. package/dist/browser/libs/email/waitlist-application.js +1 -1
  34. package/dist/browser/libs/email/waitlist.js +1 -1
  35. package/dist/browser/registry/engine.js +2003 -3334
  36. package/dist/browser/registry/index.js +2003 -3334
  37. package/dist/browser/registry/registry-docs.js +2 -2
  38. package/dist/browser/registry/registry-landing.js +2007 -3338
  39. package/dist/browser/registry/registry.js +2003 -3334
  40. package/dist/browser/registry/utils.js +2003 -3334
  41. package/dist/components/marketing/ChangelogPage.js +8 -8
  42. package/dist/components/marketing/CofounderPage.js +167 -523
  43. package/dist/components/marketing/ContactClient.js +200 -207
  44. package/dist/components/marketing/ContributePage.d.ts +0 -2
  45. package/dist/components/marketing/ContributePage.js +211 -463
  46. package/dist/components/marketing/DesignPartnerPage.js +165 -218
  47. package/dist/components/marketing/LandingPage.js +464 -568
  48. package/dist/components/marketing/PricingClient.js +213 -839
  49. package/dist/components/marketing/ProductClientPage.js +265 -463
  50. package/dist/components/marketing/index.d.ts +5 -5
  51. package/dist/components/marketing/index.js +2007 -3338
  52. package/dist/components/marketing/pricing-thinking-modal.js +12 -12
  53. package/dist/components/marketing/sections/AudienceSection.js +2 -2
  54. package/dist/components/marketing/sections/CorePositioningSection.js +2 -2
  55. package/dist/components/marketing/sections/CtaSection.js +3 -3
  56. package/dist/components/marketing/sections/FearsSection.js +3 -3
  57. package/dist/components/marketing/sections/HeroMarketingSection.js +6 -6
  58. package/dist/components/marketing/sections/IconGridSection.d.ts +3 -3
  59. package/dist/components/marketing/sections/IconGridSection.js +2 -2
  60. package/dist/components/marketing/sections/OutputsSection.js +2 -2
  61. package/dist/components/marketing/sections/ProblemSection.js +2 -2
  62. package/dist/components/marketing/sections/SolutionSection.js +2 -2
  63. package/dist/components/marketing/sections/StepsSection.js +4 -4
  64. package/dist/components/marketing/studio-signup-section.js +25 -41
  65. package/dist/components/templates/TemplatesClientPage.js +2324 -3578
  66. package/dist/components/templates/TemplatesPage.js +1 -1
  67. package/dist/components/templates/TemplatesPreviewModal.js +3 -3
  68. package/dist/components/templates/index.js +2361 -3615
  69. package/dist/index.js +2363 -3617
  70. package/dist/libs/email/client.js +1 -1
  71. package/dist/libs/email/contact.js +1 -1
  72. package/dist/libs/email/newsletter.js +1 -1
  73. package/dist/libs/email/waitlist-application.js +1 -1
  74. package/dist/libs/email/waitlist.js +1 -1
  75. package/dist/node/components/marketing/ChangelogPage.js +8 -8
  76. package/dist/node/components/marketing/CofounderPage.js +167 -523
  77. package/dist/node/components/marketing/ContactClient.js +200 -207
  78. package/dist/node/components/marketing/ContributePage.js +211 -463
  79. package/dist/node/components/marketing/DesignPartnerPage.js +165 -218
  80. package/dist/node/components/marketing/LandingPage.js +464 -568
  81. package/dist/node/components/marketing/PricingClient.js +213 -839
  82. package/dist/node/components/marketing/ProductClientPage.js +265 -463
  83. package/dist/node/components/marketing/index.js +2007 -3338
  84. package/dist/node/components/marketing/pricing-thinking-modal.js +12 -12
  85. package/dist/node/components/marketing/sections/AudienceSection.js +2 -2
  86. package/dist/node/components/marketing/sections/CorePositioningSection.js +2 -2
  87. package/dist/node/components/marketing/sections/CtaSection.js +3 -3
  88. package/dist/node/components/marketing/sections/FearsSection.js +3 -3
  89. package/dist/node/components/marketing/sections/HeroMarketingSection.js +6 -6
  90. package/dist/node/components/marketing/sections/IconGridSection.js +2 -2
  91. package/dist/node/components/marketing/sections/OutputsSection.js +2 -2
  92. package/dist/node/components/marketing/sections/ProblemSection.js +2 -2
  93. package/dist/node/components/marketing/sections/SolutionSection.js +2 -2
  94. package/dist/node/components/marketing/sections/StepsSection.js +4 -4
  95. package/dist/node/components/marketing/studio-signup-section.js +25 -41
  96. package/dist/node/components/templates/TemplatesClientPage.js +2324 -3578
  97. package/dist/node/components/templates/TemplatesPage.js +1 -1
  98. package/dist/node/components/templates/TemplatesPreviewModal.js +3 -3
  99. package/dist/node/components/templates/index.js +2361 -3615
  100. package/dist/node/index.js +2363 -3617
  101. package/dist/node/libs/email/client.js +1 -1
  102. package/dist/node/libs/email/contact.js +1 -1
  103. package/dist/node/libs/email/newsletter.js +1 -1
  104. package/dist/node/libs/email/waitlist-application.js +1 -1
  105. package/dist/node/libs/email/waitlist.js +1 -1
  106. package/dist/node/registry/engine.js +2003 -3334
  107. package/dist/node/registry/index.js +2003 -3334
  108. package/dist/node/registry/registry-docs.js +2 -2
  109. package/dist/node/registry/registry-landing.js +2007 -3338
  110. package/dist/node/registry/registry.js +2003 -3334
  111. package/dist/node/registry/utils.js +2003 -3334
  112. package/dist/registry/engine.js +2003 -3334
  113. package/dist/registry/index.js +2003 -3334
  114. package/dist/registry/registry-docs.js +2 -2
  115. package/dist/registry/registry-landing.js +2007 -3338
  116. package/dist/registry/registry.js +2003 -3334
  117. package/dist/registry/utils.js +2003 -3334
  118. package/package.json +22 -22
  119. package/src/bundles/MarketingBundle.ts +273 -273
  120. package/src/components/marketing/ChangelogPage.tsx +72 -100
  121. package/src/components/marketing/CofounderPage.tsx +120 -384
  122. package/src/components/marketing/ContactClient.tsx +164 -154
  123. package/src/components/marketing/ContributePage.tsx +139 -313
  124. package/src/components/marketing/DesignPartnerPage.tsx +133 -171
  125. package/src/components/marketing/LandingPage.tsx +353 -25
  126. package/src/components/marketing/PricingClient.tsx +192 -437
  127. package/src/components/marketing/ProductClientPage.tsx +255 -377
  128. package/src/components/marketing/index.ts +5 -5
  129. package/src/components/marketing/pricing-thinking-modal.tsx +197 -197
  130. package/src/components/marketing/sections/AudienceSection.tsx +55 -56
  131. package/src/components/marketing/sections/CorePositioningSection.tsx +37 -37
  132. package/src/components/marketing/sections/CtaSection.tsx +49 -50
  133. package/src/components/marketing/sections/DevelopersSection.tsx +26 -27
  134. package/src/components/marketing/sections/FearsSection.tsx +36 -37
  135. package/src/components/marketing/sections/HeroMarketingSection.tsx +59 -59
  136. package/src/components/marketing/sections/IconGridSection.tsx +71 -71
  137. package/src/components/marketing/sections/OutputsSection.tsx +51 -52
  138. package/src/components/marketing/sections/ProblemSection.tsx +39 -40
  139. package/src/components/marketing/sections/SolutionSection.tsx +39 -40
  140. package/src/components/marketing/sections/StepsSection.tsx +47 -48
  141. package/src/components/marketing/studio-signup-section.tsx +39 -41
  142. package/src/components/templates/TemplatesClientPage.tsx +727 -685
  143. package/src/components/templates/TemplatesPage.tsx +110 -110
  144. package/src/components/templates/TemplatesPreviewModal.tsx +197 -198
  145. package/src/index.ts +4 -4
  146. package/src/libs/email/client.test.ts +81 -81
  147. package/src/libs/email/client.ts +111 -111
  148. package/src/libs/email/contact.ts +35 -35
  149. package/src/libs/email/newsletter.ts +46 -46
  150. package/src/libs/email/types.ts +29 -29
  151. package/src/libs/email/utils.ts +5 -5
  152. package/src/libs/email/waitlist-application.ts +72 -72
  153. package/src/libs/email/waitlist.ts +46 -46
  154. package/src/libs/pricing-examples.ts +12 -12
  155. package/src/registry/engine.ts +16 -16
  156. package/src/registry/factory.ts +57 -57
  157. package/src/registry/registry-docs.ts +656 -666
  158. package/src/registry/registry-landing.ts +94 -95
  159. package/src/registry/registry.ts +36 -37
  160. package/src/registry/types.ts +2 -2
  161. package/src/registry/utils.ts +56 -56
  162. package/tsconfig.json +11 -11
  163. package/tsdown.config.js +5 -5
@@ -1,129 +1,129 @@
1
1
  'use client';
2
2
 
3
- import { useMemo, useState } from 'react';
4
3
  import {
5
- Button,
6
- ButtonLink,
7
- Input,
8
- MarketingCard,
9
- MarketingCardContent,
10
- MarketingCardDescription,
11
- MarketingCardHeader,
12
- MarketingCardTitle,
13
- MarketingSection,
4
+ Button,
5
+ ButtonLink,
6
+ Input,
7
+ MarketingCard,
8
+ MarketingCardContent,
9
+ MarketingCardDescription,
10
+ MarketingCardHeader,
11
+ MarketingCardTitle,
12
+ MarketingSection,
14
13
  } from '@contractspec/lib.design-system';
14
+ import type { TemplateDefinition } from '@contractspec/lib.example-shared-ui';
15
15
  import { HStack, VStack } from '@contractspec/lib.ui-kit-web/ui/stack';
16
16
  import { listTemplates } from '@contractspec/module.examples';
17
- import type { TemplateDefinition } from '@contractspec/lib.example-shared-ui';
17
+ import { useMemo, useState } from 'react';
18
18
 
19
19
  function matchesQuery(t: TemplateDefinition, query: string): boolean {
20
- const q = query.trim().toLowerCase();
21
- if (!q) return true;
22
- const hay =
23
- `${t.id} ${t.name} ${t.description} ${t.tags.join(' ')}`.toLowerCase();
24
- return hay.includes(q);
20
+ const q = query.trim().toLowerCase();
21
+ if (!q) return true;
22
+ const hay =
23
+ `${t.id} ${t.name} ${t.description} ${t.tags.join(' ')}`.toLowerCase();
24
+ return hay.includes(q);
25
25
  }
26
26
 
27
27
  export function TemplatesMarketingPage() {
28
- const [query, setQuery] = useState('');
28
+ const [query, setQuery] = useState('');
29
29
 
30
- const templates = useMemo(() => listTemplates(), []);
31
- const filtered = useMemo(
32
- () => templates.filter((t) => matchesQuery(t, query)),
33
- [templates, query]
34
- );
30
+ const templates = useMemo(() => listTemplates(), []);
31
+ const filtered = useMemo(
32
+ () => templates.filter((t) => matchesQuery(t, query)),
33
+ [templates, query]
34
+ );
35
35
 
36
- return (
37
- <>
38
- <MarketingSection tone="default">
39
- <VStack as="header" gap="lg" align="center">
40
- <VStack gap="sm" align="center">
41
- <ButtonLink href="/docs" variant="ghost">
42
- Docs
43
- </ButtonLink>
44
- <ButtonLink href="/sandbox" variant="ghost">
45
- Open Sandbox
46
- </ButtonLink>
47
- </VStack>
48
- <VStack gap="sm" align="center">
49
- <ButtonLink href="/templates" variant="default">
50
- Templates
51
- </ButtonLink>
52
- </VStack>
53
- </VStack>
54
- </MarketingSection>
36
+ return (
37
+ <>
38
+ <MarketingSection tone="default">
39
+ <VStack as="header" gap="lg" align="center">
40
+ <VStack gap="sm" align="center">
41
+ <ButtonLink href="/docs" variant="ghost">
42
+ Docs
43
+ </ButtonLink>
44
+ <ButtonLink href="/sandbox" variant="ghost">
45
+ Open Sandbox
46
+ </ButtonLink>
47
+ </VStack>
48
+ <VStack gap="sm" align="center">
49
+ <ButtonLink href="/templates" variant="default">
50
+ Templates
51
+ </ButtonLink>
52
+ </VStack>
53
+ </VStack>
54
+ </MarketingSection>
55
55
 
56
- <MarketingSection tone="muted">
57
- <VStack gap="lg">
58
- <VStack gap="sm">
59
- <ButtonLink href="/templates" variant="ghost">
60
- Browse all examples
61
- </ButtonLink>
62
- </VStack>
63
- <HStack gap="md" align="center" justify="between" wrap="wrap">
64
- <Input
65
- aria-label="Search templates and examples"
66
- placeholder="Search templates and examples…"
67
- value={query}
68
- onChange={(e) => setQuery(e.target.value)}
69
- />
70
- </HStack>
71
- </VStack>
72
- </MarketingSection>
56
+ <MarketingSection tone="muted">
57
+ <VStack gap="lg">
58
+ <VStack gap="sm">
59
+ <ButtonLink href="/templates" variant="ghost">
60
+ Browse all examples
61
+ </ButtonLink>
62
+ </VStack>
63
+ <HStack gap="md" align="center" justify="between" wrap="wrap">
64
+ <Input
65
+ aria-label="Search templates and examples"
66
+ placeholder="Search templates and examples…"
67
+ value={query}
68
+ onChange={(e) => setQuery(e.target.value)}
69
+ />
70
+ </HStack>
71
+ </VStack>
72
+ </MarketingSection>
73
73
 
74
- <MarketingSection tone="default">
75
- <VStack gap="lg">
76
- <HStack gap="md" wrap="wrap">
77
- {filtered.map((t) => (
78
- <MarketingCard
79
- key={t.id}
80
- className="w-full md:w-[calc(50%-0.75rem)] lg:w-[calc(33.333%-1rem)]"
81
- >
82
- <MarketingCardHeader>
83
- <MarketingCardTitle>
84
- {t.icon} {t.name}
85
- </MarketingCardTitle>
86
- <MarketingCardDescription>
87
- {t.description}
88
- </MarketingCardDescription>
89
- </MarketingCardHeader>
90
- <MarketingCardContent>
91
- <VStack gap="md">
92
- <HStack gap="sm" wrap="wrap">
93
- {t.tags.slice(0, 6).map((tag: string) => (
94
- <ButtonLink
95
- key={`${t.id}-${tag}`}
96
- href={`/templates?tag=${encodeURIComponent(tag)}`}
97
- variant="ghost"
98
- >
99
- {tag}
100
- </ButtonLink>
101
- ))}
102
- </HStack>
103
- <HStack gap="sm" justify="between" wrap="wrap">
104
- <ButtonLinkToSandbox templateId={t.id} />
105
- <Button variant="outline" onClick={() => void 0} disabled>
106
- Install to Studio (soon)
107
- </Button>
108
- </HStack>
109
- </VStack>
110
- </MarketingCardContent>
111
- </MarketingCard>
112
- ))}
113
- </HStack>
114
- </VStack>
115
- </MarketingSection>
116
- </>
117
- );
74
+ <MarketingSection tone="default">
75
+ <VStack gap="lg">
76
+ <HStack gap="md" wrap="wrap">
77
+ {filtered.map((t) => (
78
+ <MarketingCard
79
+ key={t.id}
80
+ className="w-full md:w-[calc(50%-0.75rem)] lg:w-[calc(33.333%-1rem)]"
81
+ >
82
+ <MarketingCardHeader>
83
+ <MarketingCardTitle>
84
+ {t.icon} {t.name}
85
+ </MarketingCardTitle>
86
+ <MarketingCardDescription>
87
+ {t.description}
88
+ </MarketingCardDescription>
89
+ </MarketingCardHeader>
90
+ <MarketingCardContent>
91
+ <VStack gap="md">
92
+ <HStack gap="sm" wrap="wrap">
93
+ {t.tags.slice(0, 6).map((tag: string) => (
94
+ <ButtonLink
95
+ key={`${t.id}-${tag}`}
96
+ href={`/templates?tag=${encodeURIComponent(tag)}`}
97
+ variant="ghost"
98
+ >
99
+ {tag}
100
+ </ButtonLink>
101
+ ))}
102
+ </HStack>
103
+ <HStack gap="sm" justify="between" wrap="wrap">
104
+ <ButtonLinkToSandbox templateId={t.id} />
105
+ <Button variant="outline" onClick={() => void 0} disabled>
106
+ Install to Studio (soon)
107
+ </Button>
108
+ </HStack>
109
+ </VStack>
110
+ </MarketingCardContent>
111
+ </MarketingCard>
112
+ ))}
113
+ </HStack>
114
+ </VStack>
115
+ </MarketingSection>
116
+ </>
117
+ );
118
118
  }
119
119
 
120
120
  function ButtonLinkToSandbox({ templateId }: { templateId: string }) {
121
- return (
122
- <ButtonLink
123
- href={`/sandbox?template=${encodeURIComponent(templateId)}`}
124
- variant="default"
125
- >
126
- Preview
127
- </ButtonLink>
128
- );
121
+ return (
122
+ <ButtonLink
123
+ href={`/sandbox?template=${encodeURIComponent(templateId)}`}
124
+ variant="default"
125
+ >
126
+ Preview
127
+ </ButtonLink>
128
+ );
129
129
  }