@churnkey/react 0.6.5 → 0.7.1

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 (35) hide show
  1. package/dist/{chunk-H5IHOYUF.cjs → chunk-ER6YITYC.cjs} +202 -9
  2. package/dist/chunk-ER6YITYC.cjs.map +1 -0
  3. package/dist/{chunk-W47U2HRC.cjs → chunk-FK4AJOX6.cjs} +7 -6
  4. package/dist/chunk-FK4AJOX6.cjs.map +1 -0
  5. package/dist/{chunk-EYIGZLVT.js → chunk-GH5EKETT.js} +6 -3
  6. package/dist/chunk-GH5EKETT.js.map +1 -0
  7. package/dist/{chunk-XHXG43PW.js → chunk-GNRS7V7H.js} +4 -3
  8. package/dist/chunk-GNRS7V7H.js.map +1 -0
  9. package/dist/{chunk-WVSNF3TN.cjs → chunk-M6Z3BHEH.cjs} +6 -2
  10. package/dist/chunk-M6Z3BHEH.cjs.map +1 -0
  11. package/dist/{chunk-F6IP3LGK.js → chunk-RFKW3LWM.js} +199 -10
  12. package/dist/chunk-RFKW3LWM.js.map +1 -0
  13. package/dist/core.cjs +30 -14
  14. package/dist/core.d.cts +22 -6
  15. package/dist/core.d.ts +22 -6
  16. package/dist/core.js +2 -2
  17. package/dist/headless.cjs +3 -3
  18. package/dist/headless.d.cts +4 -1
  19. package/dist/headless.d.ts +4 -1
  20. package/dist/headless.js +2 -2
  21. package/dist/index.cjs +238 -163
  22. package/dist/index.cjs.map +1 -1
  23. package/dist/index.d.cts +15 -15
  24. package/dist/index.d.ts +15 -15
  25. package/dist/index.js +135 -76
  26. package/dist/index.js.map +1 -1
  27. package/dist/{step-graph-Dee2cFLK.d.cts → step-graph-C7JC8Umv.d.cts} +199 -1
  28. package/dist/{step-graph-Dee2cFLK.d.ts → step-graph-C7JC8Umv.d.ts} +199 -1
  29. package/package.json +1 -1
  30. package/dist/chunk-EYIGZLVT.js.map +0 -1
  31. package/dist/chunk-F6IP3LGK.js.map +0 -1
  32. package/dist/chunk-H5IHOYUF.cjs.map +0 -1
  33. package/dist/chunk-W47U2HRC.cjs.map +0 -1
  34. package/dist/chunk-WVSNF3TN.cjs.map +0 -1
  35. package/dist/chunk-XHXG43PW.js.map +0 -1
package/dist/index.cjs CHANGED
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkW47U2HRC_cjs = require('./chunk-W47U2HRC.cjs');
4
- var chunkWVSNF3TN_cjs = require('./chunk-WVSNF3TN.cjs');
5
- var chunkH5IHOYUF_cjs = require('./chunk-H5IHOYUF.cjs');
3
+ var chunkFK4AJOX6_cjs = require('./chunk-FK4AJOX6.cjs');
4
+ var chunkM6Z3BHEH_cjs = require('./chunk-M6Z3BHEH.cjs');
5
+ var chunkER6YITYC_cjs = require('./chunk-ER6YITYC.cjs');
6
6
  var react = require('react');
7
7
  var jsxRuntime = require('react/jsx-runtime');
8
8
 
@@ -24,33 +24,37 @@ function DefaultConfirm({
24
24
  lossesLabel,
25
25
  confirmLabel,
26
26
  goBackLabel,
27
+ periodEndNotice,
27
28
  onConfirm,
28
29
  onGoBack,
29
30
  isProcessing,
30
- classNames
31
+ classNames,
32
+ messages
31
33
  }) {
34
+ const m = messages ?? chunkER6YITYC_cjs.defaultMessages;
32
35
  const hasLosses = Array.isArray(losses) && losses.length > 0;
33
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkH5IHOYUF_cjs.cn("ck-step ck-step-confirm", classNames?.root), children: [
34
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: chunkH5IHOYUF_cjs.cn("ck-step-title", classNames?.title), children: title }),
35
- description && /* @__PURE__ */ jsxRuntime.jsx(RichText, { as: "div", html: description, className: chunkH5IHOYUF_cjs.cn("ck-step-description", classNames?.description) }),
36
- hasLosses && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkH5IHOYUF_cjs.cn("ck-loss-block", classNames?.lossList), children: [
37
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkH5IHOYUF_cjs.cn("ck-loss-label", classNames?.lossLabel), children: lossesLabel ?? "You'll lose access to:" }),
38
- /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "ck-loss-list", children: losses.map((item) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: chunkH5IHOYUF_cjs.cn("ck-loss-item", classNames?.lossItem), children: [
39
- /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true, className: chunkH5IHOYUF_cjs.cn("ck-loss-bullet", classNames?.lossBullet), children: "\u25CF" }),
36
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkER6YITYC_cjs.cn("ck-step ck-step-confirm", classNames?.root), children: [
37
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: chunkER6YITYC_cjs.cn("ck-step-title", classNames?.title), children: title }),
38
+ description && /* @__PURE__ */ jsxRuntime.jsx(RichText, { as: "div", html: description, className: chunkER6YITYC_cjs.cn("ck-step-description", classNames?.description) }),
39
+ hasLosses && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkER6YITYC_cjs.cn("ck-loss-block", classNames?.lossList), children: [
40
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkER6YITYC_cjs.cn("ck-loss-label", classNames?.lossLabel), children: lossesLabel ?? m.confirm.lossesLabel }),
41
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "ck-loss-list", children: losses.map((item) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: chunkER6YITYC_cjs.cn("ck-loss-item", classNames?.lossItem), children: [
42
+ /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true, className: chunkER6YITYC_cjs.cn("ck-loss-bullet", classNames?.lossBullet), children: "\u25CF" }),
40
43
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: item })
41
44
  ] }, item)) })
42
45
  ] }),
46
+ periodEndNotice && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkER6YITYC_cjs.cn("ck-period-end", classNames?.periodEndNotice), children: periodEndNotice }),
43
47
  /* @__PURE__ */ jsxRuntime.jsx(
44
48
  "button",
45
49
  {
46
50
  type: "button",
47
- className: chunkH5IHOYUF_cjs.cn("ck-button ck-button-danger", classNames?.confirmButton),
51
+ className: chunkER6YITYC_cjs.cn("ck-button ck-button-danger", classNames?.confirmButton),
48
52
  onClick: onConfirm,
49
53
  disabled: isProcessing,
50
- children: isProcessing ? "Processing..." : confirmLabel
54
+ children: isProcessing ? m.common.processing : confirmLabel
51
55
  }
52
56
  ),
53
- /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: chunkH5IHOYUF_cjs.cn("ck-button-link", classNames?.goBackButton), onClick: onGoBack, children: goBackLabel })
57
+ /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: chunkER6YITYC_cjs.cn("ck-button-link", classNames?.goBackButton), onClick: onGoBack, children: goBackLabel })
54
58
  ] });
55
59
  }
