@contractspec/lib.content-gen 2.3.0 → 2.5.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.
Files changed (64) hide show
  1. package/dist/browser/generators/blog.js +943 -12
  2. package/dist/browser/generators/email.js +952 -14
  3. package/dist/browser/generators/index.js +1005 -46
  4. package/dist/browser/generators/landing-page.js +938 -15
  5. package/dist/browser/generators/social.js +926 -5
  6. package/dist/browser/i18n/catalogs/en.js +276 -0
  7. package/dist/browser/i18n/catalogs/es.js +276 -0
  8. package/dist/browser/i18n/catalogs/fr.js +276 -0
  9. package/dist/browser/i18n/catalogs/index.js +826 -0
  10. package/dist/browser/i18n/index.js +937 -0
  11. package/dist/browser/i18n/keys.js +85 -0
  12. package/dist/browser/i18n/locale.js +13 -0
  13. package/dist/browser/i18n/messages.js +838 -0
  14. package/dist/browser/index.js +1020 -50
  15. package/dist/browser/seo/index.js +933 -4
  16. package/dist/browser/seo/optimizer.js +933 -4
  17. package/dist/generators/blog.d.ts +1 -0
  18. package/dist/generators/blog.js +943 -12
  19. package/dist/generators/email.d.ts +1 -0
  20. package/dist/generators/email.js +952 -14
  21. package/dist/generators/index.js +1005 -46
  22. package/dist/generators/landing-page.d.ts +1 -0
  23. package/dist/generators/landing-page.js +938 -15
  24. package/dist/generators/social.d.ts +1 -0
  25. package/dist/generators/social.js +926 -5
  26. package/dist/i18n/catalogs/en.d.ts +8 -0
  27. package/dist/i18n/catalogs/en.js +277 -0
  28. package/dist/i18n/catalogs/es.d.ts +6 -0
  29. package/dist/i18n/catalogs/es.js +277 -0
  30. package/dist/i18n/catalogs/fr.d.ts +6 -0
  31. package/dist/i18n/catalogs/fr.js +277 -0
  32. package/dist/i18n/catalogs/index.d.ts +8 -0
  33. package/dist/i18n/catalogs/index.js +827 -0
  34. package/dist/i18n/i18n.test.d.ts +1 -0
  35. package/dist/i18n/index.d.ts +29 -0
  36. package/dist/i18n/index.js +938 -0
  37. package/dist/i18n/keys.d.ts +244 -0
  38. package/dist/i18n/keys.js +86 -0
  39. package/dist/i18n/locale.d.ts +8 -0
  40. package/dist/i18n/locale.js +14 -0
  41. package/dist/i18n/messages.d.ts +14 -0
  42. package/dist/i18n/messages.js +839 -0
  43. package/dist/index.js +1020 -50
  44. package/dist/node/generators/blog.js +943 -12
  45. package/dist/node/generators/email.js +952 -14
  46. package/dist/node/generators/index.js +1005 -46
  47. package/dist/node/generators/landing-page.js +938 -15
  48. package/dist/node/generators/social.js +926 -5
  49. package/dist/node/i18n/catalogs/en.js +276 -0
  50. package/dist/node/i18n/catalogs/es.js +276 -0
  51. package/dist/node/i18n/catalogs/fr.js +276 -0
  52. package/dist/node/i18n/catalogs/index.js +826 -0
  53. package/dist/node/i18n/index.js +937 -0
  54. package/dist/node/i18n/keys.js +85 -0
  55. package/dist/node/i18n/locale.js +13 -0
  56. package/dist/node/i18n/messages.js +838 -0
  57. package/dist/node/index.js +1020 -50
  58. package/dist/node/seo/index.js +933 -4
  59. package/dist/node/seo/optimizer.js +933 -4
  60. package/dist/seo/index.js +933 -4
  61. package/dist/seo/optimizer.d.ts +10 -1
  62. package/dist/seo/optimizer.js +933 -4
  63. package/dist/types.d.ts +2 -0
  64. package/package.json +145 -5
