@cedros/login-react 0.0.45 → 0.0.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/README.md +32 -2
  2. package/dist/{AuthenticationSettings-bNQiNQ9g.cjs → AuthenticationSettings-BBOjHR6j.cjs} +1 -1
  3. package/dist/{AuthenticationSettings-bNQiNQ9g.cjs.map → AuthenticationSettings-BBOjHR6j.cjs.map} +1 -1
  4. package/dist/{AuthenticationSettings-BlYOmaEG.cjs → AuthenticationSettings-BXZRBZqc.cjs} +1 -1
  5. package/dist/{AuthenticationSettings-BlYOmaEG.cjs.map → AuthenticationSettings-BXZRBZqc.cjs.map} +1 -1
  6. package/dist/{AuthenticationSettings-BsuwWKbT.js → AuthenticationSettings-Bc_qT4nV.js} +1 -1
  7. package/dist/{AuthenticationSettings-BsuwWKbT.js.map → AuthenticationSettings-Bc_qT4nV.js.map} +1 -1
  8. package/dist/{AuthenticationSettings-DrHqtD7p.js → AuthenticationSettings-DXWCVZxS.js} +1 -1
  9. package/dist/{AuthenticationSettings-DrHqtD7p.js.map → AuthenticationSettings-DXWCVZxS.js.map} +1 -1
  10. package/dist/{AutosaveStatus-CZSwtgrL.cjs → AutosaveStatus-DfMPudTQ.cjs} +1 -1
  11. package/dist/AutosaveStatus-DfMPudTQ.cjs.map +1 -0
  12. package/dist/{AutosaveStatus-D-roPsRx.js → AutosaveStatus-DhGM3UUx.js} +103 -36
  13. package/dist/AutosaveStatus-DhGM3UUx.js.map +1 -0
  14. package/dist/{CreditSystemSettings-BTqZFn4K.js → CreditSystemSettings-B59-gOQT.js} +1 -1
  15. package/dist/{CreditSystemSettings-BTqZFn4K.js.map → CreditSystemSettings-B59-gOQT.js.map} +1 -1
  16. package/dist/{CreditSystemSettings-3R6crxvW.cjs → CreditSystemSettings-Badz4iAc.cjs} +1 -1
  17. package/dist/{CreditSystemSettings-3R6crxvW.cjs.map → CreditSystemSettings-Badz4iAc.cjs.map} +1 -1
  18. package/dist/{CreditSystemSettings-BskW_NKx.cjs → CreditSystemSettings-BxSoDwEi.cjs} +1 -1
  19. package/dist/{CreditSystemSettings-BskW_NKx.cjs.map → CreditSystemSettings-BxSoDwEi.cjs.map} +1 -1
  20. package/dist/{CreditSystemSettings-SL45GRH3.js → CreditSystemSettings-DxFpOeBW.js} +1 -1
  21. package/dist/{CreditSystemSettings-SL45GRH3.js.map → CreditSystemSettings-DxFpOeBW.js.map} +1 -1
  22. package/dist/EmailRegisterForm-ByYQ43yL.cjs +1 -0
  23. package/dist/EmailRegisterForm-ByYQ43yL.cjs.map +1 -0
  24. package/dist/EmailRegisterForm-DMUcNQT-.js +781 -0
  25. package/dist/EmailRegisterForm-DMUcNQT-.js.map +1 -0
  26. package/dist/{EmailSettings-XETM8FdS.js → EmailSettings-0y8D1QzF.js} +1 -1
  27. package/dist/{EmailSettings-XETM8FdS.js.map → EmailSettings-0y8D1QzF.js.map} +1 -1
  28. package/dist/{EmailSettings-BUAQji4I.js → EmailSettings-BA722mhf.js} +1 -1
  29. package/dist/{EmailSettings-BUAQji4I.js.map → EmailSettings-BA722mhf.js.map} +1 -1
  30. package/dist/{EmailSettings-CihElRkc.cjs → EmailSettings-BwZvdOYB.cjs} +1 -1
  31. package/dist/{EmailSettings-CihElRkc.cjs.map → EmailSettings-BwZvdOYB.cjs.map} +1 -1
  32. package/dist/{EmailSettings-CEC1rhrm.cjs → EmailSettings-DIjo3aJo.cjs} +1 -1
  33. package/dist/{EmailSettings-CEC1rhrm.cjs.map → EmailSettings-DIjo3aJo.cjs.map} +1 -1
  34. package/dist/{EmbeddedWalletSettings-CCT9DwmL.js → EmbeddedWalletSettings-BDbPpqWD.js} +1 -1
  35. package/dist/{EmbeddedWalletSettings-CCT9DwmL.js.map → EmbeddedWalletSettings-BDbPpqWD.js.map} +1 -1
  36. package/dist/{EmbeddedWalletSettings-MtwR81WH.cjs → EmbeddedWalletSettings-Db9a0D5l.cjs} +1 -1
  37. package/dist/{EmbeddedWalletSettings-MtwR81WH.cjs.map → EmbeddedWalletSettings-Db9a0D5l.cjs.map} +1 -1
  38. package/dist/{EmbeddedWalletSettings-B-083zu6.js → EmbeddedWalletSettings-MH4A6e6S.js} +1 -1
  39. package/dist/{EmbeddedWalletSettings-B-083zu6.js.map → EmbeddedWalletSettings-MH4A6e6S.js.map} +1 -1
  40. package/dist/{EmbeddedWalletSettings-DXIjansC.cjs → EmbeddedWalletSettings-T7LwbGok.cjs} +1 -1
  41. package/dist/{EmbeddedWalletSettings-DXIjansC.cjs.map → EmbeddedWalletSettings-T7LwbGok.cjs.map} +1 -1
  42. package/dist/GoogleLoginButton-DEwtBp56.cjs +1 -0
  43. package/dist/GoogleLoginButton-DEwtBp56.cjs.map +1 -0
  44. package/dist/{GoogleLoginButton-C1WNu7W3.js → GoogleLoginButton-DwyxvhnL.js} +82 -80
  45. package/dist/GoogleLoginButton-DwyxvhnL.js.map +1 -0
  46. package/dist/{PermissionsSection-mm9hfp-u.js → PermissionsSection-0oNHPZzL.js} +383 -415
  47. package/dist/PermissionsSection-0oNHPZzL.js.map +1 -0
  48. package/dist/PermissionsSection-CZsJuxo4.cjs +1 -0
  49. package/dist/PermissionsSection-CZsJuxo4.cjs.map +1 -0
  50. package/dist/{ServerSettings-DBpbRihl.js → ServerSettings-CwCkkU50.js} +1 -1
  51. package/dist/{ServerSettings-DBpbRihl.js.map → ServerSettings-CwCkkU50.js.map} +1 -1
  52. package/dist/{ServerSettings-24DA_BOI.js → ServerSettings-DKzWaqjC.js} +1 -1
  53. package/dist/{ServerSettings-24DA_BOI.js.map → ServerSettings-DKzWaqjC.js.map} +1 -1
  54. package/dist/{ServerSettings-BTEuzdrf.cjs → ServerSettings-DptlzQAu.cjs} +1 -1
  55. package/dist/{ServerSettings-BTEuzdrf.cjs.map → ServerSettings-DptlzQAu.cjs.map} +1 -1
  56. package/dist/{ServerSettings-BNc4LEs4.cjs → ServerSettings-j5Lu5D-R.cjs} +1 -1
  57. package/dist/{ServerSettings-BNc4LEs4.cjs.map → ServerSettings-j5Lu5D-R.cjs.map} +1 -1
  58. package/dist/SolanaLoginButton-2504p6cr.cjs +1 -0
  59. package/dist/SolanaLoginButton-2504p6cr.cjs.map +1 -0
  60. package/dist/SolanaLoginButton-C7Kc_m6n.js +234 -0
  61. package/dist/SolanaLoginButton-C7Kc_m6n.js.map +1 -0
  62. package/dist/{TeamSection-Km7EwLWD.cjs → TeamSection-DN8PEHH3.cjs} +1 -1
  63. package/dist/{TeamSection-Km7EwLWD.cjs.map → TeamSection-DN8PEHH3.cjs.map} +1 -1
  64. package/dist/{TeamSection-C_eODdLU.js → TeamSection-gUyP4YDM.js} +1 -1
  65. package/dist/{TeamSection-C_eODdLU.js.map → TeamSection-gUyP4YDM.js.map} +1 -1
  66. package/dist/{UsersSection-C1Tt0ePx.cjs → UsersSection-8wLuD0fr.cjs} +1 -1
  67. package/dist/{UsersSection-C1Tt0ePx.cjs.map → UsersSection-8wLuD0fr.cjs.map} +1 -1
  68. package/dist/{UsersSection-Ct_E-MBF.js → UsersSection-CnsFrG-6.js} +1 -1
  69. package/dist/{UsersSection-Ct_E-MBF.js.map → UsersSection-CnsFrG-6.js.map} +1 -1
  70. package/dist/{WebhookSettings-D9IsXZJN.js → WebhookSettings-2hlLLyGd.js} +1 -1
  71. package/dist/{WebhookSettings-D9IsXZJN.js.map → WebhookSettings-2hlLLyGd.js.map} +1 -1
  72. package/dist/{WebhookSettings-C6X_JJcD.cjs → WebhookSettings-CoEoVRRO.cjs} +1 -1
  73. package/dist/{WebhookSettings-C6X_JJcD.cjs.map → WebhookSettings-CoEoVRRO.cjs.map} +1 -1
  74. package/dist/{WebhookSettings-H1x6IKOj.cjs → WebhookSettings-DOaydSWQ.cjs} +1 -1
  75. package/dist/{WebhookSettings-H1x6IKOj.cjs.map → WebhookSettings-DOaydSWQ.cjs.map} +1 -1
  76. package/dist/{WebhookSettings-BhIwucKb.js → WebhookSettings-LS_wUimF.js} +1 -1
  77. package/dist/{WebhookSettings-BhIwucKb.js.map → WebhookSettings-LS_wUimF.js.map} +1 -1
  78. package/dist/admin-only.cjs +1 -1
  79. package/dist/admin-only.js +1 -1
  80. package/dist/email-only.cjs +1 -1
  81. package/dist/email-only.d.ts +10 -2
  82. package/dist/email-only.js +2 -2
  83. package/dist/google-only.cjs +1 -1
  84. package/dist/google-only.d.ts +7 -2
  85. package/dist/google-only.js +2 -2
  86. package/dist/index.cjs +12 -12
  87. package/dist/index.cjs.map +1 -1
  88. package/dist/index.d.ts +182 -11
  89. package/dist/index.js +5221 -4657
  90. package/dist/index.js.map +1 -1
  91. package/dist/login-react.css +1 -1
  92. package/dist/{plugin-BwwJh2cY.cjs → plugin-DNFjEfYp.cjs} +1 -1
  93. package/dist/{plugin-BwwJh2cY.cjs.map → plugin-DNFjEfYp.cjs.map} +1 -1
  94. package/dist/{plugin-CetHtdLq.js → plugin-WYMrRNbz.js} +1 -1
  95. package/dist/{plugin-CetHtdLq.js.map → plugin-WYMrRNbz.js.map} +1 -1
  96. package/dist/solana-only.cjs +1 -1
  97. package/dist/solana-only.d.ts +6 -1
  98. package/dist/solana-only.js +2 -2
  99. package/dist/useAuth-2vgrAH-M.cjs +1 -0
  100. package/dist/useAuth-2vgrAH-M.cjs.map +1 -0
  101. package/dist/{useAuth-l-itM5am.js → useAuth-CNflw856.js} +465 -469
  102. package/dist/useAuth-CNflw856.js.map +1 -0
  103. package/dist/useServerFeatures-9_aNPaa6.cjs +1 -0
  104. package/dist/useServerFeatures-9_aNPaa6.cjs.map +1 -0
  105. package/dist/useServerFeatures-DSkYdan-.js +82 -0
  106. package/dist/useServerFeatures-DSkYdan-.js.map +1 -0
  107. package/dist/{useUsersStatsSummary-BGeh3RnI.js → useUsersStatsSummary-B4_RBEYy.js} +504 -442
  108. package/dist/useUsersStatsSummary-B4_RBEYy.js.map +1 -0
  109. package/dist/useUsersStatsSummary-CHRMrlk4.cjs +1 -0
  110. package/dist/useUsersStatsSummary-CHRMrlk4.cjs.map +1 -0
  111. package/package.json +1 -1
  112. package/dist/AutosaveStatus-CZSwtgrL.cjs.map +0 -1
  113. package/dist/AutosaveStatus-D-roPsRx.js.map +0 -1
  114. package/dist/EmailRegisterForm-p2X5QP58.js +0 -750
  115. package/dist/EmailRegisterForm-p2X5QP58.js.map +0 -1
  116. package/dist/EmailRegisterForm-xFb6MaVA.cjs +0 -1
  117. package/dist/EmailRegisterForm-xFb6MaVA.cjs.map +0 -1
  118. package/dist/GoogleLoginButton-2zNTIKMm.cjs +0 -1
  119. package/dist/GoogleLoginButton-2zNTIKMm.cjs.map +0 -1
  120. package/dist/GoogleLoginButton-C1WNu7W3.js.map +0 -1
  121. package/dist/PermissionsSection-4zcE9Zs9.cjs +0 -1
  122. package/dist/PermissionsSection-4zcE9Zs9.cjs.map +0 -1
  123. package/dist/PermissionsSection-mm9hfp-u.js.map +0 -1
  124. package/dist/SolanaLoginButton-CqdzSSeJ.cjs +0 -1
  125. package/dist/SolanaLoginButton-CqdzSSeJ.cjs.map +0 -1
  126. package/dist/SolanaLoginButton-CyeX35eU.js +0 -232
  127. package/dist/SolanaLoginButton-CyeX35eU.js.map +0 -1
  128. package/dist/sanitization-Bo_tn-L2.cjs +0 -1
  129. package/dist/sanitization-Bo_tn-L2.cjs.map +0 -1
  130. package/dist/sanitization-CQ-H1MSg.js +0 -39
  131. package/dist/sanitization-CQ-H1MSg.js.map +0 -1
  132. package/dist/useAuth-B1yS_YiD.cjs +0 -1
  133. package/dist/useAuth-B1yS_YiD.cjs.map +0 -1
  134. package/dist/useAuth-l-itM5am.js.map +0 -1
  135. package/dist/useUsersStatsSummary-BGeh3RnI.js.map +0 -1
  136. package/dist/useUsersStatsSummary-DnsYtFGX.cjs +0 -1
  137. package/dist/useUsersStatsSummary-DnsYtFGX.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TeamSection-Km7EwLWD.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, { useMemo, useState, useEffect } 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 {\n activeOrg,\n hasPermission,\n role,\n isLoading: orgsLoading,\n error: orgsError,\n fetchOrgs,\n } = 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 (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 type=\"button\" className=\"cedros-button cedros-button-outline\" onClick={fetchOrgs}>\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\">No organizations found.</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","orgsLoading","orgsError","fetchOrgs","useOrgs","members","membersLoading","membersError","fetchMembers","updateMemberRole","removeMember","useMembers","invites","invitesLoading","invitesError","fetchInvites","createInvite","cancelInvite","resendInvite","useInvites","useEffect","roleCounts","useMemo","acc","member","jsxs","jsx","canInvite","canCancel","pendingCount","ownerCount","adminCount","memberCount","StatsBar","MemberList","InviteForm","InviteList","PermissionsSection"],"mappings":"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"}