56
60
  function DefaultFeedback({
@@ -62,20 +66,22 @@ function DefaultFeedback({
62
66
  value,
63
67
  onChange,
64
68
  onSubmit,
65
- classNames
69
+ classNames,
70
+ messages
66
71
  }) {
72
+ const m = messages ?? chunkER6YITYC_cjs.defaultMessages;
67
73
  const [focused, setFocused] = react.useState(false);
68
74
  const hasMin = minLength > 0;
69
75
  const isUnderMin = hasMin && value.length > 0 && value.length < minLength;
70
76
  const isValid = !required || value.length >= minLength;
71
- const placeholderText = placeholder ?? (hasMin ? `At least ${minLength} characters\u2026` : "Type your thoughts\u2026");
72
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkH5IHOYUF_cjs.cn("ck-step ck-step-feedback", classNames?.root), children: [
73
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: chunkH5IHOYUF_cjs.cn("ck-step-title", classNames?.title), children: title }),
74
- description && /* @__PURE__ */ jsxRuntime.jsx(RichText, { as: "div", html: description, className: chunkH5IHOYUF_cjs.cn("ck-step-description", classNames?.description) }),
77
+ const placeholderText = placeholder ?? (hasMin ? chunkER6YITYC_cjs.formatMessage(m.feedback.placeholderWithMin, { minLength }) : m.feedback.placeholder);
78
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkER6YITYC_cjs.cn("ck-step ck-step-feedback", classNames?.root), children: [
79
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: chunkER6YITYC_cjs.cn("ck-step-title", classNames?.title), children: title }),
80
+ description && /* @__PURE__ */ jsxRuntime.jsx(RichText, { as: "div", html: description, className: chunkER6YITYC_cjs.cn("ck-step-description", classNames?.description) }),
75
81
  /* @__PURE__ */ jsxRuntime.jsxs(
76
82
  "div",
77
83
  {
78
- className: chunkH5IHOYUF_cjs.cn(
84
+ className: chunkER6YITYC_cjs.cn(
79
85
  "ck-feedback-field",
80
86
  focused && "ck-feedback-field--focused",
81
87
  isUnderMin && "ck-feedback-field--invalid"
@@ -84,7 +90,7 @@ function DefaultFeedback({
84
90
  /* @__PURE__ */ jsxRuntime.jsx(
85
91
  "textarea",
86
92
  {
87
- className: chunkH5IHOYUF_cjs.cn("ck-textarea", classNames?.textarea),
93
+ className: chunkER6YITYC_cjs.cn("ck-textarea", classNames?.textarea),
88
94
  placeholder: placeholderText,
89
95
  value,
90
96
  onChange: (e) => onChange(e.target.value),
@@ -96,7 +102,7 @@ function DefaultFeedback({
96
102
  hasMin && /* @__PURE__ */ jsxRuntime.jsxs(
97
103
  "div",
98
104
  {
99
- className: chunkH5IHOYUF_cjs.cn(
105
+ className: chunkER6YITYC_cjs.cn(
100
106
  "ck-character-count",
101
107
  isUnderMin && "ck-character-count--invalid",
102
108
  classNames?.characterCount
@@ -115,10 +121,10 @@ function DefaultFeedback({
115
121
  "button",
116
122
  {
117
123
  type: "button",
118
- className: chunkH5IHOYUF_cjs.cn("ck-button ck-button-primary", classNames?.submitButton),
124
+ className: chunkER6YITYC_cjs.cn("ck-button ck-button-primary", classNames?.submitButton),
119
125
  onClick: onSubmit,
120
126
  disabled: !isValid,
121
- children: "Continue"
127
+ children: m.common.continue
122
128
  }
123
129
  )
124
130
  ] });
@@ -130,25 +136,27 @@ function DefaultContactOffer({
130
136
  onAccept,
131
137
  onDecline,
132
138
  isProcessing,
133
- classNames
139
+ classNames,
140
+ messages
134
141
  }) {
142
+ const msg = messages ?? chunkER6YITYC_cjs.defaultMessages;
135
143
  const headline = title ?? offer.copy.headline;
136
144
  const body = description ?? offer.copy.body;
137
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkH5IHOYUF_cjs.cn("ck-step ck-step-offer", classNames?.root), children: [
138
- headline && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: chunkH5IHOYUF_cjs.cn("ck-step-title", classNames?.title), children: headline }),
139
- body && /* @__PURE__ */ jsxRuntime.jsx(RichText, { as: "div", html: body, className: chunkH5IHOYUF_cjs.cn("ck-step-description", classNames?.description) }),
140
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkH5IHOYUF_cjs.cn("ck-offer-card", classNames?.card), children: [
145
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkER6YITYC_cjs.cn("ck-step ck-step-offer", classNames?.root), children: [
146
+ headline && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: chunkER6YITYC_cjs.cn("ck-step-title", classNames?.title), children: headline }),
147
+ body && /* @__PURE__ */ jsxRuntime.jsx(RichText, { as: "div", html: body, className: chunkER6YITYC_cjs.cn("ck-step-description", classNames?.description) }),
148
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkER6YITYC_cjs.cn("ck-offer-card", classNames?.card), children: [
141
149
  /* @__PURE__ */ jsxRuntime.jsx(
142
150
  "button",
143
151
  {
144
152
  type: "button",
145
- className: chunkH5IHOYUF_cjs.cn("ck-button ck-button-primary", classNames?.acceptButton),
153
+ className: chunkER6YITYC_cjs.cn("ck-button ck-button-primary", classNames?.acceptButton),
146
154
  onClick: () => onAccept(),
147
155
  disabled: isProcessing,
148
- children: isProcessing ? "Processing..." : offer.copy.cta
156
+ children: isProcessing ? msg.common.processing : msg.offer.acceptCta.contact || offer.copy.cta
149
157
  }
150
158
  ),
151
- /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: chunkH5IHOYUF_cjs.cn("ck-button-link", classNames?.declineButton), onClick: onDecline, children: offer.copy.declineCta })
159
+ /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: chunkER6YITYC_cjs.cn("ck-button-link", classNames?.declineButton), onClick: onDecline, children: msg.offer.declineCta || offer.copy.declineCta })
152
160
  ] })
153
161
  ] });
154
162
  }
@@ -159,31 +167,33 @@ function DefaultDiscountOffer({
159
167
  onAccept,
160
168
  onDecline,
161
169
  isProcessing,
162
- classNames
170
+ classNames,
171
+ messages
163
172
  }) {
173
+ const msg = messages ?? chunkER6YITYC_cjs.defaultMessages;
164
174
  const o = offer;
165
175
  const headline = title ?? offer.copy.headline;
166
176
  const body = description ?? offer.copy.body;
167
- const phrase = chunkWVSNF3TN_cjs.discountPhrase(o);
168
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkH5IHOYUF_cjs.cn("ck-step ck-step-offer", classNames?.root), children: [
169
- headline && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: chunkH5IHOYUF_cjs.cn("ck-step-title", classNames?.title), children: headline }),
170
- body && /* @__PURE__ */ jsxRuntime.jsx(RichText, { as: "div", html: body, className: chunkH5IHOYUF_cjs.cn("ck-step-description", classNames?.description) }),
171
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkH5IHOYUF_cjs.cn("ck-offer-card", classNames?.card), children: [
177
+ const phrase = chunkM6Z3BHEH_cjs.discountPhrase(o);
178
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkER6YITYC_cjs.cn("ck-step ck-step-offer", classNames?.root), children: [
179
+ headline && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: chunkER6YITYC_cjs.cn("ck-step-title", classNames?.title), children: headline }),
180
+ body && /* @__PURE__ */ jsxRuntime.jsx(RichText, { as: "div", html: body, className: chunkER6YITYC_cjs.cn("ck-step-description", classNames?.description) }),
181
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkER6YITYC_cjs.cn("ck-offer-card", classNames?.card), children: [
172
182
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ck-offer-details ck-offer-discount", children: [
173
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ck-offer-discount-eyebrow", children: "Limited-time offer" }),
183
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ck-offer-discount-eyebrow", children: msg.offer.limitedTimeEyebrow }),
174
184
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ck-offer-discount-phrase", children: phrase })
175
185
  ] }),
176
186
  /* @__PURE__ */ jsxRuntime.jsx(
177
187
  "button",
178
188
  {
179
189
  type: "button",
180
- className: chunkH5IHOYUF_cjs.cn("ck-button ck-button-primary", classNames?.acceptButton),
190
+ className: chunkER6YITYC_cjs.cn("ck-button ck-button-primary", classNames?.acceptButton),
181
191
  onClick: () => onAccept(),
182
192
  disabled: isProcessing,
183
- children: isProcessing ? "Processing..." : offer.copy.cta
193
+ children: isProcessing ? msg.common.processing : msg.offer.acceptCta.discount || offer.copy.cta
184
194
  }
185
195
  ),
186
- /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: chunkH5IHOYUF_cjs.cn("ck-button-link", classNames?.declineButton), onClick: onDecline, children: offer.copy.declineCta })
196
+ /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: chunkER6YITYC_cjs.cn("ck-button-link", classNames?.declineButton), onClick: onDecline, children: msg.offer.declineCta || offer.copy.declineCta })
187
197
  ] })
