@clerk/ui 1.13.0-snapshot.v20260520191127 → 1.13.0

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 (250) hide show
  1. package/dist/ClerkUI.js +2 -2
  2. package/dist/common/CustomPageContentContainer.js +3 -2
  3. package/dist/common/CustomPageContentContainer.js.map +1 -1
  4. package/dist/components/OrganizationProfile/OrganizationAPIKeysPage.js +3 -2
  5. package/dist/components/OrganizationProfile/OrganizationAPIKeysPage.js.map +1 -1
  6. package/dist/components/OrganizationProfile/OrganizationBillingPage.js +3 -2
  7. package/dist/components/OrganizationProfile/OrganizationBillingPage.js.map +1 -1
  8. package/dist/components/OrganizationProfile/OrganizationGeneralPage.js +3 -2
  9. package/dist/components/OrganizationProfile/OrganizationGeneralPage.js.map +1 -1
  10. package/dist/components/OrganizationProfile/OrganizationMembers.js +3 -2
  11. package/dist/components/OrganizationProfile/OrganizationMembers.js.map +1 -1
  12. package/dist/components/OrganizationProfile/OrganizationPlansPage.js +3 -2
  13. package/dist/components/OrganizationProfile/OrganizationPlansPage.js.map +1 -1
  14. package/dist/components/PaymentAttempts/PaymentAttemptPage.js +5 -4
  15. package/dist/components/PaymentAttempts/PaymentAttemptPage.js.map +1 -1
  16. package/dist/components/Statements/StatementPage.js +5 -4
  17. package/dist/components/Statements/StatementPage.js.map +1 -1
  18. package/dist/components/UserProfile/APIKeysPage.js +3 -2
  19. package/dist/components/UserProfile/APIKeysPage.js.map +1 -1
  20. package/dist/components/UserProfile/AccountPage.js +3 -2
  21. package/dist/components/UserProfile/AccountPage.js.map +1 -1
  22. package/dist/components/UserProfile/BillingPage.js +3 -2
  23. package/dist/components/UserProfile/BillingPage.js.map +1 -1
  24. package/dist/components/UserProfile/PlansPage.js +3 -2
  25. package/dist/components/UserProfile/PlansPage.js.map +1 -1
  26. package/dist/components/UserProfile/SecurityPage.js +3 -2
  27. package/dist/components/UserProfile/SecurityPage.js.map +1 -1
  28. package/dist/{configureSSO_ui_5da28c_1.13.0-snapshot.v20260520191127.js → configureSSO_ui_19fdba_1.13.0.js} +1 -1
  29. package/dist/{configureSSO_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → configureSSO_ui_23a865_1.13.0.js} +1 -1
  30. package/dist/{configureSSO_ui_f375f1_1.13.0-snapshot.v20260520191127.js → configureSSO_ui_b11bf0_1.13.0.js} +1 -1
  31. package/dist/elements/ProfileCard/ProfileCardContent.js +0 -6
  32. package/dist/elements/ProfileCard/ProfileCardContent.js.map +1 -1
  33. package/dist/elements/ProfileCard/ProfileCardPage.js +35 -0
  34. package/dist/elements/ProfileCard/ProfileCardPage.js.map +1 -0
  35. package/dist/elements/ProfileCard/index.js +3 -1
  36. package/dist/elements/ProfileCard/index.js.map +1 -1
  37. package/dist/foundations/defaultFoundations.d.ts +153 -153
  38. package/dist/index.js +1 -1
  39. package/dist/lazyModules/components.d.ts +21 -21
  40. package/dist/lazyModules/components.d.ts.map +1 -1
  41. package/dist/no-rhc/ClerkUI.js +2 -2
  42. package/dist/no-rhc/common/CustomPageContentContainer.js +3 -2
  43. package/dist/no-rhc/common/CustomPageContentContainer.js.map +1 -1
  44. package/dist/no-rhc/components/OrganizationProfile/OrganizationAPIKeysPage.js +3 -2
  45. package/dist/no-rhc/components/OrganizationProfile/OrganizationAPIKeysPage.js.map +1 -1
  46. package/dist/no-rhc/components/OrganizationProfile/OrganizationBillingPage.js +3 -2
  47. package/dist/no-rhc/components/OrganizationProfile/OrganizationBillingPage.js.map +1 -1
  48. package/dist/no-rhc/components/OrganizationProfile/OrganizationGeneralPage.js +3 -2
  49. package/dist/no-rhc/components/OrganizationProfile/OrganizationGeneralPage.js.map +1 -1
  50. package/dist/no-rhc/components/OrganizationProfile/OrganizationMembers.js +3 -2
  51. package/dist/no-rhc/components/OrganizationProfile/OrganizationMembers.js.map +1 -1
  52. package/dist/no-rhc/components/OrganizationProfile/OrganizationPlansPage.js +3 -2
  53. package/dist/no-rhc/components/OrganizationProfile/OrganizationPlansPage.js.map +1 -1
  54. package/dist/no-rhc/components/PaymentAttempts/PaymentAttemptPage.js +5 -4
  55. package/dist/no-rhc/components/PaymentAttempts/PaymentAttemptPage.js.map +1 -1
  56. package/dist/no-rhc/components/Statements/StatementPage.js +5 -4
  57. package/dist/no-rhc/components/Statements/StatementPage.js.map +1 -1
  58. package/dist/no-rhc/components/UserProfile/APIKeysPage.js +3 -2
  59. package/dist/no-rhc/components/UserProfile/APIKeysPage.js.map +1 -1
  60. package/dist/no-rhc/components/UserProfile/AccountPage.js +3 -2
  61. package/dist/no-rhc/components/UserProfile/AccountPage.js.map +1 -1
  62. package/dist/no-rhc/components/UserProfile/BillingPage.js +3 -2
  63. package/dist/no-rhc/components/UserProfile/BillingPage.js.map +1 -1
  64. package/dist/no-rhc/components/UserProfile/PlansPage.js +3 -2
  65. package/dist/no-rhc/components/UserProfile/PlansPage.js.map +1 -1
  66. package/dist/no-rhc/components/UserProfile/SecurityPage.js +3 -2
  67. package/dist/no-rhc/components/UserProfile/SecurityPage.js.map +1 -1
  68. package/dist/no-rhc/elements/ProfileCard/ProfileCardContent.js +0 -6
  69. package/dist/no-rhc/elements/ProfileCard/ProfileCardContent.js.map +1 -1
  70. package/dist/no-rhc/elements/ProfileCard/ProfileCardPage.js +35 -0
  71. package/dist/no-rhc/elements/ProfileCard/ProfileCardPage.js.map +1 -0
  72. package/dist/no-rhc/elements/ProfileCard/index.js +3 -1
  73. package/dist/no-rhc/elements/ProfileCard/index.js.map +1 -1
  74. package/dist/no-rhc/index.js +1 -1
  75. package/dist/op-api-keys-page_ui_19fdba_1.13.0.js +1 -0
  76. package/dist/op-api-keys-page_ui_23a865_1.13.0.js +1 -0
  77. package/dist/op-api-keys-page_ui_b11bf0_1.13.0.js +1 -0
  78. package/dist/op-billing-page_ui_19fdba_1.13.0.js +1 -0
  79. package/dist/op-billing-page_ui_23a865_1.13.0.js +1 -0
  80. package/dist/op-billing-page_ui_b11bf0_1.13.0.js +1 -0
  81. package/dist/op-plans-page_ui_19fdba_1.13.0.js +1 -0
  82. package/dist/op-plans-page_ui_23a865_1.13.0.js +1 -0
  83. package/dist/op-plans-page_ui_b11bf0_1.13.0.js +1 -0
  84. package/dist/organizationprofile_ui_19fdba_1.13.0.js +1 -0
  85. package/dist/organizationprofile_ui_23a865_1.13.0.js +1 -0
  86. package/dist/organizationprofile_ui_b11bf0_1.13.0.js +1 -0
  87. package/dist/payment-attempt-page_ui_19fdba_1.13.0.js +1 -0
  88. package/dist/payment-attempt-page_ui_23a865_1.13.0.js +1 -0
  89. package/dist/payment-attempt-page_ui_b11bf0_1.13.0.js +1 -0
  90. package/dist/server.js +1 -1
  91. package/dist/statement-page_ui_19fdba_1.13.0.js +1 -0
  92. package/dist/statement-page_ui_23a865_1.13.0.js +1 -0
  93. package/dist/statement-page_ui_b11bf0_1.13.0.js +1 -0
  94. package/dist/{ui-common_ui_5da28c_1.13.0-snapshot.v20260520191127.js → ui-common_ui_19fdba_1.13.0.js} +2 -2
  95. package/dist/{ui-common_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → ui-common_ui_23a865_1.13.0.js} +2 -2
  96. package/dist/ui-common_ui_b11bf0_1.13.0.js +1 -0
  97. package/dist/ui.browser.js +1 -1
  98. package/dist/ui.legacy.browser.js +1 -1
  99. package/dist/ui.shared.browser.js +2 -2
  100. package/dist/up-api-keys-page_ui_19fdba_1.13.0.js +1 -0
  101. package/dist/up-api-keys-page_ui_23a865_1.13.0.js +1 -0
  102. package/dist/up-api-keys-page_ui_b11bf0_1.13.0.js +1 -0
  103. package/dist/up-billing-page_ui_19fdba_1.13.0.js +1 -0
  104. package/dist/up-billing-page_ui_23a865_1.13.0.js +1 -0
  105. package/dist/up-billing-page_ui_b11bf0_1.13.0.js +1 -0
  106. package/dist/up-plans-page_ui_19fdba_1.13.0.js +1 -0
  107. package/dist/up-plans-page_ui_23a865_1.13.0.js +1 -0
  108. package/dist/up-plans-page_ui_b11bf0_1.13.0.js +1 -0
  109. package/dist/{userprofile_ui_5da28c_1.13.0-snapshot.v20260520191127.js → userprofile_ui_19fdba_1.13.0.js} +1 -1
  110. package/dist/{userprofile_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → userprofile_ui_23a865_1.13.0.js} +1 -1
  111. package/dist/{userprofile_ui_f375f1_1.13.0-snapshot.v20260520191127.js → userprofile_ui_b11bf0_1.13.0.js} +1 -1
  112. package/package.json +3 -3
  113. package/dist/op-api-keys-page_ui_04ee6b_1.13.0-snapshot.v20260520191127.js +0 -1
  114. package/dist/op-api-keys-page_ui_5da28c_1.13.0-snapshot.v20260520191127.js +0 -1
  115. package/dist/op-api-keys-page_ui_f375f1_1.13.0-snapshot.v20260520191127.js +0 -1
  116. package/dist/op-billing-page_ui_04ee6b_1.13.0-snapshot.v20260520191127.js +0 -1
  117. package/dist/op-billing-page_ui_5da28c_1.13.0-snapshot.v20260520191127.js +0 -1
  118. package/dist/op-billing-page_ui_f375f1_1.13.0-snapshot.v20260520191127.js +0 -1
  119. package/dist/op-plans-page_ui_04ee6b_1.13.0-snapshot.v20260520191127.js +0 -1
  120. package/dist/op-plans-page_ui_5da28c_1.13.0-snapshot.v20260520191127.js +0 -1
  121. package/dist/op-plans-page_ui_f375f1_1.13.0-snapshot.v20260520191127.js +0 -1
  122. package/dist/organizationprofile_ui_04ee6b_1.13.0-snapshot.v20260520191127.js +0 -1
  123. package/dist/organizationprofile_ui_5da28c_1.13.0-snapshot.v20260520191127.js +0 -1
  124. package/dist/organizationprofile_ui_f375f1_1.13.0-snapshot.v20260520191127.js +0 -1
  125. package/dist/payment-attempt-page_ui_04ee6b_1.13.0-snapshot.v20260520191127.js +0 -1
  126. package/dist/payment-attempt-page_ui_5da28c_1.13.0-snapshot.v20260520191127.js +0 -1
  127. package/dist/payment-attempt-page_ui_f375f1_1.13.0-snapshot.v20260520191127.js +0 -1
  128. package/dist/statement-page_ui_04ee6b_1.13.0-snapshot.v20260520191127.js +0 -1
  129. package/dist/statement-page_ui_5da28c_1.13.0-snapshot.v20260520191127.js +0 -1
  130. package/dist/statement-page_ui_f375f1_1.13.0-snapshot.v20260520191127.js +0 -1
  131. package/dist/ui-common_ui_f375f1_1.13.0-snapshot.v20260520191127.js +0 -1
  132. package/dist/up-api-keys-page_ui_04ee6b_1.13.0-snapshot.v20260520191127.js +0 -1
  133. package/dist/up-api-keys-page_ui_5da28c_1.13.0-snapshot.v20260520191127.js +0 -1
  134. package/dist/up-api-keys-page_ui_f375f1_1.13.0-snapshot.v20260520191127.js +0 -1
  135. package/dist/up-billing-page_ui_04ee6b_1.13.0-snapshot.v20260520191127.js +0 -1
  136. package/dist/up-billing-page_ui_5da28c_1.13.0-snapshot.v20260520191127.js +0 -1
  137. package/dist/up-billing-page_ui_f375f1_1.13.0-snapshot.v20260520191127.js +0 -1
  138. package/dist/up-plans-page_ui_04ee6b_1.13.0-snapshot.v20260520191127.js +0 -1
  139. package/dist/up-plans-page_ui_5da28c_1.13.0-snapshot.v20260520191127.js +0 -1
  140. package/dist/up-plans-page_ui_f375f1_1.13.0-snapshot.v20260520191127.js +0 -1
  141. /package/dist/{295_ui_5da28c_1.13.0-snapshot.v20260520191127.js → 295_ui_19fdba_1.13.0.js} +0 -0
  142. /package/dist/{295_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → 295_ui_23a865_1.13.0.js} +0 -0
  143. /package/dist/{295_ui_f375f1_1.13.0-snapshot.v20260520191127.js → 295_ui_b11bf0_1.13.0.js} +0 -0
  144. /package/dist/{37_ui_5da28c_1.13.0-snapshot.v20260520191127.js → 37_ui_19fdba_1.13.0.js} +0 -0
  145. /package/dist/{37_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → 37_ui_23a865_1.13.0.js} +0 -0
  146. /package/dist/{37_ui_f375f1_1.13.0-snapshot.v20260520191127.js → 37_ui_b11bf0_1.13.0.js} +0 -0
  147. /package/dist/{606_ui_5da28c_1.13.0-snapshot.v20260520191127.js → 606_ui_19fdba_1.13.0.js} +0 -0
  148. /package/dist/{606_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → 606_ui_23a865_1.13.0.js} +0 -0
  149. /package/dist/{606_ui_f375f1_1.13.0-snapshot.v20260520191127.js → 606_ui_b11bf0_1.13.0.js} +0 -0
  150. /package/dist/{718_ui_5da28c_1.13.0-snapshot.v20260520191127.js → 718_ui_19fdba_1.13.0.js} +0 -0
  151. /package/dist/{718_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → 718_ui_23a865_1.13.0.js} +0 -0
  152. /package/dist/{718_ui_f375f1_1.13.0-snapshot.v20260520191127.js → 718_ui_b11bf0_1.13.0.js} +0 -0
  153. /package/dist/{746_ui_5da28c_1.13.0-snapshot.v20260520191127.js → 746_ui_19fdba_1.13.0.js} +0 -0
  154. /package/dist/{746_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → 746_ui_23a865_1.13.0.js} +0 -0
  155. /package/dist/{746_ui_f375f1_1.13.0-snapshot.v20260520191127.js → 746_ui_b11bf0_1.13.0.js} +0 -0
  156. /package/dist/{76_ui_5da28c_1.13.0-snapshot.v20260520191127.js → 76_ui_19fdba_1.13.0.js} +0 -0
  157. /package/dist/{76_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → 76_ui_23a865_1.13.0.js} +0 -0
  158. /package/dist/{76_ui_f375f1_1.13.0-snapshot.v20260520191127.js → 76_ui_b11bf0_1.13.0.js} +0 -0
  159. /package/dist/{829_ui_5da28c_1.13.0-snapshot.v20260520191127.js → 829_ui_19fdba_1.13.0.js} +0 -0
  160. /package/dist/{829_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → 829_ui_23a865_1.13.0.js} +0 -0
  161. /package/dist/{829_ui_f375f1_1.13.0-snapshot.v20260520191127.js → 829_ui_b11bf0_1.13.0.js} +0 -0
  162. /package/dist/{apiKeys_ui_5da28c_1.13.0-snapshot.v20260520191127.js → apiKeys_ui_19fdba_1.13.0.js} +0 -0
  163. /package/dist/{apiKeys_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → apiKeys_ui_23a865_1.13.0.js} +0 -0
  164. /package/dist/{apiKeys_ui_f375f1_1.13.0-snapshot.v20260520191127.js → apiKeys_ui_b11bf0_1.13.0.js} +0 -0
  165. /package/dist/{blankcaptcha_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → blankcaptcha_ui_19fdba_1.13.0.js} +0 -0
  166. /package/dist/{blankcaptcha_ui_5da28c_1.13.0-snapshot.v20260520191127.js → blankcaptcha_ui_23a865_1.13.0.js} +0 -0
  167. /package/dist/{blankcaptcha_ui_f375f1_1.13.0-snapshot.v20260520191127.js → blankcaptcha_ui_b11bf0_1.13.0.js} +0 -0
  168. /package/dist/{checkout_ui_5da28c_1.13.0-snapshot.v20260520191127.js → checkout_ui_19fdba_1.13.0.js} +0 -0
  169. /package/dist/{checkout_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → checkout_ui_23a865_1.13.0.js} +0 -0
  170. /package/dist/{checkout_ui_f375f1_1.13.0-snapshot.v20260520191127.js → checkout_ui_b11bf0_1.13.0.js} +0 -0
  171. /package/dist/{copy-api-key-modal_ui_5da28c_1.13.0-snapshot.v20260520191127.js → copy-api-key-modal_ui_19fdba_1.13.0.js} +0 -0
  172. /package/dist/{copy-api-key-modal_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → copy-api-key-modal_ui_23a865_1.13.0.js} +0 -0
  173. /package/dist/{copy-api-key-modal_ui_f375f1_1.13.0-snapshot.v20260520191127.js → copy-api-key-modal_ui_b11bf0_1.13.0.js} +0 -0
  174. /package/dist/{createorganization_ui_5da28c_1.13.0-snapshot.v20260520191127.js → createorganization_ui_19fdba_1.13.0.js} +0 -0
  175. /package/dist/{createorganization_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → createorganization_ui_23a865_1.13.0.js} +0 -0
  176. /package/dist/{createorganization_ui_f375f1_1.13.0-snapshot.v20260520191127.js → createorganization_ui_b11bf0_1.13.0.js} +0 -0
  177. /package/dist/{enableOrganizationsPrompt_ui_5da28c_1.13.0-snapshot.v20260520191127.js → enableOrganizationsPrompt_ui_19fdba_1.13.0.js} +0 -0
  178. /package/dist/{enableOrganizationsPrompt_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → enableOrganizationsPrompt_ui_23a865_1.13.0.js} +0 -0
  179. /package/dist/{enableOrganizationsPrompt_ui_f375f1_1.13.0-snapshot.v20260520191127.js → enableOrganizationsPrompt_ui_b11bf0_1.13.0.js} +0 -0
  180. /package/dist/{framework_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → framework_ui_23a865_1.13.0.js} +0 -0
  181. /package/dist/{framework_ui_f375f1_1.13.0-snapshot.v20260520191127.js → framework_ui_b11bf0_1.13.0.js} +0 -0
  182. /package/dist/{impersonationfab_ui_5da28c_1.13.0-snapshot.v20260520191127.js → impersonationfab_ui_19fdba_1.13.0.js} +0 -0
  183. /package/dist/{impersonationfab_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → impersonationfab_ui_23a865_1.13.0.js} +0 -0
  184. /package/dist/{impersonationfab_ui_f375f1_1.13.0-snapshot.v20260520191127.js → impersonationfab_ui_b11bf0_1.13.0.js} +0 -0
  185. /package/dist/{keylessPrompt_ui_5da28c_1.13.0-snapshot.v20260520191127.js → keylessPrompt_ui_19fdba_1.13.0.js} +0 -0
  186. /package/dist/{keylessPrompt_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → keylessPrompt_ui_23a865_1.13.0.js} +0 -0
  187. /package/dist/{keylessPrompt_ui_f375f1_1.13.0-snapshot.v20260520191127.js → keylessPrompt_ui_b11bf0_1.13.0.js} +0 -0
  188. /package/dist/{oauthConsent_ui_5da28c_1.13.0-snapshot.v20260520191127.js → oauthConsent_ui_19fdba_1.13.0.js} +0 -0
  189. /package/dist/{oauthConsent_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → oauthConsent_ui_23a865_1.13.0.js} +0 -0
  190. /package/dist/{oauthConsent_ui_f375f1_1.13.0-snapshot.v20260520191127.js → oauthConsent_ui_b11bf0_1.13.0.js} +0 -0
  191. /package/dist/{onetap_ui_5da28c_1.13.0-snapshot.v20260520191127.js → onetap_ui_19fdba_1.13.0.js} +0 -0
  192. /package/dist/{onetap_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → onetap_ui_23a865_1.13.0.js} +0 -0
  193. /package/dist/{onetap_ui_f375f1_1.13.0-snapshot.v20260520191127.js → onetap_ui_b11bf0_1.13.0.js} +0 -0
  194. /package/dist/{organizationlist_ui_5da28c_1.13.0-snapshot.v20260520191127.js → organizationlist_ui_19fdba_1.13.0.js} +0 -0
  195. /package/dist/{organizationlist_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → organizationlist_ui_23a865_1.13.0.js} +0 -0
  196. /package/dist/{organizationlist_ui_f375f1_1.13.0-snapshot.v20260520191127.js → organizationlist_ui_b11bf0_1.13.0.js} +0 -0
  197. /package/dist/{organizationswitcher_ui_5da28c_1.13.0-snapshot.v20260520191127.js → organizationswitcher_ui_19fdba_1.13.0.js} +0 -0
  198. /package/dist/{organizationswitcher_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → organizationswitcher_ui_23a865_1.13.0.js} +0 -0
  199. /package/dist/{organizationswitcher_ui_f375f1_1.13.0-snapshot.v20260520191127.js → organizationswitcher_ui_b11bf0_1.13.0.js} +0 -0
  200. /package/dist/{planDetails_ui_5da28c_1.13.0-snapshot.v20260520191127.js → planDetails_ui_19fdba_1.13.0.js} +0 -0
  201. /package/dist/{planDetails_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → planDetails_ui_23a865_1.13.0.js} +0 -0
  202. /package/dist/{planDetails_ui_f375f1_1.13.0-snapshot.v20260520191127.js → planDetails_ui_b11bf0_1.13.0.js} +0 -0
  203. /package/dist/{prefetchorganizationlist_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → prefetchorganizationlist_ui_19fdba_1.13.0.js} +0 -0
  204. /package/dist/{prefetchorganizationlist_ui_5da28c_1.13.0-snapshot.v20260520191127.js → prefetchorganizationlist_ui_23a865_1.13.0.js} +0 -0
  205. /package/dist/{prefetchorganizationlist_ui_f375f1_1.13.0-snapshot.v20260520191127.js → prefetchorganizationlist_ui_b11bf0_1.13.0.js} +0 -0
  206. /package/dist/{pricingTable_ui_5da28c_1.13.0-snapshot.v20260520191127.js → pricingTable_ui_19fdba_1.13.0.js} +0 -0
  207. /package/dist/{pricingTable_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → pricingTable_ui_23a865_1.13.0.js} +0 -0
  208. /package/dist/{pricingTable_ui_f375f1_1.13.0-snapshot.v20260520191127.js → pricingTable_ui_b11bf0_1.13.0.js} +0 -0
  209. /package/dist/{revoke-api-key-modal_ui_5da28c_1.13.0-snapshot.v20260520191127.js → revoke-api-key-modal_ui_19fdba_1.13.0.js} +0 -0
  210. /package/dist/{revoke-api-key-modal_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → revoke-api-key-modal_ui_23a865_1.13.0.js} +0 -0
  211. /package/dist/{revoke-api-key-modal_ui_f375f1_1.13.0-snapshot.v20260520191127.js → revoke-api-key-modal_ui_b11bf0_1.13.0.js} +0 -0
  212. /package/dist/{sessionTasks_ui_5da28c_1.13.0-snapshot.v20260520191127.js → sessionTasks_ui_19fdba_1.13.0.js} +0 -0
  213. /package/dist/{sessionTasks_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → sessionTasks_ui_23a865_1.13.0.js} +0 -0
  214. /package/dist/{sessionTasks_ui_f375f1_1.13.0-snapshot.v20260520191127.js → sessionTasks_ui_b11bf0_1.13.0.js} +0 -0
  215. /package/dist/{signin_ui_5da28c_1.13.0-snapshot.v20260520191127.js → signin_ui_19fdba_1.13.0.js} +0 -0
  216. /package/dist/{signin_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → signin_ui_23a865_1.13.0.js} +0 -0
  217. /package/dist/{signin_ui_f375f1_1.13.0-snapshot.v20260520191127.js → signin_ui_b11bf0_1.13.0.js} +0 -0
  218. /package/dist/{signup_ui_5da28c_1.13.0-snapshot.v20260520191127.js → signup_ui_19fdba_1.13.0.js} +0 -0
  219. /package/dist/{signup_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → signup_ui_23a865_1.13.0.js} +0 -0
  220. /package/dist/{signup_ui_f375f1_1.13.0-snapshot.v20260520191127.js → signup_ui_b11bf0_1.13.0.js} +0 -0
  221. /package/dist/{subscriptionDetails_ui_5da28c_1.13.0-snapshot.v20260520191127.js → subscriptionDetails_ui_19fdba_1.13.0.js} +0 -0
  222. /package/dist/{subscriptionDetails_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → subscriptionDetails_ui_23a865_1.13.0.js} +0 -0
  223. /package/dist/{subscriptionDetails_ui_f375f1_1.13.0-snapshot.v20260520191127.js → subscriptionDetails_ui_b11bf0_1.13.0.js} +0 -0
  224. /package/dist/{taskChooseOrganization_ui_5da28c_1.13.0-snapshot.v20260520191127.js → taskChooseOrganization_ui_19fdba_1.13.0.js} +0 -0
  225. /package/dist/{taskChooseOrganization_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → taskChooseOrganization_ui_23a865_1.13.0.js} +0 -0
  226. /package/dist/{taskChooseOrganization_ui_f375f1_1.13.0-snapshot.v20260520191127.js → taskChooseOrganization_ui_b11bf0_1.13.0.js} +0 -0
  227. /package/dist/{taskResetPassword_ui_5da28c_1.13.0-snapshot.v20260520191127.js → taskResetPassword_ui_19fdba_1.13.0.js} +0 -0
  228. /package/dist/{taskResetPassword_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → taskResetPassword_ui_23a865_1.13.0.js} +0 -0
  229. /package/dist/{taskResetPassword_ui_f375f1_1.13.0-snapshot.v20260520191127.js → taskResetPassword_ui_b11bf0_1.13.0.js} +0 -0
  230. /package/dist/{taskSetupMFA_ui_5da28c_1.13.0-snapshot.v20260520191127.js → taskSetupMFA_ui_19fdba_1.13.0.js} +0 -0
  231. /package/dist/{taskSetupMFA_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → taskSetupMFA_ui_23a865_1.13.0.js} +0 -0
  232. /package/dist/{taskSetupMFA_ui_f375f1_1.13.0-snapshot.v20260520191127.js → taskSetupMFA_ui_b11bf0_1.13.0.js} +0 -0
  233. /package/dist/{useravatar_ui_5da28c_1.13.0-snapshot.v20260520191127.js → useravatar_ui_19fdba_1.13.0.js} +0 -0
  234. /package/dist/{useravatar_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → useravatar_ui_23a865_1.13.0.js} +0 -0
  235. /package/dist/{useravatar_ui_f375f1_1.13.0-snapshot.v20260520191127.js → useravatar_ui_b11bf0_1.13.0.js} +0 -0
  236. /package/dist/{userbutton_ui_5da28c_1.13.0-snapshot.v20260520191127.js → userbutton_ui_19fdba_1.13.0.js} +0 -0
  237. /package/dist/{userbutton_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → userbutton_ui_23a865_1.13.0.js} +0 -0
  238. /package/dist/{userbutton_ui_f375f1_1.13.0-snapshot.v20260520191127.js → userbutton_ui_b11bf0_1.13.0.js} +0 -0
  239. /package/dist/{userverification_ui_5da28c_1.13.0-snapshot.v20260520191127.js → userverification_ui_19fdba_1.13.0.js} +0 -0
  240. /package/dist/{userverification_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → userverification_ui_23a865_1.13.0.js} +0 -0
  241. /package/dist/{userverification_ui_f375f1_1.13.0-snapshot.v20260520191127.js → userverification_ui_b11bf0_1.13.0.js} +0 -0
  242. /package/dist/{vendors_ui_5da28c_1.13.0-snapshot.v20260520191127.js → vendors_ui_19fdba_1.13.0.js} +0 -0
  243. /package/dist/{vendors_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → vendors_ui_23a865_1.13.0.js} +0 -0
  244. /package/dist/{vendors_ui_f375f1_1.13.0-snapshot.v20260520191127.js → vendors_ui_b11bf0_1.13.0.js} +0 -0
  245. /package/dist/{waitlist_ui_5da28c_1.13.0-snapshot.v20260520191127.js → waitlist_ui_19fdba_1.13.0.js} +0 -0
  246. /package/dist/{waitlist_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → waitlist_ui_23a865_1.13.0.js} +0 -0
  247. /package/dist/{waitlist_ui_f375f1_1.13.0-snapshot.v20260520191127.js → waitlist_ui_b11bf0_1.13.0.js} +0 -0
  248. /package/dist/{web3-solana-wallet-buttons_ui_5da28c_1.13.0-snapshot.v20260520191127.js → web3-solana-wallet-buttons_ui_19fdba_1.13.0.js} +0 -0
  249. /package/dist/{web3-solana-wallet-buttons_ui_04ee6b_1.13.0-snapshot.v20260520191127.js → web3-solana-wallet-buttons_ui_23a865_1.13.0.js} +0 -0
  250. /package/dist/{web3-solana-wallet-buttons_ui_f375f1_1.13.0-snapshot.v20260520191127.js → web3-solana-wallet-buttons_ui_b11bf0_1.13.0.js} +0 -0
