@hook-sdk/template 0.4.0 → 0.4.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.
package/dist/index.js CHANGED
@@ -402,14 +402,8 @@ function useInstallPrompt(slug) {
402
402
  setIsDismissedPermanent(true);
403
403
  track("pwa_install_permanent_dismiss", { slug, platform, prior_skip_count: skipCount });
404
404
  }, [slug, platform, skipCount]);
405
- const redirectToSafari = useCallback2(() => {
406
- if (typeof location === "undefined") return;
407
- track("pwa_install_redirect_to_safari", { slug });
408
- const url = `safari-https://${location.host}${location.pathname}${location.search}${location.hash}`;
409
- try {
410
- window.location.href = url;
411
- } catch {
412
- }
405
+ const showIOSOtherHelp = useCallback2(() => {
406
+ track("pwa_install_ios_other_help_shown", { slug });
413
407
  }, [slug]);
414
408
  const copyLink = useCallback2(async () => {
415
409
  if (typeof navigator === "undefined" || typeof location === "undefined") return;
@@ -449,7 +443,7 @@ function useInstallPrompt(slug) {
449
443
  promptInstall,
450
444
  dismissSession,
451
445
  dismissPermanent,
452
- redirectToSafari,
446
+ showIOSOtherHelp,
453
447
  copyLink,
454
448
  reset
455
449
  };
@@ -515,7 +509,17 @@ var INSTALL_COPY = {
515
509
  ctaSecondary: "Copiar link",
516
510
  copiedToast: "Link copiado. Cole no Safari.",
517
511
  skip: "Continuar mesmo assim",
518
- skipPermanent: "N\xE3o me pergunte mais"
512
+ skipPermanent: "N\xE3o me pergunte mais",
513
+ help: {
514
+ step1: {
515
+ title: "Toque em \u22EF ou no bot\xE3o compartilhar",
516
+ subtitle: "Na barra inferior ou superior do navegador"
517
+ },
518
+ step2: {
519
+ title: 'Escolha "Abrir no Safari"',
520
+ subtitle: "O app vai abrir direto no Safari"
521
+ }
522
+ }
519
523
  },
520
524
  inApp: {
521
525
  instagram: {
@@ -908,22 +912,70 @@ function Step({ n, icon, children }) {
908
912
  );
909
913
  }
910
914
 
911
- // src/components/InstallGate/variants/IOSafariVariant.tsx
915
+ // src/components/InstallGate/Step.tsx
912
916
  import { jsx as jsx11, jsxs as jsxs5 } from "react/jsx-runtime";
917
+ function Step2({
918
+ n,
919
+ title,
920
+ subtitle,
921
+ visual
922
+ }) {
923
+ return /* @__PURE__ */ jsxs5(
924
+ "div",
925
+ {
926
+ style: {
927
+ display: "flex",
928
+ alignItems: "flex-start",
929
+ gap: 12,
930
+ marginBottom: 16,
931
+ textAlign: "left"
932
+ },
933
+ children: [
934
+ /* @__PURE__ */ jsx11(
935
+ "div",
936
+ {
937
+ style: {
938
+ width: 32,
939
+ height: 32,
940
+ borderRadius: 10,
941
+ background: "var(--hook-color-primary)",
942
+ color: "#fff",
943
+ display: "flex",
944
+ alignItems: "center",
945
+ justifyContent: "center",
946
+ fontSize: 15,
947
+ fontWeight: 700,
948
+ flexShrink: 0
949
+ },
950
+ children: n
951
+ }
952
+ ),
953
+ /* @__PURE__ */ jsxs5("div", { style: { flex: 1 }, children: [
954
+ /* @__PURE__ */ jsx11("p", { style: { margin: 0, fontSize: 15, fontWeight: 500, color: "#111", lineHeight: 1.3 }, children: title }),
955
+ subtitle && /* @__PURE__ */ jsx11("p", { style: { margin: "4px 0 0 0", fontSize: 13, color: "#777" }, children: subtitle }),
956
+ visual
957
+ ] })
958
+ ]
959
+ }
960
+ );
961
+ }
962
+
963
+ // src/components/InstallGate/variants/IOSafariVariant.tsx
964
+ import { jsx as jsx12, jsxs as jsxs6 } from "react/jsx-runtime";
913
965
  function IOSafariVariant({
914
966
  state,
915
967
  actions
916
968
  }) {
917
969
  const copy = INSTALL_COPY.iosSafari;
918
970
  const showPermanent = shouldShowPermanentOption(state);
919
- return /* @__PURE__ */ jsxs5(InstallSplash, { title: copy.title, subtitle: copy.subtitle, children: [
920
- /* @__PURE__ */ jsx11(
971
+ return /* @__PURE__ */ jsxs6(InstallSplash, { title: copy.title, subtitle: copy.subtitle, children: [
972
+ /* @__PURE__ */ jsx12(
921
973
  Step2,
922
974
  {
923
975
  n: 1,
924
976
  title: copy.step1.title,
925
977
  subtitle: copy.step1.subtitle,
926
- visual: /* @__PURE__ */ jsx11(
978
+ visual: /* @__PURE__ */ jsx12(
927
979
  "div",
928
980
  {
929
981
  style: {
@@ -935,17 +987,17 @@ function IOSafariVariant({
935
987
  padding: "12px 0",
936
988
  marginTop: 8
937
989
  },
938
- children: /* @__PURE__ */ jsx11(ShareIconIOS, { size: 32, style: { color: "var(--hook-color-primary)" } })
990
+ children: /* @__PURE__ */ jsx12(ShareIconIOS, { size: 32, style: { color: "var(--hook-color-primary)" } })
939
991
  }
940
992
  )
941
993
  }
942
994
  ),
943
- /* @__PURE__ */ jsx11(
995
+ /* @__PURE__ */ jsx12(
944
996
  Step2,
945
997
  {
946
998
  n: 2,
947
999
  title: copy.step2.title,
948
- visual: /* @__PURE__ */ jsxs5(
1000
+ visual: /* @__PURE__ */ jsxs6(
949
1001
  "div",
950
1002
  {
951
1003
  style: {
@@ -958,19 +1010,19 @@ function IOSafariVariant({
958
1010
  marginTop: 8
959
1011
  },
960
1012
  children: [
961
- /* @__PURE__ */ jsx11(SquarePlusIcon, { size: 22, style: { color: "#555" } }),
962
- /* @__PURE__ */ jsx11("span", { style: { fontSize: 14, color: "#333" }, children: copy.step2.iconLabel })
1013
+ /* @__PURE__ */ jsx12(SquarePlusIcon, { size: 22, style: { color: "#555" } }),
1014
+ /* @__PURE__ */ jsx12("span", { style: { fontSize: 14, color: "#333" }, children: copy.step2.iconLabel })
963
1015
  ]
964
1016
  }
965
1017
  )
966
1018
  }
967
1019
  ),
968
- /* @__PURE__ */ jsx11(
1020
+ /* @__PURE__ */ jsx12(
969
1021
  Step2,
970
1022
  {
971
1023
  n: 3,
972
1024
  title: copy.step3.title,
973
- visual: /* @__PURE__ */ jsx11(
1025
+ visual: /* @__PURE__ */ jsx12(
974
1026
  "div",
975
1027
  {
976
1028
  style: {
@@ -981,7 +1033,7 @@ function IOSafariVariant({
981
1033
  padding: "10px 14px",
982
1034
  marginTop: 8
983
1035
  },
984
- children: /* @__PURE__ */ jsx11(
1036
+ children: /* @__PURE__ */ jsx12(
985
1037
  "span",
986
1038
  {
987
1039
  style: {
@@ -996,7 +1048,7 @@ function IOSafariVariant({
996
1048
  )
997
1049
  }
998
1050
  ),
999
- /* @__PURE__ */ jsx11(
1051
+ /* @__PURE__ */ jsx12(
1000
1052
  "button",
1001
1053
  {
1002
1054
  "data-testid": "install-prompt-skip-session",
@@ -1006,7 +1058,7 @@ function IOSafariVariant({
1006
1058
  children: copy.skip
1007
1059
  }
1008
1060
  ),
1009
- showPermanent && /* @__PURE__ */ jsx11(
1061
+ showPermanent && /* @__PURE__ */ jsx12(
1010
1062
  "button",
1011
1063
  {
1012
1064
  "data-testid": "install-prompt-skip-permanent",
@@ -1018,55 +1070,10 @@ function IOSafariVariant({
1018
1070
  )
1019
1071
  ] });
1020
1072
  }
1021
- function Step2({
1022
- n,
1023
- title,
1024
- subtitle,
1025
- visual
1026
- }) {
1027
- return /* @__PURE__ */ jsxs5(
1028
- "div",
1029
- {
1030
- style: {
1031
- display: "flex",
1032
- alignItems: "flex-start",
1033
- gap: 12,
1034
- marginBottom: 16,
1035
- textAlign: "left"
1036
- },
1037
- children: [
1038
- /* @__PURE__ */ jsx11(
1039
- "div",
1040
- {
1041
- style: {
1042
- width: 32,
1043
- height: 32,
1044
- borderRadius: 10,
1045
- background: "var(--hook-color-primary)",
1046
- color: "#fff",
1047
- display: "flex",
1048
- alignItems: "center",
1049
- justifyContent: "center",
1050
- fontSize: 15,
1051
- fontWeight: 700,
1052
- flexShrink: 0
1053
- },
1054
- children: n
1055
- }
1056
- ),
1057
- /* @__PURE__ */ jsxs5("div", { style: { flex: 1 }, children: [
1058
- /* @__PURE__ */ jsx11("p", { style: { margin: 0, fontSize: 15, fontWeight: 500, color: "#111", lineHeight: 1.3 }, children: title }),
1059
- subtitle && /* @__PURE__ */ jsx11("p", { style: { margin: "4px 0 0 0", fontSize: 13, color: "#777" }, children: subtitle }),
1060
- visual
1061
- ] })
1062
- ]
1063
- }
1064
- );
1065
- }
1066
1073
 
1067
1074
  // src/components/InstallGate/variants/IOSOtherVariant.tsx
1068
1075
  import { useState as useState4 } from "react";
1069
- import { jsx as jsx12, jsxs as jsxs6 } from "react/jsx-runtime";
1076
+ import { jsx as jsx13, jsxs as jsxs7 } from "react/jsx-runtime";
1070
1077
  function IOSOtherVariant({
1071
1078
  state,
1072
1079
  actions
@@ -1074,23 +1081,29 @@ function IOSOtherVariant({
1074
1081
  const copy = INSTALL_COPY.iosOther;
1075
1082
  const showPermanent = shouldShowPermanentOption(state);
1076
1083
  const [copied, setCopied] = useState4(false);
1084
+ const [helpOpen, setHelpOpen] = useState4(false);
1077
1085
  const handleCopy = async () => {
1078
1086
  await actions.copyLink();
1079
1087
  setCopied(true);
1080
1088
  setTimeout(() => setCopied(false), 2e3);
1081
1089
  };
1082
- return /* @__PURE__ */ jsxs6(InstallSplash, { title: copy.title, subtitle: copy.subtitle, children: [
1083
- /* @__PURE__ */ jsx12(
1090
+ const handleShowHelp = () => {
1091
+ if (!helpOpen) actions.showIOSOtherHelp();
1092
+ setHelpOpen(true);
1093
+ };
1094
+ return /* @__PURE__ */ jsxs7(InstallSplash, { title: copy.title, subtitle: copy.subtitle, children: [
1095
+ /* @__PURE__ */ jsx13(
1084
1096
  "button",
1085
1097
  {
1086
1098
  "data-testid": "install-prompt-cta-ios-other-primary",
1087
1099
  type: "button",
1088
- onClick: actions.redirectToSafari,
1100
+ onClick: handleShowHelp,
1101
+ "aria-expanded": helpOpen,
1089
1102
  style: primaryButtonStyle,
1090
1103
  children: copy.ctaPrimary
1091
1104
  }
1092
1105
  ),
1093
- /* @__PURE__ */ jsx12(
1106
+ /* @__PURE__ */ jsx13(
1094
1107
  "button",
1095
1108
  {
1096
1109
  "data-testid": "install-prompt-cta-ios-other-secondary",
@@ -1100,7 +1113,71 @@ function IOSOtherVariant({
1100
1113
  children: copied ? copy.copiedToast : copy.ctaSecondary
1101
1114
  }
1102
1115
  ),
1103
- /* @__PURE__ */ jsx12(
1116
+ helpOpen && /* @__PURE__ */ jsxs7(
1117
+ "div",
1118
+ {
1119
+ "data-testid": "install-prompt-ios-other-help",
1120
+ style: { marginTop: 20, textAlign: "left" },
1121
+ children: [
1122
+ /* @__PURE__ */ jsx13(
1123
+ Step2,
1124
+ {
1125
+ n: 1,
1126
+ title: copy.help.step1.title,
1127
+ subtitle: copy.help.step1.subtitle,
1128
+ visual: /* @__PURE__ */ jsx13(
1129
+ "div",
1130
+ {
1131
+ style: {
1132
+ display: "flex",
1133
+ justifyContent: "center",
1134
+ alignItems: "center",
1135
+ background: "#f5f5f7",
1136
+ borderRadius: 12,
1137
+ padding: "12px 0",
1138
+ marginTop: 8
1139
+ },
1140
+ children: /* @__PURE__ */ jsx13(
1141
+ MenuDotsHorizontalIcon,
1142
+ {
1143
+ size: 28,
1144
+ style: { color: "var(--hook-color-primary)" }
1145
+ }
1146
+ )
1147
+ }
1148
+ )
1149
+ }
1150
+ ),
1151
+ /* @__PURE__ */ jsx13(
1152
+ Step2,
1153
+ {
1154
+ n: 2,
1155
+ title: copy.help.step2.title,
1156
+ subtitle: copy.help.step2.subtitle,
1157
+ visual: /* @__PURE__ */ jsxs7(
1158
+ "div",
1159
+ {
1160
+ style: {
1161
+ display: "flex",
1162
+ alignItems: "center",
1163
+ gap: 10,
1164
+ background: "#f5f5f7",
1165
+ borderRadius: 12,
1166
+ padding: "12px 14px",
1167
+ marginTop: 8
1168
+ },
1169
+ children: [
1170
+ /* @__PURE__ */ jsx13(ExternalLinkIcon, { size: 22, style: { color: "#555" } }),
1171
+ /* @__PURE__ */ jsx13("span", { style: { fontSize: 14, color: "#333" }, children: "Abrir no Safari" })
1172
+ ]
1173
+ }
1174
+ )
1175
+ }
1176
+ )
1177
+ ]
1178
+ }
1179
+ ),
1180
+ /* @__PURE__ */ jsx13(
1104
1181
  "button",
1105
1182
  {
1106
1183
  "data-testid": "install-prompt-skip-session",
@@ -1110,7 +1187,7 @@ function IOSOtherVariant({
1110
1187
  children: copy.skip
1111
1188
  }
1112
1189
  ),
1113
- showPermanent && /* @__PURE__ */ jsx12(
1190
+ showPermanent && /* @__PURE__ */ jsx13(
1114
1191
  "button",
1115
1192
  {
1116
1193
  "data-testid": "install-prompt-skip-permanent",
@@ -1125,7 +1202,7 @@ function IOSOtherVariant({
1125
1202
 
1126
1203
  // src/components/InstallGate/variants/InAppBrowserVariant.tsx
1127
1204
  import { useState as useState5 } from "react";
1128
- import { jsx as jsx13, jsxs as jsxs7 } from "react/jsx-runtime";
1205
+ import { jsx as jsx14, jsxs as jsxs8 } from "react/jsx-runtime";
1129
1206
  function InAppBrowserVariant({
1130
1207
  state,
1131
1208
  actions
@@ -1141,10 +1218,10 @@ function InAppBrowserVariant({
1141
1218
  setTimeout(() => setCopied(false), 2e3);
1142
1219
  };
1143
1220
  const DotsIcon = app === "facebook" || app === "telegram" ? MenuDotsVerticalIcon : MenuDotsHorizontalIcon;
1144
- return /* @__PURE__ */ jsxs7(InstallSplash, { title: appCopy.title, children: [
1145
- /* @__PURE__ */ jsx13(Step3, { n: 1, icon: /* @__PURE__ */ jsx13(DotsIcon, { size: 20 }), children: appCopy.step1 }),
1146
- /* @__PURE__ */ jsx13(Step3, { n: 2, icon: /* @__PURE__ */ jsx13(ExternalLinkIcon, { size: 18 }), children: appCopy.step2 }),
1147
- /* @__PURE__ */ jsx13(
1221
+ return /* @__PURE__ */ jsxs8(InstallSplash, { title: appCopy.title, children: [
1222
+ /* @__PURE__ */ jsx14(Step3, { n: 1, icon: /* @__PURE__ */ jsx14(DotsIcon, { size: 20 }), children: appCopy.step1 }),
1223
+ /* @__PURE__ */ jsx14(Step3, { n: 2, icon: /* @__PURE__ */ jsx14(ExternalLinkIcon, { size: 18 }), children: appCopy.step2 }),
1224
+ /* @__PURE__ */ jsx14(
1148
1225
  "button",
1149
1226
  {
1150
1227
  "data-testid": "install-prompt-cta-inapp-copy",
@@ -1154,7 +1231,7 @@ function InAppBrowserVariant({
1154
1231
  children: copied ? copy.copiedToast : copy.copy
1155
1232
  }
1156
1233
  ),
1157
- /* @__PURE__ */ jsx13(
1234
+ /* @__PURE__ */ jsx14(
1158
1235
  "button",
1159
1236
  {
1160
1237
  "data-testid": "install-prompt-skip-session",
@@ -1164,7 +1241,7 @@ function InAppBrowserVariant({
1164
1241
  children: copy.skip
1165
1242
  }
1166
1243
  ),
1167
- showPermanent && /* @__PURE__ */ jsx13(
1244
+ showPermanent && /* @__PURE__ */ jsx14(
1168
1245
  "button",
1169
1246
  {
1170
1247
  "data-testid": "install-prompt-skip-permanent",
@@ -1181,7 +1258,7 @@ function Step3({
1181
1258
  icon,
1182
1259
  children
1183
1260
  }) {
1184
- return /* @__PURE__ */ jsxs7(
1261
+ return /* @__PURE__ */ jsxs8(
1185
1262
  "div",
1186
1263
  {
1187
1264
  style: {
@@ -1195,7 +1272,7 @@ function Step3({
1195
1272
  textAlign: "left"
1196
1273
  },
1197
1274
  children: [
1198
- /* @__PURE__ */ jsx13(
1275
+ /* @__PURE__ */ jsx14(
1199
1276
  "div",
1200
1277
  {
1201
1278
  style: {
@@ -1214,15 +1291,15 @@ function Step3({
1214
1291
  children: n
1215
1292
  }
1216
1293
  ),
1217
- /* @__PURE__ */ jsx13("div", { style: { flex: 1, fontSize: 14, color: "#333" }, children }),
1218
- /* @__PURE__ */ jsx13("div", { style: { color: "#888", flexShrink: 0 }, children: icon })
1294
+ /* @__PURE__ */ jsx14("div", { style: { flex: 1, fontSize: 14, color: "#333" }, children }),
1295
+ /* @__PURE__ */ jsx14("div", { style: { color: "#888", flexShrink: 0 }, children: icon })
1219
1296
  ]
1220
1297
  }
1221
1298
  );
1222
1299
  }
1223
1300
 
1224
1301
  // src/components/InstallGate/variants/DesktopVariant.tsx
1225
- import { jsx as jsx14, jsxs as jsxs8 } from "react/jsx-runtime";
1302
+ import { jsx as jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
1226
1303
  function DesktopVariant({
1227
1304
  state,
1228
1305
  actions
@@ -1231,21 +1308,21 @@ function DesktopVariant({
1231
1308
  const copy = INSTALL_COPY.desktop;
1232
1309
  const iconUrl = theme.icon_url || theme.logo_url || null;
1233
1310
  if (!state.isInstallable) return null;
1234
- return /* @__PURE__ */ jsxs8(
1311
+ return /* @__PURE__ */ jsxs9(
1235
1312
  "div",
1236
1313
  {
1237
1314
  role: "complementary",
1238
1315
  "aria-label": copy.title,
1239
1316
  style: bannerStyle,
1240
1317
  children: [
1241
- iconUrl ? /* @__PURE__ */ jsx14(
1318
+ iconUrl ? /* @__PURE__ */ jsx15(
1242
1319
  "img",
1243
1320
  {
1244
1321
  src: iconUrl,
1245
1322
  alt: "",
1246
1323
  style: { width: 40, height: 40, borderRadius: 10, objectFit: "cover", flexShrink: 0 }
1247
1324
  }
1248
- ) : /* @__PURE__ */ jsx14(
1325
+ ) : /* @__PURE__ */ jsx15(
1249
1326
  "div",
1250
1327
  {
1251
1328
  style: {
@@ -1264,11 +1341,11 @@ function DesktopVariant({
1264
1341
  children: name.charAt(0).toUpperCase()
1265
1342
  }
1266
1343
  ),
1267
- /* @__PURE__ */ jsxs8("div", { style: { flex: 1, minWidth: 0 }, children: [
1268
- /* @__PURE__ */ jsx14("div", { style: { fontSize: 14, fontWeight: 600, color: "#111" }, children: copy.title }),
1269
- /* @__PURE__ */ jsx14("div", { style: { fontSize: 12, color: "#666" }, children: copy.subtitle })
1344
+ /* @__PURE__ */ jsxs9("div", { style: { flex: 1, minWidth: 0 }, children: [
1345
+ /* @__PURE__ */ jsx15("div", { style: { fontSize: 14, fontWeight: 600, color: "#111" }, children: copy.title }),
1346
+ /* @__PURE__ */ jsx15("div", { style: { fontSize: 12, color: "#666" }, children: copy.subtitle })
1270
1347
  ] }),
1271
- /* @__PURE__ */ jsxs8(
1348
+ /* @__PURE__ */ jsxs9(
1272
1349
  "button",
1273
1350
  {
1274
1351
  "data-testid": "install-prompt-cta-desktop",
@@ -1289,12 +1366,12 @@ function DesktopVariant({
1289
1366
  flexShrink: 0
1290
1367
  },
1291
1368
  children: [
1292
- /* @__PURE__ */ jsx14(DownloadIcon, { size: 14 }),
1369
+ /* @__PURE__ */ jsx15(DownloadIcon, { size: 14 }),
1293
1370
  copy.cta
1294
1371
  ]
1295
1372
  }
1296
1373
  ),
1297
- /* @__PURE__ */ jsx14(
1374
+ /* @__PURE__ */ jsx15(
1298
1375
  "button",
1299
1376
  {
1300
1377
  "data-testid": "install-prompt-desktop-close",
@@ -1309,7 +1386,7 @@ function DesktopVariant({
1309
1386
  padding: 4,
1310
1387
  flexShrink: 0
1311
1388
  },
1312
- children: /* @__PURE__ */ jsx14(XIcon, { size: 16 })
1389
+ children: /* @__PURE__ */ jsx15(XIcon, { size: 16 })
1313
1390
  }
1314
1391
  )
1315
1392
  ]
@@ -1333,7 +1410,7 @@ var bannerStyle = {
1333
1410
  };
1334
1411
 
1335
1412
  // src/components/InstallGate/InstallGate.tsx
1336
- import { Fragment as Fragment4, jsx as jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
1413
+ import { Fragment as Fragment4, jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
1337
1414
  function InstallGate({ children }) {
1338
1415
  const { slug, features_enabled } = useTemplateConfig();
1339
1416
  const enabled = features_enabled.includes("install_prompt");
@@ -1354,35 +1431,35 @@ function InstallGate({ children }) {
1354
1431
  variant: installState.variant
1355
1432
  });
1356
1433
  }, [shouldBlock, slug, installState.variant, installState.platform, installState.iosBrowser, installState.androidBrowser, installState.inAppApp]);
1357
- if (!enabled) return /* @__PURE__ */ jsx15(Fragment4, { children });
1358
- if (installState.isInstalled) return /* @__PURE__ */ jsx15(Fragment4, { children });
1434
+ if (!enabled) return /* @__PURE__ */ jsx16(Fragment4, { children });
1435
+ if (installState.isInstalled) return /* @__PURE__ */ jsx16(Fragment4, { children });
1359
1436
  if (installState.variant === "desktop") {
1360
- return /* @__PURE__ */ jsxs9(Fragment4, { children: [
1437
+ return /* @__PURE__ */ jsxs10(Fragment4, { children: [
1361
1438
  children,
1362
- /* @__PURE__ */ jsx15(DesktopVariant, { state: installState, actions: installState })
1439
+ /* @__PURE__ */ jsx16(DesktopVariant, { state: installState, actions: installState })
1363
1440
  ] });
1364
1441
  }
1365
- if (!shouldBlock) return /* @__PURE__ */ jsx15(Fragment4, { children });
1442
+ if (!shouldBlock) return /* @__PURE__ */ jsx16(Fragment4, { children });
1366
1443
  switch (installState.variant) {
1367
1444
  case "android-native":
1368
- return /* @__PURE__ */ jsx15(AndroidNativeVariant, { state: installState, actions: installState });
1445
+ return /* @__PURE__ */ jsx16(AndroidNativeVariant, { state: installState, actions: installState });
1369
1446
  case "android-manual":
1370
- return /* @__PURE__ */ jsx15(AndroidManualVariant, { state: installState, actions: installState });
1447
+ return /* @__PURE__ */ jsx16(AndroidManualVariant, { state: installState, actions: installState });
1371
1448
  case "ios-safari":
1372
- return /* @__PURE__ */ jsx15(IOSafariVariant, { state: installState, actions: installState });
1449
+ return /* @__PURE__ */ jsx16(IOSafariVariant, { state: installState, actions: installState });
1373
1450
  case "ios-other":
1374
- return /* @__PURE__ */ jsx15(IOSOtherVariant, { state: installState, actions: installState });
1451
+ return /* @__PURE__ */ jsx16(IOSOtherVariant, { state: installState, actions: installState });
1375
1452
  case "in-app":
1376
- return /* @__PURE__ */ jsx15(InAppBrowserVariant, { state: installState, actions: installState });
1453
+ return /* @__PURE__ */ jsx16(InAppBrowserVariant, { state: installState, actions: installState });
1377
1454
  case "none":
1378
1455
  default:
1379
- return /* @__PURE__ */ jsx15(Fragment4, { children });
1456
+ return /* @__PURE__ */ jsx16(Fragment4, { children });
1380
1457
  }
1381
1458
  }
1382
1459
 
1383
1460
  // src/defaults/ErrorBoundary.tsx
1384
1461
  import { Component } from "react";
1385
- import { Fragment as Fragment5, jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
1462
+ import { Fragment as Fragment5, jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
1386
1463
  var ErrorBoundary = class extends Component {
1387
1464
  state = { error: null };
1388
1465
  static getDerivedStateFromError(error) {
@@ -1393,12 +1470,12 @@ var ErrorBoundary = class extends Component {
1393
1470
  }
1394
1471
  render() {
1395
1472
  if (this.state.error) {
1396
- return this.props.fallback ?? /* @__PURE__ */ jsxs10("div", { role: "alert", style: { padding: 24, textAlign: "center" }, children: [
1397
- /* @__PURE__ */ jsx16("h2", { children: "Algo deu errado" }),
1398
- /* @__PURE__ */ jsx16("p", { style: { opacity: 0.7 }, children: "Recarregue a p\xE1gina pra tentar de novo." })
1473
+ return this.props.fallback ?? /* @__PURE__ */ jsxs11("div", { role: "alert", style: { padding: 24, textAlign: "center" }, children: [
1474
+ /* @__PURE__ */ jsx17("h2", { children: "Algo deu errado" }),
1475
+ /* @__PURE__ */ jsx17("p", { style: { opacity: 0.7 }, children: "Recarregue a p\xE1gina pra tentar de novo." })
1399
1476
  ] });
1400
1477
  }
1401
- return /* @__PURE__ */ jsx16(Fragment5, { children: this.props.children });
1478
+ return /* @__PURE__ */ jsx17(Fragment5, { children: this.props.children });
1402
1479
  }
1403
1480
  };
1404
1481
 
@@ -1485,13 +1562,13 @@ function useLoginForm() {
1485
1562
  }
1486
1563
 
1487
1564
  // src/internal/GoogleSignInButton.tsx
1488
- import { jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
1565
+ import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
1489
1566
  function GoogleSignInButton({
1490
1567
  onClick,
1491
1568
  testId = "oauth-google",
1492
1569
  label = "Continuar com Google"
1493
1570
  }) {
1494
- return /* @__PURE__ */ jsxs11(
1571
+ return /* @__PURE__ */ jsxs12(
1495
1572
  "button",
1496
1573
  {
1497
1574
  "data-testid": testId,
@@ -1514,36 +1591,36 @@ function GoogleSignInButton({
1514
1591
  fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'
1515
1592
  },
1516
1593
  children: [
1517
- /* @__PURE__ */ jsx17(GoogleGlyph, {}),
1594
+ /* @__PURE__ */ jsx18(GoogleGlyph, {}),
1518
1595
  label
1519
1596
  ]
1520
1597
  }
1521
1598
  );
1522
1599
  }
1523
1600
  function GoogleGlyph() {
1524
- return /* @__PURE__ */ jsxs11("svg", { width: "18", height: "18", viewBox: "0 0 18 18", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", children: [
1525
- /* @__PURE__ */ jsx17(
1601
+ return /* @__PURE__ */ jsxs12("svg", { width: "18", height: "18", viewBox: "0 0 18 18", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", children: [
1602
+ /* @__PURE__ */ jsx18(
1526
1603
  "path",
1527
1604
  {
1528
1605
  d: "M17.64 9.2c0-.637-.057-1.251-.164-1.84H9v3.481h4.844a4.14 4.14 0 0 1-1.796 2.716v2.259h2.908c1.702-1.567 2.684-3.874 2.684-6.615z",
1529
1606
  fill: "#4285F4"
1530
1607
  }
1531
1608
  ),
1532
- /* @__PURE__ */ jsx17(
1609
+ /* @__PURE__ */ jsx18(
1533
1610
  "path",
1534
1611
  {
1535
1612
  d: "M9 18c2.43 0 4.467-.806 5.956-2.18l-2.908-2.259c-.806.54-1.837.86-3.048.86-2.344 0-4.328-1.584-5.036-3.711H.957v2.332A8.997 8.997 0 0 0 9 18z",
1536
1613
  fill: "#34A853"
1537
1614
  }
1538
1615
  ),
1539
- /* @__PURE__ */ jsx17(
1616
+ /* @__PURE__ */ jsx18(
1540
1617
  "path",
1541
1618
  {
1542
1619
  d: "M3.964 10.71A5.41 5.41 0 0 1 3.682 9c0-.593.102-1.17.282-1.71V4.958H.957A8.996 8.996 0 0 0 0 9c0 1.452.348 2.827.957 4.042l3.007-2.332z",
1543
1620
  fill: "#FBBC05"
1544
1621
  }
1545
1622
  ),
1546
- /* @__PURE__ */ jsx17(
1623
+ /* @__PURE__ */ jsx18(
1547
1624
  "path",
1548
1625
  {
1549
1626
  d: "M9 3.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C13.463.891 11.426 0 9 0A8.997 8.997 0 0 0 .957 4.958L3.964 7.29C4.672 5.163 6.656 3.58 9 3.58z",
@@ -1555,7 +1632,7 @@ function GoogleGlyph() {
1555
1632
 
1556
1633
  // src/internal/OAuthErrorBanner.tsx
1557
1634
  import { useEffect as useEffect5, useState as useState7 } from "react";
1558
- import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
1635
+ import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
1559
1636
  var ERROR_MESSAGES = {
1560
1637
  invalid_state: "Sess\xE3o expirou, tente de novo.",
1561
1638
  access_denied: "Voc\xEA cancelou o login com Google.",
@@ -1581,7 +1658,7 @@ function OAuthErrorBanner() {
1581
1658
  }, [code]);
1582
1659
  if (!code) return null;
1583
1660
  const message = ERROR_MESSAGES[code] ?? "N\xE3o conseguimos conectar ao Google. Tente de novo.";
1584
- return /* @__PURE__ */ jsxs12(
1661
+ return /* @__PURE__ */ jsxs13(
1585
1662
  "div",
1586
1663
  {
1587
1664
  role: "alert",
@@ -1596,7 +1673,7 @@ function OAuthErrorBanner() {
1596
1673
  },
1597
1674
  children: [
1598
1675
  message,
1599
- /* @__PURE__ */ jsx18(
1676
+ /* @__PURE__ */ jsx19(
1600
1677
  "button",
1601
1678
  {
1602
1679
  type: "button",
@@ -1621,16 +1698,16 @@ function OAuthErrorBanner() {
1621
1698
  }
1622
1699
 
1623
1700
  // src/defaults/DefaultLoginScreen.tsx
1624
- import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
1701
+ import { jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
1625
1702
  function DefaultLoginScreen({ onNavigate }) {
1626
1703
  const { name } = useTemplateConfig();
1627
1704
  const f = useLoginForm();
1628
- return /* @__PURE__ */ jsxs13("main", { style: { padding: 24, maxWidth: 360, margin: "0 auto" }, children: [
1629
- /* @__PURE__ */ jsx19("h1", { style: { marginBottom: 8 }, children: name }),
1630
- /* @__PURE__ */ jsx19("p", { style: { opacity: 0.7, marginBottom: 24 }, children: "Entre na sua conta" }),
1631
- /* @__PURE__ */ jsx19(OAuthErrorBanner, {}),
1632
- /* @__PURE__ */ jsx19(GoogleSignInButton, { onClick: f.loginWithGoogle, testId: "login-oauth-google" }),
1633
- /* @__PURE__ */ jsxs13(
1705
+ return /* @__PURE__ */ jsxs14("main", { style: { padding: 24, maxWidth: 360, margin: "0 auto" }, children: [
1706
+ /* @__PURE__ */ jsx20("h1", { style: { marginBottom: 8 }, children: name }),
1707
+ /* @__PURE__ */ jsx20("p", { style: { opacity: 0.7, marginBottom: 24 }, children: "Entre na sua conta" }),
1708
+ /* @__PURE__ */ jsx20(OAuthErrorBanner, {}),
1709
+ /* @__PURE__ */ jsx20(GoogleSignInButton, { onClick: f.loginWithGoogle, testId: "login-oauth-google" }),
1710
+ /* @__PURE__ */ jsxs14(
1634
1711
  "div",
1635
1712
  {
1636
1713
  "aria-hidden": "true",
@@ -1643,19 +1720,19 @@ function DefaultLoginScreen({ onNavigate }) {
1643
1720
  fontSize: 12
1644
1721
  },
1645
1722
  children: [
1646
- /* @__PURE__ */ jsx19("span", { style: { flex: 1, height: 1, background: "rgba(0,0,0,0.1)" } }),
1723
+ /* @__PURE__ */ jsx20("span", { style: { flex: 1, height: 1, background: "rgba(0,0,0,0.1)" } }),
1647
1724
  "ou",
1648
- /* @__PURE__ */ jsx19("span", { style: { flex: 1, height: 1, background: "rgba(0,0,0,0.1)" } })
1725
+ /* @__PURE__ */ jsx20("span", { style: { flex: 1, height: 1, background: "rgba(0,0,0,0.1)" } })
1649
1726
  ]
1650
1727
  }
1651
1728
  ),
1652
- /* @__PURE__ */ jsxs13("form", { onSubmit: (e) => {
1729
+ /* @__PURE__ */ jsxs14("form", { onSubmit: (e) => {
1653
1730
  e.preventDefault();
1654
1731
  void f.submit();
1655
1732
  }, children: [
1656
- /* @__PURE__ */ jsxs13("label", { style: { display: "block", marginBottom: 12 }, children: [
1733
+ /* @__PURE__ */ jsxs14("label", { style: { display: "block", marginBottom: 12 }, children: [
1657
1734
  "E-mail",
1658
- /* @__PURE__ */ jsx19(
1735
+ /* @__PURE__ */ jsx20(
1659
1736
  "input",
1660
1737
  {
1661
1738
  "data-testid": "login-email",
@@ -1665,11 +1742,11 @@ function DefaultLoginScreen({ onNavigate }) {
1665
1742
  style: { display: "block", width: "100%" }
1666
1743
  }
1667
1744
  ),
1668
- f.emailError && /* @__PURE__ */ jsx19("small", { style: { color: "#c00" }, children: f.emailError })
1745
+ f.emailError && /* @__PURE__ */ jsx20("small", { style: { color: "#c00" }, children: f.emailError })
1669
1746
  ] }),
1670
- /* @__PURE__ */ jsxs13("label", { style: { display: "block", marginBottom: 12 }, children: [
1747
+ /* @__PURE__ */ jsxs14("label", { style: { display: "block", marginBottom: 12 }, children: [
1671
1748
  "Senha",
1672
- /* @__PURE__ */ jsx19(
1749
+ /* @__PURE__ */ jsx20(
1673
1750
  "input",
1674
1751
  {
1675
1752
  "data-testid": "login-password",
@@ -1679,10 +1756,10 @@ function DefaultLoginScreen({ onNavigate }) {
1679
1756
  style: { display: "block", width: "100%" }
1680
1757
  }
1681
1758
  ),
1682
- f.passwordError && /* @__PURE__ */ jsx19("small", { style: { color: "#c00" }, children: f.passwordError })
1759
+ f.passwordError && /* @__PURE__ */ jsx20("small", { style: { color: "#c00" }, children: f.passwordError })
1683
1760
  ] }),
1684
- f.error && /* @__PURE__ */ jsx19("div", { role: "alert", style: { color: "#c00", marginBottom: 12 }, children: f.error.message }),
1685
- /* @__PURE__ */ jsx19(
1761
+ f.error && /* @__PURE__ */ jsx20("div", { role: "alert", style: { color: "#c00", marginBottom: 12 }, children: f.error.message }),
1762
+ /* @__PURE__ */ jsx20(
1686
1763
  "button",
1687
1764
  {
1688
1765
  "data-testid": "login-submit",
@@ -1701,9 +1778,9 @@ function DefaultLoginScreen({ onNavigate }) {
1701
1778
  }
1702
1779
  )
1703
1780
  ] }),
1704
- /* @__PURE__ */ jsxs13("div", { style: { marginTop: 16, display: "flex", justifyContent: "space-between" }, children: [
1705
- /* @__PURE__ */ jsx19("button", { "data-testid": "login-goto-signup", type: "button", onClick: () => onNavigate("signup"), style: { background: "none", border: "none", cursor: "pointer" }, children: "Criar conta" }),
1706
- /* @__PURE__ */ jsx19("button", { "data-testid": "login-goto-forgot", type: "button", onClick: () => onNavigate("forgot"), style: { background: "none", border: "none", cursor: "pointer" }, children: "Esqueci senha" })
1781
+ /* @__PURE__ */ jsxs14("div", { style: { marginTop: 16, display: "flex", justifyContent: "space-between" }, children: [
1782
+ /* @__PURE__ */ jsx20("button", { "data-testid": "login-goto-signup", type: "button", onClick: () => onNavigate("signup"), style: { background: "none", border: "none", cursor: "pointer" }, children: "Criar conta" }),
1783
+ /* @__PURE__ */ jsx20("button", { "data-testid": "login-goto-forgot", type: "button", onClick: () => onNavigate("forgot"), style: { background: "none", border: "none", cursor: "pointer" }, children: "Esqueci senha" })
1707
1784
  ] })
1708
1785
  ] });
1709
1786
  }
@@ -1769,16 +1846,16 @@ function useSignupForm() {
1769
1846
  }
1770
1847
 
1771
1848
  // src/defaults/DefaultSignupScreen.tsx
1772
- import { jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
1849
+ import { jsx as jsx21, jsxs as jsxs15 } from "react/jsx-runtime";
1773
1850
  function DefaultSignupScreen({ onNavigate }) {
1774
1851
  const { name } = useTemplateConfig();
1775
1852
  const f = useSignupForm();
1776
- return /* @__PURE__ */ jsxs14("main", { style: { padding: 24, maxWidth: 360, margin: "0 auto" }, children: [
1777
- /* @__PURE__ */ jsx20("h1", { style: { marginBottom: 8 }, children: name }),
1778
- /* @__PURE__ */ jsx20("p", { style: { opacity: 0.7, marginBottom: 24 }, children: "Criar sua conta" }),
1779
- /* @__PURE__ */ jsx20(OAuthErrorBanner, {}),
1780
- /* @__PURE__ */ jsx20(GoogleSignInButton, { onClick: f.loginWithGoogle, testId: "signup-oauth-google" }),
1781
- /* @__PURE__ */ jsxs14(
1853
+ return /* @__PURE__ */ jsxs15("main", { style: { padding: 24, maxWidth: 360, margin: "0 auto" }, children: [
1854
+ /* @__PURE__ */ jsx21("h1", { style: { marginBottom: 8 }, children: name }),
1855
+ /* @__PURE__ */ jsx21("p", { style: { opacity: 0.7, marginBottom: 24 }, children: "Criar sua conta" }),
1856
+ /* @__PURE__ */ jsx21(OAuthErrorBanner, {}),
1857
+ /* @__PURE__ */ jsx21(GoogleSignInButton, { onClick: f.loginWithGoogle, testId: "signup-oauth-google" }),
1858
+ /* @__PURE__ */ jsxs15(
1782
1859
  "div",
1783
1860
  {
1784
1861
  "aria-hidden": "true",
@@ -1791,35 +1868,35 @@ function DefaultSignupScreen({ onNavigate }) {
1791
1868
  fontSize: 12
1792
1869
  },
1793
1870
  children: [
1794
- /* @__PURE__ */ jsx20("span", { style: { flex: 1, height: 1, background: "rgba(0,0,0,0.1)" } }),
1871
+ /* @__PURE__ */ jsx21("span", { style: { flex: 1, height: 1, background: "rgba(0,0,0,0.1)" } }),
1795
1872
  "ou",
1796
- /* @__PURE__ */ jsx20("span", { style: { flex: 1, height: 1, background: "rgba(0,0,0,0.1)" } })
1873
+ /* @__PURE__ */ jsx21("span", { style: { flex: 1, height: 1, background: "rgba(0,0,0,0.1)" } })
1797
1874
  ]
1798
1875
  }
1799
1876
  ),
1800
- /* @__PURE__ */ jsxs14("form", { onSubmit: (e) => {
1877
+ /* @__PURE__ */ jsxs15("form", { onSubmit: (e) => {
1801
1878
  e.preventDefault();
1802
1879
  void f.submit();
1803
1880
  }, children: [
1804
- /* @__PURE__ */ jsxs14("label", { style: { display: "block", marginBottom: 12 }, children: [
1881
+ /* @__PURE__ */ jsxs15("label", { style: { display: "block", marginBottom: 12 }, children: [
1805
1882
  "Nome",
1806
- /* @__PURE__ */ jsx20("input", { "data-testid": "signup-name", value: f.name, onChange: (e) => f.setName(e.target.value), style: { display: "block", width: "100%" } }),
1807
- f.nameError && /* @__PURE__ */ jsx20("small", { style: { color: "#c00" }, children: f.nameError })
1883
+ /* @__PURE__ */ jsx21("input", { "data-testid": "signup-name", value: f.name, onChange: (e) => f.setName(e.target.value), style: { display: "block", width: "100%" } }),
1884
+ f.nameError && /* @__PURE__ */ jsx21("small", { style: { color: "#c00" }, children: f.nameError })
1808
1885
  ] }),
1809
- /* @__PURE__ */ jsxs14("label", { style: { display: "block", marginBottom: 12 }, children: [
1886
+ /* @__PURE__ */ jsxs15("label", { style: { display: "block", marginBottom: 12 }, children: [
1810
1887
  "E-mail",
1811
- /* @__PURE__ */ jsx20("input", { "data-testid": "signup-email", type: "email", value: f.email, onChange: (e) => f.setEmail(e.target.value), style: { display: "block", width: "100%" } }),
1812
- f.emailError && /* @__PURE__ */ jsx20("small", { style: { color: "#c00" }, children: f.emailError })
1888
+ /* @__PURE__ */ jsx21("input", { "data-testid": "signup-email", type: "email", value: f.email, onChange: (e) => f.setEmail(e.target.value), style: { display: "block", width: "100%" } }),
1889
+ f.emailError && /* @__PURE__ */ jsx21("small", { style: { color: "#c00" }, children: f.emailError })
1813
1890
  ] }),
1814
- /* @__PURE__ */ jsxs14("label", { style: { display: "block", marginBottom: 12 }, children: [
1891
+ /* @__PURE__ */ jsxs15("label", { style: { display: "block", marginBottom: 12 }, children: [
1815
1892
  "Senha",
1816
- /* @__PURE__ */ jsx20("input", { "data-testid": "signup-password", type: "password", value: f.password, onChange: (e) => f.setPassword(e.target.value), style: { display: "block", width: "100%" } }),
1817
- f.passwordError && /* @__PURE__ */ jsx20("small", { style: { color: "#c00" }, children: f.passwordError })
1893
+ /* @__PURE__ */ jsx21("input", { "data-testid": "signup-password", type: "password", value: f.password, onChange: (e) => f.setPassword(e.target.value), style: { display: "block", width: "100%" } }),
1894
+ f.passwordError && /* @__PURE__ */ jsx21("small", { style: { color: "#c00" }, children: f.passwordError })
1818
1895
  ] }),
1819
- f.error && /* @__PURE__ */ jsx20("div", { role: "alert", style: { color: "#c00", marginBottom: 12 }, children: f.error.message }),
1820
- /* @__PURE__ */ jsx20("button", { "data-testid": "signup-submit", type: "submit", disabled: !f.canSubmit, style: { width: "100%", padding: 12, background: "var(--hook-color-primary)", color: "#fff", border: "none", borderRadius: 8, opacity: f.canSubmit ? 1 : 0.5 }, children: f.submitting ? "Criando..." : "Criar conta" })
1896
+ f.error && /* @__PURE__ */ jsx21("div", { role: "alert", style: { color: "#c00", marginBottom: 12 }, children: f.error.message }),
1897
+ /* @__PURE__ */ jsx21("button", { "data-testid": "signup-submit", type: "submit", disabled: !f.canSubmit, style: { width: "100%", padding: 12, background: "var(--hook-color-primary)", color: "#fff", border: "none", borderRadius: 8, opacity: f.canSubmit ? 1 : 0.5 }, children: f.submitting ? "Criando..." : "Criar conta" })
1821
1898
  ] }),
1822
- /* @__PURE__ */ jsx20("div", { style: { marginTop: 16 }, children: /* @__PURE__ */ jsx20("button", { "data-testid": "signup-goto-login", type: "button", onClick: () => onNavigate("login"), style: { background: "none", border: "none", cursor: "pointer" }, children: "J\xE1 tem conta? Entre" }) })
1899
+ /* @__PURE__ */ jsx21("div", { style: { marginTop: 16 }, children: /* @__PURE__ */ jsx21("button", { "data-testid": "signup-goto-login", type: "button", onClick: () => onNavigate("login"), style: { background: "none", border: "none", cursor: "pointer" }, children: "J\xE1 tem conta? Entre" }) })
1823
1900
  ] });
1824
1901
  }
1825
1902
 
@@ -1867,33 +1944,33 @@ function useForgotForm() {
1867
1944
  }
1868
1945
 
1869
1946
  // src/defaults/DefaultForgotScreen.tsx
1870
- import { jsx as jsx21, jsxs as jsxs15 } from "react/jsx-runtime";
1947
+ import { jsx as jsx22, jsxs as jsxs16 } from "react/jsx-runtime";
1871
1948
  function DefaultForgotScreen({ onNavigate }) {
1872
1949
  const { name } = useTemplateConfig();
1873
1950
  const f = useForgotForm();
1874
1951
  if (f.sent) {
1875
- return /* @__PURE__ */ jsxs15("main", { style: { padding: 24, maxWidth: 360, margin: "0 auto", textAlign: "center" }, children: [
1876
- /* @__PURE__ */ jsx21("h1", { children: "Verifique seu e-mail" }),
1877
- /* @__PURE__ */ jsx21("p", { style: { opacity: 0.7 }, children: "Enviamos um link pra redefinir sua senha." }),
1878
- /* @__PURE__ */ jsx21("button", { "data-testid": "forgot-back-login", type: "button", onClick: () => onNavigate("login"), children: "Voltar pro login" })
1952
+ return /* @__PURE__ */ jsxs16("main", { style: { padding: 24, maxWidth: 360, margin: "0 auto", textAlign: "center" }, children: [
1953
+ /* @__PURE__ */ jsx22("h1", { children: "Verifique seu e-mail" }),
1954
+ /* @__PURE__ */ jsx22("p", { style: { opacity: 0.7 }, children: "Enviamos um link pra redefinir sua senha." }),
1955
+ /* @__PURE__ */ jsx22("button", { "data-testid": "forgot-back-login", type: "button", onClick: () => onNavigate("login"), children: "Voltar pro login" })
1879
1956
  ] });
1880
1957
  }
1881
- return /* @__PURE__ */ jsxs15("main", { style: { padding: 24, maxWidth: 360, margin: "0 auto" }, children: [
1882
- /* @__PURE__ */ jsx21("h1", { style: { marginBottom: 8 }, children: name }),
1883
- /* @__PURE__ */ jsx21("p", { style: { opacity: 0.7, marginBottom: 24 }, children: "Redefinir senha" }),
1884
- /* @__PURE__ */ jsxs15("form", { onSubmit: (e) => {
1958
+ return /* @__PURE__ */ jsxs16("main", { style: { padding: 24, maxWidth: 360, margin: "0 auto" }, children: [
1959
+ /* @__PURE__ */ jsx22("h1", { style: { marginBottom: 8 }, children: name }),
1960
+ /* @__PURE__ */ jsx22("p", { style: { opacity: 0.7, marginBottom: 24 }, children: "Redefinir senha" }),
1961
+ /* @__PURE__ */ jsxs16("form", { onSubmit: (e) => {
1885
1962
  e.preventDefault();
1886
1963
  void f.submit();
1887
1964
  }, children: [
1888
- /* @__PURE__ */ jsxs15("label", { style: { display: "block", marginBottom: 12 }, children: [
1965
+ /* @__PURE__ */ jsxs16("label", { style: { display: "block", marginBottom: 12 }, children: [
1889
1966
  "E-mail",
1890
- /* @__PURE__ */ jsx21("input", { "data-testid": "forgot-email", type: "email", value: f.email, onChange: (e) => f.setEmail(e.target.value), style: { display: "block", width: "100%" } }),
1891
- f.emailError && /* @__PURE__ */ jsx21("small", { style: { color: "#c00" }, children: f.emailError })
1967
+ /* @__PURE__ */ jsx22("input", { "data-testid": "forgot-email", type: "email", value: f.email, onChange: (e) => f.setEmail(e.target.value), style: { display: "block", width: "100%" } }),
1968
+ f.emailError && /* @__PURE__ */ jsx22("small", { style: { color: "#c00" }, children: f.emailError })
1892
1969
  ] }),
1893
- f.error && /* @__PURE__ */ jsx21("div", { role: "alert", style: { color: "#c00", marginBottom: 12 }, children: f.error.message }),
1894
- /* @__PURE__ */ jsx21("button", { "data-testid": "forgot-submit", type: "submit", disabled: !f.canSubmit, style: { width: "100%", padding: 12, background: "var(--hook-color-primary)", color: "#fff", border: "none", borderRadius: 8, opacity: f.canSubmit ? 1 : 0.5 }, children: f.submitting ? "Enviando..." : "Enviar link" })
1970
+ f.error && /* @__PURE__ */ jsx22("div", { role: "alert", style: { color: "#c00", marginBottom: 12 }, children: f.error.message }),
1971
+ /* @__PURE__ */ jsx22("button", { "data-testid": "forgot-submit", type: "submit", disabled: !f.canSubmit, style: { width: "100%", padding: 12, background: "var(--hook-color-primary)", color: "#fff", border: "none", borderRadius: 8, opacity: f.canSubmit ? 1 : 0.5 }, children: f.submitting ? "Enviando..." : "Enviar link" })
1895
1972
  ] }),
1896
- /* @__PURE__ */ jsx21("div", { style: { marginTop: 16 }, children: /* @__PURE__ */ jsx21("button", { "data-testid": "forgot-goto-login", type: "button", onClick: () => onNavigate("login"), style: { background: "none", border: "none", cursor: "pointer" }, children: "Voltar pro login" }) })
1973
+ /* @__PURE__ */ jsx22("div", { style: { marginTop: 16 }, children: /* @__PURE__ */ jsx22("button", { "data-testid": "forgot-goto-login", type: "button", onClick: () => onNavigate("login"), style: { background: "none", border: "none", cursor: "pointer" }, children: "Voltar pro login" }) })
1897
1974
  ] });
1898
1975
  }
1899
1976
 
@@ -1962,50 +2039,50 @@ function useResetForm() {
1962
2039
  }
1963
2040
 
1964
2041
  // src/defaults/DefaultResetScreen.tsx
1965
- import { jsx as jsx22, jsxs as jsxs16 } from "react/jsx-runtime";
2042
+ import { jsx as jsx23, jsxs as jsxs17 } from "react/jsx-runtime";
1966
2043
  function DefaultResetScreen({ onNavigate }) {
1967
2044
  const { name } = useTemplateConfig();
1968
2045
  const f = useResetForm();
1969
2046
  if (f.done) {
1970
- return /* @__PURE__ */ jsxs16("main", { style: { padding: 24, maxWidth: 360, margin: "0 auto", textAlign: "center" }, children: [
1971
- /* @__PURE__ */ jsx22("h1", { children: "Senha alterada" }),
1972
- /* @__PURE__ */ jsx22("p", { style: { opacity: 0.7 }, children: "Agora \xE9 s\xF3 fazer login com a nova senha." }),
1973
- /* @__PURE__ */ jsx22("button", { "data-testid": "reset-back-login", type: "button", onClick: () => onNavigate("login"), children: "Ir pro login" })
2047
+ return /* @__PURE__ */ jsxs17("main", { style: { padding: 24, maxWidth: 360, margin: "0 auto", textAlign: "center" }, children: [
2048
+ /* @__PURE__ */ jsx23("h1", { children: "Senha alterada" }),
2049
+ /* @__PURE__ */ jsx23("p", { style: { opacity: 0.7 }, children: "Agora \xE9 s\xF3 fazer login com a nova senha." }),
2050
+ /* @__PURE__ */ jsx23("button", { "data-testid": "reset-back-login", type: "button", onClick: () => onNavigate("login"), children: "Ir pro login" })
1974
2051
  ] });
1975
2052
  }
1976
2053
  if (f.token === null) {
1977
- return /* @__PURE__ */ jsxs16("main", { style: { padding: 24, maxWidth: 360, margin: "0 auto", textAlign: "center" }, children: [
1978
- /* @__PURE__ */ jsx22("h1", { children: "Link inv\xE1lido" }),
1979
- /* @__PURE__ */ jsx22("p", { style: { opacity: 0.7 }, children: "Pe\xE7a um novo link de reset." }),
1980
- /* @__PURE__ */ jsx22("button", { "data-testid": "reset-goto-forgot", type: "button", onClick: () => onNavigate("forgot"), children: "Pedir novo link" })
2054
+ return /* @__PURE__ */ jsxs17("main", { style: { padding: 24, maxWidth: 360, margin: "0 auto", textAlign: "center" }, children: [
2055
+ /* @__PURE__ */ jsx23("h1", { children: "Link inv\xE1lido" }),
2056
+ /* @__PURE__ */ jsx23("p", { style: { opacity: 0.7 }, children: "Pe\xE7a um novo link de reset." }),
2057
+ /* @__PURE__ */ jsx23("button", { "data-testid": "reset-goto-forgot", type: "button", onClick: () => onNavigate("forgot"), children: "Pedir novo link" })
1981
2058
  ] });
1982
2059
  }
1983
- return /* @__PURE__ */ jsxs16("main", { style: { padding: 24, maxWidth: 360, margin: "0 auto" }, children: [
1984
- /* @__PURE__ */ jsx22("h1", { style: { marginBottom: 8 }, children: name }),
1985
- /* @__PURE__ */ jsx22("p", { style: { opacity: 0.7, marginBottom: 24 }, children: "Escolha uma nova senha" }),
1986
- /* @__PURE__ */ jsxs16("form", { onSubmit: (e) => {
2060
+ return /* @__PURE__ */ jsxs17("main", { style: { padding: 24, maxWidth: 360, margin: "0 auto" }, children: [
2061
+ /* @__PURE__ */ jsx23("h1", { style: { marginBottom: 8 }, children: name }),
2062
+ /* @__PURE__ */ jsx23("p", { style: { opacity: 0.7, marginBottom: 24 }, children: "Escolha uma nova senha" }),
2063
+ /* @__PURE__ */ jsxs17("form", { onSubmit: (e) => {
1987
2064
  e.preventDefault();
1988
2065
  void f.submit();
1989
2066
  }, children: [
1990
- /* @__PURE__ */ jsxs16("label", { style: { display: "block", marginBottom: 12 }, children: [
2067
+ /* @__PURE__ */ jsxs17("label", { style: { display: "block", marginBottom: 12 }, children: [
1991
2068
  "Nova senha",
1992
- /* @__PURE__ */ jsx22("input", { "data-testid": "reset-password", type: "password", value: f.password, onChange: (e) => f.setPassword(e.target.value), style: { display: "block", width: "100%" }, autoComplete: "new-password" }),
1993
- f.passwordError && /* @__PURE__ */ jsx22("small", { style: { color: "#c00" }, children: f.passwordError })
2069
+ /* @__PURE__ */ jsx23("input", { "data-testid": "reset-password", type: "password", value: f.password, onChange: (e) => f.setPassword(e.target.value), style: { display: "block", width: "100%" }, autoComplete: "new-password" }),
2070
+ f.passwordError && /* @__PURE__ */ jsx23("small", { style: { color: "#c00" }, children: f.passwordError })
1994
2071
  ] }),
1995
- /* @__PURE__ */ jsxs16("label", { style: { display: "block", marginBottom: 12 }, children: [
2072
+ /* @__PURE__ */ jsxs17("label", { style: { display: "block", marginBottom: 12 }, children: [
1996
2073
  "Confirmar senha",
1997
- /* @__PURE__ */ jsx22("input", { "data-testid": "reset-confirm", type: "password", value: f.confirm, onChange: (e) => f.setConfirm(e.target.value), style: { display: "block", width: "100%" }, autoComplete: "new-password" }),
1998
- f.confirmError && /* @__PURE__ */ jsx22("small", { style: { color: "#c00" }, children: f.confirmError })
2074
+ /* @__PURE__ */ jsx23("input", { "data-testid": "reset-confirm", type: "password", value: f.confirm, onChange: (e) => f.setConfirm(e.target.value), style: { display: "block", width: "100%" }, autoComplete: "new-password" }),
2075
+ f.confirmError && /* @__PURE__ */ jsx23("small", { style: { color: "#c00" }, children: f.confirmError })
1999
2076
  ] }),
2000
- f.error && /* @__PURE__ */ jsx22("div", { role: "alert", style: { color: "#c00", marginBottom: 12 }, children: f.error.message }),
2001
- /* @__PURE__ */ jsx22("button", { "data-testid": "reset-submit", type: "submit", disabled: !f.canSubmit, style: { width: "100%", padding: 12, background: "var(--hook-color-primary)", color: "#fff", border: "none", borderRadius: 8, opacity: f.canSubmit ? 1 : 0.5 }, children: f.submitting ? "Alterando..." : "Alterar senha" })
2077
+ f.error && /* @__PURE__ */ jsx23("div", { role: "alert", style: { color: "#c00", marginBottom: 12 }, children: f.error.message }),
2078
+ /* @__PURE__ */ jsx23("button", { "data-testid": "reset-submit", type: "submit", disabled: !f.canSubmit, style: { width: "100%", padding: 12, background: "var(--hook-color-primary)", color: "#fff", border: "none", borderRadius: 8, opacity: f.canSubmit ? 1 : 0.5 }, children: f.submitting ? "Alterando..." : "Alterar senha" })
2002
2079
  ] })
2003
2080
  ] });
2004
2081
  }
2005
2082
 
2006
2083
  // src/defaults/DefaultPaywall.tsx
2007
2084
  import { useState as useState11 } from "react";
2008
- import { jsx as jsx23, jsxs as jsxs17 } from "react/jsx-runtime";
2085
+ import { jsx as jsx24, jsxs as jsxs18 } from "react/jsx-runtime";
2009
2086
  function DefaultPaywall() {
2010
2087
  const config = useTemplateConfig();
2011
2088
  const { checkout, opening, error } = usePaywallState();
@@ -2013,16 +2090,16 @@ function DefaultPaywall() {
2013
2090
  const [cpf, setCpf] = useState11("");
2014
2091
  const cpfDigits = cpf.replace(/\D/g, "");
2015
2092
  const canCheckout = cpfDigits.length === 11 && !opening;
2016
- return /* @__PURE__ */ jsxs17("main", { style: { padding: 24, maxWidth: 440, margin: "0 auto", textAlign: "center" }, children: [
2017
- /* @__PURE__ */ jsx23("h1", { style: { marginBottom: 8 }, children: p.title }),
2018
- p.subtitle && /* @__PURE__ */ jsx23("p", { style: { opacity: 0.7, marginBottom: 24 }, children: p.subtitle }),
2019
- /* @__PURE__ */ jsx23("ul", { style: { listStyle: "none", padding: 0, textAlign: "left", marginBottom: 24 }, children: p.benefits.map((b) => /* @__PURE__ */ jsxs17("li", { style: { padding: "8px 0", display: "flex", alignItems: "center" }, children: [
2020
- /* @__PURE__ */ jsx23("span", { "aria-hidden": true, style: { marginRight: 8 }, children: "\u2713" }),
2021
- /* @__PURE__ */ jsx23("span", { children: b })
2093
+ return /* @__PURE__ */ jsxs18("main", { style: { padding: 24, maxWidth: 440, margin: "0 auto", textAlign: "center" }, children: [
2094
+ /* @__PURE__ */ jsx24("h1", { style: { marginBottom: 8 }, children: p.title }),
2095
+ p.subtitle && /* @__PURE__ */ jsx24("p", { style: { opacity: 0.7, marginBottom: 24 }, children: p.subtitle }),
2096
+ /* @__PURE__ */ jsx24("ul", { style: { listStyle: "none", padding: 0, textAlign: "left", marginBottom: 24 }, children: p.benefits.map((b) => /* @__PURE__ */ jsxs18("li", { style: { padding: "8px 0", display: "flex", alignItems: "center" }, children: [
2097
+ /* @__PURE__ */ jsx24("span", { "aria-hidden": true, style: { marginRight: 8 }, children: "\u2713" }),
2098
+ /* @__PURE__ */ jsx24("span", { children: b })
2022
2099
  ] }, b)) }),
2023
- /* @__PURE__ */ jsxs17("div", { style: { textAlign: "left", marginBottom: 16 }, children: [
2024
- /* @__PURE__ */ jsx23("label", { style: { display: "block", fontSize: 14, opacity: 0.7, marginBottom: 4 }, children: "Seu CPF (pra emiss\xE3o de recibo)" }),
2025
- /* @__PURE__ */ jsx23(
2100
+ /* @__PURE__ */ jsxs18("div", { style: { textAlign: "left", marginBottom: 16 }, children: [
2101
+ /* @__PURE__ */ jsx24("label", { style: { display: "block", fontSize: 14, opacity: 0.7, marginBottom: 4 }, children: "Seu CPF (pra emiss\xE3o de recibo)" }),
2102
+ /* @__PURE__ */ jsx24(
2026
2103
  "input",
2027
2104
  {
2028
2105
  "data-testid": "paywall-cpf",
@@ -2035,8 +2112,8 @@ function DefaultPaywall() {
2035
2112
  }
2036
2113
  )
2037
2114
  ] }),
2038
- error && /* @__PURE__ */ jsx23("div", { role: "alert", style: { color: "#c00", marginBottom: 12 }, children: error.message }),
2039
- /* @__PURE__ */ jsx23(
2115
+ error && /* @__PURE__ */ jsx24("div", { role: "alert", style: { color: "#c00", marginBottom: 12 }, children: error.message }),
2116
+ /* @__PURE__ */ jsx24(
2040
2117
  "button",
2041
2118
  {
2042
2119
  "data-testid": "paywall-cta",
@@ -2057,13 +2134,13 @@ function DefaultPaywall() {
2057
2134
  children: opening ? "Abrindo..." : p.cta
2058
2135
  }
2059
2136
  ),
2060
- p.priceHint && /* @__PURE__ */ jsx23("p", { style: { opacity: 0.6, marginTop: 12 }, children: p.priceHint }),
2061
- p.footerNote && /* @__PURE__ */ jsx23("p", { style: { opacity: 0.5, marginTop: 16, fontSize: 12 }, children: p.footerNote })
2137
+ p.priceHint && /* @__PURE__ */ jsx24("p", { style: { opacity: 0.6, marginTop: 12 }, children: p.priceHint }),
2138
+ p.footerNote && /* @__PURE__ */ jsx24("p", { style: { opacity: 0.5, marginTop: 16, fontSize: 12 }, children: p.footerNote })
2062
2139
  ] });
2063
2140
  }
2064
2141
 
2065
2142
  // src/AppRoot.tsx
2066
- import { Fragment as Fragment6, jsx as jsx24, jsxs as jsxs18 } from "react/jsx-runtime";
2143
+ import { Fragment as Fragment6, jsx as jsx25, jsxs as jsxs19 } from "react/jsx-runtime";
2067
2144
  var BACKOFF_MS = [2e3, 5e3, 1e4, 2e4, 4e4];
2068
2145
  function PaymentReturnHandler({ children }) {
2069
2146
  const { subscription } = useHook8();
@@ -2110,7 +2187,7 @@ function PaymentReturnHandler({ children }) {
2110
2187
  };
2111
2188
  }, [runPoll]);
2112
2189
  if (state === "confirming") {
2113
- return /* @__PURE__ */ jsx24(
2190
+ return /* @__PURE__ */ jsx25(
2114
2191
  "div",
2115
2192
  {
2116
2193
  role: "status",
@@ -2121,9 +2198,9 @@ function PaymentReturnHandler({ children }) {
2121
2198
  );
2122
2199
  }
2123
2200
  if (state === "waiting") {
2124
- return /* @__PURE__ */ jsx24("div", { role: "status", "aria-live": "polite", style: overlayStyle2, children: /* @__PURE__ */ jsxs18("div", { style: { maxWidth: 320, textAlign: "center", lineHeight: 1.5 }, children: [
2125
- /* @__PURE__ */ jsx24("div", { style: { marginBottom: 16 }, children: "Pagamento aceito. Estamos confirmando com o banco \u2014 pode levar alguns minutos." }),
2126
- /* @__PURE__ */ jsx24(
2201
+ return /* @__PURE__ */ jsx25("div", { role: "status", "aria-live": "polite", style: overlayStyle2, children: /* @__PURE__ */ jsxs19("div", { style: { maxWidth: 320, textAlign: "center", lineHeight: 1.5 }, children: [
2202
+ /* @__PURE__ */ jsx25("div", { style: { marginBottom: 16 }, children: "Pagamento aceito. Estamos confirmando com o banco \u2014 pode levar alguns minutos." }),
2203
+ /* @__PURE__ */ jsx25(
2127
2204
  "button",
2128
2205
  {
2129
2206
  type: "button",
@@ -2134,7 +2211,7 @@ function PaymentReturnHandler({ children }) {
2134
2211
  )
2135
2212
  ] }) });
2136
2213
  }
2137
- return /* @__PURE__ */ jsx24(Fragment6, { children });
2214
+ return /* @__PURE__ */ jsx25(Fragment6, { children });
2138
2215
  }
2139
2216
  var overlayStyle2 = {
2140
2217
  position: "fixed",
@@ -2167,9 +2244,9 @@ function AppRoot({
2167
2244
  Reset = DefaultResetScreen,
2168
2245
  Paywall = DefaultPaywall
2169
2246
  }) {
2170
- return /* @__PURE__ */ jsx24(PaymentReturnHandler, { children: /* @__PURE__ */ jsx24(TemplateConfigProvider, { config, children: /* @__PURE__ */ jsx24(ErrorBoundary, { children: /* @__PURE__ */ jsx24(ThemeProvider, { children: /* @__PURE__ */ jsx24(InstallGate, { children: /* @__PURE__ */ jsx24(AuthGate, { Login, Signup, Forgot, Reset, children: /* @__PURE__ */ jsx24(PersistedKeysPrefetch, { children: /* @__PURE__ */ jsxs18(SubscriptionGate, { Paywall, children: [
2247
+ return /* @__PURE__ */ jsx25(PaymentReturnHandler, { children: /* @__PURE__ */ jsx25(TemplateConfigProvider, { config, children: /* @__PURE__ */ jsx25(ErrorBoundary, { children: /* @__PURE__ */ jsx25(ThemeProvider, { children: /* @__PURE__ */ jsx25(InstallGate, { children: /* @__PURE__ */ jsx25(AuthGate, { Login, Signup, Forgot, Reset, children: /* @__PURE__ */ jsx25(PersistedKeysPrefetch, { children: /* @__PURE__ */ jsxs19(SubscriptionGate, { Paywall, children: [
2171
2248
  children,
2172
- /* @__PURE__ */ jsx24(PushPrompt, {})
2249
+ /* @__PURE__ */ jsx25(PushPrompt, {})
2173
2250
  ] }) }) }) }) }) }) }) });
2174
2251
  }
2175
2252
 
@@ -2231,31 +2308,31 @@ function usePush() {
2231
2308
  }
2232
2309
 
2233
2310
  // src/components/PushPrompt.tsx
2234
- import { jsx as jsx25, jsxs as jsxs19 } from "react/jsx-runtime";
2311
+ import { jsx as jsx26, jsxs as jsxs20 } from "react/jsx-runtime";
2235
2312
  function PushPrompt2({ texts, onSubscribed, onDeclined, onInstallRequested, className }) {
2236
2313
  const { state, subscribe } = usePush();
2237
2314
  if (state.kind === "subscribed") return null;
2238
2315
  if (state.kind === "ios_needs_install") {
2239
- return /* @__PURE__ */ jsxs19("div", { className, role: "region", "aria-label": texts.iosInstallTitle, children: [
2240
- /* @__PURE__ */ jsx25("h3", { children: texts.iosInstallTitle }),
2241
- /* @__PURE__ */ jsx25("p", { children: texts.iosInstallBody }),
2242
- onInstallRequested && texts.iosInstallCta && /* @__PURE__ */ jsx25("button", { onClick: onInstallRequested, children: texts.iosInstallCta })
2316
+ return /* @__PURE__ */ jsxs20("div", { className, role: "region", "aria-label": texts.iosInstallTitle, children: [
2317
+ /* @__PURE__ */ jsx26("h3", { children: texts.iosInstallTitle }),
2318
+ /* @__PURE__ */ jsx26("p", { children: texts.iosInstallBody }),
2319
+ onInstallRequested && texts.iosInstallCta && /* @__PURE__ */ jsx26("button", { onClick: onInstallRequested, children: texts.iosInstallCta })
2243
2320
  ] });
2244
2321
  }
2245
2322
  if (state.kind === "denied") {
2246
- return /* @__PURE__ */ jsxs19("div", { className, role: "region", "aria-label": texts.deniedTitle, children: [
2247
- /* @__PURE__ */ jsx25("h3", { children: texts.deniedTitle }),
2248
- /* @__PURE__ */ jsx25("p", { children: texts.deniedBody })
2323
+ return /* @__PURE__ */ jsxs20("div", { className, role: "region", "aria-label": texts.deniedTitle, children: [
2324
+ /* @__PURE__ */ jsx26("h3", { children: texts.deniedTitle }),
2325
+ /* @__PURE__ */ jsx26("p", { children: texts.deniedBody })
2249
2326
  ] });
2250
2327
  }
2251
2328
  if (state.kind === "unsupported") {
2252
- return /* @__PURE__ */ jsx25("div", { className, role: "region", children: /* @__PURE__ */ jsx25("p", { children: texts.unsupportedBody }) });
2329
+ return /* @__PURE__ */ jsx26("div", { className, role: "region", children: /* @__PURE__ */ jsx26("p", { children: texts.unsupportedBody }) });
2253
2330
  }
2254
2331
  if (state.kind === "error") {
2255
- return /* @__PURE__ */ jsx25("div", { className, role: "region", "aria-label": "error", children: /* @__PURE__ */ jsx25("p", { children: state.message }) });
2332
+ return /* @__PURE__ */ jsx26("div", { className, role: "region", "aria-label": "error", children: /* @__PURE__ */ jsx26("p", { children: state.message }) });
2256
2333
  }
2257
- return /* @__PURE__ */ jsxs19("div", { className, role: "region", children: [
2258
- /* @__PURE__ */ jsx25(
2334
+ return /* @__PURE__ */ jsxs20("div", { className, role: "region", children: [
2335
+ /* @__PURE__ */ jsx26(
2259
2336
  "button",
2260
2337
  {
2261
2338
  type: "button",
@@ -2269,17 +2346,17 @@ function PushPrompt2({ texts, onSubscribed, onDeclined, onInstallRequested, clas
2269
2346
  children: texts.cta
2270
2347
  }
2271
2348
  ),
2272
- onDeclined && /* @__PURE__ */ jsx25("button", { type: "button", onClick: onDeclined, children: texts.declineCta })
2349
+ onDeclined && /* @__PURE__ */ jsx26("button", { type: "button", onClick: onDeclined, children: texts.declineCta })
2273
2350
  ] });
2274
2351
  }
2275
2352
 
2276
2353
  // src/defaults/EmptyState.tsx
2277
- import { jsx as jsx26, jsxs as jsxs20 } from "react/jsx-runtime";
2354
+ import { jsx as jsx27, jsxs as jsxs21 } from "react/jsx-runtime";
2278
2355
  function EmptyState({ title, description, action }) {
2279
- return /* @__PURE__ */ jsxs20("div", { role: "status", style: { padding: 32, textAlign: "center" }, children: [
2280
- /* @__PURE__ */ jsx26("h2", { style: { marginBottom: 8 }, children: title }),
2281
- description && /* @__PURE__ */ jsx26("p", { style: { opacity: 0.7 }, children: description }),
2282
- action && /* @__PURE__ */ jsx26("div", { style: { marginTop: 16 }, children: action })
2356
+ return /* @__PURE__ */ jsxs21("div", { role: "status", style: { padding: 32, textAlign: "center" }, children: [
2357
+ /* @__PURE__ */ jsx27("h2", { style: { marginBottom: 8 }, children: title }),
2358
+ description && /* @__PURE__ */ jsx27("p", { style: { opacity: 0.7 }, children: description }),
2359
+ action && /* @__PURE__ */ jsx27("div", { style: { marginTop: 16 }, children: action })
2283
2360
  ] });
2284
2361
  }
2285
2362