188
198
  ] });
189
199
  }
@@ -194,8 +204,10 @@ function DefaultPauseOffer({
194
204
  onAccept,
195
205
  onDecline,
196
206
  isProcessing,
197
- classNames
207
+ classNames,
208
+ messages
198
209
  }) {
210
+ const msg = messages ?? chunkER6YITYC_cjs.defaultMessages;
199
211
  const o = offer;
200
212
  const max = Math.max(1, o.months);
201
213
  const [months, setMonths] = react.useState(1);
@@ -203,24 +215,24 @@ function DefaultPauseOffer({
203
215
  const body = description ?? offer.copy.body;
204
216
  const resume = /* @__PURE__ */ new Date();
205
217
  resume.setMonth(resume.getMonth() + months);
206
- const resumeDate = chunkWVSNF3TN_cjs.formatMonthDayLong(resume);
207
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkH5IHOYUF_cjs.cn("ck-step ck-step-offer", classNames?.root), children: [
208
- headline && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: chunkH5IHOYUF_cjs.cn("ck-step-title", classNames?.title), children: headline }),
209
- body && /* @__PURE__ */ jsxRuntime.jsx(RichText, { as: "div", html: body, className: chunkH5IHOYUF_cjs.cn("ck-step-description", classNames?.description) }),
210
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkH5IHOYUF_cjs.cn("ck-offer-card ck-pause-card", classNames?.card), children: [
211
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ck-pause-eyebrow", children: "We'll see you back on" }),
218
+ const resumeDate = chunkM6Z3BHEH_cjs.formatMonthDayLong(resume);
219
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkER6YITYC_cjs.cn("ck-step ck-step-offer", classNames?.root), children: [
220
+ headline && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: chunkER6YITYC_cjs.cn("ck-step-title", classNames?.title), children: headline }),
221
+ body && /* @__PURE__ */ jsxRuntime.jsx(RichText, { as: "div", html: body, className: chunkER6YITYC_cjs.cn("ck-step-description", classNames?.description) }),
222
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkER6YITYC_cjs.cn("ck-offer-card ck-pause-card", classNames?.card), children: [
223
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ck-pause-eyebrow", children: msg.offer.pauseEyebrow }),
212
224
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ck-pause-date", children: resumeDate }),
213
- max > 1 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkH5IHOYUF_cjs.cn("ck-pause-chips", classNames?.pauseSlider), children: Array.from({ length: max }, (_, i) => i + 1).map((m) => /* @__PURE__ */ jsxRuntime.jsxs(
225
+ max > 1 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkER6YITYC_cjs.cn("ck-pause-chips", classNames?.pauseSlider), children: Array.from({ length: max }, (_, i) => i + 1).map((m) => /* @__PURE__ */ jsxRuntime.jsxs(
214
226
  "button",
215
227
  {
216
228
  type: "button",
217
229
  onClick: () => setMonths(m),
218
- className: chunkH5IHOYUF_cjs.cn("ck-pause-chip", m === months && "ck-pause-chip--selected"),
230
+ className: chunkER6YITYC_cjs.cn("ck-pause-chip", m === months && "ck-pause-chip--selected"),
219
231
  "aria-pressed": m === months,
220
232
  children: [
221
233
  m,
222
234
  " ",
223
- m === 1 ? "month" : "months"
235
+ m === 1 ? msg.common.month : msg.common.months
224
236
  ]
225
237
  },
226
238
  m
@@ -230,13 +242,13 @@ function DefaultPauseOffer({
230
242
  "button",
231
243
  {
232
244
  type: "button",
233
- className: chunkH5IHOYUF_cjs.cn("ck-button ck-button-primary", classNames?.acceptButton),
245
+ className: chunkER6YITYC_cjs.cn("ck-button ck-button-primary", classNames?.acceptButton),
234
246
  onClick: () => onAccept({ months }),
235
247
  disabled: isProcessing,
236
- children: isProcessing ? "Processing..." : offer.copy.cta
248
+ children: isProcessing ? msg.common.processing : msg.offer.acceptCta.pause || offer.copy.cta
237
249
  }
238
250
  ),
239
- /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: chunkH5IHOYUF_cjs.cn("ck-button-link", classNames?.declineButton), onClick: onDecline, children: offer.copy.declineCta })
251
+ /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: chunkER6YITYC_cjs.cn("ck-button-link", classNames?.declineButton), onClick: onDecline, children: msg.offer.declineCta || offer.copy.declineCta })
240
252
  ] });
241
253
  }
242
254
  function Checkmark({ color = "currentColor", size = 14 }) {
@@ -250,8 +262,10 @@ function DefaultPlanChangeOffer({
250
262
  onAccept,
251
263
  onDecline,
252
264
  isProcessing,
253
- classNames
265
+ classNames,
266
+ messages
254
267
  }) {
268
+ const msg = messages ?? chunkER6YITYC_cjs.defaultMessages;
255
269
  const o = offer;
256
270
  const plans = o.plans ?? [];
257
271
  const currentPlanId = subscriptions[0]?.items[0]?.price.id;
@@ -260,11 +274,11 @@ function DefaultPlanChangeOffer({
260
274
  const selectedPlan = plans.find((p) => p.id === selectedPlanId) ?? null;
261
275
  const headline = title ?? offer.copy.headline;
262
276
  const body = description ?? offer.copy.body;
263
- const ctaLabel = isProcessing ? "Processing..." : selectedPlan?.name ? `Switch to ${selectedPlan.name}` : offer.copy.cta;
264
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkH5IHOYUF_cjs.cn("ck-step ck-step-offer", classNames?.root), children: [
265
- headline && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: chunkH5IHOYUF_cjs.cn("ck-step-title", classNames?.title), children: headline }),
266
- body && /* @__PURE__ */ jsxRuntime.jsx(RichText, { as: "div", html: body, className: chunkH5IHOYUF_cjs.cn("ck-step-description", classNames?.description) }),
267
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkH5IHOYUF_cjs.cn("ck-offer-card", classNames?.card), children: [
277
+ const ctaLabel = isProcessing ? msg.common.processing : selectedPlan?.name ? chunkER6YITYC_cjs.formatMessage(msg.offer.switchToCta, { planName: selectedPlan.name }) : msg.offer.acceptCta.plan_change || offer.copy.cta;
278
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkER6YITYC_cjs.cn("ck-step ck-step-offer", classNames?.root), children: [
279
+ headline && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: chunkER6YITYC_cjs.cn("ck-step-title", classNames?.title), children: headline }),
280
+ body && /* @__PURE__ */ jsxRuntime.jsx(RichText, { as: "div", html: body, className: chunkER6YITYC_cjs.cn("ck-step-description", classNames?.description) }),
281
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkER6YITYC_cjs.cn("ck-offer-card", classNames?.card), children: [
268
282
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ck-offer-details ck-plan-grid", children: plans.map((plan) => {
269
283
  const interval = plan.duration?.interval ?? "month";
270
284
  const currency = plan.amount.currency ?? "USD";
@@ -276,7 +290,7 @@ function DefaultPlanChangeOffer({
276
290
  type: "button",
277
291
  onClick: () => setSelectedPlanId(plan.id),
278
292
  disabled: isCurrent,
279
- className: chunkH5IHOYUF_cjs.cn(
293
+ className: chunkER6YITYC_cjs.cn(
280
294
  "ck-plan-card",
281
295
  isSelected && "ck-plan-card--selected",
282
296
  isCurrent && "ck-plan-card--current"
@@ -285,11 +299,11 @@ function DefaultPlanChangeOffer({
285
299
  children: [
286
300
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ck-plan-name", children: [
287
301
  plan.name ?? plan.id,
288
- isCurrent && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ck-plan-current-badge", children: "Current" })
302
+ isCurrent && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ck-plan-current-badge", children: msg.offer.currentPlanBadge })
289
303
  ] }),
290
304
  plan.tagline && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ck-plan-tagline", children: plan.tagline }),
291
305
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ck-plan-price-row", children: [
292
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ck-plan-amount", children: chunkWVSNF3TN_cjs.formatPriceFromMinor(plan.amount.value, currency) }),
306
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ck-plan-amount", children: chunkM6Z3BHEH_cjs.formatPriceFromMinor(plan.amount.value, currency) }),
293
307
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ck-plan-period", children: [
294
308
  "/",
295
309
  interval
@@ -309,13 +323,13 @@ function DefaultPlanChangeOffer({
309
323
  "button",
310
324
  {
311
325
  type: "button",
312
- className: chunkH5IHOYUF_cjs.cn("ck-button ck-button-primary", classNames?.acceptButton),
326
+ className: chunkER6YITYC_cjs.cn("ck-button ck-button-primary", classNames?.acceptButton),
313
327
  onClick: () => selectedPlanId && onAccept({ planId: selectedPlanId }),
314
328
  disabled: isProcessing || !selectedPlanId,
315
329
  children: ctaLabel
316
330
  }
317
331
  ),
318
- /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: chunkH5IHOYUF_cjs.cn("ck-button-link", classNames?.declineButton), onClick: onDecline, children: offer.copy.declineCta })
332
+ /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: chunkER6YITYC_cjs.cn("ck-button-link", classNames?.declineButton), onClick: onDecline, children: msg.offer.declineCta || offer.copy.declineCta })
319
333
  ] })
320
334
  ] });
