@schemavaults/auth-ui 0.5.44

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 (144) hide show
  1. package/README.md +27 -0
  2. package/dist/components/AccountCard/account_card.d.ts +15 -0
  3. package/dist/components/AccountCard/account_card.js +21 -0
  4. package/dist/components/AccountCard/account_card.js.map +1 -0
  5. package/dist/components/AccountCard/index.d.ts +2 -0
  6. package/dist/components/AccountCard/index.js +2 -0
  7. package/dist/components/AccountCard/index.js.map +1 -0
  8. package/dist/components/AccountCard/view_admin_page_link.d.ts +7 -0
  9. package/dist/components/AccountCard/view_admin_page_link.js +28 -0
  10. package/dist/components/AccountCard/view_admin_page_link.js.map +1 -0
  11. package/dist/components/AccountCard/view_full_user_profile.d.ts +6 -0
  12. package/dist/components/AccountCard/view_full_user_profile.js +25 -0
  13. package/dist/components/AccountCard/view_full_user_profile.js.map +1 -0
  14. package/dist/components/ApiServersCard/api_servers_card.d.ts +9 -0
  15. package/dist/components/ApiServersCard/api_servers_card.js +12 -0
  16. package/dist/components/ApiServersCard/api_servers_card.js.map +1 -0
  17. package/dist/components/ApiServersCard/index.d.ts +2 -0
  18. package/dist/components/ApiServersCard/index.js +2 -0
  19. package/dist/components/ApiServersCard/index.js.map +1 -0
  20. package/dist/components/ApiServersTable/ApiServersTable.d.ts +7 -0
  21. package/dist/components/ApiServersTable/ApiServersTable.js +28 -0
  22. package/dist/components/ApiServersTable/ApiServersTable.js.map +1 -0
  23. package/dist/components/ApiServersTable/columns.d.ts +3 -0
  24. package/dist/components/ApiServersTable/columns.js +39 -0
  25. package/dist/components/ApiServersTable/columns.js.map +1 -0
  26. package/dist/components/ApiServersTable/index.d.ts +2 -0
  27. package/dist/components/ApiServersTable/index.js +2 -0
  28. package/dist/components/ApiServersTable/index.js.map +1 -0
  29. package/dist/components/ApiServersTable/useApiServersList.d.ts +16 -0
  30. package/dist/components/ApiServersTable/useApiServersList.js +92 -0
  31. package/dist/components/ApiServersTable/useApiServersList.js.map +1 -0
  32. package/dist/components/AppsCard/apps_card.d.ts +11 -0
  33. package/dist/components/AppsCard/apps_card.js +11 -0
  34. package/dist/components/AppsCard/apps_card.js.map +1 -0
  35. package/dist/components/AppsCard/index.d.ts +2 -0
  36. package/dist/components/AppsCard/index.js +2 -0
  37. package/dist/components/AppsCard/index.js.map +1 -0
  38. package/dist/components/AppsTable/AppDomainsList.d.ts +7 -0
  39. package/dist/components/AppsTable/AppDomainsList.js +21 -0
  40. package/dist/components/AppsTable/AppDomainsList.js.map +1 -0
  41. package/dist/components/AppsTable/AppsTable.d.ts +9 -0
  42. package/dist/components/AppsTable/AppsTable.js +36 -0
  43. package/dist/components/AppsTable/AppsTable.js.map +1 -0
  44. package/dist/components/AppsTable/columns.d.ts +4 -0
  45. package/dist/components/AppsTable/columns.js +67 -0
  46. package/dist/components/AppsTable/columns.js.map +1 -0
  47. package/dist/components/AppsTable/frontend_app_actions.d.ts +8 -0
  48. package/dist/components/AppsTable/frontend_app_actions.js +124 -0
  49. package/dist/components/AppsTable/frontend_app_actions.js.map +1 -0
  50. package/dist/components/AppsTable/index.d.ts +3 -0
  51. package/dist/components/AppsTable/index.js +2 -0
  52. package/dist/components/AppsTable/index.js.map +1 -0
  53. package/dist/components/AppsTable/launchWebApp.d.ts +9 -0
  54. package/dist/components/AppsTable/launchWebApp.js +47 -0
  55. package/dist/components/AppsTable/launchWebApp.js.map +1 -0
  56. package/dist/components/AppsTable/preloaded_apps_table_data.d.ts +5 -0
  57. package/dist/components/AppsTable/preloaded_apps_table_data.js +2 -0
  58. package/dist/components/AppsTable/preloaded_apps_table_data.js.map +1 -0
  59. package/dist/components/AppsTable/send-authorize-app-request.d.ts +9 -0
  60. package/dist/components/AppsTable/send-authorize-app-request.js +57 -0
  61. package/dist/components/AppsTable/send-authorize-app-request.js.map +1 -0
  62. package/dist/components/AppsTable/useAppDomains.d.ts +8 -0
  63. package/dist/components/AppsTable/useAppDomains.js +75 -0
  64. package/dist/components/AppsTable/useAppDomains.js.map +1 -0
  65. package/dist/components/AppsTable/useAppsList.d.ts +28 -0
  66. package/dist/components/AppsTable/useAppsList.js +97 -0
  67. package/dist/components/AppsTable/useAppsList.js.map +1 -0
  68. package/dist/components/ConnectAppToApiDialog/ConnectAppToApiDialog.d.ts +2 -0
  69. package/dist/components/ConnectAppToApiDialog/ConnectAppToApiDialog.js +99 -0
  70. package/dist/components/ConnectAppToApiDialog/ConnectAppToApiDialog.js.map +1 -0
  71. package/dist/components/ConnectAppToApiDialog/index.d.ts +2 -0
  72. package/dist/components/ConnectAppToApiDialog/index.js +2 -0
  73. package/dist/components/ConnectAppToApiDialog/index.js.map +1 -0
  74. package/dist/components/CreateApiServerDialog/CreateApiServerDialog.d.ts +7 -0
  75. package/dist/components/CreateApiServerDialog/CreateApiServerDialog.js +118 -0
  76. package/dist/components/CreateApiServerDialog/CreateApiServerDialog.js.map +1 -0
  77. package/dist/components/CreateApiServerDialog/index.d.ts +2 -0
  78. package/dist/components/CreateApiServerDialog/index.js +2 -0
  79. package/dist/components/CreateApiServerDialog/index.js.map +1 -0
  80. package/dist/components/CreateAppDialog/CreateAppDialog.d.ts +7 -0
  81. package/dist/components/CreateAppDialog/CreateAppDialog.js +114 -0
  82. package/dist/components/CreateAppDialog/CreateAppDialog.js.map +1 -0
  83. package/dist/components/CreateAppDialog/index.d.ts +2 -0
  84. package/dist/components/CreateAppDialog/index.js +2 -0
  85. package/dist/components/CreateAppDialog/index.js.map +1 -0
  86. package/dist/components/CreateAppDomainDialog/CreateAppDomainDialog.d.ts +10 -0
  87. package/dist/components/CreateAppDomainDialog/CreateAppDomainDialog.js +125 -0
  88. package/dist/components/CreateAppDomainDialog/CreateAppDomainDialog.js.map +1 -0
  89. package/dist/components/CreateAppDomainDialog/index.d.ts +2 -0
  90. package/dist/components/CreateAppDomainDialog/index.js +2 -0
  91. package/dist/components/CreateAppDomainDialog/index.js.map +1 -0
  92. package/dist/components/CreateInviteCodeDialog/CreateInviteCodeDialog.d.ts +3 -0
  93. package/dist/components/CreateInviteCodeDialog/CreateInviteCodeDialog.js +127 -0
  94. package/dist/components/CreateInviteCodeDialog/CreateInviteCodeDialog.js.map +1 -0
  95. package/dist/components/CreateInviteCodeDialog/index.d.ts +1 -0
  96. package/dist/components/CreateInviteCodeDialog/index.js +2 -0
  97. package/dist/components/CreateInviteCodeDialog/index.js.map +1 -0
  98. package/dist/components/InviteCodesCard/InviteCodesCard.d.ts +9 -0
  99. package/dist/components/InviteCodesCard/InviteCodesCard.js +76 -0
  100. package/dist/components/InviteCodesCard/InviteCodesCard.js.map +1 -0
  101. package/dist/components/InviteCodesCard/index.d.ts +2 -0
  102. package/dist/components/InviteCodesCard/index.js +2 -0
  103. package/dist/components/InviteCodesCard/index.js.map +1 -0
  104. package/dist/components/InviteCodesTable/InviteCodesTable.d.ts +7 -0
  105. package/dist/components/InviteCodesTable/InviteCodesTable.js +23 -0
  106. package/dist/components/InviteCodesTable/InviteCodesTable.js.map +1 -0
  107. package/dist/components/InviteCodesTable/columns.d.ts +3 -0
  108. package/dist/components/InviteCodesTable/columns.js +71 -0
  109. package/dist/components/InviteCodesTable/columns.js.map +1 -0
  110. package/dist/components/InviteCodesTable/index.d.ts +2 -0
  111. package/dist/components/InviteCodesTable/index.js +2 -0
  112. package/dist/components/InviteCodesTable/index.js.map +1 -0
  113. package/dist/components/SignOutButton/SignOutButton.d.ts +9 -0
  114. package/dist/components/SignOutButton/SignOutButton.js +12 -0
  115. package/dist/components/SignOutButton/SignOutButton.js.map +1 -0
  116. package/dist/components/SignOutButton/index.d.ts +2 -0
  117. package/dist/components/SignOutButton/index.js +2 -0
  118. package/dist/components/SignOutButton/index.js.map +1 -0
  119. package/dist/components/UsersCard/UsersCard.d.ts +9 -0
  120. package/dist/components/UsersCard/UsersCard.js +79 -0
  121. package/dist/components/UsersCard/UsersCard.js.map +1 -0
  122. package/dist/components/UsersCard/index.d.ts +2 -0
  123. package/dist/components/UsersCard/index.js +2 -0
  124. package/dist/components/UsersCard/index.js.map +1 -0
  125. package/dist/components/UsersTable/UsersTable.d.ts +7 -0
  126. package/dist/components/UsersTable/UsersTable.js +24 -0
  127. package/dist/components/UsersTable/UsersTable.js.map +1 -0
  128. package/dist/components/UsersTable/columns.d.ts +3 -0
  129. package/dist/components/UsersTable/columns.js +119 -0
  130. package/dist/components/UsersTable/columns.js.map +1 -0
  131. package/dist/components/UsersTable/index.d.ts +2 -0
  132. package/dist/components/UsersTable/index.js +2 -0
  133. package/dist/components/UsersTable/index.js.map +1 -0
  134. package/dist/components/index.d.ts +17 -0
  135. package/dist/components/index.js +9 -0
  136. package/dist/components/index.js.map +1 -0
  137. package/dist/index.d.ts +2 -0
  138. package/dist/index.js +3 -0
  139. package/dist/index.js.map +1 -0
  140. package/dist/lib/printDateTime.d.ts +2 -0
  141. package/dist/lib/printDateTime.js +21 -0
  142. package/dist/lib/printDateTime.js.map +1 -0
  143. package/package.json +72 -0
  144. package/tsconfig.json +25 -0