package/dist/ClerkUI.js CHANGED
@@ -23,8 +23,8 @@ import { isVersionAtLeast, parseVersion } from "@clerk/shared/versionCheck";
23
23
  * @public
24
24
  */
25
25
  var ClerkUI = class ClerkUI {
26
- static version = "1.13.0-snapshot.v20260520191127";
27
- version = "1.13.0-snapshot.v20260520191127";
26
+ static version = "1.13.0";
27
+ version = "1.13.0";
28
28
  #componentRenderer;
29
29
  /**
30
30
  * Creates a new `ClerkUI` instance and mounts the internal component renderer.
@@ -1,11 +1,12 @@
1
1
  import { ExternalElementMounter } from "../utils/ExternalElementMounter.js";
2
2
  import { descriptors } from "../customizables/elementDescriptors.js";
3
3
  import { Col } from "../customizables/index.js";
4
+ import { ProfileCard } from "../elements/ProfileCard/index.js";
4
5
  import { jsx } from "@emotion/react/jsx-runtime";
5
6
 
6
7
  //#region src/common/CustomPageContentContainer.tsx
7
8
  const CustomPageContentContainer = ({ mount, unmount }) => {
8
- return /* @__PURE__ */ jsx(Col, {
9
+ return /* @__PURE__ */ jsx(ProfileCard.Page, { children: /* @__PURE__ */ jsx(Col, {
9
10
  elementDescriptor: descriptors.page,
10
11
  gap: 8,
11
12
  children: /* @__PURE__ */ jsx(Col, {
@@ -16,7 +17,7 @@ const CustomPageContentContainer = ({ mount, unmount }) => {
16
17
  unmount
17
18
  })
18
19
  })
19
- });
20
+ }) });
20
21
  };
21
22
 
22
23
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"CustomPageContentContainer.js","names":[],"sources":["../../src/common/CustomPageContentContainer.tsx"],"sourcesContent":["import { Col, descriptors } from '../customizables';\nimport type { CustomPageContent } from '../utils/createCustomPages';\nimport { ExternalElementMounter } from '../utils/ExternalElementMounter';\n\nexport const CustomPageContentContainer = ({ mount, unmount }: Omit<CustomPageContent, 'url'>) => {\n return (\n <Col\n elementDescriptor={descriptors.page}\n gap={8}\n >\n <Col\n elementDescriptor={descriptors.profilePage}\n gap={8}\n >\n <ExternalElementMounter\n mount={mount}\n unmount={unmount}\n />\n </Col>\n </Col>\n );\n};\n"],"mappings":";;;;;;AAIA,MAAa,8BAA8B,EAAE,OAAO,cAA8C;AAChG,QACE,oBAAC;EACC,mBAAmB,YAAY;EAC/B,KAAK;YAEL,oBAAC;GACC,mBAAmB,YAAY;GAC/B,KAAK;aAEL,oBAAC;IACQ;IACE;KACT;IACE;GACF"}
1
+ {"version":3,"file":"CustomPageContentContainer.js","names":[],"sources":["../../src/common/CustomPageContentContainer.tsx"],"sourcesContent":["import { Col, descriptors } from '../customizables';\nimport { ProfileCard } from '../elements/ProfileCard';\nimport type { CustomPageContent } from '../utils/createCustomPages';\nimport { ExternalElementMounter } from '../utils/ExternalElementMounter';\n\nexport const CustomPageContentContainer = ({ mount, unmount }: Omit<CustomPageContent, 'url'>) => {\n return (\n <ProfileCard.Page>\n <Col\n elementDescriptor={descriptors.page}\n gap={8}\n >\n <Col\n elementDescriptor={descriptors.profilePage}\n gap={8}\n >\n <ExternalElementMounter\n mount={mount}\n unmount={unmount}\n />\n </Col>\n </Col>\n </ProfileCard.Page>\n );\n};\n"],"mappings":";;;;;;;AAKA,MAAa,8BAA8B,EAAE,OAAO,cAA8C;AAChG,QACE,oBAAC,YAAY,kBACX,oBAAC;EACC,mBAAmB,YAAY;EAC/B,KAAK;YAEL,oBAAC;GACC,mBAAmB,YAAY;GAC/B,KAAK;aAEL,oBAAC;IACQ;IACE;KACT;IACE;GACF,GACW"}
@@ -4,6 +4,7 @@ import { useOrganizationProfileContext } from "../../contexts/components/Organiz
4
4
  import { Col } from "../../customizables/index.js";