321
335
  }
@@ -326,8 +340,10 @@ function DefaultRebateOffer({
326
340
  onAccept,
327
341
  onDecline,
328
342
  isProcessing,
329
- classNames
343
+ classNames,
344
+ messages
330
345
  }) {
346
+ const msg = messages ?? chunkER6YITYC_cjs.defaultMessages;
331
347
  const o = offer;
332
348
  const headline = title ?? offer.copy.headline;
333
349
  const body = description ?? offer.copy.body;
@@ -335,61 +351,61 @@ function DefaultRebateOffer({
335
351
  const amount = o.amountMinor ?? 0;
336
352
  const refund = o.amountPaidMinor != null && o.netAfterRebateMinor != null ? o.amountPaidMinor - o.netAfterRebateMinor : amount;
337
353
  const taxRefunded = refund - amount;
338
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkH5IHOYUF_cjs.cn("ck-step ck-step-offer", classNames?.root), children: [
339
- headline && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: chunkH5IHOYUF_cjs.cn("ck-step-title", classNames?.title), children: headline }),
340
- body && /* @__PURE__ */ jsxRuntime.jsx(RichText, { as: "div", html: body, className: chunkH5IHOYUF_cjs.cn("ck-step-description", classNames?.description) }),
341
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkH5IHOYUF_cjs.cn("ck-offer-card", classNames?.card), children: [
354
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkER6YITYC_cjs.cn("ck-step ck-step-offer", classNames?.root), children: [
355
+ headline && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: chunkER6YITYC_cjs.cn("ck-step-title", classNames?.title), children: headline }),
356
+ body && /* @__PURE__ */ jsxRuntime.jsx(RichText, { as: "div", html: body, className: chunkER6YITYC_cjs.cn("ck-step-description", classNames?.description) }),
357
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkER6YITYC_cjs.cn("ck-offer-card", classNames?.card), children: [
342
358
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ck-offer-rebate", children: [
343
359
  o.amountPaidMinor != null && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ck-offer-rebate-row", children: [
344
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "You paid this period" }),
345
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: chunkWVSNF3TN_cjs.formatPriceFromMinor(o.amountPaidMinor, currency) })
360
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: msg.offer.rebate.paidLabel }),
361
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: chunkM6Z3BHEH_cjs.formatPriceFromMinor(o.amountPaidMinor, currency) })
346
362
  ] }),
347
363
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ck-offer-rebate-row ck-offer-rebate-credit", children: [
348
364
  /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
349
- "Money back",
365
+ msg.offer.rebate.moneyBackLabel,
350
366
  taxRefunded > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ck-offer-rebate-tax", children: [
351
- " (incl. ",
352
- chunkWVSNF3TN_cjs.formatPriceFromMinor(taxRefunded, currency),
353
- " tax)"
367
+ " ",
368
+ chunkER6YITYC_cjs.formatMessage(msg.offer.rebate.inclTax, { amount: chunkM6Z3BHEH_cjs.formatPriceFromMinor(taxRefunded, currency) })
354
369
  ] })
355
370
  ] }),
356
371
  /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
357
372
  "\u2212",
358
- chunkWVSNF3TN_cjs.formatPriceFromMinor(refund, currency)
373
+ chunkM6Z3BHEH_cjs.formatPriceFromMinor(refund, currency)
359
374
  ] })
360
375
  ] }),
361
376
  o.netAfterRebateMinor != null && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ck-offer-rebate-row ck-offer-rebate-total", children: [
362
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Your net for this period" }),
363
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: chunkWVSNF3TN_cjs.formatPriceFromMinor(o.netAfterRebateMinor, currency) })
377
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: msg.offer.rebate.netLabel }),
378
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: chunkM6Z3BHEH_cjs.formatPriceFromMinor(o.netAfterRebateMinor, currency) })
364
379
  ] })
365
380
  ] }),
366
381
  /* @__PURE__ */ jsxRuntime.jsx(
367
382
  "button",
368
383
  {
369
384
  type: "button",
370
- className: chunkH5IHOYUF_cjs.cn("ck-button ck-button-primary", classNames?.acceptButton),
385
+ className: chunkER6YITYC_cjs.cn("ck-button ck-button-primary", classNames?.acceptButton),
371
386
  onClick: () => onAccept(),
372
387
  disabled: isProcessing,
373
- children: isProcessing ? "Processing..." : offer.copy.cta
388
+ children: isProcessing ? msg.common.processing : msg.offer.acceptCta.rebate || offer.copy.cta
374
389
  }
375
390
  ),
376
- /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: chunkH5IHOYUF_cjs.cn("ck-button-link", classNames?.declineButton), onClick: onDecline, children: offer.copy.declineCta })
391
+ /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: chunkER6YITYC_cjs.cn("ck-button-link", classNames?.declineButton), onClick: onDecline, children: msg.offer.declineCta || offer.copy.declineCta })
377
392
  ] })
378
393
  ] });
379
394
  }
380
- function DefaultRedirectOffer({ title, description, offer, onDecline, classNames }) {
395
+ function DefaultRedirectOffer({ title, description, offer, onDecline, classNames, messages }) {
396
+ const msg = messages ?? chunkER6YITYC_cjs.defaultMessages;
381
397
  const url = offer.url;
382
398
  const headline = title ?? offer.copy.headline;
383
399
  const body = description ?? offer.copy.body;
384
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkH5IHOYUF_cjs.cn("ck-step ck-step-offer", classNames?.root), children: [
385
- headline && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: chunkH5IHOYUF_cjs.cn("ck-step-title", classNames?.title), children: headline }),
386
- body && /* @__PURE__ */ jsxRuntime.jsx(RichText, { as: "div", html: body, className: chunkH5IHOYUF_cjs.cn("ck-step-description", classNames?.description) }),
387
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkH5IHOYUF_cjs.cn("ck-offer-card", classNames?.card), children: [
400
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkER6YITYC_cjs.cn("ck-step ck-step-offer", classNames?.root), children: [
401
+ headline && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: chunkER6YITYC_cjs.cn("ck-step-title", classNames?.title), children: headline }),
402
+ body && /* @__PURE__ */ jsxRuntime.jsx(RichText, { as: "div", html: body, className: chunkER6YITYC_cjs.cn("ck-step-description", classNames?.description) }),
403
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkER6YITYC_cjs.cn("ck-offer-card", classNames?.card), children: [
388
404
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ck-offer-details", children: /* @__PURE__ */ jsxRuntime.jsxs("a", { href: url, target: "_blank", rel: "noopener noreferrer", className: "ck-redirect-link", children: [
389
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: offer.copy.cta }),
405
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: msg.offer.acceptCta.redirect || offer.copy.cta }),
390
406
  /* @__PURE__ */ jsxRuntime.jsx(ExternalIcon, {})