1
+ {"version":3,"file":"TeamSection-DN8PEHH3.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, { useMemo, useState, useEffect } 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 {\n activeOrg,\n hasPermission,\n role,\n isLoading: orgsLoading,\n error: orgsError,\n fetchOrgs,\n } = 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 (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 type=\"button\" className=\"cedros-button cedros-button-outline\" onClick={fetchOrgs}>\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\">No organizations found.</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","orgsLoading","orgsError","fetchOrgs","useOrgs","members","membersLoading","membersError","fetchMembers","updateMemberRole","removeMember","useMembers","invites","invitesLoading","invitesError","fetchInvites","createInvite","cancelInvite","resendInvite","useInvites","useEffect","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 e, jsxs as a } from "react/jsx-runtime";
2
2
  import { useState as O, useEffect as $, useMemo as T } from "react";
3
- import { u as j, a as z, M as A, I as U, b as B, P as F } from "./PermissionsSection-mm9hfp-u.js";
3
+ import { u as j, a as z, M as A, I as U, b as B, P as F } from "./PermissionsSection-0oNHPZzL.js";
4
4
  import { S as q } from "./StatsBar-BX-hHtTq.js";
5
5
  import { u as D } from "./useOrgs-C90KT9KP.js";
6
6
  function V({ pluginContext: f }) {
@@ -1 +1 @@
1
- {"version":3,"file":"TeamSection-C_eODdLU.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, { useMemo, useState, useEffect } 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 {\n activeOrg,\n hasPermission,\n role,\n isLoading: orgsLoading,\n error: orgsError,\n fetchOrgs,\n } = 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 (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 type=\"button\" className=\"cedros-button cedros-button-outline\" onClick={fetchOrgs}>\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\">No organizations found.</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","orgsLoading","orgsError","fetchOrgs","useOrgs","members","membersLoading","membersError","fetchMembers","updateMemberRole","removeMember","useMembers","invites","invitesLoading","invitesError","fetchInvites","createInvite","cancelInvite","resendInvite","useInvites","useEffect","roleCounts","useMemo","acc","member","jsxs","jsx","canInvite","canCancel","pendingCount","ownerCount","adminCount","memberCount","StatsBar","MemberList","InviteForm","InviteList","PermissionsSection"],"mappings":";;;;;AAmBA,SAAwBA,EAAY,EAAE,eAAAC,KAAuD;AAC3F,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAkB,SAAS,GACvD;AAAA,IACJ,WAAAC;AAAA,IACA,eAAAC;AAAA,IACA,MAAAC;AAAA,IACA,WAAWC;AAAA,IACX,OAAOC;AAAA,IACP,WAAAC;AAAA,EAAA,IACEC,EAAA,GAEE;AAAA,IACJ,SAAAC;AAAA,IACA,WAAWC;AAAA,IACX,OAAOC;AAAA,IACP,cAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,cAAAC;AAAA,EAAA,IACEC,EAAWb,GAAW,MAAM,EAAE,GAC5B;AAAA,IACJ,SAAAc;AAAA,IACA,WAAWC;AAAA,IACX,OAAOC;AAAA,IACP,cAAAC;AAAA,IACA,cAAAC;AAAA,IACA,cAAAC;AAAA,IACA,cAAAC;AAAA,EAAA,IACEC,EAAWrB,GAAW,MAAM,EAAE;AAElC,EAAAsB,EAAU,MAAM;AACd,IAAItB,GAAW,OACbU,EAAA,GACAO,EAAA;AAAA,EAEJ,GAAG,CAACjB,GAAW,IAAIU,GAAcO,CAAY,CAAC;AAG9C,QAAMM,IAAaC;AAAA,IACjB,MACEjB,EAAQ;AAAA,MACN,CAACkB,GAAKC,OACJD,EAAIC,EAAO,IAAI,KAAKD,EAAIC,EAAO,IAAI,KAAK,KAAK,GACtCD;AAAA,MAET,CAAA;AAAA,IAAC;AAAA,IAEL,CAAClB,CAAO;AAAA,EAAA;AAGV,MAAIJ,KAAe,CAACH;AAClB,6BACG,OAAA,EAAI,WAAU,6BACb,UAAA,gBAAA2B,EAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,MAAA,gBAAAC,EAAC,QAAA,EAAK,WAAU,iCAAA,CAAiC;AAAA,MACjD,gBAAAA,EAAC,QAAA,EAAK,WAAU,6BAA4B,UAAA,0BAAA,CAAuB;AAAA,IAAA,EAAA,CACrE,EAAA,CACF;AAIJ,MAAIxB,KAAa,CAACJ;AAChB,6BACG,OAAA,EAAI,WAAU,6BACb,UAAA,gBAAA2B,EAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,MAAA,gBAAAC,EAAC,KAAA,EAAE,WAAU,sBAAsB,UAAAxB,EAAU,SAAQ;AAAA,MACrD,gBAAAwB,EAAC,YAAO,MAAK,UAAS,WAAU,uCAAsC,SAASvB,GAAW,UAAA,QAAA,CAE1F;AAAA,IAAA,EAAA,CACF,EAAA,CACF;AAIJ,MAAI,CAACL;AACH,WACE,gBAAA4B,EAAC,SAAI,WAAU,6BACb,4BAAC,OAAA,EAAI,WAAU,2BAA0B,UAAA,0BAAA,CAAuB,EAAA,CAClE;AAIJ,QAAMC,IAAY5B,EAAc,eAAe,GACzC6B,IAAY7B,EAAc,eAAe,GACzC8B,IAAejB,EAAQ,QACvBkB,IAAaT,EAAW,SAAS,GACjCU,IAAaV,EAAW,SAAS,GACjCW,IAAcX,EAAW,UAAU;AAEzC,SACE,gBAAAI,EAAC,OAAA,EAAI,WAAU,0BACb,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACO;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,EAAE,OAAO,UAAU,OAAOH,EAAA;AAAA,UAC1B,EAAE,OAAO,UAAU,OAAOC,EAAA;AAAA,UAC1B,EAAE,OAAO,WAAW,OAAOC,EAAA;AAAA,UAC3B,EAAE,OAAO,mBAAmB,OAAOH,EAAA;AAAA,QAAa;AAAA,MAClD;AAAA,IAAA;AAAA,IAGF,gBAAAJ,EAAC,OAAA,EAAI,WAAU,6CACb,UAAA;AAAA,MAAA,gBAAAC;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAW,oBAAoB/B,MAAc,YAAY,4BAA4B,EAAE;AAAA,UACvF,SAAS,MAAMC,EAAa,SAAS;AAAA,UACrC,iBAAeD,MAAc;AAAA,UAC7B,MAAK;AAAA,UACN,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAGD,gBAAA8B;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAW,oBAAoB9B,MAAc,YAAY,4BAA4B,EAAE;AAAA,UACvF,SAAS,MAAMC,EAAa,SAAS;AAAA,UACrC,iBAAeD,MAAc;AAAA,UAC7B,MAAK;AAAA,UACN,UAAA;AAAA,YAAA;AAAA,YACiBkC,IAAe,KAAK,KAAKA,CAAY;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAEtD7B,MAAS,WACR,gBAAA0B;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAW,oBAAoB/B,MAAc,gBAAgB,4BAA4B,EAAE;AAAA,UAC3F,SAAS,MAAMC,EAAa,aAAa;AAAA,UACzC,iBAAeD,MAAc;AAAA,UAC7B,MAAK;AAAA,UACN,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAED,GAEJ;AAAA,IAGA,gBAAA8B,EAAC,OAAA,EAAI,WAAU,4BAA2B,MAAK,YAC5C,UAAA;AAAA,MAAA9B,MAAc,aACb,gBAAA+B;AAAA,QAACQ;AAAA,QAAA;AAAA,UACC,SAAA7B;AAAA,UACA,eAAeX,EAAc;AAAA,UAC7B,WAAWY;AAAA,UACX,OAAOC,GAAc;AAAA,UACrB,WAAWR,EAAc,eAAe;AAAA,UACxC,gBAAgBA,EAAc,oBAAoB;AAAA,UAClD,cAAcU;AAAA,UACd,UAAUC;AAAA,QAAA;AAAA,MAAA;AAAA,MAIbf,MAAc,aACb,gBAAA8B,EAAC,OAAA,EAAI,WAAU,6BACZ,UAAA;AAAA,QAAAE,KACC,gBAAAF,EAAC,OAAA,EAAI,WAAU,6BACb,UAAA;AAAA,UAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,oCACb,UAAA,gBAAAA,EAAC,QAAG,WAAU,mCAAkC,6BAAe,EAAA,CACjE;AAAA,UACA,gBAAAA;AAAA,YAACS;AAAA,YAAA;AAAA,cACC,UAAUnB;AAAA,cACV,WAAWH;AAAA,cACX,OAAOC,GAAc;AAAA,YAAA;AAAA,UAAA;AAAA,QACvB,GACF;AAAA,QAGF,gBAAAY,EAAC,OAAA,EAAI,WAAU,6BACb,UAAA,gBAAAA;AAAA,UAACU;AAAA,UAAA;AAAA,YACC,SAAAxB;AAAA,YACA,WAAWC;AAAA,YACX,OAAOC,GAAc;AAAA,YACrB,WAAWc,KAAaD;AAAA,YACxB,UAAUC,IAAYX,IAAe;AAAA,YACrC,UAAUU,IAAYT,IAAe;AAAA,UAAA;AAAA,QAAA,EACvC,CACF;AAAA,MAAA,GACF;AAAA,MAGDvB,MAAc,iBAAiBK,MAAS,WAAW,gBAAA0B,EAACW,GAAA,EAAmB,UAAUrC,EAAA,CAAM;AAAA,IAAA,EAAA,CAC1F;AAAA,EAAA,GACF;AAEJ;"}
1
+ {"version":3,"file":"TeamSection-gUyP4YDM.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, { useMemo, useState, useEffect } 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 {\n activeOrg,\n hasPermission,\n role,\n isLoading: orgsLoading,\n error: orgsError,\n fetchOrgs,\n } = 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 (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 type=\"button\" className=\"cedros-button cedros-button-outline\" onClick={fetchOrgs}>\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\">No organizations found.</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","orgsLoading","orgsError","fetchOrgs","useOrgs","members","membersLoading","membersError","fetchMembers","updateMemberRole","removeMember","useMembers","invites","invitesLoading","invitesError","fetchInvites","createInvite","cancelInvite","resendInvite","useInvites","useEffect","roleCounts","useMemo","acc","member","jsxs","jsx","canInvite","canCancel","pendingCount","ownerCount","adminCount","memberCount","StatsBar","MemberList","InviteForm","InviteList","PermissionsSection"],"mappings":"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"}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("react"),s=require("./useUsersStatsSummary-DnsYtFGX.cjs"),m=require("./StatsBar-DTUZCwDD.cjs");function S({pluginContext:r,pageSize:d=20}){const[t,i]=l.useState(null),{statsItems:n,isLoading:c,error:a,refresh:o}=s.useUsersStatsSummary();return t?e.jsx("div",{className:"cedros-dashboard__section",children:e.jsx(s.AdminUserDetail,{userId:t.id,onBack:()=>i(null),currentUserId:r.userId})}):e.jsxs("div",{className:"cedros-dashboard__section",children:[e.jsx(m.StatsBar,{stats:n,isLoading:c,onRefresh:o}),a&&e.jsx("p",{className:"cedros-admin-error-inline",children:a}),e.jsx("p",{className:"cedros-dashboard__text-muted",children:"All registered users in the system. Requires system admin privileges."}),e.jsx(s.AdminUserList,{pageSize:d,currentUserId:r.userId,onUserClick:u=>i(u)})]})}exports.default=S;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("react"),s=require("./useUsersStatsSummary-CHRMrlk4.cjs"),m=require("./StatsBar-DTUZCwDD.cjs");function S({pluginContext:r,pageSize:d=20}){const[t,i]=l.useState(null),{statsItems:n,isLoading:c,error:a,refresh:o}=s.useUsersStatsSummary();return t?e.jsx("div",{className:"cedros-dashboard__section",children:e.jsx(s.AdminUserDetail,{userId:t.id,onBack:()=>i(null),currentUserId:r.userId})}):e.jsxs("div",{className:"cedros-dashboard__section",children:[e.jsx(m.StatsBar,{stats:n,isLoading:c,onRefresh:o}),a&&e.jsx("p",{className:"cedros-admin-error-inline",children:a}),e.jsx("p",{className:"cedros-dashboard__text-muted",children:"All registered users in the system. Requires system admin privileges."}),e.jsx(s.AdminUserList,{pageSize:d,currentUserId:r.userId,onUserClick:u=>i(u)})]})}exports.default=S;
@@ -1 +1 @@
1
- {"version":3,"file":"UsersSection-C1Tt0ePx.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, { 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 type { AdminUser } from '../../types';\nimport { useUsersStatsSummary } from '../../components/admin/hooks/useUsersStatsSummary';\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 } = useUsersStatsSummary();\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":["UsersSection","pluginContext","pageSize","selectedUser","setSelectedUser","useState","statsItems","isLoading","error","refresh","useUsersStatsSummary","jsx","AdminUserDetail","jsxs","StatsBar","AdminUserList","user"],"mappings":"8NAcA,SAAwBA,EAAa,CACnC,cAAAC,EACA,SAAAC,EAAW,EACb,EAAyC,CACvC,KAAM,CAACC,EAAcC,CAAe,EAAIC,EAAAA,SAA2B,IAAI,EACjE,CAAE,WAAAC,EAAY,UAAAC,EAAW,MAAAC,EAAO,QAAAC,CAAA,EAAYC,EAAAA,qBAAA,EAElD,OAAIP,EAEAQ,EAAAA,IAAC,MAAA,CAAI,UAAU,4BACb,SAAAA,EAAAA,IAACC,EAAAA,gBAAA,CACC,OAAQT,EAAa,GACrB,OAAQ,IAAMC,EAAgB,IAAI,EAClC,cAAeH,EAAc,MAAA,CAAA,EAEjC,EAKFY,EAAAA,KAAC,MAAA,CAAI,UAAU,4BACb,SAAA,CAAAF,EAAAA,IAACG,EAAAA,SAAA,CAAS,MAAOR,EAAY,UAAAC,EAAsB,UAAWE,EAAS,EACtED,GAASG,EAAAA,IAAC,IAAA,CAAE,UAAU,4BAA6B,SAAAH,EAAM,EAC1DG,EAAAA,IAAC,IAAA,CAAE,UAAU,+BAA+B,SAAA,wEAE5C,EACAA,EAAAA,IAACI,EAAAA,cAAA,CACC,SAAAb,EACA,cAAeD,EAAc,OAC7B,YAAce,GAASZ,EAAgBY,CAAI,CAAA,CAAA,CAC7C,EACF,CAEJ"}
1
+ {"version":3,"file":"UsersSection-8wLuD0fr.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, { 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 type { AdminUser } from '../../types';\nimport { useUsersStatsSummary } from '../../components/admin/hooks/useUsersStatsSummary';\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 } = useUsersStatsSummary();\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":["UsersSection","pluginContext","pageSize","selectedUser","setSelectedUser","useState","statsItems","isLoading","error","refresh","useUsersStatsSummary","jsx","AdminUserDetail","jsxs","StatsBar","AdminUserList","user"],"mappings":"8NAcA,SAAwBA,EAAa,CACnC,cAAAC,EACA,SAAAC,EAAW,EACb,EAAyC,CACvC,KAAM,CAACC,EAAcC,CAAe,EAAIC,EAAAA,SAA2B,IAAI,EACjE,CAAE,WAAAC,EAAY,UAAAC,EAAW,MAAAC,EAAO,QAAAC,CAAA,EAAYC,EAAAA,qBAAA,EAElD,OAAIP,EAEAQ,EAAAA,IAAC,MAAA,CAAI,UAAU,4BACb,SAAAA,EAAAA,IAACC,EAAAA,gBAAA,CACC,OAAQT,EAAa,GACrB,OAAQ,IAAMC,EAAgB,IAAI,EAClC,cAAeH,EAAc,MAAA,CAAA,EAEjC,EAKFY,EAAAA,KAAC,MAAA,CAAI,UAAU,4BACb,SAAA,CAAAF,EAAAA,IAACG,EAAAA,SAAA,CAAS,MAAOR,EAAY,UAAAC,EAAsB,UAAWE,EAAS,EACtED,GAASG,EAAAA,IAAC,IAAA,CAAE,UAAU,4BAA6B,SAAAH,EAAM,EAC1DG,EAAAA,IAAC,IAAA,CAAE,UAAU,+BAA+B,SAAA,wEAE5C,EACAA,EAAAA,IAACI,EAAAA,cAAA,CACC,SAAAb,EACA,cAAeD,EAAc,OAC7B,YAAce,GAASZ,EAAgBY,CAAI,CAAA,CAAA,CAC7C,EACF,CAEJ"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as s, jsxs as m } from "react/jsx-runtime";
2
2
  import { useState as l } from "react";