5
5
  import { Header } from "../../elements/Header.js";
6
6
  import { APIKeysPage } from "../APIKeys/APIKeys.js";
7
+ import { ProfileCard } from "../../elements/ProfileCard/index.js";
7
8
  import { useUnsafeNavbarContext } from "../../elements/Navbar.js";
8
9
  import { useOrganization } from "@clerk/shared/react";
9
10
  import { jsx, jsxs } from "@emotion/react/jsx-runtime";
@@ -14,7 +15,7 @@ const OrganizationAPIKeysPage = () => {
14
15
  const { contentRef } = useUnsafeNavbarContext();
15
16
  const { apiKeysProps } = useOrganizationProfileContext();
16
17
  if (!organization) return null;
17
- return /* @__PURE__ */ jsxs(Col, {
18
+ return /* @__PURE__ */ jsx(ProfileCard.Page, { children: /* @__PURE__ */ jsxs(Col, {
18
19
  gap: 4,
19
20
  children: [/* @__PURE__ */ jsx(Header.Root, { children: /* @__PURE__ */ jsx(Header.Title, {
20
21
  localizationKey: localizationKeys("organizationProfile.apiKeysPage.title"),
@@ -29,7 +30,7 @@ const OrganizationAPIKeysPage = () => {
29
30
  revokeModalRoot: contentRef
30
31
  })
31
32
  })]
32
- });
33
+ }) });
33
34
  };
34
35
 
35
36
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"OrganizationAPIKeysPage.js","names":[],"sources":["../../../src/components/OrganizationProfile/OrganizationAPIKeysPage.tsx"],"sourcesContent":["import { useOrganization } from '@clerk/shared/react';\n\nimport { APIKeysContext, useOrganizationProfileContext } from '@/ui/contexts';\nimport { Col, localizationKeys } from '@/ui/customizables';\nimport { Header } from '@/ui/elements/Header';\nimport { useUnsafeNavbarContext } from '@/ui/elements/Navbar';\n\nimport { APIKeysPage } from '../APIKeys/APIKeys';\n\nexport const OrganizationAPIKeysPage = () => {\n const { organization } = useOrganization();\n const { contentRef } = useUnsafeNavbarContext();\n const { apiKeysProps } = useOrganizationProfileContext();\n\n if (!organization) {\n // We should never reach this point, but we'll return null to make TS happy\n return null;\n }\n\n return (\n <Col gap={4}>\n <Header.Root>\n <Header.Title\n localizationKey={localizationKeys('organizationProfile.apiKeysPage.title')}\n textVariant='h2'\n />\n </Header.Root>\n <APIKeysContext.Provider value={{ ...apiKeysProps, componentName: 'APIKeys' }}>\n <APIKeysPage\n subject={organization.id}\n revokeModalRoot={contentRef}\n />\n </APIKeysContext.Provider>\n </Col>\n );\n};\n"],"mappings":";;;;;;;;;;;AASA,MAAa,gCAAgC;CAC3C,MAAM,EAAE,iBAAiB,iBAAiB;CAC1C,MAAM,EAAE,eAAe,wBAAwB;CAC/C,MAAM,EAAE,iBAAiB,+BAA+B;AAExD,KAAI,CAAC,aAEH,QAAO;AAGT,QACE,qBAAC;EAAI,KAAK;aACR,oBAAC,OAAO,kBACN,oBAAC,OAAO;GACN,iBAAiB,iBAAiB,wCAAwC;GAC1E,aAAY;IACZ,GACU,EACd,oBAAC,eAAe;GAAS,OAAO;IAAE,GAAG;IAAc,eAAe;IAAW;aAC3E,oBAAC;IACC,SAAS,aAAa;IACtB,iBAAiB;KACjB;IACsB;GACtB"}
1
+ {"version":3,"file":"OrganizationAPIKeysPage.js","names":[],"sources":["../../../src/components/OrganizationProfile/OrganizationAPIKeysPage.tsx"],"sourcesContent":["import { useOrganization } from '@clerk/shared/react';\n\nimport { APIKeysContext, useOrganizationProfileContext } from '@/ui/contexts';\nimport { Col, localizationKeys } from '@/ui/customizables';\nimport { Header } from '@/ui/elements/Header';\nimport { useUnsafeNavbarContext } from '@/ui/elements/Navbar';\nimport { ProfileCard } from '@/ui/elements/ProfileCard';\n\nimport { APIKeysPage } from '../APIKeys/APIKeys';\n\nexport const OrganizationAPIKeysPage = () => {\n const { organization } = useOrganization();\n const { contentRef } = useUnsafeNavbarContext();\n const { apiKeysProps } = useOrganizationProfileContext();\n\n if (!organization) {\n // We should never reach this point, but we'll return null to make TS happy\n return null;\n }\n\n return (\n <ProfileCard.Page>\n <Col gap={4}>\n <Header.Root>\n <Header.Title\n localizationKey={localizationKeys('organizationProfile.apiKeysPage.title')}\n textVariant='h2'\n />\n </Header.Root>\n <APIKeysContext.Provider value={{ ...apiKeysProps, componentName: 'APIKeys' }}>\n <APIKeysPage\n subject={organization.id}\n revokeModalRoot={contentRef}\n />\n </APIKeysContext.Provider>\n </Col>\n </ProfileCard.Page>\n );\n};\n"],"mappings":";;;;;;;;;;;;AAUA,MAAa,gCAAgC;CAC3C,MAAM,EAAE,iBAAiB,iBAAiB;CAC1C,MAAM,EAAE,eAAe,wBAAwB;CAC/C,MAAM,EAAE,iBAAiB,+BAA+B;AAExD,KAAI,CAAC,aAEH,QAAO;AAGT,QACE,oBAAC,YAAY,kBACX,qBAAC;EAAI,KAAK;aACR,oBAAC,OAAO,kBACN,oBAAC,OAAO;GACN,iBAAiB,iBAAiB,wCAAwC;GAC1E,aAAY;IACZ,GACU,EACd,oBAAC,eAAe;GAAS,OAAO;IAAE,GAAG;IAAc,eAAe;IAAW;aAC3E,oBAAC;IACC,SAAS,aAAa;IACtB,iBAAiB;KACjB;IACsB;GACtB,GACW"}
@@ -6,6 +6,7 @@ import { useCardState, withCardStateProvider } from "../../elements/contexts/ind
6
6
  import { Col } from "../../customizables/index.js";
7
7
  import { Card } from "../../elements/Card/index.js";
8
8
  import { Header } from "../../elements/Header.js";
9
+ import { ProfileCard } from "../../elements/ProfileCard/index.js";
9
10
  import { Tab, TabPanel, TabPanels, Tabs, TabsList } from "../../elements/Tabs.js";
10
11
  import { useTabState } from "../../hooks/useTabState.js";
11
12
  import { PaymentAttemptsList } from "../PaymentAttempts/PaymentAttemptsList.js";
@@ -23,7 +24,7 @@ const orgTabMap = {
23
24
  const OrganizationBillingPageInternal = withCardStateProvider(() => {
24
25
  const card = useCardState();
25
26
  const { selectedTab, handleTabChange } = useTabState(orgTabMap);
26
- return /* @__PURE__ */ jsx(Col, {
27
+ return /* @__PURE__ */ jsx(ProfileCard.Page, { children: /* @__PURE__ */ jsx(Col, {
27
28
  elementDescriptor: descriptors.page,
28
29
  sx: (t) => ({
29
30
  gap: t.space.$8,
@@ -77,7 +78,7 @@ const OrganizationBillingPageInternal = withCardStateProvider(() => {
77
78
  })
78
79
  ]
79
80
  })
80
- });
81
+ }) });
81
82
  });