package/README.md ADDED
@@ -0,0 +1,27 @@
1
+ # @schemavaults/auth-ui
2
+
3
+ ## About
4
+
5
+ UI components for interacting with the [SchemaVaults Auth Platform](https://auth.schemavaults.com).
6
+
7
+ ## Install dependencies
8
+
9
+ Use the [Bun](https://bun.sh) package manager:
10
+ ```bash
11
+ bun install
12
+ ```
13
+
14
+ ## Build package
15
+ ```bash
16
+ bun run build
17
+ ```
18
+
19
+ ## Usage
20
+
21
+ ### TailwindCSS Set-up
22
+
23
+ This package uses the [@schemavaults/ui](https://github.com/schemavaults/ui) and [@schemavaults/theme](https://github.com/schemavaults/theme) packages to render TailwindCSS-styled React.js components. Ensure that you are using `@schemavaults/theme` to build an appropriate Tailwind config that loads the TailwindCSS `className`'s used in this `@schemavaults/auth-ui` package.
24
+
25
+ ## GitHub Repository
26
+
27
+ This package's source code is hosted on GitHub: [https://github.com/schemavaults/auth-ui](https://github.com/schemavaults/auth-ui)
@@ -0,0 +1,15 @@
1
+ import type { PropsWithChildren, ReactElement, ReactNode } from "react";
2
+ import type { UserData } from "@schemavaults/auth-react-provider";
3
+ import { type SchemaVaultsAppEnvironment } from "@schemavaults/app-definitions";
4
+ export interface AccountDetailsCardProps {
5
+ cardClassName?: string;
6
+ redirect: (url: string) => Promise<void>;
7
+ isAuthServerAccountPage?: boolean;
8
+ Link: ({ href, children }: PropsWithChildren<{
9
+ href: string;
10
+ }>) => ReactNode;
11
+ isAdmin: boolean;
12
+ appEnvironment: SchemaVaultsAppEnvironment;
13
+ user: UserData | null;
14
+ }
15
+ export declare function AccountDetailsCard(props: AccountDetailsCardProps): ReactElement;
@@ -0,0 +1,21 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, KeyValueWithSkeleton, cn, } from "@schemavaults/ui";
4
+ import SignOutButton from "../SignOutButton";
5
+ import ViewFullUserProfileButton from "./view_full_user_profile";
6
+ import ViewAdminDashboardButton from "./view_admin_page_link";
7
+ import { getHardcodedClientWebAppDomain, SCHEMAVAULTS_AUTH_APP_DEFINITION, } from "@schemavaults/app-definitions";
8
+ export function AccountDetailsCard(props) {
9
+ const currentUser = props.user;
10
+ const auth_server_uri = getHardcodedClientWebAppDomain(SCHEMAVAULTS_AUTH_APP_DEFINITION.app_id, props.appEnvironment);
11
+ const cardClassName = cn("w-full", props.cardClassName);
12
+ const showLinkToAuthServerAccountPage = !props.isAuthServerAccountPage;
13
+ return (_jsxs(Card, { className: cardClassName, children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: "Account Details" }), _jsx(CardDescription, { children: "View and manage your SchemaVaults account." })] }), _jsx(CardContent, { children: _jsxs("div", { className: "flex flex-col items-start justify-start", children: [_jsx(KeyValueWithSkeleton, { label: "User ID", value: currentUser?.uid }), _jsx(KeyValueWithSkeleton, { label: "Email", value: currentUser?.email })] }) }), _jsx(CardFooter, { children: _jsxs("div", { className: "flex flex-row items-start justify-start flex-wrap gap-2", children: [_jsx(SignOutButton, { Link: props.Link }), showLinkToAuthServerAccountPage && (_jsx(ViewFullUserProfileButton, { navigate: async () => {
14
+ const accountUrl = `${auth_server_uri}/account`;
15
+ await props.redirect(accountUrl);
16
+ } })), _jsx(ViewAdminDashboardButton, { navigate: async () => {
17
+ const accountUrl = `${auth_server_uri}/admin`;
18
+ await props.redirect(accountUrl);
19
+ }, admin: props.isAdmin })] }) })] }));
20
+ }
21
+ //# sourceMappingURL=account_card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account_card.js","sourceRoot":"","sources":["../../../src/components/AccountCard/account_card.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EACL,IAAI,EACJ,WAAW,EACX,eAAe,EACf,UAAU,EACV,UAAU,EACV,SAAS,EACT,oBAAoB,EACpB,EAAE,GACH,MAAM,kBAAkB,CAAC;AAE1B,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,yBAAyB,MAAM,0BAA0B,CAAC;AACjE,OAAO,wBAAwB,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EACL,8BAA8B,EAC9B,gCAAgC,GAEjC,MAAM,+BAA+B,CAAC;AAYvC,MAAM,UAAU,kBAAkB,CAChC,KAA8B;IAE9B,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC;IAE/B,MAAM,eAAe,GAAW,8BAA8B,CAC5D,gCAAgC,CAAC,MAAM,EACvC,KAAK,CAAC,cAAc,CACrB,CAAC;IAEF,MAAM,aAAa,GAAW,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAEhE,MAAM,+BAA+B,GACnC,CAAC,KAAK,CAAC,uBAAuB,CAAC;IAEjC,OAAO,CACL,MAAC,IAAI,IAAC,SAAS,EAAE,aAAa,aAC5B,MAAC,UAAU,eACT,KAAC,SAAS,kCAA4B,EACtC,KAAC,eAAe,6DAEE,IACP,EACb,KAAC,WAAW,cACV,eAAK,SAAS,EAAC,yCAAyC,aACtD,KAAC,oBAAoB,IAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAE,WAAW,EAAE,GAAG,GAAI,EACjE,KAAC,oBAAoB,IAAC,KAAK,EAAC,OAAO,EAAC,KAAK,EAAE,WAAW,EAAE,KAAK,GAAI,IAC7D,GACM,EACd,KAAC,UAAU,cACT,eAAK,SAAS,EAAC,yDAAyD,aACtE,KAAC,aAAa,IAAC,IAAI,EAAE,KAAK,CAAC,IAAI,GAAI,EAClC,+BAA+B,IAAI,CAClC,KAAC,yBAAyB,IACxB,QAAQ,EAAE,KAAK,IAAI,EAAE;gCACnB,MAAM,UAAU,GACd,GAAG,eAAe,UAAoC,CAAC;gCACzD,MAAM,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;4BACnC,CAAC,GACD,CACH,EACD,KAAC,wBAAwB,IACvB,QAAQ,EAAE,KAAK,IAAI,EAAE;gCACnB,MAAM,UAAU,GAAG,GAAG,eAAe,QAAiB,CAAC;gCACvD,MAAM,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;4BACnC,CAAC,EACD,KAAK,EAAE,KAAK,CAAC,OAAO,GACpB,IACE,GACK,IACR,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './account_card';
2
+ export type * from './account_card';
@@ -0,0 +1,2 @@
1
+ export * from './account_card';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/AccountCard/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type ReactNode } from "react";
2
+ export interface ViewAdminDashboardButtonProps {
3
+ navigate: () => Promise<void>;
4
+ admin: boolean;
5
+ }
6
+ export declare function ViewAdminDashboardButton({ navigate, admin, }: ViewAdminDashboardButtonProps): ReactNode;
7
+ export default ViewAdminDashboardButton;
@@ -0,0 +1,28 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Button, useToast } from "@schemavaults/ui";
4
+ import { SlidersHorizontal } from "lucide-react";
5
+ import { useTransition } from "react";
6
+ export function ViewAdminDashboardButton({ navigate, admin, }) {
7
+ const { toast } = useToast();
8
+ const [navigating, startNavigating] = useTransition();
9
+ if (!admin) {
10
+ return null;
11
+ }
12
+ return (_jsx(Button, { id: "view-admin-dashboard-link", className: "gap-2 flex", variant: "destructive", disabled: navigating, onClick: () => {
13
+ startNavigating(async () => {
14
+ try {
15
+ await navigate();
16
+ }
17
+ catch (e) {
18
+ console.error("Failed to navigate to admin dashboard: ", e);
19
+ toast({
20
+ variant: "destructive",
21
+ title: "Failed to navigate to admin dashboard!",
22
+ });
23
+ }
24
+ });
25
+ }, children: _jsxs("span", { className: "flex flex-row justify-start items-center", children: [_jsx(SlidersHorizontal, { className: "h-4 w-4 mr-2" }, "admin-page-icon"), " ", "Admin dashboard"] }) }));
26
+ }
27
+ export default ViewAdminDashboardButton;
28
+ //# sourceMappingURL=view_admin_page_link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view_admin_page_link.js","sourceRoot":"","sources":["../../../src/components/AccountCard/view_admin_page_link.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAkB,aAAa,EAAE,MAAM,OAAO,CAAC;AAOtD,MAAM,UAAU,wBAAwB,CAAC,EACvC,QAAQ,EACR,KAAK,GACyB;IAC9B,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC7B,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,GAAG,aAAa,EAAE,CAAC;IAEtD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,KAAC,MAAM,IACL,EAAE,EAAE,2BAA2B,EAC/B,SAAS,EAAC,YAAY,EACtB,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,UAAU,EACpB,OAAO,EAAE,GAAG,EAAE;YACZ,eAAe,CAAC,KAAK,IAAmB,EAAE;gBACxC,IAAI,CAAC;oBACH,MAAM,QAAQ,EAAE,CAAC;gBACnB,CAAC;gBAAC,OAAO,CAAU,EAAE,CAAC;oBACpB,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,CAAC,CAAC,CAAC;oBAC5D,KAAK,CAAC;wBACJ,OAAO,EAAE,aAAa;wBACtB,KAAK,EAAE,wCAAwC;qBAChD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,YAED,gBAAM,SAAS,EAAC,0CAA0C,aACxD,KAAC,iBAAiB,IAAC,SAAS,EAAC,cAAc,IAAK,iBAAiB,CAAG,EAAC,GAAG,uBAEnE,GACA,CACV,CAAC;AACJ,CAAC;AAED,eAAe,wBAAwB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type ReactElement } from "react";
2
+ export interface ViewFullUserProfileButtonProps {
3
+ navigate: () => Promise<void>;
4
+ }
5
+ export declare function ViewFullUserProfileButton({ navigate }: ViewFullUserProfileButtonProps): ReactElement;
6
+ export default ViewFullUserProfileButton;
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Button, useToast } from "@schemavaults/ui";
4
+ import { Loader2, SlidersHorizontal } from "lucide-react";
5
+ import { useTransition } from "react";
6
+ export function ViewFullUserProfileButton({ navigate }) {
7
+ const [navigating, startNavigating] = useTransition();
8
+ const { toast } = useToast();
9
+ return (_jsx(Button, { onClick: () => {
10
+ startNavigating(async () => {
11
+ try {
12
+ await navigate();
13
+ }
14
+ catch (e) {
15
+ console.error(e);
16
+ toast({
17
+ variant: 'destructive',
18
+ title: "Error navigating to page"
19
+ });
20
+ }
21
+ });
22
+ }, className: "gap-2 flex", disabled: navigating, children: navigating ? (_jsxs("span", { className: "flex flex-row justify-start items-center", children: [_jsx(Loader2, { className: "h-4 w-4 mr-2 animate-spin" }, "loader"), " Navigating..."] })) : (_jsxs("span", { className: "flex flex-row justify-start items-center", children: [_jsx(SlidersHorizontal, { className: "h-4 w-4 mr-2" }, "full-profile-account-icon"), " View authentication dashboard"] })) }));
23
+ }
24
+ export default ViewFullUserProfileButton;
25
+ //# sourceMappingURL=view_full_user_profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view_full_user_profile.js","sourceRoot":"","sources":["../../../src/components/AccountCard/view_full_user_profile.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAqB,MAAM,OAAO,CAAC;AAMzD,MAAM,UAAU,yBAAyB,CAAC,EAAE,QAAQ,EAAkC;IACpF,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,GAAG,aAAa,EAAE,CAAC;IACtD,MAAM,EAAC,KAAK,EAAC,GAAG,QAAQ,EAAE,CAAC;IAE3B,OAAO,CACL,KAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE;YACZ,eAAe,CAAC,KAAK,IAAmB,EAAE;gBACxC,IAAI,CAAC;oBACH,MAAM,QAAQ,EAAE,CAAC;gBACnB,CAAC;gBAAC,OAAO,CAAU,EAAE,CAAC;oBACpB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACjB,KAAK,CAAC;wBACJ,OAAO,EAAE,aAAa;wBACtB,KAAK,EAAE,0BAA0B;qBAClC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,EACD,SAAS,EAAC,YAAY,EACtB,QAAQ,EAAE,UAAU,YAGlB,UAAU,CAAC,CAAC,CAAC,CACX,gBAAM,SAAS,EAAC,0CAA0C,aACxD,KAAC,OAAO,IAAC,SAAS,EAAC,2BAA2B,IAAK,QAAQ,CAAG,sBACzD,CACR,CAAC,CAAC,CAAC,CACF,gBAAM,SAAS,EAAC,0CAA0C,aACxD,KAAC,iBAAiB,IAAC,SAAS,EAAC,cAAc,IAAK,2BAA2B,CAAG,sCACzE,CACR,GAEI,CACV,CAAC;AACJ,CAAC;AAED,eAAe,yBAAyB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { ReactElement } from "react";
2
+ import type { ListApiServersQueryType } from "@schemavaults/app-definitions";
3
+ export interface ApiServersCardProps {
4
+ cardTitle?: string;
5
+ cardDescription?: string;
6
+ cardClassName?: string;
7
+ queryType: ListApiServersQueryType;
8
+ }
9
+ export declare function ApiServersCard(props: ApiServersCardProps): ReactElement;
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, cn, } from "@schemavaults/ui";
4
+ import { ApiServersTable } from "../ApiServersTable";
5
+ export function ApiServersCard(props) {
6
+ const cardTitle = props.cardTitle ?? "API Servers";
7
+ const cardDescription = props.cardDescription ??
8
+ "View and manage backend API servers accessible from client applications.";
9
+ const cardClassName = cn("w-full", props.cardClassName);
10
+ return (_jsxs(Card, { className: cardClassName, children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: cardTitle }), _jsx(CardDescription, { children: cardDescription })] }), _jsx(CardContent, { children: _jsx(ApiServersTable, { queryType: props.queryType }) }), _jsx(CardFooter, { children: _jsx("div", { className: "flex flex-row items-start justify-start gap-2" }) })] }));
11
+ }
12
+ //# sourceMappingURL=api_servers_card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api_servers_card.js","sourceRoot":"","sources":["../../../src/components/ApiServersCard/api_servers_card.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EACL,IAAI,EACJ,WAAW,EACX,eAAe,EACf,UAAU,EACV,UAAU,EACV,SAAS,EACT,EAAE,GACH,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAS/D,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,aAAa,CAAC;IACnD,MAAM,eAAe,GACnB,KAAK,CAAC,eAAe;QACrB,0EAA0E,CAAC;IAE7E,MAAM,aAAa,GAAW,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAEhE,OAAO,CACL,MAAC,IAAI,IAAC,SAAS,EAAE,aAAa,aAC5B,MAAC,UAAU,eACT,KAAC,SAAS,cAAE,SAAS,GAAa,EAClC,KAAC,eAAe,cAAE,eAAe,GAAmB,IACzC,EACb,KAAC,WAAW,cACV,KAAC,eAAe,IAAC,SAAS,EAAE,KAAK,CAAC,SAAS,GAAI,GACnC,EACd,KAAC,UAAU,cACT,cAAK,SAAS,EAAC,+CAA+C,GAAO,GAC1D,IACR,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './api_servers_card';
2
+ export type * from './api_servers_card';
@@ -0,0 +1,2 @@
1
+ export * from './api_servers_card';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ApiServersCard/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { ReactElement } from "react";
2
+ import type { ListApiServersQueryType } from "@schemavaults/app-definitions";
3
+ export interface ApiServersDatatableProps {
4
+ queryType: ListApiServersQueryType;
5
+ }
6
+ export declare function ApiServersTable({ queryType }: ApiServersDatatableProps): ReactElement;
7
+ export default ApiServersTable;
@@ -0,0 +1,28 @@
1
+ "use client";
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useToast } from "@schemavaults/ui";
4
+ import { Datatable } from "@schemavaults/ui";
5
+ import { columns } from "./columns";
6
+ import { Loader2 } from "lucide-react";
7
+ import { clearUseApiServersCache, useApiServersList } from "./useApiServersList";
8
+ import { CreateApiServerDialog } from "../CreateApiServerDialog";
9
+ import { ConnectAppToApiDialog } from "../ConnectAppToApiDialog";
10
+ export function ApiServersTable({ queryType }) {
11
+ const { toast } = useToast();
12
+ const apis = useApiServersList({ toast, queryType });
13
+ const { isLoading, data } = apis;
14
+ if (!data && isLoading) {
15
+ return (_jsx("div", { className: "min-h-48 w-full flex items-center justify-center", children: _jsx(Loader2, { className: "h-12 w-12 animate-spin" }) }));
16
+ }
17
+ return (_jsx(Datatable, { data: data ? (data.length > 0 ? data : []) : [], columns: columns, initialVisibleColumns: {
18
+ actions: true,
19
+ select: true,
20
+ api_server_id: false,
21
+ api_server_name: true,
22
+ api_server_description: true,
23
+ }, HeaderButtons: () => {
24
+ return (_jsxs(_Fragment, { children: [queryType === 'all' && _jsx(CreateApiServerDialog, { clearApiServersCache: clearUseApiServersCache }), queryType === 'all' && _jsx(ConnectAppToApiDialog, {})] }));
25
+ }, datatypeLabel: "Server", searchColumn: ['api_server_id', 'api_server_name', 'api_server_description'] }));
26
+ }
27
+ export default ApiServersTable;
28
+ //# sourceMappingURL=ApiServersTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiServersTable.js","sourceRoot":"","sources":["../../../src/components/ApiServersTable/ApiServersTable.tsx"],"names":[],"mappings":"AACA,YAAY,CAAC;;AAIb,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAM3E,MAAM,UAAU,eAAe,CAAC,EAAE,SAAS,EAA4B;IACrE,MAAM,EAAC,KAAK,EAAC,GAAG,QAAQ,EAAE,CAAA;IAC1B,MAAM,IAAI,GAA0D,iBAAiB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5G,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAEjC,IAAI,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;QACvB,OAAO,CACL,cAAK,SAAS,EAAC,kDAAkD,YAC/D,KAAC,OAAO,IAAC,SAAS,EAAC,wBAAwB,GAAG,GAC1C,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,SAAS,IACR,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAC/C,OAAO,EAAE,OAAO,EAChB,qBAAqB,EAAE;YACrB,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI;YACZ,aAAa,EAAE,KAAK;YACpB,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,IAAI;SAC7B,EACD,aAAa,EAAE,GAAiB,EAAE;YAChC,OAAO,CACL,8BACI,SAAS,KAAK,KAAK,IAAI,KAAC,qBAAqB,IAAC,oBAAoB,EAAE,uBAAuB,GAAI,EAC/F,SAAS,KAAK,KAAK,IAAI,KAAC,qBAAqB,KAAG,IACjD,CACJ,CAAC;QACJ,CAAC,EACD,aAAa,EAAC,QAAQ,EACtB,YAAY,EAAE,CAAC,eAAe,EAAE,iBAAiB,EAAE,wBAAwB,CAAC,GAC5E,CACH,CAAA;AACH,CAAC;AAED,eAAe,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ColumnDef } from "@tanstack/react-table";
2
+ import type { SchemaVaultsApiServerDefinition } from "@schemavaults/app-definitions";
3
+ export declare const columns: ColumnDef<SchemaVaultsApiServerDefinition>[];
@@ -0,0 +1,39 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Checkbox } from "@schemavaults/ui";
4
+ import { Button } from "@schemavaults/ui";
5
+ import { MoreHorizontal } from "lucide-react";
6
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from "@schemavaults/ui";
7
+ export const columns = [
8
+ {
9
+ id: "select",
10
+ header: ({ table }) => (_jsx(Checkbox, { checked: table.getIsAllPageRowsSelected() ||
11
+ (table.getIsSomePageRowsSelected() && "indeterminate"), onCheckedChange: (value) => table.toggleAllPageRowsSelected(!!value), "aria-label": "Select all" })),
12
+ cell: ({ row }) => (_jsx(Checkbox, { checked: row.getIsSelected(), onCheckedChange: (value) => row.toggleSelected(!!value), "aria-label": "Select row" })),
13
+ enableSorting: false,
14
+ enableHiding: false,
15
+ },
16
+ {
17
+ id: 'api_server_id',
18
+ accessorKey: "api_server_id",
19
+ header: "API Server ID"
20
+ },
21
+ {
22
+ id: 'api_server_name',
23
+ accessorKey: "api_server_name",
24
+ header: "API Server Name"
25
+ },
26
+ {
27
+ id: 'api_server_description',
28
+ accessorKey: "api_server_description",
29
+ header: "Description"
30
+ },
31
+ {
32
+ id: "actions",
33
+ cell: ({ row }) => {
34
+ const api = row.original;
35
+ return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: "ghost", className: "h-8 w-8 p-0", children: [_jsx("span", { className: "sr-only", children: "Open menu" }), _jsx(MoreHorizontal, { className: "h-4 w-4" })] }) }), _jsxs(DropdownMenuContent, { align: "end", children: [_jsx(DropdownMenuLabel, { children: "Actions" }), _jsx(DropdownMenuItem, { onClick: () => navigator.clipboard.writeText(api.api_server_id), children: "Copy API Server ID" }), _jsx(DropdownMenuSeparator, {})] })] }));
36
+ },
37
+ }
38
+ ];
39
+ //# sourceMappingURL=columns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columns.js","sourceRoot":"","sources":["../../../src/components/ApiServersTable/columns.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAKb,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGtJ,MAAM,CAAC,MAAM,OAAO,GAAiD;IACnE;QACE,EAAE,EAAE,QAAQ;QACZ,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CACrB,KAAC,QAAQ,IACP,OAAO,EACL,KAAK,CAAC,wBAAwB,EAAE;gBAChC,CAAC,KAAK,CAAC,yBAAyB,EAAE,IAAI,eAAe,CAAC,EAExD,eAAe,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC,KAAK,CAAC,gBAClE,YAAY,GACvB,CACH;QACD,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CACjB,KAAC,QAAQ,IACP,OAAO,EAAE,GAAG,CAAC,aAAa,EAAE,EAC5B,eAAe,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,gBACrD,YAAY,GACvB,CACH;QACD,aAAa,EAAE,KAAK;QACpB,YAAY,EAAE,KAAK;KACpB;IACD;QACE,EAAE,EAAE,eAAe;QACnB,WAAW,EAAE,eAAe;QAC5B,MAAM,EAAE,eAAe;KACxB;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,WAAW,EAAE,iBAAiB;QAC9B,MAAM,EAAE,iBAAiB;KAC1B;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,WAAW,EAAE,wBAAwB;QACrC,MAAM,EAAE,aAAa;KACtB;IACD;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAgB,EAAE;YAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAA;YAExB,OAAO,CACL,MAAC,YAAY,eACX,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,MAAC,MAAM,IAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,aAAa,aAC7C,eAAM,SAAS,EAAC,SAAS,0BAAiB,EAC1C,KAAC,cAAc,IAAC,SAAS,EAAC,SAAS,GAAG,IAC/B,GACW,EACtB,MAAC,mBAAmB,IAAC,KAAK,EAAC,KAAK,aAC9B,KAAC,iBAAiB,0BAA4B,EAC9C,KAAC,gBAAgB,IACf,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,mCAG9C,EACnB,KAAC,qBAAqB,KAAG,IAEL,IACT,CAChB,CAAA;QACH,CAAC;KACF;CACF,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { ApiServersTable } from './ApiServersTable';
2
+ export type { ApiServersDatatableProps } from './ApiServersTable';
@@ -0,0 +1,2 @@
1
+ export { ApiServersTable } from './ApiServersTable';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ApiServersTable/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { useToast } from "@schemavaults/ui";
2
+ import { useSWRConfig } from "swr";
3
+ import { type ListApiServersQueryType } from "@schemavaults/app-definitions";
4
+ export interface UseApiServersListOptions {
5
+ queryType: ListApiServersQueryType;
6
+ toast: ReturnType<typeof useToast>["toast"];
7
+ }
8
+ export declare function clearUseApiServersCache(mutate: ReturnType<typeof useSWRConfig>["mutate"]): void;
9
+ export declare function useApiServersList({ toast, queryType, }: UseApiServersListOptions): import("swr").SWRResponse<{
10
+ api_server_id: string;
11
+ api_server_name: string;
12
+ api_server_description: string;
13
+ created_at: number;
14
+ public: boolean;
15
+ hardcoded: boolean;
16
+ }[], any, any>;
@@ -0,0 +1,92 @@
1
+ import { useAppEnvironment, useAuth, } from "@schemavaults/auth-react-provider";
2
+ import useSWR from "swr";
3
+ import { SCHEMAVAULTS_AUTH_APP_DEFINITION, } from "@schemavaults/app-definitions";
4
+ function getApiServersListEndpoint(queryType) {
5
+ const searchParams = new URLSearchParams();
6
+ searchParams.set("list_apis_query_type", queryType);
7
+ return `/api/apis?${searchParams.toString()}`;
8
+ }
9
+ export function clearUseApiServersCache(mutate) {
10
+ mutate((key) => key.startsWith("/api/apis"), undefined, {
11
+ revalidate: true,
12
+ });
13
+ }
14
+ export function useApiServersList({ toast, queryType, }) {
15
+ const auth = useAuth();
16
+ const environment = useAppEnvironment();
17
+ const endpoint = getApiServersListEndpoint(queryType);
18
+ return useSWR(endpoint, async () => {
19
+ if (!auth.ready) {
20
+ toast({
21
+ variant: "destructive",
22
+ title: "Auth client not ready",
23
+ description: "Unable to acquire access token to list API servers",
24
+ });
25
+ throw new Error("Auth client not ready");
26
+ }
27
+ const authClient = auth.client.current;
28
+ if (!authClient) {
29
+ toast({
30
+ variant: "destructive",
31
+ title: "Auth client not ready",
32
+ description: "Unable to acquire access token to list API servers",
33
+ });
34
+ throw new Error("Auth client not ready");
35
+ }
36
+ let auth_access_jwt;
37
+ try {
38
+ const auth_jwt = await authClient.acquireAccessToken({
39
+ token_id: SCHEMAVAULTS_AUTH_APP_DEFINITION.app_id,
40
+ audience: SCHEMAVAULTS_AUTH_APP_DEFINITION.app_id,
41
+ });
42
+ if (!auth_jwt)
43
+ throw new Error("Failed to acquire auth access token");
44
+ auth_access_jwt = auth_jwt;
45
+ }
46
+ catch (e) {
47
+ console.error("[useApiServersList] ", e);
48
+ toast({
49
+ variant: "destructive",
50
+ title: "Error loading authentication access token",
51
+ description: e instanceof Error ? e.message : `Failed to prepare network request`,
52
+ });
53
+ throw e;
54
+ }
55
+ try {
56
+ const origin = window.location.origin;
57
+ if (environment !== "development" && environment !== "test") {
58
+ if (!origin.startsWith("https://"))
59
+ throw new Error("Origin must use HTTPS in production");
60
+ }
61
+ if (environment === "development") {
62
+ console.log(`[useApiServersList] Sending request to endpoint "${endpoint}" from origin "${origin}"`);
63
+ }
64
+ const listAppsResponse = await fetch(endpoint, {
65
+ headers: new Headers({
66
+ Authorization: `Bearer ${auth_access_jwt.token}`,
67
+ }),
68
+ method: "GET",
69
+ });
70
+ if (!listAppsResponse.ok || listAppsResponse.status !== 200)
71
+ throw new Error("Network request to list-apps endpoint failed");
72
+ const listAppsBody = await listAppsResponse.json();
73
+ if (typeof listAppsBody !== "object")
74
+ throw new Error("Failed to list API servers; response not an object");
75
+ const listAppsResponseObject = listAppsBody;
76
+ if (!Object.hasOwn(listAppsResponseObject, "success") ||
77
+ !listAppsResponseObject.success) {
78
+ throw new Error("List API servers response has success = false");
79
+ }
80
+ return listAppsResponseObject.list;
81
+ }
82
+ catch (error) {
83
+ toast({
84
+ variant: "destructive",
85
+ title: "Error loading list of API servers",
86
+ description: `${error instanceof Error ? error.message : "An unknown error occurred."}`,
87
+ });
88
+ throw error;
89
+ }
90
+ });
91
+ }
92
+ //# sourceMappingURL=useApiServersList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useApiServersList.js","sourceRoot":"","sources":["../../../src/components/ApiServersTable/useApiServersList.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { ReactElement } from "react";
2
+ import { type PreloadedAppsTableDataWithDomainRefs } from "../AppsTable";
3
+ import type { ListAppsQueryType } from "@schemavaults/app-definitions";
4
+ export interface AppsCardProps {
5
+ cardTitle?: string;
6
+ cardDescription?: string;
7
+ cardClassName?: string;
8
+ queryType: ListAppsQueryType;
9
+ preloaded?: PreloadedAppsTableDataWithDomainRefs;
10
+ }
11
+ export declare function AppsCard(props: AppsCardProps): ReactElement;
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, cn } from '@schemavaults/ui';
4
+ import { AppsTable } from "../AppsTable";
5
+ export function AppsCard(props) {
6
+ const cardTitle = props.cardTitle ?? "Applications";
7
+ const cardDescription = props.cardDescription ?? "View and manage which applications are allowed to access SchemaVaults APIs on your behalf.";
8
+ const cardClassName = cn("w-full", props.cardClassName);
9
+ return (_jsxs(Card, { className: cardClassName, children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: cardTitle }), _jsx(CardDescription, { children: cardDescription })] }), _jsx(CardContent, { children: _jsx(AppsTable, { queryType: props.queryType, preloaded: props.preloaded }) }), _jsx(CardFooter, { children: _jsx("div", { className: "flex flex-row items-start justify-start gap-2" }) })] }));
10
+ }
11
+ //# sourceMappingURL=apps_card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apps_card.js","sourceRoot":"","sources":["../../../src/components/AppsCard/apps_card.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC7G,OAAO,EAAE,SAAS,EAA6C,MAAM,cAAc,CAAC;AAWpF,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,cAAc,CAAA;IACnD,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,IAAI,4FAA4F,CAAC;IAE9I,MAAM,aAAa,GAAW,EAAE,CAC9B,QAAQ,EACR,KAAK,CAAC,aAAa,CACpB,CAAC;IAEF,OAAO,CACL,MAAC,IAAI,IAAC,SAAS,EAAE,aAAa,aAC1B,MAAC,UAAU,eACT,KAAC,SAAS,cAAG,SAAS,GAAc,EACpC,KAAC,eAAe,cAAG,eAAe,GAAoB,IAC3C,EACb,KAAC,WAAW,cACV,KAAC,SAAS,IACR,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,SAAS,EAAE,KAAK,CAAC,SAAS,GAC1B,GACU,EACd,KAAC,UAAU,cACT,cAAK,SAAS,EAAC,+CAA+C,GAExD,GACK,IACR,CACV,CAAA;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './apps_card';
2
+ export type * from './apps_card';
@@ -0,0 +1,2 @@
1
+ export * from './apps_card';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/AppsCard/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { ReactElement } from "react";
2
+ import type { SchemaVaultsAppDomainRef } from "@schemavaults/app-definitions";
3
+ export interface AppDomainsListProps {
4
+ app_id: string;
5
+ preloaded_domains?: readonly SchemaVaultsAppDomainRef[] | undefined;
6
+ }
7
+ export declare function AppDomainsList({ app_id, preloaded_domains }: AppDomainsListProps): ReactElement;
@@ -0,0 +1,21 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Loader2 } from "lucide-react";
4
+ import { useAppDomains } from "./useAppDomains";
5
+ export function AppDomainsList({ app_id, preloaded_domains }) {
6
+ console.log("[AppDomainsList] component initialized with:", { app_id, preloaded_domains });
7
+ const appDomains = useAppDomains({
8
+ app_id,
9
+ initialData: Array.isArray(preloaded_domains) ? preloaded_domains : undefined
10
+ });
11
+ if (!appDomains.data || !Array.isArray(appDomains.data)) {
12
+ return _jsx(Loader2, { className: "animate-spin" });
13
+ }
14
+ if (appDomains.data.length === 0) {
15
+ return (_jsx("p", { className: "text-slate-300 font-light", children: "No domains found" }));
16
+ }
17
+ return (_jsx("ul", { children: appDomains.data.map(appDomain => {
18
+ return (_jsx("li", { className: "text-foreground", children: appDomain.domain }, `app-domain-ref-${appDomain.app_domain_ref_id}`));
19
+ }) }));
20
+ }
21
+ //# sourceMappingURL=AppDomainsList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppDomainsList.js","sourceRoot":"","sources":["../../../src/components/AppsTable/AppDomainsList.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAS/C,MAAM,UAAU,cAAc,CAC5B,EAAE,MAAM,EAAE,iBAAiB,EAAuB;IAElD,OAAO,CAAC,GAAG,CAAC,8CAA8C,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAE3F,MAAM,UAAU,GAAG,aAAa,CAAC;QAC/B,MAAM;QACN,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;KAC9E,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACxD,OAAO,KAAC,OAAO,IAAC,SAAS,EAAC,cAAc,GAAG,CAAA;IAC7C,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,CACL,YAAG,SAAS,EAAC,2BAA2B,iCAEpC,CACL,CAAC;IACJ,CAAC;IAED,OAAO,CACL,uBACG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YAC/B,OAAO,CACL,aACE,SAAS,EAAC,iBAAiB,YAG1B,SAAS,CAAC,MAAM,IAFZ,kBAAkB,SAAS,CAAC,iBAAiB,EAAE,CAGjD,CACN,CAAC;QACJ,CAAC,CAAC,GACC,CACN,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type ReactElement } from "react";
2
+ import type { ListAppsQueryType } from "@schemavaults/app-definitions";
3
+ import type { PreloadedAppsTableDataWithDomainRefs } from "./preloaded_apps_table_data";
4
+ export interface AppsDatatableProps {
5
+ queryType: ListAppsQueryType;
6
+ preloaded?: PreloadedAppsTableDataWithDomainRefs | undefined;
7
+ }
8
+ export declare function AppsTable({ queryType, preloaded }: AppsDatatableProps): ReactElement;
9
+ export default AppsTable;
@@ -0,0 +1,36 @@
1
+ "use client";
2
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useMemo } from "react";
4
+ import { useToast } from "@schemavaults/ui";
5
+ import { Datatable } from "@schemavaults/ui";
6
+ import { getAppsTableColumns } from "./columns";
7
+ import { clearUseAppsListCache, useAppsList } from "./useAppsList";
8
+ import { CreateAppDialog } from "../CreateAppDialog";
9
+ import { Loader2 } from "lucide-react";
10
+ export function AppsTable({ queryType, preloaded }) {
11
+ const { toast } = useToast();
12
+ const apps = useAppsList({
13
+ toast,
14
+ queryType,
15
+ initialData: (preloaded) ? preloaded.apps : undefined
16
+ });
17
+ const { isLoading, data } = apps;
18
+ const columns = useMemo(() => {
19
+ return getAppsTableColumns(queryType, preloaded);
20
+ }, [queryType, preloaded]);
21
+ if (!data && isLoading) {
22
+ return (_jsx("div", { className: "min-h-48 w-full flex items-center justify-center", children: _jsx(Loader2, { className: "h-12 w-12 animate-spin" }) }));
23
+ }
24
+ return (_jsx(Datatable, { data: data ? (data.length > 0 ? data : []) : [], columns: columns, initialVisibleColumns: {
25
+ actions: true,
26
+ select: true,
27
+ app_id: false,
28
+ app_name: true,
29
+ app_description: true,
30
+ domains: true
31
+ }, HeaderButtons: () => {
32
+ return (_jsx(_Fragment, { children: queryType === 'all' && (_jsx(CreateAppDialog, { clearFrontendAppsCache: clearUseAppsListCache })) }));
33
+ }, datatypeLabel: "App" }));
34
+ }
35
+ export default AppsTable;
36
+ //# sourceMappingURL=AppsTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppsTable.js","sourceRoot":"","sources":["../../../src/components/AppsTable/AppsTable.tsx"],"names":[],"mappings":"AACA,YAAY,CAAC;;AAEb,OAAO,EAAE,OAAO,EAAqB,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AASvC,MAAM,UAAU,SAAS,CACvB,EAAE,SAAS,EAAE,SAAS,EAAsB;IAE5C,MAAM,EAAC,KAAK,EAAC,GAAG,QAAQ,EAAE,CAAA;IAC1B,MAAM,IAAI,GAA0C,WAAW,CAAC;QAC9D,KAAK;QACL,SAAS;QACT,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;KACtD,CAAC,CAAC;IACH,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACjC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAiC,EAAE;QACzD,OAAO,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACnD,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAE3B,IAAI,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;QACvB,OAAO,CACL,cAAK,SAAS,EAAC,kDAAkD,YAC/D,KAAC,OAAO,IAAC,SAAS,EAAC,wBAAwB,GAAG,GAC1C,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,SAAS,IACR,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAC/C,OAAO,EAAE,OAAO,EAChB,qBAAqB,EAAE;YACrB,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,IAAI;YACd,eAAe,EAAE,IAAI;YACrB,OAAO,EAAE,IAAI;SACd,EACD,aAAa,EAAE,GAAG,EAAE;YAClB,OAAO,CACL,4BAEI,SAAS,KAAK,KAAK,IAAI,CACrB,KAAC,eAAe,IACd,sBAAsB,EAAE,qBAAqB,GAC7C,CACH,GAEF,CACJ,CAAC;QACJ,CAAC,EACD,aAAa,EAAC,KAAK,GACnB,CACH,CAAA;AACH,CAAC;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ColumnDef } from "@tanstack/react-table";
2
+ import type { ListAppsQueryType, SchemaVaultsApp } from "@schemavaults/app-definitions";
3
+ import type { PreloadedAppsTableDataWithDomainRefs } from "./preloaded_apps_table_data";
4
+ export declare function getAppsTableColumns(queryType: ListAppsQueryType, preloaded?: PreloadedAppsTableDataWithDomainRefs): ColumnDef<SchemaVaultsApp>[];