@studiocubics/cms 0.0.1 → 0.0.2

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 (244) hide show
  1. package/dist/clerk/actions/invitations.d.ts +6 -0
  2. package/dist/clerk/actions/invitations.js +59 -0
  3. package/dist/clerk/actions/invitations.js.map +1 -0
  4. package/dist/clerk/actions/systemUsers.d.ts +8 -0
  5. package/dist/clerk/actions/systemUsers.js +64 -0
  6. package/dist/clerk/actions/systemUsers.js.map +1 -0
  7. package/dist/clerk/auth.d.ts +8 -0
  8. package/dist/clerk/auth.js +21 -0
  9. package/dist/clerk/auth.js.map +1 -0
  10. package/dist/clerk/hasPermission.d.ts +33 -0
  11. package/dist/clerk/hasPermission.js +78 -0
  12. package/dist/clerk/hasPermission.js.map +1 -0
  13. package/dist/clerk/rbacConfig.d.ts +31 -0
  14. package/dist/clerk/rbacConfig.js +48 -0
  15. package/dist/clerk/rbacConfig.js.map +1 -0
  16. package/dist/clerk/schemas/invitation.d.ts +12 -0
  17. package/dist/clerk/schemas/invitation.js +20 -0
  18. package/dist/clerk/schemas/invitation.js.map +1 -0
  19. package/dist/clerk/schemas/systemUser.d.ts +6 -0
  20. package/dist/clerk/toClientSafeUser.d.ts +48 -0
  21. package/dist/clerk/toClientSafeUser.js +46 -0
  22. package/dist/clerk/toClientSafeUser.js.map +1 -0
  23. package/dist/constants/defaults.d.ts +6 -0
  24. package/dist/constants/defaults.js +56 -0
  25. package/dist/constants/defaults.js.map +1 -0
  26. package/dist/constants/pageLimits.d.ts +2 -0
  27. package/dist/constants/pageLimits.js +5 -0
  28. package/dist/constants/pageLimits.js.map +1 -0
  29. package/dist/index.css +215 -0
  30. package/dist/index.js +45 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/providers/CMSRootProviders.d.ts +4 -0
  33. package/dist/providers/CMSRootProviders.js +11 -0
  34. package/dist/providers/CMSRootProviders.js.map +1 -0
  35. package/dist/ui/Inputs/ThemedMonacoEditor/ThemedMonacoEditor.d.ts +2 -0
  36. package/dist/ui/Inputs/ThemedMonacoEditor/ThemedMonacoEditor.js +13 -0
  37. package/dist/ui/Inputs/ThemedMonacoEditor/ThemedMonacoEditor.js.map +1 -0
  38. package/dist/ui/Inputs/ThemedMonacoEditor/ThemedMonacoEditor.module.css.js +4 -0
  39. package/dist/ui/Inputs/ThemedMonacoEditor/ThemedMonacoEditor.module.css.js.map +1 -0
  40. package/dist/ui/Layout/CMSSecurityLayout.d.ts +2 -0
  41. package/dist/ui/Layout/CMSSecurityLayout.js +18 -0
  42. package/dist/ui/Layout/CMSSecurityLayout.js.map +1 -0
  43. package/dist/ui/Layout/CMSSidebar/CMSSidebar.d.ts +6 -0
  44. package/dist/ui/Layout/CMSSidebar/CMSSidebar.js +15 -0
  45. package/dist/ui/Layout/CMSSidebar/CMSSidebar.js.map +1 -0
  46. package/dist/ui/Layout/CMSSidebar/CMSSidebarBody.d.ts +4 -0
  47. package/dist/ui/Layout/CMSSidebar/CMSSidebarBody.js +18 -0
  48. package/dist/ui/Layout/CMSSidebar/CMSSidebarBody.js.map +1 -0
  49. package/dist/ui/Layout/CMSSidebar/CMSSidebarFooter/CMSSidebarFooter.d.ts +1 -0
  50. package/dist/ui/Layout/CMSSidebar/CMSSidebarFooter/CMSSidebarFooter.js +39 -0
  51. package/dist/ui/Layout/CMSSidebar/CMSSidebarFooter/CMSSidebarFooter.js.map +1 -0
  52. package/dist/ui/Layout/CMSSidebar/CMSSidebarFooter/CMSSidebarFooter.module.css.js +4 -0
  53. package/dist/ui/Layout/CMSSidebar/CMSSidebarFooter/CMSSidebarFooter.module.css.js.map +1 -0
  54. package/dist/ui/Layout/CMSSidebar/CMSSidebarHeader/CMSSidebarHeader.d.ts +1 -0
  55. package/dist/ui/Layout/CMSSidebar/CMSSidebarHeader/CMSSidebarHeader.js +16 -0
  56. package/dist/ui/Layout/CMSSidebar/CMSSidebarHeader/CMSSidebarHeader.js.map +1 -0
  57. package/dist/ui/Layout/CMSSidebar/CMSSidebarHeader/CMSSidebarHeader.module.css.js +4 -0
  58. package/dist/ui/Layout/CMSSidebar/CMSSidebarHeader/CMSSidebarHeader.module.css.js.map +1 -0
  59. package/dist/ui/Layout/_index.d.ts +2 -0
  60. package/dist/ui/System/Auth/SignIn/SignIn.d.ts +1 -0
  61. package/dist/ui/System/Auth/SignIn/SignIn.js +28 -0
  62. package/dist/ui/System/Auth/SignIn/SignIn.js.map +1 -0
  63. package/dist/ui/System/Auth/SignIn/SignIn.module.css.js +4 -0
  64. package/dist/ui/System/Auth/SignIn/SignIn.module.css.js.map +1 -0
  65. package/dist/ui/System/Auth/SignIn/useSignInForm.d.ts +14 -0
  66. package/dist/ui/System/Auth/SignIn/useSignInForm.js +46 -0
  67. package/dist/ui/System/Auth/SignIn/useSignInForm.js.map +1 -0
  68. package/dist/ui/System/Auth/SignUp/SignUp.d.ts +1 -0
  69. package/dist/ui/System/Auth/SignUp/SignUp.js +36 -0
  70. package/dist/ui/System/Auth/SignUp/SignUp.js.map +1 -0
  71. package/dist/ui/System/Auth/SignUp/SignUp.module.css.js +4 -0
  72. package/dist/ui/System/Auth/SignUp/SignUp.module.css.js.map +1 -0
  73. package/dist/ui/System/Auth/SignUp/useSignUpForm.d.ts +19 -0
  74. package/dist/ui/System/Auth/SignUp/useSignUpForm.js +58 -0
  75. package/dist/ui/System/Auth/SignUp/useSignUpForm.js.map +1 -0
  76. package/dist/ui/System/Invitations/InvitationList.d.ts +1 -0
  77. package/dist/ui/System/Invitations/InvitationList.js +11 -0
  78. package/dist/ui/System/Invitations/InvitationList.js.map +1 -0
  79. package/dist/ui/System/Invitations/InvitationListActions.d.ts +11 -0
  80. package/dist/ui/System/Invitations/InvitationListActions.js +39 -0
  81. package/dist/ui/System/Invitations/InvitationListActions.js.map +1 -0
  82. package/dist/ui/System/Invitations/InvitationListCard.d.ts +4 -0
  83. package/dist/ui/System/Invitations/InvitationListCard.js +16 -0
  84. package/dist/ui/System/Invitations/InvitationListCard.js.map +1 -0
  85. package/dist/ui/System/Invitations/InvitationListPage.d.ts +2 -0
  86. package/dist/ui/System/Invitations/InvitationListPage.js +22 -0
  87. package/dist/ui/System/Invitations/InvitationListPage.js.map +1 -0
  88. package/dist/ui/System/Invitations/InvitationListPagination.d.ts +4 -0
  89. package/dist/ui/System/Invitations/InvitationListPagination.js +11 -0
  90. package/dist/ui/System/Invitations/InvitationListPagination.js.map +1 -0
  91. package/dist/ui/System/Permissions/RoleListCard.d.ts +6 -0
  92. package/dist/ui/System/Permissions/RoleListCard.js +11 -0
  93. package/dist/ui/System/Permissions/RoleListCard.js.map +1 -0
  94. package/dist/ui/System/Permissions/RolePermissionsPage.d.ts +4 -0
  95. package/dist/ui/System/Permissions/RolePermissionsPage.js +14 -0
  96. package/dist/ui/System/Permissions/RolePermissionsPage.js.map +1 -0
  97. package/dist/ui/System/Permissions/RolePermissionsTable.d.ts +2 -0
  98. package/dist/ui/System/Permissions/RolePermissionsTable.js +28 -0
  99. package/dist/ui/System/Permissions/RolePermissionsTable.js.map +1 -0
  100. package/dist/ui/System/SystemUser/CurrentSystemUserButton/CurrentSystemUserButton.d.ts +5 -0
  101. package/dist/ui/System/SystemUser/CurrentSystemUserButton/CurrentSystemUserButton.js +31 -0
  102. package/dist/ui/System/SystemUser/CurrentSystemUserButton/CurrentSystemUserButton.js.map +1 -0
  103. package/dist/ui/System/SystemUser/CurrentSystemUserButton/CurrentSystemUserButton.module.css.js +4 -0
  104. package/dist/ui/System/SystemUser/CurrentSystemUserButton/CurrentSystemUserButton.module.css.js.map +1 -0
  105. package/dist/ui/System/SystemUser/CurrentSystemUserPage.d.ts +1 -0
  106. package/dist/ui/System/SystemUser/CurrentSystemUserPage.js +17 -0
  107. package/dist/ui/System/SystemUser/CurrentSystemUserPage.js.map +1 -0
  108. package/dist/ui/System/SystemUser/SystemUserActions.d.ts +6 -0
  109. package/dist/ui/System/SystemUser/SystemUserActions.js +14 -0
  110. package/dist/ui/System/SystemUser/SystemUserActions.js.map +1 -0
  111. package/dist/ui/System/SystemUser/SystemUserDetails/SystemUserDetails.d.ts +12 -0
  112. package/dist/ui/System/SystemUser/SystemUserDetails/SystemUserDetails.js +16 -0
  113. package/dist/ui/System/SystemUser/SystemUserDetails/SystemUserDetails.js.map +1 -0
  114. package/dist/ui/System/SystemUser/SystemUserDetails/SystemUserDetails.module.css.js +4 -0
  115. package/dist/ui/System/SystemUser/SystemUserDetails/SystemUserDetails.module.css.js.map +1 -0
  116. package/dist/ui/System/SystemUser/SystemUserDetailsForm/SystemUserDetailsForm.d.ts +11 -0
  117. package/dist/ui/System/SystemUser/SystemUserDetailsForm/SystemUserDetailsForm.js +26 -0
  118. package/dist/ui/System/SystemUser/SystemUserDetailsForm/SystemUserDetailsForm.js.map +1 -0
  119. package/dist/ui/System/SystemUser/SystemUserDetailsForm/SystemUserDetailsForm.module.css.js +4 -0
  120. package/dist/ui/System/SystemUser/SystemUserDetailsForm/SystemUserDetailsForm.module.css.js.map +1 -0
  121. package/dist/ui/System/SystemUser/SystemUserList.d.ts +1 -0
  122. package/dist/ui/System/SystemUser/SystemUserList.js +11 -0
  123. package/dist/ui/System/SystemUser/SystemUserList.js.map +1 -0
  124. package/dist/ui/System/SystemUser/SystemUserListActions.d.ts +1 -0
  125. package/dist/ui/System/SystemUser/SystemUserListActions.js +11 -0
  126. package/dist/ui/System/SystemUser/SystemUserListActions.js.map +1 -0
  127. package/dist/ui/System/SystemUser/SystemUserListCard.d.ts +11 -0
  128. package/dist/ui/System/SystemUser/SystemUserListCard.js +34 -0
  129. package/dist/ui/System/SystemUser/SystemUserListCard.js.map +1 -0
  130. package/dist/ui/System/SystemUser/SystemUserListPage.d.ts +2 -0
  131. package/dist/ui/System/SystemUser/SystemUserListPage.js +24 -0
  132. package/dist/ui/System/SystemUser/SystemUserListPage.js.map +1 -0
  133. package/dist/ui/System/SystemUser/SystemUserListPagination.d.ts +4 -0
  134. package/dist/ui/System/SystemUser/SystemUserListPagination.js +11 -0
  135. package/dist/ui/System/SystemUser/SystemUserListPagination.js.map +1 -0
  136. package/dist/ui/System/SystemUser/SystemUserPage.d.ts +1 -0
  137. package/dist/ui/System/SystemUser/SystemUserPage.js +17 -0
  138. package/dist/ui/System/SystemUser/SystemUserPage.js.map +1 -0
  139. package/dist/ui/System/SystemUser/SystemUserPageContent.d.ts +5 -0
  140. package/dist/ui/System/SystemUser/SystemUserPageContent.js +13 -0
  141. package/dist/ui/System/SystemUser/SystemUserPageContent.js.map +1 -0
  142. package/dist/ui/System/SystemUser/SystemUserRole/SystemUserRole.d.ts +6 -0
  143. package/dist/ui/System/SystemUser/SystemUserRole/SystemUserRole.js +21 -0
  144. package/dist/ui/System/SystemUser/SystemUserRole/SystemUserRole.js.map +1 -0
  145. package/dist/ui/System/SystemUser/SystemUserRole/SystemUserRole.module.css.js +4 -0
  146. package/dist/ui/System/SystemUser/SystemUserRole/SystemUserRole.module.css.js.map +1 -0
  147. package/dist/ui/System/SystemUser/SystemUserRoleForm/SystemUserRoleForm.d.ts +9 -0
  148. package/dist/ui/System/SystemUser/SystemUserRoleForm/SystemUserRoleForm.js +19 -0
  149. package/dist/ui/System/SystemUser/SystemUserRoleForm/SystemUserRoleForm.js.map +1 -0
  150. package/dist/ui/System/SystemUser/SystemUserTimestamps.d.ts +9 -0
  151. package/dist/ui/System/SystemUser/SystemUserTimestamps.js +27 -0
  152. package/dist/ui/System/SystemUser/SystemUserTimestamps.js.map +1 -0
  153. package/dist/ui/System/WelcomePage/WelcomePage.d.ts +1 -0
  154. package/dist/ui/System/WelcomePage/WelcomePage.js +16 -0
  155. package/dist/ui/System/WelcomePage/WelcomePage.js.map +1 -0
  156. package/dist/ui/System/WelcomePage/WelcomePage.module.css.js +4 -0
  157. package/dist/ui/System/WelcomePage/WelcomePage.module.css.js.map +1 -0
  158. package/{src/ui/System/types.ts → dist/ui/System/types.d.ts} +3 -5
  159. package/dist/utils/proxyFunctions.d.ts +4 -0
  160. package/dist/utils/proxyFunctions.js +34 -0
  161. package/dist/utils/proxyFunctions.js.map +1 -0
  162. package/package.json +14 -14
  163. package/rollup.config.js +1 -1
  164. package/.turbo/turbo-build.log +0 -7
  165. package/CHANGELOG.md +0 -12
  166. package/eslint.config.js +0 -21
  167. package/src/clerk/actions/invitations.ts +0 -78
  168. package/src/clerk/actions/systemUsers.ts +0 -94
  169. package/src/clerk/auth.ts +0 -34
  170. package/src/clerk/clerk.d.ts +0 -105
  171. package/src/clerk/hasPermission.ts +0 -96
  172. package/src/clerk/rbacConfig.ts +0 -68
  173. package/src/clerk/schemas/invitation.ts +0 -17
  174. package/src/clerk/schemas/systemUser.ts +0 -16
  175. package/src/clerk/toClientSafeUser.ts +0 -77
  176. package/src/constants/defaults.tsx +0 -62
  177. package/src/constants/pageLimits.ts +0 -2
  178. package/src/declaration.d.ts +0 -5
  179. package/src/providers/CMSRootProviders.tsx +0 -13
  180. package/src/routes.d.ts +0 -96
  181. package/src/ui/Inputs/ThemedMonacoEditor/ThemedMonacoEditor.module.css +0 -4
  182. package/src/ui/Inputs/ThemedMonacoEditor/ThemedMonacoEditor.tsx +0 -16
  183. package/src/ui/Layout/CMSSecurityLayout.tsx +0 -27
  184. package/src/ui/Layout/CMSSidebar/CMSSidebar.tsx +0 -39
  185. package/src/ui/Layout/CMSSidebar/CMSSidebarBody.tsx +0 -43
  186. package/src/ui/Layout/CMSSidebar/CMSSidebarFooter/CMSSidebarFooter.module.css +0 -7
  187. package/src/ui/Layout/CMSSidebar/CMSSidebarFooter/CMSSidebarFooter.tsx +0 -59
  188. package/src/ui/Layout/CMSSidebar/CMSSidebarHeader/CMSSidebarHeader.module.css +0 -44
  189. package/src/ui/Layout/CMSSidebar/CMSSidebarHeader/CMSSidebarHeader.tsx +0 -30
  190. package/src/ui/Layout/_index.ts +0 -2
  191. package/src/ui/System/Auth/SignIn/SignIn.module.css +0 -50
  192. package/src/ui/System/Auth/SignIn/SignIn.tsx +0 -79
  193. package/src/ui/System/Auth/SignIn/useSignInForm.tsx +0 -42
  194. package/src/ui/System/Auth/SignUp/SignUp.module.css +0 -48
  195. package/src/ui/System/Auth/SignUp/SignUp.tsx +0 -138
  196. package/src/ui/System/Auth/SignUp/useSignUpForm.tsx +0 -54
  197. package/src/ui/System/Invitations/InvitationList.tsx +0 -9
  198. package/src/ui/System/Invitations/InvitationListActions.tsx +0 -167
  199. package/src/ui/System/Invitations/InvitationListCard.tsx +0 -79
  200. package/src/ui/System/Invitations/InvitationListPage.tsx +0 -32
  201. package/src/ui/System/Invitations/InvitationListPagination.tsx +0 -19
  202. package/src/ui/System/Permissions/RoleListCard.tsx +0 -33
  203. package/src/ui/System/Permissions/RolePermissionsPage.tsx +0 -18
  204. package/src/ui/System/Permissions/RolePermissionsTable.tsx +0 -36
  205. package/src/ui/System/SystemUser/CurrentSystemUserButton/CurrentSystemUserButton.module.css +0 -5
  206. package/src/ui/System/SystemUser/CurrentSystemUserButton/CurrentSystemUserButton.tsx +0 -102
  207. package/src/ui/System/SystemUser/CurrentSystemUserPage.tsx +0 -12
  208. package/src/ui/System/SystemUser/SystemUserActions.tsx +0 -45
  209. package/src/ui/System/SystemUser/SystemUserDetails/SystemUserDetails.module.css +0 -6
  210. package/src/ui/System/SystemUser/SystemUserDetails/SystemUserDetails.tsx +0 -71
  211. package/src/ui/System/SystemUser/SystemUserDetailsForm/SystemUserDetailsForm.module.css +0 -7
  212. package/src/ui/System/SystemUser/SystemUserDetailsForm/SystemUserDetailsForm.tsx +0 -114
  213. package/src/ui/System/SystemUser/SystemUserList.tsx +0 -18
  214. package/src/ui/System/SystemUser/SystemUserListActions.tsx +0 -17
  215. package/src/ui/System/SystemUser/SystemUserListCard.tsx +0 -85
  216. package/src/ui/System/SystemUser/SystemUserListPage.tsx +0 -33
  217. package/src/ui/System/SystemUser/SystemUserListPagination.tsx +0 -19
  218. package/src/ui/System/SystemUser/SystemUserPage.tsx +0 -30
  219. package/src/ui/System/SystemUser/SystemUserPageContent.tsx +0 -54
  220. package/src/ui/System/SystemUser/SystemUserRole/SystemUserRole.module.css +0 -17
  221. package/src/ui/System/SystemUser/SystemUserRole/SystemUserRole.tsx +0 -64
  222. package/src/ui/System/SystemUser/SystemUserRoleForm/SystemUserRoleForm.tsx +0 -51
  223. package/src/ui/System/SystemUser/SystemUserTimestamps.tsx +0 -56
  224. package/src/ui/System/WelcomePage/WelcomePage.module.css +0 -18
  225. package/src/ui/System/WelcomePage/WelcomePage.tsx +0 -43
  226. package/src/utils/proxyFunctions.ts +0 -37
  227. package/tsconfig.json +0 -32
  228. /package/{src/clerk/_index.ts → dist/clerk/_index.d.ts} +0 -0
  229. /package/{src/clerk/actions/_index.ts → dist/clerk/actions/_index.d.ts} +0 -0
  230. /package/{src/clerk/schemas/_index.ts → dist/clerk/schemas/_index.d.ts} +0 -0
  231. /package/{src/constants/_index.ts → dist/constants/_index.d.ts} +0 -0
  232. /package/{src/index.ts → dist/index.d.ts} +0 -0
  233. /package/{src/providers/_index.ts → dist/providers/_index.d.ts} +0 -0
  234. /package/{src/ui/Inputs/_index.ts → dist/ui/Inputs/_index.d.ts} +0 -0
  235. /package/{src/ui/Layout/CMSSidebar/_index.ts → dist/ui/Layout/CMSSidebar/_index.d.ts} +0 -0
  236. /package/{src/ui/System/Auth/SignIn/_index.ts → dist/ui/System/Auth/SignIn/_index.d.ts} +0 -0
  237. /package/{src/ui/System/Auth/SignUp/_index.ts → dist/ui/System/Auth/SignUp/_index.d.ts} +0 -0
  238. /package/{src/ui/System/Auth/_index.ts → dist/ui/System/Auth/_index.d.ts} +0 -0
  239. /package/{src/ui/System/Invitations/_index.ts → dist/ui/System/Invitations/_index.d.ts} +0 -0
  240. /package/{src/ui/System/Permissions/_index.ts → dist/ui/System/Permissions/_index.d.ts} +0 -0
  241. /package/{src/ui/System/SystemUser/_index.ts → dist/ui/System/SystemUser/_index.d.ts} +0 -0
  242. /package/{src/ui/System/_index.ts → dist/ui/System/_index.d.ts} +0 -0
  243. /package/{src/ui/_index.ts → dist/ui/_index.d.ts} +0 -0
  244. /package/{src/utils/_index.ts → dist/utils/_index.d.ts} +0 -0