82
83
  const OrganizationBillingPage = () => {
83
84
  return /* @__PURE__ */ jsx(SubscriberTypeContext.Provider, {
@@ -1 +1 @@
1
- {"version":3,"file":"OrganizationBillingPage.js","names":[],"sources":["../../../src/components/OrganizationProfile/OrganizationBillingPage.tsx"],"sourcesContent":["import { Card } from '@/ui/elements/Card';\nimport { useCardState, withCardStateProvider } from '@/ui/elements/contexts';\nimport { Header } from '@/ui/elements/Header';\nimport { Tab, TabPanel, TabPanels, Tabs, TabsList } from '@/ui/elements/Tabs';\n\nimport { Protect } from '../../common';\nimport { SubscriberTypeContext } from '../../contexts';\nimport { Col, descriptors, localizationKeys } from '../../customizables';\nimport { useTabState } from '../../hooks/useTabState';\nimport { PaymentAttemptsList } from '../PaymentAttempts';\nimport { PaymentMethods } from '../PaymentMethods';\nimport { StatementsList } from '../Statements';\nimport { SubscriptionsList } from '../Subscriptions';\n\nconst orgTabMap = {\n 0: 'subscriptions',\n 1: 'statements',\n 2: 'payments',\n} as const;\n\nconst OrganizationBillingPageInternal = withCardStateProvider(() => {\n const card = useCardState();\n\n const { selectedTab, handleTabChange } = useTabState(orgTabMap);\n\n return (\n <Col\n elementDescriptor={descriptors.page}\n sx={t => ({ gap: t.space.$8, color: t.colors.$colorForeground })}\n >\n <Col\n elementDescriptor={descriptors.profilePage}\n elementId={descriptors.profilePage.setId('billing')}\n gap={4}\n >\n <Header.Root>\n <Header.Title\n localizationKey={localizationKeys('organizationProfile.billingPage.title')}\n textVariant='h2'\n />\n </Header.Root>\n\n <Card.Alert>{card.error}</Card.Alert>\n\n <Tabs\n value={selectedTab}\n onChange={handleTabChange}\n >\n <TabsList sx={t => ({ gap: t.space.$6 })}>\n <Tab\n localizationKey={localizationKeys('organizationProfile.billingPage.start.headerTitle__subscriptions')}\n />\n <Tab localizationKey={localizationKeys('organizationProfile.billingPage.start.headerTitle__statements')} />\n <Tab localizationKey={localizationKeys('organizationProfile.billingPage.start.headerTitle__payments')} />\n </TabsList>\n <TabPanels>\n <TabPanel sx={{ width: '100%', flexDirection: 'column' }}>\n <SubscriptionsList\n title={localizationKeys('organizationProfile.billingPage.subscriptionsListSection.title')}\n switchPlansLabel={localizationKeys(\n 'organizationProfile.billingPage.subscriptionsListSection.actionLabel__switchPlan',\n )}\n newSubscriptionLabel={localizationKeys(\n 'organizationProfile.billingPage.subscriptionsListSection.actionLabel__newSubscription',\n )}\n manageSubscriptionLabel={localizationKeys(\n 'organizationProfile.billingPage.subscriptionsListSection.actionLabel__manageSubscription',\n )}\n />\n <Protect condition={has => has({ permission: 'org:sys_billing:manage' })}>\n <PaymentMethods />\n </Protect>\n </TabPanel>\n <TabPanel sx={{ width: '100%' }}>\n <StatementsList />\n </TabPanel>\n <TabPanel sx={{ width: '100%' }}>\n <PaymentAttemptsList />\n </TabPanel>\n </TabPanels>\n </Tabs>\n </Col>\n </Col>\n );\n});\n\nexport const OrganizationBillingPage = () => {\n return (\n <SubscriberTypeContext.Provider value='organization'>\n <OrganizationBillingPageInternal />\n </SubscriberTypeContext.Provider>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AAcA,MAAM,YAAY;CAChB,GAAG;CACH,GAAG;CACH,GAAG;CACJ;AAED,MAAM,kCAAkC,4BAA4B;CAClE,MAAM,OAAO,cAAc;CAE3B,MAAM,EAAE,aAAa,oBAAoB,YAAY,UAAU;AAE/D,QACE,oBAAC;EACC,mBAAmB,YAAY;EAC/B,KAAI,OAAM;GAAE,KAAK,EAAE,MAAM;GAAI,OAAO,EAAE,OAAO;GAAkB;YAE/D,qBAAC;GACC,mBAAmB,YAAY;GAC/B,WAAW,YAAY,YAAY,MAAM,UAAU;GACnD,KAAK;;IAEL,oBAAC,OAAO,kBACN,oBAAC,OAAO;KACN,iBAAiB,iBAAiB,wCAAwC;KAC1E,aAAY;MACZ,GACU;IAEd,oBAAC,KAAK,mBAAO,KAAK,QAAmB;IAErC,qBAAC;KACC,OAAO;KACP,UAAU;gBAEV,qBAAC;MAAS,KAAI,OAAM,EAAE,KAAK,EAAE,MAAM,IAAI;;OACrC,oBAAC,OACC,iBAAiB,iBAAiB,mEAAmE,GACrG;OACF,oBAAC,OAAI,iBAAiB,iBAAiB,gEAAgE,GAAI;OAC3G,oBAAC,OAAI,iBAAiB,iBAAiB,8DAA8D,GAAI;;OAChG,EACX,qBAAC;MACC,qBAAC;OAAS,IAAI;QAAE,OAAO;QAAQ,eAAe;QAAU;kBACtD,oBAAC;QACC,OAAO,iBAAiB,iEAAiE;QACzF,kBAAkB,iBAChB,mFACD;QACD,sBAAsB,iBACpB,wFACD;QACD,yBAAyB,iBACvB,2FACD;SACD,EACF,oBAAC;QAAQ,YAAW,QAAO,IAAI,EAAE,YAAY,0BAA0B,CAAC;kBACtE,oBAAC,mBAAiB;SACV;QACD;MACX,oBAAC;OAAS,IAAI,EAAE,OAAO,QAAQ;iBAC7B,oBAAC,mBAAiB;QACT;MACX,oBAAC;OAAS,IAAI,EAAE,OAAO,QAAQ;iBAC7B,oBAAC,wBAAsB;QACd;SACD;MACP;;IACH;GACF;EAER;AAEF,MAAa,gCAAgC;AAC3C,QACE,oBAAC,sBAAsB;EAAS,OAAM;YACpC,oBAAC,oCAAkC;GACJ"}
1
+ {"version":3,"file":"OrganizationBillingPage.js","names":[],"sources":["../../../src/components/OrganizationProfile/OrganizationBillingPage.tsx"],"sourcesContent":["import { Card } from '@/ui/elements/Card';\nimport { useCardState, withCardStateProvider } from '@/ui/elements/contexts';\nimport { Header } from '@/ui/elements/Header';\nimport { ProfileCard } from '@/ui/elements/ProfileCard';\nimport { Tab, TabPanel, TabPanels, Tabs, TabsList } from '@/ui/elements/Tabs';\n\nimport { Protect } from '../../common';\nimport { SubscriberTypeContext } from '../../contexts';\nimport { Col, descriptors, localizationKeys } from '../../customizables';\nimport { useTabState } from '../../hooks/useTabState';\nimport { PaymentAttemptsList } from '../PaymentAttempts';\nimport { PaymentMethods } from '../PaymentMethods';\nimport { StatementsList } from '../Statements';\nimport { SubscriptionsList } from '../Subscriptions';\n\nconst orgTabMap = {\n 0: 'subscriptions',\n 1: 'statements',\n 2: 'payments',\n} as const;\n\nconst OrganizationBillingPageInternal = withCardStateProvider(() => {\n const card = useCardState();\n\n const { selectedTab, handleTabChange } = useTabState(orgTabMap);\n\n return (\n <ProfileCard.Page>\n <Col\n elementDescriptor={descriptors.page}\n sx={t => ({ gap: t.space.$8, color: t.colors.$colorForeground })}\n >\n <Col\n elementDescriptor={descriptors.profilePage}\n elementId={descriptors.profilePage.setId('billing')}\n gap={4}\n >\n <Header.Root>\n <Header.Title\n localizationKey={localizationKeys('organizationProfile.billingPage.title')}\n textVariant='h2'\n />\n </Header.Root>\n\n <Card.Alert>{card.error}</Card.Alert>\n\n <Tabs\n value={selectedTab}\n onChange={handleTabChange}\n >\n <TabsList sx={t => ({ gap: t.space.$6 })}>\n <Tab\n localizationKey={localizationKeys('organizationProfile.billingPage.start.headerTitle__subscriptions')}\n />\n <Tab\n localizationKey={localizationKeys('organizationProfile.billingPage.start.headerTitle__statements')}\n />\n <Tab localizationKey={localizationKeys('organizationProfile.billingPage.start.headerTitle__payments')} />\n </TabsList>\n <TabPanels>\n <TabPanel sx={{ width: '100%', flexDirection: 'column' }}>\n <SubscriptionsList\n title={localizationKeys('organizationProfile.billingPage.subscriptionsListSection.title')}\n switchPlansLabel={localizationKeys(\n 'organizationProfile.billingPage.subscriptionsListSection.actionLabel__switchPlan',\n )}\n newSubscriptionLabel={localizationKeys(\n 'organizationProfile.billingPage.subscriptionsListSection.actionLabel__newSubscription',\n )}\n manageSubscriptionLabel={localizationKeys(\n 'organizationProfile.billingPage.subscriptionsListSection.actionLabel__manageSubscription',\n )}\n />\n <Protect condition={has => has({ permission: 'org:sys_billing:manage' })}>\n <PaymentMethods />\n </Protect>\n </TabPanel>\n <TabPanel sx={{ width: '100%' }}>\n <StatementsList />\n </TabPanel>\n <TabPanel sx={{ width: '100%' }}>\n <PaymentAttemptsList />\n </TabPanel>\n </TabPanels>\n </Tabs>\n </Col>\n </Col>\n </ProfileCard.Page>\n );\n});\n\nexport const OrganizationBillingPage = () => {\n return (\n <SubscriberTypeContext.Provider value='organization'>\n <OrganizationBillingPageInternal />\n </SubscriberTypeContext.Provider>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAeA,MAAM,YAAY;CAChB,GAAG;CACH,GAAG;CACH,GAAG;CACJ;AAED,MAAM,kCAAkC,4BAA4B;CAClE,MAAM,OAAO,cAAc;CAE3B,MAAM,EAAE,aAAa,oBAAoB,YAAY,UAAU;AAE/D,QACE,oBAAC,YAAY,kBACX,oBAAC;EACC,mBAAmB,YAAY;EAC/B,KAAI,OAAM;GAAE,KAAK,EAAE,MAAM;GAAI,OAAO,EAAE,OAAO;GAAkB;YAE/D,qBAAC;GACC,mBAAmB,YAAY;GAC/B,WAAW,YAAY,YAAY,MAAM,UAAU;GACnD,KAAK;;IAEL,oBAAC,OAAO,kBACN,oBAAC,OAAO;KACN,iBAAiB,iBAAiB,wCAAwC;KAC1E,aAAY;MACZ,GACU;IAEd,oBAAC,KAAK,mBAAO,KAAK,QAAmB;IAErC,qBAAC;KACC,OAAO;KACP,UAAU;gBAEV,qBAAC;MAAS,KAAI,OAAM,EAAE,KAAK,EAAE,MAAM,IAAI;;OACrC,oBAAC,OACC,iBAAiB,iBAAiB,mEAAmE,GACrG;OACF,oBAAC,OACC,iBAAiB,iBAAiB,gEAAgE,GAClG;OACF,oBAAC,OAAI,iBAAiB,iBAAiB,8DAA8D,GAAI;;OAChG,EACX,qBAAC;MACC,qBAAC;OAAS,IAAI;QAAE,OAAO;QAAQ,eAAe;QAAU;kBACtD,oBAAC;QACC,OAAO,iBAAiB,iEAAiE;QACzF,kBAAkB,iBAChB,mFACD;QACD,sBAAsB,iBACpB,wFACD;QACD,yBAAyB,iBACvB,2FACD;SACD,EACF,oBAAC;QAAQ,YAAW,QAAO,IAAI,EAAE,YAAY,0BAA0B,CAAC;kBACtE,oBAAC,mBAAiB;SACV;QACD;MACX,oBAAC;OAAS,IAAI,EAAE,OAAO,QAAQ;iBAC7B,oBAAC,mBAAiB;QACT;MACX,oBAAC;OAAS,IAAI,EAAE,OAAO,QAAQ;iBAC7B,oBAAC,wBAAsB;QACd;SACD;MACP;;IACH;GACF,GACW;EAErB;AAEF,MAAa,gCAAgC;AAC3C,QACE,oBAAC,sBAAsB;EAAS,OAAM;YACpC,oBAAC,oCAAkC;GACJ"}
@@ -6,6 +6,7 @@ import { Col, Text } from "../../customizables/index.js";
6
6
  import { Header } from "../../elements/Header.js";
7
7
  import { useActionContext } from "../../elements/Action/ActionRoot.js";
8
8
  import { Action } from "../../elements/Action/index.js";
9
+ import { ProfileCard } from "../../elements/ProfileCard/index.js";
9
10
  import { ProfileSection } from "../../elements/Section.js";
10
11
  import { OrganizationPreview } from "../../elements/OrganizationPreview.js";
11
12
  import { DeleteOrganizationForm, LeaveOrganizationForm } from "./ActionConfirmationPage.js";
@@ -45,7 +46,7 @@ const DeleteOrganizationScreen = () => {
45
46
  });
46
47
  };
47
48
  const OrganizationGeneralPage = () => {
48
- return /* @__PURE__ */ jsx(Col, {
49
+ return /* @__PURE__ */ jsx(ProfileCard.Page, { children: /* @__PURE__ */ jsx(Col, {
49
50
  elementDescriptor: descriptors.page,
50
51
  sx: (t) => ({ gap: t.space.$8 }),
51
52
  children: /* @__PURE__ */ jsxs(Col, {
@@ -66,7 +67,7 @@ const OrganizationGeneralPage = () => {
66
67
  /* @__PURE__ */ jsx(OrganizationDeleteSection, {})
67
68
  ]
68
69
  })
69
- });
70
+ }) });
70
71
  };
71
72
  const OrganizationProfileSection = () => {
72
73
  const { organization } = useOrganization();
@@ -1 +1 @@
1
- {"version":3,"file":"OrganizationGeneralPage.js","names":[],"sources":["../../../src/components/OrganizationProfile/OrganizationGeneralPage.tsx"],"sourcesContent":["import { useOrganization } from '@clerk/shared/react';\n\nimport { Header } from '@/ui/elements/Header';\nimport { OrganizationPreview } from '@/ui/elements/OrganizationPreview';\nimport { ProfileSection } from '@/ui/elements/Section';\n\nimport { Protect, useProtect } from '../../common';\nimport { useEnvironment } from '../../contexts';\nimport { Col, descriptors, localizationKeys, Text } from '../../customizables';\nimport { Action } from '../../elements/Action';\nimport { useActionContext } from '../../elements/Action/ActionRoot';\nimport { DeleteOrganizationForm, LeaveOrganizationForm } from './ActionConfirmationPage';\nimport { AddDomainForm } from './AddDomainForm';\nimport { DomainList } from './DomainList';\nimport { ProfileForm } from './ProfileForm';\n\nconst ProfileScreen = () => {\n const { close } = useActionContext();\n return (\n <ProfileForm\n onSuccess={close}\n onReset={close}\n />\n );\n};\n\nconst AddDomainScreen = () => {\n const { close } = useActionContext();\n return (\n <AddDomainForm\n onSuccess={close}\n onReset={close}\n />\n );\n};\n\nconst LeaveOrganizationScreen = () => {\n const { close } = useActionContext();\n return (\n <LeaveOrganizationForm\n onSuccess={close}\n onReset={close}\n />\n );\n};\n\nconst DeleteOrganizationScreen = () => {\n const { close } = useActionContext();\n return (\n <DeleteOrganizationForm\n onSuccess={close}\n onReset={close}\n />\n );\n};\n\nexport const OrganizationGeneralPage = () => {\n return (\n <Col\n elementDescriptor={descriptors.page}\n sx={t => ({ gap: t.space.$8 })}\n >\n <Col\n elementDescriptor={descriptors.profilePage}\n elementId={descriptors.profilePage.setId('organizationGeneral')}\n >\n <Header.Root>\n <Header.Title\n localizationKey={localizationKeys('organizationProfile.start.headerTitle__general')}\n sx={t => ({ marginBottom: t.space.$4 })}\n textVariant='h2'\n />\n </Header.Root>\n <OrganizationProfileSection />\n <Protect permission='org:sys_domains:read'>\n <OrganizationDomainsSection />\n </Protect>\n <OrganizationLeaveSection />\n <OrganizationDeleteSection />\n </Col>\n </Col>\n );\n};\n\nconst OrganizationProfileSection = () => {\n const { organization } = useOrganization();\n\n if (!organization) {\n return null;\n }\n\n const profile = (\n <OrganizationPreview\n size='lg'\n mainIdentifierVariant='subtitle'\n organization={organization}\n />\n );\n\n return (\n <ProfileSection.Root\n title={localizationKeys('organizationProfile.start.profileSection.title')}\n id='organizationProfile'\n >\n <Action.Root>\n <Protect\n permission={'org:sys_profile:manage'}\n fallback={profile}\n >\n <Action.Closed value='edit'>\n <ProfileSection.Item id='organizationProfile'>\n {profile}\n\n <Action.Trigger value='edit'>\n <ProfileSection.Button\n id='organizationProfile'\n localizationKey={localizationKeys('organizationProfile.start.profileSection.primaryButton')}\n />\n </Action.Trigger>\n </ProfileSection.Item>\n </Action.Closed>\n </Protect>\n\n <Action.Open value='edit'>\n <Action.Card>\n <ProfileScreen />\n </Action.Card>\n </Action.Open>\n </Action.Root>\n </ProfileSection.Root>\n );\n};\n\nconst OrganizationDomainsSection = () => {\n const { organizationSettings } = useEnvironment();\n const { organization } = useOrganization();\n\n if (!organizationSettings || !organization) {\n return null;\n }\n\n if (!organizationSettings.domains.enabled) {\n return null;\n }\n\n return (\n <ProfileSection.Root\n title={localizationKeys('organizationProfile.profilePage.domainSection.title')}\n id='organizationDomains'\n centered={false}\n >\n <Action.Root>\n <DomainList />\n\n <Protect permission='org:sys_domains:manage'>\n <Action.Trigger value='add'>\n <Col>\n <ProfileSection.ArrowButton\n localizationKey={localizationKeys('organizationProfile.profilePage.domainSection.primaryButton')}\n id='organizationDomains'\n />\n <Text\n localizationKey={localizationKeys('organizationProfile.profilePage.domainSection.subtitle')}\n sx={t => ({\n paddingInlineStart: t.space.$9,\n })}\n colorScheme='secondary'\n />\n </Col>\n </Action.Trigger>\n\n <Action.Open value='add'>\n <Action.Card>\n <AddDomainScreen />\n </Action.Card>\n </Action.Open>\n </Protect>\n </Action.Root>\n </ProfileSection.Root>\n );\n};\n\nconst OrganizationLeaveSection = () => {\n const { organization } = useOrganization();\n\n if (!organization) {\n return null;\n }\n\n return (\n <ProfileSection.Root\n id='organizationDanger'\n title={localizationKeys('organizationProfile.profilePage.dangerSection.leaveOrganization.title')}\n >\n <Action.Root>\n <Action.Closed value='leave'>\n <ProfileSection.Item\n sx={t => ({\n paddingTop: 0,\n paddingBottom: 0,\n paddingInlineStart: t.space.$1,\n })}\n id='organizationDanger'\n >\n <Action.Trigger value='leave'>\n <ProfileSection.Button\n id='organizationDanger'\n variant='ghost'\n colorScheme='danger'\n textVariant='buttonLarge'\n localizationKey={localizationKeys(\n 'organizationProfile.profilePage.dangerSection.leaveOrganization.title',\n )}\n />\n </Action.Trigger>\n </ProfileSection.Item>\n </Action.Closed>\n\n <Action.Open value='leave'>\n <Action.Card variant='destructive'>\n <LeaveOrganizationScreen />\n </Action.Card>\n </Action.Open>\n </Action.Root>\n </ProfileSection.Root>\n );\n};\n\nconst OrganizationDeleteSection = () => {\n const { organization } = useOrganization();\n const canDeleteOrganization = useProtect({ permission: 'org:sys_profile:delete' });\n\n if (!organization) {\n return null;\n }\n\n const adminDeleteEnabled = organization.adminDeleteEnabled;\n\n if (!canDeleteOrganization || !adminDeleteEnabled) {\n return null;\n }\n\n return (\n <ProfileSection.Root\n id='organizationDanger'\n title={localizationKeys('organizationProfile.profilePage.dangerSection.deleteOrganization.title')}\n sx={t => ({ marginBottom: t.space.$4 })}\n >\n <Action.Root>\n <Action.Closed value='delete'>\n <ProfileSection.Item\n sx={t => ({\n paddingTop: 0,\n paddingBottom: 0,\n paddingInlineStart: t.space.$1,\n })}\n id={'organizationDanger'}\n >\n <Action.Trigger value='delete'>\n <ProfileSection.Button\n id='organizationDanger'\n variant='ghost'\n colorScheme='danger'\n textVariant='buttonLarge'\n localizationKey={localizationKeys(\n 'organizationProfile.profilePage.dangerSection.deleteOrganization.title',\n )}\n />\n </Action.Trigger>\n </ProfileSection.Item>\n </Action.Closed>\n\n <Action.Open value='delete'>\n <Action.Card variant='destructive'>\n <DeleteOrganizationScreen />\n </Action.Card>\n </Action.Open>\n </Action.Root>\n </ProfileSection.Root>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"OrganizationGeneralPage.js","names":[],"sources":["../../../src/components/OrganizationProfile/OrganizationGeneralPage.tsx"],"sourcesContent":["import { useOrganization } from '@clerk/shared/react';\n\nimport { Header } from '@/ui/elements/Header';\nimport { OrganizationPreview } from '@/ui/elements/OrganizationPreview';\nimport { ProfileCard } from '@/ui/elements/ProfileCard';\nimport { ProfileSection } from '@/ui/elements/Section';\n\nimport { Protect, useProtect } from '../../common';\nimport { useEnvironment } from '../../contexts';\nimport { Col, descriptors, localizationKeys, Text } from '../../customizables';\nimport { Action } from '../../elements/Action';\nimport { useActionContext } from '../../elements/Action/ActionRoot';\nimport { DeleteOrganizationForm, LeaveOrganizationForm } from './ActionConfirmationPage';\nimport { AddDomainForm } from './AddDomainForm';\nimport { DomainList } from './DomainList';\nimport { ProfileForm } from './ProfileForm';\n\nconst ProfileScreen = () => {\n const { close } = useActionContext();\n return (\n <ProfileForm\n onSuccess={close}\n onReset={close}\n />\n );\n};\n\nconst AddDomainScreen = () => {\n const { close } = useActionContext();\n return (\n <AddDomainForm\n onSuccess={close}\n onReset={close}\n />\n );\n};\n\nconst LeaveOrganizationScreen = () => {\n const { close } = useActionContext();\n return (\n <LeaveOrganizationForm\n onSuccess={close}\n onReset={close}\n />\n );\n};\n\nconst DeleteOrganizationScreen = () => {\n const { close } = useActionContext();\n return (\n <DeleteOrganizationForm\n onSuccess={close}\n onReset={close}\n />\n );\n};\n\nexport const OrganizationGeneralPage = () => {\n return (\n <ProfileCard.Page>\n <Col\n elementDescriptor={descriptors.page}\n sx={t => ({ gap: t.space.$8 })}\n >\n <Col\n elementDescriptor={descriptors.profilePage}\n elementId={descriptors.profilePage.setId('organizationGeneral')}\n >\n <Header.Root>\n <Header.Title\n localizationKey={localizationKeys('organizationProfile.start.headerTitle__general')}\n sx={t => ({ marginBottom: t.space.$4 })}\n textVariant='h2'\n />\n </Header.Root>\n <OrganizationProfileSection />\n <Protect permission='org:sys_domains:read'>\n <OrganizationDomainsSection />\n </Protect>\n <OrganizationLeaveSection />\n <OrganizationDeleteSection />\n </Col>\n </Col>\n </ProfileCard.Page>\n );\n};\n\nconst OrganizationProfileSection = () => {\n const { organization } = useOrganization();\n\n if (!organization) {\n return null;\n }\n\n const profile = (\n <OrganizationPreview\n size='lg'\n mainIdentifierVariant='subtitle'\n organization={organization}\n />\n );\n\n return (\n <ProfileSection.Root\n title={localizationKeys('organizationProfile.start.profileSection.title')}\n id='organizationProfile'\n >\n <Action.Root>\n <Protect\n permission={'org:sys_profile:manage'}\n fallback={profile}\n >\n <Action.Closed value='edit'>\n <ProfileSection.Item id='organizationProfile'>\n {profile}\n\n <Action.Trigger value='edit'>\n <ProfileSection.Button\n id='organizationProfile'\n localizationKey={localizationKeys('organizationProfile.start.profileSection.primaryButton')}\n />\n </Action.Trigger>\n </ProfileSection.Item>\n </Action.Closed>\n </Protect>\n\n <Action.Open value='edit'>\n <Action.Card>\n <ProfileScreen />\n </Action.Card>\n </Action.Open>\n </Action.Root>\n </ProfileSection.Root>\n );\n};\n\nconst OrganizationDomainsSection = () => {\n const { organizationSettings } = useEnvironment();\n const { organization } = useOrganization();\n\n if (!organizationSettings || !organization) {\n return null;\n }\n\n if (!organizationSettings.domains.enabled) {\n return null;\n }\n\n return (\n <ProfileSection.Root\n title={localizationKeys('organizationProfile.profilePage.domainSection.title')}\n id='organizationDomains'\n centered={false}\n >\n <Action.Root>\n <DomainList />\n\n <Protect permission='org:sys_domains:manage'>\n <Action.Trigger value='add'>\n <Col>\n <ProfileSection.ArrowButton\n localizationKey={localizationKeys('organizationProfile.profilePage.domainSection.primaryButton')}\n id='organizationDomains'\n />\n <Text\n localizationKey={localizationKeys('organizationProfile.profilePage.domainSection.subtitle')}\n sx={t => ({\n paddingInlineStart: t.space.$9,\n })}\n colorScheme='secondary'\n />\n </Col>\n </Action.Trigger>\n\n <Action.Open value='add'>\n <Action.Card>\n <AddDomainScreen />\n </Action.Card>\n </Action.Open>\n </Protect>\n </Action.Root>\n </ProfileSection.Root>\n );\n};\n\nconst OrganizationLeaveSection = () => {\n const { organization } = useOrganization();\n\n if (!organization) {\n return null;\n }\n\n return (\n <ProfileSection.Root\n id='organizationDanger'\n title={localizationKeys('organizationProfile.profilePage.dangerSection.leaveOrganization.title')}\n >\n <Action.Root>\n <Action.Closed value='leave'>\n <ProfileSection.Item\n sx={t => ({\n paddingTop: 0,\n paddingBottom: 0,\n paddingInlineStart: t.space.$1,\n })}\n id='organizationDanger'\n >\n <Action.Trigger value='leave'>\n <ProfileSection.Button\n id='organizationDanger'\n variant='ghost'\n colorScheme='danger'\n textVariant='buttonLarge'\n localizationKey={localizationKeys(\n 'organizationProfile.profilePage.dangerSection.leaveOrganization.title',\n )}\n />\n </Action.Trigger>\n </ProfileSection.Item>\n </Action.Closed>\n\n <Action.Open value='leave'>\n <Action.Card variant='destructive'>\n <LeaveOrganizationScreen />\n </Action.Card>\n </Action.Open>\n </Action.Root>\n </ProfileSection.Root>\n );\n};\n\nconst OrganizationDeleteSection = () => {\n const { organization } = useOrganization();\n const canDeleteOrganization = useProtect({ permission: 'org:sys_profile:delete' });\n\n if (!organization) {\n return null;\n }\n\n const adminDeleteEnabled = organization.adminDeleteEnabled;\n\n if (!canDeleteOrganization || !adminDeleteEnabled) {\n return null;\n }\n\n return (\n <ProfileSection.Root\n id='organizationDanger'\n title={localizationKeys('organizationProfile.profilePage.dangerSection.deleteOrganization.title')}\n sx={t => ({ marginBottom: t.space.$4 })}\n >\n <Action.Root>\n <Action.Closed value='delete'>\n <ProfileSection.Item\n sx={t => ({\n paddingTop: 0,\n paddingBottom: 0,\n paddingInlineStart: t.space.$1,\n })}\n id={'organizationDanger'}\n >\n <Action.Trigger value='delete'>\n <ProfileSection.Button\n id='organizationDanger'\n variant='ghost'\n colorScheme='danger'\n textVariant='buttonLarge'\n localizationKey={localizationKeys(\n 'organizationProfile.profilePage.dangerSection.deleteOrganization.title',\n )}\n />\n </Action.Trigger>\n </ProfileSection.Item>\n </Action.Closed>\n\n <Action.Open value='delete'>\n <Action.Card variant='destructive'>\n <DeleteOrganizationScreen />\n </Action.Card>\n </Action.Open>\n </Action.Root>\n </ProfileSection.Root>\n );\n};\n"],"mappings":"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"}
@@ -12,6 +12,7 @@ import { Header } from "../../elements/Header.js";
12
12
  import { NotificationCountBadge } from "../../common/NotificationCountBadge.js";
13
13
  import { Animated } from "../../elements/Animated.js";
14
14
  import { Action } from "../../elements/Action/index.js";
15
+ import { ProfileCard } from "../../elements/ProfileCard/index.js";
15
16
  import { useFetchRoles } from "../../hooks/useFetchRoles.js";
16
17
  import { Tab, TabPanel, TabPanels, Tabs, TabsList } from "../../elements/Tabs.js";
17
18
  import { ActiveMembersList } from "./ActiveMembersList.js";
@@ -43,7 +44,7 @@ const OrganizationMembers = withCardStateProvider(() => {
43
44
  } : void 0
44
45
  });
45
46
  if (canManageMemberships === null) return null;
46
- return /* @__PURE__ */ jsxs(Col, {
47
+ return /* @__PURE__ */ jsx(ProfileCard.Page, { children: /* @__PURE__ */ jsxs(Col, {
47
48
  elementDescriptor: descriptors.page,
48
49
  gap: 2,
49
50
  children: [/* @__PURE__ */ jsx(Col, {
@@ -172,7 +173,7 @@ const OrganizationMembers = withCardStateProvider(() => {
172
173
  })]
173
174
  })
174
175
  }) : null]
175
- });
176
+ }) });
176
177
  });
