@cedros/login-react 0.0.6 → 0.0.8
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-W4EnVUrv.js → AuthenticationSettings-EaQzrn7-.js} +1 -1
- package/dist/{AuthenticationSettings-W4EnVUrv.js.map → AuthenticationSettings-EaQzrn7-.js.map} +1 -1
- package/dist/{AuthenticationSettings-CDK8XCY-.cjs → AuthenticationSettings-UOHce4G0.cjs} +1 -1
- package/dist/{AuthenticationSettings-CDK8XCY-.cjs.map → AuthenticationSettings-UOHce4G0.cjs.map} +1 -1
- package/dist/{CreditSystemSettings-k5bOgfpj.cjs → CreditSystemSettings-BClUVM4R.cjs} +1 -1
- package/dist/{CreditSystemSettings-k5bOgfpj.cjs.map → CreditSystemSettings-BClUVM4R.cjs.map} +1 -1
- package/dist/{CreditSystemSettings-BFBTeyl7.js → CreditSystemSettings-BcoLajmO.js} +1 -1
- package/dist/{CreditSystemSettings-BFBTeyl7.js.map → CreditSystemSettings-BcoLajmO.js.map} +1 -1
- package/dist/{DepositsSection-zsNaKqIa.js → DepositsSection-C6DUs6iI.js} +1 -1
- package/dist/{DepositsSection-zsNaKqIa.js.map → DepositsSection-C6DUs6iI.js.map} +1 -1
- package/dist/{DepositsSection-9oW81ocN.cjs → DepositsSection-DPr60Pty.cjs} +1 -1
- package/dist/{DepositsSection-9oW81ocN.cjs.map → DepositsSection-DPr60Pty.cjs.map} +1 -1
- package/dist/{EmailRegisterForm-BChCiZ5B.js → EmailRegisterForm-C0PStlj5.js} +2 -2
- package/dist/{EmailRegisterForm-BChCiZ5B.js.map → EmailRegisterForm-C0PStlj5.js.map} +1 -1
- package/dist/{EmailRegisterForm-B-ys4E3C.cjs → EmailRegisterForm-DaPLGws2.cjs} +1 -1
- package/dist/{EmailRegisterForm-B-ys4E3C.cjs.map → EmailRegisterForm-DaPLGws2.cjs.map} +1 -1
- package/dist/{EmailSettings-CJ1jwoIw.cjs → EmailSettings-BM7tGO1t.cjs} +1 -1
- package/dist/{EmailSettings-CJ1jwoIw.cjs.map → EmailSettings-BM7tGO1t.cjs.map} +1 -1
- package/dist/{EmailSettings-Cs3cKqWy.js → EmailSettings-DFVkODH_.js} +1 -1
- package/dist/{EmailSettings-Cs3cKqWy.js.map → EmailSettings-DFVkODH_.js.map} +1 -1
- package/dist/{EmbeddedWalletSettings-BKOvB3Qe.js → EmbeddedWalletSettings-BnHEtzpS.js} +1 -1
- package/dist/{EmbeddedWalletSettings-BKOvB3Qe.js.map → EmbeddedWalletSettings-BnHEtzpS.js.map} +1 -1
- package/dist/{EmbeddedWalletSettings-5WhI_6cL.cjs → EmbeddedWalletSettings-DGJST5MD.cjs} +1 -1
- package/dist/{EmbeddedWalletSettings-5WhI_6cL.cjs.map → EmbeddedWalletSettings-DGJST5MD.cjs.map} +1 -1
- package/dist/ErrorMessage-BXHiYibN.cjs +1 -0
- package/dist/{ErrorMessage-CntMyn93.cjs.map → ErrorMessage-BXHiYibN.cjs.map} +1 -1
- package/dist/{ErrorMessage-C8vKB0JG.js → ErrorMessage-DU2VBb85.js} +3 -2
- package/dist/{ErrorMessage-C8vKB0JG.js.map → ErrorMessage-DU2VBb85.js.map} +1 -1
- package/dist/{GoogleLoginButton-Ceo2sYvX.js → GoogleLoginButton-BzHr545L.js} +1 -1
- package/dist/{GoogleLoginButton-Ceo2sYvX.js.map → GoogleLoginButton-BzHr545L.js.map} +1 -1
- package/dist/{GoogleLoginButton-CJNJ-THo.cjs → GoogleLoginButton-DoAdOqb3.cjs} +1 -1
- package/dist/{GoogleLoginButton-CJNJ-THo.cjs.map → GoogleLoginButton-DoAdOqb3.cjs.map} +1 -1
- package/dist/{ServerSettings-UCN7E8sg.cjs → ServerSettings-B2YxkgLu.cjs} +1 -1
- package/dist/{ServerSettings-UCN7E8sg.cjs.map → ServerSettings-B2YxkgLu.cjs.map} +1 -1
- package/dist/{ServerSettings-BESj4UDB.js → ServerSettings-jIwIl7mV.js} +1 -1
- package/dist/{ServerSettings-BESj4UDB.js.map → ServerSettings-jIwIl7mV.js.map} +1 -1
- package/dist/{SolanaLoginButton-CqVOcPa7.js → SolanaLoginButton-C-CfZxAZ.js} +1 -1
- package/dist/{SolanaLoginButton-CqVOcPa7.js.map → SolanaLoginButton-C-CfZxAZ.js.map} +1 -1
- package/dist/{SolanaLoginButton-BlSgPW50.cjs → SolanaLoginButton-CPzms0kf.cjs} +1 -1
- package/dist/{SolanaLoginButton-BlSgPW50.cjs.map → SolanaLoginButton-CPzms0kf.cjs.map} +1 -1
- package/dist/TeamSection-CnCzNEe9.cjs +1 -0
- package/dist/TeamSection-CnCzNEe9.cjs.map +1 -0
- package/dist/TeamSection-D_9-sbM5.js +150 -0
- package/dist/TeamSection-D_9-sbM5.js.map +1 -0
- package/dist/{UsersSection-PQVpL6Xo.js → UsersSection--yCs-uC9.js} +1 -1
- package/dist/{UsersSection-PQVpL6Xo.js.map → UsersSection--yCs-uC9.js.map} +1 -1
- package/dist/{UsersSection-BAnirT1_.cjs → UsersSection-nwTQCl2X.cjs} +1 -1
- package/dist/{UsersSection-BAnirT1_.cjs.map → UsersSection-nwTQCl2X.cjs.map} +1 -1
- package/dist/{WebhookSettings-BrrSXA0B.cjs → WebhookSettings-CDLNe806.cjs} +1 -1
- package/dist/{WebhookSettings-BrrSXA0B.cjs.map → WebhookSettings-CDLNe806.cjs.map} +1 -1
- package/dist/{WebhookSettings-eM6U9nOU.js → WebhookSettings-C_3R0bqk.js} +1 -1
- package/dist/{WebhookSettings-eM6U9nOU.js.map → WebhookSettings-C_3R0bqk.js.map} +1 -1
- package/dist/{WithdrawalsSection-BGmLLoUa.js → WithdrawalsSection-5I0Ax4H0.js} +1 -1
- package/dist/{WithdrawalsSection-BGmLLoUa.js.map → WithdrawalsSection-5I0Ax4H0.js.map} +1 -1
- package/dist/{WithdrawalsSection-C0fFwIbu.cjs → WithdrawalsSection-wDptaqpp.cjs} +1 -1
- package/dist/{WithdrawalsSection-C0fFwIbu.cjs.map → WithdrawalsSection-wDptaqpp.cjs.map} +1 -1
- package/dist/components/deposit/admin/featureDisabled.d.ts +7 -2
- package/dist/email-only.cjs +1 -1
- package/dist/email-only.js +2 -2
- package/dist/google-only.cjs +1 -1
- package/dist/google-only.js +2 -2
- package/dist/{index-D1Ex6YTc.js → index-BO6O-6S_.js} +2464 -2461
- package/dist/index-BO6O-6S_.js.map +1 -0
- package/dist/index-RSdLR9t4.cjs +2061 -0
- package/dist/index-RSdLR9t4.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +9 -9
- package/dist/{silentWalletEnroll-CQK5i65l.js → silentWalletEnroll-C3JRAD9_.js} +2 -2
- package/dist/{silentWalletEnroll-CQK5i65l.js.map → silentWalletEnroll-C3JRAD9_.js.map} +1 -1
- package/dist/{silentWalletEnroll-DBfS2sLe.cjs → silentWalletEnroll-DRYQAQfg.cjs} +1 -1
- package/dist/{silentWalletEnroll-DBfS2sLe.cjs.map → silentWalletEnroll-DRYQAQfg.cjs.map} +1 -1
- package/dist/solana-only.cjs +1 -1
- package/dist/solana-only.js +2 -2
- package/dist/{solanaKeypair-BD7Kq1Mw.js → solanaKeypair-BlXol3nh.js} +1 -1
- package/dist/{solanaKeypair-BD7Kq1Mw.js.map → solanaKeypair-BlXol3nh.js.map} +1 -1
- package/dist/{solanaKeypair-CBQxm2hw.cjs → solanaKeypair-C-lIR1JY.cjs} +1 -1
- package/dist/{solanaKeypair-CBQxm2hw.cjs.map → solanaKeypair-C-lIR1JY.cjs.map} +1 -1
- package/dist/types/setup.d.ts +2 -0
- package/package.json +1 -1
- package/dist/ErrorMessage-CntMyn93.cjs +0 -1
- package/dist/TeamSection-Dt8tPOYm.js +0 -132
- package/dist/TeamSection-Dt8tPOYm.js.map +0 -1
- package/dist/TeamSection-msFD7Wb5.cjs +0 -1
- package/dist/TeamSection-msFD7Wb5.cjs.map +0 -1
- package/dist/index-D1Ex6YTc.js.map +0 -1
- package/dist/index-tTVUl19s.cjs +0 -2061
- package/dist/index-tTVUl19s.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),a=require("react"),n=require("./index-RSdLR9t4.cjs");function T({pluginContext:f}){const[s,o]=a.useState("members"),{activeOrg:r,orgs:I,hasPermission:i,role:t,isLoading:C,error:v,fetchOrgs:u}=n.useOrgs();a.useEffect(()=>{I.length===0&&u()},[]);const{members:d,isLoading:L,error:M,fetchMembers:h,updateMemberRole:y,removeMember:R}=n.useMembers(r?.id??""),{invites:g,isLoading:x,error:j,fetchInvites:_,createInvite:S,cancelInvite:P,resendInvite:w}=n.useInvites(r?.id??"");a.useEffect(()=>{r?.id&&(h(),_())},[r?.id,h,_]);const c=a.useMemo(()=>d.reduce((b,p)=>(b[p.role]=(b[p.role]??0)+1,b),{}),[d]);if(C&&!r)return e.jsx("div",{className:"cedros-dashboard__section",children:e.jsxs("div",{className:"cedros-dashboard__empty",children:[e.jsx("span",{className:"cedros-admin-loading-indicator"}),e.jsx("span",{className:"cedros-admin-loading-text",children:"Loading organization..."})]})});if(v&&!r)return e.jsx("div",{className:"cedros-dashboard__section",children:e.jsxs("div",{className:"cedros-dashboard__empty",children:[e.jsx("p",{className:"cedros-admin-error",children:v.message}),e.jsx("button",{type:"button",className:"cedros-button cedros-button-outline",onClick:u,children:"Retry"})]})});if(!r)return e.jsx("div",{className:"cedros-dashboard__section",children:e.jsx("div",{className:"cedros-dashboard__empty",children:"No organizations found."})});const l=i("invite:create"),N=i("invite:cancel"),m=g.length,E=c.owner??0,O=c.admin??0,k=c.member??0;return e.jsxs("div",{className:"cedros-dashboard__team",children:[e.jsx(n.StatsBar,{stats:[{label:"Owners",value:E},{label:"Admins",value:O},{label:"Members",value:k},{label:"Pending Invites",value:m}]}),e.jsxs("div",{className:"cedros-admin-tabs cedros-admin-tabs--line",children:[e.jsx("button",{type:"button",className:`cedros-admin-tab ${s==="members"?"cedros-admin-tab-active":""}`,onClick:()=>o("members"),"aria-selected":s==="members",role:"tab",children:"Members"}),e.jsxs("button",{type:"button",className:`cedros-admin-tab ${s==="invites"?"cedros-admin-tab-active":""}`,onClick:()=>o("invites"),"aria-selected":s==="invites",role:"tab",children:["Pending Invites",m>0&&` (${m})`]}),t==="owner"&&e.jsx("button",{type:"button",className:`cedros-admin-tab ${s==="permissions"?"cedros-admin-tab-active":""}`,onClick:()=>o("permissions"),"aria-selected":s==="permissions",role:"tab",children:"Permissions"})]}),e.jsxs("div",{className:"cedros-admin-tab-content",role:"tabpanel",children:[s==="members"&&e.jsx(n.MemberList,{members:d,currentUserId:f.userId,isLoading:L,error:M?.message,canManage:i("member:remove"),canChangeRoles:i("member:role_change"),onUpdateRole:y,onRemove:R}),s==="invites"&&e.jsxs("div",{className:"cedros-dashboard__invites",children:[l&&e.jsxs("div",{className:"cedros-dashboard__section",children:[e.jsx("div",{className:"cedros-dashboard__section-header",children:e.jsx("h3",{className:"cedros-dashboard__section-title",children:"Send Invitation"})}),e.jsx(n.InviteForm,{onSubmit:S,isLoading:x,error:j?.message})]}),e.jsx("div",{className:"cedros-dashboard__section",children:e.jsx(n.InviteList,{invites:g,isLoading:x,error:j?.message,canManage:N||l,onCancel:N?P:void 0,onResend:l?w:void 0})})]}),s==="permissions"&&t==="owner"&&e.jsx(n.PermissionsSection,{userRole:t})]})]})}exports.default=T;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TeamSection-CnCzNEe9.cjs","sources":["../src/admin/sections/TeamSection.tsx"],"sourcesContent":["/**\n * Team Section - Plugin wrapper\n *\n * Combined team member management and invites for organizations.\n */\n\nimport React, { useEffect, useMemo, useState } from 'react';\nimport type { AdminSectionProps } from '../types';\nimport { MemberList } from '../../components/members/MemberList';\nimport { InviteForm } from '../../components/invites/InviteForm';\nimport { InviteList } from '../../components/invites/InviteList';\nimport { StatsBar } from '../../components/admin/StatsBar';\nimport { PermissionsSection } from '../../components/admin/PermissionsSection';\nimport { useOrgs } from '../../hooks/useOrgs';\nimport { useMembers } from '../../hooks/useMembers';\nimport { useInvites } from '../../hooks/useInvites';\n\ntype TeamTab = 'members' | 'invites' | 'permissions';\n\nexport default function TeamSection({ pluginContext }: AdminSectionProps): React.JSX.Element {\n const [activeTab, setActiveTab] = useState<TeamTab>('members');\n const { activeOrg, orgs, hasPermission, role, isLoading: orgsLoading, error: orgsError, fetchOrgs } = useOrgs();\n\n // Auto-fetch orgs on mount so activeOrg gets auto-selected\n useEffect(() => {\n if (orgs.length === 0) {\n fetchOrgs();\n }\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n const {\n members,\n isLoading: membersLoading,\n error: membersError,\n fetchMembers,\n updateMemberRole,\n removeMember,\n } = useMembers(activeOrg?.id ?? '');\n const {\n invites,\n isLoading: invitesLoading,\n error: invitesError,\n fetchInvites,\n createInvite,\n cancelInvite,\n resendInvite,\n } = useInvites(activeOrg?.id ?? '');\n\n useEffect(() => {\n if (activeOrg?.id) {\n fetchMembers();\n fetchInvites();\n }\n }, [activeOrg?.id, fetchMembers, fetchInvites]);\n\n // P-01: Compute role counts BEFORE any early return to follow React Hooks rules\n const roleCounts = useMemo(\n () =>\n members.reduce(\n (acc, member) => {\n acc[member.role] = (acc[member.role] ?? 0) + 1;\n return acc;\n },\n {} as Record<string, number>\n ),\n [members]\n );\n\n if (orgsLoading && !activeOrg) {\n return (\n <div className=\"cedros-dashboard__section\">\n <div className=\"cedros-dashboard__empty\">\n <span className=\"cedros-admin-loading-indicator\" />\n <span className=\"cedros-admin-loading-text\">Loading organization...</span>\n </div>\n </div>\n );\n }\n\n if (orgsError && !activeOrg) {\n return (\n <div className=\"cedros-dashboard__section\">\n <div className=\"cedros-dashboard__empty\">\n <p className=\"cedros-admin-error\">{orgsError.message}</p>\n <button\n type=\"button\"\n className=\"cedros-button cedros-button-outline\"\n onClick={fetchOrgs}\n >\n Retry\n </button>\n </div>\n </div>\n );\n }\n\n if (!activeOrg) {\n return (\n <div className=\"cedros-dashboard__section\">\n <div className=\"cedros-dashboard__empty\">\n No organizations found.\n </div>\n </div>\n );\n }\n\n const canInvite = hasPermission('invite:create');\n const canCancel = hasPermission('invite:cancel');\n const pendingCount = invites.length;\n const ownerCount = roleCounts.owner ?? 0;\n const adminCount = roleCounts.admin ?? 0;\n const memberCount = roleCounts.member ?? 0;\n\n return (\n <div className=\"cedros-dashboard__team\">\n <StatsBar\n stats={[\n { label: 'Owners', value: ownerCount },\n { label: 'Admins', value: adminCount },\n { label: 'Members', value: memberCount },\n { label: 'Pending Invites', value: pendingCount },\n ]}\n />\n {/* Tabs */}\n <div className=\"cedros-admin-tabs cedros-admin-tabs--line\">\n <button\n type=\"button\"\n className={`cedros-admin-tab ${activeTab === 'members' ? 'cedros-admin-tab-active' : ''}`}\n onClick={() => setActiveTab('members')}\n aria-selected={activeTab === 'members'}\n role=\"tab\"\n >\n Members\n </button>\n <button\n type=\"button\"\n className={`cedros-admin-tab ${activeTab === 'invites' ? 'cedros-admin-tab-active' : ''}`}\n onClick={() => setActiveTab('invites')}\n aria-selected={activeTab === 'invites'}\n role=\"tab\"\n >\n Pending Invites{pendingCount > 0 && ` (${pendingCount})`}\n </button>\n {role === 'owner' && (\n <button\n type=\"button\"\n className={`cedros-admin-tab ${activeTab === 'permissions' ? 'cedros-admin-tab-active' : ''}`}\n onClick={() => setActiveTab('permissions')}\n aria-selected={activeTab === 'permissions'}\n role=\"tab\"\n >\n Permissions\n </button>\n )}\n </div>\n\n {/* Tab content */}\n <div className=\"cedros-admin-tab-content\" role=\"tabpanel\">\n {activeTab === 'members' && (\n <MemberList\n members={members}\n currentUserId={pluginContext.userId}\n isLoading={membersLoading}\n error={membersError?.message}\n canManage={hasPermission('member:remove')}\n canChangeRoles={hasPermission('member:role_change')}\n onUpdateRole={updateMemberRole}\n onRemove={removeMember}\n />\n )}\n\n {activeTab === 'invites' && (\n <div className=\"cedros-dashboard__invites\">\n {canInvite && (\n <div className=\"cedros-dashboard__section\">\n <div className=\"cedros-dashboard__section-header\">\n <h3 className=\"cedros-dashboard__section-title\">Send Invitation</h3>\n </div>\n <InviteForm\n onSubmit={createInvite}\n isLoading={invitesLoading}\n error={invitesError?.message}\n />\n </div>\n )}\n\n <div className=\"cedros-dashboard__section\">\n <InviteList\n invites={invites}\n isLoading={invitesLoading}\n error={invitesError?.message}\n canManage={canCancel || canInvite}\n onCancel={canCancel ? cancelInvite : undefined}\n onResend={canInvite ? resendInvite : undefined}\n />\n </div>\n </div>\n )}\n\n {activeTab === 'permissions' && role === 'owner' && <PermissionsSection userRole={role} />}\n </div>\n </div>\n );\n}\n"],"names":["TeamSection","pluginContext","activeTab","setActiveTab","useState","activeOrg","orgs","hasPermission","role","orgsLoading","orgsError","fetchOrgs","useOrgs","useEffect","members","membersLoading","membersError","fetchMembers","updateMemberRole","removeMember","useMembers","invites","invitesLoading","invitesError","fetchInvites","createInvite","cancelInvite","resendInvite","useInvites","roleCounts","useMemo","acc","member","jsxs","jsx","canInvite","canCancel","pendingCount","ownerCount","adminCount","memberCount","StatsBar","MemberList","InviteForm","InviteList","PermissionsSection"],"mappings":"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"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { jsx as e, jsxs as a } from "react/jsx-runtime";
|
|
2
|
+
import { useState as T, useEffect as I, useMemo as j } from "react";
|
|
3
|
+
import { c as z, d as A, e as U, S as B, M as F, I as q, f as D, P as G } from "./index-BO6O-6S_.js";
|
|
4
|
+
function Q({ pluginContext: C }) {
|
|
5
|
+
const [s, i] = T("members"), { activeOrg: r, orgs: L, hasPermission: n, role: o, isLoading: M, error: b, fetchOrgs: v } = z();
|
|
6
|
+
I(() => {
|
|
7
|
+
L.length === 0 && v();
|
|
8
|
+
}, []);
|
|
9
|
+
const {
|
|
10
|
+
members: t,
|
|
11
|
+
isLoading: y,
|
|
12
|
+
error: R,
|
|
13
|
+
fetchMembers: h,
|
|
14
|
+
updateMemberRole: S,
|
|
15
|
+
removeMember: P
|
|
16
|
+
} = A(r?.id ?? ""), {
|
|
17
|
+
invites: u,
|
|
18
|
+
isLoading: g,
|
|
19
|
+
error: _,
|
|
20
|
+
fetchInvites: p,
|
|
21
|
+
createInvite: w,
|
|
22
|
+
cancelInvite: k,
|
|
23
|
+
resendInvite: x
|
|
24
|
+
} = U(r?.id ?? "");
|
|
25
|
+
I(() => {
|
|
26
|
+
r?.id && (h(), p());
|
|
27
|
+
}, [r?.id, h, p]);
|
|
28
|
+
const d = j(
|
|
29
|
+
() => t.reduce(
|
|
30
|
+
(l, f) => (l[f.role] = (l[f.role] ?? 0) + 1, l),
|
|
31
|
+
{}
|
|
32
|
+
),
|
|
33
|
+
[t]
|
|
34
|
+
);
|
|
35
|
+
if (M && !r)
|
|
36
|
+
return /* @__PURE__ */ e("div", { className: "cedros-dashboard__section", children: /* @__PURE__ */ a("div", { className: "cedros-dashboard__empty", children: [
|
|
37
|
+
/* @__PURE__ */ e("span", { className: "cedros-admin-loading-indicator" }),
|
|
38
|
+
/* @__PURE__ */ e("span", { className: "cedros-admin-loading-text", children: "Loading organization..." })
|
|
39
|
+
] }) });
|
|
40
|
+
if (b && !r)
|
|
41
|
+
return /* @__PURE__ */ e("div", { className: "cedros-dashboard__section", children: /* @__PURE__ */ a("div", { className: "cedros-dashboard__empty", children: [
|
|
42
|
+
/* @__PURE__ */ e("p", { className: "cedros-admin-error", children: b.message }),
|
|
43
|
+
/* @__PURE__ */ e(
|
|
44
|
+
"button",
|
|
45
|
+
{
|
|
46
|
+
type: "button",
|
|
47
|
+
className: "cedros-button cedros-button-outline",
|
|
48
|
+
onClick: v,
|
|
49
|
+
children: "Retry"
|
|
50
|
+
}
|
|
51
|
+
)
|
|
52
|
+
] }) });
|
|
53
|
+
if (!r)
|
|
54
|
+
return /* @__PURE__ */ e("div", { className: "cedros-dashboard__section", children: /* @__PURE__ */ e("div", { className: "cedros-dashboard__empty", children: "No organizations found." }) });
|
|
55
|
+
const c = n("invite:create"), N = n("invite:cancel"), m = u.length, E = d.owner ?? 0, O = d.admin ?? 0, $ = d.member ?? 0;
|
|
56
|
+
return /* @__PURE__ */ a("div", { className: "cedros-dashboard__team", children: [
|
|
57
|
+
/* @__PURE__ */ e(
|
|
58
|
+
B,
|
|
59
|
+
{
|
|
60
|
+
stats: [
|
|
61
|
+
{ label: "Owners", value: E },
|
|
62
|
+
{ label: "Admins", value: O },
|
|
63
|
+
{ label: "Members", value: $ },
|
|
64
|
+
{ label: "Pending Invites", value: m }
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
),
|
|
68
|
+
/* @__PURE__ */ a("div", { className: "cedros-admin-tabs cedros-admin-tabs--line", children: [
|
|
69
|
+
/* @__PURE__ */ e(
|
|
70
|
+
"button",
|
|
71
|
+
{
|
|
72
|
+
type: "button",
|
|
73
|
+
className: `cedros-admin-tab ${s === "members" ? "cedros-admin-tab-active" : ""}`,
|
|
74
|
+
onClick: () => i("members"),
|
|
75
|
+
"aria-selected": s === "members",
|
|
76
|
+
role: "tab",
|
|
77
|
+
children: "Members"
|
|
78
|
+
}
|
|
79
|
+
),
|
|
80
|
+
/* @__PURE__ */ a(
|
|
81
|
+
"button",
|
|
82
|
+
{
|
|
83
|
+
type: "button",
|
|
84
|
+
className: `cedros-admin-tab ${s === "invites" ? "cedros-admin-tab-active" : ""}`,
|
|
85
|
+
onClick: () => i("invites"),
|
|
86
|
+
"aria-selected": s === "invites",
|
|
87
|
+
role: "tab",
|
|
88
|
+
children: [
|
|
89
|
+
"Pending Invites",
|
|
90
|
+
m > 0 && ` (${m})`
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
),
|
|
94
|
+
o === "owner" && /* @__PURE__ */ e(
|
|
95
|
+
"button",
|
|
96
|
+
{
|
|
97
|
+
type: "button",
|
|
98
|
+
className: `cedros-admin-tab ${s === "permissions" ? "cedros-admin-tab-active" : ""}`,
|
|
99
|
+
onClick: () => i("permissions"),
|
|
100
|
+
"aria-selected": s === "permissions",
|
|
101
|
+
role: "tab",
|
|
102
|
+
children: "Permissions"
|
|
103
|
+
}
|
|
104
|
+
)
|
|
105
|
+
] }),
|
|
106
|
+
/* @__PURE__ */ a("div", { className: "cedros-admin-tab-content", role: "tabpanel", children: [
|
|
107
|
+
s === "members" && /* @__PURE__ */ e(
|
|
108
|
+
F,
|
|
109
|
+
{
|
|
110
|
+
members: t,
|
|
111
|
+
currentUserId: C.userId,
|
|
112
|
+
isLoading: y,
|
|
113
|
+
error: R?.message,
|
|
114
|
+
canManage: n("member:remove"),
|
|
115
|
+
canChangeRoles: n("member:role_change"),
|
|
116
|
+
onUpdateRole: S,
|
|
117
|
+
onRemove: P
|
|
118
|
+
}
|
|
119
|
+
),
|
|
120
|
+
s === "invites" && /* @__PURE__ */ a("div", { className: "cedros-dashboard__invites", children: [
|
|
121
|
+
c && /* @__PURE__ */ a("div", { className: "cedros-dashboard__section", children: [
|
|
122
|
+
/* @__PURE__ */ e("div", { className: "cedros-dashboard__section-header", children: /* @__PURE__ */ e("h3", { className: "cedros-dashboard__section-title", children: "Send Invitation" }) }),
|
|
123
|
+
/* @__PURE__ */ e(
|
|
124
|
+
q,
|
|
125
|
+
{
|
|
126
|
+
onSubmit: w,
|
|
127
|
+
isLoading: g,
|
|
128
|
+
error: _?.message
|
|
129
|
+
}
|
|
130
|
+
)
|
|
131
|
+
] }),
|
|
132
|
+
/* @__PURE__ */ e("div", { className: "cedros-dashboard__section", children: /* @__PURE__ */ e(
|
|
133
|
+
D,
|
|
134
|
+
{
|
|
135
|
+
invites: u,
|
|
136
|
+
isLoading: g,
|
|
137
|
+
error: _?.message,
|
|
138
|
+
canManage: N || c,
|
|
139
|
+
onCancel: N ? k : void 0,
|
|
140
|
+
onResend: c ? x : void 0
|
|
141
|
+
}
|
|
142
|
+
) })
|
|
143
|
+
] }),
|
|
144
|
+
s === "permissions" && o === "owner" && /* @__PURE__ */ e(G, { userRole: o })
|
|
145
|
+
] })
|
|
146
|
+
] });
|
|
147
|
+
}
|
|
148
|
+
export {
|
|
149
|
+
Q as default
|
|
150
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TeamSection-D_9-sbM5.js","sources":["../src/admin/sections/TeamSection.tsx"],"sourcesContent":["/**\n * Team Section - Plugin wrapper\n *\n * Combined team member management and invites for organizations.\n */\n\nimport React, { useEffect, useMemo, useState } from 'react';\nimport type { AdminSectionProps } from '../types';\nimport { MemberList } from '../../components/members/MemberList';\nimport { InviteForm } from '../../components/invites/InviteForm';\nimport { InviteList } from '../../components/invites/InviteList';\nimport { StatsBar } from '../../components/admin/StatsBar';\nimport { PermissionsSection } from '../../components/admin/PermissionsSection';\nimport { useOrgs } from '../../hooks/useOrgs';\nimport { useMembers } from '../../hooks/useMembers';\nimport { useInvites } from '../../hooks/useInvites';\n\ntype TeamTab = 'members' | 'invites' | 'permissions';\n\nexport default function TeamSection({ pluginContext }: AdminSectionProps): React.JSX.Element {\n const [activeTab, setActiveTab] = useState<TeamTab>('members');\n const { activeOrg, orgs, hasPermission, role, isLoading: orgsLoading, error: orgsError, fetchOrgs } = useOrgs();\n\n // Auto-fetch orgs on mount so activeOrg gets auto-selected\n useEffect(() => {\n if (orgs.length === 0) {\n fetchOrgs();\n }\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n const {\n members,\n isLoading: membersLoading,\n error: membersError,\n fetchMembers,\n updateMemberRole,\n removeMember,\n } = useMembers(activeOrg?.id ?? '');\n const {\n invites,\n isLoading: invitesLoading,\n error: invitesError,\n fetchInvites,\n createInvite,\n cancelInvite,\n resendInvite,\n } = useInvites(activeOrg?.id ?? '');\n\n useEffect(() => {\n if (activeOrg?.id) {\n fetchMembers();\n fetchInvites();\n }\n }, [activeOrg?.id, fetchMembers, fetchInvites]);\n\n // P-01: Compute role counts BEFORE any early return to follow React Hooks rules\n const roleCounts = useMemo(\n () =>\n members.reduce(\n (acc, member) => {\n acc[member.role] = (acc[member.role] ?? 0) + 1;\n return acc;\n },\n {} as Record<string, number>\n ),\n [members]\n );\n\n if (orgsLoading && !activeOrg) {\n return (\n <div className=\"cedros-dashboard__section\">\n <div className=\"cedros-dashboard__empty\">\n <span className=\"cedros-admin-loading-indicator\" />\n <span className=\"cedros-admin-loading-text\">Loading organization...</span>\n </div>\n </div>\n );\n }\n\n if (orgsError && !activeOrg) {\n return (\n <div className=\"cedros-dashboard__section\">\n <div className=\"cedros-dashboard__empty\">\n <p className=\"cedros-admin-error\">{orgsError.message}</p>\n <button\n type=\"button\"\n className=\"cedros-button cedros-button-outline\"\n onClick={fetchOrgs}\n >\n Retry\n </button>\n </div>\n </div>\n );\n }\n\n if (!activeOrg) {\n return (\n <div className=\"cedros-dashboard__section\">\n <div className=\"cedros-dashboard__empty\">\n No organizations found.\n </div>\n </div>\n );\n }\n\n const canInvite = hasPermission('invite:create');\n const canCancel = hasPermission('invite:cancel');\n const pendingCount = invites.length;\n const ownerCount = roleCounts.owner ?? 0;\n const adminCount = roleCounts.admin ?? 0;\n const memberCount = roleCounts.member ?? 0;\n\n return (\n <div className=\"cedros-dashboard__team\">\n <StatsBar\n stats={[\n { label: 'Owners', value: ownerCount },\n { label: 'Admins', value: adminCount },\n { label: 'Members', value: memberCount },\n { label: 'Pending Invites', value: pendingCount },\n ]}\n />\n {/* Tabs */}\n <div className=\"cedros-admin-tabs cedros-admin-tabs--line\">\n <button\n type=\"button\"\n className={`cedros-admin-tab ${activeTab === 'members' ? 'cedros-admin-tab-active' : ''}`}\n onClick={() => setActiveTab('members')}\n aria-selected={activeTab === 'members'}\n role=\"tab\"\n >\n Members\n </button>\n <button\n type=\"button\"\n className={`cedros-admin-tab ${activeTab === 'invites' ? 'cedros-admin-tab-active' : ''}`}\n onClick={() => setActiveTab('invites')}\n aria-selected={activeTab === 'invites'}\n role=\"tab\"\n >\n Pending Invites{pendingCount > 0 && ` (${pendingCount})`}\n </button>\n {role === 'owner' && (\n <button\n type=\"button\"\n className={`cedros-admin-tab ${activeTab === 'permissions' ? 'cedros-admin-tab-active' : ''}`}\n onClick={() => setActiveTab('permissions')}\n aria-selected={activeTab === 'permissions'}\n role=\"tab\"\n >\n Permissions\n </button>\n )}\n </div>\n\n {/* Tab content */}\n <div className=\"cedros-admin-tab-content\" role=\"tabpanel\">\n {activeTab === 'members' && (\n <MemberList\n members={members}\n currentUserId={pluginContext.userId}\n isLoading={membersLoading}\n error={membersError?.message}\n canManage={hasPermission('member:remove')}\n canChangeRoles={hasPermission('member:role_change')}\n onUpdateRole={updateMemberRole}\n onRemove={removeMember}\n />\n )}\n\n {activeTab === 'invites' && (\n <div className=\"cedros-dashboard__invites\">\n {canInvite && (\n <div className=\"cedros-dashboard__section\">\n <div className=\"cedros-dashboard__section-header\">\n <h3 className=\"cedros-dashboard__section-title\">Send Invitation</h3>\n </div>\n <InviteForm\n onSubmit={createInvite}\n isLoading={invitesLoading}\n error={invitesError?.message}\n />\n </div>\n )}\n\n <div className=\"cedros-dashboard__section\">\n <InviteList\n invites={invites}\n isLoading={invitesLoading}\n error={invitesError?.message}\n canManage={canCancel || canInvite}\n onCancel={canCancel ? cancelInvite : undefined}\n onResend={canInvite ? resendInvite : undefined}\n />\n </div>\n </div>\n )}\n\n {activeTab === 'permissions' && role === 'owner' && <PermissionsSection userRole={role} />}\n </div>\n </div>\n );\n}\n"],"names":["TeamSection","pluginContext","activeTab","setActiveTab","useState","activeOrg","orgs","hasPermission","role","orgsLoading","orgsError","fetchOrgs","useOrgs","useEffect","members","membersLoading","membersError","fetchMembers","updateMemberRole","removeMember","useMembers","invites","invitesLoading","invitesError","fetchInvites","createInvite","cancelInvite","resendInvite","useInvites","roleCounts","useMemo","acc","member","jsxs","jsx","canInvite","canCancel","pendingCount","ownerCount","adminCount","memberCount","StatsBar","MemberList","InviteForm","InviteList","PermissionsSection"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as a, jsxs as p } from "react/jsx-runtime";
|
|
2
2
|
import { useState as l, useEffect as S, useCallback as _, useMemo as U } from "react";
|
|
3
|
-
import { A as E, S as I, a as v, u as y, b as A } from "./index-
|
|
3
|
+
import { A as E, S as I, a as v, u as y, b as A } from "./index-BO6O-6S_.js";
|
|
4
4
|
const L = ["email", "google", "apple", "solana", "webauthn", "sso"], T = {
|
|
5
5
|
email: "Email Users",
|
|
6
6
|
google: "Google Users",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UsersSection-
|
|
1
|
+
{"version":3,"file":"UsersSection--yCs-uC9.js","sources":["../src/admin/sections/UsersSection.tsx"],"sourcesContent":["/**\n * Users Section - Plugin wrapper\n *\n * Admin user management with list and detail views.\n */\n\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport type { AdminSectionProps } from '../types';\nimport { AdminUserList } from '../../components/admin/AdminUserList';\nimport { AdminUserDetail } from '../../components/admin/AdminUserDetail';\nimport { StatsBar } from '../../components/admin/StatsBar';\nimport { useAdminUsers } from '../../hooks/useAdminUsers';\nimport { useSystemSettings } from '../../hooks/useSystemSettings';\nimport type { AdminUser, AdminUserStatsResponse } from '../../types';\n\nconst METHOD_ORDER = ['email', 'google', 'apple', 'solana', 'webauthn', 'sso'] as const;\n\nconst METHOD_LABELS: Record<(typeof METHOD_ORDER)[number], string> = {\n email: 'Email Users',\n google: 'Google Users',\n apple: 'Apple Users',\n solana: 'Solana Users',\n webauthn: 'Passkey Users',\n sso: 'SSO Provider Users',\n};\n\nconst METHOD_SETTINGS: Record<(typeof METHOD_ORDER)[number], string> = {\n email: 'auth_email_enabled',\n google: 'auth_google_enabled',\n apple: 'auth_apple_enabled',\n solana: 'auth_solana_enabled',\n webauthn: 'auth_webauthn_enabled',\n sso: 'feature_sso',\n};\n\nfunction useUsersStats() {\n const { getStats } = useAdminUsers();\n const { fetchSettings, getValue } = useSystemSettings();\n const [stats, setStats] = useState<AdminUserStatsResponse | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [settingsFetched, setSettingsFetched] = useState(false);\n\n useEffect(() => {\n if (!settingsFetched) {\n fetchSettings();\n setSettingsFetched(true);\n }\n }, [fetchSettings, settingsFetched]);\n\n const isSettingEnabled = useCallback(\n (key: string): boolean => {\n const value = getValue(key);\n if (value === undefined) return false;\n return value === 'true' || value === '1';\n },\n [getValue]\n );\n\n const fetchStats = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n\n try {\n const result = await getStats();\n setStats(result);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load user stats');\n } finally {\n setIsLoading(false);\n }\n }, [getStats]);\n\n useEffect(() => {\n fetchStats();\n }, [fetchStats]);\n\n const statsItems = useMemo(() => {\n const items = [{ label: 'Total Users', value: stats?.total ?? '—' }];\n\n METHOD_ORDER.forEach((method) => {\n if (!isSettingEnabled(METHOD_SETTINGS[method])) return;\n items.push({\n label: METHOD_LABELS[method],\n value: stats?.authMethodCounts[method] ?? 0,\n });\n });\n\n return items;\n }, [stats, isSettingEnabled]);\n\n return { statsItems, isLoading, error, refresh: fetchStats };\n}\n\nexport default function UsersSection({\n pluginContext,\n pageSize = 20,\n}: AdminSectionProps): React.JSX.Element {\n const [selectedUser, setSelectedUser] = useState<AdminUser | null>(null);\n const { statsItems, isLoading, error, refresh } = useUsersStats();\n\n if (selectedUser) {\n return (\n <div className=\"cedros-dashboard__section\">\n <AdminUserDetail\n userId={selectedUser.id}\n onBack={() => setSelectedUser(null)}\n currentUserId={pluginContext.userId}\n />\n </div>\n );\n }\n\n return (\n <div className=\"cedros-dashboard__section\">\n <StatsBar stats={statsItems} isLoading={isLoading} onRefresh={refresh} />\n {error && <p className=\"cedros-admin-error-inline\">{error}</p>}\n <p className=\"cedros-dashboard__text-muted\">\n All registered users in the system. Requires system admin privileges.\n </p>\n <AdminUserList\n pageSize={pageSize}\n currentUserId={pluginContext.userId}\n onUserClick={(user) => setSelectedUser(user)}\n />\n </div>\n );\n}\n"],"names":["METHOD_ORDER","METHOD_LABELS","METHOD_SETTINGS","useUsersStats","getStats","useAdminUsers","fetchSettings","getValue","useSystemSettings","stats","setStats","useState","isLoading","setIsLoading","error","setError","settingsFetched","setSettingsFetched","useEffect","isSettingEnabled","useCallback","key","value","fetchStats","result","err","useMemo","items","method","UsersSection","pluginContext","pageSize","selectedUser","setSelectedUser","statsItems","refresh","jsx","AdminUserDetail","jsxs","StatsBar","AdminUserList","user"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),e=require("react"),u=require("./index-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),e=require("react"),u=require("./index-RSdLR9t4.cjs"),b=["email","google","apple","solana","webauthn","sso"],U={email:"Email Users",google:"Google Users",apple:"Apple Users",solana:"Solana Users",webauthn:"Passkey Users",sso:"SSO Provider Users"},p={email:"auth_email_enabled",google:"auth_google_enabled",apple:"auth_apple_enabled",solana:"auth_solana_enabled",webauthn:"auth_webauthn_enabled",sso:"feature_sso"};function E(){const{getStats:n}=u.useAdminUsers(),{fetchSettings:i,getValue:l}=u.useSystemSettings(),[r,d]=e.useState(null),[h,o]=e.useState(!1),[f,c]=e.useState(null),[m,_]=e.useState(!1);e.useEffect(()=>{m||(i(),_(!0))},[i,m]);const g=e.useCallback(s=>{const t=l(s);return t===void 0?!1:t==="true"||t==="1"},[l]),S=e.useCallback(async()=>{o(!0),c(null);try{const s=await n();d(s)}catch(s){c(s instanceof Error?s.message:"Failed to load user stats")}finally{o(!1)}},[n]);return e.useEffect(()=>{S()},[S]),{statsItems:e.useMemo(()=>{const s=[{label:"Total Users",value:r?.total??"—"}];return b.forEach(t=>{g(p[t])&&s.push({label:U[t],value:r?.authMethodCounts[t]??0})}),s},[r,g]),isLoading:h,error:f,refresh:S}}function I({pluginContext:n,pageSize:i=20}){const[l,r]=e.useState(null),{statsItems:d,isLoading:h,error:o,refresh:f}=E();return l?a.jsx("div",{className:"cedros-dashboard__section",children:a.jsx(u.AdminUserDetail,{userId:l.id,onBack:()=>r(null),currentUserId:n.userId})}):a.jsxs("div",{className:"cedros-dashboard__section",children:[a.jsx(u.StatsBar,{stats:d,isLoading:h,onRefresh:f}),o&&a.jsx("p",{className:"cedros-admin-error-inline",children:o}),a.jsx("p",{className:"cedros-dashboard__text-muted",children:"All registered users in the system. Requires system admin privileges."}),a.jsx(u.AdminUserList,{pageSize:i,currentUserId:n.userId,onUserClick:c=>r(c)})]})}exports.default=I;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UsersSection-
|
|
1
|
+
{"version":3,"file":"UsersSection-nwTQCl2X.cjs","sources":["../src/admin/sections/UsersSection.tsx"],"sourcesContent":["/**\n * Users Section - Plugin wrapper\n *\n * Admin user management with list and detail views.\n */\n\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport type { AdminSectionProps } from '../types';\nimport { AdminUserList } from '../../components/admin/AdminUserList';\nimport { AdminUserDetail } from '../../components/admin/AdminUserDetail';\nimport { StatsBar } from '../../components/admin/StatsBar';\nimport { useAdminUsers } from '../../hooks/useAdminUsers';\nimport { useSystemSettings } from '../../hooks/useSystemSettings';\nimport type { AdminUser, AdminUserStatsResponse } from '../../types';\n\nconst METHOD_ORDER = ['email', 'google', 'apple', 'solana', 'webauthn', 'sso'] as const;\n\nconst METHOD_LABELS: Record<(typeof METHOD_ORDER)[number], string> = {\n email: 'Email Users',\n google: 'Google Users',\n apple: 'Apple Users',\n solana: 'Solana Users',\n webauthn: 'Passkey Users',\n sso: 'SSO Provider Users',\n};\n\nconst METHOD_SETTINGS: Record<(typeof METHOD_ORDER)[number], string> = {\n email: 'auth_email_enabled',\n google: 'auth_google_enabled',\n apple: 'auth_apple_enabled',\n solana: 'auth_solana_enabled',\n webauthn: 'auth_webauthn_enabled',\n sso: 'feature_sso',\n};\n\nfunction useUsersStats() {\n const { getStats } = useAdminUsers();\n const { fetchSettings, getValue } = useSystemSettings();\n const [stats, setStats] = useState<AdminUserStatsResponse | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [settingsFetched, setSettingsFetched] = useState(false);\n\n useEffect(() => {\n if (!settingsFetched) {\n fetchSettings();\n setSettingsFetched(true);\n }\n }, [fetchSettings, settingsFetched]);\n\n const isSettingEnabled = useCallback(\n (key: string): boolean => {\n const value = getValue(key);\n if (value === undefined) return false;\n return value === 'true' || value === '1';\n },\n [getValue]\n );\n\n const fetchStats = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n\n try {\n const result = await getStats();\n setStats(result);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load user stats');\n } finally {\n setIsLoading(false);\n }\n }, [getStats]);\n\n useEffect(() => {\n fetchStats();\n }, [fetchStats]);\n\n const statsItems = useMemo(() => {\n const items = [{ label: 'Total Users', value: stats?.total ?? '—' }];\n\n METHOD_ORDER.forEach((method) => {\n if (!isSettingEnabled(METHOD_SETTINGS[method])) return;\n items.push({\n label: METHOD_LABELS[method],\n value: stats?.authMethodCounts[method] ?? 0,\n });\n });\n\n return items;\n }, [stats, isSettingEnabled]);\n\n return { statsItems, isLoading, error, refresh: fetchStats };\n}\n\nexport default function UsersSection({\n pluginContext,\n pageSize = 20,\n}: AdminSectionProps): React.JSX.Element {\n const [selectedUser, setSelectedUser] = useState<AdminUser | null>(null);\n const { statsItems, isLoading, error, refresh } = useUsersStats();\n\n if (selectedUser) {\n return (\n <div className=\"cedros-dashboard__section\">\n <AdminUserDetail\n userId={selectedUser.id}\n onBack={() => setSelectedUser(null)}\n currentUserId={pluginContext.userId}\n />\n </div>\n );\n }\n\n return (\n <div className=\"cedros-dashboard__section\">\n <StatsBar stats={statsItems} isLoading={isLoading} onRefresh={refresh} />\n {error && <p className=\"cedros-admin-error-inline\">{error}</p>}\n <p className=\"cedros-dashboard__text-muted\">\n All registered users in the system. Requires system admin privileges.\n </p>\n <AdminUserList\n pageSize={pageSize}\n currentUserId={pluginContext.userId}\n onUserClick={(user) => setSelectedUser(user)}\n />\n </div>\n );\n}\n"],"names":["METHOD_ORDER","METHOD_LABELS","METHOD_SETTINGS","useUsersStats","getStats","useAdminUsers","fetchSettings","getValue","useSystemSettings","stats","setStats","useState","isLoading","setIsLoading","error","setError","settingsFetched","setSettingsFetched","useEffect","isSettingEnabled","useCallback","key","value","fetchStats","result","err","useMemo","items","method","UsersSection","pluginContext","pageSize","selectedUser","setSelectedUser","statsItems","refresh","jsx","AdminUserDetail","jsxs","StatsBar","AdminUserList","user"],"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 t=require("./index-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime");require("react");const t=require("./index-RSdLR9t4.cjs");function r(o){return e.jsx("div",{className:"cedros-dashboard__section",children:e.jsx(t.WebhookSettings,{})})}exports.default=r;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebhookSettings-
|
|
1
|
+
{"version":3,"file":"WebhookSettings-CDLNe806.cjs","sources":["../src/admin/sections/WebhookSettings.tsx"],"sourcesContent":["/**\n * Webhook Settings Section - Plugin wrapper\n */\n\nimport React from 'react';\nimport type { AdminSectionProps } from '../types';\nimport { WebhookSettings as Settings } from '../../components/admin/settings';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport default function WebhookSettings(_props: AdminSectionProps): React.JSX.Element {\n return (\n <div className=\"cedros-dashboard__section\">\n <Settings />\n </div>\n );\n}\n"],"names":["WebhookSettings","_props","jsx","Settings"],"mappings":"8KASA,SAAwBA,EAAgBC,EAA8C,CACpF,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 r } from "./index-
|
|
3
|
+
import { W as r } from "./index-BO6O-6S_.js";
|
|
4
4
|
function a(t) {
|
|
5
5
|
return /* @__PURE__ */ o("div", { className: "cedros-dashboard__section", children: /* @__PURE__ */ o(r, {}) });
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebhookSettings-
|
|
1
|
+
{"version":3,"file":"WebhookSettings-C_3R0bqk.js","sources":["../src/admin/sections/WebhookSettings.tsx"],"sourcesContent":["/**\n * Webhook Settings Section - Plugin wrapper\n */\n\nimport React from 'react';\nimport type { AdminSectionProps } from '../types';\nimport { WebhookSettings as Settings } from '../../components/admin/settings';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport default function WebhookSettings(_props: AdminSectionProps): React.JSX.Element {\n return (\n <div className=\"cedros-dashboard__section\">\n <Settings />\n </div>\n );\n}\n"],"names":["WebhookSettings","_props","jsx","Settings"],"mappings":";;;AASA,SAAwBA,EAAgBC,GAA8C;AACpF,2BACG,OAAA,EAAI,WAAU,6BACb,UAAA,gBAAAC,EAACC,KAAS,GACZ;AAEJ;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs as s, jsx as d } from "react/jsx-runtime";
|
|
2
2
|
import "react";
|
|
3
|
-
import { i as r, j as o, k as t, l as e } from "./index-
|
|
3
|
+
import { i as r, j as o, k as t, l as e } from "./index-BO6O-6S_.js";
|
|
4
4
|
function p({
|
|
5
5
|
pageSize: i = 20,
|
|
6
6
|
refreshInterval: a = 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WithdrawalsSection-
|
|
1
|
+
{"version":3,"file":"WithdrawalsSection-5I0Ax4H0.js","sources":["../src/admin/sections/WithdrawalsSection.tsx"],"sourcesContent":["/**\n * Withdrawals Section - Plugin wrapper\n *\n * Admin withdrawal pipeline: privacy period, queue, and history.\n */\n\nimport React from 'react';\nimport type { AdminSectionProps } from '../types';\nimport {\n AdminPrivacyPeriodDeposits,\n AdminWithdrawalQueue,\n AdminWithdrawalHistory,\n AdminWithdrawalStats,\n} from '../../components/deposit/admin';\n\nexport default function WithdrawalsSection({\n pageSize = 20,\n refreshInterval = 0,\n}: AdminSectionProps): React.JSX.Element {\n return (\n <div className=\"cedros-dashboard__withdrawals\">\n <AdminWithdrawalStats refreshInterval={refreshInterval} />\n <p className=\"cedros-dashboard__text-muted\">\n Track deposits through the withdrawal pipeline: privacy period, ready for processing, and\n completed.\n </p>\n\n {/* Pipeline view: Privacy Period -> Ready -> Completed */}\n <div className=\"cedros-dashboard__pipeline\">\n <AdminPrivacyPeriodDeposits pageSize={pageSize} refreshInterval={refreshInterval} />\n <AdminWithdrawalQueue pageSize={pageSize} refreshInterval={refreshInterval} />\n <AdminWithdrawalHistory pageSize={pageSize} refreshInterval={refreshInterval} />\n </div>\n </div>\n );\n}\n"],"names":["WithdrawalsSection","pageSize","refreshInterval","jsxs","jsx","AdminWithdrawalStats","AdminPrivacyPeriodDeposits","AdminWithdrawalQueue","AdminWithdrawalHistory"],"mappings":";;;AAeA,SAAwBA,EAAmB;AAAA,EACzC,UAAAC,IAAW;AAAA,EACX,iBAAAC,IAAkB;AACpB,GAAyC;AACvC,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAU,iCACb,UAAA;AAAA,IAAA,gBAAAC,EAACC,KAAqB,iBAAAH,GAAkC;AAAA,IACxD,gBAAAE,EAAC,KAAA,EAAE,WAAU,gCAA+B,UAAA,wGAG5C;AAAA,IAGA,gBAAAD,EAAC,OAAA,EAAI,WAAU,8BACb,UAAA;AAAA,MAAA,gBAAAC,EAACE,GAAA,EAA2B,UAAAL,GAAoB,iBAAAC,EAAA,CAAkC;AAAA,MAClF,gBAAAE,EAACG,GAAA,EAAqB,UAAAN,GAAoB,iBAAAC,EAAA,CAAkC;AAAA,MAC5E,gBAAAE,EAACI,GAAA,EAAuB,UAAAP,GAAoB,iBAAAC,EAAA,CAAkC;AAAA,IAAA,EAAA,CAChF;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react/jsx-runtime");require("react");const s=require("./index-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react/jsx-runtime");require("react");const s=require("./index-RSdLR9t4.cjs");function a({pageSize:e=20,refreshInterval:i=0}){return d.jsxs("div",{className:"cedros-dashboard__withdrawals",children:[d.jsx(s.AdminWithdrawalStats,{refreshInterval:i}),d.jsx("p",{className:"cedros-dashboard__text-muted",children:"Track deposits through the withdrawal pipeline: privacy period, ready for processing, and completed."}),d.jsxs("div",{className:"cedros-dashboard__pipeline",children:[d.jsx(s.AdminPrivacyPeriodDeposits,{pageSize:e,refreshInterval:i}),d.jsx(s.AdminWithdrawalQueue,{pageSize:e,refreshInterval:i}),d.jsx(s.AdminWithdrawalHistory,{pageSize:e,refreshInterval:i})]})]})}exports.default=a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WithdrawalsSection-
|
|
1
|
+
{"version":3,"file":"WithdrawalsSection-wDptaqpp.cjs","sources":["../src/admin/sections/WithdrawalsSection.tsx"],"sourcesContent":["/**\n * Withdrawals Section - Plugin wrapper\n *\n * Admin withdrawal pipeline: privacy period, queue, and history.\n */\n\nimport React from 'react';\nimport type { AdminSectionProps } from '../types';\nimport {\n AdminPrivacyPeriodDeposits,\n AdminWithdrawalQueue,\n AdminWithdrawalHistory,\n AdminWithdrawalStats,\n} from '../../components/deposit/admin';\n\nexport default function WithdrawalsSection({\n pageSize = 20,\n refreshInterval = 0,\n}: AdminSectionProps): React.JSX.Element {\n return (\n <div className=\"cedros-dashboard__withdrawals\">\n <AdminWithdrawalStats refreshInterval={refreshInterval} />\n <p className=\"cedros-dashboard__text-muted\">\n Track deposits through the withdrawal pipeline: privacy period, ready for processing, and\n completed.\n </p>\n\n {/* Pipeline view: Privacy Period -> Ready -> Completed */}\n <div className=\"cedros-dashboard__pipeline\">\n <AdminPrivacyPeriodDeposits pageSize={pageSize} refreshInterval={refreshInterval} />\n <AdminWithdrawalQueue pageSize={pageSize} refreshInterval={refreshInterval} />\n <AdminWithdrawalHistory pageSize={pageSize} refreshInterval={refreshInterval} />\n </div>\n </div>\n );\n}\n"],"names":["WithdrawalsSection","pageSize","refreshInterval","jsxs","jsx","AdminWithdrawalStats","AdminPrivacyPeriodDeposits","AdminWithdrawalQueue","AdminWithdrawalHistory"],"mappings":"8KAeA,SAAwBA,EAAmB,CACzC,SAAAC,EAAW,GACX,gBAAAC,EAAkB,CACpB,EAAyC,CACvC,OACEC,EAAAA,KAAC,MAAA,CAAI,UAAU,gCACb,SAAA,CAAAC,MAACC,EAAAA,sBAAqB,gBAAAH,EAAkC,EACxDE,EAAAA,IAAC,IAAA,CAAE,UAAU,+BAA+B,SAAA,uGAG5C,EAGAD,EAAAA,KAAC,MAAA,CAAI,UAAU,6BACb,SAAA,CAAAC,EAAAA,IAACE,EAAAA,2BAAA,CAA2B,SAAAL,EAAoB,gBAAAC,CAAA,CAAkC,EAClFE,EAAAA,IAACG,EAAAA,qBAAA,CAAqB,SAAAN,EAAoB,gBAAAC,CAAA,CAAkC,EAC5EE,EAAAA,IAACI,EAAAA,uBAAA,CAAuB,SAAAP,EAAoB,gBAAAC,CAAA,CAAkC,CAAA,CAAA,CAChF,CAAA,EACF,CAEJ"}
|
|
@@ -4,6 +4,11 @@
|
|
|
4
4
|
* Helper functions for detecting if an error indicates a feature is disabled.
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
|
-
* Check if an error indicates a feature is disabled
|
|
7
|
+
* Check if an error indicates a feature is disabled.
|
|
8
|
+
*
|
|
9
|
+
* Always returns false — deposits and withdrawals work independently of
|
|
10
|
+
* privacy cash. When the API returns an error, components should use their
|
|
11
|
+
* normal error UI (retry button) instead of the "Privacy Cash Not Enabled"
|
|
12
|
+
* banner.
|
|
8
13
|
*/
|
|
9
|
-
export declare function isFeatureDisabledError(
|
|
14
|
+
export declare function isFeatureDisabledError(_error: string | null | undefined): boolean;
|
package/dist/email-only.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./ErrorMessage-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./ErrorMessage-BXHiYibN.cjs"),r=require("./EmailRegisterForm-DaPLGws2.cjs"),o=require("./validation-BeXIfuHB.cjs");exports.CedrosLoginProvider=e.CedrosLoginProvider;exports.ErrorMessage=e.ErrorMessage;exports.LoadingSpinner=e.LoadingSpinner;exports.useAuth=e.useAuth;exports.useCedrosLogin=e.useCedrosLogin;exports.EmailLoginForm=r.EmailLoginForm;exports.EmailRegisterForm=r.EmailRegisterForm;exports.PasswordInput=r.PasswordInput;exports.useEmailAuth=r.useEmailAuth;exports.validatePassword=o.validatePassword;
|
package/dist/email-only.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { C as r, E as o, L as e, a as i, u as m } from "./ErrorMessage-
|
|
2
|
-
import { E as u, a as d, P as n, u as g } from "./EmailRegisterForm-
|
|
1
|
+
import { C as r, E as o, L as e, a as i, u as m } from "./ErrorMessage-DU2VBb85.js";
|
|
2
|
+
import { E as u, a as d, P as n, u as g } from "./EmailRegisterForm-C0PStlj5.js";
|
|
3
3
|
import { v as p } from "./validation-BebL7hMF.js";
|
|
4
4
|
export {
|
|
5
5
|
r as CedrosLoginProvider,
|
package/dist/google-only.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./ErrorMessage-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./ErrorMessage-BXHiYibN.cjs"),e=require("./GoogleLoginButton-DoAdOqb3.cjs");exports.CedrosLoginProvider=o.CedrosLoginProvider;exports.ErrorMessage=o.ErrorMessage;exports.LoadingSpinner=o.LoadingSpinner;exports.useAuth=o.useAuth;exports.useCedrosLogin=o.useCedrosLogin;exports.GoogleLoginButton=e.GoogleLoginButton;exports.useGoogleAuth=e.useGoogleAuth;
|
package/dist/google-only.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { C as e, E as r, L as a, a as u, u as g } from "./ErrorMessage-
|
|
2
|
-
import { G as i, u as t } from "./GoogleLoginButton-
|
|
1
|
+
import { C as e, E as r, L as a, a as u, u as g } from "./ErrorMessage-DU2VBb85.js";
|
|
2
|
+
import { G as i, u as t } from "./GoogleLoginButton-BzHr545L.js";
|
|
3
3
|
export {
|
|
4
4
|
e as CedrosLoginProvider,
|
|
5
5
|
r as ErrorMessage,
|