391
407
  ] }) }),
392
- /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: chunkH5IHOYUF_cjs.cn("ck-button-link", classNames?.declineButton), onClick: onDecline, children: offer.copy.declineCta })
408
+ /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: chunkER6YITYC_cjs.cn("ck-button-link", classNames?.declineButton), onClick: onDecline, children: msg.offer.declineCta || offer.copy.declineCta })
393
409
  ] })
394
410
  ] });
395
411
  }
@@ -422,28 +438,30 @@ function DefaultTrialExtensionOffer({
422
438
  onAccept,
423
439
  onDecline,
424
440
  isProcessing,
425
- classNames
441
+ classNames,
442
+ messages
426
443
  }) {
444
+ const msg = messages ?? chunkER6YITYC_cjs.defaultMessages;
427
445
  const o = offer;
428
446
  const headline = title ?? offer.copy.headline;
429
447
  const body = description ?? offer.copy.body;
430
448
  const end = /* @__PURE__ */ new Date();
431
449
  end.setDate(end.getDate() + o.days);
432
- const newEnd = chunkWVSNF3TN_cjs.formatMonthDay(end);
433
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkH5IHOYUF_cjs.cn("ck-step ck-step-offer", classNames?.root), children: [
434
- headline && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: chunkH5IHOYUF_cjs.cn("ck-step-title", classNames?.title), children: headline }),
435
- body && /* @__PURE__ */ jsxRuntime.jsx(RichText, { as: "div", html: body, className: chunkH5IHOYUF_cjs.cn("ck-step-description", classNames?.description) }),
436
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkH5IHOYUF_cjs.cn("ck-offer-card", classNames?.card), children: [
450
+ const newEnd = chunkM6Z3BHEH_cjs.formatMonthDay(end);
451
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkER6YITYC_cjs.cn("ck-step ck-step-offer", classNames?.root), children: [
452
+ headline && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: chunkER6YITYC_cjs.cn("ck-step-title", classNames?.title), children: headline }),
453
+ body && /* @__PURE__ */ jsxRuntime.jsx(RichText, { as: "div", html: body, className: chunkER6YITYC_cjs.cn("ck-step-description", classNames?.description) }),
454
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkER6YITYC_cjs.cn("ck-offer-card", classNames?.card), children: [
437
455
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ck-offer-details ck-trial-block", children: [
438
456
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ck-trial-badge", children: [
439
457
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ck-trial-days", children: [
440
458
  "+",
441
459
  o.days
442
460
  ] }),
443
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ck-trial-unit", children: o.days === 1 ? "day" : "days" })
461
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ck-trial-unit", children: o.days === 1 ? msg.common.day : msg.common.days })
444
462
  ] }),
445
463
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
446
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ck-trial-end-label", children: "New end date" }),
464
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ck-trial-end-label", children: msg.offer.newEndDateLabel }),
447
465
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ck-trial-end-date", children: newEnd })
448
466
  ] })
449
467
  ] }),
@@ -451,13 +469,13 @@ function DefaultTrialExtensionOffer({
451
469
  "button",
452
470
  {
453
471
  type: "button",
454
- className: chunkH5IHOYUF_cjs.cn("ck-button ck-button-primary", classNames?.acceptButton),
472
+ className: chunkER6YITYC_cjs.cn("ck-button ck-button-primary", classNames?.acceptButton),
455
473
  onClick: () => onAccept(),
456
474
  disabled: isProcessing,
457
- children: isProcessing ? "Processing..." : offer.copy.cta
475
+ children: isProcessing ? msg.common.processing : msg.offer.acceptCta.trial_extension || offer.copy.cta
458
476
  }
459
477
  ),
460
- /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: chunkH5IHOYUF_cjs.cn("ck-button-link", classNames?.declineButton), onClick: onDecline, children: offer.copy.declineCta })
478
+ /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: chunkER6YITYC_cjs.cn("ck-button-link", classNames?.declineButton), onClick: onDecline, children: msg.offer.declineCta || offer.copy.declineCta })
461
479
  ] })
462
480
  ] });
463
481
  }
@@ -493,12 +511,13 @@ function pickOfferComponent(type, components) {
493
511
  return null;
494
512
  }
495
513
  }
496
- function DefaultSuccess({ title, description, onClose, classNames }) {
497
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkH5IHOYUF_cjs.cn("ck-step ck-step-success", classNames?.root), children: [
498
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkH5IHOYUF_cjs.cn("ck-success-icon", classNames?.icon), children: /* @__PURE__ */ jsxRuntime.jsx(Checkmark, { color: "currentColor", size: 26 }) }),
499
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: chunkH5IHOYUF_cjs.cn("ck-step-title", classNames?.title), children: title }),
500
- description && /* @__PURE__ */ jsxRuntime.jsx(RichText, { as: "div", html: description, className: chunkH5IHOYUF_cjs.cn("ck-step-description", classNames?.description) }),
501
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ck-success-actions", children: /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: chunkH5IHOYUF_cjs.cn("ck-button ck-button-primary", classNames?.closeButton), onClick: onClose, children: "Done" }) })
514
+ function DefaultSuccess({ title, description, onClose, classNames, messages }) {
515
+ const m = messages ?? chunkER6YITYC_cjs.defaultMessages;
516
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkER6YITYC_cjs.cn("ck-step ck-step-success", classNames?.root), children: [
517
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkER6YITYC_cjs.cn("ck-success-icon", classNames?.icon), children: /* @__PURE__ */ jsxRuntime.jsx(Checkmark, { color: "currentColor", size: 26 }) }),
518
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: chunkER6YITYC_cjs.cn("ck-step-title", classNames?.title), children: title }),
519
+ description && /* @__PURE__ */ jsxRuntime.jsx(RichText, { as: "div", html: description, className: chunkER6YITYC_cjs.cn("ck-step-description", classNames?.description) }),
520
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ck-success-actions", children: /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: chunkER6YITYC_cjs.cn("ck-button ck-button-primary", classNames?.closeButton), onClick: onClose, children: m.common.done }) })
502
521
  ] });
503
522
  }
