@contractspec/lib.lifecycle 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.
- package/dist/browser/index.js +1042 -99
- package/dist/i18n/catalogs/en.d.ts +8 -0
- package/dist/i18n/catalogs/es.d.ts +6 -0
- package/dist/i18n/catalogs/fr.d.ts +6 -0
- package/dist/i18n/catalogs/index.d.ts +8 -0
- package/dist/i18n/i18n.test.d.ts +1 -0
- package/dist/i18n/index.d.ts +28 -0
- package/dist/i18n/keys.d.ts +184 -0
- package/dist/i18n/locale.d.ts +8 -0
- package/dist/i18n/messages.d.ts +14 -0
- package/dist/index.js +1042 -99
- package/dist/node/index.js +1042 -99
- package/dist/types/stages.d.ts +12 -0
- package/dist/utils/formatters.d.ts +4 -4
- package/package.json +6 -3
package/dist/index.js
CHANGED
|
@@ -1,4 +1,968 @@
|
|
|
1
1
|
// @bun
|
|
2
|
+
// src/i18n/messages.ts
|
|
3
|
+
import {
|
|
4
|
+
createI18nFactory
|
|
5
|
+
} from "@contractspec/lib.contracts-spec/translations";
|
|
6
|
+
|
|
7
|
+
// src/i18n/catalogs/en.ts
|
|
8
|
+
import { defineTranslation } from "@contractspec/lib.contracts-spec/translations";
|
|
9
|
+
var enMessages = defineTranslation({
|
|
10
|
+
meta: {
|
|
11
|
+
key: "lifecycle.messages",
|
|
12
|
+
version: "1.0.0",
|
|
13
|
+
domain: "lifecycle",
|
|
14
|
+
description: "Display labels, stage metadata, and formatter strings for the lifecycle package",
|
|
15
|
+
owners: ["platform"],
|
|
16
|
+
stability: "experimental"
|
|
17
|
+
},
|
|
18
|
+
locale: "en",
|
|
19
|
+
fallback: "en",
|
|
20
|
+
messages: {
|
|
21
|
+
"stage.exploration.name": {
|
|
22
|
+
value: "Exploration / Ideation",
|
|
23
|
+
description: "Display name for the Exploration stage"
|
|
24
|
+
},
|
|
25
|
+
"stage.problemSolutionFit.name": {
|
|
26
|
+
value: "Problem\u2013Solution Fit",
|
|
27
|
+
description: "Display name for the Problem-Solution Fit stage"
|
|
28
|
+
},
|
|
29
|
+
"stage.mvpEarlyTraction.name": {
|
|
30
|
+
value: "MVP & Early Traction",
|
|
31
|
+
description: "Display name for the MVP & Early Traction stage"
|
|
32
|
+
},
|
|
33
|
+
"stage.productMarketFit.name": {
|
|
34
|
+
value: "Product\u2013Market Fit",
|
|
35
|
+
description: "Display name for the Product-Market Fit stage"
|
|
36
|
+
},
|
|
37
|
+
"stage.growthScaleUp.name": {
|
|
38
|
+
value: "Growth / Scale-up",
|
|
39
|
+
description: "Display name for the Growth / Scale-up stage"
|
|
40
|
+
},
|
|
41
|
+
"stage.expansionPlatform.name": {
|
|
42
|
+
value: "Expansion / Platform",
|
|
43
|
+
description: "Display name for the Expansion / Platform stage"
|
|
44
|
+
},
|
|
45
|
+
"stage.maturityRenewal.name": {
|
|
46
|
+
value: "Maturity / Renewal",
|
|
47
|
+
description: "Display name for the Maturity / Renewal stage"
|
|
48
|
+
},
|
|
49
|
+
"stage.exploration.question": {
|
|
50
|
+
value: "Is there a problem worth my time?",
|
|
51
|
+
description: "Key question for the Exploration stage"
|
|
52
|
+
},
|
|
53
|
+
"stage.problemSolutionFit.question": {
|
|
54
|
+
value: "Do people care enough about this solution?",
|
|
55
|
+
description: "Key question for the Problem-Solution Fit stage"
|
|
56
|
+
},
|
|
57
|
+
"stage.mvpEarlyTraction.question": {
|
|
58
|
+
value: "Can we get real usage and learn fast?",
|
|
59
|
+
description: "Key question for the MVP & Early Traction stage"
|
|
60
|
+
},
|
|
61
|
+
"stage.productMarketFit.question": {
|
|
62
|
+
value: "Is this pulling us forward?",
|
|
63
|
+
description: "Key question for the Product-Market Fit stage"
|
|
64
|
+
},
|
|
65
|
+
"stage.growthScaleUp.question": {
|
|
66
|
+
value: "Can we grow this repeatably?",
|
|
67
|
+
description: "Key question for the Growth / Scale-up stage"
|
|
68
|
+
},
|
|
69
|
+
"stage.expansionPlatform.question": {
|
|
70
|
+
value: "What is the next growth curve?",
|
|
71
|
+
description: "Key question for the Expansion / Platform stage"
|
|
72
|
+
},
|
|
73
|
+
"stage.maturityRenewal.question": {
|
|
74
|
+
value: "Optimize, reinvent, or sunset?",
|
|
75
|
+
description: "Key question for the Maturity / Renewal stage"
|
|
76
|
+
},
|
|
77
|
+
"stage.exploration.signal.0": {
|
|
78
|
+
value: "20+ discovery interviews",
|
|
79
|
+
description: "Signal for Exploration stage"
|
|
80
|
+
},
|
|
81
|
+
"stage.exploration.signal.1": {
|
|
82
|
+
value: "Clear problem statement",
|
|
83
|
+
description: "Signal for Exploration stage"
|
|
84
|
+
},
|
|
85
|
+
"stage.exploration.signal.2": {
|
|
86
|
+
value: "Named ICP",
|
|
87
|
+
description: "Signal for Exploration stage"
|
|
88
|
+
},
|
|
89
|
+
"stage.problemSolutionFit.signal.0": {
|
|
90
|
+
value: "Prototype reuse",
|
|
91
|
+
description: "Signal for Problem-Solution Fit stage"
|
|
92
|
+
},
|
|
93
|
+
"stage.problemSolutionFit.signal.1": {
|
|
94
|
+
value: "Referral energy",
|
|
95
|
+
description: "Signal for Problem-Solution Fit stage"
|
|
96
|
+
},
|
|
97
|
+
"stage.problemSolutionFit.signal.2": {
|
|
98
|
+
value: "Pre-pay interest",
|
|
99
|
+
description: "Signal for Problem-Solution Fit stage"
|
|
100
|
+
},
|
|
101
|
+
"stage.mvpEarlyTraction.signal.0": {
|
|
102
|
+
value: "20\u201350 named active users",
|
|
103
|
+
description: "Signal for MVP & Early Traction stage"
|
|
104
|
+
},
|
|
105
|
+
"stage.mvpEarlyTraction.signal.1": {
|
|
106
|
+
value: "Weekly releases",
|
|
107
|
+
description: "Signal for MVP & Early Traction stage"
|
|
108
|
+
},
|
|
109
|
+
"stage.mvpEarlyTraction.signal.2": {
|
|
110
|
+
value: "Noisy feedback",
|
|
111
|
+
description: "Signal for MVP & Early Traction stage"
|
|
112
|
+
},
|
|
113
|
+
"stage.productMarketFit.signal.0": {
|
|
114
|
+
value: "Retention without heroics",
|
|
115
|
+
description: "Signal for Product-Market Fit stage"
|
|
116
|
+
},
|
|
117
|
+
"stage.productMarketFit.signal.1": {
|
|
118
|
+
value: "Organic word-of-mouth",
|
|
119
|
+
description: "Signal for Product-Market Fit stage"
|
|
120
|
+
},
|
|
121
|
+
"stage.productMarketFit.signal.2": {
|
|
122
|
+
value: "Value stories",
|
|
123
|
+
description: "Signal for Product-Market Fit stage"
|
|
124
|
+
},
|
|
125
|
+
"stage.growthScaleUp.signal.0": {
|
|
126
|
+
value: "Predictable channels",
|
|
127
|
+
description: "Signal for Growth / Scale-up stage"
|
|
128
|
+
},
|
|
129
|
+
"stage.growthScaleUp.signal.1": {
|
|
130
|
+
value: "Specialized hires",
|
|
131
|
+
description: "Signal for Growth / Scale-up stage"
|
|
132
|
+
},
|
|
133
|
+
"stage.growthScaleUp.signal.2": {
|
|
134
|
+
value: "Unit economics on track",
|
|
135
|
+
description: "Signal for Growth / Scale-up stage"
|
|
136
|
+
},
|
|
137
|
+
"stage.expansionPlatform.signal.0": {
|
|
138
|
+
value: "Stable core metrics",
|
|
139
|
+
description: "Signal for Expansion / Platform stage"
|
|
140
|
+
},
|
|
141
|
+
"stage.expansionPlatform.signal.1": {
|
|
142
|
+
value: "Partner/API demand",
|
|
143
|
+
description: "Signal for Expansion / Platform stage"
|
|
144
|
+
},
|
|
145
|
+
"stage.expansionPlatform.signal.2": {
|
|
146
|
+
value: "Ecosystem pull",
|
|
147
|
+
description: "Signal for Expansion / Platform stage"
|
|
148
|
+
},
|
|
149
|
+
"stage.maturityRenewal.signal.0": {
|
|
150
|
+
value: "Margin focus",
|
|
151
|
+
description: "Signal for Maturity / Renewal stage"
|
|
152
|
+
},
|
|
153
|
+
"stage.maturityRenewal.signal.1": {
|
|
154
|
+
value: "Portfolio bets",
|
|
155
|
+
description: "Signal for Maturity / Renewal stage"
|
|
156
|
+
},
|
|
157
|
+
"stage.maturityRenewal.signal.2": {
|
|
158
|
+
value: "Narrative refresh",
|
|
159
|
+
description: "Signal for Maturity / Renewal stage"
|
|
160
|
+
},
|
|
161
|
+
"stage.exploration.trap.0": {
|
|
162
|
+
value: "Branding before discovery",
|
|
163
|
+
description: "Trap for Exploration stage"
|
|
164
|
+
},
|
|
165
|
+
"stage.exploration.trap.1": {
|
|
166
|
+
value: "Premature tooling decisions",
|
|
167
|
+
description: "Trap for Exploration stage"
|
|
168
|
+
},
|
|
169
|
+
"stage.problemSolutionFit.trap.0": {
|
|
170
|
+
value: "\u201CMarket is huge\u201D without users",
|
|
171
|
+
description: "Trap for Problem-Solution Fit stage"
|
|
172
|
+
},
|
|
173
|
+
"stage.problemSolutionFit.trap.1": {
|
|
174
|
+
value: "Skipping qualitative loops",
|
|
175
|
+
description: "Trap for Problem-Solution Fit stage"
|
|
176
|
+
},
|
|
177
|
+
"stage.mvpEarlyTraction.trap.0": {
|
|
178
|
+
value: "Overbuilt infra for 10 users",
|
|
179
|
+
description: "Trap for MVP & Early Traction stage"
|
|
180
|
+
},
|
|
181
|
+
"stage.mvpEarlyTraction.trap.1": {
|
|
182
|
+
value: "Undefined retention metric",
|
|
183
|
+
description: "Trap for MVP & Early Traction stage"
|
|
184
|
+
},
|
|
185
|
+
"stage.productMarketFit.trap.0": {
|
|
186
|
+
value: "Hero growth that does not scale",
|
|
187
|
+
description: "Trap for Product-Market Fit stage"
|
|
188
|
+
},
|
|
189
|
+
"stage.productMarketFit.trap.1": {
|
|
190
|
+
value: "Ignoring churn signals",
|
|
191
|
+
description: "Trap for Product-Market Fit stage"
|
|
192
|
+
},
|
|
193
|
+
"stage.growthScaleUp.trap.0": {
|
|
194
|
+
value: "Paid spend masking retention gaps",
|
|
195
|
+
description: "Trap for Growth / Scale-up stage"
|
|
196
|
+
},
|
|
197
|
+
"stage.growthScaleUp.trap.1": {
|
|
198
|
+
value: "Infra debt blocking launches",
|
|
199
|
+
description: "Trap for Growth / Scale-up stage"
|
|
200
|
+
},
|
|
201
|
+
"stage.expansionPlatform.trap.0": {
|
|
202
|
+
value: "Platform theater before wedge is solid",
|
|
203
|
+
description: "Trap for Expansion / Platform stage"
|
|
204
|
+
},
|
|
205
|
+
"stage.maturityRenewal.trap.0": {
|
|
206
|
+
value: "Assuming past success is enough",
|
|
207
|
+
description: "Trap for Maturity / Renewal stage"
|
|
208
|
+
},
|
|
209
|
+
"stage.exploration.focus.0": {
|
|
210
|
+
value: "Customer discovery",
|
|
211
|
+
description: "Focus area for Exploration stage"
|
|
212
|
+
},
|
|
213
|
+
"stage.exploration.focus.1": {
|
|
214
|
+
value: "Problem definition",
|
|
215
|
+
description: "Focus area for Exploration stage"
|
|
216
|
+
},
|
|
217
|
+
"stage.exploration.focus.2": {
|
|
218
|
+
value: "Segment clarity",
|
|
219
|
+
description: "Focus area for Exploration stage"
|
|
220
|
+
},
|
|
221
|
+
"stage.problemSolutionFit.focus.0": {
|
|
222
|
+
value: "Solution hypothesis",
|
|
223
|
+
description: "Focus area for Problem-Solution Fit stage"
|
|
224
|
+
},
|
|
225
|
+
"stage.problemSolutionFit.focus.1": {
|
|
226
|
+
value: "Value messaging",
|
|
227
|
+
description: "Focus area for Problem-Solution Fit stage"
|
|
228
|
+
},
|
|
229
|
+
"stage.problemSolutionFit.focus.2": {
|
|
230
|
+
value: "Feedback capture",
|
|
231
|
+
description: "Focus area for Problem-Solution Fit stage"
|
|
232
|
+
},
|
|
233
|
+
"stage.mvpEarlyTraction.focus.0": {
|
|
234
|
+
value: "Activation",
|
|
235
|
+
description: "Focus area for MVP & Early Traction stage"
|
|
236
|
+
},
|
|
237
|
+
"stage.mvpEarlyTraction.focus.1": {
|
|
238
|
+
value: "Cohort tracking",
|
|
239
|
+
description: "Focus area for MVP & Early Traction stage"
|
|
240
|
+
},
|
|
241
|
+
"stage.mvpEarlyTraction.focus.2": {
|
|
242
|
+
value: "Feedback rituals",
|
|
243
|
+
description: "Focus area for MVP & Early Traction stage"
|
|
244
|
+
},
|
|
245
|
+
"stage.productMarketFit.focus.0": {
|
|
246
|
+
value: "Retention",
|
|
247
|
+
description: "Focus area for Product-Market Fit stage"
|
|
248
|
+
},
|
|
249
|
+
"stage.productMarketFit.focus.1": {
|
|
250
|
+
value: "Reliability",
|
|
251
|
+
description: "Focus area for Product-Market Fit stage"
|
|
252
|
+
},
|
|
253
|
+
"stage.productMarketFit.focus.2": {
|
|
254
|
+
value: "ICP clarity",
|
|
255
|
+
description: "Focus area for Product-Market Fit stage"
|
|
256
|
+
},
|
|
257
|
+
"stage.growthScaleUp.focus.0": {
|
|
258
|
+
value: "Ops systems",
|
|
259
|
+
description: "Focus area for Growth / Scale-up stage"
|
|
260
|
+
},
|
|
261
|
+
"stage.growthScaleUp.focus.1": {
|
|
262
|
+
value: "Growth loops",
|
|
263
|
+
description: "Focus area for Growth / Scale-up stage"
|
|
264
|
+
},
|
|
265
|
+
"stage.growthScaleUp.focus.2": {
|
|
266
|
+
value: "Reliability engineering",
|
|
267
|
+
description: "Focus area for Growth / Scale-up stage"
|
|
268
|
+
},
|
|
269
|
+
"stage.expansionPlatform.focus.0": {
|
|
270
|
+
value: "Partnerships",
|
|
271
|
+
description: "Focus area for Expansion / Platform stage"
|
|
272
|
+
},
|
|
273
|
+
"stage.expansionPlatform.focus.1": {
|
|
274
|
+
value: "APIs",
|
|
275
|
+
description: "Focus area for Expansion / Platform stage"
|
|
276
|
+
},
|
|
277
|
+
"stage.expansionPlatform.focus.2": {
|
|
278
|
+
value: "New market validation",
|
|
279
|
+
description: "Focus area for Expansion / Platform stage"
|
|
280
|
+
},
|
|
281
|
+
"stage.maturityRenewal.focus.0": {
|
|
282
|
+
value: "Cost optimization",
|
|
283
|
+
description: "Focus area for Maturity / Renewal stage"
|
|
284
|
+
},
|
|
285
|
+
"stage.maturityRenewal.focus.1": {
|
|
286
|
+
value: "Reinvention bets",
|
|
287
|
+
description: "Focus area for Maturity / Renewal stage"
|
|
288
|
+
},
|
|
289
|
+
"stage.maturityRenewal.focus.2": {
|
|
290
|
+
value: "Sunset planning",
|
|
291
|
+
description: "Focus area for Maturity / Renewal stage"
|
|
292
|
+
},
|
|
293
|
+
"formatter.stageTitle": {
|
|
294
|
+
value: "Stage {order} \xB7 {name}",
|
|
295
|
+
description: "Title template for stage summary",
|
|
296
|
+
placeholders: [
|
|
297
|
+
{ name: "order", type: "number" },
|
|
298
|
+
{ name: "name", type: "string" }
|
|
299
|
+
]
|
|
300
|
+
},
|
|
301
|
+
"formatter.axis.product": {
|
|
302
|
+
value: "Product: {phase}",
|
|
303
|
+
description: "Product axis label in summary",
|
|
304
|
+
placeholders: [{ name: "phase", type: "string" }]
|
|
305
|
+
},
|
|
306
|
+
"formatter.axis.company": {
|
|
307
|
+
value: "Company: {phase}",
|
|
308
|
+
description: "Company axis label in summary",
|
|
309
|
+
placeholders: [{ name: "phase", type: "string" }]
|
|
310
|
+
},
|
|
311
|
+
"formatter.axis.capital": {
|
|
312
|
+
value: "Capital: {phase}",
|
|
313
|
+
description: "Capital axis label in summary",
|
|
314
|
+
placeholders: [{ name: "phase", type: "string" }]
|
|
315
|
+
},
|
|
316
|
+
"formatter.action.fallback": {
|
|
317
|
+
value: "Focus on upcoming milestones.",
|
|
318
|
+
description: "Default action copy when no top action exists"
|
|
319
|
+
},
|
|
320
|
+
"formatter.digest": {
|
|
321
|
+
value: "Next up for {name}: {actionCopy}",
|
|
322
|
+
description: "Recommendation digest template",
|
|
323
|
+
placeholders: [
|
|
324
|
+
{ name: "name", type: "string" },
|
|
325
|
+
{ name: "actionCopy", type: "string" }
|
|
326
|
+
]
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
});
|
|
330
|
+
|
|
331
|
+
// src/i18n/catalogs/fr.ts
|
|
332
|
+
import { defineTranslation as defineTranslation2 } from "@contractspec/lib.contracts-spec/translations";
|
|
333
|
+
var frMessages = defineTranslation2({
|
|
334
|
+
meta: {
|
|
335
|
+
key: "lifecycle.messages",
|
|
336
|
+
version: "1.0.0",
|
|
337
|
+
domain: "lifecycle",
|
|
338
|
+
description: "Display labels, stage metadata, and formatter strings for the lifecycle package (French)",
|
|
339
|
+
owners: ["platform"],
|
|
340
|
+
stability: "experimental"
|
|
341
|
+
},
|
|
342
|
+
locale: "fr",
|
|
343
|
+
fallback: "en",
|
|
344
|
+
messages: {
|
|
345
|
+
"stage.exploration.name": {
|
|
346
|
+
value: "Exploration / Id\xE9ation",
|
|
347
|
+
description: "Display name for the Exploration stage"
|
|
348
|
+
},
|
|
349
|
+
"stage.problemSolutionFit.name": {
|
|
350
|
+
value: "Ad\xE9quation probl\xE8me\u2013solution",
|
|
351
|
+
description: "Display name for the Problem-Solution Fit stage"
|
|
352
|
+
},
|
|
353
|
+
"stage.mvpEarlyTraction.name": {
|
|
354
|
+
value: "MVP et premi\xE8re traction",
|
|
355
|
+
description: "Display name for the MVP & Early Traction stage"
|
|
356
|
+
},
|
|
357
|
+
"stage.productMarketFit.name": {
|
|
358
|
+
value: "Ad\xE9quation produit\u2013march\xE9",
|
|
359
|
+
description: "Display name for the Product-Market Fit stage"
|
|
360
|
+
},
|
|
361
|
+
"stage.growthScaleUp.name": {
|
|
362
|
+
value: "Croissance / Mise \xE0 l\u2019\xE9chelle",
|
|
363
|
+
description: "Display name for the Growth / Scale-up stage"
|
|
364
|
+
},
|
|
365
|
+
"stage.expansionPlatform.name": {
|
|
366
|
+
value: "Expansion / Plateforme",
|
|
367
|
+
description: "Display name for the Expansion / Platform stage"
|
|
368
|
+
},
|
|
369
|
+
"stage.maturityRenewal.name": {
|
|
370
|
+
value: "Maturit\xE9 / Renouvellement",
|
|
371
|
+
description: "Display name for the Maturity / Renewal stage"
|
|
372
|
+
},
|
|
373
|
+
"stage.exploration.question": {
|
|
374
|
+
value: "Y a-t-il un probl\xE8me qui m\xE9rite mon temps ?",
|
|
375
|
+
description: "Key question for the Exploration stage"
|
|
376
|
+
},
|
|
377
|
+
"stage.problemSolutionFit.question": {
|
|
378
|
+
value: "Les gens se soucient-ils assez de cette solution ?",
|
|
379
|
+
description: "Key question for the Problem-Solution Fit stage"
|
|
380
|
+
},
|
|
381
|
+
"stage.mvpEarlyTraction.question": {
|
|
382
|
+
value: "Peut-on obtenir une utilisation r\xE9elle et apprendre vite ?",
|
|
383
|
+
description: "Key question for the MVP & Early Traction stage"
|
|
384
|
+
},
|
|
385
|
+
"stage.productMarketFit.question": {
|
|
386
|
+
value: "Est-ce que cela nous tire vers l\u2019avant ?",
|
|
387
|
+
description: "Key question for the Product-Market Fit stage"
|
|
388
|
+
},
|
|
389
|
+
"stage.growthScaleUp.question": {
|
|
390
|
+
value: "Peut-on faire cro\xEEtre de mani\xE8re r\xE9p\xE9table ?",
|
|
391
|
+
description: "Key question for the Growth / Scale-up stage"
|
|
392
|
+
},
|
|
393
|
+
"stage.expansionPlatform.question": {
|
|
394
|
+
value: "Quelle est la prochaine courbe de croissance ?",
|
|
395
|
+
description: "Key question for the Expansion / Platform stage"
|
|
396
|
+
},
|
|
397
|
+
"stage.maturityRenewal.question": {
|
|
398
|
+
value: "Optimiser, r\xE9inventer ou arr\xEAter ?",
|
|
399
|
+
description: "Key question for the Maturity / Renewal stage"
|
|
400
|
+
},
|
|
401
|
+
"stage.exploration.signal.0": {
|
|
402
|
+
value: "20+ entretiens de d\xE9couverte",
|
|
403
|
+
description: "Signal for Exploration stage"
|
|
404
|
+
},
|
|
405
|
+
"stage.exploration.signal.1": {
|
|
406
|
+
value: "\xC9nonc\xE9 clair du probl\xE8me",
|
|
407
|
+
description: "Signal for Exploration stage"
|
|
408
|
+
},
|
|
409
|
+
"stage.exploration.signal.2": {
|
|
410
|
+
value: "ICP nomm\xE9",
|
|
411
|
+
description: "Signal for Exploration stage"
|
|
412
|
+
},
|
|
413
|
+
"stage.problemSolutionFit.signal.0": {
|
|
414
|
+
value: "R\xE9utilisation du prototype",
|
|
415
|
+
description: "Signal for Problem-Solution Fit stage"
|
|
416
|
+
},
|
|
417
|
+
"stage.problemSolutionFit.signal.1": {
|
|
418
|
+
value: "\xC9nergie de recommandation",
|
|
419
|
+
description: "Signal for Problem-Solution Fit stage"
|
|
420
|
+
},
|
|
421
|
+
"stage.problemSolutionFit.signal.2": {
|
|
422
|
+
value: "Int\xE9r\xEAt de pr\xE9paiement",
|
|
423
|
+
description: "Signal for Problem-Solution Fit stage"
|
|
424
|
+
},
|
|
425
|
+
"stage.mvpEarlyTraction.signal.0": {
|
|
426
|
+
value: "20\u201350 utilisateurs actifs nomm\xE9s",
|
|
427
|
+
description: "Signal for MVP & Early Traction stage"
|
|
428
|
+
},
|
|
429
|
+
"stage.mvpEarlyTraction.signal.1": {
|
|
430
|
+
value: "Livraisons hebdomadaires",
|
|
431
|
+
description: "Signal for MVP & Early Traction stage"
|
|
432
|
+
},
|
|
433
|
+
"stage.mvpEarlyTraction.signal.2": {
|
|
434
|
+
value: "Retours bruyants",
|
|
435
|
+
description: "Signal for MVP & Early Traction stage"
|
|
436
|
+
},
|
|
437
|
+
"stage.productMarketFit.signal.0": {
|
|
438
|
+
value: "R\xE9tention sans h\xE9ro\xEFsme",
|
|
439
|
+
description: "Signal for Product-Market Fit stage"
|
|
440
|
+
},
|
|
441
|
+
"stage.productMarketFit.signal.1": {
|
|
442
|
+
value: "Bouche-\xE0-oreille organique",
|
|
443
|
+
description: "Signal for Product-Market Fit stage"
|
|
444
|
+
},
|
|
445
|
+
"stage.productMarketFit.signal.2": {
|
|
446
|
+
value: "T\xE9moignages de valeur",
|
|
447
|
+
description: "Signal for Product-Market Fit stage"
|
|
448
|
+
},
|
|
449
|
+
"stage.growthScaleUp.signal.0": {
|
|
450
|
+
value: "Canaux pr\xE9visibles",
|
|
451
|
+
description: "Signal for Growth / Scale-up stage"
|
|
452
|
+
},
|
|
453
|
+
"stage.growthScaleUp.signal.1": {
|
|
454
|
+
value: "Recrutements sp\xE9cialis\xE9s",
|
|
455
|
+
description: "Signal for Growth / Scale-up stage"
|
|
456
|
+
},
|
|
457
|
+
"stage.growthScaleUp.signal.2": {
|
|
458
|
+
value: "\xC9conomie unitaire en bonne voie",
|
|
459
|
+
description: "Signal for Growth / Scale-up stage"
|
|
460
|
+
},
|
|
461
|
+
"stage.expansionPlatform.signal.0": {
|
|
462
|
+
value: "M\xE9triques cl\xE9s stables",
|
|
463
|
+
description: "Signal for Expansion / Platform stage"
|
|
464
|
+
},
|
|
465
|
+
"stage.expansionPlatform.signal.1": {
|
|
466
|
+
value: "Demande partenaires/API",
|
|
467
|
+
description: "Signal for Expansion / Platform stage"
|
|
468
|
+
},
|
|
469
|
+
"stage.expansionPlatform.signal.2": {
|
|
470
|
+
value: "Attraction d\u2019\xE9cosyst\xE8me",
|
|
471
|
+
description: "Signal for Expansion / Platform stage"
|
|
472
|
+
},
|
|
473
|
+
"stage.maturityRenewal.signal.0": {
|
|
474
|
+
value: "Focus sur les marges",
|
|
475
|
+
description: "Signal for Maturity / Renewal stage"
|
|
476
|
+
},
|
|
477
|
+
"stage.maturityRenewal.signal.1": {
|
|
478
|
+
value: "Paris de portefeuille",
|
|
479
|
+
description: "Signal for Maturity / Renewal stage"
|
|
480
|
+
},
|
|
481
|
+
"stage.maturityRenewal.signal.2": {
|
|
482
|
+
value: "Rafra\xEEchissement du r\xE9cit",
|
|
483
|
+
description: "Signal for Maturity / Renewal stage"
|
|
484
|
+
},
|
|
485
|
+
"stage.exploration.trap.0": {
|
|
486
|
+
value: "Image de marque avant la d\xE9couverte",
|
|
487
|
+
description: "Trap for Exploration stage"
|
|
488
|
+
},
|
|
489
|
+
"stage.exploration.trap.1": {
|
|
490
|
+
value: "D\xE9cisions d\u2019outillage pr\xE9matur\xE9es",
|
|
491
|
+
description: "Trap for Exploration stage"
|
|
492
|
+
},
|
|
493
|
+
"stage.problemSolutionFit.trap.0": {
|
|
494
|
+
value: "\xAB Le march\xE9 est \xE9norme \xBB sans utilisateurs",
|
|
495
|
+
description: "Trap for Problem-Solution Fit stage"
|
|
496
|
+
},
|
|
497
|
+
"stage.problemSolutionFit.trap.1": {
|
|
498
|
+
value: "Sauter les boucles qualitatives",
|
|
499
|
+
description: "Trap for Problem-Solution Fit stage"
|
|
500
|
+
},
|
|
501
|
+
"stage.mvpEarlyTraction.trap.0": {
|
|
502
|
+
value: "Infra surdimensionn\xE9e pour 10 utilisateurs",
|
|
503
|
+
description: "Trap for MVP & Early Traction stage"
|
|
504
|
+
},
|
|
505
|
+
"stage.mvpEarlyTraction.trap.1": {
|
|
506
|
+
value: "M\xE9trique de r\xE9tention ind\xE9finie",
|
|
507
|
+
description: "Trap for MVP & Early Traction stage"
|
|
508
|
+
},
|
|
509
|
+
"stage.productMarketFit.trap.0": {
|
|
510
|
+
value: "Croissance h\xE9ro\xEFque non scalable",
|
|
511
|
+
description: "Trap for Product-Market Fit stage"
|
|
512
|
+
},
|
|
513
|
+
"stage.productMarketFit.trap.1": {
|
|
514
|
+
value: "Ignorer les signaux d\u2019attrition",
|
|
515
|
+
description: "Trap for Product-Market Fit stage"
|
|
516
|
+
},
|
|
517
|
+
"stage.growthScaleUp.trap.0": {
|
|
518
|
+
value: "D\xE9penses publicitaires masquant les probl\xE8mes de r\xE9tention",
|
|
519
|
+
description: "Trap for Growth / Scale-up stage"
|
|
520
|
+
},
|
|
521
|
+
"stage.growthScaleUp.trap.1": {
|
|
522
|
+
value: "Dette infra bloquant les lancements",
|
|
523
|
+
description: "Trap for Growth / Scale-up stage"
|
|
524
|
+
},
|
|
525
|
+
"stage.expansionPlatform.trap.0": {
|
|
526
|
+
value: "Th\xE9\xE2tre de plateforme avant que le coin soit solide",
|
|
527
|
+
description: "Trap for Expansion / Platform stage"
|
|
528
|
+
},
|
|
529
|
+
"stage.maturityRenewal.trap.0": {
|
|
530
|
+
value: "Supposer que le succ\xE8s pass\xE9 suffit",
|
|
531
|
+
description: "Trap for Maturity / Renewal stage"
|
|
532
|
+
},
|
|
533
|
+
"stage.exploration.focus.0": {
|
|
534
|
+
value: "D\xE9couverte client",
|
|
535
|
+
description: "Focus area for Exploration stage"
|
|
536
|
+
},
|
|
537
|
+
"stage.exploration.focus.1": {
|
|
538
|
+
value: "D\xE9finition du probl\xE8me",
|
|
539
|
+
description: "Focus area for Exploration stage"
|
|
540
|
+
},
|
|
541
|
+
"stage.exploration.focus.2": {
|
|
542
|
+
value: "Clart\xE9 du segment",
|
|
543
|
+
description: "Focus area for Exploration stage"
|
|
544
|
+
},
|
|
545
|
+
"stage.problemSolutionFit.focus.0": {
|
|
546
|
+
value: "Hypoth\xE8se de solution",
|
|
547
|
+
description: "Focus area for Problem-Solution Fit stage"
|
|
548
|
+
},
|
|
549
|
+
"stage.problemSolutionFit.focus.1": {
|
|
550
|
+
value: "Message de valeur",
|
|
551
|
+
description: "Focus area for Problem-Solution Fit stage"
|
|
552
|
+
},
|
|
553
|
+
"stage.problemSolutionFit.focus.2": {
|
|
554
|
+
value: "Capture de retours",
|
|
555
|
+
description: "Focus area for Problem-Solution Fit stage"
|
|
556
|
+
},
|
|
557
|
+
"stage.mvpEarlyTraction.focus.0": {
|
|
558
|
+
value: "Activation",
|
|
559
|
+
description: "Focus area for MVP & Early Traction stage"
|
|
560
|
+
},
|
|
561
|
+
"stage.mvpEarlyTraction.focus.1": {
|
|
562
|
+
value: "Suivi de cohortes",
|
|
563
|
+
description: "Focus area for MVP & Early Traction stage"
|
|
564
|
+
},
|
|
565
|
+
"stage.mvpEarlyTraction.focus.2": {
|
|
566
|
+
value: "Rituels de retours",
|
|
567
|
+
description: "Focus area for MVP & Early Traction stage"
|
|
568
|
+
},
|
|
569
|
+
"stage.productMarketFit.focus.0": {
|
|
570
|
+
value: "R\xE9tention",
|
|
571
|
+
description: "Focus area for Product-Market Fit stage"
|
|
572
|
+
},
|
|
573
|
+
"stage.productMarketFit.focus.1": {
|
|
574
|
+
value: "Fiabilit\xE9",
|
|
575
|
+
description: "Focus area for Product-Market Fit stage"
|
|
576
|
+
},
|
|
577
|
+
"stage.productMarketFit.focus.2": {
|
|
578
|
+
value: "Clart\xE9 de l\u2019ICP",
|
|
579
|
+
description: "Focus area for Product-Market Fit stage"
|
|
580
|
+
},
|
|
581
|
+
"stage.growthScaleUp.focus.0": {
|
|
582
|
+
value: "Syst\xE8mes op\xE9rationnels",
|
|
583
|
+
description: "Focus area for Growth / Scale-up stage"
|
|
584
|
+
},
|
|
585
|
+
"stage.growthScaleUp.focus.1": {
|
|
586
|
+
value: "Boucles de croissance",
|
|
587
|
+
description: "Focus area for Growth / Scale-up stage"
|
|
588
|
+
},
|
|
589
|
+
"stage.growthScaleUp.focus.2": {
|
|
590
|
+
value: "Ing\xE9nierie de fiabilit\xE9",
|
|
591
|
+
description: "Focus area for Growth / Scale-up stage"
|
|
592
|
+
},
|
|
593
|
+
"stage.expansionPlatform.focus.0": {
|
|
594
|
+
value: "Partenariats",
|
|
595
|
+
description: "Focus area for Expansion / Platform stage"
|
|
596
|
+
},
|
|
597
|
+
"stage.expansionPlatform.focus.1": {
|
|
598
|
+
value: "APIs",
|
|
599
|
+
description: "Focus area for Expansion / Platform stage"
|
|
600
|
+
},
|
|
601
|
+
"stage.expansionPlatform.focus.2": {
|
|
602
|
+
value: "Validation de nouveaux march\xE9s",
|
|
603
|
+
description: "Focus area for Expansion / Platform stage"
|
|
604
|
+
},
|
|
605
|
+
"stage.maturityRenewal.focus.0": {
|
|
606
|
+
value: "Optimisation des co\xFBts",
|
|
607
|
+
description: "Focus area for Maturity / Renewal stage"
|
|
608
|
+
},
|
|
609
|
+
"stage.maturityRenewal.focus.1": {
|
|
610
|
+
value: "Paris de r\xE9invention",
|
|
611
|
+
description: "Focus area for Maturity / Renewal stage"
|
|
612
|
+
},
|
|
613
|
+
"stage.maturityRenewal.focus.2": {
|
|
614
|
+
value: "Planification de fin de vie",
|
|
615
|
+
description: "Focus area for Maturity / Renewal stage"
|
|
616
|
+
},
|
|
617
|
+
"formatter.stageTitle": {
|
|
618
|
+
value: "\xC9tape {order} \xB7 {name}",
|
|
619
|
+
description: "Title template for stage summary"
|
|
620
|
+
},
|
|
621
|
+
"formatter.axis.product": {
|
|
622
|
+
value: "Produit : {phase}",
|
|
623
|
+
description: "Product axis label in summary"
|
|
624
|
+
},
|
|
625
|
+
"formatter.axis.company": {
|
|
626
|
+
value: "Entreprise : {phase}",
|
|
627
|
+
description: "Company axis label in summary"
|
|
628
|
+
},
|
|
629
|
+
"formatter.axis.capital": {
|
|
630
|
+
value: "Capital : {phase}",
|
|
631
|
+
description: "Capital axis label in summary"
|
|
632
|
+
},
|
|
633
|
+
"formatter.action.fallback": {
|
|
634
|
+
value: "Concentrez-vous sur les prochains jalons.",
|
|
635
|
+
description: "Default action copy when no top action exists"
|
|
636
|
+
},
|
|
637
|
+
"formatter.digest": {
|
|
638
|
+
value: "Prochaine \xE9tape pour {name} : {actionCopy}",
|
|
639
|
+
description: "Recommendation digest template"
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
});
|
|
643
|
+
|
|
644
|
+
// src/i18n/catalogs/es.ts
|
|
645
|
+
import { defineTranslation as defineTranslation3 } from "@contractspec/lib.contracts-spec/translations";
|
|
646
|
+
var esMessages = defineTranslation3({
|
|
647
|
+
meta: {
|
|
648
|
+
key: "lifecycle.messages",
|
|
649
|
+
version: "1.0.0",
|
|
650
|
+
domain: "lifecycle",
|
|
651
|
+
description: "Display labels, stage metadata, and formatter strings for the lifecycle package (Spanish)",
|
|
652
|
+
owners: ["platform"],
|
|
653
|
+
stability: "experimental"
|
|
654
|
+
},
|
|
655
|
+
locale: "es",
|
|
656
|
+
fallback: "en",
|
|
657
|
+
messages: {
|
|
658
|
+
"stage.exploration.name": {
|
|
659
|
+
value: "Exploraci\xF3n / Ideaci\xF3n",
|
|
660
|
+
description: "Display name for the Exploration stage"
|
|
661
|
+
},
|
|
662
|
+
"stage.problemSolutionFit.name": {
|
|
663
|
+
value: "Ajuste problema\u2013soluci\xF3n",
|
|
664
|
+
description: "Display name for the Problem-Solution Fit stage"
|
|
665
|
+
},
|
|
666
|
+
"stage.mvpEarlyTraction.name": {
|
|
667
|
+
value: "MVP y tracci\xF3n inicial",
|
|
668
|
+
description: "Display name for the MVP & Early Traction stage"
|
|
669
|
+
},
|
|
670
|
+
"stage.productMarketFit.name": {
|
|
671
|
+
value: "Ajuste producto\u2013mercado",
|
|
672
|
+
description: "Display name for the Product-Market Fit stage"
|
|
673
|
+
},
|
|
674
|
+
"stage.growthScaleUp.name": {
|
|
675
|
+
value: "Crecimiento / Escalamiento",
|
|
676
|
+
description: "Display name for the Growth / Scale-up stage"
|
|
677
|
+
},
|
|
678
|
+
"stage.expansionPlatform.name": {
|
|
679
|
+
value: "Expansi\xF3n / Plataforma",
|
|
680
|
+
description: "Display name for the Expansion / Platform stage"
|
|
681
|
+
},
|
|
682
|
+
"stage.maturityRenewal.name": {
|
|
683
|
+
value: "Madurez / Renovaci\xF3n",
|
|
684
|
+
description: "Display name for the Maturity / Renewal stage"
|
|
685
|
+
},
|
|
686
|
+
"stage.exploration.question": {
|
|
687
|
+
value: "\xBFHay un problema que merece mi tiempo?",
|
|
688
|
+
description: "Key question for the Exploration stage"
|
|
689
|
+
},
|
|
690
|
+
"stage.problemSolutionFit.question": {
|
|
691
|
+
value: "\xBFLa gente se preocupa lo suficiente por esta soluci\xF3n?",
|
|
692
|
+
description: "Key question for the Problem-Solution Fit stage"
|
|
693
|
+
},
|
|
694
|
+
"stage.mvpEarlyTraction.question": {
|
|
695
|
+
value: "\xBFPodemos obtener uso real y aprender r\xE1pido?",
|
|
696
|
+
description: "Key question for the MVP & Early Traction stage"
|
|
697
|
+
},
|
|
698
|
+
"stage.productMarketFit.question": {
|
|
699
|
+
value: "\xBFEsto nos est\xE1 impulsando hacia adelante?",
|
|
700
|
+
description: "Key question for the Product-Market Fit stage"
|
|
701
|
+
},
|
|
702
|
+
"stage.growthScaleUp.question": {
|
|
703
|
+
value: "\xBFPodemos crecer de forma repetible?",
|
|
704
|
+
description: "Key question for the Growth / Scale-up stage"
|
|
705
|
+
},
|
|
706
|
+
"stage.expansionPlatform.question": {
|
|
707
|
+
value: "\xBFCu\xE1l es la pr\xF3xima curva de crecimiento?",
|
|
708
|
+
description: "Key question for the Expansion / Platform stage"
|
|
709
|
+
},
|
|
710
|
+
"stage.maturityRenewal.question": {
|
|
711
|
+
value: "\xBFOptimizar, reinventar o descontinuar?",
|
|
712
|
+
description: "Key question for the Maturity / Renewal stage"
|
|
713
|
+
},
|
|
714
|
+
"stage.exploration.signal.0": {
|
|
715
|
+
value: "20+ entrevistas de descubrimiento",
|
|
716
|
+
description: "Signal for Exploration stage"
|
|
717
|
+
},
|
|
718
|
+
"stage.exploration.signal.1": {
|
|
719
|
+
value: "Planteamiento claro del problema",
|
|
720
|
+
description: "Signal for Exploration stage"
|
|
721
|
+
},
|
|
722
|
+
"stage.exploration.signal.2": {
|
|
723
|
+
value: "ICP identificado",
|
|
724
|
+
description: "Signal for Exploration stage"
|
|
725
|
+
},
|
|
726
|
+
"stage.problemSolutionFit.signal.0": {
|
|
727
|
+
value: "Reutilizaci\xF3n del prototipo",
|
|
728
|
+
description: "Signal for Problem-Solution Fit stage"
|
|
729
|
+
},
|
|
730
|
+
"stage.problemSolutionFit.signal.1": {
|
|
731
|
+
value: "Energ\xEDa de recomendaci\xF3n",
|
|
732
|
+
description: "Signal for Problem-Solution Fit stage"
|
|
733
|
+
},
|
|
734
|
+
"stage.problemSolutionFit.signal.2": {
|
|
735
|
+
value: "Inter\xE9s de prepago",
|
|
736
|
+
description: "Signal for Problem-Solution Fit stage"
|
|
737
|
+
},
|
|
738
|
+
"stage.mvpEarlyTraction.signal.0": {
|
|
739
|
+
value: "20\u201350 usuarios activos identificados",
|
|
740
|
+
description: "Signal for MVP & Early Traction stage"
|
|
741
|
+
},
|
|
742
|
+
"stage.mvpEarlyTraction.signal.1": {
|
|
743
|
+
value: "Lanzamientos semanales",
|
|
744
|
+
description: "Signal for MVP & Early Traction stage"
|
|
745
|
+
},
|
|
746
|
+
"stage.mvpEarlyTraction.signal.2": {
|
|
747
|
+
value: "Retroalimentaci\xF3n ruidosa",
|
|
748
|
+
description: "Signal for MVP & Early Traction stage"
|
|
749
|
+
},
|
|
750
|
+
"stage.productMarketFit.signal.0": {
|
|
751
|
+
value: "Retenci\xF3n sin hero\xEDsmos",
|
|
752
|
+
description: "Signal for Product-Market Fit stage"
|
|
753
|
+
},
|
|
754
|
+
"stage.productMarketFit.signal.1": {
|
|
755
|
+
value: "Boca a boca org\xE1nico",
|
|
756
|
+
description: "Signal for Product-Market Fit stage"
|
|
757
|
+
},
|
|
758
|
+
"stage.productMarketFit.signal.2": {
|
|
759
|
+
value: "Historias de valor",
|
|
760
|
+
description: "Signal for Product-Market Fit stage"
|
|
761
|
+
},
|
|
762
|
+
"stage.growthScaleUp.signal.0": {
|
|
763
|
+
value: "Canales predecibles",
|
|
764
|
+
description: "Signal for Growth / Scale-up stage"
|
|
765
|
+
},
|
|
766
|
+
"stage.growthScaleUp.signal.1": {
|
|
767
|
+
value: "Contrataciones especializadas",
|
|
768
|
+
description: "Signal for Growth / Scale-up stage"
|
|
769
|
+
},
|
|
770
|
+
"stage.growthScaleUp.signal.2": {
|
|
771
|
+
value: "Econom\xEDa unitaria en camino",
|
|
772
|
+
description: "Signal for Growth / Scale-up stage"
|
|
773
|
+
},
|
|
774
|
+
"stage.expansionPlatform.signal.0": {
|
|
775
|
+
value: "M\xE9tricas centrales estables",
|
|
776
|
+
description: "Signal for Expansion / Platform stage"
|
|
777
|
+
},
|
|
778
|
+
"stage.expansionPlatform.signal.1": {
|
|
779
|
+
value: "Demanda de socios/API",
|
|
780
|
+
description: "Signal for Expansion / Platform stage"
|
|
781
|
+
},
|
|
782
|
+
"stage.expansionPlatform.signal.2": {
|
|
783
|
+
value: "Atracci\xF3n del ecosistema",
|
|
784
|
+
description: "Signal for Expansion / Platform stage"
|
|
785
|
+
},
|
|
786
|
+
"stage.maturityRenewal.signal.0": {
|
|
787
|
+
value: "Enfoque en m\xE1rgenes",
|
|
788
|
+
description: "Signal for Maturity / Renewal stage"
|
|
789
|
+
},
|
|
790
|
+
"stage.maturityRenewal.signal.1": {
|
|
791
|
+
value: "Apuestas de portafolio",
|
|
792
|
+
description: "Signal for Maturity / Renewal stage"
|
|
793
|
+
},
|
|
794
|
+
"stage.maturityRenewal.signal.2": {
|
|
795
|
+
value: "Renovaci\xF3n de la narrativa",
|
|
796
|
+
description: "Signal for Maturity / Renewal stage"
|
|
797
|
+
},
|
|
798
|
+
"stage.exploration.trap.0": {
|
|
799
|
+
value: "Marca antes del descubrimiento",
|
|
800
|
+
description: "Trap for Exploration stage"
|
|
801
|
+
},
|
|
802
|
+
"stage.exploration.trap.1": {
|
|
803
|
+
value: "Decisiones de herramientas prematuras",
|
|
804
|
+
description: "Trap for Exploration stage"
|
|
805
|
+
},
|
|
806
|
+
"stage.problemSolutionFit.trap.0": {
|
|
807
|
+
value: "\xABEl mercado es enorme\xBB sin usuarios",
|
|
808
|
+
description: "Trap for Problem-Solution Fit stage"
|
|
809
|
+
},
|
|
810
|
+
"stage.problemSolutionFit.trap.1": {
|
|
811
|
+
value: "Saltar los ciclos cualitativos",
|
|
812
|
+
description: "Trap for Problem-Solution Fit stage"
|
|
813
|
+
},
|
|
814
|
+
"stage.mvpEarlyTraction.trap.0": {
|
|
815
|
+
value: "Infraestructura sobredimensionada para 10 usuarios",
|
|
816
|
+
description: "Trap for MVP & Early Traction stage"
|
|
817
|
+
},
|
|
818
|
+
"stage.mvpEarlyTraction.trap.1": {
|
|
819
|
+
value: "M\xE9trica de retenci\xF3n indefinida",
|
|
820
|
+
description: "Trap for MVP & Early Traction stage"
|
|
821
|
+
},
|
|
822
|
+
"stage.productMarketFit.trap.0": {
|
|
823
|
+
value: "Crecimiento heroico que no escala",
|
|
824
|
+
description: "Trap for Product-Market Fit stage"
|
|
825
|
+
},
|
|
826
|
+
"stage.productMarketFit.trap.1": {
|
|
827
|
+
value: "Ignorar se\xF1ales de abandono",
|
|
828
|
+
description: "Trap for Product-Market Fit stage"
|
|
829
|
+
},
|
|
830
|
+
"stage.growthScaleUp.trap.0": {
|
|
831
|
+
value: "Gasto publicitario enmascarando problemas de retenci\xF3n",
|
|
832
|
+
description: "Trap for Growth / Scale-up stage"
|
|
833
|
+
},
|
|
834
|
+
"stage.growthScaleUp.trap.1": {
|
|
835
|
+
value: "Deuda de infraestructura bloqueando lanzamientos",
|
|
836
|
+
description: "Trap for Growth / Scale-up stage"
|
|
837
|
+
},
|
|
838
|
+
"stage.expansionPlatform.trap.0": {
|
|
839
|
+
value: "Teatro de plataforma antes de que la cu\xF1a sea s\xF3lida",
|
|
840
|
+
description: "Trap for Expansion / Platform stage"
|
|
841
|
+
},
|
|
842
|
+
"stage.maturityRenewal.trap.0": {
|
|
843
|
+
value: "Asumir que el \xE9xito pasado es suficiente",
|
|
844
|
+
description: "Trap for Maturity / Renewal stage"
|
|
845
|
+
},
|
|
846
|
+
"stage.exploration.focus.0": {
|
|
847
|
+
value: "Descubrimiento de clientes",
|
|
848
|
+
description: "Focus area for Exploration stage"
|
|
849
|
+
},
|
|
850
|
+
"stage.exploration.focus.1": {
|
|
851
|
+
value: "Definici\xF3n del problema",
|
|
852
|
+
description: "Focus area for Exploration stage"
|
|
853
|
+
},
|
|
854
|
+
"stage.exploration.focus.2": {
|
|
855
|
+
value: "Claridad del segmento",
|
|
856
|
+
description: "Focus area for Exploration stage"
|
|
857
|
+
},
|
|
858
|
+
"stage.problemSolutionFit.focus.0": {
|
|
859
|
+
value: "Hip\xF3tesis de soluci\xF3n",
|
|
860
|
+
description: "Focus area for Problem-Solution Fit stage"
|
|
861
|
+
},
|
|
862
|
+
"stage.problemSolutionFit.focus.1": {
|
|
863
|
+
value: "Mensaje de valor",
|
|
864
|
+
description: "Focus area for Problem-Solution Fit stage"
|
|
865
|
+
},
|
|
866
|
+
"stage.problemSolutionFit.focus.2": {
|
|
867
|
+
value: "Captura de retroalimentaci\xF3n",
|
|
868
|
+
description: "Focus area for Problem-Solution Fit stage"
|
|
869
|
+
},
|
|
870
|
+
"stage.mvpEarlyTraction.focus.0": {
|
|
871
|
+
value: "Activaci\xF3n",
|
|
872
|
+
description: "Focus area for MVP & Early Traction stage"
|
|
873
|
+
},
|
|
874
|
+
"stage.mvpEarlyTraction.focus.1": {
|
|
875
|
+
value: "Seguimiento de cohortes",
|
|
876
|
+
description: "Focus area for MVP & Early Traction stage"
|
|
877
|
+
},
|
|
878
|
+
"stage.mvpEarlyTraction.focus.2": {
|
|
879
|
+
value: "Rituales de retroalimentaci\xF3n",
|
|
880
|
+
description: "Focus area for MVP & Early Traction stage"
|
|
881
|
+
},
|
|
882
|
+
"stage.productMarketFit.focus.0": {
|
|
883
|
+
value: "Retenci\xF3n",
|
|
884
|
+
description: "Focus area for Product-Market Fit stage"
|
|
885
|
+
},
|
|
886
|
+
"stage.productMarketFit.focus.1": {
|
|
887
|
+
value: "Fiabilidad",
|
|
888
|
+
description: "Focus area for Product-Market Fit stage"
|
|
889
|
+
},
|
|
890
|
+
"stage.productMarketFit.focus.2": {
|
|
891
|
+
value: "Claridad del ICP",
|
|
892
|
+
description: "Focus area for Product-Market Fit stage"
|
|
893
|
+
},
|
|
894
|
+
"stage.growthScaleUp.focus.0": {
|
|
895
|
+
value: "Sistemas operativos",
|
|
896
|
+
description: "Focus area for Growth / Scale-up stage"
|
|
897
|
+
},
|
|
898
|
+
"stage.growthScaleUp.focus.1": {
|
|
899
|
+
value: "Bucles de crecimiento",
|
|
900
|
+
description: "Focus area for Growth / Scale-up stage"
|
|
901
|
+
},
|
|
902
|
+
"stage.growthScaleUp.focus.2": {
|
|
903
|
+
value: "Ingenier\xEDa de fiabilidad",
|
|
904
|
+
description: "Focus area for Growth / Scale-up stage"
|
|
905
|
+
},
|
|
906
|
+
"stage.expansionPlatform.focus.0": {
|
|
907
|
+
value: "Alianzas",
|
|
908
|
+
description: "Focus area for Expansion / Platform stage"
|
|
909
|
+
},
|
|
910
|
+
"stage.expansionPlatform.focus.1": {
|
|
911
|
+
value: "APIs",
|
|
912
|
+
description: "Focus area for Expansion / Platform stage"
|
|
913
|
+
},
|
|
914
|
+
"stage.expansionPlatform.focus.2": {
|
|
915
|
+
value: "Validaci\xF3n de nuevos mercados",
|
|
916
|
+
description: "Focus area for Expansion / Platform stage"
|
|
917
|
+
},
|
|
918
|
+
"stage.maturityRenewal.focus.0": {
|
|
919
|
+
value: "Optimizaci\xF3n de costos",
|
|
920
|
+
description: "Focus area for Maturity / Renewal stage"
|
|
921
|
+
},
|
|
922
|
+
"stage.maturityRenewal.focus.1": {
|
|
923
|
+
value: "Apuestas de reinvenci\xF3n",
|
|
924
|
+
description: "Focus area for Maturity / Renewal stage"
|
|
925
|
+
},
|
|
926
|
+
"stage.maturityRenewal.focus.2": {
|
|
927
|
+
value: "Planificaci\xF3n de fin de vida",
|
|
928
|
+
description: "Focus area for Maturity / Renewal stage"
|
|
929
|
+
},
|
|
930
|
+
"formatter.stageTitle": {
|
|
931
|
+
value: "Etapa {order} \xB7 {name}",
|
|
932
|
+
description: "Title template for stage summary"
|
|
933
|
+
},
|
|
934
|
+
"formatter.axis.product": {
|
|
935
|
+
value: "Producto: {phase}",
|
|
936
|
+
description: "Product axis label in summary"
|
|
937
|
+
},
|
|
938
|
+
"formatter.axis.company": {
|
|
939
|
+
value: "Empresa: {phase}",
|
|
940
|
+
description: "Company axis label in summary"
|
|
941
|
+
},
|
|
942
|
+
"formatter.axis.capital": {
|
|
943
|
+
value: "Capital: {phase}",
|
|
944
|
+
description: "Capital axis label in summary"
|
|
945
|
+
},
|
|
946
|
+
"formatter.action.fallback": {
|
|
947
|
+
value: "Conc\xE9ntrese en los pr\xF3ximos hitos.",
|
|
948
|
+
description: "Default action copy when no top action exists"
|
|
949
|
+
},
|
|
950
|
+
"formatter.digest": {
|
|
951
|
+
value: "Pr\xF3ximo para {name}: {actionCopy}",
|
|
952
|
+
description: "Recommendation digest template"
|
|
953
|
+
}
|
|
954
|
+
}
|
|
955
|
+
});
|
|
956
|
+
|
|
957
|
+
// src/i18n/messages.ts
|
|
958
|
+
var factory = createI18nFactory({
|
|
959
|
+
specKey: "lifecycle.messages",
|
|
960
|
+
catalogs: [enMessages, frMessages, esMessages]
|
|
961
|
+
});
|
|
962
|
+
var createLifecycleI18n = factory.create;
|
|
963
|
+
var getDefaultI18n = factory.getDefault;
|
|
964
|
+
var resetI18nRegistry = factory.resetRegistry;
|
|
965
|
+
|
|
2
966
|
// src/types/stages.ts
|
|
3
967
|
var LifecycleStage;
|
|
4
968
|
((LifecycleStage2) => {
|
|
@@ -19,93 +983,58 @@ var LIFECYCLE_STAGE_ORDER = [
|
|
|
19
983
|
5 /* ExpansionPlatform */,
|
|
20
984
|
6 /* MaturityRenewal */
|
|
21
985
|
];
|
|
22
|
-
var
|
|
23
|
-
[0 /* Exploration */]:
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
[
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
[
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
},
|
|
71
|
-
[4 /* GrowthScaleUp */]: {
|
|
72
|
-
id: 4 /* GrowthScaleUp */,
|
|
73
|
-
order: 4,
|
|
74
|
-
slug: "growth-scale-up",
|
|
75
|
-
name: "Growth / Scale-up",
|
|
76
|
-
question: "Can we grow this repeatably?",
|
|
77
|
-
signals: [
|
|
78
|
-
"Predictable channels",
|
|
79
|
-
"Specialized hires",
|
|
80
|
-
"Unit economics on track"
|
|
81
|
-
],
|
|
82
|
-
traps: [
|
|
83
|
-
"Paid spend masking retention gaps",
|
|
84
|
-
"Infra debt blocking launches"
|
|
85
|
-
],
|
|
86
|
-
focusAreas: ["Ops systems", "Growth loops", "Reliability engineering"]
|
|
87
|
-
},
|
|
88
|
-
[5 /* ExpansionPlatform */]: {
|
|
89
|
-
id: 5 /* ExpansionPlatform */,
|
|
90
|
-
order: 5,
|
|
91
|
-
slug: "expansion-platform",
|
|
92
|
-
name: "Expansion / Platform",
|
|
93
|
-
question: "What is the next growth curve?",
|
|
94
|
-
signals: ["Stable core metrics", "Partner/API demand", "Ecosystem pull"],
|
|
95
|
-
traps: ["Platform theater before wedge is solid"],
|
|
96
|
-
focusAreas: ["Partnerships", "APIs", "New market validation"]
|
|
97
|
-
},
|
|
98
|
-
[6 /* MaturityRenewal */]: {
|
|
99
|
-
id: 6 /* MaturityRenewal */,
|
|
100
|
-
order: 6,
|
|
101
|
-
slug: "maturity-renewal",
|
|
102
|
-
name: "Maturity / Renewal",
|
|
103
|
-
question: "Optimize, reinvent, or sunset?",
|
|
104
|
-
signals: ["Margin focus", "Portfolio bets", "Narrative refresh"],
|
|
105
|
-
traps: ["Assuming past success is enough"],
|
|
106
|
-
focusAreas: ["Cost optimization", "Reinvention bets", "Sunset planning"]
|
|
986
|
+
var STAGE_KEY_PREFIXES = {
|
|
987
|
+
[0 /* Exploration */]: "stage.exploration",
|
|
988
|
+
[1 /* ProblemSolutionFit */]: "stage.problemSolutionFit",
|
|
989
|
+
[2 /* MvpEarlyTraction */]: "stage.mvpEarlyTraction",
|
|
990
|
+
[3 /* ProductMarketFit */]: "stage.productMarketFit",
|
|
991
|
+
[4 /* GrowthScaleUp */]: "stage.growthScaleUp",
|
|
992
|
+
[5 /* ExpansionPlatform */]: "stage.expansionPlatform",
|
|
993
|
+
[6 /* MaturityRenewal */]: "stage.maturityRenewal"
|
|
994
|
+
};
|
|
995
|
+
var SIGNAL_COUNT = 3;
|
|
996
|
+
var FOCUS_COUNT = 3;
|
|
997
|
+
var TRAP_COUNTS = {
|
|
998
|
+
[0 /* Exploration */]: 2,
|
|
999
|
+
[1 /* ProblemSolutionFit */]: 2,
|
|
1000
|
+
[2 /* MvpEarlyTraction */]: 2,
|
|
1001
|
+
[3 /* ProductMarketFit */]: 2,
|
|
1002
|
+
[4 /* GrowthScaleUp */]: 2,
|
|
1003
|
+
[5 /* ExpansionPlatform */]: 1,
|
|
1004
|
+
[6 /* MaturityRenewal */]: 1
|
|
1005
|
+
};
|
|
1006
|
+
var STAGE_SLUGS = {
|
|
1007
|
+
[0 /* Exploration */]: "exploration",
|
|
1008
|
+
[1 /* ProblemSolutionFit */]: "problem-solution-fit",
|
|
1009
|
+
[2 /* MvpEarlyTraction */]: "mvp-early-traction",
|
|
1010
|
+
[3 /* ProductMarketFit */]: "product-market-fit",
|
|
1011
|
+
[4 /* GrowthScaleUp */]: "growth-scale-up",
|
|
1012
|
+
[5 /* ExpansionPlatform */]: "expansion-platform",
|
|
1013
|
+
[6 /* MaturityRenewal */]: "maturity-renewal"
|
|
1014
|
+
};
|
|
1015
|
+
function buildStageMeta(stage, i18n) {
|
|
1016
|
+
const prefix = STAGE_KEY_PREFIXES[stage];
|
|
1017
|
+
const trapCount = TRAP_COUNTS[stage];
|
|
1018
|
+
return {
|
|
1019
|
+
id: stage,
|
|
1020
|
+
order: stage,
|
|
1021
|
+
slug: STAGE_SLUGS[stage],
|
|
1022
|
+
name: i18n.t(`${prefix}.name`),
|
|
1023
|
+
question: i18n.t(`${prefix}.question`),
|
|
1024
|
+
signals: Array.from({ length: SIGNAL_COUNT }, (_, i) => i18n.t(`${prefix}.signal.${i}`)),
|
|
1025
|
+
traps: Array.from({ length: trapCount }, (_, i) => i18n.t(`${prefix}.trap.${i}`)),
|
|
1026
|
+
focusAreas: Array.from({ length: FOCUS_COUNT }, (_, i) => i18n.t(`${prefix}.focus.${i}`))
|
|
1027
|
+
};
|
|
1028
|
+
}
|
|
1029
|
+
var getLocalizedStageMeta = (locale) => {
|
|
1030
|
+
const i18n = locale ? createLifecycleI18n(locale) : getDefaultI18n();
|
|
1031
|
+
const result = {};
|
|
1032
|
+
for (const stage of LIFECYCLE_STAGE_ORDER) {
|
|
1033
|
+
result[stage] = buildStageMeta(stage, i18n);
|
|
107
1034
|
}
|
|
1035
|
+
return result;
|
|
108
1036
|
};
|
|
1037
|
+
var LIFECYCLE_STAGE_META = getLocalizedStageMeta("en");
|
|
109
1038
|
var getLifecycleStageBySlug = (slug) => {
|
|
110
1039
|
const entry = Object.values(LIFECYCLE_STAGE_META).find((meta) => meta.slug === slug);
|
|
111
1040
|
if (!entry) {
|
|
@@ -139,10 +1068,15 @@ var CapitalPhase;
|
|
|
139
1068
|
CapitalPhase2["LateStage"] = "LateStage";
|
|
140
1069
|
})(CapitalPhase ||= {});
|
|
141
1070
|
// src/utils/formatters.ts
|
|
142
|
-
var formatStageSummary = (stage, assessment) => {
|
|
143
|
-
const
|
|
144
|
-
const
|
|
145
|
-
const
|
|
1071
|
+
var formatStageSummary = (stage, assessment, locale) => {
|
|
1072
|
+
const i18n = locale ? createLifecycleI18n(locale) : getDefaultI18n();
|
|
1073
|
+
const stageMeta = locale ? getLocalizedStageMeta(locale) : LIFECYCLE_STAGE_META;
|
|
1074
|
+
const meta = stageMeta[stage];
|
|
1075
|
+
const title = i18n.t("formatter.stageTitle", {
|
|
1076
|
+
order: meta.order,
|
|
1077
|
+
name: meta.name
|
|
1078
|
+
});
|
|
1079
|
+
const axesSummary = assessment ? summarizeAxes(assessment.axes, locale) : [];
|
|
146
1080
|
return {
|
|
147
1081
|
title,
|
|
148
1082
|
question: meta.question,
|
|
@@ -152,30 +1086,39 @@ var formatStageSummary = (stage, assessment) => {
|
|
|
152
1086
|
axesSummary
|
|
153
1087
|
};
|
|
154
1088
|
};
|
|
155
|
-
var summarizeAxes = (axes) =>
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
1089
|
+
var summarizeAxes = (axes, locale) => {
|
|
1090
|
+
const i18n = locale ? createLifecycleI18n(locale) : getDefaultI18n();
|
|
1091
|
+
return [
|
|
1092
|
+
i18n.t("formatter.axis.product", { phase: axes.product }),
|
|
1093
|
+
i18n.t("formatter.axis.company", { phase: axes.company }),
|
|
1094
|
+
i18n.t("formatter.axis.capital", { phase: axes.capital })
|
|
1095
|
+
];
|
|
1096
|
+
};
|
|
160
1097
|
var rankStageCandidates = (scores) => [...scores].sort((a, b) => {
|
|
161
1098
|
if (b.score === a.score) {
|
|
162
1099
|
return b.confidence - a.confidence;
|
|
163
1100
|
}
|
|
164
1101
|
return b.score - a.score;
|
|
165
1102
|
});
|
|
166
|
-
var createRecommendationDigest = (recommendation) => {
|
|
167
|
-
const
|
|
1103
|
+
var createRecommendationDigest = (recommendation, locale) => {
|
|
1104
|
+
const i18n = locale ? createLifecycleI18n(locale) : getDefaultI18n();
|
|
1105
|
+
const stageMeta = locale ? getLocalizedStageMeta(locale) : LIFECYCLE_STAGE_META;
|
|
1106
|
+
const meta = stageMeta[recommendation.stage];
|
|
168
1107
|
const topAction = recommendation.actions[0];
|
|
169
|
-
const actionCopy = topAction ? `${topAction.title} (${topAction.estimatedImpact} impact)` : "
|
|
170
|
-
return
|
|
1108
|
+
const actionCopy = topAction ? `${topAction.title} (${topAction.estimatedImpact} impact)` : i18n.t("formatter.action.fallback");
|
|
1109
|
+
return i18n.t("formatter.digest", { name: meta.name, actionCopy });
|
|
1110
|
+
};
|
|
1111
|
+
var getStageLabel = (stage, locale) => {
|
|
1112
|
+
const stageMeta = locale ? getLocalizedStageMeta(locale) : LIFECYCLE_STAGE_META;
|
|
1113
|
+
return stageMeta[stage].name;
|
|
171
1114
|
};
|
|
172
|
-
var getStageLabel = (stage) => LIFECYCLE_STAGE_META[stage].name;
|
|
173
1115
|
var getStageOrderIndex = (stage) => LIFECYCLE_STAGE_ORDER.indexOf(stage);
|
|
174
1116
|
export {
|
|
175
1117
|
summarizeAxes,
|
|
176
1118
|
rankStageCandidates,
|
|
177
1119
|
getStageOrderIndex,
|
|
178
1120
|
getStageLabel,
|
|
1121
|
+
getLocalizedStageMeta,
|
|
179
1122
|
getLifecycleStageBySlug,
|
|
180
1123
|
formatStageSummary,
|
|
181
1124
|
createRecommendationDigest,
|