177
178
 
178
179
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"OrganizationMembers.js","names":["query","Users"],"sources":["../../../src/components/OrganizationProfile/OrganizationMembers.tsx"],"sourcesContent":["import { useOrganization } from '@clerk/shared/react';\nimport { useState } from 'react';\n\nimport { useFetchRoles } from '@/hooks/useFetchRoles';\nimport { Users } from '@/icons';\nimport { Alert } from '@/ui/elements/Alert';\nimport { Animated } from '@/ui/elements/Animated';\nimport { Card } from '@/ui/elements/Card';\nimport { useCardState, withCardStateProvider } from '@/ui/elements/contexts';\nimport { Header } from '@/ui/elements/Header';\nimport { Tab, TabPanel, TabPanels, Tabs, TabsList } from '@/ui/elements/Tabs';\n\nimport { NotificationCountBadge, useProtect } from '../../common';\nimport { useEnvironment } from '../../contexts';\nimport { Box, Col, descriptors, Flex, Icon, localizationKeys, Text } from '../../customizables';\nimport { Action } from '../../elements/Action';\nimport { mqu } from '../../styledSystem';\nimport { ActiveMembersList } from './ActiveMembersList';\nimport { MembersActionsRow } from './MembersActions';\nimport { MembersSearch } from './MembersSearch';\nimport { OrganizationMembersTabInvitations } from './OrganizationMembersTabInvitations';\nimport { OrganizationMembersTabRequests } from './OrganizationMembersTabRequests';\n\nexport const ACTIVE_MEMBERS_PAGE_SIZE = 10;\n\nexport const OrganizationMembers = withCardStateProvider(() => {\n const { organizationSettings } = useEnvironment();\n const card = useCardState();\n const { hasRoleSetMigration } = useFetchRoles();\n const canManageMemberships = useProtect({ permission: 'org:sys_memberships:manage' });\n const canReadMemberships = useProtect({ permission: 'org:sys_memberships:read' });\n const isDomainsEnabled = organizationSettings?.domains?.enabled && canManageMemberships;\n\n const [query, setQuery] = useState('');\n const [search, setSearch] = useState('');\n\n const { membershipRequests, memberships, invitations, organization } = useOrganization({\n membershipRequests: isDomainsEnabled || undefined,\n invitations: canManageMemberships || undefined,\n memberships: canReadMemberships\n ? {\n keepPreviousData: true,\n query: query || undefined,\n }\n : undefined,\n });\n\n if (canManageMemberships === null) {\n return null;\n }\n\n return (\n <Col\n elementDescriptor={descriptors.page}\n gap={2}\n >\n <Col\n elementDescriptor={descriptors.profilePage}\n elementId={descriptors.profilePage.setId('organizationMembers')}\n gap={4}\n sx={theme => ({ paddingBottom: theme.space.$13 })}\n >\n <Action.Root animate={false}>\n <Animated asChild>\n <Header.Root\n contentSx={{\n [mqu.md]: {\n flexDirection: 'row',\n width: '100%',\n justifyContent: 'space-between',\n },\n }}\n >\n <Header.Title\n localizationKey={localizationKeys('organizationProfile.start.headerTitle__members')}\n textVariant='h2'\n />\n </Header.Root>\n </Animated>\n <Card.Alert>{card.error}</Card.Alert>\n <Tabs>\n <TabsList sx={t => ({ gap: t.space.$2 })}>\n {canReadMemberships && (\n <Tab localizationKey={localizationKeys('organizationProfile.membersPage.start.headerTitle__members')}>\n {!!memberships?.count && (\n <NotificationCountBadge\n shouldAnimate={!query}\n notificationCount={memberships.count}\n colorScheme='outline'\n />\n )}\n </Tab>\n )}\n {canManageMemberships && (\n <Tab\n localizationKey={localizationKeys('organizationProfile.membersPage.start.headerTitle__invitations')}\n >\n {invitations?.data && !invitations.isLoading && (\n <NotificationCountBadge\n notificationCount={invitations.count}\n colorScheme='outline'\n />\n )}\n </Tab>\n )}\n {canManageMemberships && isDomainsEnabled && (\n <Tab localizationKey={localizationKeys('organizationProfile.membersPage.start.headerTitle__requests')}>\n {membershipRequests?.data && !membershipRequests.isLoading && (\n <NotificationCountBadge\n notificationCount={membershipRequests.count}\n colorScheme='outline'\n />\n )}\n </Tab>\n )}\n </TabsList>\n <TabPanels>\n {canReadMemberships && (\n <TabPanel sx={{ width: '100%' }}>\n <Flex\n gap={4}\n direction='col'\n sx={{\n width: '100%',\n }}\n >\n <Flex\n gap={2}\n direction='col'\n sx={{\n width: '100%',\n }}\n >\n <MembersActionsRow\n actionSlot={\n <MembersSearch\n query={query}\n value={search}\n memberships={memberships}\n onSearchChange={query => setSearch(query)}\n onQueryTrigger={query => setQuery(query)}\n />\n }\n />\n {hasRoleSetMigration && (\n <Alert\n variant='warning'\n title={localizationKeys(\n 'organizationProfile.membersPage.alerts.roleSetMigrationInProgress.title',\n )}\n subtitle={localizationKeys(\n 'organizationProfile.membersPage.alerts.roleSetMigrationInProgress.subtitle',\n )}\n />\n )}\n <ActiveMembersList\n pageSize={ACTIVE_MEMBERS_PAGE_SIZE}\n memberships={memberships}\n />\n </Flex>\n </Flex>\n </TabPanel>\n )}\n {canManageMemberships && (\n <TabPanel sx={{ width: '100%' }}>\n <OrganizationMembersTabInvitations />\n </TabPanel>\n )}\n {canManageMemberships && isDomainsEnabled && (\n <TabPanel sx={{ width: '100%' }}>\n <OrganizationMembersTabRequests />\n </TabPanel>\n )}\n </TabPanels>\n </Tabs>\n </Action.Root>\n </Col>\n\n {canReadMemberships && !!memberships?.count && organization && organization.maxAllowedMemberships > 0 ? (\n <Box\n sx={theme => ({\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: theme.colors.$colorBackground,\n borderTop: `1px solid ${theme.colors.$borderAlpha100}`,\n paddingInline: theme.space.$4,\n height: theme.space.$13,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n })}\n >\n <Text\n sx={t => ({\n display: 'inline-flex',\n alignItems: 'center',\n gap: t.space.$2,\n })}\n >\n <Icon\n icon={Users}\n size='md'\n colorScheme='neutral'\n />\n <Text\n as='span'\n colorScheme='inherit'\n localizationKey={localizationKeys('organizationProfile.start.membershipSeatUsageLabel', {\n count: organization.membersCount + organization.pendingInvitationsCount,\n limit: organization.maxAllowedMemberships,\n })}\n />\n </Text>\n </Box>\n ) : null}\n </Col>\n );\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"OrganizationMembers.js","names":["query","Users"],"sources":["../../../src/components/OrganizationProfile/OrganizationMembers.tsx"],"sourcesContent":["import { useOrganization } from '@clerk/shared/react';\nimport { useState } from 'react';\n\nimport { useFetchRoles } from '@/hooks/useFetchRoles';\nimport { Users } from '@/icons';\nimport { Alert } from '@/ui/elements/Alert';\nimport { Animated } from '@/ui/elements/Animated';\nimport { Card } from '@/ui/elements/Card';\nimport { useCardState, withCardStateProvider } from '@/ui/elements/contexts';\nimport { Header } from '@/ui/elements/Header';\nimport { ProfileCard } from '@/ui/elements/ProfileCard';\nimport { Tab, TabPanel, TabPanels, Tabs, TabsList } from '@/ui/elements/Tabs';\n\nimport { NotificationCountBadge, useProtect } from '../../common';\nimport { useEnvironment } from '../../contexts';\nimport { Box, Col, descriptors, Flex, Icon, localizationKeys, Text } from '../../customizables';\nimport { Action } from '../../elements/Action';\nimport { mqu } from '../../styledSystem';\nimport { ActiveMembersList } from './ActiveMembersList';\nimport { MembersActionsRow } from './MembersActions';\nimport { MembersSearch } from './MembersSearch';\nimport { OrganizationMembersTabInvitations } from './OrganizationMembersTabInvitations';\nimport { OrganizationMembersTabRequests } from './OrganizationMembersTabRequests';\n\nexport const ACTIVE_MEMBERS_PAGE_SIZE = 10;\n\nexport const OrganizationMembers = withCardStateProvider(() => {\n const { organizationSettings } = useEnvironment();\n const card = useCardState();\n const { hasRoleSetMigration } = useFetchRoles();\n const canManageMemberships = useProtect({ permission: 'org:sys_memberships:manage' });\n const canReadMemberships = useProtect({ permission: 'org:sys_memberships:read' });\n const isDomainsEnabled = organizationSettings?.domains?.enabled && canManageMemberships;\n\n const [query, setQuery] = useState('');\n const [search, setSearch] = useState('');\n\n const { membershipRequests, memberships, invitations, organization } = useOrganization({\n membershipRequests: isDomainsEnabled || undefined,\n invitations: canManageMemberships || undefined,\n memberships: canReadMemberships\n ? {\n keepPreviousData: true,\n query: query || undefined,\n }\n : undefined,\n });\n\n if (canManageMemberships === null) {\n return null;\n }\n\n return (\n <ProfileCard.Page>\n <Col\n elementDescriptor={descriptors.page}\n gap={2}\n >\n <Col\n elementDescriptor={descriptors.profilePage}\n elementId={descriptors.profilePage.setId('organizationMembers')}\n gap={4}\n sx={theme => ({ paddingBottom: theme.space.$13 })}\n >\n <Action.Root animate={false}>\n <Animated asChild>\n <Header.Root\n contentSx={{\n [mqu.md]: {\n flexDirection: 'row',\n width: '100%',\n justifyContent: 'space-between',\n },\n }}\n >\n <Header.Title\n localizationKey={localizationKeys('organizationProfile.start.headerTitle__members')}\n textVariant='h2'\n />\n </Header.Root>\n </Animated>\n <Card.Alert>{card.error}</Card.Alert>\n <Tabs>\n <TabsList sx={t => ({ gap: t.space.$2 })}>\n {canReadMemberships && (\n <Tab localizationKey={localizationKeys('organizationProfile.membersPage.start.headerTitle__members')}>\n {!!memberships?.count && (\n <NotificationCountBadge\n shouldAnimate={!query}\n notificationCount={memberships.count}\n colorScheme='outline'\n />\n )}\n </Tab>\n )}\n {canManageMemberships && (\n <Tab\n localizationKey={localizationKeys('organizationProfile.membersPage.start.headerTitle__invitations')}\n >\n {invitations?.data && !invitations.isLoading && (\n <NotificationCountBadge\n notificationCount={invitations.count}\n colorScheme='outline'\n />\n )}\n </Tab>\n )}\n {canManageMemberships && isDomainsEnabled && (\n <Tab\n localizationKey={localizationKeys('organizationProfile.membersPage.start.headerTitle__requests')}\n >\n {membershipRequests?.data && !membershipRequests.isLoading && (\n <NotificationCountBadge\n notificationCount={membershipRequests.count}\n colorScheme='outline'\n />\n )}\n </Tab>\n )}\n </TabsList>\n <TabPanels>\n {canReadMemberships && (\n <TabPanel sx={{ width: '100%' }}>\n <Flex\n gap={4}\n direction='col'\n sx={{\n width: '100%',\n }}\n >\n <Flex\n gap={2}\n direction='col'\n sx={{\n width: '100%',\n }}\n >\n <MembersActionsRow\n actionSlot={\n <MembersSearch\n query={query}\n value={search}\n memberships={memberships}\n onSearchChange={query => setSearch(query)}\n onQueryTrigger={query => setQuery(query)}\n />\n }\n />\n {hasRoleSetMigration && (\n <Alert\n variant='warning'\n title={localizationKeys(\n 'organizationProfile.membersPage.alerts.roleSetMigrationInProgress.title',\n )}\n subtitle={localizationKeys(\n 'organizationProfile.membersPage.alerts.roleSetMigrationInProgress.subtitle',\n )}\n />\n )}\n <ActiveMembersList\n pageSize={ACTIVE_MEMBERS_PAGE_SIZE}\n memberships={memberships}\n />\n </Flex>\n </Flex>\n </TabPanel>\n )}\n {canManageMemberships && (\n <TabPanel sx={{ width: '100%' }}>\n <OrganizationMembersTabInvitations />\n </TabPanel>\n )}\n {canManageMemberships && isDomainsEnabled && (\n <TabPanel sx={{ width: '100%' }}>\n <OrganizationMembersTabRequests />\n </TabPanel>\n )}\n </TabPanels>\n </Tabs>\n </Action.Root>\n </Col>\n\n {canReadMemberships && !!memberships?.count && organization && organization.maxAllowedMemberships > 0 ? (\n <Box\n sx={theme => ({\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: theme.colors.$colorBackground,\n borderTop: `1px solid ${theme.colors.$borderAlpha100}`,\n paddingInline: theme.space.$4,\n height: theme.space.$13,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n })}\n >\n <Text\n sx={t => ({\n display: 'inline-flex',\n alignItems: 'center',\n gap: t.space.$2,\n })}\n >\n <Icon\n icon={Users}\n size='md'\n colorScheme='neutral'\n />\n <Text\n as='span'\n colorScheme='inherit'\n localizationKey={localizationKeys('organizationProfile.start.membershipSeatUsageLabel', {\n count: organization.membersCount + organization.pendingInvitationsCount,\n limit: organization.maxAllowedMemberships,\n })}\n />\n </Text>\n </Box>\n ) : null}\n </Col>\n </ProfileCard.Page>\n );\n});\n"],"mappings":"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"}
@@ -6,13 +6,14 @@ import { PricingTableContext } from "../../contexts/components/PricingTable.js";
6
6
  import { Flex } from "../../customizables/index.js";
7
7
  import { Alert } from "../../elements/Alert.js";
8
8
  import { Header } from "../../elements/Header.js";
9
+ import { ProfileCard } from "../../elements/ProfileCard/index.js";
9
10
  import { PricingTable } from "../PricingTable/PricingTable.js";
10
- import { Fragment, jsx, jsxs } from "@emotion/react/jsx-runtime";
11
+ import { jsx, jsxs } from "@emotion/react/jsx-runtime";
11
12
 
12
13
  //#region src/components/OrganizationProfile/OrganizationPlansPage.tsx
13
14
  const OrganizationPlansPageInternal = () => {
14
15
  const { navigate } = useRouter();
15
- return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Header.Root, {
16
+ return /* @__PURE__ */ jsxs(ProfileCard.Page, { children: [/* @__PURE__ */ jsx(Header.Root, {
16
17
  sx: (t) => ({
17
18
  borderBottomWidth: t.borderWidths.$normal,
18
19
  borderBottomStyle: t.borderStyles.$solid,
@@ -1 +1 @@
1
- {"version":3,"file":"OrganizationPlansPage.js","names":[],"sources":["../../../src/components/OrganizationProfile/OrganizationPlansPage.tsx"],"sourcesContent":["import { Alert } from '@/ui/elements/Alert';\nimport { Header } from '@/ui/elements/Header';\n\nimport { Protect } from '../../common';\nimport { PricingTableContext, SubscriberTypeContext } from '../../contexts';\nimport { Flex } from '../../customizables';\nimport { localizationKeys } from '../../localization';\nimport { useRouter } from '../../router';\nimport { PricingTable } from '../PricingTable/PricingTable';\n\nconst OrganizationPlansPageInternal = () => {\n const { navigate } = useRouter();\n\n return (\n <>\n <Header.Root\n sx={t => ({\n borderBottomWidth: t.borderWidths.$normal,\n borderBottomStyle: t.borderStyles.$solid,\n borderBottomColor: t.colors.$borderAlpha100,\n marginBlockEnd: t.space.$4,\n paddingBlockEnd: t.space.$4,\n })}\n >\n <Header.BackLink\n onClick={() => void navigate('../', { searchParams: new URLSearchParams('tab=subscriptions') })}\n >\n <Header.Title\n localizationKey={localizationKeys('organizationProfile.plansPage.title')}\n textVariant='h2'\n />\n </Header.BackLink>\n </Header.Root>\n\n <Flex\n direction='col'\n gap={4}\n >\n <Protect condition={has => !has({ permission: 'org:sys_billing:manage' })}>\n <Alert\n variant='info'\n colorScheme='info'\n title={localizationKeys('organizationProfile.plansPage.alerts.noPermissionsToManageBilling')}\n />\n </Protect>\n <PricingTableContext.Provider value={{ componentName: 'PricingTable', mode: 'modal' }}>\n <PricingTable />\n </PricingTableContext.Provider>\n </Flex>\n </>\n );\n};\n\nexport const OrganizationPlansPage = () => {\n return (\n <SubscriberTypeContext.Provider value='organization'>\n <OrganizationPlansPageInternal />\n </SubscriberTypeContext.Provider>\n );\n};\n"],"mappings":";;;;;;;;;;;;AAUA,MAAM,sCAAsC;CAC1C,MAAM,EAAE,aAAa,WAAW;AAEhC,QACE,4CACE,oBAAC,OAAO;EACN,KAAI,OAAM;GACR,mBAAmB,EAAE,aAAa;GAClC,mBAAmB,EAAE,aAAa;GAClC,mBAAmB,EAAE,OAAO;GAC5B,gBAAgB,EAAE,MAAM;GACxB,iBAAiB,EAAE,MAAM;GAC1B;YAED,oBAAC,OAAO;GACN,eAAe,KAAK,SAAS,OAAO,EAAE,cAAc,IAAI,gBAAgB,oBAAoB,EAAE,CAAC;aAE/F,oBAAC,OAAO;IACN,iBAAiB,iBAAiB,sCAAsC;IACxE,aAAY;KACZ;IACc;GACN,EAEd,qBAAC;EACC,WAAU;EACV,KAAK;aAEL,oBAAC;GAAQ,YAAW,QAAO,CAAC,IAAI,EAAE,YAAY,0BAA0B,CAAC;aACvE,oBAAC;IACC,SAAQ;IACR,aAAY;IACZ,OAAO,iBAAiB,oEAAoE;KAC5F;IACM,EACV,oBAAC,oBAAoB;GAAS,OAAO;IAAE,eAAe;IAAgB,MAAM;IAAS;aACnF,oBAAC,iBAAe;IACa;GAC1B,IACN;;AAIP,MAAa,8BAA8B;AACzC,QACE,oBAAC,sBAAsB;EAAS,OAAM;YACpC,oBAAC,kCAAgC;GACF"}
1
+ {"version":3,"file":"OrganizationPlansPage.js","names":[],"sources":["../../../src/components/OrganizationProfile/OrganizationPlansPage.tsx"],"sourcesContent":["import { Alert } from '@/ui/elements/Alert';\nimport { Header } from '@/ui/elements/Header';\nimport { ProfileCard } from '@/ui/elements/ProfileCard';\n\nimport { Protect } from '../../common';\nimport { PricingTableContext, SubscriberTypeContext } from '../../contexts';\nimport { Flex } from '../../customizables';\nimport { localizationKeys } from '../../localization';\nimport { useRouter } from '../../router';\nimport { PricingTable } from '../PricingTable/PricingTable';\n\nconst OrganizationPlansPageInternal = () => {\n const { navigate } = useRouter();\n\n return (\n <ProfileCard.Page>\n <Header.Root\n sx={t => ({\n borderBottomWidth: t.borderWidths.$normal,\n borderBottomStyle: t.borderStyles.$solid,\n borderBottomColor: t.colors.$borderAlpha100,\n marginBlockEnd: t.space.$4,\n paddingBlockEnd: t.space.$4,\n })}\n >\n <Header.BackLink\n onClick={() => void navigate('../', { searchParams: new URLSearchParams('tab=subscriptions') })}\n >\n <Header.Title\n localizationKey={localizationKeys('organizationProfile.plansPage.title')}\n textVariant='h2'\n />\n </Header.BackLink>\n </Header.Root>\n\n <Flex\n direction='col'\n gap={4}\n >\n <Protect condition={has => !has({ permission: 'org:sys_billing:manage' })}>\n <Alert\n variant='info'\n colorScheme='info'\n title={localizationKeys('organizationProfile.plansPage.alerts.noPermissionsToManageBilling')}\n />\n </Protect>\n <PricingTableContext.Provider value={{ componentName: 'PricingTable', mode: 'modal' }}>\n <PricingTable />\n </PricingTableContext.Provider>\n </Flex>\n </ProfileCard.Page>\n );\n};\n\nexport const OrganizationPlansPage = () => {\n return (\n <SubscriberTypeContext.Provider value='organization'>\n <OrganizationPlansPageInternal />\n </SubscriberTypeContext.Provider>\n );\n};\n"],"mappings":";;;;;;;;;;;;;AAWA,MAAM,sCAAsC;CAC1C,MAAM,EAAE,aAAa,WAAW;AAEhC,QACE,qBAAC,YAAY,mBACX,oBAAC,OAAO;EACN,KAAI,OAAM;GACR,mBAAmB,EAAE,aAAa;GAClC,mBAAmB,EAAE,aAAa;GAClC,mBAAmB,EAAE,OAAO;GAC5B,gBAAgB,EAAE,MAAM;GACxB,iBAAiB,EAAE,MAAM;GAC1B;YAED,oBAAC,OAAO;GACN,eAAe,KAAK,SAAS,OAAO,EAAE,cAAc,IAAI,gBAAgB,oBAAoB,EAAE,CAAC;aAE/F,oBAAC,OAAO;IACN,iBAAiB,iBAAiB,sCAAsC;IACxE,aAAY;KACZ;IACc;GACN,EAEd,qBAAC;EACC,WAAU;EACV,KAAK;aAEL,oBAAC;GAAQ,YAAW,QAAO,CAAC,IAAI,EAAE,YAAY,0BAA0B,CAAC;aACvE,oBAAC;IACC,SAAQ;IACR,aAAY;IACZ,OAAO,iBAAiB,oEAAoE;KAC5F;IACM,EACV,oBAAC,oBAAoB;GAAS,OAAO;IAAE,eAAe;IAAgB,MAAM;IAAS;aACnF,oBAAC,iBAAe;IACa;GAC1B,IACU;;AAIvB,MAAa,8BAA8B;AACzC,QACE,oBAAC,sBAAsB;EAAS,OAAM;YACpC,oBAAC,kCAAgC;GACF"}
@@ -12,7 +12,8 @@ import { Header } from "../../elements/Header.js";
12
12
  import { truncateWithEndVisible } from "../../utils/truncateTextWithEndVisible.js";
13
13
  import { LineItems } from "../../elements/LineItems.js";
14
14
  import { formatDate } from "../../utils/formatDate.js";
15
- import { Fragment, jsx, jsxs } from "@emotion/react/jsx-runtime";
15
+ import { ProfileCard } from "../../elements/ProfileCard/index.js";
16
+ import { jsx, jsxs } from "@emotion/react/jsx-runtime";
16
17
  import { __internal_usePaymentAttemptQuery } from "@clerk/shared/react/index";
17
18
 
18
19
  //#region src/components/PaymentAttempts/PaymentAttemptPage.tsx
@@ -28,7 +29,7 @@ const PaymentAttemptPage = () => {
28
29
  enabled: Boolean(params.paymentAttemptId)
29
30
  });
30
31
  const subscriptionItem = paymentAttempt?.subscriptionItem;
31
- if (isLoading) return /* @__PURE__ */ jsx(Box, {
32
+ if (isLoading) return /* @__PURE__ */ jsx(ProfileCard.Page, { children: /* @__PURE__ */ jsx(Box, {
32
33
  sx: {
33
34
  display: "flex",
34
35
  justifyContent: "center",
@@ -43,8 +44,8 @@ const PaymentAttemptPage = () => {
43
44
  },
44
45
  elementDescriptor: descriptors.spinner
45
46
  })
46
- });
47
- return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Header.Root, {
47
+ }) });
48
+ return /* @__PURE__ */ jsxs(ProfileCard.Page, { children: [/* @__PURE__ */ jsx(Header.Root, {
48
49
  sx: (t$1) => ({
49
50
  borderBlockEndWidth: t$1.borderWidths.$normal,
50
51
  borderBlockEndStyle: t$1.borderStyles.$solid,
@@ -1 +1 @@
1
- {"version":3,"file":"PaymentAttemptPage.js","names":["t","Check","Copy"],"sources":["../../../src/components/PaymentAttempts/PaymentAttemptPage.tsx"],"sourcesContent":["import { __internal_usePaymentAttemptQuery } from '@clerk/shared/react/index';\nimport type { BillingSubscriptionItemResource } from '@clerk/shared/types';\n\nimport { Alert } from '@/ui/elements/Alert';\nimport { Header } from '@/ui/elements/Header';\nimport { LineItems } from '@/ui/elements/LineItems';\nimport { formatDate } from '@/ui/utils/formatDate';\nimport { truncateWithEndVisible } from '@/ui/utils/truncateTextWithEndVisible';\n\nimport { useSubscriberTypeContext, useSubscriberTypeLocalizationRoot } from '../../contexts/components';\nimport {\n Badge,\n Box,\n Button,\n descriptors,\n Heading,\n Icon,\n localizationKeys,\n Span,\n Spinner,\n Text,\n useLocalizations,\n} from '../../customizables';\nimport { useClipboard } from '../../hooks';\nimport { Check, Copy } from '../../icons';\nimport { useRouter } from '../../router';\n\nexport const PaymentAttemptPage = () => {\n const { params, navigate } = useRouter();\n const subscriberType = useSubscriberTypeContext();\n const localizationRoot = useSubscriberTypeLocalizationRoot();\n const { t, translateError } = useLocalizations();\n const requesterType = subscriberType === 'organization' ? 'organization' : 'user';\n\n const {\n data: paymentAttempt,\n isLoading,\n error,\n } = __internal_usePaymentAttemptQuery({\n paymentAttemptId: params.paymentAttemptId,\n for: requesterType,\n enabled: Boolean(params.paymentAttemptId),\n });\n\n const subscriptionItem = paymentAttempt?.subscriptionItem;\n\n if (isLoading) {\n return (\n <Box sx={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100%' }}>\n <Spinner\n colorScheme='primary'\n sx={{ margin: 'auto', display: 'block' }}\n elementDescriptor={descriptors.spinner}\n />\n </Box>\n );\n }\n\n return (\n <>\n <Header.Root\n sx={t => ({\n borderBlockEndWidth: t.borderWidths.$normal,\n borderBlockEndStyle: t.borderStyles.$solid,\n borderBlockEndColor: t.colors.$borderAlpha100,\n marginBlockEnd: t.space.$4,\n paddingBlockEnd: t.space.$4,\n })}\n >\n <Header.BackLink onClick={() => void navigate('../../', { searchParams: new URLSearchParams('tab=payments') })}>\n <Header.Title\n localizationKey={localizationKeys(`${localizationRoot}.billingPage.start.headerTitle__payments`)}\n textVariant='h2'\n />\n </Header.BackLink>\n </Header.Root>\n {!paymentAttempt ? (\n <Box sx={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100%' }}>\n <Alert\n variant='danger'\n colorScheme='danger'\n >\n {error\n ? translateError(error.errors[0])\n : t(localizationKeys(`${localizationRoot}.billingPage.paymentHistorySection.notFound`))}\n </Alert>\n </Box>\n ) : (\n <Box\n elementDescriptor={descriptors.paymentAttemptRoot}\n as='article'\n sx={t => ({\n borderWidth: t.borderWidths.$normal,\n borderStyle: t.borderStyles.$solid,\n borderColor: t.colors.$borderAlpha100,\n borderRadius: t.radii.$lg,\n overflow: 'clip',\n })}\n >\n <Box\n elementDescriptor={descriptors.paymentAttemptHeader}\n as='header'\n sx={t => ({\n padding: t.space.$4,\n background: t.colors.$neutralAlpha25,\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n })}\n >\n <Span elementDescriptor={descriptors.paymentAttemptHeaderTitleContainer}>\n <Heading\n elementDescriptor={descriptors.paymentAttemptHeaderTitle}\n textVariant='h2'\n localizationKey={formatDate(\n paymentAttempt.paidAt || paymentAttempt.failedAt || paymentAttempt.updatedAt,\n 'long',\n )}\n />\n <Span\n sx={t => ({\n display: 'flex',\n alignItems: 'center',\n gap: t.space.$0x25,\n color: t.colors.$colorMutedForeground,\n })}\n >\n <CopyButton\n copyLabel='Copy payment attempt ID'\n text={paymentAttempt.id}\n />\n <Text\n colorScheme='secondary'\n variant='subtitle'\n >\n {truncateWithEndVisible(paymentAttempt.id)}\n </Text>\n </Span>\n </Span>\n <Badge\n elementDescriptor={descriptors.paymentAttemptHeaderBadge}\n colorScheme={\n paymentAttempt.status === 'paid' ? 'success' : paymentAttempt.status === 'failed' ? 'danger' : 'primary'\n }\n sx={{ textTransform: 'capitalize' }}\n >\n {paymentAttempt.status}\n </Badge>\n </Box>\n <PaymentAttemptBody subscriptionItem={subscriptionItem} />\n <Box\n elementDescriptor={descriptors.paymentAttemptFooter}\n as='footer'\n sx={t => ({\n paddingInline: t.space.$4,\n paddingBlock: t.space.$3,\n background: t.colors.$neutralAlpha25,\n borderBlockStartWidth: t.borderWidths.$normal,\n borderBlockStartStyle: t.borderStyles.$solid,\n borderBlockStartColor: t.colors.$borderAlpha100,\n display: 'flex',\n justifyContent: 'space-between',\n })}\n >\n <Text\n variant='h3'\n localizationKey={localizationKeys('billing.totalDue')}\n elementDescriptor={descriptors.paymentAttemptFooterLabel}\n />\n <Span\n elementDescriptor={descriptors.paymentAttemptFooterValueContainer}\n sx={t => ({\n display: 'flex',\n alignItems: 'center',\n gap: t.space.$2x5,\n })}\n >\n <Text\n variant='caption'\n colorScheme='secondary'\n elementDescriptor={descriptors.paymentAttemptFooterCurrency}\n sx={{ textTransform: 'uppercase' }}\n >\n {paymentAttempt.amount.currency}\n </Text>\n <Text\n variant='h3'\n elementDescriptor={descriptors.paymentAttemptFooterValue}\n >\n {paymentAttempt.amount.currencySymbol}\n {paymentAttempt.amount.amountFormatted}\n </Text>\n </Span>\n </Box>\n </Box>\n )}\n </>\n );\n};\n\nfunction PaymentAttemptBody({ subscriptionItem }: { subscriptionItem: BillingSubscriptionItemResource | undefined }) {\n if (!subscriptionItem) {\n return null;\n }\n\n const fee =\n subscriptionItem.planPeriod === 'month'\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n subscriptionItem.plan.fee!\n : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n subscriptionItem.plan.annualMonthlyFee!;\n\n return (\n <Box\n elementDescriptor={descriptors.paymentAttemptBody}\n sx={t => ({\n padding: t.space.$4,\n })}\n >\n <LineItems.Root>\n <LineItems.Group>\n <LineItems.Title title={subscriptionItem.plan.name} />\n <LineItems.Description\n prefix={subscriptionItem.planPeriod === 'annual' ? 'x12' : undefined}\n text={`${fee.currencySymbol}${fee.amountFormatted}`}\n />\n </LineItems.Group>\n <LineItems.Group\n borderTop\n variant='tertiary'\n >\n <LineItems.Title title={localizationKeys('billing.subtotal')} />\n <LineItems.Description\n text={`${subscriptionItem.amount?.currencySymbol}${subscriptionItem.amount?.amountFormatted}`}\n />\n </LineItems.Group>\n {subscriptionItem.credits &&\n subscriptionItem.credits.proration &&\n subscriptionItem.credits.proration.amount.amount > 0 && (\n <LineItems.Group variant='tertiary'>\n <LineItems.Title title={localizationKeys('billing.prorationCredit')} />\n <LineItems.Description\n text={`- ${subscriptionItem.credits.proration.amount.currencySymbol}${subscriptionItem.credits.proration.amount.amountFormatted}`}\n />\n </LineItems.Group>\n )}\n {subscriptionItem.credits &&\n subscriptionItem.credits.payer &&\n subscriptionItem.credits.payer.appliedAmount.amount > 0 && (\n <LineItems.Group variant='tertiary'>\n <LineItems.Title title={localizationKeys('billing.accountCredit')} />\n <LineItems.Description\n text={`- ${subscriptionItem.credits.payer.appliedAmount.currencySymbol}${subscriptionItem.credits.payer.appliedAmount.amountFormatted}`}\n />\n </LineItems.Group>\n )}\n </LineItems.Root>\n </Box>\n );\n}\n\nfunction CopyButton({ text, copyLabel = 'Copy' }: { text: string; copyLabel?: string }) {\n const { onCopy, hasCopied } = useClipboard(text);\n\n return (\n <Button\n elementDescriptor={descriptors.paymentAttemptCopyButton}\n variant='unstyled'\n onClick={() => onCopy()}\n sx={t => ({\n color: 'inherit',\n width: t.sizes.$4,\n height: t.sizes.$4,\n padding: 0,\n borderRadius: t.radii.$sm,\n '&:focus-visible': {\n outline: '2px solid',\n outlineColor: t.colors.$colorRing,\n },\n })}\n focusRing={false}\n aria-label={hasCopied ? 'Copied' : copyLabel}\n >\n <Icon\n size='sm'\n icon={hasCopied ? Check : Copy}\n aria-hidden\n />\n </Button>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"PaymentAttemptPage.js","names":["t","Check","Copy"],"sources":["../../../src/components/PaymentAttempts/PaymentAttemptPage.tsx"],"sourcesContent":["import { __internal_usePaymentAttemptQuery } from '@clerk/shared/react/index';\nimport type { BillingSubscriptionItemResource } from '@clerk/shared/types';\n\nimport { Alert } from '@/ui/elements/Alert';\nimport { Header } from '@/ui/elements/Header';\nimport { LineItems } from '@/ui/elements/LineItems';\nimport { ProfileCard } from '@/ui/elements/ProfileCard';\nimport { formatDate } from '@/ui/utils/formatDate';\nimport { truncateWithEndVisible } from '@/ui/utils/truncateTextWithEndVisible';\n\nimport { useSubscriberTypeContext, useSubscriberTypeLocalizationRoot } from '../../contexts/components';\nimport {\n Badge,\n Box,\n Button,\n descriptors,\n Heading,\n Icon,\n localizationKeys,\n Span,\n Spinner,\n Text,\n useLocalizations,\n} from '../../customizables';\nimport { useClipboard } from '../../hooks';\nimport { Check, Copy } from '../../icons';\nimport { useRouter } from '../../router';\n\nexport const PaymentAttemptPage = () => {\n const { params, navigate } = useRouter();\n const subscriberType = useSubscriberTypeContext();\n const localizationRoot = useSubscriberTypeLocalizationRoot();\n const { t, translateError } = useLocalizations();\n const requesterType = subscriberType === 'organization' ? 'organization' : 'user';\n\n const {\n data: paymentAttempt,\n isLoading,\n error,\n } = __internal_usePaymentAttemptQuery({\n paymentAttemptId: params.paymentAttemptId,\n for: requesterType,\n enabled: Boolean(params.paymentAttemptId),\n });\n\n const subscriptionItem = paymentAttempt?.subscriptionItem;\n\n if (isLoading) {\n return (\n <ProfileCard.Page>\n <Box sx={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100%' }}>\n <Spinner\n colorScheme='primary'\n sx={{ margin: 'auto', display: 'block' }}\n elementDescriptor={descriptors.spinner}\n />\n </Box>\n </ProfileCard.Page>\n );\n }\n\n return (\n <ProfileCard.Page>\n <Header.Root\n sx={t => ({\n borderBlockEndWidth: t.borderWidths.$normal,\n borderBlockEndStyle: t.borderStyles.$solid,\n borderBlockEndColor: t.colors.$borderAlpha100,\n marginBlockEnd: t.space.$4,\n paddingBlockEnd: t.space.$4,\n })}\n >\n <Header.BackLink onClick={() => void navigate('../../', { searchParams: new URLSearchParams('tab=payments') })}>\n <Header.Title\n localizationKey={localizationKeys(`${localizationRoot}.billingPage.start.headerTitle__payments`)}\n textVariant='h2'\n />\n </Header.BackLink>\n </Header.Root>\n {!paymentAttempt ? (\n <Box sx={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100%' }}>\n <Alert\n variant='danger'\n colorScheme='danger'\n >\n {error\n ? translateError(error.errors[0])\n : t(localizationKeys(`${localizationRoot}.billingPage.paymentHistorySection.notFound`))}\n </Alert>\n </Box>\n ) : (\n <Box\n elementDescriptor={descriptors.paymentAttemptRoot}\n as='article'\n sx={t => ({\n borderWidth: t.borderWidths.$normal,\n borderStyle: t.borderStyles.$solid,\n borderColor: t.colors.$borderAlpha100,\n borderRadius: t.radii.$lg,\n overflow: 'clip',\n })}\n >\n <Box\n elementDescriptor={descriptors.paymentAttemptHeader}\n as='header'\n sx={t => ({\n padding: t.space.$4,\n background: t.colors.$neutralAlpha25,\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n })}\n >\n <Span elementDescriptor={descriptors.paymentAttemptHeaderTitleContainer}>\n <Heading\n elementDescriptor={descriptors.paymentAttemptHeaderTitle}\n textVariant='h2'\n localizationKey={formatDate(\n paymentAttempt.paidAt || paymentAttempt.failedAt || paymentAttempt.updatedAt,\n 'long',\n )}\n />\n <Span\n sx={t => ({\n display: 'flex',\n alignItems: 'center',\n gap: t.space.$0x25,\n color: t.colors.$colorMutedForeground,\n })}\n >\n <CopyButton\n copyLabel='Copy payment attempt ID'\n text={paymentAttempt.id}\n />\n <Text\n colorScheme='secondary'\n variant='subtitle'\n >\n {truncateWithEndVisible(paymentAttempt.id)}\n </Text>\n </Span>\n </Span>\n <Badge\n elementDescriptor={descriptors.paymentAttemptHeaderBadge}\n colorScheme={\n paymentAttempt.status === 'paid' ? 'success' : paymentAttempt.status === 'failed' ? 'danger' : 'primary'\n }\n sx={{ textTransform: 'capitalize' }}\n >\n {paymentAttempt.status}\n </Badge>\n </Box>\n <PaymentAttemptBody subscriptionItem={subscriptionItem} />\n <Box\n elementDescriptor={descriptors.paymentAttemptFooter}\n as='footer'\n sx={t => ({\n paddingInline: t.space.$4,\n paddingBlock: t.space.$3,\n background: t.colors.$neutralAlpha25,\n borderBlockStartWidth: t.borderWidths.$normal,\n borderBlockStartStyle: t.borderStyles.$solid,\n borderBlockStartColor: t.colors.$borderAlpha100,\n display: 'flex',\n justifyContent: 'space-between',\n })}\n >\n <Text\n variant='h3'\n localizationKey={localizationKeys('billing.totalDue')}\n elementDescriptor={descriptors.paymentAttemptFooterLabel}\n />\n <Span\n elementDescriptor={descriptors.paymentAttemptFooterValueContainer}\n sx={t => ({\n display: 'flex',\n alignItems: 'center',\n gap: t.space.$2x5,\n })}\n >\n <Text\n variant='caption'\n colorScheme='secondary'\n elementDescriptor={descriptors.paymentAttemptFooterCurrency}\n sx={{ textTransform: 'uppercase' }}\n >\n {paymentAttempt.amount.currency}\n </Text>\n <Text\n variant='h3'\n elementDescriptor={descriptors.paymentAttemptFooterValue}\n >\n {paymentAttempt.amount.currencySymbol}\n {paymentAttempt.amount.amountFormatted}\n </Text>\n </Span>\n </Box>\n </Box>\n )}\n </ProfileCard.Page>\n );\n};\n\nfunction PaymentAttemptBody({ subscriptionItem }: { subscriptionItem: BillingSubscriptionItemResource | undefined }) {\n if (!subscriptionItem) {\n return null;\n }\n\n const fee =\n subscriptionItem.planPeriod === 'month'\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n subscriptionItem.plan.fee!\n : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n subscriptionItem.plan.annualMonthlyFee!;\n\n return (\n <Box\n elementDescriptor={descriptors.paymentAttemptBody}\n sx={t => ({\n padding: t.space.$4,\n })}\n >\n <LineItems.Root>\n <LineItems.Group>\n <LineItems.Title title={subscriptionItem.plan.name} />\n <LineItems.Description\n prefix={subscriptionItem.planPeriod === 'annual' ? 'x12' : undefined}\n text={`${fee.currencySymbol}${fee.amountFormatted}`}\n />\n </LineItems.Group>\n <LineItems.Group\n borderTop\n variant='tertiary'\n >\n <LineItems.Title title={localizationKeys('billing.subtotal')} />\n <LineItems.Description\n text={`${subscriptionItem.amount?.currencySymbol}${subscriptionItem.amount?.amountFormatted}`}\n />\n </LineItems.Group>\n {subscriptionItem.credits &&\n subscriptionItem.credits.proration &&\n subscriptionItem.credits.proration.amount.amount > 0 && (\n <LineItems.Group variant='tertiary'>\n <LineItems.Title title={localizationKeys('billing.prorationCredit')} />\n <LineItems.Description\n text={`- ${subscriptionItem.credits.proration.amount.currencySymbol}${subscriptionItem.credits.proration.amount.amountFormatted}`}\n />\n </LineItems.Group>\n )}\n {subscriptionItem.credits &&\n subscriptionItem.credits.payer &&\n subscriptionItem.credits.payer.appliedAmount.amount > 0 && (\n <LineItems.Group variant='tertiary'>\n <LineItems.Title title={localizationKeys('billing.accountCredit')} />\n <LineItems.Description\n text={`- ${subscriptionItem.credits.payer.appliedAmount.currencySymbol}${subscriptionItem.credits.payer.appliedAmount.amountFormatted}`}\n />\n </LineItems.Group>\n )}\n </LineItems.Root>\n </Box>\n );\n}\n\nfunction CopyButton({ text, copyLabel = 'Copy' }: { text: string; copyLabel?: string }) {\n const { onCopy, hasCopied } = useClipboard(text);\n\n return (\n <Button\n elementDescriptor={descriptors.paymentAttemptCopyButton}\n variant='unstyled'\n onClick={() => onCopy()}\n sx={t => ({\n color: 'inherit',\n width: t.sizes.$4,\n height: t.sizes.$4,\n padding: 0,\n borderRadius: t.radii.$sm,\n '&:focus-visible': {\n outline: '2px solid',\n outlineColor: t.colors.$colorRing,\n },\n })}\n focusRing={false}\n aria-label={hasCopied ? 'Copied' : copyLabel}\n >\n <Icon\n size='sm'\n icon={hasCopied ? Check : Copy}\n aria-hidden\n />\n </Button>\n );\n}\n"],"mappings":"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"}
@@ -10,8 +10,9 @@ import { Box, Icon, SimpleButton, Span, Spinner } from "../../customizables/inde
10
10
  import { Alert } from "../../elements/Alert.js";
11
11
  import { Header } from "../../elements/Header.js";
12
12
  import { formatDate } from "../../utils/formatDate.js";
13
+ import { ProfileCard } from "../../elements/ProfileCard/index.js";
13
14
  import { Statement } from "./Statement.js";
14
- import { Fragment, jsx, jsxs } from "@emotion/react/jsx-runtime";
15
+ import { jsx, jsxs } from "@emotion/react/jsx-runtime";
15
16
  import { __internal_useStatementQuery } from "@clerk/shared/react/index";
16
17
 
17
18
  //#region src/components/Statements/StatementPage.tsx
@@ -26,7 +27,7 @@ const StatementPage = () => {
26
27
  for: requesterType,
27
28
  enabled: Boolean(params.statementId)
28
29
  });
29
- if (isLoading) return /* @__PURE__ */ jsx(Box, {
30
+ if (isLoading) return /* @__PURE__ */ jsx(ProfileCard.Page, { children: /* @__PURE__ */ jsx(Box, {
30
31
  sx: {
31
32
  display: "flex",
32
33
  justifyContent: "center",
@@ -41,8 +42,8 @@ const StatementPage = () => {
41
42
  },
42
43
  elementDescriptor: descriptors.spinner
43
44
  })
44
- });
45
- return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Header.Root, {
45
+ }) });
46
+ return /* @__PURE__ */ jsxs(ProfileCard.Page, { children: [/* @__PURE__ */ jsx(Header.Root, {
46
47
  sx: (t$1) => ({
47
48
  borderBlockEndWidth: t$1.borderWidths.$normal,
48
49
  borderBlockEndStyle: t$1.borderStyles.$solid,
@@ -1 +1 @@
1
- {"version":3,"file":"StatementPage.js","names":["t","RotateLeftRight","Plus","ArrowRightIcon"],"sources":["../../../src/components/Statements/StatementPage.tsx"],"sourcesContent":["import { __internal_useStatementQuery } from '@clerk/shared/react/index';\n\nimport { Alert } from '@/ui/elements/Alert';\nimport { Header } from '@/ui/elements/Header';\nimport { formatDate } from '@/ui/utils/formatDate';\n\nimport { useSubscriberTypeContext, useSubscriberTypeLocalizationRoot } from '../../contexts/components';\nimport {\n Box,\n descriptors,\n Icon,\n localizationKeys,\n SimpleButton,\n Span,\n Spinner,\n useLocalizations,\n} from '../../customizables';\nimport { ArrowRightIcon, Plus, RotateLeftRight } from '../../icons';\nimport { useRouter } from '../../router';\nimport { Statement } from './Statement';\n\nexport const StatementPage = () => {\n const { params, navigate } = useRouter();\n const subscriberType = useSubscriberTypeContext();\n const localizationRoot = useSubscriberTypeLocalizationRoot();\n const { t, translateError } = useLocalizations();\n const requesterType = subscriberType === 'organization' ? 'organization' : 'user';\n\n const {\n data: statement,\n isLoading,\n error,\n } = __internal_useStatementQuery({\n statementId: params.statementId,\n for: requesterType,\n enabled: Boolean(params.statementId),\n });\n\n if (isLoading) {\n return (\n <Box sx={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100%' }}>\n <Spinner\n colorScheme='primary'\n sx={{ margin: 'auto', display: 'block' }}\n elementDescriptor={descriptors.spinner}\n />\n </Box>\n );\n }\n\n return (\n <>\n <Header.Root\n sx={t => ({\n borderBlockEndWidth: t.borderWidths.$normal,\n borderBlockEndStyle: t.borderStyles.$solid,\n borderBlockEndColor: t.colors.$borderAlpha100,\n marginBlockEnd: t.space.$4,\n paddingBlockEnd: t.space.$4,\n })}\n >\n <Header.BackLink\n onClick={() => void navigate('../../', { searchParams: new URLSearchParams('tab=statements') })}\n >\n <Header.Title\n localizationKey={localizationKeys(`${localizationRoot}.billingPage.statementsSection.title`)}\n textVariant='h2'\n />\n </Header.BackLink>\n </Header.Root>\n {!statement ? (\n <Box sx={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100%' }}>\n <Alert\n variant='danger'\n colorScheme='danger'\n >\n {error\n ? translateError(error.errors[0])\n : t(localizationKeys(`${localizationRoot}.billingPage.statementsSection.notFound`))}\n </Alert>\n </Box>\n ) : (\n <Statement.Root>\n <Statement.Header\n title={formatDate(statement.timestamp, 'monthyear')}\n id={statement.id}\n status={statement.status}\n />\n <Statement.Body>\n {statement.groups.map(group => (\n <Statement.Section key={group.timestamp.toISOString()}>\n <Statement.SectionHeader text={formatDate(group.timestamp, 'long')} />\n <Statement.SectionContent>\n {group.items.map(item => (\n <Statement.SectionContentItem key={item.id}>\n <Statement.SectionContentDetailsHeader\n title={item.subscriptionItem.plan.name}\n description={`${item.subscriptionItem.amount?.currencySymbol}${item.subscriptionItem.amount?.amountFormatted} / ${item.subscriptionItem.planPeriod === 'month' ? t(localizationKeys('billing.month')) : t(localizationKeys('billing.year'))}`}\n secondaryTitle={`${item.amount.currencySymbol}${item.amount.amountFormatted}`}\n />\n <Statement.SectionContentDetailsList>\n <Statement.SectionContentDetailsListItem\n label={\n item.chargeType === 'recurring'\n ? localizationKeys(\n `${localizationRoot}.billingPage.statementsSection.itemCaption__paidForPlan`,\n {\n plan: item.subscriptionItem.plan.name,\n period: item.subscriptionItem.planPeriod,\n },\n )\n : localizationKeys(\n `${localizationRoot}.billingPage.statementsSection.itemCaption__subscribedAndPaidForPlan`,\n {\n plan: item.subscriptionItem.plan.name,\n period: item.subscriptionItem.planPeriod,\n },\n )\n }\n labelIcon={item.chargeType === 'recurring' ? RotateLeftRight : Plus}\n value={\n <SimpleButton\n onClick={() => void navigate(`../../payment-attempt/${item.id}`)}\n variant='link'\n colorScheme='primary'\n textVariant='buttonSmall'\n sx={t => ({\n gap: t.space.$1,\n })}\n >\n <Span localizationKey={localizationKeys('billing.viewPayment')} />\n <Icon\n icon={ArrowRightIcon}\n size='sm'\n aria-hidden\n />\n </SimpleButton>\n }\n />\n {item.subscriptionItem.credits &&\n item.subscriptionItem.credits.proration &&\n item.subscriptionItem.credits.proration.amount.amount > 0 ? (\n <Statement.SectionContentDetailsListItem\n label={localizationKeys(\n `${localizationRoot}.billingPage.statementsSection.itemCaption__proratedCredit`,\n )}\n value={`(${item.subscriptionItem.credits.proration.amount.currencySymbol}${item.subscriptionItem.credits.proration.amount.amountFormatted})`}\n />\n ) : null}\n {item.subscriptionItem.credits &&\n item.subscriptionItem.credits.payer &&\n item.subscriptionItem.credits.payer.appliedAmount.amount > 0 ? (\n <Statement.SectionContentDetailsListItem\n label={localizationKeys(\n `${localizationRoot}.billingPage.statementsSection.itemCaption__payerCredit`,\n )}\n value={`(${item.subscriptionItem.credits.payer.appliedAmount.currencySymbol}${item.subscriptionItem.credits.payer.appliedAmount.amountFormatted})`}\n />\n ) : null}\n </Statement.SectionContentDetailsList>\n </Statement.SectionContentItem>\n ))}\n </Statement.SectionContent>\n </Statement.Section>\n ))}\n </Statement.Body>\n <Statement.Footer\n label={localizationKeys(`${localizationRoot}.billingPage.statementsSection.totalPaid`)}\n value={`${statement.totals.grandTotal.currencySymbol}${statement.totals.grandTotal.amountFormatted}`}\n />\n </Statement.Root>\n )}\n </>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"StatementPage.js","names":["t","RotateLeftRight","Plus","ArrowRightIcon"],"sources":["../../../src/components/Statements/StatementPage.tsx"],"sourcesContent":["import { __internal_useStatementQuery } from '@clerk/shared/react/index';\n\nimport { Alert } from '@/ui/elements/Alert';\nimport { Header } from '@/ui/elements/Header';\nimport { ProfileCard } from '@/ui/elements/ProfileCard';\nimport { formatDate } from '@/ui/utils/formatDate';\n\nimport { useSubscriberTypeContext, useSubscriberTypeLocalizationRoot } from '../../contexts/components';\nimport {\n Box,\n descriptors,\n Icon,\n localizationKeys,\n SimpleButton,\n Span,\n Spinner,\n useLocalizations,\n} from '../../customizables';\nimport { ArrowRightIcon, Plus, RotateLeftRight } from '../../icons';\nimport { useRouter } from '../../router';\nimport { Statement } from './Statement';\n\nexport const StatementPage = () => {\n const { params, navigate } = useRouter();\n const subscriberType = useSubscriberTypeContext();\n const localizationRoot = useSubscriberTypeLocalizationRoot();\n const { t, translateError } = useLocalizations();\n const requesterType = subscriberType === 'organization' ? 'organization' : 'user';\n\n const {\n data: statement,\n isLoading,\n error,\n } = __internal_useStatementQuery({\n statementId: params.statementId,\n for: requesterType,\n enabled: Boolean(params.statementId),\n });\n\n if (isLoading) {\n return (\n <ProfileCard.Page>\n <Box sx={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100%' }}>\n <Spinner\n colorScheme='primary'\n sx={{ margin: 'auto', display: 'block' }}\n elementDescriptor={descriptors.spinner}\n />\n </Box>\n </ProfileCard.Page>\n );\n }\n\n return (\n <ProfileCard.Page>\n <Header.Root\n sx={t => ({\n borderBlockEndWidth: t.borderWidths.$normal,\n borderBlockEndStyle: t.borderStyles.$solid,\n borderBlockEndColor: t.colors.$borderAlpha100,\n marginBlockEnd: t.space.$4,\n paddingBlockEnd: t.space.$4,\n })}\n >\n <Header.BackLink\n onClick={() => void navigate('../../', { searchParams: new URLSearchParams('tab=statements') })}\n >\n <Header.Title\n localizationKey={localizationKeys(`${localizationRoot}.billingPage.statementsSection.title`)}\n textVariant='h2'\n />\n </Header.BackLink>\n </Header.Root>\n {!statement ? (\n <Box sx={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100%' }}>\n <Alert\n variant='danger'\n colorScheme='danger'\n >\n {error\n ? translateError(error.errors[0])\n : t(localizationKeys(`${localizationRoot}.billingPage.statementsSection.notFound`))}\n </Alert>\n </Box>\n ) : (\n <Statement.Root>\n <Statement.Header\n title={formatDate(statement.timestamp, 'monthyear')}\n id={statement.id}\n status={statement.status}\n />\n <Statement.Body>\n {statement.groups.map(group => (\n <Statement.Section key={group.timestamp.toISOString()}>\n <Statement.SectionHeader text={formatDate(group.timestamp, 'long')} />\n <Statement.SectionContent>\n {group.items.map(item => (\n <Statement.SectionContentItem key={item.id}>\n <Statement.SectionContentDetailsHeader\n title={item.subscriptionItem.plan.name}\n description={`${item.subscriptionItem.amount?.currencySymbol}${item.subscriptionItem.amount?.amountFormatted} / ${item.subscriptionItem.planPeriod === 'month' ? t(localizationKeys('billing.month')) : t(localizationKeys('billing.year'))}`}\n secondaryTitle={`${item.amount.currencySymbol}${item.amount.amountFormatted}`}\n />\n <Statement.SectionContentDetailsList>\n <Statement.SectionContentDetailsListItem\n label={\n item.chargeType === 'recurring'\n ? localizationKeys(\n `${localizationRoot}.billingPage.statementsSection.itemCaption__paidForPlan`,\n {\n plan: item.subscriptionItem.plan.name,\n period: item.subscriptionItem.planPeriod,\n },\n )\n : localizationKeys(\n `${localizationRoot}.billingPage.statementsSection.itemCaption__subscribedAndPaidForPlan`,\n {\n plan: item.subscriptionItem.plan.name,\n period: item.subscriptionItem.planPeriod,\n },\n )\n }\n labelIcon={item.chargeType === 'recurring' ? RotateLeftRight : Plus}\n value={\n <SimpleButton\n onClick={() => void navigate(`../../payment-attempt/${item.id}`)}\n variant='link'\n colorScheme='primary'\n textVariant='buttonSmall'\n sx={t => ({\n gap: t.space.$1,\n })}\n >\n <Span localizationKey={localizationKeys('billing.viewPayment')} />\n <Icon\n icon={ArrowRightIcon}\n size='sm'\n aria-hidden\n />\n </SimpleButton>\n }\n />\n {item.subscriptionItem.credits &&\n item.subscriptionItem.credits.proration &&\n item.subscriptionItem.credits.proration.amount.amount > 0 ? (\n <Statement.SectionContentDetailsListItem\n label={localizationKeys(\n `${localizationRoot}.billingPage.statementsSection.itemCaption__proratedCredit`,\n )}\n value={`(${item.subscriptionItem.credits.proration.amount.currencySymbol}${item.subscriptionItem.credits.proration.amount.amountFormatted})`}\n />\n ) : null}\n {item.subscriptionItem.credits &&\n item.subscriptionItem.credits.payer &&\n item.subscriptionItem.credits.payer.appliedAmount.amount > 0 ? (\n <Statement.SectionContentDetailsListItem\n label={localizationKeys(\n `${localizationRoot}.billingPage.statementsSection.itemCaption__payerCredit`,\n )}\n value={`(${item.subscriptionItem.credits.payer.appliedAmount.currencySymbol}${item.subscriptionItem.credits.payer.appliedAmount.amountFormatted})`}\n />\n ) : null}\n </Statement.SectionContentDetailsList>\n </Statement.SectionContentItem>\n ))}\n </Statement.SectionContent>\n </Statement.Section>\n ))}\n </Statement.Body>\n <Statement.Footer\n label={localizationKeys(`${localizationRoot}.billingPage.statementsSection.totalPaid`)}\n value={`${statement.totals.grandTotal.currencySymbol}${statement.totals.grandTotal.amountFormatted}`}\n />\n </Statement.Root>\n )}\n </ProfileCard.Page>\n );\n};\n"],"mappings":"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"}
@@ -5,6 +5,7 @@ import { descriptors } from "../../customizables/elementDescriptors.js";
5
5
  import { Col } from "../../customizables/index.js";
6
6
  import { Header } from "../../elements/Header.js";
7
7
  import { APIKeysPage as APIKeysPage$1 } from "../APIKeys/APIKeys.js";
8
+ import { ProfileCard } from "../../elements/ProfileCard/index.js";
8
9
  import { useUnsafeNavbarContext } from "../../elements/Navbar.js";
9
10
  import { useUser } from "@clerk/shared/react";
10
11
  import { jsx, jsxs } from "@emotion/react/jsx-runtime";
@@ -15,7 +16,7 @@ const APIKeysPage = () => {
15
16
  const { contentRef } = useUnsafeNavbarContext();
16
17
  const { apiKeysProps } = useUserProfileContext();
17
18
  if (!user) return null;
18
- return /* @__PURE__ */ jsxs(Col, {
19
+ return /* @__PURE__ */ jsx(ProfileCard.Page, { children: /* @__PURE__ */ jsxs(Col, {
19
20
  gap: 4,
20
21
  elementDescriptor: descriptors.page,
21
22
  children: [/* @__PURE__ */ jsx(Header.Root, { children: /* @__PURE__ */ jsx(Header.Title, {
@@ -31,7 +32,7 @@ const APIKeysPage = () => {
31
32
  revokeModalRoot: contentRef
32
33
  })
33
34
  })]
34
- });
35
+ }) });
35
36
  };
36
37
 
37
38
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"APIKeysPage.js","names":["APIKeysPageInternal"],"sources":["../../../src/components/UserProfile/APIKeysPage.tsx"],"sourcesContent":["import { useUser } from '@clerk/shared/react';\n\nimport { APIKeysContext, useUserProfileContext } from '@/ui/contexts';\nimport { Col, descriptors, localizationKeys } from '@/ui/customizables';\nimport { Header } from '@/ui/elements/Header';\nimport { useUnsafeNavbarContext } from '@/ui/elements/Navbar';\n\nimport { APIKeysPage as APIKeysPageInternal } from '../APIKeys/APIKeys';\n\nexport const APIKeysPage = () => {\n const { user } = useUser();\n const { contentRef } = useUnsafeNavbarContext();\n const { apiKeysProps } = useUserProfileContext();\n\n if (!user) {\n // We should never reach this point, but we'll return null to make TS happy\n return null;\n }\n\n return (\n <Col\n gap={4}\n elementDescriptor={descriptors.page}\n >\n <Header.Root>\n <Header.Title\n localizationKey={localizationKeys('userProfile.apiKeysPage.title')}\n textVariant='h2'\n />\n </Header.Root>\n <APIKeysContext.Provider value={{ componentName: 'APIKeys', ...apiKeysProps }}>\n <APIKeysPageInternal\n subject={user.id}\n revokeModalRoot={contentRef}\n />\n </APIKeysContext.Provider>\n </Col>\n );\n};\n"],"mappings":";;;;;;;;;;;;AASA,MAAa,oBAAoB;CAC/B,MAAM,EAAE,SAAS,SAAS;CAC1B,MAAM,EAAE,eAAe,wBAAwB;CAC/C,MAAM,EAAE,iBAAiB,uBAAuB;AAEhD,KAAI,CAAC,KAEH,QAAO;AAGT,QACE,qBAAC;EACC,KAAK;EACL,mBAAmB,YAAY;aAE/B,oBAAC,OAAO,kBACN,oBAAC,OAAO;GACN,iBAAiB,iBAAiB,gCAAgC;GAClE,aAAY;IACZ,GACU,EACd,oBAAC,eAAe;GAAS,OAAO;IAAE,eAAe;IAAW,GAAG;IAAc;aAC3E,oBAACA;IACC,SAAS,KAAK;IACd,iBAAiB;KACjB;IACsB;GACtB"}
1
+ {"version":3,"file":"APIKeysPage.js","names":["APIKeysPageInternal"],"sources":["../../../src/components/UserProfile/APIKeysPage.tsx"],"sourcesContent":["import { useUser } from '@clerk/shared/react';\n\nimport { APIKeysContext, useUserProfileContext } from '@/ui/contexts';\nimport { Col, descriptors, localizationKeys } from '@/ui/customizables';\nimport { Header } from '@/ui/elements/Header';\nimport { useUnsafeNavbarContext } from '@/ui/elements/Navbar';\nimport { ProfileCard } from '@/ui/elements/ProfileCard';\n\nimport { APIKeysPage as APIKeysPageInternal } from '../APIKeys/APIKeys';\n\nexport const APIKeysPage = () => {\n const { user } = useUser();\n const { contentRef } = useUnsafeNavbarContext();\n const { apiKeysProps } = useUserProfileContext();\n\n if (!user) {\n // We should never reach this point, but we'll return null to make TS happy\n return null;\n }\n\n return (\n <ProfileCard.Page>\n <Col\n gap={4}\n elementDescriptor={descriptors.page}\n >\n <Header.Root>\n <Header.Title\n localizationKey={localizationKeys('userProfile.apiKeysPage.title')}\n textVariant='h2'\n />\n </Header.Root>\n <APIKeysContext.Provider value={{ componentName: 'APIKeys', ...apiKeysProps }}>\n <APIKeysPageInternal\n subject={user.id}\n revokeModalRoot={contentRef}\n />\n </APIKeysContext.Provider>\n </Col>\n </ProfileCard.Page>\n );\n};\n"],"mappings":";;;;;;;;;;;;;AAUA,MAAa,oBAAoB;CAC/B,MAAM,EAAE,SAAS,SAAS;CAC1B,MAAM,EAAE,eAAe,wBAAwB;CAC/C,MAAM,EAAE,iBAAiB,uBAAuB;AAEhD,KAAI,CAAC,KAEH,QAAO;AAGT,QACE,oBAAC,YAAY,kBACX,qBAAC;EACC,KAAK;EACL,mBAAmB,YAAY;aAE/B,oBAAC,OAAO,kBACN,oBAAC,OAAO;GACN,iBAAiB,iBAAiB,gCAAgC;GAClE,aAAY;IACZ,GACU,EACd,oBAAC,eAAe;GAAS,OAAO;IAAE,eAAe;IAAW,GAAG;IAAc;aAC3E,oBAACA;IACC,SAAS,KAAK;IACd,iBAAiB;KACjB;IACsB;GACtB,GACW"}