@cedros/login-react 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/{AuthenticationSettings-CEVF1qTV.cjs → AuthenticationSettings-CDK8XCY-.cjs} +1 -1
  2. package/dist/{AuthenticationSettings-CEVF1qTV.cjs.map → AuthenticationSettings-CDK8XCY-.cjs.map} +1 -1
  3. package/dist/{AuthenticationSettings-BKvfIsUy.js → AuthenticationSettings-W4EnVUrv.js} +1 -1
  4. package/dist/{AuthenticationSettings-BKvfIsUy.js.map → AuthenticationSettings-W4EnVUrv.js.map} +1 -1
  5. package/dist/{CreditSystemSettings-BL7Lx9MI.js → CreditSystemSettings-BFBTeyl7.js} +1 -1
  6. package/dist/{CreditSystemSettings-BL7Lx9MI.js.map → CreditSystemSettings-BFBTeyl7.js.map} +1 -1
  7. package/dist/{CreditSystemSettings-CVxamkZ8.cjs → CreditSystemSettings-k5bOgfpj.cjs} +1 -1
  8. package/dist/{CreditSystemSettings-CVxamkZ8.cjs.map → CreditSystemSettings-k5bOgfpj.cjs.map} +1 -1
  9. package/dist/{DepositsSection-BzlzofEm.cjs → DepositsSection-9oW81ocN.cjs} +1 -1
  10. package/dist/{DepositsSection-BzlzofEm.cjs.map → DepositsSection-9oW81ocN.cjs.map} +1 -1
  11. package/dist/{DepositsSection-b-VfjqkR.js → DepositsSection-zsNaKqIa.js} +1 -1
  12. package/dist/{DepositsSection-b-VfjqkR.js.map → DepositsSection-zsNaKqIa.js.map} +1 -1
  13. package/dist/{EmailSettings-D2Y_T3ea.cjs → EmailSettings-CJ1jwoIw.cjs} +1 -1
  14. package/dist/{EmailSettings-D2Y_T3ea.cjs.map → EmailSettings-CJ1jwoIw.cjs.map} +1 -1
  15. package/dist/{EmailSettings-D4kz8cRX.js → EmailSettings-Cs3cKqWy.js} +1 -1
  16. package/dist/{EmailSettings-D4kz8cRX.js.map → EmailSettings-Cs3cKqWy.js.map} +1 -1
  17. package/dist/{EmbeddedWalletSettings-D8oqefzm.cjs → EmbeddedWalletSettings-5WhI_6cL.cjs} +1 -1
  18. package/dist/{EmbeddedWalletSettings-D8oqefzm.cjs.map → EmbeddedWalletSettings-5WhI_6cL.cjs.map} +1 -1
  19. package/dist/{EmbeddedWalletSettings-BAAnDY3_.js → EmbeddedWalletSettings-BKOvB3Qe.js} +1 -1
  20. package/dist/{EmbeddedWalletSettings-BAAnDY3_.js.map → EmbeddedWalletSettings-BKOvB3Qe.js.map} +1 -1
  21. package/dist/{ServerSettings-BRcS4sht.js → ServerSettings-BESj4UDB.js} +1 -1
  22. package/dist/{ServerSettings-BRcS4sht.js.map → ServerSettings-BESj4UDB.js.map} +1 -1
  23. package/dist/{ServerSettings-Yrumq_CL.cjs → ServerSettings-UCN7E8sg.cjs} +1 -1
  24. package/dist/{ServerSettings-Yrumq_CL.cjs.map → ServerSettings-UCN7E8sg.cjs.map} +1 -1
  25. package/dist/{TeamSection-Dec3HxDj.js → TeamSection-Dt8tPOYm.js} +51 -47
  26. package/dist/TeamSection-Dt8tPOYm.js.map +1 -0
  27. package/dist/TeamSection-msFD7Wb5.cjs +1 -0
  28. package/dist/TeamSection-msFD7Wb5.cjs.map +1 -0
  29. package/dist/{UsersSection-BImSsHRA.cjs → UsersSection-BAnirT1_.cjs} +1 -1
  30. package/dist/{UsersSection-BImSsHRA.cjs.map → UsersSection-BAnirT1_.cjs.map} +1 -1
  31. package/dist/{UsersSection-D1uLBhoF.js → UsersSection-PQVpL6Xo.js} +1 -1
  32. package/dist/{UsersSection-D1uLBhoF.js.map → UsersSection-PQVpL6Xo.js.map} +1 -1
  33. package/dist/{WebhookSettings-fOHCAQqx.cjs → WebhookSettings-BrrSXA0B.cjs} +1 -1
  34. package/dist/{WebhookSettings-fOHCAQqx.cjs.map → WebhookSettings-BrrSXA0B.cjs.map} +1 -1
  35. package/dist/{WebhookSettings-BD-PNXDX.js → WebhookSettings-eM6U9nOU.js} +1 -1
  36. package/dist/{WebhookSettings-BD-PNXDX.js.map → WebhookSettings-eM6U9nOU.js.map} +1 -1
  37. package/dist/{WithdrawalsSection-CLlPpKHf.js → WithdrawalsSection-BGmLLoUa.js} +1 -1
  38. package/dist/{WithdrawalsSection-CLlPpKHf.js.map → WithdrawalsSection-BGmLLoUa.js.map} +1 -1
  39. package/dist/{WithdrawalsSection-_7gHudQ8.cjs → WithdrawalsSection-C0fFwIbu.cjs} +1 -1
  40. package/dist/{WithdrawalsSection-_7gHudQ8.cjs.map → WithdrawalsSection-C0fFwIbu.cjs.map} +1 -1
  41. package/dist/{index-BRvCMGd5.js → index-D1Ex6YTc.js} +2 -2
  42. package/dist/index-D1Ex6YTc.js.map +1 -0
  43. package/dist/{index-Ca3FT7KM.cjs → index-tTVUl19s.cjs} +1 -1
  44. package/dist/index-tTVUl19s.cjs.map +1 -0
  45. package/dist/index.cjs +1 -1
  46. package/dist/index.js +1 -1
  47. package/dist/login-react.css +1 -1
  48. package/package.json +1 -1
  49. package/dist/TeamSection-BgFEYBD7.cjs +0 -1
  50. package/dist/TeamSection-BgFEYBD7.cjs.map +0 -1
  51. package/dist/TeamSection-Dec3HxDj.js.map +0 -1
  52. package/dist/index-BRvCMGd5.js.map +0 -1
  53. package/dist/index-Ca3FT7KM.cjs.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cedros/login-react",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "description": "React component library for authentication with email/password, Google OAuth, and Solana wallet sign-in",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),b=require("react"),n=require("./index-Ca3FT7KM.cjs");function w({pluginContext:p}){const[s,a]=b.useState("members"),{activeOrg:i,hasPermission:r,role:t}=n.useOrgs(),{members:o,isLoading:I,error:N,fetchMembers:v,updateMemberRole:C,removeMember:M}=n.useMembers(i?.id??""),{invites:u,isLoading:h,error:g,fetchInvites:j,createInvite:f,cancelInvite:L,resendInvite:S}=n.useInvites(i?.id??"");b.useEffect(()=>{i?.id&&(v(),j())},[i?.id,v,j]);const d=b.useMemo(()=>o.reduce((l,_)=>(l[_.role]=(l[_.role]??0)+1,l),{}),[o]);if(!i)return e.jsx("div",{className:"cedros-dashboard__section",children:e.jsx("div",{className:"cedros-dashboard__empty",children:"Select an organization to manage team members."})});const c=r("invite:create"),x=r("invite:cancel"),m=u.length,R=d.owner??0,y=d.admin??0,P=d.member??0;return e.jsxs("div",{className:"cedros-dashboard__team",children:[e.jsx(n.StatsBar,{stats:[{label:"Owners",value:R},{label:"Admins",value:y},{label:"Members",value:P},{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:()=>a("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:()=>a("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:()=>a("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:o,currentUserId:p.userId,isLoading:I,error:N?.message,canManage:r("member:remove"),canChangeRoles:r("member:role_change"),onUpdateRole:C,onRemove:M}),s==="invites"&&e.jsxs("div",{className:"cedros-dashboard__invites",children:[c&&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:f,isLoading:h,error:g?.message})]}),e.jsx("div",{className:"cedros-dashboard__section",children:e.jsx(n.InviteList,{invites:u,isLoading:h,error:g?.message,canManage:x||c,onCancel:x?L:void 0,onResend:c?S:void 0})})]}),s==="permissions"&&t==="owner"&&e.jsx(n.PermissionsSection,{userRole:t})]})]})}exports.default=w;
