@cedros/login-react 0.0.45 → 0.0.47

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 (137) hide show
  1. package/README.md +32 -2
  2. package/dist/{AuthenticationSettings-bNQiNQ9g.cjs → AuthenticationSettings-BBOjHR6j.cjs} +1 -1
  3. package/dist/{AuthenticationSettings-bNQiNQ9g.cjs.map → AuthenticationSettings-BBOjHR6j.cjs.map} +1 -1
  4. package/dist/{AuthenticationSettings-BlYOmaEG.cjs → AuthenticationSettings-BXZRBZqc.cjs} +1 -1
  5. package/dist/{AuthenticationSettings-BlYOmaEG.cjs.map → AuthenticationSettings-BXZRBZqc.cjs.map} +1 -1
  6. package/dist/{AuthenticationSettings-BsuwWKbT.js → AuthenticationSettings-Bc_qT4nV.js} +1 -1
  7. package/dist/{AuthenticationSettings-BsuwWKbT.js.map → AuthenticationSettings-Bc_qT4nV.js.map} +1 -1
  8. package/dist/{AuthenticationSettings-DrHqtD7p.js → AuthenticationSettings-DXWCVZxS.js} +1 -1
  9. package/dist/{AuthenticationSettings-DrHqtD7p.js.map → AuthenticationSettings-DXWCVZxS.js.map} +1 -1
  10. package/dist/{AutosaveStatus-CZSwtgrL.cjs → AutosaveStatus-DfMPudTQ.cjs} +1 -1
  11. package/dist/AutosaveStatus-DfMPudTQ.cjs.map +1 -0
  12. package/dist/{AutosaveStatus-D-roPsRx.js → AutosaveStatus-DhGM3UUx.js} +103 -36
  13. package/dist/AutosaveStatus-DhGM3UUx.js.map +1 -0
  14. package/dist/{CreditSystemSettings-BTqZFn4K.js → CreditSystemSettings-B59-gOQT.js} +1 -1
  15. package/dist/{CreditSystemSettings-BTqZFn4K.js.map → CreditSystemSettings-B59-gOQT.js.map} +1 -1
  16. package/dist/{CreditSystemSettings-3R6crxvW.cjs → CreditSystemSettings-Badz4iAc.cjs} +1 -1
  17. package/dist/{CreditSystemSettings-3R6crxvW.cjs.map → CreditSystemSettings-Badz4iAc.cjs.map} +1 -1
  18. package/dist/{CreditSystemSettings-BskW_NKx.cjs → CreditSystemSettings-BxSoDwEi.cjs} +1 -1
  19. package/dist/{CreditSystemSettings-BskW_NKx.cjs.map → CreditSystemSettings-BxSoDwEi.cjs.map} +1 -1
  20. package/dist/{CreditSystemSettings-SL45GRH3.js → CreditSystemSettings-DxFpOeBW.js} +1 -1
  21. package/dist/{CreditSystemSettings-SL45GRH3.js.map → CreditSystemSettings-DxFpOeBW.js.map} +1 -1
  22. package/dist/EmailRegisterForm-ByYQ43yL.cjs +1 -0
  23. package/dist/EmailRegisterForm-ByYQ43yL.cjs.map +1 -0
  24. package/dist/EmailRegisterForm-DMUcNQT-.js +781 -0
  25. package/dist/EmailRegisterForm-DMUcNQT-.js.map +1 -0
  26. package/dist/{EmailSettings-XETM8FdS.js → EmailSettings-0y8D1QzF.js} +1 -1
  27. package/dist/{EmailSettings-XETM8FdS.js.map → EmailSettings-0y8D1QzF.js.map} +1 -1
  28. package/dist/{EmailSettings-BUAQji4I.js → EmailSettings-BA722mhf.js} +1 -1
  29. package/dist/{EmailSettings-BUAQji4I.js.map → EmailSettings-BA722mhf.js.map} +1 -1
  30. package/dist/{EmailSettings-CihElRkc.cjs → EmailSettings-BwZvdOYB.cjs} +1 -1
  31. package/dist/{EmailSettings-CihElRkc.cjs.map → EmailSettings-BwZvdOYB.cjs.map} +1 -1
  32. package/dist/{EmailSettings-CEC1rhrm.cjs → EmailSettings-DIjo3aJo.cjs} +1 -1
  33. package/dist/{EmailSettings-CEC1rhrm.cjs.map → EmailSettings-DIjo3aJo.cjs.map} +1 -1
  34. package/dist/{EmbeddedWalletSettings-CCT9DwmL.js → EmbeddedWalletSettings-BDbPpqWD.js} +1 -1
  35. package/dist/{EmbeddedWalletSettings-CCT9DwmL.js.map → EmbeddedWalletSettings-BDbPpqWD.js.map} +1 -1
  36. package/dist/{EmbeddedWalletSettings-MtwR81WH.cjs → EmbeddedWalletSettings-Db9a0D5l.cjs} +1 -1
  37. package/dist/{EmbeddedWalletSettings-MtwR81WH.cjs.map → EmbeddedWalletSettings-Db9a0D5l.cjs.map} +1 -1
  38. package/dist/{EmbeddedWalletSettings-B-083zu6.js → EmbeddedWalletSettings-MH4A6e6S.js} +1 -1
  39. package/dist/{EmbeddedWalletSettings-B-083zu6.js.map → EmbeddedWalletSettings-MH4A6e6S.js.map} +1 -1
  40. package/dist/{EmbeddedWalletSettings-DXIjansC.cjs → EmbeddedWalletSettings-T7LwbGok.cjs} +1 -1
  41. package/dist/{EmbeddedWalletSettings-DXIjansC.cjs.map → EmbeddedWalletSettings-T7LwbGok.cjs.map} +1 -1
  42. package/dist/GoogleLoginButton-DEwtBp56.cjs +1 -0
  43. package/dist/GoogleLoginButton-DEwtBp56.cjs.map +1 -0
  44. package/dist/{GoogleLoginButton-C1WNu7W3.js → GoogleLoginButton-DwyxvhnL.js} +82 -80
  45. package/dist/GoogleLoginButton-DwyxvhnL.js.map +1 -0
  46. package/dist/{PermissionsSection-mm9hfp-u.js → PermissionsSection-0oNHPZzL.js} +383 -415
  47. package/dist/PermissionsSection-0oNHPZzL.js.map +1 -0
  48. package/dist/PermissionsSection-CZsJuxo4.cjs +1 -0
  49. package/dist/PermissionsSection-CZsJuxo4.cjs.map +1 -0
  50. package/dist/{ServerSettings-DBpbRihl.js → ServerSettings-CwCkkU50.js} +1 -1
  51. package/dist/{ServerSettings-DBpbRihl.js.map → ServerSettings-CwCkkU50.js.map} +1 -1
  52. package/dist/{ServerSettings-24DA_BOI.js → ServerSettings-DKzWaqjC.js} +1 -1
  53. package/dist/{ServerSettings-24DA_BOI.js.map → ServerSettings-DKzWaqjC.js.map} +1 -1
  54. package/dist/{ServerSettings-BTEuzdrf.cjs → ServerSettings-DptlzQAu.cjs} +1 -1
  55. package/dist/{ServerSettings-BTEuzdrf.cjs.map → ServerSettings-DptlzQAu.cjs.map} +1 -1
  56. package/dist/{ServerSettings-BNc4LEs4.cjs → ServerSettings-j5Lu5D-R.cjs} +1 -1
  57. package/dist/{ServerSettings-BNc4LEs4.cjs.map → ServerSettings-j5Lu5D-R.cjs.map} +1 -1
  58. package/dist/SolanaLoginButton-2504p6cr.cjs +1 -0
  59. package/dist/SolanaLoginButton-2504p6cr.cjs.map +1 -0
  60. package/dist/SolanaLoginButton-C7Kc_m6n.js +234 -0
  61. package/dist/SolanaLoginButton-C7Kc_m6n.js.map +1 -0
  62. package/dist/{TeamSection-Km7EwLWD.cjs → TeamSection-DN8PEHH3.cjs} +1 -1
  63. package/dist/{TeamSection-Km7EwLWD.cjs.map → TeamSection-DN8PEHH3.cjs.map} +1 -1
  64. package/dist/{TeamSection-C_eODdLU.js → TeamSection-gUyP4YDM.js} +1 -1
  65. package/dist/{TeamSection-C_eODdLU.js.map → TeamSection-gUyP4YDM.js.map} +1 -1
  66. package/dist/{UsersSection-C1Tt0ePx.cjs → UsersSection-8wLuD0fr.cjs} +1 -1
  67. package/dist/{UsersSection-C1Tt0ePx.cjs.map → UsersSection-8wLuD0fr.cjs.map} +1 -1
  68. package/dist/{UsersSection-Ct_E-MBF.js → UsersSection-CnsFrG-6.js} +1 -1
  69. package/dist/{UsersSection-Ct_E-MBF.js.map → UsersSection-CnsFrG-6.js.map} +1 -1
  70. package/dist/{WebhookSettings-D9IsXZJN.js → WebhookSettings-2hlLLyGd.js} +1 -1
  71. package/dist/{WebhookSettings-D9IsXZJN.js.map → WebhookSettings-2hlLLyGd.js.map} +1 -1
  72. package/dist/{WebhookSettings-C6X_JJcD.cjs → WebhookSettings-CoEoVRRO.cjs} +1 -1
  73. package/dist/{WebhookSettings-C6X_JJcD.cjs.map → WebhookSettings-CoEoVRRO.cjs.map} +1 -1
  74. package/dist/{WebhookSettings-H1x6IKOj.cjs → WebhookSettings-DOaydSWQ.cjs} +1 -1
  75. package/dist/{WebhookSettings-H1x6IKOj.cjs.map → WebhookSettings-DOaydSWQ.cjs.map} +1 -1
  76. package/dist/{WebhookSettings-BhIwucKb.js → WebhookSettings-LS_wUimF.js} +1 -1
  77. package/dist/{WebhookSettings-BhIwucKb.js.map → WebhookSettings-LS_wUimF.js.map} +1 -1
  78. package/dist/admin-only.cjs +1 -1
  79. package/dist/admin-only.js +1 -1
  80. package/dist/email-only.cjs +1 -1
  81. package/dist/email-only.d.ts +10 -2
  82. package/dist/email-only.js +2 -2
  83. package/dist/google-only.cjs +1 -1
  84. package/dist/google-only.d.ts +7 -2
  85. package/dist/google-only.js +2 -2
  86. package/dist/index.cjs +12 -12
  87. package/dist/index.cjs.map +1 -1
  88. package/dist/index.d.ts +182 -11
  89. package/dist/index.js +5221 -4657
  90. package/dist/index.js.map +1 -1
  91. package/dist/login-react.css +1 -1
  92. package/dist/{plugin-BwwJh2cY.cjs → plugin-DNFjEfYp.cjs} +1 -1
  93. package/dist/{plugin-BwwJh2cY.cjs.map → plugin-DNFjEfYp.cjs.map} +1 -1
  94. package/dist/{plugin-CetHtdLq.js → plugin-WYMrRNbz.js} +1 -1
  95. package/dist/{plugin-CetHtdLq.js.map → plugin-WYMrRNbz.js.map} +1 -1
  96. package/dist/solana-only.cjs +1 -1
  97. package/dist/solana-only.d.ts +6 -1
  98. package/dist/solana-only.js +2 -2
  99. package/dist/useAuth-2vgrAH-M.cjs +1 -0
  100. package/dist/useAuth-2vgrAH-M.cjs.map +1 -0
  101. package/dist/{useAuth-l-itM5am.js → useAuth-CNflw856.js} +465 -469
  102. package/dist/useAuth-CNflw856.js.map +1 -0
  103. package/dist/useServerFeatures-9_aNPaa6.cjs +1 -0
  104. package/dist/useServerFeatures-9_aNPaa6.cjs.map +1 -0
  105. package/dist/useServerFeatures-DSkYdan-.js +82 -0
  106. package/dist/useServerFeatures-DSkYdan-.js.map +1 -0
  107. package/dist/{useUsersStatsSummary-BGeh3RnI.js → useUsersStatsSummary-B4_RBEYy.js} +504 -442
  108. package/dist/useUsersStatsSummary-B4_RBEYy.js.map +1 -0
  109. package/dist/useUsersStatsSummary-CHRMrlk4.cjs +1 -0
  110. package/dist/useUsersStatsSummary-CHRMrlk4.cjs.map +1 -0
  111. package/package.json +1 -1
  112. package/dist/AutosaveStatus-CZSwtgrL.cjs.map +0 -1
  113. package/dist/AutosaveStatus-D-roPsRx.js.map +0 -1
  114. package/dist/EmailRegisterForm-p2X5QP58.js +0 -750
  115. package/dist/EmailRegisterForm-p2X5QP58.js.map +0 -1
  116. package/dist/EmailRegisterForm-xFb6MaVA.cjs +0 -1
  117. package/dist/EmailRegisterForm-xFb6MaVA.cjs.map +0 -1
  118. package/dist/GoogleLoginButton-2zNTIKMm.cjs +0 -1
  119. package/dist/GoogleLoginButton-2zNTIKMm.cjs.map +0 -1
  120. package/dist/GoogleLoginButton-C1WNu7W3.js.map +0 -1
  121. package/dist/PermissionsSection-4zcE9Zs9.cjs +0 -1
  122. package/dist/PermissionsSection-4zcE9Zs9.cjs.map +0 -1
  123. package/dist/PermissionsSection-mm9hfp-u.js.map +0 -1
  124. package/dist/SolanaLoginButton-CqdzSSeJ.cjs +0 -1
  125. package/dist/SolanaLoginButton-CqdzSSeJ.cjs.map +0 -1
  126. package/dist/SolanaLoginButton-CyeX35eU.js +0 -232
  127. package/dist/SolanaLoginButton-CyeX35eU.js.map +0 -1
  128. package/dist/sanitization-Bo_tn-L2.cjs +0 -1
  129. package/dist/sanitization-Bo_tn-L2.cjs.map +0 -1
  130. package/dist/sanitization-CQ-H1MSg.js +0 -39
  131. package/dist/sanitization-CQ-H1MSg.js.map +0 -1
  132. package/dist/useAuth-B1yS_YiD.cjs +0 -1
  133. package/dist/useAuth-B1yS_YiD.cjs.map +0 -1
  134. package/dist/useAuth-l-itM5am.js.map +0 -1
  135. package/dist/useUsersStatsSummary-BGeh3RnI.js.map +0 -1
  136. package/dist/useUsersStatsSummary-DnsYtFGX.cjs +0 -1
  137. package/dist/useUsersStatsSummary-DnsYtFGX.cjs.map +0 -1