@@ -0,0 +1,28 @@
1
+ 'use client';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import { useUser } from '@clerk/nextjs';
4
+ import { Card, CubicsUILogo, TextInput, PasswordInput, Button, PoweredByBanner } from '@studiocubics/components';
5
+ import { useRouter } from 'next/navigation';
6
+ import { useEffect } from 'react';
7
+ import styles from './SignIn.module.css.js';
8
+ import { useSignInForm } from './useSignInForm.js';
9
+ import Link from 'next/link';
10
+
11
+ function SignIn() {
12
+ const { user } = useUser();
13
+ const router = useRouter();
14
+ const { formState, setFormState, pending, error, handleSubmit } = useSignInForm();
15
+ useEffect(() => {
16
+ if (user?.id) {
17
+ router.push("/dashboard");
18
+ }
19
+ }, [user]);
20
+ function handleFormStateChange(e) {
21
+ const target = e.currentTarget;
22
+ setFormState({ ...formState, [target.id]: target.value });
23
+ }
24
+ return (jsxs(Card, { size: "lg", className: styles.root, children: [jsxs("div", { className: styles.body, children: [jsx(CubicsUILogo, { width: "120px" }), jsxs("header", { className: styles.header, children: [jsx("h1", { children: "Sign in to your Account" }), jsx("p", { children: "Welcome Back! Lets get started." })] }), jsxs("form", { onSubmit: handleSubmit, className: styles.form, children: [jsx("div", { id: "clerk-captcha" }), jsx(TextInput, { label: "Email Address", id: "email", value: formState.email, onChange: handleFormStateChange, required: true, fullWidth: true, type: "email" }), jsx(PasswordInput, { label: "Password", id: "password", value: formState.password, onChange: handleFormStateChange, required: true, fullWidth: true, disabled: pending }), jsx(Button, { type: "submit", variant: "contained", children: "Confirm" }), error && jsx("p", { className: styles.error, children: error })] })] }), jsxs("div", { className: styles.footer, children: [jsxs("p", { children: ["Dont have an account?", " ", jsx(Link, { href: "/auth/requestAccount", children: "Request" }), " one from an admin"] }), jsx(PoweredByBanner, {})] })] }));
25
+ }
26
+
27
+ export { SignIn };
28
+ //# sourceMappingURL=SignIn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignIn.js","sources":["../../../../../src/ui/System/Auth/SignIn/SignIn.tsx"],"sourcesContent":["\"use client\";\n\nimport { useUser } from \"@clerk/nextjs\";\nimport {\n Button,\n Card,\n CubicsUILogo,\n PasswordInput,\n TextInput,\n PoweredByBanner,\n} from \"@studiocubics/components\";\nimport { useRouter } from \"next/navigation\";\nimport { type ChangeEvent, useEffect } from \"react\";\nimport styles from \"./SignIn.module.css\";\nimport { useSignInForm } from \"./useSignInForm\";\nimport Link from \"next/link\";\n\nexport function SignIn() {\n const { user } = useUser();\n const router = useRouter();\n const { formState, setFormState, pending, error, handleSubmit } =\n useSignInForm();\n\n useEffect(() => {\n if (user?.id) {\n router.push(\"/dashboard\");\n }\n }, [user]);\n\n function handleFormStateChange(e: ChangeEvent<HTMLInputElement>) {\n const target = e.currentTarget as HTMLInputElement;\n setFormState({ ...formState, [target.id]: target.value });\n }\n\n return (\n <Card size=\"lg\" className={styles.root}>\n <div className={styles.body}>\n <CubicsUILogo width={\"120px\"} />\n <header className={styles.header}>\n <h1>Sign in to your Account</h1>\n <p>Welcome Back! Lets get started.</p>\n </header>\n <form onSubmit={handleSubmit} className={styles.form}>\n <div id=\"clerk-captcha\" />\n\n <TextInput\n label={\"Email Address\"}\n id=\"email\"\n value={formState.email}\n onChange={handleFormStateChange}\n required\n fullWidth\n type=\"email\"\n />\n <PasswordInput\n label={\"Password\"}\n id=\"password\"\n value={formState.password}\n onChange={handleFormStateChange}\n required\n fullWidth\n disabled={pending}\n />\n <Button type=\"submit\" variant=\"contained\">\n Confirm\n </Button>\n {error && <p className={styles.error}>{error}</p>}\n </form>\n </div>\n <div className={styles.footer}>\n <p>\n Dont have an account?{\" \"}\n <Link href={\"/auth/requestAccount\"}>Request</Link> one from an admin\n </p>\n <PoweredByBanner />\n </div>\n </Card>\n );\n}\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ var styles = {"root":"SignIn-module_root__a85lb","body":"SignIn-module_body__Sg2nG","header":"SignIn-module_header__eyTQi","form":"SignIn-module_form__myu4V","footer":"SignIn-module_footer__u-JMS","error":"SignIn-module_error__zk6qv"};
2
+
3
+ export { styles as default };
4
+ //# sourceMappingURL=SignIn.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignIn.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,14 @@
1
+ import { type FormEvent } from "react";
2
+ export declare function useSignInForm(): {
3
+ formState: {
4
+ email: string;
5
+ password: string;
6
+ };
7
+ setFormState: import("react").Dispatch<import("react").SetStateAction<{
8
+ email: string;
9
+ password: string;
10
+ }>>;
11
+ pending: boolean;
12
+ error: string;
13
+ handleSubmit: (e: FormEvent) => Promise<void>;
14
+ };
@@ -0,0 +1,46 @@
1
+ 'use client';
2
+ import { useSignIn } from '@clerk/nextjs';
3
+ import { useState } from 'react';
4
+
5
+ function useSignInForm() {
6
+ const clerkSignIn = useSignIn();
7
+ const [formState, setFormState] = useState({
8
+ email: "",
9
+ password: "",
10
+ });
11
+ const [pending, setPending] = useState(false);
12
+ const [error, setError] = useState("");
13
+ async function handleSubmit(e) {
14
+ e.preventDefault();
15
+ const { email, password } = formState;
16
+ if (!clerkSignIn.isLoaded)
17
+ return;
18
+ try {
19
+ setPending(true);
20
+ const signInAttempt = await clerkSignIn.signIn.create({
21
+ identifier: email,
22
+ password,
23
+ });
24
+ if (signInAttempt.status === "complete") {
25
+ await clerkSignIn.setActive({
26
+ session: signInAttempt.createdSessionId,
27
+ });
28
+ }
29
+ else {
30
+ throw new Error("Sign In failed to complete");
31
+ }
32
+ }
33
+ catch (err) {
34
+ console.error(err);
35
+ if (err instanceof Error)
36
+ setError(err.message);
37
+ }
38
+ finally {
39
+ setPending(false);
40
+ }
41
+ }
42
+ return { formState, setFormState, pending, error, handleSubmit };
43
+ }
44
+
45
+ export { useSignInForm };
46
+ //# sourceMappingURL=useSignInForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSignInForm.js","sources":["../../../../../src/ui/System/Auth/SignIn/useSignInForm.tsx"],"sourcesContent":["\"use client\";\n\nimport { useSignIn } from \"@clerk/nextjs\";\nimport { type FormEvent, useState } from \"react\";\n\nexport function useSignInForm() {\n const clerkSignIn = useSignIn();\n const [formState, setFormState] = useState({\n email: \"\",\n password: \"\",\n });\n const [pending, setPending] = useState(false);\n const [error, setError] = useState(\"\");\n\n async function handleSubmit(e: FormEvent) {\n e.preventDefault();\n const { email, password } = formState;\n if (!clerkSignIn.isLoaded) return;\n\n try {\n setPending(true);\n const signInAttempt = await clerkSignIn.signIn.create({\n identifier: email,\n password,\n });\n if (signInAttempt.status === \"complete\") {\n await clerkSignIn.setActive({\n session: signInAttempt.createdSessionId,\n });\n } else {\n throw new Error(\"Sign In failed to complete\");\n }\n } catch (err) {\n console.error(err);\n if (err instanceof Error) setError(err.message);\n } finally {\n setPending(false);\n }\n }\n\n return { formState, setFormState, pending, error, handleSubmit };\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function SignUp(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,36 @@
1
+ 'use client';
2
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
+ import { useUser } from '@clerk/nextjs';
4
+ import { Card, TextInput, Button, PasswordInput, CubicsUILogo, PoweredByBanner } from '@studiocubics/components';
5
+ import Link from 'next/link';
6
+ import { useRouter } from 'next/navigation';
7
+ import { useState, useEffect } from 'react';
8
+ import styles from './SignUp.module.css.js';
9
+ import { useSignUpForm } from './useSignUpForm.js';
10
+
11
+ function SignUp() {
12
+ const { user } = useUser();
13
+ const router = useRouter();
14
+ const { ticket, setFormState, formState, pending, error, handleSubmit } = useSignUpForm();
15
+ const [step, setStep] = useState(0);
16
+ // Handle signed-in users visiting this page
17
+ // This will also redirect the user once they finish the sign-up process
18
+ useEffect(() => {
19
+ if (user?.id) {
20
+ router.push("/dashboard");
21
+ }
22
+ }, [user]);
23
+ // If there is no invitation ticket, restrict access to this page
24
+ if (!ticket) {
25
+ return (jsx(Card, { size: "lg", className: styles.root, children: jsxs("p", { children: ["Looks like you haven\u2018t been invited!", jsx("br", {}), " Please ", jsx(Link, { href: "/auth/requestAccount", children: "request" }), " an invitation from an admin."] }) }));
26
+ }
27
+ function handleFormStateChange(e) {
28
+ setFormState({ ...formState, [e.target.id]: e.target.value });
29
+ }
30
+ const Step0 = (jsxs(Fragment, { children: [jsx(TextInput, { label: "First Name", id: "firstName", value: formState.firstName, onChange: handleFormStateChange, required: true, fullWidth: true }), jsx(TextInput, { label: "Last Name", id: "lastName", value: formState.lastName, onChange: handleFormStateChange, required: true, fullWidth: true }), jsx(Button, { type: "button", variant: "contained", onClick: () => setStep(1), fullWidth: true, disabled: !formState.firstName || !formState.lastName, children: "Continue" })] }));
31
+ const Step1 = (jsxs(Fragment, { children: [jsx(PasswordInput, { label: "Password", id: "password", value: formState.password, onChange: handleFormStateChange, required: true, fullWidth: true, disabled: pending, disableStrengthMeter: false }), jsx(PasswordInput, { label: "Confirm Password", id: "confirmPassword", value: formState.confirmPassword, onChange: handleFormStateChange, required: true, fullWidth: true, disabled: pending }), jsx(Button, { disabled: pending, variant: "contained", type: "submit", fullWidth: true, children: "Register" })] }));
32
+ return (jsxs(Card, { size: "lg", className: styles.root, children: [jsxs("div", { className: styles.body, children: [jsx(CubicsUILogo, { width: "120px" }), jsxs("header", { className: styles.header, children: [jsx("h1", { children: "Create your account" }), jsx("p", { children: "Welcome! Please fill in the details to get started." })] }), jsxs("form", { onSubmit: handleSubmit, className: styles.form, children: [jsx("div", { id: "clerk-captcha" }), step == 0 && Step0, step == 1 && Step1, step > 0 && (jsx(Button, { disabled: pending, type: "button", onClick: () => setStep(step - 1), fullWidth: true, children: "Go back" })), error && jsx("p", { className: styles.error, children: error })] })] }), jsxs("div", { className: styles.footer, children: [jsxs("p", { children: ["Already have an account? ", jsx(Link, { href: "/auth/signIn/", children: "Sign In" })] }), jsx(PoweredByBanner, {})] })] }));
33
+ }
34
+
35
+ export { SignUp };
36
+ //# sourceMappingURL=SignUp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignUp.js","sources":["../../../../../src/ui/System/Auth/SignUp/SignUp.tsx"],"sourcesContent":["\"use client\";\n\nimport { useUser } from \"@clerk/nextjs\";\nimport {\n Card,\n CubicsUILogo,\n TextInput,\n PasswordInput,\n Button,\n PoweredByBanner,\n} from \"@studiocubics/components\";\nimport Link from \"next/link\";\nimport { useRouter } from \"next/navigation\";\nimport { useState, useEffect, type ChangeEvent } from \"react\";\nimport styles from \"./SignUp.module.css\";\nimport { useSignUpForm } from \"./useSignUpForm\";\n\nexport function SignUp() {\n const { user } = useUser();\n const router = useRouter();\n const { ticket, setFormState, formState, pending, error, handleSubmit } =\n useSignUpForm();\n const [step, setStep] = useState(0);\n\n // Handle signed-in users visiting this page\n // This will also redirect the user once they finish the sign-up process\n useEffect(() => {\n if (user?.id) {\n router.push(\"/dashboard\");\n }\n }, [user]);\n\n // If there is no invitation ticket, restrict access to this page\n if (!ticket) {\n return (\n <Card size=\"lg\" className={styles.root}>\n <p>\n Looks like you haven&lsquo;t been invited!\n <br /> Please <Link href={\"/auth/requestAccount\"}>request</Link> an\n invitation from an admin.\n </p>\n </Card>\n );\n }\n\n function handleFormStateChange(e: ChangeEvent<HTMLInputElement>) {\n setFormState({ ...formState, [e.target.id]: e.target.value });\n }\n\n const Step0 = (\n <>\n <TextInput\n label={\"First Name\"}\n id=\"firstName\"\n value={formState.firstName}\n onChange={handleFormStateChange}\n required\n fullWidth\n />\n <TextInput\n label={\"Last Name\"}\n id=\"lastName\"\n value={formState.lastName}\n onChange={handleFormStateChange}\n required\n fullWidth\n />\n <Button\n type=\"button\"\n variant=\"contained\"\n onClick={() => setStep(1)}\n fullWidth\n disabled={!formState.firstName || !formState.lastName}\n >\n Continue\n </Button>\n </>\n );\n const Step1 = (\n <>\n <PasswordInput\n label={\"Password\"}\n id=\"password\"\n value={formState.password}\n onChange={handleFormStateChange}\n required\n fullWidth\n disabled={pending}\n disableStrengthMeter={false}\n />\n <PasswordInput\n label={\"Confirm Password\"}\n id=\"confirmPassword\"\n value={formState.confirmPassword}\n onChange={handleFormStateChange}\n required\n fullWidth\n disabled={pending}\n />\n <Button disabled={pending} variant=\"contained\" type=\"submit\" fullWidth>\n Register\n </Button>\n </>\n );\n return (\n <Card size=\"lg\" className={styles.root}>\n <div className={styles.body}>\n <CubicsUILogo width={\"120px\"} />\n <header className={styles.header}>\n <h1>Create your account</h1>\n <p>Welcome! Please fill in the details to get started.</p>\n </header>\n <form onSubmit={handleSubmit} className={styles.form}>\n <div id=\"clerk-captcha\" />\n {step == 0 && Step0}\n {step == 1 && Step1}\n {step > 0 && (\n <Button\n disabled={pending}\n type=\"button\"\n onClick={() => setStep(step - 1)}\n fullWidth\n >\n Go back\n </Button>\n )}\n {error && <p className={styles.error}>{error}</p>}\n </form>\n </div>\n <div className={styles.footer}>\n <p>\n Already have an account? <Link href={\"/auth/signIn/\"}>Sign In</Link>\n </p>\n <PoweredByBanner />\n </div>\n </Card>\n );\n}\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ var styles = {"root":"SignUp-module_root__N7dct","body":"SignUp-module_body__K80Nw","header":"SignUp-module_header__2s9kc","form":"SignUp-module_form__BDitR","footer":"SignUp-module_footer__YFJst","error":"SignUp-module_error__1HM-5"};
2
+
3
+ export { styles as default };
4
+ //# sourceMappingURL=SignUp.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignUp.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,19 @@
1
+ import { type FormEvent } from "react";
2
+ export declare function useSignUpForm(): {
3
+ formState: {
4
+ firstName: string;
5
+ lastName: string;
6
+ password: string;
7
+ confirmPassword: string;
8
+ };
9
+ setFormState: import("react").Dispatch<import("react").SetStateAction<{
10
+ firstName: string;
11
+ lastName: string;
12
+ password: string;
13
+ confirmPassword: string;
14
+ }>>;
15
+ pending: boolean;
16
+ ticket: string | null;
17
+ error: string;
18
+ handleSubmit: (e: FormEvent) => Promise<void>;
19
+ };
@@ -0,0 +1,58 @@
1
+ 'use client';
2
+ import { useSignUp } from '@clerk/nextjs';
3
+ import { useSearchParams } from 'next/navigation';
4
+ import { useState } from 'react';
5
+
6
+ function useSignUpForm() {
7
+ const clerkSignUp = useSignUp();
8
+ const [formState, setFormState] = useState({
9
+ firstName: "",
10
+ lastName: "",
11
+ password: "",
12
+ confirmPassword: "",
13
+ });
14
+ const [pending, setPending] = useState(false);
15
+ const [error, setError] = useState("");
16
+ const ticket = useSearchParams().get("__clerk_ticket");
17
+ async function handleSubmit(e) {
18
+ e.preventDefault();
19
+ const { firstName, lastName, password, confirmPassword } = formState;
20
+ if (!clerkSignUp.isLoaded)
21
+ return;
22
+ if (!ticket)
23
+ return;
24
+ if (password != confirmPassword) {
25
+ return setError("Passwords dont match!");
26
+ }
27
+ try {
28
+ setPending(true);
29
+ const signUpAttempt = await clerkSignUp.signUp.create({
30
+ strategy: "ticket",
31
+ ticket,
32
+ firstName,
33
+ lastName,
34
+ password,
35
+ });
36
+ if (signUpAttempt.status === "complete") {
37
+ await clerkSignUp.setActive({
38
+ session: signUpAttempt.createdSessionId,
39
+ });
40
+ }
41
+ else {
42
+ throw new Error("Sign Up failed to complete");
43
+ }
44
+ }
45
+ catch (err) {
46
+ console.error(err);
47
+ if (err instanceof Error)
48
+ setError(err.message);
49
+ }
50
+ finally {
51
+ setPending(false);
52
+ }
53
+ }
54
+ return { formState, setFormState, pending, ticket, error, handleSubmit };
55
+ }
56
+
57
+ export { useSignUpForm };
58
+ //# sourceMappingURL=useSignUpForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSignUpForm.js","sources":["../../../../../src/ui/System/Auth/SignUp/useSignUpForm.tsx"],"sourcesContent":["\"use client\";\n\nimport { useSignUp } from \"@clerk/nextjs\";\nimport { useSearchParams } from \"next/navigation\";\nimport { type FormEvent, useState } from \"react\";\n\nexport function useSignUpForm() {\n const clerkSignUp = useSignUp();\n const [formState, setFormState] = useState({\n firstName: \"\",\n lastName: \"\",\n password: \"\",\n confirmPassword: \"\",\n });\n const [pending, setPending] = useState(false);\n const [error, setError] = useState(\"\");\n\n const ticket = useSearchParams().get(\"__clerk_ticket\");\n\n async function handleSubmit(e: FormEvent) {\n e.preventDefault();\n const { firstName, lastName, password, confirmPassword } = formState;\n if (!clerkSignUp.isLoaded) return;\n if (!ticket) return;\n if (password != confirmPassword) {\n return setError(\"Passwords dont match!\");\n }\n\n try {\n setPending(true);\n const signUpAttempt = await clerkSignUp.signUp.create({\n strategy: \"ticket\",\n ticket,\n firstName,\n lastName,\n password,\n });\n if (signUpAttempt.status === \"complete\") {\n await clerkSignUp.setActive({\n session: signUpAttempt.createdSessionId,\n });\n } else {\n throw new Error(\"Sign Up failed to complete\");\n }\n } catch (err) {\n console.error(err);\n if (err instanceof Error) setError(err.message);\n } finally {\n setPending(false);\n }\n }\n\n return { formState, setFormState, pending, ticket, error, handleSubmit };\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function InvitationList(params: ClerkInvitationListParams): Promise<import("react/jsx-runtime").JSX.Element[]>;
@@ -0,0 +1,11 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { invitationListReadAction } from '../../../clerk/actions/invitations.js';
3
+ import { InvitationListCard } from './InvitationListCard.js';
4
+
5
+ async function InvitationList(params) {
6
+ const invitationList = await invitationListReadAction(params);
7
+ return invitationList.data.map((inv) => (jsx(InvitationListCard, { invitation: inv }, inv.id)));
8
+ }
9
+
10
+ export { InvitationList };
11
+ //# sourceMappingURL=InvitationList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvitationList.js","sources":["../../../../src/ui/System/Invitations/InvitationList.tsx"],"sourcesContent":["import { invitationListReadAction } from \"../../../clerk/actions/invitations\";\nimport { InvitationListCard } from \"./InvitationListCard\";\n\nexport async function InvitationList(params: ClerkInvitationListParams) {\n const invitationList = await invitationListReadAction(params);\n return invitationList.data.map((inv) => (\n <InvitationListCard key={inv.id} invitation={inv} />\n ));\n}\n"],"names":["_jsx"],"mappings":";;;;AAGO,eAAe,cAAc,CAAC,MAAiC,EAAA;AACpE,IAAA,MAAM,cAAc,GAAG,MAAM,wBAAwB,CAAC,MAAM,CAAC;IAC7D,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MACjCA,IAAC,kBAAkB,EAAA,EAAc,UAAU,EAAE,GAAG,EAAA,EAAvB,GAAG,CAAC,EAAE,CAAqB,CACrD,CAAC;AACJ;;;;"}
@@ -0,0 +1,11 @@
1
+ import type { Invitation } from "@clerk/nextjs/server";
2
+ export declare function InvitationListActions({ status, }: {
3
+ status: ClerkInvitationListParams["status"];
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ export declare function InvitationRevokeDialog({ id }: {
6
+ id: Invitation["id"];
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ declare const initialInvitationCreateState: import("@studiocubics/utils").ActionResponse<"role" | "emailAddress" | "expiresInDays", ("role" | "emailAddress" | "expiresInDays")[]>;
9
+ export type InvitationCreateState = typeof initialInvitationCreateState;
10
+ export declare function InvitationCreateDialog(): import("react/jsx-runtime").JSX.Element;
11
+ export {};
@@ -0,0 +1,39 @@
1
+ 'use client';
2
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
3
+ import { useDisclosure } from '@studiocubics/hooks';
4
+ import { Button, Dialog, ConfirmationForm, TextInput, Switch, Select } from '@studiocubics/components';
5
+ import { Eye, EyeClosed, Ban, UserPlus } from 'lucide-react';
6
+ import Link from 'next/link';
7
+ import { initialiseForm, toCapitalised } from '@studiocubics/utils';
8
+ import { useActionState, useEffect } from 'react';
9
+ import { invitationDeleteAction, invitationCreateAction } from '../../../clerk/actions/invitations.js';
10
+ import { roles } from '../../../clerk/rbacConfig.js';
11
+
12
+ function InvitationListActions({ status, }) {
13
+ const isShowRevoked = status == "revoked";
14
+ return (jsxs(Fragment, { children: [jsx(Link, { href: `?status=${!isShowRevoked ? "revoked" : ""}`, children: jsxs(Button, { startIcon: isShowRevoked ? jsx(Eye, {}) : jsx(EyeClosed, {}), size: "sm", color: isShowRevoked ? "primary" : undefined, children: [isShowRevoked ? "Hide" : "Show", " Revoked"] }) }), jsx(InvitationCreateDialog, {})] }));
15
+ }
16
+ function InvitationRevokeDialog({ id }) {
17
+ const { open, handleOpen, handleStrictClose, handleClose } = useDisclosure();
18
+ const [state, action, pending] = useActionState(invitationDeleteAction.bind(null, id), initialiseForm());
19
+ useEffect(() => {
20
+ if (state.success) {
21
+ handleClose();
22
+ }
23
+ }, [state]);
24
+ return (jsxs(Fragment, { children: [jsx(Button, { color: "error", type: "submit", startIcon: jsx(Ban, {}), onClick: handleOpen, disabled: pending, children: "Revoke Invitation" }), jsx(Dialog, { open: open, onClose: handleStrictClose, children: jsx(ConfirmationForm, { variant: "danger", onCancel: handleClose, action: action, formTitle: "Revoke Invitation", confirmText: "Revoke", disabled: pending, children: "Are you sure you want to revoke this invitation?" }) })] }));
25
+ }
26
+ const initialInvitationCreateState = initialiseForm("emailAddress", "expiresInDays", "role");
27
+ function InvitationCreateDialog() {
28
+ const { open, handleOpen, handleStrictClose, handleClose } = useDisclosure();
29
+ const [state, action, pending] = useActionState(invitationCreateAction, initialInvitationCreateState);
30
+ useEffect(() => {
31
+ if (state.success) {
32
+ handleClose();
33
+ }
34
+ }, [state]);
35
+ return (jsxs(Fragment, { children: [jsx(Button, { size: "sm", startIcon: jsx(UserPlus, {}), variant: "contained", onClick: handleOpen, children: "Invite New" }), jsx(Dialog, { open: open, onClose: handleStrictClose, children: jsxs(ConfirmationForm, { onCancel: handleClose, action: action, formTitle: "Invite New", disabled: pending, children: [jsx(TextInput, { required: true, type: "email", name: "emailAddress", label: "Email Address", disabled: pending, error: state.fieldErrors?.emailAddress }), jsx(TextInput, { type: "number", name: "expiresInDays", label: "Expires in Days", endIcon: jsx("strong", { children: "Days\u00A0\u00A0" }), defaultValue: 30, disabled: pending, error: state.fieldErrors?.expiresInDays }), jsx(Switch, { name: "ignoreExisting", label: "Ignore Existing Invites", disabled: pending }), jsx(Switch, { name: "notify", value: true, label: "Notify with email", disabled: pending }), jsx(Select, { name: "role", label: "Select Role to assign user on sign up", disabled: pending, error: state.fieldErrors?.role, children: roles.map((r) => (jsx("option", { value: r, children: toCapitalised(r) }, r))) })] }) })] }));
36
+ }
37
+
38
+ export { InvitationCreateDialog, InvitationListActions, InvitationRevokeDialog };
39
+ //# sourceMappingURL=InvitationListActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvitationListActions.js","sources":["../../../../src/ui/System/Invitations/InvitationListActions.tsx"],"sourcesContent":["\"use client\";\n\nimport { useDisclosure } from \"@studiocubics/hooks\";\nimport {\n Button,\n Dialog,\n Switch,\n TextInput,\n ConfirmationForm,\n Select,\n} from \"@studiocubics/components\";\nimport { Ban, Eye, EyeClosed, UserPlus } from \"lucide-react\";\nimport Link from \"next/link\";\nimport type { Invitation } from \"@clerk/nextjs/server\";\nimport { initialiseForm, toCapitalised } from \"@studiocubics/utils\";\nimport { useActionState, useEffect } from \"react\";\nimport {\n invitationDeleteAction,\n invitationCreateAction,\n} from \"../../../clerk/actions/invitations\";\nimport { roles } from \"../../../clerk/rbacConfig\";\n\nexport function InvitationListActions({\n status,\n}: {\n status: ClerkInvitationListParams[\"status\"];\n}) {\n const isShowRevoked = status == \"revoked\";\n return (\n <>\n <Link href={`?status=${!isShowRevoked ? \"revoked\" : \"\"}`}>\n <Button\n startIcon={isShowRevoked ? <Eye /> : <EyeClosed />}\n size=\"sm\"\n color={isShowRevoked ? \"primary\" : undefined}\n >\n {isShowRevoked ? \"Hide\" : \"Show\"} Revoked\n </Button>\n </Link>\n <InvitationCreateDialog />\n </>\n );\n}\nexport function InvitationRevokeDialog({ id }: { id: Invitation[\"id\"] }) {\n const { open, handleOpen, handleStrictClose, handleClose } = useDisclosure();\n const [state, action, pending] = useActionState(\n invitationDeleteAction.bind(null, id),\n initialiseForm(),\n );\n useEffect(() => {\n if (state.success) {\n handleClose();\n }\n }, [state]);\n return (\n <>\n <Button\n color=\"error\"\n type=\"submit\"\n startIcon={<Ban />}\n onClick={handleOpen}\n disabled={pending}\n >\n Revoke Invitation\n </Button>\n <Dialog open={open} onClose={handleStrictClose}>\n <ConfirmationForm\n variant=\"danger\"\n onCancel={handleClose}\n action={action}\n formTitle=\"Revoke Invitation\"\n confirmText=\"Revoke\"\n disabled={pending}\n >\n Are you sure you want to revoke this invitation?\n </ConfirmationForm>\n </Dialog>\n </>\n );\n}\nconst initialInvitationCreateState = initialiseForm(\n \"emailAddress\",\n \"expiresInDays\",\n \"role\",\n);\nexport type InvitationCreateState = typeof initialInvitationCreateState;\nexport function InvitationCreateDialog() {\n const { open, handleOpen, handleStrictClose, handleClose } = useDisclosure();\n const [state, action, pending] = useActionState<\n InvitationCreateState,\n FormData\n >(invitationCreateAction, initialInvitationCreateState);\n useEffect(() => {\n if (state.success) {\n handleClose();\n }\n }, [state]);\n return (\n <>\n <Button\n size=\"sm\"\n startIcon={<UserPlus />}\n variant=\"contained\"\n onClick={handleOpen}\n >\n Invite New\n </Button>\n <Dialog open={open} onClose={handleStrictClose}>\n <ConfirmationForm\n onCancel={handleClose}\n action={action}\n formTitle=\"Invite New\"\n disabled={pending}\n >\n <TextInput\n required\n type=\"email\"\n name=\"emailAddress\"\n label=\"Email Address\"\n disabled={pending}\n error={state.fieldErrors?.emailAddress}\n />\n <TextInput\n type=\"number\"\n name=\"expiresInDays\"\n label=\"Expires in Days\"\n endIcon={<strong>Days&nbsp;&nbsp;</strong>}\n defaultValue={30}\n disabled={pending}\n error={state.fieldErrors?.expiresInDays}\n />\n <Switch\n name=\"ignoreExisting\"\n label=\"Ignore Existing Invites\"\n disabled={pending}\n />\n <Switch\n name=\"notify\"\n value={true}\n label=\"Notify with email\"\n disabled={pending}\n />\n <Select\n name=\"role\"\n label=\"Select Role to assign user on sign up\"\n disabled={pending}\n error={state.fieldErrors?.role}\n >\n {roles.map((r) => (\n <option key={r} value={r}>\n {toCapitalised(r)}\n </option>\n ))}\n </Select>\n </ConfirmationForm>\n </Dialog>\n </>\n );\n}\n\n// emailAddress: string;\n// expiresInDays?: number;\n// ignoreExisting?: boolean;\n// notify?: boolean;\n// publicMetadata?: UserPublicMetadata;\n// redirectUrl?: string;\n// templateSlug?: \"invitation\" | \"waitlist_invitation\";\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Invitation } from "@clerk/nextjs/server";
2
+ export declare function InvitationListCard({ invitation }: {
3
+ invitation: Invitation;
4
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,16 @@
1
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
+ import { AccordionItem, SectionWrapper, LabeledValue, Chip, CopyableText, CollectionItemCard, Tooltip } from '@studiocubics/components';
3
+ import { toCapitalised, formatDate, relativeTime } from '@studiocubics/utils';
4
+ import { InvitationRevokeDialog } from './InvitationListActions.js';
5
+ import { ThemedMonacoEditor } from '../../Inputs/ThemedMonacoEditor/ThemedMonacoEditor.js';
6
+
7
+ function InvitationListCard({ invitation }) {
8
+ return (jsxs(AccordionItem, { summary: jsx(CollectionItemCard, { id: invitation.id, title: invitation.emailAddress, subtitle: jsxs(Fragment, { children: ["Invited\u2009", jsx(Tooltip, { children: jsx("span", { children: relativeTime(invitation.createdAt) }) })] }), chip: toCapitalised(invitation.status), description: jsx("span", {}) }), name: "InvitationListCard", children: [jsxs(SectionWrapper, { title: "Basic Details", noBorders: true, children: [jsx(LabeledValue, { label: "Id", children: invitation.id }), jsx(LabeledValue, { label: "Email Address", children: invitation.emailAddress }), jsx(LabeledValue, { label: "Status", children: jsx(Chip, { color: invitation.status == "accepted"
9
+ ? "primary"
10
+ : invitation.status == "pending"
11
+ ? "secondary"
12
+ : "error", children: jsx("strong", { children: toCapitalised(invitation.status) }) }) })] }), jsxs(SectionWrapper, { title: "Timestamps", children: [jsx(LabeledValue, { label: "Created At", children: formatDate(invitation.createdAt) }), jsx(LabeledValue, { label: "Updated At", children: formatDate(invitation.updatedAt) })] }), jsx(SectionWrapper, { title: "Invite Link", children: jsx(CopyableText, { children: invitation.url ?? "No link found!" }) }), jsx(SectionWrapper, { title: "Public Metadata", children: jsx(ThemedMonacoEditor, { options: { readOnly: true }, height: "10vh", defaultLanguage: "json", defaultValue: JSON.stringify(invitation.publicMetadata) }) }), invitation.status == "pending" && (jsx(InvitationRevokeDialog, { id: invitation.id }))] }));
13
+ }
14
+
15
+ export { InvitationListCard };
16
+ //# sourceMappingURL=InvitationListCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvitationListCard.js","sources":["../../../../src/ui/System/Invitations/InvitationListCard.tsx"],"sourcesContent":["import type { Invitation } from \"@clerk/nextjs/server\";\nimport {\n AccordionItem,\n Chip,\n CollectionItemCard,\n CopyableText,\n LabeledValue,\n SectionWrapper,\n Tooltip,\n} from \"@studiocubics/components\";\nimport { formatDate, relativeTime, toCapitalised } from \"@studiocubics/utils\";\nimport { InvitationRevokeDialog } from \"./InvitationListActions\";\nimport { ThemedMonacoEditor } from \"../../Inputs/ThemedMonacoEditor/ThemedMonacoEditor\";\n\nexport function InvitationListCard({ invitation }: { invitation: Invitation }) {\n return (\n <AccordionItem\n summary={\n <CollectionItemCard\n id={invitation.id}\n title={invitation.emailAddress}\n subtitle={\n <>\n Invited&thinsp;\n <Tooltip>\n <span>{relativeTime(invitation.createdAt)}</span>\n </Tooltip>\n </>\n }\n chip={toCapitalised(invitation.status)}\n description={<span></span>}\n />\n }\n name=\"InvitationListCard\"\n >\n <SectionWrapper title={\"Basic Details\"} noBorders>\n <LabeledValue label={\"Id\"}>{invitation.id}</LabeledValue>\n <LabeledValue label={\"Email Address\"}>\n {invitation.emailAddress}\n </LabeledValue>\n <LabeledValue label={\"Status\"}>\n <Chip\n color={\n invitation.status == \"accepted\"\n ? \"primary\"\n : invitation.status == \"pending\"\n ? \"secondary\"\n : \"error\"\n }\n >\n <strong>{toCapitalised(invitation.status)}</strong>\n </Chip>\n </LabeledValue>\n </SectionWrapper>\n <SectionWrapper title={\"Timestamps\"}>\n <LabeledValue label={\"Created At\"}>\n {formatDate(invitation.createdAt)}\n </LabeledValue>\n <LabeledValue label={\"Updated At\"}>\n {formatDate(invitation.updatedAt)}\n </LabeledValue>\n </SectionWrapper>\n <SectionWrapper title={\"Invite Link\"}>\n <CopyableText>{invitation.url ?? \"No link found!\"}</CopyableText>\n </SectionWrapper>\n <SectionWrapper title={\"Public Metadata\"}>\n <ThemedMonacoEditor\n options={{ readOnly: true }}\n height=\"10vh\"\n defaultLanguage=\"json\"\n defaultValue={JSON.stringify(invitation.publicMetadata)}\n />\n </SectionWrapper>\n {invitation.status == \"pending\" && (\n <InvitationRevokeDialog id={invitation.id} />\n )}\n </AccordionItem>\n );\n}\n"],"names":["_jsxs","_jsx","_Fragment"],"mappings":";;;;;;AAcM,SAAU,kBAAkB,CAAC,EAAE,UAAU,EAA8B,EAAA;IAC3E,QACEA,KAAC,aAAa,EAAA,EACZ,OAAO,EACLC,GAAA,CAAC,kBAAkB,EAAA,EACjB,EAAE,EAAE,UAAU,CAAC,EAAE,EACjB,KAAK,EAAE,UAAU,CAAC,YAAY,EAC9B,QAAQ,EACND,IAAA,CAAAE,QAAA,EAAA,EAAA,QAAA,EAAA,CAAA,eAAA,EAEED,GAAA,CAAC,OAAO,EAAA,EAAA,QAAA,EACNA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAO,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,EAAA,CAAQ,EAAA,CACzC,CAAA,EAAA,CACT,EAEL,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,EACtC,WAAW,EAAEA,GAAA,CAAA,MAAA,EAAA,EAAA,CAAa,EAAA,CAC1B,EAEJ,IAAI,EAAC,oBAAoB,aAEzBD,IAAA,CAAC,cAAc,IAAC,KAAK,EAAE,eAAe,EAAE,SAAS,EAAA,IAAA,EAAA,QAAA,EAAA,CAC/CC,IAAC,YAAY,EAAA,EAAC,KAAK,EAAE,IAAI,EAAA,QAAA,EAAG,UAAU,CAAC,EAAE,EAAA,CAAgB,EACzDA,GAAA,CAAC,YAAY,IAAC,KAAK,EAAE,eAAe,EAAA,QAAA,EACjC,UAAU,CAAC,YAAY,EAAA,CACX,EACfA,GAAA,CAAC,YAAY,EAAA,EAAC,KAAK,EAAE,QAAQ,EAAA,QAAA,EAC3BA,GAAA,CAAC,IAAI,EAAA,EACH,KAAK,EACH,UAAU,CAAC,MAAM,IAAI;AACnB,kCAAE;AACF,kCAAE,UAAU,CAAC,MAAM,IAAI;AACrB,sCAAE;AACF,sCAAE,OAAO,EAAA,QAAA,EAGfA,GAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAS,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,EAAA,CAAU,EAAA,CAC9C,EAAA,CACM,CAAA,EAAA,CACA,EACjBD,IAAA,CAAC,cAAc,EAAA,EAAC,KAAK,EAAE,YAAY,EAAA,QAAA,EAAA,CACjCC,GAAA,CAAC,YAAY,EAAA,EAAC,KAAK,EAAE,YAAY,YAC9B,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAA,CACpB,EACfA,GAAA,CAAC,YAAY,EAAA,EAAC,KAAK,EAAE,YAAY,EAAA,QAAA,EAC9B,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAA,CACpB,CAAA,EAAA,CACA,EACjBA,GAAA,CAAC,cAAc,EAAA,EAAC,KAAK,EAAE,aAAa,EAAA,QAAA,EAClCA,GAAA,CAAC,YAAY,EAAA,EAAA,QAAA,EAAE,UAAU,CAAC,GAAG,IAAI,gBAAgB,EAAA,CAAgB,EAAA,CAClD,EACjBA,GAAA,CAAC,cAAc,EAAA,EAAC,KAAK,EAAE,iBAAiB,EAAA,QAAA,EACtCA,GAAA,CAAC,kBAAkB,EAAA,EACjB,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAC3B,MAAM,EAAC,MAAM,EACb,eAAe,EAAC,MAAM,EACtB,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,EAAA,CACvD,EAAA,CACa,EAChB,UAAU,CAAC,MAAM,IAAI,SAAS,KAC7BA,GAAA,CAAC,sBAAsB,EAAA,EAAC,EAAE,EAAE,UAAU,CAAC,EAAE,EAAA,CAAI,CAC9C,CAAA,EAAA,CACa;AAEpB;;;;"}
@@ -0,0 +1,2 @@
1
+ import type { SecurityPageProps } from "../types";
2
+ export declare function InvitationListPage({ searchParams, securityLinks, }: SecurityPageProps): Promise<import("react/jsx-runtime").JSX.Element>;
@@ -0,0 +1,22 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { INVITATIONS_PAGE_LIMIT } from '../../../constants/pageLimits.js';
3
+ import { PageLayoutPagination } from '@studiocubics/components';
4
+ import { InvitationListPagination } from './InvitationListPagination.js';
5
+ import { InvitationList } from './InvitationList.js';
6
+ import { InvitationListActions } from './InvitationListActions.js';
7
+
8
+ async function InvitationListPage({ searchParams, securityLinks, }) {
9
+ const sp = await searchParams;
10
+ const status = sp.status;
11
+ const page = Number(sp.page ?? 1);
12
+ const offset = (page - 1) * INVITATIONS_PAGE_LIMIT;
13
+ const params = {
14
+ limit: INVITATIONS_PAGE_LIMIT,
15
+ offset,
16
+ status,
17
+ };
18
+ return (jsx(PageLayoutPagination, { size: "sm", title: securityLinks[3]?.children, actions: jsx(InvitationListActions, { status: status }), paginationComponent: jsx(InvitationListPagination, { page: page, ...params }), children: jsx(InvitationList, { ...params }) }));
19
+ }
20
+
21
+ export { InvitationListPage };
22
+ //# sourceMappingURL=InvitationListPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvitationListPage.js","sources":["../../../../src/ui/System/Invitations/InvitationListPage.tsx"],"sourcesContent":["import { INVITATIONS_PAGE_LIMIT as limit } from \"../../../constants/pageLimits\";\nimport { PageLayoutPagination } from \"@studiocubics/components\";\nimport { InvitationListPagination } from \"./InvitationListPagination\";\nimport { InvitationList } from \"./InvitationList\";\nimport type { SecurityPageProps } from \"../types\";\nimport { InvitationListActions } from \"./InvitationListActions\";\n\nexport async function InvitationListPage({\n searchParams,\n securityLinks,\n}: SecurityPageProps) {\n const sp = await searchParams;\n const status = sp.status as ClerkInvitationListParams[\"status\"];\n const page = Number(sp.page ?? 1);\n const offset = (page - 1) * limit;\n const params = {\n limit,\n offset,\n status,\n };\n\n return (\n <PageLayoutPagination\n size=\"sm\"\n title={securityLinks[3]?.children}\n actions={<InvitationListActions status={status} />}\n paginationComponent={<InvitationListPagination page={page} {...params} />}\n >\n <InvitationList {...params} />\n </PageLayoutPagination>\n );\n}\n"],"names":["limit","_jsx"],"mappings":";;;;;;;AAOO,eAAe,kBAAkB,CAAC,EACvC,YAAY,EACZ,aAAa,GACK,EAAA;AAClB,IAAA,MAAM,EAAE,GAAG,MAAM,YAAY;AAC7B,IAAA,MAAM,MAAM,GAAG,EAAE,CAAC,MAA6C;IAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,IAAIA,sBAAK;AACjC,IAAA,MAAM,MAAM,GAAG;eACbA,sBAAK;QACL,MAAM;QACN,MAAM;KACP;IAED,QACEC,IAAC,oBAAoB,EAAA,EACnB,IAAI,EAAC,IAAI,EACT,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EACjC,OAAO,EAAEA,GAAA,CAAC,qBAAqB,EAAA,EAAC,MAAM,EAAE,MAAM,EAAA,CAAI,EAClD,mBAAmB,EAAEA,IAAC,wBAAwB,EAAA,EAAC,IAAI,EAAE,IAAI,KAAM,MAAM,EAAA,CAAI,YAEzEA,GAAA,CAAC,cAAc,OAAK,MAAM,EAAA,CAAI,EAAA,CACT;AAE3B;;;;"}
@@ -0,0 +1,4 @@
1
+ export declare function InvitationListPagination({ page, ...params }: {
2
+ page: number;
3
+ limit: number;
4
+ } & ClerkInvitationListParams): Promise<import("react/jsx-runtime").JSX.Element>;
@@ -0,0 +1,11 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { NextSSRPagination } from '@studiocubics/next';
3
+ import { invitationListReadAction } from '../../../clerk/actions/invitations.js';
4
+
5
+ async function InvitationListPagination({ page, ...params }) {
6
+ const invitationList = await invitationListReadAction(params);
7
+ return (jsx(NextSSRPagination, { page: page, limit: params.limit, total: invitationList.totalCount }));
8
+ }
9
+
10
+ export { InvitationListPagination };
11
+ //# sourceMappingURL=InvitationListPagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvitationListPagination.js","sources":["../../../../src/ui/System/Invitations/InvitationListPagination.tsx"],"sourcesContent":["import { NextSSRPagination } from \"@studiocubics/next\";\nimport { invitationListReadAction } from \"../../../clerk/actions/invitations\";\n\nexport async function InvitationListPagination({\n page,\n ...params\n}: {\n page: number;\n limit: number;\n} & ClerkInvitationListParams) {\n const invitationList = await invitationListReadAction(params);\n return (\n <NextSSRPagination\n page={page}\n limit={params.limit}\n total={invitationList.totalCount}\n />\n );\n}\n"],"names":["_jsx"],"mappings":";;;;AAGO,eAAe,wBAAwB,CAAC,EAC7C,IAAI,EACJ,GAAG,MAAM,EAIkB,EAAA;AAC3B,IAAA,MAAM,cAAc,GAAG,MAAM,wBAAwB,CAAC,MAAM,CAAC;IAC7D,QACEA,IAAC,iBAAiB,EAAA,EAChB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,KAAK,EAAE,cAAc,CAAC,UAAU,EAAA,CAChC;AAEN;;;;"}
@@ -0,0 +1,6 @@
1
+ import type { Role, RoleDoc } from "../../../clerk/rbacConfig";
2
+ export interface RoleCardProps {
3
+ role: Role;
4
+ rbacConfig: RoleDoc;
5
+ }
6
+ export declare function RoleListCard(props: RoleCardProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,11 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { AccordionItem, SectionWrapper, CollectionItemCard } from '@studiocubics/components';
3
+ import { RolePermissionsTable } from './RolePermissionsTable.js';
4
+
5
+ function RoleListCard(props) {
6
+ const { role, rbacConfig } = props;
7
+ return (jsx(AccordionItem, { name: "RoleCard", summary: jsx(CollectionItemCard, { title: role, chip: rbacConfig.isSystem ? "System User" : "", description: rbacConfig.desc }), children: jsx(SectionWrapper, { title: `${role}'s Permissions`, noBorders: true, children: jsx(RolePermissionsTable, { ...props }) }) }));
8
+ }
9
+
10
+ export { RoleListCard };
11
+ //# sourceMappingURL=RoleListCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RoleListCard.js","sources":["../../../../src/ui/System/Permissions/RoleListCard.tsx"],"sourcesContent":["import {\n AccordionItem,\n CollectionItemCard,\n SectionWrapper,\n} from \"@studiocubics/components\";\nimport { RolePermissionsTable } from \"./RolePermissionsTable\";\nimport type { Role, RoleDoc } from \"../../../clerk/rbacConfig\";\n\nexport interface RoleCardProps {\n role: Role;\n rbacConfig: RoleDoc;\n}\n\nexport function RoleListCard(props: RoleCardProps) {\n const { role, rbacConfig } = props;\n\n return (\n <AccordionItem\n name=\"RoleCard\"\n summary={\n <CollectionItemCard\n title={role}\n chip={rbacConfig.isSystem ? \"System User\" : \"\"}\n description={rbacConfig.desc}\n />\n }\n >\n <SectionWrapper title={`${role}'s Permissions`} noBorders>\n <RolePermissionsTable {...props} />\n </SectionWrapper>\n </AccordionItem>\n );\n}\n"],"names":["_jsx"],"mappings":";;;;AAaM,SAAU,YAAY,CAAC,KAAoB,EAAA;AAC/C,IAAA,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,KAAK;IAElC,QACEA,GAAA,CAAC,aAAa,EAAA,EACZ,IAAI,EAAC,UAAU,EACf,OAAO,EACLA,GAAA,CAAC,kBAAkB,EAAA,EACjB,KAAK,EAAE,IAAI,EACX,IAAI,EAAE,UAAU,CAAC,QAAQ,GAAG,aAAa,GAAG,EAAE,EAC9C,WAAW,EAAE,UAAU,CAAC,IAAI,EAAA,CAC5B,EAAA,QAAA,EAGJA,GAAA,CAAC,cAAc,EAAA,EAAC,KAAK,EAAE,CAAA,EAAG,IAAI,CAAA,cAAA,CAAgB,EAAE,SAAS,EAAA,IAAA,EAAA,QAAA,EACvDA,GAAA,CAAC,oBAAoB,EAAA,EAAA,GAAK,KAAK,EAAA,CAAI,EAAA,CACpB,EAAA,CACH;AAEpB;;;;"}
@@ -0,0 +1,4 @@
1
+ import { type TabProps } from "@studiocubics/components";
2
+ export declare function RolePermissionsPage({ securityLinks, }: {
3
+ securityLinks: TabProps[];
4
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { PageLayoutPagination } from '@studiocubics/components';
3
+ import { RoleListCard } from './RoleListCard.js';
4
+ import { RBAC_CONFIG } from '../../../clerk/rbacConfig.js';
5
+
6
+ function RolePermissionsPage({ securityLinks, }) {
7
+ return (jsx(PageLayoutPagination, { size: "sm", title: securityLinks[1]?.children, children: Object.keys(RBAC_CONFIG).map((k) => {
8
+ const item = RBAC_CONFIG[k];
9
+ return jsx(RoleListCard, { role: k, rbacConfig: item }, k);
10
+ }) }));
11
+ }
12
+
13
+ export { RolePermissionsPage };
14
+ //# sourceMappingURL=RolePermissionsPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RolePermissionsPage.js","sources":["../../../../src/ui/System/Permissions/RolePermissionsPage.tsx"],"sourcesContent":["import { PageLayoutPagination, type TabProps } from \"@studiocubics/components\";\nimport { RoleListCard } from \"./RoleListCard\";\nimport { RBAC_CONFIG } from \"../../../clerk/rbacConfig\";\n\nexport function RolePermissionsPage({\n securityLinks,\n}: {\n securityLinks: TabProps[];\n}) {\n return (\n <PageLayoutPagination size=\"sm\" title={securityLinks[1]?.children}>\n {(Object.keys(RBAC_CONFIG) as (keyof typeof RBAC_CONFIG)[]).map((k) => {\n const item = RBAC_CONFIG[k];\n return <RoleListCard key={k} role={k} rbacConfig={item} />;\n })}\n </PageLayoutPagination>\n );\n}\n"],"names":["_jsx"],"mappings":";;;;;AAIM,SAAU,mBAAmB,CAAC,EAClC,aAAa,GAGd,EAAA;AACC,IAAA,QACEA,GAAA,CAAC,oBAAoB,EAAA,EAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAA,QAAA,EAC7D,MAAM,CAAC,IAAI,CAAC,WAAW,CAAkC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AACpE,YAAA,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC;AAC3B,YAAA,OAAOA,GAAA,CAAC,YAAY,EAAA,EAAS,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAA,EAA5B,CAAC,CAA+B;QAC5D,CAAC,CAAC,EAAA,CACmB;AAE3B;;;;"}