@@ -1 +0,0 @@
1
- {"version":3,"file":"TeamSection-BgFEYBD7.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, hasPermission, role } = useOrgs();\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 (!activeOrg) {\n return (\n <div className=\"cedros-dashboard__section\">\n <div className=\"cedros-dashboard__empty\">\n Select an organization to manage team members.\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","hasPermission","role","useOrgs","members","membersLoading","membersError","fetchMembers","updateMemberRole","removeMember","useMembers","invites","invitesLoading","invitesError","fetchInvites","createInvite","cancelInvite","resendInvite","useInvites","useEffect","roleCounts","useMemo","acc","member","jsx","canInvite","canCancel","pendingCount","ownerCount","adminCount","memberCount","jsxs","StatsBar","MemberList","InviteForm","InviteList","PermissionsSection"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TeamSection-Dec3HxDj.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, hasPermission, role } = useOrgs();\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 (!activeOrg) {\n return (\n <div className=\"cedros-dashboard__section\">\n <div className=\"cedros-dashboard__empty\">\n Select an organization to manage team members.\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","hasPermission","role","useOrgs","members","membersLoading","membersError","fetchMembers","updateMemberRole","removeMember","useMembers","invites","invitesLoading","invitesError","fetchInvites","createInvite","cancelInvite","resendInvite","useInvites","useEffect","roleCounts","useMemo","acc","member","jsx","canInvite","canCancel","pendingCount","ownerCount","adminCount","memberCount","jsxs","StatsBar","MemberList","InviteForm","InviteList","PermissionsSection"],"mappings":"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"}