504
523
  function DefaultReasonButton({ reason, index, isSelected, onSelect }) {
@@ -510,7 +529,7 @@ function DefaultReasonButton({ reason, index, isSelected, onSelect }) {
510
529
  role: "radio",
511
530
  "aria-checked": isSelected,
512
531
  onClick: () => onSelect(reason.id),
513
- className: chunkH5IHOYUF_cjs.cn("ck-reason-button", isSelected && "ck-reason-button--selected"),
532
+ className: chunkER6YITYC_cjs.cn("ck-reason-button", isSelected && "ck-reason-button--selected"),
514
533
  children: [
515
534
  /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true, className: "ck-reason-badge", children: isSelected ? /* @__PURE__ */ jsxRuntime.jsx(Checkmark, { color: "#fff", size: 12 }) : letter }),
516
535
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ck-reason-label", children: reason.label })
@@ -528,15 +547,17 @@ function DefaultSurvey({
528
547
  onFollowupResponseChange,
529
548
  onNext,
530
549
  classNames,
531
- components
550
+ components,
551
+ messages
532
552
  }) {
553
+ const m = messages ?? chunkER6YITYC_cjs.defaultMessages;
533
554
  const ReasonButton = components?.ReasonButton ?? DefaultReasonButton;
534
555
  const selected = reasons.find((r) => r.id === selectedReason);
535
556
  const showFollowup = selected?.freeform === true;
536
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkH5IHOYUF_cjs.cn("ck-step ck-step-survey", classNames?.root), children: [
537
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: chunkH5IHOYUF_cjs.cn("ck-step-title", classNames?.title), children: title }),
538
- description && /* @__PURE__ */ jsxRuntime.jsx(RichText, { as: "div", html: description, className: chunkH5IHOYUF_cjs.cn("ck-step-description", classNames?.description) }),
539
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkH5IHOYUF_cjs.cn("ck-reason-list", classNames?.reasonList), role: "radiogroup", "aria-label": title, children: reasons.map((reason, i) => /* @__PURE__ */ jsxRuntime.jsx(
557
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkER6YITYC_cjs.cn("ck-step ck-step-survey", classNames?.root), children: [
558
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: chunkER6YITYC_cjs.cn("ck-step-title", classNames?.title), children: title }),
559
+ description && /* @__PURE__ */ jsxRuntime.jsx(RichText, { as: "div", html: description, className: chunkER6YITYC_cjs.cn("ck-step-description", classNames?.description) }),
560
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkER6YITYC_cjs.cn("ck-reason-list", classNames?.reasonList), role: "radiogroup", "aria-label": title, children: reasons.map((reason, i) => /* @__PURE__ */ jsxRuntime.jsx(
540
561
  ReasonButton,
541
562
  {
542
563
  reason,
@@ -549,28 +570,28 @@ function DefaultSurvey({
549
570
  showFollowup && /* @__PURE__ */ jsxRuntime.jsx(
550
571
  "textarea",
551
572
  {
552
- className: chunkH5IHOYUF_cjs.cn("ck-reason-followup", classNames?.followupInput),
553
- placeholder: "Tell us more (optional)",
573
+ className: chunkER6YITYC_cjs.cn("ck-reason-followup", classNames?.followupInput),
574
+ placeholder: m.survey.followupPlaceholder,
554
575
  rows: 3,
555
576
  value: followupResponse,
556
577
  onChange: (e) => onFollowupResponseChange(e.target.value),
557
- "aria-label": "Additional detail"
578
+ "aria-label": m.survey.followupAriaLabel
558
579
  }
559
580
  ),
560
581
  /* @__PURE__ */ jsxRuntime.jsx(
561
582
  "button",
562
583
  {
563
584
  type: "button",
564
- className: chunkH5IHOYUF_cjs.cn("ck-button ck-button-primary", classNames?.continueButton),
585
+ className: chunkER6YITYC_cjs.cn("ck-button ck-button-primary", classNames?.continueButton),
565
586
  onClick: onNext,
566
587
  disabled: !selectedReason,
567
- children: "Continue"
588
+ children: m.common.continue
568
589
  }
569
590
  )
570
591
  ] });
571
592
  }
572
- function DefaultBackButton({ onBack, className }) {
573
- return /* @__PURE__ */ jsxRuntime.jsxs("button", { type: "button", className: chunkH5IHOYUF_cjs.cn("ck-back-button", className), onClick: onBack, children: [
593
+ function DefaultBackButton({ onBack, className, label }) {
594
+ return /* @__PURE__ */ jsxRuntime.jsxs("button", { type: "button", className: chunkER6YITYC_cjs.cn("ck-back-button", className), onClick: onBack, children: [
574
595
  /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "14", height: "14", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(
575
596
  "path",
576
597
  {
@@ -581,11 +602,11 @@ function DefaultBackButton({ onBack, className }) {
581
602
  strokeLinejoin: "round"
582
603
  }
583
604
  ) }),
584
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Back" })
605
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: label ?? "Back" })
585
606
  ] });
586
607
  }
587
- function DefaultCloseButton({ onClose, className }) {
588
- return /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: chunkH5IHOYUF_cjs.cn("ck-close-button", className), onClick: onClose, "aria-label": "Close", children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M15 5L5 15M5 5l10 10", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) }) });
608
+ function DefaultCloseButton({ onClose, className, label }) {
609
+ return /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: chunkER6YITYC_cjs.cn("ck-close-button", className), onClick: onClose, "aria-label": label ?? "Close", children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M15 5L5 15M5 5l10 10", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) }) });
589
610
  }
590
611
  function trapFocus(container) {
591
612
  const focusableSelector = [
@@ -645,7 +666,7 @@ function DefaultModal({ open, onClose, children, className, overlayClassName })
645
666
  "div",
646
667
  {
647
668
  ref: overlayRef,
648
- className: chunkH5IHOYUF_cjs.cn("ck-overlay", overlayClassName),
669
+ className: chunkER6YITYC_cjs.cn("ck-overlay", overlayClassName),
649
670
  onClick: (e) => {
650
671
  if (e.target === overlayRef.current) onClose();
651
672
  },
@@ -657,7 +678,7 @@ function DefaultModal({ open, onClose, children, className, overlayClassName })
657
678
  "aria-modal": "true",
658
679
  "aria-labelledby": "ck-dialog-title",
659
680
  tabIndex: -1,
660
- className: chunkH5IHOYUF_cjs.cn("ck-modal", className),
681
+ className: chunkER6YITYC_cjs.cn("ck-modal", className),
661
682
  children
662
683
  }
663
684
  )
@@ -683,7 +704,7 @@ function useColorScheme(preference) {
683
704
  return system;
684
705
  }
685
706
  function CancelFlow(props) {
686
- const { machine, state, isLoading, loadError, retry } = chunkW47U2HRC_cjs.useCancelFlowMachine(props);
707
+ const { machine, state, isLoading, loadError, retry } = chunkFK4AJOX6_cjs.useCancelFlowMachine(props);
687
708
  if (isLoading || loadError) {
688
709
  return /* @__PURE__ */ jsxRuntime.jsx(
689
710
  LoadStatus,
@@ -694,7 +715,8 @@ function CancelFlow(props) {
694
715
  onClose: props.onClose,
695
716
  isLoading,
696
717
  loadError,
697
- onRetry: retry
718
+ onRetry: retry,
719
+ messages: machine.messages
698
720
  }
699
721
  );
700
722
  }
@@ -717,16 +739,17 @@ function LoadStatus({
717
739
  onClose,
718
740
  isLoading,
719
741
  loadError,
720
- onRetry
742
+ onRetry,
743
+ messages
721
744
  }) {
722
745
  const scheme = useColorScheme(appearance?.colorScheme);
723
- const appearanceStyle = chunkH5IHOYUF_cjs.appearanceToStyle(appearance);
746
+ const appearanceStyle = chunkER6YITYC_cjs.appearanceToStyle(appearance);
724
747
  const Modal = components?.Modal ?? DefaultModal;
725
748
  const CloseButton = components?.CloseButton ?? DefaultCloseButton;
726
749
  const handleClose = onClose ?? (() => {
727
750
  });
728
751
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ck-cancel-flow", "data-color-scheme": scheme, style: appearanceStyle, children: /* @__PURE__ */ jsxRuntime.jsxs(Modal, { open: true, onClose: handleClose, className: classNames?.modal, overlayClassName: classNames?.overlay, children: [
729
- /* @__PURE__ */ jsxRuntime.jsx(CloseButton, { onClose: handleClose, className: classNames?.closeButton }),
752
+ /* @__PURE__ */ jsxRuntime.jsx(CloseButton, { onClose: handleClose, className: classNames?.closeButton, label: messages.common.close }),
730
753
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ck-content", children: [
731
754
  isLoading && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ck-loading", style: { padding: "32px", textAlign: "center" }, children: [
732
755
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -744,10 +767,10 @@ function LoadStatus({
744
767
  }
745
768
  }
746
769
  ),
747
- /* @__PURE__ */ jsxRuntime.jsx("p", { style: { color: "var(--ck-color-text-secondary, #6b7280)" }, children: "Loading your options..." })
770
+ /* @__PURE__ */ jsxRuntime.jsx("p", { style: { color: "var(--ck-color-text-secondary, #6b7280)" }, children: messages.common.loading })
748
771
  ] }),
749
772
  loadError && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ck-error", role: "alert", style: { padding: "32px", textAlign: "center" }, children: [
750
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ck-error-message", style: { marginBottom: 16 }, children: "We couldn't load your cancellation options. Please try again." }),
773
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ck-error-message", style: { marginBottom: 16 }, children: messages.common.loadError }),
751
774
  /* @__PURE__ */ jsxRuntime.jsx(
752
775
  "button",
753
776
  {
@@ -764,7 +787,7 @@ function LoadStatus({
764
787
  borderRadius: "var(--ck-border-radius, 8px)",
765
788
  cursor: "pointer"
766
789
  },
767
- children: "Try again"
790
+ children: messages.common.tryAgain
768
791
  }
769
792
  )
770
793
  ] })
@@ -773,15 +796,16 @@ function LoadStatus({
773
796
  }
774
797
  function FlowShell({ machine, state, appearance, classNames, components, customComponents }) {
775
798
  const scheme = useColorScheme(appearance?.colorScheme);
776
- const appearanceStyle = chunkH5IHOYUF_cjs.appearanceToStyle(appearance);
799
+ const appearanceStyle = chunkER6YITYC_cjs.appearanceToStyle(appearance);
800
+ const messages = machine.messages;
777
801
  const Modal = components?.Modal ?? DefaultModal;
778
802
  const CloseButton = components?.CloseButton ?? DefaultCloseButton;
779
803
  const BackButton = components?.BackButton ?? DefaultBackButton;
780
804
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ck-cancel-flow", "data-color-scheme": scheme, style: appearanceStyle, children: /* @__PURE__ */ jsxRuntime.jsxs(Modal, { open: true, onClose: machine.close, className: classNames?.modal, overlayClassName: classNames?.overlay, children: [
781
- /* @__PURE__ */ jsxRuntime.jsx(CloseButton, { onClose: machine.close, className: classNames?.closeButton }),
805
+ /* @__PURE__ */ jsxRuntime.jsx(CloseButton, { onClose: machine.close, className: classNames?.closeButton, label: messages.common.close }),
782
806
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ck-content", children: [
783
- machine.canGoBack && /* @__PURE__ */ jsxRuntime.jsx(BackButton, { onBack: machine.back, className: classNames?.backButton }),
784
- state.error && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ck-error", role: "alert", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ck-error-message", children: "Something went wrong. Please try again." }) }),
807
+ machine.canGoBack && /* @__PURE__ */ jsxRuntime.jsx(BackButton, { onBack: machine.back, className: classNames?.backButton, label: messages.common.back }),
808
+ state.error && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ck-error", role: "alert", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ck-error-message", children: messages.common.error }) }),
785
809
  /* @__PURE__ */ jsxRuntime.jsx(StepRenderer, { state, machine, components, customComponents })
