@cedros/login-react 0.0.20 → 0.0.22
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/{AuthenticationSettings-Cu0S0Z7s.cjs → AuthenticationSettings-C9f5MKgj.cjs} +1 -1
- package/dist/{AuthenticationSettings-Cu0S0Z7s.cjs.map → AuthenticationSettings-C9f5MKgj.cjs.map} +1 -1
- package/dist/{AuthenticationSettings-Cb80XWPm.cjs → AuthenticationSettings-D6GvSw3g.cjs} +1 -1
- package/dist/{AuthenticationSettings-Cb80XWPm.cjs.map → AuthenticationSettings-D6GvSw3g.cjs.map} +1 -1
- package/dist/{AuthenticationSettings-BipaLyGg.js → AuthenticationSettings-DC64o_J6.js} +1 -1
- package/dist/{AuthenticationSettings-BipaLyGg.js.map → AuthenticationSettings-DC64o_J6.js.map} +1 -1
- package/dist/{AuthenticationSettings-Cfn0No6U.js → AuthenticationSettings-rb4Fksw5.js} +1 -1
- package/dist/{AuthenticationSettings-Cfn0No6U.js.map → AuthenticationSettings-rb4Fksw5.js.map} +1 -1
- package/dist/AutosaveStatus-BFj5GIab.cjs +1 -0
- package/dist/AutosaveStatus-BFj5GIab.cjs.map +1 -0
- package/dist/{AutosaveStatus-BKc7T2Tw.js → AutosaveStatus-vkJxtuEw.js} +2 -2
- package/dist/AutosaveStatus-vkJxtuEw.js.map +1 -0
- package/dist/{CreditSystemSettings-DV0VkPIe.cjs → CreditSystemSettings-ChA_lbef.cjs} +1 -1
- package/dist/{CreditSystemSettings-DV0VkPIe.cjs.map → CreditSystemSettings-ChA_lbef.cjs.map} +1 -1
- package/dist/{CreditSystemSettings-CvcacgMM.js → CreditSystemSettings-DsRipb2R.js} +1 -1
- package/dist/{CreditSystemSettings-CvcacgMM.js.map → CreditSystemSettings-DsRipb2R.js.map} +1 -1
- package/dist/{CreditSystemSettings-D13lZbIw.js → CreditSystemSettings-a31pqSYS.js} +1 -1
- package/dist/{CreditSystemSettings-D13lZbIw.js.map → CreditSystemSettings-a31pqSYS.js.map} +1 -1
- package/dist/{CreditSystemSettings-DO-dUcxN.cjs → CreditSystemSettings-r3gnGjiU.cjs} +1 -1
- package/dist/{CreditSystemSettings-DO-dUcxN.cjs.map → CreditSystemSettings-r3gnGjiU.cjs.map} +1 -1
- package/dist/{EmailRegisterForm-CdTuvJmf.cjs → EmailRegisterForm-B1DB-bqe.cjs} +1 -1
- package/dist/{EmailRegisterForm-CdTuvJmf.cjs.map → EmailRegisterForm-B1DB-bqe.cjs.map} +1 -1
- package/dist/{EmailRegisterForm-CxOdldks.js → EmailRegisterForm-BAX_uBIt.js} +100 -100
- package/dist/{EmailRegisterForm-CxOdldks.js.map → EmailRegisterForm-BAX_uBIt.js.map} +1 -1
- package/dist/{EmailSettings-CLMdw3rB.js → EmailSettings-BVJ4vz0Y.js} +1 -1
- package/dist/{EmailSettings-CLMdw3rB.js.map → EmailSettings-BVJ4vz0Y.js.map} +1 -1
- package/dist/{EmailSettings-Dq3mfUr2.cjs → EmailSettings-CM5l8qqK.cjs} +1 -1
- package/dist/{EmailSettings-Dq3mfUr2.cjs.map → EmailSettings-CM5l8qqK.cjs.map} +1 -1
- package/dist/{EmailSettings-BkR7vlWL.cjs → EmailSettings-Dg2SAiHj.cjs} +1 -1
- package/dist/{EmailSettings-BkR7vlWL.cjs.map → EmailSettings-Dg2SAiHj.cjs.map} +1 -1
- package/dist/{EmailSettings-ulEHtH2y.js → EmailSettings-xtVl4kXD.js} +1 -1
- package/dist/{EmailSettings-ulEHtH2y.js.map → EmailSettings-xtVl4kXD.js.map} +1 -1
- package/dist/{EmbeddedWalletSettings-DGmCVyex.cjs → EmbeddedWalletSettings-BXN9VbNJ.cjs} +1 -1
- package/dist/{EmbeddedWalletSettings-DGmCVyex.cjs.map → EmbeddedWalletSettings-BXN9VbNJ.cjs.map} +1 -1
- package/dist/{EmbeddedWalletSettings-C7H0E8Uz.cjs → EmbeddedWalletSettings-Bmx8x21f.cjs} +1 -1
- package/dist/{EmbeddedWalletSettings-C7H0E8Uz.cjs.map → EmbeddedWalletSettings-Bmx8x21f.cjs.map} +1 -1
- package/dist/{EmbeddedWalletSettings-CLWh2TbV.js → EmbeddedWalletSettings-BuDgqv-K.js} +1 -1
- package/dist/{EmbeddedWalletSettings-CLWh2TbV.js.map → EmbeddedWalletSettings-BuDgqv-K.js.map} +1 -1
- package/dist/{EmbeddedWalletSettings-BTTV8Nqi.js → EmbeddedWalletSettings-DY5iJhS0.js} +1 -1
- package/dist/{EmbeddedWalletSettings-BTTV8Nqi.js.map → EmbeddedWalletSettings-DY5iJhS0.js.map} +1 -1
- package/dist/{ServerSettings-DooVeOet.js → ServerSettings-9Q091f3o.js} +1 -1
- package/dist/{ServerSettings-DooVeOet.js.map → ServerSettings-9Q091f3o.js.map} +1 -1
- package/dist/{ServerSettings-Ch8MCmAY.js → ServerSettings-BAstMKHS.js} +1 -1
- package/dist/{ServerSettings-Ch8MCmAY.js.map → ServerSettings-BAstMKHS.js.map} +1 -1
- package/dist/{ServerSettings-CqDd59iM.cjs → ServerSettings-LIIP5TPz.cjs} +1 -1
- package/dist/{ServerSettings-CqDd59iM.cjs.map → ServerSettings-LIIP5TPz.cjs.map} +1 -1
- package/dist/{ServerSettings-CPAoiDtn.cjs → ServerSettings-PH7T8JKI.cjs} +1 -1
- package/dist/{ServerSettings-CPAoiDtn.cjs.map → ServerSettings-PH7T8JKI.cjs.map} +1 -1
- package/dist/{WebhookSettings-WMJ5zPjY.cjs → WebhookSettings-2p9abGm5.cjs} +1 -1
- package/dist/{WebhookSettings-WMJ5zPjY.cjs.map → WebhookSettings-2p9abGm5.cjs.map} +1 -1
- package/dist/{WebhookSettings-BG77iqJC.js → WebhookSettings-CXMBju7N.js} +1 -1
- package/dist/{WebhookSettings-BG77iqJC.js.map → WebhookSettings-CXMBju7N.js.map} +1 -1
- package/dist/{WebhookSettings-BeiUAcKs.cjs → WebhookSettings-CdFM7_V-.cjs} +1 -1
- package/dist/{WebhookSettings-BeiUAcKs.cjs.map → WebhookSettings-CdFM7_V-.cjs.map} +1 -1
- package/dist/{WebhookSettings-B6mjH90_.js → WebhookSettings-D0F8ESlB.js} +1 -1
- package/dist/{WebhookSettings-B6mjH90_.js.map → WebhookSettings-D0F8ESlB.js.map} +1 -1
- package/dist/admin-only.cjs +1 -1
- package/dist/admin-only.js +1 -1
- package/dist/email-only.cjs +1 -1
- package/dist/email-only.js +1 -1
- package/dist/index.cjs +12 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +18 -6
- package/dist/index.js +1713 -1635
- package/dist/index.js.map +1 -1
- package/dist/login-react.css +1 -1
- package/dist/mobileWalletAdapter-Begyo5Y9.cjs +1 -0
- package/dist/mobileWalletAdapter-Begyo5Y9.cjs.map +1 -0
- package/dist/mobileWalletAdapter-Dbm9P20u.js +188 -0
- package/dist/mobileWalletAdapter-Dbm9P20u.js.map +1 -0
- package/dist/{plugin-Bhf9zaly.js → plugin-DbkijwEV.js} +1 -1
- package/dist/{plugin-Bhf9zaly.js.map → plugin-DbkijwEV.js.map} +1 -1
- package/dist/{plugin-BgMAc6DA.cjs → plugin-PU2vAozn.cjs} +1 -1
- package/dist/{plugin-BgMAc6DA.cjs.map → plugin-PU2vAozn.cjs.map} +1 -1
- package/dist/solana-only.cjs +1 -1
- package/dist/solana-only.d.ts +9 -5
- package/dist/solana-only.js +1 -1
- package/package.json +1 -1
- package/dist/AutosaveStatus-BKc7T2Tw.js.map +0 -1
- package/dist/AutosaveStatus-BjLMt52a.cjs +0 -1
- package/dist/AutosaveStatus-BjLMt52a.cjs.map +0 -1
- package/dist/mobileWalletAdapter-7TOM-TF8.cjs +0 -1
- package/dist/mobileWalletAdapter-7TOM-TF8.cjs.map +0 -1
- package/dist/mobileWalletAdapter-CtTXtZlH.js +0 -387
- package/dist/mobileWalletAdapter-CtTXtZlH.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const e=require("react/jsx-runtime"),b=require("react"),E=require("./LoadingSpinner-d6sSxgQN.cjs"),k=require("./ErrorMessage-CHbYbVi2.cjs"),d=require("./AutosaveStatus-
|
|
1
|
+
"use strict";const e=require("react/jsx-runtime"),b=require("react"),E=require("./LoadingSpinner-d6sSxgQN.cjs"),k=require("./ErrorMessage-CHbYbVi2.cjs"),d=require("./AutosaveStatus-BFj5GIab.cjs"),l=["wallet_recovery_mode"];function q({className:a}){const{settings:c,edits:v,isLoading:x,autosaveStatus:j,autosaveError:p,error:g,fetchSettings:u,handleChange:n,getEffectiveValue:t}=d.useSettingsAutosave();b.useEffect(()=>{u()},[u]);const h=(c.features??[]).filter(o=>l.includes(o.key)).sort((o,_)=>l.indexOf(o.key)-l.indexOf(_.key)),s=t("feature_wallet_signing")==="true",w=()=>{n("feature_wallet_signing",s?"false":"true")},r=t("feature_user_withdrawals")==="true",f=()=>{n("feature_user_withdrawals",r?"false":"true")},m=t("deposit_privacy_enabled")==="true",N=t("wallet_recovery_mode"),i=m&&N!=="none",y=m&&!s,S=b.useMemo(()=>{if(i)return{wallet_recovery_mode:"Private deposits require No Recovery mode. Deposits will fail with the current setting."}},[i]);return x&&Object.keys(c).length===0?e.jsxs("div",{className:`cedros-system-settings cedros-system-settings-loading ${a??""}`,children:[e.jsx(E.LoadingSpinner,{}),e.jsx("span",{children:"Loading settings..."})]}):g?e.jsx("div",{className:`cedros-system-settings ${a??""}`,children:e.jsx(k.ErrorMessage,{error:g.message})}):e.jsxs("div",{className:`cedros-system-settings ${a??""}`,children:[e.jsxs("div",{className:"cedros-settings-page-header",children:[e.jsxs("div",{className:"cedros-settings-page-header-content",children:[e.jsx("h2",{className:"cedros-settings-page-title",children:"Embedded Wallet"}),e.jsx("p",{className:"cedros-settings-page-description",children:"Configure the embedded wallet for transaction signing."})]}),e.jsxs("div",{className:"cedros-settings-page-header-actions",children:[e.jsxs("button",{type:"button",role:"switch","aria-checked":s,className:`cedros-toggle ${s?"cedros-toggle-on":"cedros-toggle-off"}`,onClick:w,children:[e.jsx("span",{className:"cedros-toggle-track",children:e.jsx("span",{className:"cedros-toggle-thumb"})}),e.jsx("span",{className:"cedros-toggle-label",children:s?"Enabled":"Disabled"})]}),e.jsx(d.AutosaveStatus,{status:j,error:p})]})]}),s&&e.jsx("div",{className:"cedros-settings-subsection",children:e.jsxs("div",{className:"cedros-settings-subsection-header",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"cedros-settings-subsection-title",children:"User Withdrawals"}),e.jsx("p",{className:"cedros-settings-subsection-description",children:"Allow users to withdraw SOL/SPL tokens from their embedded wallet to external addresses."})]}),e.jsxs("button",{type:"button",role:"switch","aria-checked":r,className:`cedros-toggle ${r?"cedros-toggle-on":"cedros-toggle-off"}`,onClick:f,children:[e.jsx("span",{className:"cedros-toggle-track",children:e.jsx("span",{className:"cedros-toggle-thumb"})}),e.jsx("span",{className:"cedros-toggle-label",children:r?"Enabled":"Disabled"})]})]})}),i&&e.jsx("div",{className:"cedros-settings-warning-banner",children:"Private deposits are enabled but require No Recovery mode. Users will see an error when attempting private deposits until recovery mode is changed below."}),y&&e.jsx("div",{className:"cedros-settings-warning-banner",children:"Private deposits are enabled but require the embedded wallet. Enable it above."}),e.jsx("div",{className:"cedros-admin-tab-content",children:h.length===0?e.jsx("div",{className:"cedros-system-settings-empty",children:e.jsx("p",{children:"No additional settings available."})}):e.jsx(d.SettingsSection,{settings:h,edits:v,onChange:n,externalWarnings:S})})]})}exports.EmbeddedWalletSettings=q;
|
package/dist/{EmbeddedWalletSettings-C7H0E8Uz.cjs.map → EmbeddedWalletSettings-Bmx8x21f.cjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmbeddedWalletSettings-
|
|
1
|
+
{"version":3,"file":"EmbeddedWalletSettings-Bmx8x21f.cjs","sources":["../src/components/admin/settings/EmbeddedWalletSettings.tsx"],"sourcesContent":["/**\n * Embedded Wallet settings page - enable/disable and configure recovery\n */\nimport { useEffect, useMemo } from 'react';\nimport { LoadingSpinner } from '../../shared/LoadingSpinner';\nimport { ErrorMessage } from '../../shared/ErrorMessage';\nimport { useSettingsAutosave } from '../../../hooks/useSettingsAutosave';\nimport { SettingsSection } from './settingsInputs';\nimport { AutosaveStatus } from './AutosaveStatus';\n\n/** Keys to show on this page (excluding the master toggle which is in header) */\nconst SETTINGS_KEYS = ['wallet_recovery_mode'];\n\nexport interface EmbeddedWalletSettingsProps {\n className?: string;\n}\n\nexport function EmbeddedWalletSettings({ className }: EmbeddedWalletSettingsProps) {\n const {\n settings,\n edits,\n isLoading,\n autosaveStatus,\n autosaveError,\n error,\n fetchSettings,\n handleChange,\n getEffectiveValue,\n } = useSettingsAutosave();\n\n useEffect(() => {\n fetchSettings();\n }, [fetchSettings]);\n\n // Get wallet settings from features category\n const featuresSettings = settings['features'] ?? [];\n const currentSettings = featuresSettings\n .filter((s) => SETTINGS_KEYS.includes(s.key))\n .sort((a, b) => SETTINGS_KEYS.indexOf(a.key) - SETTINGS_KEYS.indexOf(b.key));\n\n // Embedded wallet master toggle\n const walletEnabled = getEffectiveValue('feature_wallet_signing') === 'true';\n const handleWalletToggle = () => {\n handleChange('feature_wallet_signing', walletEnabled ? 'false' : 'true');\n };\n\n // User withdrawals toggle (only visible when wallet is enabled)\n const withdrawalsEnabled = getEffectiveValue('feature_user_withdrawals') === 'true';\n const handleWithdrawalsToggle = () => {\n handleChange('feature_user_withdrawals', withdrawalsEnabled ? 'false' : 'true');\n };\n\n // Cross-category mismatch detection\n const privateDepositsEnabled = getEffectiveValue('deposit_privacy_enabled') === 'true';\n const recoveryMode = getEffectiveValue('wallet_recovery_mode');\n const recoveryMismatch = privateDepositsEnabled && recoveryMode !== 'none';\n const walletMismatch = privateDepositsEnabled && !walletEnabled;\n\n // Inline warning on recovery mode row\n const externalWarnings = useMemo(() => {\n if (!recoveryMismatch) return undefined;\n return {\n wallet_recovery_mode:\n 'Private deposits require No Recovery mode. Deposits will fail with the current setting.',\n };\n }, [recoveryMismatch]);\n\n if (isLoading && Object.keys(settings).length === 0) {\n return (\n <div className={`cedros-system-settings cedros-system-settings-loading ${className ?? ''}`}>\n <LoadingSpinner />\n <span>Loading settings...</span>\n </div>\n );\n }\n\n if (error) {\n return (\n <div className={`cedros-system-settings ${className ?? ''}`}>\n <ErrorMessage error={error.message} />\n </div>\n );\n }\n\n return (\n <div className={`cedros-system-settings ${className ?? ''}`}>\n <div className=\"cedros-settings-page-header\">\n <div className=\"cedros-settings-page-header-content\">\n <h2 className=\"cedros-settings-page-title\">Embedded Wallet</h2>\n <p className=\"cedros-settings-page-description\">\n Configure the embedded wallet for transaction signing.\n </p>\n </div>\n <div className=\"cedros-settings-page-header-actions\">\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={walletEnabled}\n className={`cedros-toggle ${walletEnabled ? 'cedros-toggle-on' : 'cedros-toggle-off'}`}\n onClick={handleWalletToggle}\n >\n <span className=\"cedros-toggle-track\">\n <span className=\"cedros-toggle-thumb\" />\n </span>\n <span className=\"cedros-toggle-label\">{walletEnabled ? 'Enabled' : 'Disabled'}</span>\n </button>\n <AutosaveStatus status={autosaveStatus} error={autosaveError} />\n </div>\n </div>\n\n {/* User Withdrawals toggle (only visible when wallet is enabled) */}\n {walletEnabled && (\n <div className=\"cedros-settings-subsection\">\n <div className=\"cedros-settings-subsection-header\">\n <div>\n <h3 className=\"cedros-settings-subsection-title\">User Withdrawals</h3>\n <p className=\"cedros-settings-subsection-description\">\n Allow users to withdraw SOL/SPL tokens from their embedded wallet to external\n addresses.\n </p>\n </div>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={withdrawalsEnabled}\n className={`cedros-toggle ${withdrawalsEnabled ? 'cedros-toggle-on' : 'cedros-toggle-off'}`}\n onClick={handleWithdrawalsToggle}\n >\n <span className=\"cedros-toggle-track\">\n <span className=\"cedros-toggle-thumb\" />\n </span>\n <span className=\"cedros-toggle-label\">\n {withdrawalsEnabled ? 'Enabled' : 'Disabled'}\n </span>\n </button>\n </div>\n </div>\n )}\n\n {/* Mismatch warnings */}\n {recoveryMismatch && (\n <div className=\"cedros-settings-warning-banner\">\n Private deposits are enabled but require No Recovery mode. Users will see an error when\n attempting private deposits until recovery mode is changed below.\n </div>\n )}\n {walletMismatch && (\n <div className=\"cedros-settings-warning-banner\">\n Private deposits are enabled but require the embedded wallet. Enable it above.\n </div>\n )}\n\n {/* Settings content */}\n <div className=\"cedros-admin-tab-content\">\n {currentSettings.length === 0 ? (\n <div className=\"cedros-system-settings-empty\">\n <p>No additional settings available.</p>\n </div>\n ) : (\n <SettingsSection\n settings={currentSettings}\n edits={edits}\n onChange={handleChange}\n externalWarnings={externalWarnings}\n />\n )}\n </div>\n </div>\n );\n}\n"],"names":["SETTINGS_KEYS","EmbeddedWalletSettings","className","settings","edits","isLoading","autosaveStatus","autosaveError","error","fetchSettings","handleChange","getEffectiveValue","useSettingsAutosave","useEffect","currentSettings","s","a","b","walletEnabled","handleWalletToggle","withdrawalsEnabled","handleWithdrawalsToggle","privateDepositsEnabled","recoveryMode","recoveryMismatch","walletMismatch","externalWarnings","useMemo","jsx","LoadingSpinner","ErrorMessage","jsxs","AutosaveStatus","SettingsSection"],"mappings":"oMAWMA,EAAgB,CAAC,sBAAsB,EAMtC,SAASC,EAAuB,CAAE,UAAAC,GAA0C,CACjF,KAAM,CACJ,SAAAC,EACA,MAAAC,EACA,UAAAC,EACA,eAAAC,EACA,cAAAC,EACA,MAAAC,EACA,cAAAC,EACA,aAAAC,EACA,kBAAAC,CAAA,EACEC,sBAAA,EAEJC,EAAAA,UAAU,IAAM,CACdJ,EAAA,CACF,EAAG,CAACA,CAAa,CAAC,EAIlB,MAAMK,GADmBX,EAAS,UAAe,CAAA,GAE9C,OAAQY,GAAMf,EAAc,SAASe,EAAE,GAAG,CAAC,EAC3C,KAAK,CAACC,EAAGC,IAAMjB,EAAc,QAAQgB,EAAE,GAAG,EAAIhB,EAAc,QAAQiB,EAAE,GAAG,CAAC,EAGvEC,EAAgBP,EAAkB,wBAAwB,IAAM,OAChEQ,EAAqB,IAAM,CAC/BT,EAAa,yBAA0BQ,EAAgB,QAAU,MAAM,CACzE,EAGME,EAAqBT,EAAkB,0BAA0B,IAAM,OACvEU,EAA0B,IAAM,CACpCX,EAAa,2BAA4BU,EAAqB,QAAU,MAAM,CAChF,EAGME,EAAyBX,EAAkB,yBAAyB,IAAM,OAC1EY,EAAeZ,EAAkB,sBAAsB,EACvDa,EAAmBF,GAA0BC,IAAiB,OAC9DE,EAAiBH,GAA0B,CAACJ,EAG5CQ,EAAmBC,EAAAA,QAAQ,IAAM,CACrC,GAAKH,EACL,MAAO,CACL,qBACE,yFAAA,CAEN,EAAG,CAACA,CAAgB,CAAC,EAErB,OAAInB,GAAa,OAAO,KAAKF,CAAQ,EAAE,SAAW,SAE7C,MAAA,CAAI,UAAW,yDAAyDD,GAAa,EAAE,GACtF,SAAA,CAAA0B,EAAAA,IAACC,EAAAA,eAAA,EAAe,EAChBD,EAAAA,IAAC,QAAK,SAAA,qBAAA,CAAmB,CAAA,EAC3B,EAIApB,EAEAoB,EAAAA,IAAC,MAAA,CAAI,UAAW,0BAA0B1B,GAAa,EAAE,GACvD,SAAA0B,EAAAA,IAACE,EAAAA,aAAA,CAAa,MAAOtB,EAAM,OAAA,CAAS,EACtC,SAKD,MAAA,CAAI,UAAW,0BAA0BN,GAAa,EAAE,GACvD,SAAA,CAAA6B,EAAAA,KAAC,MAAA,CAAI,UAAU,8BACb,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,sCACb,SAAA,CAAAH,EAAAA,IAAC,KAAA,CAAG,UAAU,6BAA6B,SAAA,kBAAe,EAC1DA,EAAAA,IAAC,IAAA,CAAE,UAAU,mCAAmC,SAAA,wDAAA,CAEhD,CAAA,EACF,EACAG,EAAAA,KAAC,MAAA,CAAI,UAAU,sCACb,SAAA,CAAAA,EAAAA,KAAC,SAAA,CACC,KAAK,SACL,KAAK,SACL,eAAcb,EACd,UAAW,iBAAiBA,EAAgB,mBAAqB,mBAAmB,GACpF,QAASC,EAET,SAAA,CAAAS,EAAAA,IAAC,QAAK,UAAU,sBACd,eAAC,OAAA,CAAK,UAAU,sBAAsB,CAAA,CACxC,QACC,OAAA,CAAK,UAAU,sBAAuB,SAAAV,EAAgB,UAAY,UAAA,CAAW,CAAA,CAAA,CAAA,EAEhFU,EAAAA,IAACI,EAAAA,eAAA,CAAe,OAAQ1B,EAAgB,MAAOC,CAAA,CAAe,CAAA,CAAA,CAChE,CAAA,EACF,EAGCW,SACE,MAAA,CAAI,UAAU,6BACb,SAAAa,EAAAA,KAAC,MAAA,CAAI,UAAU,oCACb,SAAA,CAAAA,OAAC,MAAA,CACC,SAAA,CAAAH,EAAAA,IAAC,KAAA,CAAG,UAAU,mCAAmC,SAAA,mBAAgB,EACjEA,EAAAA,IAAC,IAAA,CAAE,UAAU,yCAAyC,SAAA,0FAAA,CAGtD,CAAA,EACF,EACAG,EAAAA,KAAC,SAAA,CACC,KAAK,SACL,KAAK,SACL,eAAcX,EACd,UAAW,iBAAiBA,EAAqB,mBAAqB,mBAAmB,GACzF,QAASC,EAET,SAAA,CAAAO,EAAAA,IAAC,QAAK,UAAU,sBACd,eAAC,OAAA,CAAK,UAAU,sBAAsB,CAAA,CACxC,QACC,OAAA,CAAK,UAAU,sBACb,SAAAR,EAAqB,UAAY,UAAA,CACpC,CAAA,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CACF,EAIDI,GACCI,EAAAA,IAAC,MAAA,CAAI,UAAU,iCAAiC,SAAA,4JAGhD,EAEDH,GACCG,EAAAA,IAAC,MAAA,CAAI,UAAU,iCAAiC,SAAA,iFAEhD,EAIFA,MAAC,MAAA,CAAI,UAAU,2BACZ,WAAgB,SAAW,EAC1BA,MAAC,MAAA,CAAI,UAAU,+BACb,SAAAA,MAAC,IAAA,CAAE,SAAA,mCAAA,CAAiC,EACtC,EAEAA,EAAAA,IAACK,EAAAA,gBAAA,CACC,SAAUnB,EACV,MAAAV,EACA,SAAUM,EACV,iBAAAgB,CAAA,CAAA,CACF,CAEJ,CAAA,EACF,CAEJ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as e } from "react/jsx-runtime";
|
|
2
2
|
import "react";
|
|
3
|
-
import { E as t } from "./EmbeddedWalletSettings-
|
|
3
|
+
import { E as t } from "./EmbeddedWalletSettings-DY5iJhS0.js";
|
|
4
4
|
function s() {
|
|
5
5
|
return /* @__PURE__ */ e("div", { className: "cedros-dashboard__section", children: /* @__PURE__ */ e(t, {}) });
|
|
6
6
|
}
|
package/dist/{EmbeddedWalletSettings-CLWh2TbV.js.map → EmbeddedWalletSettings-BuDgqv-K.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmbeddedWalletSettings-
|
|
1
|
+
{"version":3,"file":"EmbeddedWalletSettings-BuDgqv-K.js","sources":["../src/admin/sections/EmbeddedWalletSettings.tsx"],"sourcesContent":["/**\n * Embedded Wallet Settings Section - Plugin wrapper\n */\n\nimport React from 'react';\nimport { EmbeddedWalletSettings as Settings } from '../../components/admin/settings';\n\nexport default function EmbeddedWalletSettings(): React.JSX.Element {\n return (\n <div className=\"cedros-dashboard__section\">\n <Settings />\n </div>\n );\n}\n"],"names":["EmbeddedWalletSettings","jsx","Settings"],"mappings":";;;AAOA,SAAwBA,IAA4C;AAClE,2BACG,OAAA,EAAI,WAAU,6BACb,UAAA,gBAAAC,EAACC,KAAS,GACZ;AAEJ;"}
|
|
@@ -2,7 +2,7 @@ import { jsxs as s, jsx as e } from "react/jsx-runtime";
|
|
|
2
2
|
import { useEffect as k, useMemo as x } from "react";
|
|
3
3
|
import { L } from "./LoadingSpinner-6vml-zwr.js";
|
|
4
4
|
import { E as W } from "./ErrorMessage-CcEK0pYO.js";
|
|
5
|
-
import { u as C, A as M, S as $ } from "./AutosaveStatus-
|
|
5
|
+
import { u as C, A as M, S as $ } from "./AutosaveStatus-vkJxtuEw.js";
|
|
6
6
|
const d = ["wallet_recovery_mode"];
|
|
7
7
|
function q({ className: n }) {
|
|
8
8
|
const {
|
package/dist/{EmbeddedWalletSettings-BTTV8Nqi.js.map → EmbeddedWalletSettings-DY5iJhS0.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmbeddedWalletSettings-BTTV8Nqi.js","sources":["../src/components/admin/settings/EmbeddedWalletSettings.tsx"],"sourcesContent":["/**\n * Embedded Wallet settings page - enable/disable and configure recovery\n */\nimport { useEffect, useMemo } from 'react';\nimport { LoadingSpinner } from '../../shared/LoadingSpinner';\nimport { ErrorMessage } from '../../shared/ErrorMessage';\nimport { useSettingsAutosave } from '../../../hooks/useSettingsAutosave';\nimport { SettingsSection } from './settingsInputs';\nimport { AutosaveStatus } from './AutosaveStatus';\n\n/** Keys to show on this page (excluding the master toggle which is in header) */\nconst SETTINGS_KEYS = ['wallet_recovery_mode'];\n\nexport interface EmbeddedWalletSettingsProps {\n className?: string;\n}\n\nexport function EmbeddedWalletSettings({ className }: EmbeddedWalletSettingsProps) {\n const {\n settings,\n edits,\n isLoading,\n autosaveStatus,\n autosaveError,\n error,\n fetchSettings,\n handleChange,\n getEffectiveValue,\n } = useSettingsAutosave();\n\n useEffect(() => {\n fetchSettings();\n }, [fetchSettings]);\n\n // Get wallet settings from features category\n const featuresSettings = settings['features'] ?? [];\n const currentSettings = featuresSettings\n .filter((s) => SETTINGS_KEYS.includes(s.key))\n .sort((a, b) => SETTINGS_KEYS.indexOf(a.key) - SETTINGS_KEYS.indexOf(b.key));\n\n // Embedded wallet master toggle\n const walletEnabled = getEffectiveValue('feature_wallet_signing') === 'true';\n const handleWalletToggle = () => {\n handleChange('feature_wallet_signing', walletEnabled ? 'false' : 'true');\n };\n\n // User withdrawals toggle (only visible when wallet is enabled)\n const withdrawalsEnabled = getEffectiveValue('feature_user_withdrawals') === 'true';\n const handleWithdrawalsToggle = () => {\n handleChange('feature_user_withdrawals', withdrawalsEnabled ? 'false' : 'true');\n };\n\n // Cross-category mismatch detection\n const privateDepositsEnabled = getEffectiveValue('deposit_privacy_enabled') === 'true';\n const recoveryMode = getEffectiveValue('wallet_recovery_mode');\n const recoveryMismatch = privateDepositsEnabled && recoveryMode !== 'none';\n const walletMismatch = privateDepositsEnabled && !walletEnabled;\n\n // Inline warning on recovery mode row\n const externalWarnings = useMemo(() => {\n if (!recoveryMismatch) return undefined;\n return {\n wallet_recovery_mode:\n 'Private deposits require No Recovery mode. Deposits will fail with the current setting.',\n };\n }, [recoveryMismatch]);\n\n if (isLoading && Object.keys(settings).length === 0) {\n return (\n <div className={`cedros-system-settings cedros-system-settings-loading ${className ?? ''}`}>\n <LoadingSpinner />\n <span>Loading settings...</span>\n </div>\n );\n }\n\n if (error) {\n return (\n <div className={`cedros-system-settings ${className ?? ''}`}>\n <ErrorMessage error={error.message} />\n </div>\n );\n }\n\n return (\n <div className={`cedros-system-settings ${className ?? ''}`}>\n <div className=\"cedros-settings-page-header\">\n <div className=\"cedros-settings-page-header-content\">\n <h2 className=\"cedros-settings-page-title\">Embedded Wallet</h2>\n <p className=\"cedros-settings-page-description\">\n Configure the embedded wallet for transaction signing.\n </p>\n </div>\n <div className=\"cedros-settings-page-header-actions\">\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={walletEnabled}\n className={`cedros-toggle ${walletEnabled ? 'cedros-toggle-on' : 'cedros-toggle-off'}`}\n onClick={handleWalletToggle}\n >\n <span className=\"cedros-toggle-track\">\n <span className=\"cedros-toggle-thumb\" />\n </span>\n <span className=\"cedros-toggle-label\">{walletEnabled ? 'Enabled' : 'Disabled'}</span>\n </button>\n <AutosaveStatus status={autosaveStatus} error={autosaveError} />\n </div>\n </div>\n\n {/* User Withdrawals toggle (only visible when wallet is enabled) */}\n {walletEnabled && (\n <div className=\"cedros-settings-subsection\">\n <div className=\"cedros-settings-subsection-header\">\n <div>\n <h3 className=\"cedros-settings-subsection-title\">User Withdrawals</h3>\n <p className=\"cedros-settings-subsection-description\">\n Allow users to withdraw SOL/SPL tokens from their embedded wallet to external\n addresses.\n </p>\n </div>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={withdrawalsEnabled}\n className={`cedros-toggle ${withdrawalsEnabled ? 'cedros-toggle-on' : 'cedros-toggle-off'}`}\n onClick={handleWithdrawalsToggle}\n >\n <span className=\"cedros-toggle-track\">\n <span className=\"cedros-toggle-thumb\" />\n </span>\n <span className=\"cedros-toggle-label\">\n {withdrawalsEnabled ? 'Enabled' : 'Disabled'}\n </span>\n </button>\n </div>\n </div>\n )}\n\n {/* Mismatch warnings */}\n {recoveryMismatch && (\n <div className=\"cedros-settings-warning-banner\">\n Private deposits are enabled but require No Recovery mode. Users will see an error when\n attempting private deposits until recovery mode is changed below.\n </div>\n )}\n {walletMismatch && (\n <div className=\"cedros-settings-warning-banner\">\n Private deposits are enabled but require the embedded wallet. Enable it above.\n </div>\n )}\n\n {/* Settings content */}\n <div className=\"cedros-admin-tab-content\">\n {currentSettings.length === 0 ? (\n <div className=\"cedros-system-settings-empty\">\n <p>No additional settings available.</p>\n </div>\n ) : (\n <SettingsSection\n settings={currentSettings}\n edits={edits}\n onChange={handleChange}\n externalWarnings={externalWarnings}\n />\n )}\n </div>\n </div>\n );\n}\n"],"names":["SETTINGS_KEYS","EmbeddedWalletSettings","className","settings","edits","isLoading","autosaveStatus","autosaveError","error","fetchSettings","handleChange","getEffectiveValue","useSettingsAutosave","useEffect","currentSettings","s","a","b","walletEnabled","handleWalletToggle","withdrawalsEnabled","handleWithdrawalsToggle","privateDepositsEnabled","recoveryMode","recoveryMismatch","walletMismatch","externalWarnings","useMemo","jsx","LoadingSpinner","ErrorMessage","jsxs","AutosaveStatus","SettingsSection"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EmbeddedWalletSettings-DY5iJhS0.js","sources":["../src/components/admin/settings/EmbeddedWalletSettings.tsx"],"sourcesContent":["/**\n * Embedded Wallet settings page - enable/disable and configure recovery\n */\nimport { useEffect, useMemo } from 'react';\nimport { LoadingSpinner } from '../../shared/LoadingSpinner';\nimport { ErrorMessage } from '../../shared/ErrorMessage';\nimport { useSettingsAutosave } from '../../../hooks/useSettingsAutosave';\nimport { SettingsSection } from './settingsInputs';\nimport { AutosaveStatus } from './AutosaveStatus';\n\n/** Keys to show on this page (excluding the master toggle which is in header) */\nconst SETTINGS_KEYS = ['wallet_recovery_mode'];\n\nexport interface EmbeddedWalletSettingsProps {\n className?: string;\n}\n\nexport function EmbeddedWalletSettings({ className }: EmbeddedWalletSettingsProps) {\n const {\n settings,\n edits,\n isLoading,\n autosaveStatus,\n autosaveError,\n error,\n fetchSettings,\n handleChange,\n getEffectiveValue,\n } = useSettingsAutosave();\n\n useEffect(() => {\n fetchSettings();\n }, [fetchSettings]);\n\n // Get wallet settings from features category\n const featuresSettings = settings['features'] ?? [];\n const currentSettings = featuresSettings\n .filter((s) => SETTINGS_KEYS.includes(s.key))\n .sort((a, b) => SETTINGS_KEYS.indexOf(a.key) - SETTINGS_KEYS.indexOf(b.key));\n\n // Embedded wallet master toggle\n const walletEnabled = getEffectiveValue('feature_wallet_signing') === 'true';\n const handleWalletToggle = () => {\n handleChange('feature_wallet_signing', walletEnabled ? 'false' : 'true');\n };\n\n // User withdrawals toggle (only visible when wallet is enabled)\n const withdrawalsEnabled = getEffectiveValue('feature_user_withdrawals') === 'true';\n const handleWithdrawalsToggle = () => {\n handleChange('feature_user_withdrawals', withdrawalsEnabled ? 'false' : 'true');\n };\n\n // Cross-category mismatch detection\n const privateDepositsEnabled = getEffectiveValue('deposit_privacy_enabled') === 'true';\n const recoveryMode = getEffectiveValue('wallet_recovery_mode');\n const recoveryMismatch = privateDepositsEnabled && recoveryMode !== 'none';\n const walletMismatch = privateDepositsEnabled && !walletEnabled;\n\n // Inline warning on recovery mode row\n const externalWarnings = useMemo(() => {\n if (!recoveryMismatch) return undefined;\n return {\n wallet_recovery_mode:\n 'Private deposits require No Recovery mode. Deposits will fail with the current setting.',\n };\n }, [recoveryMismatch]);\n\n if (isLoading && Object.keys(settings).length === 0) {\n return (\n <div className={`cedros-system-settings cedros-system-settings-loading ${className ?? ''}`}>\n <LoadingSpinner />\n <span>Loading settings...</span>\n </div>\n );\n }\n\n if (error) {\n return (\n <div className={`cedros-system-settings ${className ?? ''}`}>\n <ErrorMessage error={error.message} />\n </div>\n );\n }\n\n return (\n <div className={`cedros-system-settings ${className ?? ''}`}>\n <div className=\"cedros-settings-page-header\">\n <div className=\"cedros-settings-page-header-content\">\n <h2 className=\"cedros-settings-page-title\">Embedded Wallet</h2>\n <p className=\"cedros-settings-page-description\">\n Configure the embedded wallet for transaction signing.\n </p>\n </div>\n <div className=\"cedros-settings-page-header-actions\">\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={walletEnabled}\n className={`cedros-toggle ${walletEnabled ? 'cedros-toggle-on' : 'cedros-toggle-off'}`}\n onClick={handleWalletToggle}\n >\n <span className=\"cedros-toggle-track\">\n <span className=\"cedros-toggle-thumb\" />\n </span>\n <span className=\"cedros-toggle-label\">{walletEnabled ? 'Enabled' : 'Disabled'}</span>\n </button>\n <AutosaveStatus status={autosaveStatus} error={autosaveError} />\n </div>\n </div>\n\n {/* User Withdrawals toggle (only visible when wallet is enabled) */}\n {walletEnabled && (\n <div className=\"cedros-settings-subsection\">\n <div className=\"cedros-settings-subsection-header\">\n <div>\n <h3 className=\"cedros-settings-subsection-title\">User Withdrawals</h3>\n <p className=\"cedros-settings-subsection-description\">\n Allow users to withdraw SOL/SPL tokens from their embedded wallet to external\n addresses.\n </p>\n </div>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={withdrawalsEnabled}\n className={`cedros-toggle ${withdrawalsEnabled ? 'cedros-toggle-on' : 'cedros-toggle-off'}`}\n onClick={handleWithdrawalsToggle}\n >\n <span className=\"cedros-toggle-track\">\n <span className=\"cedros-toggle-thumb\" />\n </span>\n <span className=\"cedros-toggle-label\">\n {withdrawalsEnabled ? 'Enabled' : 'Disabled'}\n </span>\n </button>\n </div>\n </div>\n )}\n\n {/* Mismatch warnings */}\n {recoveryMismatch && (\n <div className=\"cedros-settings-warning-banner\">\n Private deposits are enabled but require No Recovery mode. Users will see an error when\n attempting private deposits until recovery mode is changed below.\n </div>\n )}\n {walletMismatch && (\n <div className=\"cedros-settings-warning-banner\">\n Private deposits are enabled but require the embedded wallet. Enable it above.\n </div>\n )}\n\n {/* Settings content */}\n <div className=\"cedros-admin-tab-content\">\n {currentSettings.length === 0 ? (\n <div className=\"cedros-system-settings-empty\">\n <p>No additional settings available.</p>\n </div>\n ) : (\n <SettingsSection\n settings={currentSettings}\n edits={edits}\n onChange={handleChange}\n externalWarnings={externalWarnings}\n />\n )}\n </div>\n </div>\n );\n}\n"],"names":["SETTINGS_KEYS","EmbeddedWalletSettings","className","settings","edits","isLoading","autosaveStatus","autosaveError","error","fetchSettings","handleChange","getEffectiveValue","useSettingsAutosave","useEffect","currentSettings","s","a","b","walletEnabled","handleWalletToggle","withdrawalsEnabled","handleWithdrawalsToggle","privateDepositsEnabled","recoveryMode","recoveryMismatch","walletMismatch","externalWarnings","useMemo","jsx","LoadingSpinner","ErrorMessage","jsxs","AutosaveStatus","SettingsSection"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as r } from "react/jsx-runtime";
|
|
2
2
|
import "react";
|
|
3
|
-
import { S as e } from "./ServerSettings-
|
|
3
|
+
import { S as e } from "./ServerSettings-BAstMKHS.js";
|
|
4
4
|
function i() {
|
|
5
5
|
return /* @__PURE__ */ r("div", { className: "cedros-dashboard__section", children: /* @__PURE__ */ r(e, {}) });
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerSettings-
|
|
1
|
+
{"version":3,"file":"ServerSettings-9Q091f3o.js","sources":["../src/admin/sections/ServerSettings.tsx"],"sourcesContent":["/**\n * Server Settings Section - Plugin wrapper\n */\n\nimport React from 'react';\nimport { ServerSettings as Settings } from '../../components/admin/settings';\n\nexport default function ServerSettings(): React.JSX.Element {\n return (\n <div className=\"cedros-dashboard__section\">\n <Settings />\n </div>\n );\n}\n"],"names":["ServerSettings","jsx","Settings"],"mappings":";;;AAOA,SAAwBA,IAAoC;AAC1D,2BACG,OAAA,EAAI,WAAU,6BACb,UAAA,gBAAAC,EAACC,KAAS,GACZ;AAEJ;"}
|
|
@@ -2,7 +2,7 @@ import { jsxs as a, jsx as s } from "react/jsx-runtime";
|
|
|
2
2
|
import { useMemo as v, useState as N, useEffect as h } from "react";
|
|
3
3
|
import { L as A } from "./LoadingSpinner-6vml-zwr.js";
|
|
4
4
|
import { E as x } from "./ErrorMessage-CcEK0pYO.js";
|
|
5
|
-
import { u as E, A as L, S as T } from "./AutosaveStatus-
|
|
5
|
+
import { u as E, A as L, S as T } from "./AutosaveStatus-vkJxtuEw.js";
|
|
6
6
|
const $ = [
|
|
7
7
|
{
|
|
8
8
|
id: "integrations",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerSettings-
|
|
1
|
+
{"version":3,"file":"ServerSettings-BAstMKHS.js","sources":["../src/components/admin/settings/ServerSettings.tsx"],"sourcesContent":["/**\n * Server settings page - infrastructure configuration with tabs\n *\n * Tab visibility:\n * - Integrations: only shown when `feature_cedros_pay` is enabled.\n * This tab contains the Cedros Pay API Key, which is only needed when\n * cedros-pay runs as a separate microservice. In co-located deployments\n * (e.g., cedros-login and cedros-pay in the same Rust binary), inter-service\n * auth uses JWT/JWKS and no API key is needed.\n * - Logging, Metrics, Security: always visible.\n */\nimport { useState, useEffect, useMemo } from 'react';\nimport { LoadingSpinner } from '../../shared/LoadingSpinner';\nimport { ErrorMessage } from '../../shared/ErrorMessage';\nimport { useSettingsAutosave } from '../../../hooks/useSettingsAutosave';\nimport { SettingsSection } from './settingsInputs';\nimport { AutosaveStatus } from './AutosaveStatus';\n\ntype ServerTab = 'integrations' | 'logging' | 'metrics' | 'security';\n\ninterface TabConfig {\n id: ServerTab;\n label: string;\n /** Categories to pull settings from (defaults to ['server']) */\n categories?: string[];\n keys: string[];\n /** When set, tab is only visible if this setting is 'true' */\n requiredSetting?: string;\n}\n\nconst TABS: TabConfig[] = [\n {\n id: 'integrations',\n label: 'Integrations',\n keys: ['server_cedros_pay_api_key'],\n requiredSetting: 'feature_cedros_pay',\n },\n {\n id: 'logging',\n label: 'Logging',\n keys: ['server_log_level'],\n },\n {\n id: 'metrics',\n label: 'Metrics',\n keys: ['server_metrics_api_key'],\n },\n {\n id: 'security',\n label: 'Security',\n categories: ['security', 'features'],\n keys: ['feature_mfa', 'security_cors_origins', 'security_session_timeout'],\n },\n];\n\nexport interface ServerSettingsProps {\n className?: string;\n}\n\nexport function ServerSettings({ className }: ServerSettingsProps) {\n const {\n settings,\n edits,\n isLoading,\n autosaveStatus,\n autosaveError,\n error,\n fetchSettings,\n handleChange,\n getEffectiveValue,\n } = useSettingsAutosave();\n\n // Filter tabs based on feature flags\n const visibleTabs = useMemo(\n () =>\n TABS.filter((tab) => {\n if (!tab.requiredSetting) return true;\n return getEffectiveValue(tab.requiredSetting) === 'true';\n }),\n [getEffectiveValue]\n );\n\n // Default to first visible tab\n const [activeTab, setActiveTab] = useState<ServerTab | null>(null);\n\n // Set initial tab when tabs become available\n useEffect(() => {\n if (activeTab === null && visibleTabs.length > 0) {\n setActiveTab(visibleTabs[0].id);\n } else if (activeTab && !visibleTabs.some((t) => t.id === activeTab)) {\n // Active tab was hidden (feature toggled off) — fall back\n setActiveTab(visibleTabs[0]?.id ?? null);\n }\n }, [visibleTabs, activeTab]);\n\n useEffect(() => {\n fetchSettings();\n }, [fetchSettings]);\n\n // Get current tab config\n const currentTab = visibleTabs.find((t) => t.id === activeTab);\n\n // Collect settings from all categories for the current tab\n const currentSettings = useMemo(() => {\n if (!currentTab) return [];\n const categories = currentTab.categories ?? ['server'];\n const allSettings: (typeof settings)[string] = [];\n for (const category of categories) {\n const categorySettings = settings[category] ?? [];\n allSettings.push(...categorySettings);\n }\n // Filter by keys and sort by keys order\n return allSettings\n .filter((s) => currentTab.keys.includes(s.key))\n .sort((a, b) => currentTab.keys.indexOf(a.key) - currentTab.keys.indexOf(b.key));\n }, [settings, currentTab]);\n\n if (isLoading && Object.keys(settings).length === 0) {\n return (\n <div className={`cedros-system-settings cedros-system-settings-loading ${className ?? ''}`}>\n <LoadingSpinner />\n <span>Loading settings...</span>\n </div>\n );\n }\n\n if (error) {\n return (\n <div className={`cedros-system-settings ${className ?? ''}`}>\n <ErrorMessage error={error.message} />\n </div>\n );\n }\n\n return (\n <div className={`cedros-system-settings ${className ?? ''}`}>\n <div className=\"cedros-settings-page-header\">\n <div className=\"cedros-settings-page-header-content\">\n <h2 className=\"cedros-settings-page-title\">Auth Server</h2>\n <p className=\"cedros-settings-page-description\">\n Server infrastructure settings. Some may be overridden by environment variables.\n </p>\n </div>\n <AutosaveStatus status={autosaveStatus} error={autosaveError} />\n </div>\n\n {/* Tabs */}\n <div className=\"cedros-admin-tabs cedros-admin-tabs--line\">\n {visibleTabs.map((tab) => (\n <button\n key={tab.id}\n type=\"button\"\n className={`cedros-admin-tab ${activeTab === tab.id ? 'cedros-admin-tab-active' : ''}`}\n onClick={() => setActiveTab(tab.id)}\n aria-selected={activeTab === tab.id}\n role=\"tab\"\n >\n {tab.label}\n </button>\n ))}\n </div>\n\n {/* Tab content */}\n <div className=\"cedros-admin-tab-content\" role=\"tabpanel\">\n {currentSettings.length === 0 ? (\n <div className=\"cedros-system-settings-empty\">\n <p>No settings found for {currentTab?.label ?? 'this section'}.</p>\n </div>\n ) : (\n <SettingsSection settings={currentSettings} edits={edits} onChange={handleChange} />\n )}\n </div>\n </div>\n );\n}\n"],"names":["TABS","ServerSettings","className","settings","edits","isLoading","autosaveStatus","autosaveError","error","fetchSettings","handleChange","getEffectiveValue","useSettingsAutosave","visibleTabs","useMemo","tab","activeTab","setActiveTab","useState","useEffect","t","currentTab","currentSettings","categories","allSettings","category","categorySettings","s","a","b","jsx","LoadingSpinner","ErrorMessage","jsxs","AutosaveStatus","SettingsSection"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const e=require("react/jsx-runtime"),a=require("react"),p=require("./LoadingSpinner-d6sSxgQN.cjs"),_=require("./ErrorMessage-CHbYbVi2.cjs"),g=require("./AutosaveStatus-
|
|
1
|
+
"use strict";const e=require("react/jsx-runtime"),a=require("react"),p=require("./LoadingSpinner-d6sSxgQN.cjs"),_=require("./ErrorMessage-CHbYbVi2.cjs"),g=require("./AutosaveStatus-BFj5GIab.cjs"),k=[{id:"integrations",label:"Integrations",keys:["server_cedros_pay_api_key"],requiredSetting:"feature_cedros_pay"},{id:"logging",label:"Logging",keys:["server_log_level"]},{id:"metrics",label:"Metrics",keys:["server_metrics_api_key"]},{id:"security",label:"Security",categories:["security","features"],keys:["feature_mfa","security_cors_origins","security_session_timeout"]}];function N({className:c}){const{settings:o,edits:h,isLoading:S,autosaveStatus:x,autosaveError:b,error:u,fetchSettings:m,handleChange:j,getEffectiveValue:y}=g.useSettingsAutosave(),t=a.useMemo(()=>k.filter(s=>s.requiredSetting?y(s.requiredSetting)==="true":!0),[y]),[r,d]=a.useState(null);a.useEffect(()=>{r===null&&t.length>0?d(t[0].id):r&&!t.some(s=>s.id===r)&&d(t[0]?.id??null)},[t,r]),a.useEffect(()=>{m()},[m]);const i=t.find(s=>s.id===r),v=a.useMemo(()=>{if(!i)return[];const s=i.categories??["server"],f=[];for(const n of s){const l=o[n]??[];f.push(...l)}return f.filter(n=>i.keys.includes(n.key)).sort((n,l)=>i.keys.indexOf(n.key)-i.keys.indexOf(l.key))},[o,i]);return S&&Object.keys(o).length===0?e.jsxs("div",{className:`cedros-system-settings cedros-system-settings-loading ${c??""}`,children:[e.jsx(p.LoadingSpinner,{}),e.jsx("span",{children:"Loading settings..."})]}):u?e.jsx("div",{className:`cedros-system-settings ${c??""}`,children:e.jsx(_.ErrorMessage,{error:u.message})}):e.jsxs("div",{className:`cedros-system-settings ${c??""}`,children:[e.jsxs("div",{className:"cedros-settings-page-header",children:[e.jsxs("div",{className:"cedros-settings-page-header-content",children:[e.jsx("h2",{className:"cedros-settings-page-title",children:"Auth Server"}),e.jsx("p",{className:"cedros-settings-page-description",children:"Server infrastructure settings. Some may be overridden by environment variables."})]}),e.jsx(g.AutosaveStatus,{status:x,error:b})]}),e.jsx("div",{className:"cedros-admin-tabs cedros-admin-tabs--line",children:t.map(s=>e.jsx("button",{type:"button",className:`cedros-admin-tab ${r===s.id?"cedros-admin-tab-active":""}`,onClick:()=>d(s.id),"aria-selected":r===s.id,role:"tab",children:s.label},s.id))}),e.jsx("div",{className:"cedros-admin-tab-content",role:"tabpanel",children:v.length===0?e.jsx("div",{className:"cedros-system-settings-empty",children:e.jsxs("p",{children:["No settings found for ",i?.label??"this section","."]})}):e.jsx(g.SettingsSection,{settings:v,edits:h,onChange:j})})]})}exports.ServerSettings=N;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerSettings-
|
|
1
|
+
{"version":3,"file":"ServerSettings-LIIP5TPz.cjs","sources":["../src/components/admin/settings/ServerSettings.tsx"],"sourcesContent":["/**\n * Server settings page - infrastructure configuration with tabs\n *\n * Tab visibility:\n * - Integrations: only shown when `feature_cedros_pay` is enabled.\n * This tab contains the Cedros Pay API Key, which is only needed when\n * cedros-pay runs as a separate microservice. In co-located deployments\n * (e.g., cedros-login and cedros-pay in the same Rust binary), inter-service\n * auth uses JWT/JWKS and no API key is needed.\n * - Logging, Metrics, Security: always visible.\n */\nimport { useState, useEffect, useMemo } from 'react';\nimport { LoadingSpinner } from '../../shared/LoadingSpinner';\nimport { ErrorMessage } from '../../shared/ErrorMessage';\nimport { useSettingsAutosave } from '../../../hooks/useSettingsAutosave';\nimport { SettingsSection } from './settingsInputs';\nimport { AutosaveStatus } from './AutosaveStatus';\n\ntype ServerTab = 'integrations' | 'logging' | 'metrics' | 'security';\n\ninterface TabConfig {\n id: ServerTab;\n label: string;\n /** Categories to pull settings from (defaults to ['server']) */\n categories?: string[];\n keys: string[];\n /** When set, tab is only visible if this setting is 'true' */\n requiredSetting?: string;\n}\n\nconst TABS: TabConfig[] = [\n {\n id: 'integrations',\n label: 'Integrations',\n keys: ['server_cedros_pay_api_key'],\n requiredSetting: 'feature_cedros_pay',\n },\n {\n id: 'logging',\n label: 'Logging',\n keys: ['server_log_level'],\n },\n {\n id: 'metrics',\n label: 'Metrics',\n keys: ['server_metrics_api_key'],\n },\n {\n id: 'security',\n label: 'Security',\n categories: ['security', 'features'],\n keys: ['feature_mfa', 'security_cors_origins', 'security_session_timeout'],\n },\n];\n\nexport interface ServerSettingsProps {\n className?: string;\n}\n\nexport function ServerSettings({ className }: ServerSettingsProps) {\n const {\n settings,\n edits,\n isLoading,\n autosaveStatus,\n autosaveError,\n error,\n fetchSettings,\n handleChange,\n getEffectiveValue,\n } = useSettingsAutosave();\n\n // Filter tabs based on feature flags\n const visibleTabs = useMemo(\n () =>\n TABS.filter((tab) => {\n if (!tab.requiredSetting) return true;\n return getEffectiveValue(tab.requiredSetting) === 'true';\n }),\n [getEffectiveValue]\n );\n\n // Default to first visible tab\n const [activeTab, setActiveTab] = useState<ServerTab | null>(null);\n\n // Set initial tab when tabs become available\n useEffect(() => {\n if (activeTab === null && visibleTabs.length > 0) {\n setActiveTab(visibleTabs[0].id);\n } else if (activeTab && !visibleTabs.some((t) => t.id === activeTab)) {\n // Active tab was hidden (feature toggled off) — fall back\n setActiveTab(visibleTabs[0]?.id ?? null);\n }\n }, [visibleTabs, activeTab]);\n\n useEffect(() => {\n fetchSettings();\n }, [fetchSettings]);\n\n // Get current tab config\n const currentTab = visibleTabs.find((t) => t.id === activeTab);\n\n // Collect settings from all categories for the current tab\n const currentSettings = useMemo(() => {\n if (!currentTab) return [];\n const categories = currentTab.categories ?? ['server'];\n const allSettings: (typeof settings)[string] = [];\n for (const category of categories) {\n const categorySettings = settings[category] ?? [];\n allSettings.push(...categorySettings);\n }\n // Filter by keys and sort by keys order\n return allSettings\n .filter((s) => currentTab.keys.includes(s.key))\n .sort((a, b) => currentTab.keys.indexOf(a.key) - currentTab.keys.indexOf(b.key));\n }, [settings, currentTab]);\n\n if (isLoading && Object.keys(settings).length === 0) {\n return (\n <div className={`cedros-system-settings cedros-system-settings-loading ${className ?? ''}`}>\n <LoadingSpinner />\n <span>Loading settings...</span>\n </div>\n );\n }\n\n if (error) {\n return (\n <div className={`cedros-system-settings ${className ?? ''}`}>\n <ErrorMessage error={error.message} />\n </div>\n );\n }\n\n return (\n <div className={`cedros-system-settings ${className ?? ''}`}>\n <div className=\"cedros-settings-page-header\">\n <div className=\"cedros-settings-page-header-content\">\n <h2 className=\"cedros-settings-page-title\">Auth Server</h2>\n <p className=\"cedros-settings-page-description\">\n Server infrastructure settings. Some may be overridden by environment variables.\n </p>\n </div>\n <AutosaveStatus status={autosaveStatus} error={autosaveError} />\n </div>\n\n {/* Tabs */}\n <div className=\"cedros-admin-tabs cedros-admin-tabs--line\">\n {visibleTabs.map((tab) => (\n <button\n key={tab.id}\n type=\"button\"\n className={`cedros-admin-tab ${activeTab === tab.id ? 'cedros-admin-tab-active' : ''}`}\n onClick={() => setActiveTab(tab.id)}\n aria-selected={activeTab === tab.id}\n role=\"tab\"\n >\n {tab.label}\n </button>\n ))}\n </div>\n\n {/* Tab content */}\n <div className=\"cedros-admin-tab-content\" role=\"tabpanel\">\n {currentSettings.length === 0 ? (\n <div className=\"cedros-system-settings-empty\">\n <p>No settings found for {currentTab?.label ?? 'this section'}.</p>\n </div>\n ) : (\n <SettingsSection settings={currentSettings} edits={edits} onChange={handleChange} />\n )}\n </div>\n </div>\n );\n}\n"],"names":["TABS","ServerSettings","className","settings","edits","isLoading","autosaveStatus","autosaveError","error","fetchSettings","handleChange","getEffectiveValue","useSettingsAutosave","visibleTabs","useMemo","tab","activeTab","setActiveTab","useState","useEffect","t","currentTab","currentSettings","categories","allSettings","category","categorySettings","s","a","b","jsx","LoadingSpinner","ErrorMessage","jsxs","AutosaveStatus","SettingsSection"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime");require("react");const r=require("./ServerSettings-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime");require("react");const r=require("./ServerSettings-LIIP5TPz.cjs");function t(){return e.jsx("div",{className:"cedros-dashboard__section",children:e.jsx(r.ServerSettings,{})})}exports.default=t;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerSettings-
|
|
1
|
+
{"version":3,"file":"ServerSettings-PH7T8JKI.cjs","sources":["../src/admin/sections/ServerSettings.tsx"],"sourcesContent":["/**\n * Server Settings Section - Plugin wrapper\n */\n\nimport React from 'react';\nimport { ServerSettings as Settings } from '../../components/admin/settings';\n\nexport default function ServerSettings(): React.JSX.Element {\n return (\n <div className=\"cedros-dashboard__section\">\n <Settings />\n </div>\n );\n}\n"],"names":["ServerSettings","jsx","Settings"],"mappings":"uLAOA,SAAwBA,GAAoC,CAC1D,aACG,MAAA,CAAI,UAAU,4BACb,SAAAC,MAACC,EAAAA,iBAAS,EACZ,CAEJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const e=require("react/jsx-runtime"),S=require("react"),f=require("./LoadingSpinner-d6sSxgQN.cjs"),p=require("./ErrorMessage-CHbYbVi2.cjs"),r=require("./AutosaveStatus-
|
|
1
|
+
"use strict";const e=require("react/jsx-runtime"),S=require("react"),f=require("./LoadingSpinner-d6sSxgQN.cjs"),p=require("./ErrorMessage-CHbYbVi2.cjs"),r=require("./AutosaveStatus-BFj5GIab.cjs");function g({title:t,description:d,categories:u,className:n=""}){const{settings:i,edits:h,isLoading:l,autosaveStatus:j,autosaveError:x,error:o,fetchSettings:a,handleChange:m}=r.useSettingsAutosave();S.useEffect(()=>{a()},[a]);const c=u.filter(s=>i[s]?.length>0);return l&&Object.keys(i).length===0?e.jsxs("div",{className:`cedros-system-settings cedros-system-settings-loading ${n}`,children:[e.jsx(f.LoadingSpinner,{}),e.jsx("span",{children:"Loading settings..."})]}):o?e.jsx("div",{className:`cedros-system-settings ${n}`,children:e.jsx(p.ErrorMessage,{error:o.message})}):e.jsxs("div",{className:`cedros-system-settings ${n}`,children:[e.jsxs("div",{className:"cedros-settings-page-header",children:[e.jsxs("div",{className:"cedros-settings-page-header-content",children:[e.jsx("h2",{className:"cedros-settings-page-title",children:t}),e.jsx("p",{className:"cedros-settings-page-description",children:d})]}),e.jsx(r.AutosaveStatus,{status:j,error:x})]}),c.length===0?e.jsx("div",{className:"cedros-system-settings-empty",children:e.jsx("p",{children:"No settings found for this section."})}):c.map(s=>e.jsx(r.SettingsSection,{settings:i[s],edits:h,onChange:m},s))]})}const v=["webhook"];function y({className:t}){return e.jsx(g,{title:"Webhooks",description:"Configure HTTP webhook notifications for authentication events.",categories:v,className:t})}exports.SettingsPageLayout=g;exports.WebhookSettings=y;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebhookSettings-
|
|
1
|
+
{"version":3,"file":"WebhookSettings-2p9abGm5.cjs","sources":["../src/components/admin/settings/SettingsPageLayout.tsx","../src/components/admin/settings/WebhookSettings.tsx"],"sourcesContent":["/**\n * Shared layout for settings pages with autosave\n */\nimport { useEffect } from 'react';\nimport { LoadingSpinner } from '../../shared/LoadingSpinner';\nimport { ErrorMessage } from '../../shared/ErrorMessage';\nimport { useSettingsAutosave } from '../../../hooks/useSettingsAutosave';\nimport { SettingsSection } from './settingsInputs';\nimport { AutosaveStatus } from './AutosaveStatus';\n\nexport interface SettingsPageLayoutProps {\n /** Page title */\n title: string;\n /** Page description */\n description: string;\n /** Categories to display on this page */\n categories: string[];\n /** Additional CSS class */\n className?: string;\n}\n\n/**\n * Shared layout component for settings pages.\n * Handles loading and displaying settings for specified categories.\n * Changes are automatically saved after a brief debounce.\n */\nexport function SettingsPageLayout({\n title,\n description,\n categories,\n className = '',\n}: SettingsPageLayoutProps) {\n const {\n settings,\n edits,\n isLoading,\n autosaveStatus,\n autosaveError,\n error,\n fetchSettings,\n handleChange,\n } = useSettingsAutosave();\n\n useEffect(() => {\n fetchSettings();\n }, [fetchSettings]);\n\n // Filter settings to only show relevant categories\n const relevantCategories = categories.filter((cat) => settings[cat]?.length > 0);\n\n if (isLoading && Object.keys(settings).length === 0) {\n return (\n <div className={`cedros-system-settings cedros-system-settings-loading ${className}`}>\n <LoadingSpinner />\n <span>Loading settings...</span>\n </div>\n );\n }\n\n if (error) {\n return (\n <div className={`cedros-system-settings ${className}`}>\n <ErrorMessage error={error.message} />\n </div>\n );\n }\n\n return (\n <div className={`cedros-system-settings ${className}`}>\n <div className=\"cedros-settings-page-header\">\n <div className=\"cedros-settings-page-header-content\">\n <h2 className=\"cedros-settings-page-title\">{title}</h2>\n <p className=\"cedros-settings-page-description\">{description}</p>\n </div>\n <AutosaveStatus status={autosaveStatus} error={autosaveError} />\n </div>\n\n {relevantCategories.length === 0 ? (\n <div className=\"cedros-system-settings-empty\">\n <p>No settings found for this section.</p>\n </div>\n ) : (\n relevantCategories.map((category) => (\n <SettingsSection\n key={category}\n settings={settings[category]}\n edits={edits}\n onChange={handleChange}\n />\n ))\n )}\n </div>\n );\n}\n","/**\n * Webhook settings page - HTTP webhook configuration\n */\nimport { SettingsPageLayout } from './SettingsPageLayout';\n\nconst CATEGORIES = ['webhook'];\n\nexport interface WebhookSettingsProps {\n className?: string;\n}\n\nexport function WebhookSettings({ className }: WebhookSettingsProps) {\n return (\n <SettingsPageLayout\n title=\"Webhooks\"\n description=\"Configure HTTP webhook notifications for authentication events.\"\n categories={CATEGORIES}\n className={className}\n />\n );\n}\n"],"names":["SettingsPageLayout","title","description","categories","className","settings","edits","isLoading","autosaveStatus","autosaveError","error","fetchSettings","handleChange","useSettingsAutosave","useEffect","relevantCategories","cat","jsxs","jsx","LoadingSpinner","ErrorMessage","AutosaveStatus","category","SettingsSection","CATEGORIES","WebhookSettings"],"mappings":"oMA0BO,SAASA,EAAmB,CACjC,MAAAC,EACA,YAAAC,EACA,WAAAC,EACA,UAAAC,EAAY,EACd,EAA4B,CAC1B,KAAM,CACJ,SAAAC,EACA,MAAAC,EACA,UAAAC,EACA,eAAAC,EACA,cAAAC,EACA,MAAAC,EACA,cAAAC,EACA,aAAAC,CAAA,EACEC,sBAAA,EAEJC,EAAAA,UAAU,IAAM,CACdH,EAAA,CACF,EAAG,CAACA,CAAa,CAAC,EAGlB,MAAMI,EAAqBZ,EAAW,OAAQa,GAAQX,EAASW,CAAG,GAAG,OAAS,CAAC,EAE/E,OAAIT,GAAa,OAAO,KAAKF,CAAQ,EAAE,SAAW,EAE9CY,EAAAA,KAAC,MAAA,CAAI,UAAW,yDAAyDb,CAAS,GAChF,SAAA,CAAAc,EAAAA,IAACC,EAAAA,eAAA,EAAe,EAChBD,EAAAA,IAAC,QAAK,SAAA,qBAAA,CAAmB,CAAA,EAC3B,EAIAR,EAEAQ,EAAAA,IAAC,MAAA,CAAI,UAAW,0BAA0Bd,CAAS,GACjD,SAAAc,EAAAA,IAACE,EAAAA,aAAA,CAAa,MAAOV,EAAM,OAAA,CAAS,EACtC,EAKFO,EAAAA,KAAC,MAAA,CAAI,UAAW,0BAA0Bb,CAAS,GACjD,SAAA,CAAAa,EAAAA,KAAC,MAAA,CAAI,UAAU,8BACb,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,sCACb,SAAA,CAAAC,EAAAA,IAAC,KAAA,CAAG,UAAU,6BAA8B,SAAAjB,EAAM,EAClDiB,EAAAA,IAAC,IAAA,CAAE,UAAU,mCAAoC,SAAAhB,CAAA,CAAY,CAAA,EAC/D,EACAgB,EAAAA,IAACG,EAAAA,eAAA,CAAe,OAAQb,EAAgB,MAAOC,CAAA,CAAe,CAAA,EAChE,EAECM,EAAmB,SAAW,EAC7BG,EAAAA,IAAC,OAAI,UAAU,+BACb,SAAAA,EAAAA,IAAC,IAAA,CAAE,+CAAmC,CAAA,CACxC,EAEAH,EAAmB,IAAKO,GACtBJ,EAAAA,IAACK,EAAAA,gBAAA,CAEC,SAAUlB,EAASiB,CAAQ,EAC3B,MAAAhB,EACA,SAAUM,CAAA,EAHLU,CAAA,CAKR,CAAA,EAEL,CAEJ,CCxFA,MAAME,EAAa,CAAC,SAAS,EAMtB,SAASC,EAAgB,CAAE,UAAArB,GAAmC,CACnE,OACEc,EAAAA,IAAClB,EAAA,CACC,MAAM,WACN,YAAY,kEACZ,WAAYwB,EACZ,UAAApB,CAAA,CAAA,CAGN"}
|
|
@@ -2,7 +2,7 @@ import { jsxs as t, jsx as e } from "react/jsx-runtime";
|
|
|
2
2
|
import { useEffect as p } from "react";
|
|
3
3
|
import { L as v } from "./LoadingSpinner-6vml-zwr.js";
|
|
4
4
|
import { E as S } from "./ErrorMessage-CcEK0pYO.js";
|
|
5
|
-
import { u as y, A as N, S as E } from "./AutosaveStatus-
|
|
5
|
+
import { u as y, A as N, S as E } from "./AutosaveStatus-vkJxtuEw.js";
|
|
6
6
|
function b({
|
|
7
7
|
title: i,
|
|
8
8
|
description: d,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebhookSettings-
|
|
1
|
+
{"version":3,"file":"WebhookSettings-CXMBju7N.js","sources":["../src/components/admin/settings/SettingsPageLayout.tsx","../src/components/admin/settings/WebhookSettings.tsx"],"sourcesContent":["/**\n * Shared layout for settings pages with autosave\n */\nimport { useEffect } from 'react';\nimport { LoadingSpinner } from '../../shared/LoadingSpinner';\nimport { ErrorMessage } from '../../shared/ErrorMessage';\nimport { useSettingsAutosave } from '../../../hooks/useSettingsAutosave';\nimport { SettingsSection } from './settingsInputs';\nimport { AutosaveStatus } from './AutosaveStatus';\n\nexport interface SettingsPageLayoutProps {\n /** Page title */\n title: string;\n /** Page description */\n description: string;\n /** Categories to display on this page */\n categories: string[];\n /** Additional CSS class */\n className?: string;\n}\n\n/**\n * Shared layout component for settings pages.\n * Handles loading and displaying settings for specified categories.\n * Changes are automatically saved after a brief debounce.\n */\nexport function SettingsPageLayout({\n title,\n description,\n categories,\n className = '',\n}: SettingsPageLayoutProps) {\n const {\n settings,\n edits,\n isLoading,\n autosaveStatus,\n autosaveError,\n error,\n fetchSettings,\n handleChange,\n } = useSettingsAutosave();\n\n useEffect(() => {\n fetchSettings();\n }, [fetchSettings]);\n\n // Filter settings to only show relevant categories\n const relevantCategories = categories.filter((cat) => settings[cat]?.length > 0);\n\n if (isLoading && Object.keys(settings).length === 0) {\n return (\n <div className={`cedros-system-settings cedros-system-settings-loading ${className}`}>\n <LoadingSpinner />\n <span>Loading settings...</span>\n </div>\n );\n }\n\n if (error) {\n return (\n <div className={`cedros-system-settings ${className}`}>\n <ErrorMessage error={error.message} />\n </div>\n );\n }\n\n return (\n <div className={`cedros-system-settings ${className}`}>\n <div className=\"cedros-settings-page-header\">\n <div className=\"cedros-settings-page-header-content\">\n <h2 className=\"cedros-settings-page-title\">{title}</h2>\n <p className=\"cedros-settings-page-description\">{description}</p>\n </div>\n <AutosaveStatus status={autosaveStatus} error={autosaveError} />\n </div>\n\n {relevantCategories.length === 0 ? (\n <div className=\"cedros-system-settings-empty\">\n <p>No settings found for this section.</p>\n </div>\n ) : (\n relevantCategories.map((category) => (\n <SettingsSection\n key={category}\n settings={settings[category]}\n edits={edits}\n onChange={handleChange}\n />\n ))\n )}\n </div>\n );\n}\n","/**\n * Webhook settings page - HTTP webhook configuration\n */\nimport { SettingsPageLayout } from './SettingsPageLayout';\n\nconst CATEGORIES = ['webhook'];\n\nexport interface WebhookSettingsProps {\n className?: string;\n}\n\nexport function WebhookSettings({ className }: WebhookSettingsProps) {\n return (\n <SettingsPageLayout\n title=\"Webhooks\"\n description=\"Configure HTTP webhook notifications for authentication events.\"\n categories={CATEGORIES}\n className={className}\n />\n );\n}\n"],"names":["SettingsPageLayout","title","description","categories","className","settings","edits","isLoading","autosaveStatus","autosaveError","error","fetchSettings","handleChange","useSettingsAutosave","useEffect","relevantCategories","cat","jsxs","jsx","LoadingSpinner","ErrorMessage","AutosaveStatus","category","SettingsSection","CATEGORIES","WebhookSettings"],"mappings":";;;;;AA0BO,SAASA,EAAmB;AAAA,EACjC,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,YAAAC;AAAA,EACA,WAAAC,IAAY;AACd,GAA4B;AAC1B,QAAM;AAAA,IACJ,UAAAC;AAAA,IACA,OAAAC;AAAA,IACA,WAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,OAAAC;AAAA,IACA,eAAAC;AAAA,IACA,cAAAC;AAAA,EAAA,IACEC,EAAA;AAEJ,EAAAC,EAAU,MAAM;AACd,IAAAH,EAAA;AAAA,EACF,GAAG,CAACA,CAAa,CAAC;AAGlB,QAAMI,IAAqBZ,EAAW,OAAO,CAACa,MAAQX,EAASW,CAAG,GAAG,SAAS,CAAC;AAE/E,SAAIT,KAAa,OAAO,KAAKF,CAAQ,EAAE,WAAW,IAE9C,gBAAAY,EAAC,OAAA,EAAI,WAAW,yDAAyDb,CAAS,IAChF,UAAA;AAAA,IAAA,gBAAAc,EAACC,GAAA,EAAe;AAAA,IAChB,gBAAAD,EAAC,UAAK,UAAA,sBAAA,CAAmB;AAAA,EAAA,GAC3B,IAIAR,IAEA,gBAAAQ,EAAC,OAAA,EAAI,WAAW,0BAA0Bd,CAAS,IACjD,UAAA,gBAAAc,EAACE,GAAA,EAAa,OAAOV,EAAM,QAAA,CAAS,GACtC,IAKF,gBAAAO,EAAC,OAAA,EAAI,WAAW,0BAA0Bb,CAAS,IACjD,UAAA;AAAA,IAAA,gBAAAa,EAAC,OAAA,EAAI,WAAU,+BACb,UAAA;AAAA,MAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,uCACb,UAAA;AAAA,QAAA,gBAAAC,EAAC,MAAA,EAAG,WAAU,8BAA8B,UAAAjB,GAAM;AAAA,QAClD,gBAAAiB,EAAC,KAAA,EAAE,WAAU,oCAAoC,UAAAhB,EAAA,CAAY;AAAA,MAAA,GAC/D;AAAA,MACA,gBAAAgB,EAACG,GAAA,EAAe,QAAQb,GAAgB,OAAOC,EAAA,CAAe;AAAA,IAAA,GAChE;AAAA,IAECM,EAAmB,WAAW,IAC7B,gBAAAG,EAAC,SAAI,WAAU,gCACb,UAAA,gBAAAA,EAAC,KAAA,EAAE,iDAAmC,EAAA,CACxC,IAEAH,EAAmB,IAAI,CAACO,MACtB,gBAAAJ;AAAA,MAACK;AAAA,MAAA;AAAA,QAEC,UAAUlB,EAASiB,CAAQ;AAAA,QAC3B,OAAAhB;AAAA,QACA,UAAUM;AAAA,MAAA;AAAA,MAHLU;AAAA,IAAA,CAKR;AAAA,EAAA,GAEL;AAEJ;ACxFA,MAAME,IAAa,CAAC,SAAS;AAMtB,SAASC,EAAgB,EAAE,WAAArB,KAAmC;AACnE,SACE,gBAAAc;AAAA,IAAClB;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,aAAY;AAAA,MACZ,YAAYwB;AAAA,MACZ,WAAApB;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime");require("react");const t=require("./WebhookSettings-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime");require("react");const t=require("./WebhookSettings-2p9abGm5.cjs");function o(){return e.jsx("div",{className:"cedros-dashboard__section",children:e.jsx(t.WebhookSettings,{})})}exports.default=o;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebhookSettings-
|
|
1
|
+
{"version":3,"file":"WebhookSettings-CdFM7_V-.cjs","sources":["../src/admin/sections/WebhookSettings.tsx"],"sourcesContent":["/**\n * Webhook Settings Section - Plugin wrapper\n */\n\nimport React from 'react';\nimport { WebhookSettings as Settings } from '../../components/admin/settings';\n\nexport default function WebhookSettings(): React.JSX.Element {\n return (\n <div className=\"cedros-dashboard__section\">\n <Settings />\n </div>\n );\n}\n"],"names":["WebhookSettings","jsx","Settings"],"mappings":"wLAOA,SAAwBA,GAAqC,CAC3D,aACG,MAAA,CAAI,UAAU,4BACb,SAAAC,MAACC,EAAAA,kBAAS,EACZ,CAEJ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as o } from "react/jsx-runtime";
|
|
2
2
|
import "react";
|
|
3
|
-
import { W as t } from "./WebhookSettings-
|
|
3
|
+
import { W as t } from "./WebhookSettings-CXMBju7N.js";
|
|
4
4
|
function i() {
|
|
5
5
|
return /* @__PURE__ */ o("div", { className: "cedros-dashboard__section", children: /* @__PURE__ */ o(t, {}) });
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebhookSettings-
|
|
1
|
+
{"version":3,"file":"WebhookSettings-D0F8ESlB.js","sources":["../src/admin/sections/WebhookSettings.tsx"],"sourcesContent":["/**\n * Webhook Settings Section - Plugin wrapper\n */\n\nimport React from 'react';\nimport { WebhookSettings as Settings } from '../../components/admin/settings';\n\nexport default function WebhookSettings(): React.JSX.Element {\n return (\n <div className=\"cedros-dashboard__section\">\n <Settings />\n </div>\n );\n}\n"],"names":["WebhookSettings","jsx","Settings"],"mappings":";;;AAOA,SAAwBA,IAAqC;AAC3D,2BACG,OAAA,EAAI,WAAU,6BACb,UAAA,gBAAAC,EAACC,KAAS,GACZ;AAEJ;"}
|
package/dist/admin-only.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./plugin-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./plugin-PU2vAozn.cjs");exports.AdminShell=e.AdminShell;exports.CEDROS_LOGIN_SECTION_IDS=e.CEDROS_LOGIN_SECTION_IDS;exports.Icons=e.Icons;exports.cedrosLoginPlugin=e.cedrosLoginPlugin;exports.loginPlugin=e.cedrosLoginPlugin;exports.useAdminShell=e.useAdminShell;
|
package/dist/admin-only.js
CHANGED
package/dist/email-only.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./useAuth-X6Ds6WW4.cjs"),o=require("./useCedrosLogin-C9MrcZvh.cjs"),e=require("./EmailRegisterForm-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./useAuth-X6Ds6WW4.cjs"),o=require("./useCedrosLogin-C9MrcZvh.cjs"),e=require("./EmailRegisterForm-B1DB-bqe.cjs"),i=require("./LoadingSpinner-d6sSxgQN.cjs"),s=require("./ErrorMessage-CHbYbVi2.cjs"),n=require("./validation-BuGQrA-K.cjs");exports.CedrosLoginProvider=r.CedrosLoginProvider;exports.useAuth=r.useAuth;exports.useCedrosLogin=o.useCedrosLogin;exports.EmailLoginForm=e.EmailLoginForm;exports.EmailRegisterForm=e.EmailRegisterForm;exports.PasswordInput=e.PasswordInput;exports.useEmailAuth=e.useEmailAuth;exports.LoadingSpinner=i.LoadingSpinner;exports.ErrorMessage=s.ErrorMessage;exports.validatePassword=n.validatePassword;
|
package/dist/email-only.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { C as s, u as a } from "./useAuth-m5Hf89v8.js";
|
|
2
2
|
import { u as i } from "./useCedrosLogin-_94MmGGq.js";
|
|
3
|
-
import { E as t, a as u, P as p, u as d } from "./EmailRegisterForm-
|
|
3
|
+
import { E as t, a as u, P as p, u as d } from "./EmailRegisterForm-BAX_uBIt.js";
|
|
4
4
|
import { L as f } from "./LoadingSpinner-6vml-zwr.js";
|
|
5
5
|
import { E as x } from "./ErrorMessage-CcEK0pYO.js";
|
|
6
6
|
import { v as L } from "./validation-B8kMV3BL.js";
|