3
- import { u, A as h, a as f } from "./useUsersStatsSummary-BGeh3RnI.js";
3
+ import { u, A as h, a as f } from "./useUsersStatsSummary-B4_RBEYy.js";
4
4
  import { S as U } from "./StatsBar-BX-hHtTq.js";
5
5
  function A({
6
6
  pluginContext: e,
@@ -1 +1 @@
1
- {"version":3,"file":"UsersSection-Ct_E-MBF.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, { 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 type { AdminUser } from '../../types';\nimport { useUsersStatsSummary } from '../../components/admin/hooks/useUsersStatsSummary';\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 } = useUsersStatsSummary();\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":["UsersSection","pluginContext","pageSize","selectedUser","setSelectedUser","useState","statsItems","isLoading","error","refresh","useUsersStatsSummary","jsx","AdminUserDetail","jsxs","StatsBar","AdminUserList","user"],"mappings":";;;;AAcA,SAAwBA,EAAa;AAAA,EACnC,eAAAC;AAAA,EACA,UAAAC,IAAW;AACb,GAAyC;AACvC,QAAM,CAACC,GAAcC,CAAe,IAAIC,EAA2B,IAAI,GACjE,EAAE,YAAAC,GAAY,WAAAC,GAAW,OAAAC,GAAO,SAAAC,EAAA,IAAYC,EAAA;AAElD,SAAIP,IAEA,gBAAAQ,EAAC,OAAA,EAAI,WAAU,6BACb,UAAA,gBAAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,QAAQT,EAAa;AAAA,MACrB,QAAQ,MAAMC,EAAgB,IAAI;AAAA,MAClC,eAAeH,EAAc;AAAA,IAAA;AAAA,EAAA,GAEjC,IAKF,gBAAAY,EAAC,OAAA,EAAI,WAAU,6BACb,UAAA;AAAA,IAAA,gBAAAF,EAACG,GAAA,EAAS,OAAOR,GAAY,WAAAC,GAAsB,WAAWE,GAAS;AAAA,IACtED,KAAS,gBAAAG,EAAC,KAAA,EAAE,WAAU,6BAA6B,UAAAH,GAAM;AAAA,IAC1D,gBAAAG,EAAC,KAAA,EAAE,WAAU,gCAA+B,UAAA,yEAE5C;AAAA,IACA,gBAAAA;AAAA,MAACI;AAAA,MAAA;AAAA,QACC,UAAAb;AAAA,QACA,eAAeD,EAAc;AAAA,QAC7B,aAAa,CAACe,MAASZ,EAAgBY,CAAI;AAAA,MAAA;AAAA,IAAA;AAAA,EAC7C,GACF;AAEJ;"}
1
+ {"version":3,"file":"UsersSection-CnsFrG-6.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, { 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 type { AdminUser } from '../../types';\nimport { useUsersStatsSummary } from '../../components/admin/hooks/useUsersStatsSummary';\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 } = useUsersStatsSummary();\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":["UsersSection","pluginContext","pageSize","selectedUser","setSelectedUser","useState","statsItems","isLoading","error","refresh","useUsersStatsSummary","jsx","AdminUserDetail","jsxs","StatsBar","AdminUserList","user"],"mappings":";;;;AAcA,SAAwBA,EAAa;AAAA,EACnC,eAAAC;AAAA,EACA,UAAAC,IAAW;AACb,GAAyC;AACvC,QAAM,CAACC,GAAcC,CAAe,IAAIC,EAA2B,IAAI,GACjE,EAAE,YAAAC,GAAY,WAAAC,GAAW,OAAAC,GAAO,SAAAC,EAAA,IAAYC,EAAA;AAElD,SAAIP,IAEA,gBAAAQ,EAAC,OAAA,EAAI,WAAU,6BACb,UAAA,gBAAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,QAAQT,EAAa;AAAA,MACrB,QAAQ,MAAMC,EAAgB,IAAI;AAAA,MAClC,eAAeH,EAAc;AAAA,IAAA;AAAA,EAAA,GAEjC,IAKF,gBAAAY,EAAC,OAAA,EAAI,WAAU,6BACb,UAAA;AAAA,IAAA,gBAAAF,EAACG,GAAA,EAAS,OAAOR,GAAY,WAAAC,GAAsB,WAAWE,GAAS;AAAA,IACtED,KAAS,gBAAAG,EAAC,KAAA,EAAE,WAAU,6BAA6B,UAAAH,GAAM;AAAA,IAC1D,gBAAAG,EAAC,KAAA,EAAE,WAAU,gCAA+B,UAAA,yEAE5C;AAAA,IACA,gBAAAA;AAAA,MAACI;AAAA,MAAA;AAAA,QACC,UAAAb;AAAA,QACA,eAAeD,EAAc;AAAA,QAC7B,aAAa,CAACe,MAASZ,EAAgBY,CAAI;AAAA,MAAA;AAAA,IAAA;AAAA,EAC7C,GACF;AAEJ;"}
@@ -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-D-roPsRx.js";
5
+ import { u as y, A as N, S as E } from "./AutosaveStatus-DhGM3UUx.js";
6
6
  function b({
7
7
  title: i,
8
8
  description: d,
@@ -1 +1 @@
1
- {"version":3,"file":"WebhookSettings-D9IsXZJN.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
+ {"version":3,"file":"WebhookSettings-2hlLLyGd.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-H1x6IKOj.cjs");function o(){return e.jsx("div",{className:"cedros-dashboard__section",children:e.jsx(t.WebhookSettings,{})})}exports.default=o;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime");require("react");const t=require("./WebhookSettings-DOaydSWQ.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-C6X_JJcD.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
+ {"version":3,"file":"WebhookSettings-CoEoVRRO.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 +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-CZSwtgrL.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
+ "use strict";const e=require("react/jsx-runtime"),S=require("react"),f=require("./LoadingSpinner-d6sSxgQN.cjs"),p=require("./ErrorMessage-CHbYbVi2.cjs"),r=require("./AutosaveStatus-DfMPudTQ.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-H1x6IKOj.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"}
1
+ {"version":3,"file":"WebhookSettings-DOaydSWQ.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"}
@@ -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-D9IsXZJN.js";
3
+ import { W as t } from "./WebhookSettings-2hlLLyGd.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-BhIwucKb.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;"}
1
+ {"version":3,"file":"WebhookSettings-LS_wUimF.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;"}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./plugin-BwwJh2cY.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;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./plugin-DNFjEfYp.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;
@@ -1,4 +1,4 @@
1
- import { A as n, C as a, I as i, c as o, c as e, u as I } from "./plugin-CetHtdLq.js";
1
+ import { A as n, C as a, I as i, c as o, c as e, u as I } from "./plugin-WYMrRNbz.js";
2
2
  export {
3
3
  n as AdminShell,
4
4
  a as CEDROS_LOGIN_SECTION_IDS,
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./useAuth-B1yS_YiD.cjs"),o=require("./useCedrosLogin-DtJorrE7.cjs"),e=require("./EmailRegisterForm-xFb6MaVA.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;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./useAuth-2vgrAH-M.cjs"),o=require("./useCedrosLogin-DtJorrE7.cjs"),e=require("./EmailRegisterForm-ByYQ43yL.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;
@@ -167,6 +167,8 @@ export declare interface CedrosLoginConfig {
167
167
  theme?: ThemeMode;
168
168
  /** CSS variable overrides for custom theming */
169
169
  themeOverrides?: ThemeOverrides;
170
+ /** Disable all default cedros styles. Use for custom design systems. */
171
+ unstyled?: boolean;
170
172
  /** API request timeout in ms. Default: 10000 */
171
173
  requestTimeout?: number;
172
174
  /** Retry attempts on transient errors. Default: 2 */
@@ -286,12 +288,18 @@ declare interface EmailOptInConfig {
286
288
  /**
287
289
  * Email/password registration form
288
290
  */
289
- export declare function EmailRegisterForm({ onSuccess, onSwitchToLogin, className, }: EmailRegisterFormProps): JSX.Element;
291
+ export declare function EmailRegisterForm({ onSuccess, onSwitchToLogin, className, accessCode: accessCodeProp, }: EmailRegisterFormProps): JSX.Element;
290
292
 
291
293
  declare interface EmailRegisterFormProps {
292
294
  onSuccess?: () => void;
293
295
  onSwitchToLogin?: () => void;
294
296
  className?: string;
297
+ /**
298
+ * Access code value controlled by the parent (e.g. LoginForm).
299
+ * When provided, the internal access code input is hidden and this value
300
+ * is used directly. Allows LoginForm to show a single shared field.
301
+ */
302
+ accessCode?: string;
295
303
  }
296
304
 
297
305
  /**
@@ -626,7 +634,7 @@ export declare function useEmailAuth(): UseEmailAuthReturn;
626
634
  declare interface UseEmailAuthReturn {
627
635
  /** Login - may return mfaRequired if 2FA is enabled */
628
636
  login: (email: string, password: string) => Promise<LoginResult>;
629
- register: (email: string, password: string, name?: string, referral?: string) => Promise<AuthResponse>;
637
+ register: (email: string, password: string, name?: string, referral?: string, accessCode?: string) => Promise<AuthResponse>;
630
638
  isLoading: boolean;
631
639
  error: AuthError | null;
632
640
  clearError: () => void;
@@ -1,6 +1,6 @@
1
- import { C as s, u as a } from "./useAuth-l-itM5am.js";
1
+ import { C as s, u as a } from "./useAuth-CNflw856.js";
2
2
  import { u as i } from "./useCedrosLogin-CFfID-0i.js";
3
- import { E as t, a as u, P as p, u as d } from "./EmailRegisterForm-p2X5QP58.js";
3
+ import { E as t, a as u, P as p, u as d } from "./EmailRegisterForm-DMUcNQT-.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";
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./useAuth-B1yS_YiD.cjs"),r=require("./useCedrosLogin-DtJorrE7.cjs"),o=require("./GoogleLoginButton-2zNTIKMm.cjs"),n=require("./LoadingSpinner-d6sSxgQN.cjs"),s=require("./ErrorMessage-CHbYbVi2.cjs");exports.CedrosLoginProvider=e.CedrosLoginProvider;exports.useAuth=e.useAuth;exports.useCedrosLogin=r.useCedrosLogin;exports.GoogleLoginButton=o.GoogleLoginButton;exports.useGoogleAuth=o.useGoogleAuth;exports.LoadingSpinner=n.LoadingSpinner;exports.ErrorMessage=s.ErrorMessage;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./useAuth-2vgrAH-M.cjs"),r=require("./useCedrosLogin-DtJorrE7.cjs"),o=require("./GoogleLoginButton-DEwtBp56.cjs"),n=require("./LoadingSpinner-d6sSxgQN.cjs"),s=require("./ErrorMessage-CHbYbVi2.cjs");exports.CedrosLoginProvider=e.CedrosLoginProvider;exports.useAuth=e.useAuth;exports.useCedrosLogin=r.useCedrosLogin;exports.GoogleLoginButton=o.GoogleLoginButton;exports.useGoogleAuth=o.useGoogleAuth;exports.LoadingSpinner=n.LoadingSpinner;exports.ErrorMessage=s.ErrorMessage;
@@ -166,6 +166,8 @@ export declare interface CedrosLoginConfig {
166
166
  theme?: ThemeMode;
167
167
  /** CSS variable overrides for custom theming */
168
168
  themeOverrides?: ThemeOverrides;
169
+ /** Disable all default cedros styles. Use for custom design systems. */
170
+ unstyled?: boolean;
169
171
  /** API request timeout in ms. Default: 10000 */
170
172
  requestTimeout?: number;
171
173
  /** Retry attempts on transient errors. Default: 2 */
@@ -332,7 +334,7 @@ declare interface FormConfig {
332
334
  /**
333
335
  * Google OAuth login button
334
336
  */
335
- export declare function GoogleLoginButton({ onSuccess, onError, className, variant, size, disabled, }: GoogleLoginButtonProps): JSX.Element;
337
+ export declare function GoogleLoginButton({ onSuccess, onError, className, variant, size, disabled, accessCode, }: GoogleLoginButtonProps): JSX.Element;
336
338
 
337
339
  declare interface GoogleLoginButtonProps {
338
340
  onSuccess?: () => void;
@@ -341,6 +343,8 @@ declare interface GoogleLoginButtonProps {
341
343
  variant?: 'default' | 'outline';
342
344
  size?: 'sm' | 'md' | 'lg';
343
345
  disabled?: boolean;
346
+ /** Access code forwarded to the server when this flow creates a new account. */
347
+ accessCode?: string;
344
348
  }
345
349
 
346
350
  /**
@@ -564,7 +568,8 @@ export declare function useCedrosLogin(): CedrosLoginContextValue;
564
568
  export declare function useGoogleAuth(): UseGoogleAuthReturn;
565
569
 
566
570
  declare interface UseGoogleAuthReturn {
567
- signIn: () => Promise<AuthResponse>;
571
+ /** @param accessCode Optional signup access code, forwarded to the server on new registrations. */
572
+ signIn: (accessCode?: string) => Promise<AuthResponse>;
568
573
  isLoading: boolean;
569
574
  isInitialized: boolean;
570
575
  error: AuthError | null;
@@ -1,6 +1,6 @@
1
- import { C as e, u as s } from "./useAuth-l-itM5am.js";
1
+ import { C as e, u as s } from "./useAuth-CNflw856.js";
2
2
  import { u as t } from "./useCedrosLogin-CFfID-0i.js";
3
- import { G as g, u as n } from "./GoogleLoginButton-C1WNu7W3.js";
3
+ import { G as g, u as n } from "./GoogleLoginButton-DwyxvhnL.js";
4
4
  import { L as p } from "./LoadingSpinner-6vml-zwr.js";
5
5
  import { E as m } from "./ErrorMessage-CcEK0pYO.js";
6
6
  export {