786
810
  ] })
787
811
  ] }) });
@@ -793,6 +817,7 @@ function StepRenderer({
793
817
  customComponents
794
818
  }) {
795
819
  const stepConfig = machine.currentStep;
820
+ const messages = machine.messages;
796
821
  switch (state.step) {
797
822
  case "survey": {
798
823
  const Survey = components?.Survey ?? DefaultSurvey;
@@ -800,7 +825,7 @@ function StepRenderer({
800
825
  return /* @__PURE__ */ jsxRuntime.jsx(
801
826
  Survey,
802
827
  {
803
- title: config?.title ?? chunkH5IHOYUF_cjs.defaultTitles.survey,
828
+ title: config?.title ?? messages.survey.title,
804
829
  description: config?.description,
805
830
  customer: state.customer,
806
831
  subscriptions: state.subscriptions,
@@ -811,7 +836,8 @@ function StepRenderer({
811
836
  onFollowupResponseChange: machine.setFollowupResponse,
812
837
  onNext: machine.next,
813
838
  classNames: config?.classNames,
814
- components
839
+ components,
840
+ messages
815
841
  }
816
842
  );
817
843
  }
@@ -832,7 +858,7 @@ function StepRenderer({
832
858
  }
833
859
  );
834
860
  }
835
- if (!chunkH5IHOYUF_cjs.BUILT_IN_OFFER_TYPES.includes(offer.type)) {
861
+ if (!chunkER6YITYC_cjs.BUILT_IN_OFFER_TYPES.includes(offer.type)) {
836
862
  return /* @__PURE__ */ jsxRuntime.jsx(UnregisteredOfferFallback, { offerType: offer.type, onSkip: machine.decline });
837
863
  }
838
864
  const Offer = components?.Offer ?? DefaultOffer;
@@ -849,7 +875,8 @@ function StepRenderer({
849
875
  onDecline: machine.decline,
850
876
  isProcessing: state.isProcessing,
851
877
  classNames: config?.classNames,
852
- components
878
+ components,
879
+ messages
853
880
  }
854
881
  );
855
882
  }
@@ -859,7 +886,7 @@ function StepRenderer({
859
886
  return /* @__PURE__ */ jsxRuntime.jsx(
860
887
  Feedback,
861
888
  {
862
- title: config?.title ?? chunkH5IHOYUF_cjs.defaultTitles.feedback,
889
+ title: config?.title ?? messages.feedback.title,
863
890
  description: config?.description,
864
891
  customer: state.customer,
865
892
  subscriptions: state.subscriptions,
@@ -869,7 +896,8 @@ function StepRenderer({
869
896
  value: state.feedback,
870
897
  onChange: machine.setFeedback,
871
898
  onSubmit: machine.next,
872
- classNames: config?.classNames
899
+ classNames: config?.classNames,
900
+ messages
873
901
  }
874
902
  );
875
903
  }
@@ -879,18 +907,20 @@ function StepRenderer({
879
907
  return /* @__PURE__ */ jsxRuntime.jsx(
880
908
  Confirm,
881
909
  {
882
- title: config?.title ?? chunkH5IHOYUF_cjs.defaultTitles.confirm,
910
+ title: config?.title ?? messages.confirm.title,
883
911
  description: config?.description,
884
912
  customer: state.customer,
885
913
  subscriptions: state.subscriptions,
886
914
  losses: config?.losses,
887
915
  lossesLabel: config?.lossesLabel,
888
- confirmLabel: config?.confirmLabel ?? "Cancel subscription",
889
- goBackLabel: config?.goBackLabel ?? "Go back",
916
+ confirmLabel: config?.confirmLabel ?? chunkER6YITYC_cjs.selectTiming(messages.confirm.cta, state.cancelAtPeriodEnd),
917
+ goBackLabel: config?.goBackLabel ?? messages.confirm.goBack,
918
+ periodEndNotice: resolvePeriodEndNotice(state, messages),
890
919
  onConfirm: machine.cancel,
891
920
  onGoBack: machine.back,
892
921
  isProcessing: state.isProcessing,
893
- classNames: config?.classNames
922
+ classNames: config?.classNames,
923
+ messages
894
924
  }
895
925
  );
896
926
  }
@@ -898,17 +928,20 @@ function StepRenderer({
898
928
  const Success = components?.Success ?? DefaultSuccess;
899
929
  const config = stepConfig;
900
930
  const isSaved = state.outcome === "saved";
931
+ const perOffer = isSaved ? savedOfferCopy(messages, state.acceptedOffer) : void 0;
901
932
  return /* @__PURE__ */ jsxRuntime.jsx(
902
933
  Success,
903
934
  {
904
935
  outcome: state.outcome ?? "cancelled",
905
936
  offer: machine.currentOffer ?? void 0,
906
- title: isSaved ? config?.savedTitle ?? "Welcome back!" : config?.cancelledTitle ?? "Subscription cancelled",
907
- description: isSaved ? config?.savedDescription ?? "Your offer has been applied." : config?.cancelledDescription ?? "We're sorry to see you go.",
937
+ acceptedOffer: state.acceptedOffer ?? void 0,
938
+ title: isSaved ? config?.savedTitle ?? perOffer?.title ?? messages.success.saved.title : config?.cancelledTitle ?? chunkER6YITYC_cjs.selectTiming(messages.success.cancelled.title, state.cancelAtPeriodEnd),
939
+ description: isSaved ? config?.savedDescription ?? pauseResumeDescription(messages, state.acceptedOffer) ?? perOffer?.description ?? messages.success.saved.description : config?.cancelledDescription ?? chunkER6YITYC_cjs.selectTiming(messages.success.cancelled.description, state.cancelAtPeriodEnd),
908
940
  customer: state.customer,
909
941
  subscriptions: state.subscriptions,
910
942
  onClose: machine.close,
911
- classNames: config?.classNames
943
+ classNames: config?.classNames,
944
+ messages
912
945
  }
913
946
  );
914
947
  }
@@ -936,6 +969,32 @@ function StepRenderer({
936
969
  }
937
970
  }
938
971
  }
972
+ var SAVED_OFFER_COPY_TYPES = ["discount", "pause", "trial_extension", "plan_change", "rebate"];
973
+ function savedOfferCopy(messages, offer) {
974
+ if (!offer) return void 0;
975
+ if (!SAVED_OFFER_COPY_TYPES.includes(offer.type)) return void 0;
976
+ return messages.success.saved[offer.type];
977
+ }
978
+ function pauseResumeDescription(messages, offer) {
979
+ if (offer?.type !== "pause") return void 0;
980
+ const months = offer.result?.months;
981
+ if (typeof months !== "number" || months < 1) return void 0;
982
+ const resume = /* @__PURE__ */ new Date();
983
+ if (offer.interval === "week") {
984
+ resume.setDate(resume.getDate() + months * 7);
985
+ } else {
986
+ resume.setMonth(resume.getMonth() + months);
987
+ }
988
+ return chunkER6YITYC_cjs.formatMessage(messages.success.saved.pause.resumeDescription, { resumeDate: chunkM6Z3BHEH_cjs.formatShortDate(resume) });
989
+ }
990
+ function resolvePeriodEndNotice(state, messages) {
991
+ if (state.cancelAtPeriodEnd !== true) return void 0;
992
+ const template = chunkER6YITYC_cjs.selectTiming(messages.confirm.periodEndNotice, state.cancelAtPeriodEnd);
993
+ if (!template) return void 0;
994
+ const periodEnd = chunkM6Z3BHEH_cjs.formatPeriodEnd(state.subscriptions);
995
+ if (!periodEnd) return void 0;
996
+ return chunkER6YITYC_cjs.formatMessage(template, { periodEnd });
997
+ }
939
998
  function UnregisteredStepFallback({ step, onSkip }) {
940
999
  react.useEffect(() => {
941
1000
  console.warn(`[churnkey] No component registered for step type "${step}". Skipping.`);
@@ -953,55 +1012,71 @@ function UnregisteredOfferFallback({ offerType, onSkip }) {
953
1012
 
954
1013
  Object.defineProperty(exports, "useCancelFlow", {
955
1014
  enumerable: true,
956
- get: function () { return chunkW47U2HRC_cjs.useCancelFlow; }
1015
+ get: function () { return chunkFK4AJOX6_cjs.useCancelFlow; }
957
1016
  });
958
1017
  Object.defineProperty(exports, "calculateDiscountedPrice", {
959
1018
  enumerable: true,
960
- get: function () { return chunkWVSNF3TN_cjs.calculateDiscountedPrice; }
1019
+ get: function () { return chunkM6Z3BHEH_cjs.calculateDiscountedPrice; }
961
1020
  });
962
1021
  Object.defineProperty(exports, "formatPeriodEnd", {
963
1022
  enumerable: true,
964
- get: function () { return chunkWVSNF3TN_cjs.formatPeriodEnd; }
1023
+ get: function () { return chunkM6Z3BHEH_cjs.formatPeriodEnd; }
965
1024
  });
966
1025
  Object.defineProperty(exports, "formatPrice", {
967
1026
  enumerable: true,
968
- get: function () { return chunkWVSNF3TN_cjs.formatPrice; }
1027
+ get: function () { return chunkM6Z3BHEH_cjs.formatPrice; }
969
1028
  });
970
1029
  Object.defineProperty(exports, "AnalyticsClient", {
971
1030
  enumerable: true,
972
- get: function () { return chunkH5IHOYUF_cjs.AnalyticsClient; }
1031
+ get: function () { return chunkER6YITYC_cjs.AnalyticsClient; }
973
1032
  });
974
1033
  Object.defineProperty(exports, "BUILT_IN_OFFER_TYPES", {
975
1034
  enumerable: true,
976
- get: function () { return chunkH5IHOYUF_cjs.BUILT_IN_OFFER_TYPES; }
1035
+ get: function () { return chunkER6YITYC_cjs.BUILT_IN_OFFER_TYPES; }
977
1036
  });
978
1037
  Object.defineProperty(exports, "BUILT_IN_STEP_TYPES", {
979
1038
  enumerable: true,
980
- get: function () { return chunkH5IHOYUF_cjs.BUILT_IN_STEP_TYPES; }
1039
+ get: function () { return chunkER6YITYC_cjs.BUILT_IN_STEP_TYPES; }
981
1040
  });
982
1041
  Object.defineProperty(exports, "CancelFlowMachine", {
983
1042
  enumerable: true,
984
- get: function () { return chunkH5IHOYUF_cjs.CancelFlowMachine; }
1043
+ get: function () { return chunkER6YITYC_cjs.CancelFlowMachine; }
985
1044
  });
986
1045
  Object.defineProperty(exports, "ChurnkeyApi", {
987
1046
  enumerable: true,
988
- get: function () { return chunkH5IHOYUF_cjs.ChurnkeyApi; }
1047
+ get: function () { return chunkER6YITYC_cjs.ChurnkeyApi; }
989
1048
  });
990
1049
  Object.defineProperty(exports, "appearanceToStyle", {
991
1050
  enumerable: true,
992
- get: function () { return chunkH5IHOYUF_cjs.appearanceToStyle; }
1051
+ get: function () { return chunkER6YITYC_cjs.appearanceToStyle; }
1052
+ });
1053
+ Object.defineProperty(exports, "buildMessages", {
1054
+ enumerable: true,
1055
+ get: function () { return chunkER6YITYC_cjs.buildMessages; }
993
1056
  });
994
1057
  Object.defineProperty(exports, "cn", {
995
1058
  enumerable: true,
996
- get: function () { return chunkH5IHOYUF_cjs.cn; }
1059
+ get: function () { return chunkER6YITYC_cjs.cn; }
997
1060
  });
998
1061
  Object.defineProperty(exports, "decodeSessionToken", {
999
1062
  enumerable: true,
1000
- get: function () { return chunkH5IHOYUF_cjs.decodeSessionToken; }
1063
+ get: function () { return chunkER6YITYC_cjs.decodeSessionToken; }
1064
+ });
1065
+ Object.defineProperty(exports, "defaultMessages", {
1066
+ enumerable: true,
1067
+ get: function () { return chunkER6YITYC_cjs.defaultMessages; }
1001
1068
  });
1002
1069
  Object.defineProperty(exports, "defaultTitles", {
1003
1070
  enumerable: true,
1004
- get: function () { return chunkH5IHOYUF_cjs.defaultTitles; }
1071
+ get: function () { return chunkER6YITYC_cjs.defaultTitles; }
1072
+ });
1073
+ Object.defineProperty(exports, "formatMessage", {
1074
+ enumerable: true,
1075
+ get: function () { return chunkER6YITYC_cjs.formatMessage; }
1076
+ });
1077
+ Object.defineProperty(exports, "selectTiming", {
1078
+ enumerable: true,
1079
+ get: function () { return chunkER6YITYC_cjs.selectTiming; }
1005
1080
  });
1006
1081
  exports.CancelFlow = CancelFlow;
1007
1082
  exports.DefaultBackButton = DefaultBackButton;