@@ -0,0 +1,276 @@
1
+ // src/i18n/catalogs/fr.ts
2
+ import { defineTranslation } from "@contractspec/lib.contracts-spec/translations";
3
+ var frMessages = defineTranslation({
4
+ meta: {
5
+ key: "content-gen.messages",
6
+ version: "1.0.0",
7
+ domain: "content-gen",
8
+ description: "French translations for the content-gen package",
9
+ owners: ["platform"],
10
+ stability: "experimental"
11
+ },
12
+ locale: "fr",
13
+ fallback: "en",
14
+ messages: {
15
+ "prompt.blog.system": {
16
+ value: "Vous êtes un rédacteur marketing produit. Produisez du JSON avec title, subtitle, intro, sections[].heading/body/bullets, outro.",
17
+ description: "Blog generator LLM system prompt"
18
+ },
19
+ "prompt.email.system": {
20
+ value: "Rédigez un e-mail marketing produit en JSON {subject, previewText, body, cta}.",
21
+ description: "Email generator LLM system prompt"
22
+ },
23
+ "prompt.landing.system": {
24
+ value: "Écrivez du JSON pour une page d'atterrissage avec hero/highlights/socialProof/faq.",
25
+ description: "Landing page generator LLM system prompt"
26
+ },
27
+ "prompt.social.system": {
28
+ value: "Créez un tableau JSON de posts sociaux pour twitter/linkedin/threads avec body, hashtags, cta.",
29
+ description: "Social post generator LLM system prompt"
30
+ },
31
+ "blog.intro": {
32
+ value: "Les équipes comme {role} font face à {problems}. {title} change la donne grâce à {summary}.",
33
+ description: "Blog post intro paragraph template",
34
+ placeholders: [
35
+ { name: "role", type: "string" },
36
+ { name: "problems", type: "string" },
37
+ { name: "title", type: "string" },
38
+ { name: "summary", type: "string" }
39
+ ]
40
+ },
41
+ "blog.heading.whyNow": {
42
+ value: "Pourquoi maintenant",
43
+ description: "Blog section heading: why now"
44
+ },
45
+ "blog.heading.whatYouGet": {
46
+ value: "Ce que vous obtenez",
47
+ description: "Blog section heading: what you get"
48
+ },
49
+ "blog.heading.proofItWorks": {
50
+ value: "La preuve que ça marche",
51
+ description: "Blog section heading: proof it works"
52
+ },
53
+ "blog.body.whatYouGet": {
54
+ value: "Une pile ciblée conçue pour l'automatisation conforme aux politiques.",
55
+ description: "Blog section body: what you get"
56
+ },
57
+ "blog.body.proofItWorks": {
58
+ value: "Les équipes utilisant le modèle rapportent des gains mesurables.",
59
+ description: "Blog section body: proof it works"
60
+ },
61
+ "blog.metric.launchWorkflows": {
62
+ value: "Lancez des workflows en quelques minutes",
63
+ description: "Default metric: launch workflows"
64
+ },
65
+ "blog.metric.cutReviewTime": {
66
+ value: "Réduisez le temps de revue de 60 %",
67
+ description: "Default metric: cut review time"
68
+ },
69
+ "blog.outro.default": {
70
+ value: "Prêt à voir en direct ? Lancez un bac à sable en moins de 5 minutes.",
71
+ description: "Default blog outro / call to action"
72
+ },
73
+ "blog.whyNow": {
74
+ value: "Les équipes {audience} sont bloquées par {pains}. {title} fournit des garde-fous sans ralentir les livraisons.",
75
+ description: "Blog why-now section body template",
76
+ placeholders: [
77
+ { name: "audience", type: "string" },
78
+ { name: "pains", type: "string" },
79
+ { name: "title", type: "string" }
80
+ ]
81
+ },
82
+ "blog.audience.industry": {
83
+ value: " dans le secteur {industry}",
84
+ description: "Audience industry suffix for blog why-now",
85
+ placeholders: [{ name: "industry", type: "string" }]
86
+ },
87
+ "email.subject.announcement.launch": {
88
+ value: "Lancement : {title}",
89
+ description: "Announcement email subject variant: launch",
90
+ placeholders: [{ name: "title", type: "string" }]
91
+ },
92
+ "email.subject.announcement.live": {
93
+ value: "{title} est en ligne",
94
+ description: "Announcement email subject variant: live",
95
+ placeholders: [{ name: "title", type: "string" }]
96
+ },
97
+ "email.subject.announcement.new": {
98
+ value: "Nouveau : {title}",
99
+ description: "Announcement email subject variant: new",
100
+ placeholders: [{ name: "title", type: "string" }]
101
+ },
102
+ "email.subject.onboarding.getStarted": {
103
+ value: "Démarrez avec {title}",
104
+ description: "Onboarding email subject variant: get started",
105
+ placeholders: [{ name: "title", type: "string" }]
106
+ },
107
+ "email.subject.onboarding.guide": {
108
+ value: "Votre guide {title}",
109
+ description: "Onboarding email subject variant: guide",
110
+ placeholders: [{ name: "title", type: "string" }]
111
+ },
112
+ "email.subject.nurture.speeds": {
113
+ value: "Comment {title} accélère les opérations",
114
+ description: "Nurture email subject variant: speeds ops",
115
+ placeholders: [{ name: "title", type: "string" }]
116
+ },
117
+ "email.subject.nurture.proof": {
118
+ value: "La preuve que {title} fonctionne",
119
+ description: "Nurture email subject variant: proof",
120
+ placeholders: [{ name: "title", type: "string" }]
121
+ },
122
+ "email.subject.fallback": {
123
+ value: "Mise à jour {title}",
124
+ description: "Fallback email subject line",
125
+ placeholders: [{ name: "title", type: "string" }]
126
+ },
127
+ "email.preview.defaultWin": {
128
+ value: "livrent plus vite sans lacunes de conformité",
129
+ description: "Default win text for email preview"
130
+ },
131
+ "email.preview.template": {
132
+ value: "Découvrez comment les équipes {win}.",
133
+ description: "Email preview text template",
134
+ placeholders: [{ name: "win", type: "string" }]
135
+ },
136
+ "email.body.greeting": {
137
+ value: "Bonjour,",
138
+ description: "Email body greeting"
139
+ },
140
+ "email.body.reasons": {
141
+ value: "Les principales raisons pour lesquelles les équipes adoptent {title} :",
142
+ description: "Email body reasons intro",
143
+ placeholders: [{ name: "title", type: "string" }]
144
+ },
145
+ "email.cta.sandbox": {
146
+ value: "Lancez un bac à sable",
147
+ description: "Default CTA: spin up a sandbox"
148
+ },
149
+ "email.cta.explore": {
150
+ value: "Explorez le bac à sable",
151
+ description: "Default CTA: explore the sandbox"
152
+ },
153
+ "email.hook.announcement": {
154
+ value: "{title} est en ligne. {summary}",
155
+ description: "Announcement variant hook",
156
+ placeholders: [
157
+ { name: "title", type: "string" },
158
+ { name: "summary", type: "string" }
159
+ ]
160
+ },
161
+ "email.hook.onboarding": {
162
+ value: "Voici votre prochaine étape pour débloquer {title}.",
163
+ description: "Onboarding variant hook",
164
+ placeholders: [{ name: "title", type: "string" }]
165
+ },
166
+ "email.hook.nurture": {
167
+ value: "Les opérateurs comme {role} demandent sans cesse comment automatiser les vérifications de conformité. Voici ce qui fonctionne.",
168
+ description: "Nurture variant hook",
169
+ placeholders: [{ name: "role", type: "string" }]
170
+ },
171
+ "landing.eyebrow.defaultIndustry": {
172
+ value: "Opérations",
173
+ description: "Default industry for landing page eyebrow"
174
+ },
175
+ "landing.eyebrow.template": {
176
+ value: "Équipes {industry}",
177
+ description: "Landing page eyebrow template",
178
+ placeholders: [{ name: "industry", type: "string" }]
179
+ },
180
+ "landing.cta.primary": {
181
+ value: "Lancer un bac à sable",
182
+ description: "Landing page primary CTA"
183
+ },
184
+ "landing.cta.secondary": {
185
+ value: "Voir la documentation",
186
+ description: "Landing page secondary CTA"
187
+ },
188
+ "landing.highlight.policySafe": {
189
+ value: "Conforme aux politiques par défaut",
190
+ description: "Landing page highlight heading 1"
191
+ },
192
+ "landing.highlight.autoAdapts": {
193
+ value: "S'adapte automatiquement par locataire",
194
+ description: "Landing page highlight heading 2"
195
+ },
196
+ "landing.highlight.launchReady": {
197
+ value: "Prêt au lancement en quelques jours",
198
+ description: "Landing page highlight heading 3"
199
+ },
200
+ "landing.highlight.fallback": {
201
+ value: "Capacité clé",
202
+ description: "Fallback highlight heading"
203
+ },
204
+ "landing.socialProof.heading": {
205
+ value: "Équipes utilisant ContractSpec",
206
+ description: "Social proof section heading"
207
+ },
208
+ "landing.socialProof.defaultQuote": {
209
+ value: "« Nous livrons des workflows conformes 5x plus vite tout en réduisant de moitié les tâches opérationnelles. »",
210
+ description: "Default social proof quote"
211
+ },
212
+ "landing.faq.policiesEnforced.heading": {
213
+ value: "Comment les politiques restent-elles appliquées ?",
214
+ description: "FAQ heading: policies enforced"
215
+ },
216
+ "landing.faq.policiesEnforced.body": {
217
+ value: "Tous les workflows sont compilés à partir de spécifications TypeScript et passent par des vérifications PDP avant exécution, empêchant toute logique non autorisée.",
218
+ description: "FAQ body: policies enforced"
219
+ },
220
+ "landing.faq.existingStack.heading": {
221
+ value: "Est-ce compatible avec notre pile existante ?",
222
+ description: "FAQ heading: existing stack"
223
+ },
224
+ "landing.faq.existingStack.body": {
225
+ value: "Les adaptateurs se connectent à REST, GraphQL ou MCP. Les intégrations restent agnostiques vis-à-vis des fournisseurs.",
226
+ description: "FAQ body: existing stack"
227
+ },
228
+ "landing.faq.compliance.heading": {
229
+ value: "Qu'en est-il des exigences de conformité ?",
230
+ description: "FAQ heading: compliance requirements"
231
+ },
232
+ "social.cta.linkedin": {
233
+ value: "Réservez une démo de 15 min",
234
+ description: "LinkedIn post default CTA"
235
+ },
236
+ "social.cta.twitter": {
237
+ value: "→ contractspec.io/sandbox",
238
+ description: "Twitter post default CTA"
239
+ },
240
+ "social.body.threads": {
241
+ value: "Ops + conformité peuvent avancer vite. {title} automatise les garde-fous pour que les équipes livrent quotidiennement.",
242
+ description: "Threads post body template",
243
+ placeholders: [{ name: "title", type: "string" }]
244
+ },
245
+ "social.body.twitter.connector": {
246
+ value: " en <60s. ",
247
+ description: "Twitter body connector between solutions"
248
+ },
249
+ "seo.metaTitle": {
250
+ value: "{title} | ContractSpec",
251
+ description: "SEO meta title template",
252
+ placeholders: [{ name: "title", type: "string" }]
253
+ },
254
+ "seo.metaDescription": {
255
+ value: "{summary} — conçu pour {role}{industry}.",
256
+ description: "SEO meta description template",
257
+ placeholders: [
258
+ { name: "summary", type: "string" },
259
+ { name: "role", type: "string" },
260
+ { name: "industry", type: "string" }
261
+ ]
262
+ },
263
+ "seo.offer.default": {
264
+ value: "Commencez à construire avec ContractSpec",
265
+ description: "Default offer description for schema markup"
266
+ },
267
+ "seo.audience.industry": {
268
+ value: " dans le secteur {industry}",
269
+ description: "Audience industry suffix for SEO description",
270
+ placeholders: [{ name: "industry", type: "string" }]
271
+ }
272
+ }
273
+ });
274
+ export {
275
+ frMessages
276
+ };