@@ -1,5 +1,5 @@
1
- import { jsxs as d, jsx as e, Fragment as T } from "react/jsx-runtime";
2
- import { useMemo as N, useCallback as m, useState as f, useRef as P, useEffect as I } from "react";
1
+ import { jsxs as d, jsx as e, Fragment as S } from "react/jsx-runtime";
2
+ import { useMemo as N, useCallback as m, useState as v, useRef as P, useEffect as E } from "react";
3
3
  import { u as U } from "./useCedrosLogin-CFfID-0i.js";
4
4
  import { u as O } from "./useSystemSettings-rgskaDqP.js";
5
5
  function M(t) {
@@ -1338,6 +1338,68 @@ const W = {
1338
1338
  inputType: "text",
1339
1339
  unit: "seconds",
1340
1340
  placeholder: "60"
1341
+ },
1342
+ // ============= Signup Gating =============
1343
+ signup_access_code_enabled: {
1344
+ key: "signup_access_code_enabled",
1345
+ label: "Require Access Code",
1346
+ description: "When enabled, users must provide a valid access code to register. Codes can be global (single shared code), limited-use (admin-created), or user-generated invite codes.",
1347
+ inputType: "boolean"
1348
+ },
1349
+ signup_access_code: {
1350
+ key: "signup_access_code",
1351
+ label: "Global Access Code",
1352
+ description: "A single shared code that anyone can use to register. Leave blank to disable the global code (users must then use a per-code from the access codes list).",
1353
+ inputType: "text",
1354
+ placeholder: "e.g. BETA2025"
1355
+ },
1356
+ signup_limit_enabled: {
1357
+ key: "signup_limit_enabled",
1358
+ label: "Enable Signup Rate Limit",
1359
+ description: "Cap the number of new registrations allowed per time period.",
1360
+ inputType: "boolean"
1361
+ },
1362
+ signup_limit_period: {
1363
+ key: "signup_limit_period",
1364
+ label: "Rate Limit Period",
1365
+ description: "The rolling time window for counting new signups.",
1366
+ inputType: "select",
1367
+ presets: [
1368
+ { label: "Daily", value: "daily" },
1369
+ { label: "Weekly", value: "weekly" },
1370
+ { label: "Monthly", value: "monthly" }
1371
+ ]
1372
+ },
1373
+ signup_limit_max: {
1374
+ key: "signup_limit_max",
1375
+ label: "Max Signups Per Period",
1376
+ description: "Maximum number of new registrations allowed within the selected period.",
1377
+ inputType: "text",
1378
+ placeholder: "100"
1379
+ },
1380
+ signup_user_codes_enabled: {
1381
+ key: "signup_user_codes_enabled",
1382
+ label: "Allow User Invite Codes",
1383
+ description: 'Let registered users generate single-use invite codes to share with others. Requires "Require Access Code" to be enabled to have effect.',
1384
+ inputType: "boolean"
1385
+ },
1386
+ signup_user_codes_per_period: {
1387
+ key: "signup_user_codes_per_period",
1388
+ label: "Invite Codes Per User Per Period",
1389
+ description: "Maximum number of invite codes each user may generate within the budget period.",
1390
+ inputType: "text",
1391
+ placeholder: "5"
1392
+ },
1393
+ signup_user_codes_period: {
1394
+ key: "signup_user_codes_period",
1395
+ label: "Invite Code Budget Period",
1396
+ description: "The rolling time window for counting how many invite codes a user has generated.",
1397
+ inputType: "select",
1398
+ presets: [
1399
+ { label: "Daily", value: "daily" },
1400
+ { label: "Weekly", value: "weekly" },
1401
+ { label: "Monthly", value: "monthly" }
1402
+ ]
1341
1403
  }
1342
1404
  }, ae = {
1343
1405
  // Auth providers (sorted alphabetically by subcategory)
@@ -1475,6 +1537,11 @@ const W = {
1475
1537
  label: "Referrals & Rewards",
1476
1538
  description: "Configure referral reward types, amounts, triggers, caps, and payout worker settings.",
1477
1539
  icon: ""
1540
+ },
1541
+ signup: {
1542
+ label: "Signup Gating",
1543
+ description: "Control who can register: require access codes, set per-period signup caps, and let users generate invite codes.",
1544
+ icon: ""
1478
1545
  }
1479
1546
  }, L = [
1480
1547
  "SOL",
@@ -1489,7 +1556,7 @@ const W = {
1489
1556
  "ORE"
1490
1557
  ];
1491
1558
  function j({ value: t, onChange: i, multiline: a }) {
1492
- const [n, r] = f(!1), [s, p] = f(!1), l = t && t.length > 0, o = m(() => {
1559
+ const [n, r] = v(!1), [s, p] = v(!1), l = t && t.length > 0, o = m(() => {
1493
1560
  r(!0), p(!0);
1494
1561
  }, []), c = m(() => {
1495
1562
  r(!1), p(!1);
@@ -1537,7 +1604,7 @@ function j({ value: t, onChange: i, multiline: a }) {
1537
1604
  ] });
1538
1605
  }
1539
1606
  function F({ settingKey: t, value: i }) {
1540
- const [a, n] = f(null), [r, s] = f(!1), [p, l] = f(!1), [o, c] = f(null), [y, b] = f(!1), { config: _, _internal: w } = U(), g = a ?? i, x = g && g.length > 0, C = x && !a, h = m(async () => {
1607
+ const [a, n] = v(null), [r, s] = v(!1), [p, l] = v(!1), [o, c] = v(null), [y, b] = v(!1), { config: _, _internal: w } = U(), g = a ?? i, x = g && g.length > 0, C = x && !a, h = m(async () => {
1541
1608
  if (g)
1542
1609
  try {
1543
1610
  await navigator.clipboard.writeText(g), s(!0), setTimeout(() => s(!1), 2e3);
@@ -1548,18 +1615,18 @@ function F({ settingKey: t, value: i }) {
1548
1615
  }, [g]), k = m(async () => {
1549
1616
  l(!0), c(null);
1550
1617
  try {
1551
- const u = w?.getAccessToken?.(), v = { "Content-Type": "application/json" };
1552
- u && (v.Authorization = `Bearer ${u}`);
1553
- const S = await fetch(
1618
+ const u = w?.getAccessToken?.(), f = { "Content-Type": "application/json" };
1619
+ u && (f.Authorization = `Bearer ${u}`);
1620
+ const T = await fetch(
1554
1621
  `${_.serverUrl}/auth/admin/settings/regenerate/${t}`,
1555
- { method: "POST", headers: v, credentials: "include" }
1622
+ { method: "POST", headers: f, credentials: "include" }
1556
1623
  );
1557
- if (!S.ok) {
1558
- const A = await S.json().catch(() => null);
1559
- throw new Error(A?.message || A?.error || `Regenerate failed (${S.status})`);
1624
+ if (!T.ok) {
1625
+ const A = await T.json().catch(() => null);
1626
+ throw new Error(A?.message || A?.error || `Regenerate failed (${T.status})`);
1560
1627
  }
1561
- const E = await S.json();
1562
- n(E.value), b(!1);
1628
+ const I = await T.json();
1629
+ n(I.value), b(!1);
1563
1630
  } catch (u) {
1564
1631
  c(u instanceof Error ? u.message : "Failed to regenerate");
1565
1632
  } finally {
@@ -1698,7 +1765,7 @@ function $({ value: t, onChange: i }) {
1698
1765
  /* @__PURE__ */ e("button", { type: "button", className: "cedros-token-add-btn", onClick: r, children: "+ Add Token" })
1699
1766
  ] });
1700
1767
  }
1701
- function V({ value: t, onChange: i }) {
1768
+ function B({ value: t, onChange: i }) {
1702
1769
  const a = N(() => t.split(",").map((s) => s.trim()).filter(Boolean), [t]), n = m(
1703
1770
  (s) => {
1704
1771
  if (!s || a.includes(s)) return;
@@ -1760,7 +1827,7 @@ function ie({
1760
1827
  externalWarnings: n
1761
1828
  }) {
1762
1829
  return /* @__PURE__ */ e("div", { className: "cedros-settings-grid", children: t.map((r) => /* @__PURE__ */ e(
1763
- B,
1830
+ V,
1764
1831
  {
1765
1832
  setting: r,
1766
1833
  editValue: i[r.key],
@@ -1770,7 +1837,7 @@ function ie({
1770
1837
  r.key
1771
1838
  )) });
1772
1839
  }
1773
- function B({ setting: t, editValue: i, onChange: a, externalWarning: n }) {
1840
+ function V({ setting: t, editValue: i, onChange: a, externalWarning: n }) {
1774
1841
  const r = W[t.key], s = i ?? t.value, p = i !== void 0 && i !== t.value, l = r?.inputType === "boolean", o = N(() => {
1775
1842
  if (n) return n;
1776
1843
  if (!r?.warningThreshold) return null;
@@ -1783,7 +1850,7 @@ function B({ setting: t, editValue: i, onChange: a, externalWarning: n }) {
1783
1850
  "div",
1784
1851
  {
1785
1852
  className: `cedros-setting-row ${p ? "cedros-setting-row-changed" : ""} ${o ? "cedros-setting-row-warning" : ""} ${l ? "cedros-setting-row-toggle" : ""}`,
1786
- children: l ? /* @__PURE__ */ d(T, { children: [
1853
+ children: l ? /* @__PURE__ */ d(S, { children: [
1787
1854
  /* @__PURE__ */ d("div", { className: "cedros-setting-control cedros-setting-control-toggle", children: [
1788
1855
  /* @__PURE__ */ e(
1789
1856
  R,
@@ -1799,7 +1866,7 @@ function B({ setting: t, editValue: i, onChange: a, externalWarning: n }) {
1799
1866
  /* @__PURE__ */ e("span", { className: "cedros-setting-name", children: r.label }),
1800
1867
  /* @__PURE__ */ e("span", { className: "cedros-setting-description", children: D(r.description) })
1801
1868
  ] })
1802
- ] }) : /* @__PURE__ */ d(T, { children: [
1869
+ ] }) : /* @__PURE__ */ d(S, { children: [
1803
1870
  /* @__PURE__ */ d("div", { className: "cedros-setting-label", children: [
1804
1871
  /* @__PURE__ */ e("span", { className: "cedros-setting-name", children: r.label }),
1805
1872
  /* @__PURE__ */ e("span", { className: "cedros-setting-description", children: D(r.description) })
@@ -1836,10 +1903,10 @@ function B({ setting: t, editValue: i, onChange: a, externalWarning: n }) {
1836
1903
  function R({ meta: t, value: i, onChange: a }) {
1837
1904
  switch (t.inputType) {
1838
1905
  case "duration":
1839
- return /* @__PURE__ */ e(H, { value: i, onChange: a, presets: t.presets, min: t.min });
1906
+ return /* @__PURE__ */ e(G, { value: i, onChange: a, presets: t.presets, min: t.min });
1840
1907
  case "percentage":
1841
1908
  return /* @__PURE__ */ e(
1842
- G,
1909
+ H,
1843
1910
  {
1844
1911
  value: i,
1845
1912
  onChange: a,
@@ -1890,7 +1957,7 @@ function R({ meta: t, value: i, onChange: a }) {
1890
1957
  case "readonlySecret":
1891
1958
  return /* @__PURE__ */ e(F, { settingKey: t.key, value: i });
1892
1959
  case "tokenSymbolList":
1893
- return /* @__PURE__ */ e(V, { value: i, onChange: a });
1960
+ return /* @__PURE__ */ e(B, { value: i, onChange: a });
1894
1961
  default:
1895
1962
  return /* @__PURE__ */ e(
1896
1963
  "input",
@@ -1903,7 +1970,7 @@ function R({ meta: t, value: i, onChange: a }) {
1903
1970
  );
1904
1971
  }
1905
1972
  }
1906
- function H({ value: t, onChange: i, presets: a, min: n = 0 }) {
1973
+ function G({ value: t, onChange: i, presets: a, min: n = 0 }) {
1907
1974
  const r = parseInt(t, 10) || 0, s = q(r), p = m(
1908
1975
  (o) => {
1909
1976
  o.target.value && i(o.target.value);
@@ -1948,7 +2015,7 @@ function H({ value: t, onChange: i, presets: a, min: n = 0 }) {
1948
2015
  ] })
1949
2016
  ] });
1950
2017
  }
1951
- function G({
2018
+ function H({
1952
2019
  value: t,
1953
2020
  onChange: i,
1954
2021
  min: a,
@@ -2080,8 +2147,8 @@ function z({ value: t, onChange: i }) {
2080
2147
  }
2081
2148
  const Y = 800, X = 2e3;
2082
2149
  function re() {
2083
- const { settings: t, isLoading: i, error: a, fetchSettings: n, updateSettings: r } = O(), [s, p] = f({}), [l, o] = f("idle"), [c, y] = f(null), b = P(null), _ = P(null), w = P({});
2084
- I(() => () => {
2150
+ const { settings: t, isLoading: i, error: a, fetchSettings: n, updateSettings: r } = O(), [s, p] = v({}), [l, o] = v("idle"), [c, y] = v(null), b = P(null), _ = P(null), w = P({});
2151
+ E(() => () => {
2085
2152
  b.current && clearTimeout(b.current), _.current && clearTimeout(_.current);
2086
2153
  }, []);
2087
2154
  const g = m(async () => {
@@ -2091,16 +2158,16 @@ function re() {
2091
2158
  return;
2092
2159
  }
2093
2160
  o("saving"), y(null);
2094
- const k = Object.entries(h).map(([u, v]) => ({
2161
+ const k = Object.entries(h).map(([u, f]) => ({
2095
2162
  key: u,
2096
- value: v
2163
+ value: f
2097
2164
  }));
2098
2165
  try {
2099
2166
  await r(k), p((u) => {
2100
- const v = { ...u };
2101
- for (const S of Object.keys(h))
2102
- delete v[S];
2103
- return v;
2167
+ const f = { ...u };
2168
+ for (const T of Object.keys(h))
2169
+ delete f[T];
2170
+ return f;
2104
2171
  });
2105
2172
  for (const u of Object.keys(h))
2106
2173
  delete w.current[u];
@@ -2121,7 +2188,7 @@ function re() {
2121
2188
  (h) => {
2122
2189
  if (s[h] !== void 0) return s[h];
2123
2190
  for (const k of Object.values(t)) {
2124
- const u = k.find((v) => v.key === h);
2191
+ const u = k.find((f) => f.key === h);
2125
2192
  if (u) return u.value;
2126
2193
  }
2127
2194
  return "";
@@ -2142,19 +2209,19 @@ function re() {
2142
2209
  }
2143
2210
  function se({ status: t, error: i }) {
2144
2211
  return t === "idle" ? null : /* @__PURE__ */ d("div", { className: `cedros-autosave-status cedros-autosave-status--${t}`, children: [
2145
- t === "pending" && /* @__PURE__ */ d(T, { children: [
2212
+ t === "pending" && /* @__PURE__ */ d(S, { children: [
2146
2213
  /* @__PURE__ */ e("span", { className: "cedros-autosave-dot" }),
2147
2214
  /* @__PURE__ */ e("span", { children: "Unsaved changes" })
2148
2215
  ] }),
2149
- t === "saving" && /* @__PURE__ */ d(T, { children: [
2216
+ t === "saving" && /* @__PURE__ */ d(S, { children: [
2150
2217
  /* @__PURE__ */ e("span", { className: "cedros-autosave-spinner" }),
2151
2218
  /* @__PURE__ */ e("span", { children: "Saving..." })
2152
2219
  ] }),
2153
- t === "saved" && /* @__PURE__ */ d(T, { children: [
2220
+ t === "saved" && /* @__PURE__ */ d(S, { children: [
2154
2221
  /* @__PURE__ */ e("span", { className: "cedros-autosave-check", children: "✓" }),
2155
2222
  /* @__PURE__ */ e("span", { children: "Saved" })
2156
2223
  ] }),
2157
- t === "error" && /* @__PURE__ */ d(T, { children: [
2224
+ t === "error" && /* @__PURE__ */ d(S, { children: [
2158
2225
  /* @__PURE__ */ e("span", { className: "cedros-autosave-error-icon", children: "!" }),
2159
2226
  /* @__PURE__ */ e("span", { children: i || "Save failed" })
2160
2227
  ] })