@workos-inc/widgets 0.0.0-pre.1 → 0.0.0-pre.3

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 (181) hide show
  1. package/dist/cjs/lib/api/role.d.ts.map +1 -1
  2. package/dist/cjs/lib/api/role.js +35 -14
  3. package/dist/cjs/lib/api/role.js.map +1 -1
  4. package/dist/cjs/lib/api/user.d.ts.map +1 -1
  5. package/dist/cjs/lib/api/user.js +105 -67
  6. package/dist/cjs/lib/api/user.js.map +1 -1
  7. package/dist/cjs/lib/constants.d.ts +2 -1
  8. package/dist/cjs/lib/constants.d.ts.map +1 -1
  9. package/dist/cjs/lib/constants.js +3 -2
  10. package/dist/cjs/lib/constants.js.map +1 -1
  11. package/dist/cjs/lib/delete-user-dialog.d.ts.map +1 -1
  12. package/dist/cjs/lib/delete-user-dialog.js +1 -1
  13. package/dist/cjs/lib/delete-user-dialog.js.map +1 -1
  14. package/dist/cjs/lib/edit-user-details-dialog.d.ts.map +1 -1
  15. package/dist/cjs/lib/edit-user-details-dialog.js +3 -5
  16. package/dist/cjs/lib/edit-user-details-dialog.js.map +1 -1
  17. package/dist/cjs/lib/elements.d.ts +23 -12
  18. package/dist/cjs/lib/elements.d.ts.map +1 -1
  19. package/dist/cjs/lib/elements.js +104 -30
  20. package/dist/cjs/lib/elements.js.map +1 -1
  21. package/dist/cjs/lib/error-boundary.d.ts +58 -0
  22. package/dist/cjs/lib/error-boundary.d.ts.map +1 -0
  23. package/dist/cjs/lib/error-boundary.js +113 -0
  24. package/dist/cjs/lib/error-boundary.js.map +1 -0
  25. package/dist/cjs/lib/errors.d.ts +34 -0
  26. package/dist/cjs/lib/errors.d.ts.map +1 -0
  27. package/dist/cjs/lib/errors.js +40 -0
  28. package/dist/cjs/lib/errors.js.map +1 -0
  29. package/dist/cjs/lib/invite-user-dialog.d.ts.map +1 -1
  30. package/dist/cjs/lib/invite-user-dialog.js +4 -4
  31. package/dist/cjs/lib/invite-user-dialog.js.map +1 -1
  32. package/dist/cjs/lib/resend-invite-dialog.d.ts.map +1 -1
  33. package/dist/cjs/lib/resend-invite-dialog.js +2 -2
  34. package/dist/cjs/lib/resend-invite-dialog.js.map +1 -1
  35. package/dist/cjs/lib/revoke-invite-dialog.d.ts.map +1 -1
  36. package/dist/cjs/lib/revoke-invite-dialog.js +1 -1
  37. package/dist/cjs/lib/revoke-invite-dialog.js.map +1 -1
  38. package/dist/cjs/lib/use-layout-effect.d.ts +4 -0
  39. package/dist/cjs/lib/use-layout-effect.d.ts.map +1 -0
  40. package/dist/cjs/lib/use-layout-effect.js +8 -0
  41. package/dist/cjs/lib/use-layout-effect.js.map +1 -0
  42. package/dist/cjs/lib/user-actions-dropdown.d.ts.map +1 -1
  43. package/dist/cjs/lib/user-actions-dropdown.js +2 -9
  44. package/dist/cjs/lib/user-actions-dropdown.js.map +1 -1
  45. package/dist/cjs/lib/users-filter.d.ts +1 -0
  46. package/dist/cjs/lib/users-filter.d.ts.map +1 -1
  47. package/dist/cjs/lib/users-filter.js +2 -9
  48. package/dist/cjs/lib/users-filter.js.map +1 -1
  49. package/dist/cjs/lib/users-management-context.d.ts +2 -2
  50. package/dist/cjs/lib/users-management-context.d.ts.map +1 -1
  51. package/dist/cjs/lib/users-management.d.ts +9 -6
  52. package/dist/cjs/lib/users-management.d.ts.map +1 -1
  53. package/dist/cjs/lib/users-management.js +77 -20
  54. package/dist/cjs/lib/users-management.js.map +1 -1
  55. package/dist/cjs/lib/users-search.d.ts +1 -1
  56. package/dist/cjs/lib/users-search.d.ts.map +1 -1
  57. package/dist/cjs/lib/users-search.js +3 -9
  58. package/dist/cjs/lib/users-search.js.map +1 -1
  59. package/dist/cjs/lib/utils.d.ts +2 -0
  60. package/dist/cjs/lib/utils.d.ts.map +1 -1
  61. package/dist/cjs/lib/utils.js +18 -0
  62. package/dist/cjs/lib/utils.js.map +1 -1
  63. package/dist/cjs/users-management.client.d.ts +1 -1
  64. package/dist/cjs/users-management.client.d.ts.map +1 -1
  65. package/dist/cjs/users-management.client.js +15 -5
  66. package/dist/cjs/users-management.client.js.map +1 -1
  67. package/dist/cjs/workos-widgets.client.d.ts.map +1 -1
  68. package/dist/cjs/workos-widgets.client.js +2 -1
  69. package/dist/cjs/workos-widgets.client.js.map +1 -1
  70. package/dist/esm/lib/api/role.d.ts.map +1 -1
  71. package/dist/esm/lib/api/role.js +35 -14
  72. package/dist/esm/lib/api/role.js.map +1 -1
  73. package/dist/esm/lib/api/user.d.ts.map +1 -1
  74. package/dist/esm/lib/api/user.js +105 -67
  75. package/dist/esm/lib/api/user.js.map +1 -1
  76. package/dist/esm/lib/constants.d.ts +2 -1
  77. package/dist/esm/lib/constants.d.ts.map +1 -1
  78. package/dist/esm/lib/constants.js +2 -1
  79. package/dist/esm/lib/constants.js.map +1 -1
  80. package/dist/esm/lib/delete-user-dialog.d.ts.map +1 -1
  81. package/dist/esm/lib/delete-user-dialog.js +2 -2
  82. package/dist/esm/lib/delete-user-dialog.js.map +1 -1
  83. package/dist/esm/lib/edit-user-details-dialog.d.ts.map +1 -1
  84. package/dist/esm/lib/edit-user-details-dialog.js +4 -6
  85. package/dist/esm/lib/edit-user-details-dialog.js.map +1 -1
  86. package/dist/esm/lib/elements.d.ts +23 -12
  87. package/dist/esm/lib/elements.d.ts.map +1 -1
  88. package/dist/esm/lib/elements.js +81 -30
  89. package/dist/esm/lib/elements.js.map +1 -1
  90. package/dist/esm/lib/error-boundary.d.ts +58 -0
  91. package/dist/esm/lib/error-boundary.d.ts.map +1 -0
  92. package/dist/esm/lib/error-boundary.js +86 -0
  93. package/dist/esm/lib/error-boundary.js.map +1 -0
  94. package/dist/esm/lib/errors.d.ts +34 -0
  95. package/dist/esm/lib/errors.d.ts.map +1 -0
  96. package/dist/esm/lib/errors.js +34 -0
  97. package/dist/esm/lib/errors.js.map +1 -0
  98. package/dist/esm/lib/invite-user-dialog.d.ts.map +1 -1
  99. package/dist/esm/lib/invite-user-dialog.js +4 -4
  100. package/dist/esm/lib/invite-user-dialog.js.map +1 -1
  101. package/dist/esm/lib/resend-invite-dialog.d.ts.map +1 -1
  102. package/dist/esm/lib/resend-invite-dialog.js +3 -3
  103. package/dist/esm/lib/resend-invite-dialog.js.map +1 -1
  104. package/dist/esm/lib/revoke-invite-dialog.d.ts.map +1 -1
  105. package/dist/esm/lib/revoke-invite-dialog.js +2 -2
  106. package/dist/esm/lib/revoke-invite-dialog.js.map +1 -1
  107. package/dist/esm/lib/use-layout-effect.d.ts +4 -0
  108. package/dist/esm/lib/use-layout-effect.d.ts.map +1 -0
  109. package/dist/esm/lib/use-layout-effect.js +5 -0
  110. package/dist/esm/lib/use-layout-effect.js.map +1 -0
  111. package/dist/esm/lib/user-actions-dropdown.d.ts.map +1 -1
  112. package/dist/esm/lib/user-actions-dropdown.js +3 -10
  113. package/dist/esm/lib/user-actions-dropdown.js.map +1 -1
  114. package/dist/esm/lib/users-filter.d.ts +1 -0
  115. package/dist/esm/lib/users-filter.d.ts.map +1 -1
  116. package/dist/esm/lib/users-filter.js +4 -11
  117. package/dist/esm/lib/users-filter.js.map +1 -1
  118. package/dist/esm/lib/users-management-context.d.ts +2 -2
  119. package/dist/esm/lib/users-management-context.d.ts.map +1 -1
  120. package/dist/esm/lib/users-management.d.ts +9 -6
  121. package/dist/esm/lib/users-management.d.ts.map +1 -1
  122. package/dist/esm/lib/users-management.js +74 -22
  123. package/dist/esm/lib/users-management.js.map +1 -1
  124. package/dist/esm/lib/users-search.d.ts +1 -1
  125. package/dist/esm/lib/users-search.d.ts.map +1 -1
  126. package/dist/esm/lib/users-search.js +5 -11
  127. package/dist/esm/lib/users-search.js.map +1 -1
  128. package/dist/esm/lib/utils.d.ts +2 -0
  129. package/dist/esm/lib/utils.d.ts.map +1 -1
  130. package/dist/esm/lib/utils.js +13 -0
  131. package/dist/esm/lib/utils.js.map +1 -1
  132. package/dist/esm/users-management.client.d.ts +1 -1
  133. package/dist/esm/users-management.client.d.ts.map +1 -1
  134. package/dist/esm/users-management.client.js +16 -6
  135. package/dist/esm/users-management.client.js.map +1 -1
  136. package/dist/esm/workos-widgets.client.d.ts.map +1 -1
  137. package/dist/esm/workos-widgets.client.js +2 -1
  138. package/dist/esm/workos-widgets.client.js.map +1 -1
  139. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  140. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  141. package/package.json +8 -3
  142. package/src/base.css +111 -0
  143. package/src/lib/api/role.ts +39 -16
  144. package/src/lib/api/user.ts +119 -75
  145. package/src/lib/constants.ts +2 -1
  146. package/src/lib/delete-user-dialog.tsx +7 -3
  147. package/src/lib/edit-user-details-dialog.tsx +15 -10
  148. package/src/lib/elements.tsx +254 -70
  149. package/src/lib/error-boundary.tsx +166 -0
  150. package/src/lib/errors.ts +49 -0
  151. package/src/lib/invite-user-dialog.tsx +22 -13
  152. package/src/lib/resend-invite-dialog.tsx +11 -5
  153. package/src/lib/revoke-invite-dialog.tsx +7 -3
  154. package/src/lib/use-layout-effect.ts +6 -0
  155. package/src/lib/user-actions-dropdown.tsx +8 -16
  156. package/src/lib/users-filter.tsx +13 -73
  157. package/src/lib/users-management-context.tsx +1 -1
  158. package/src/lib/users-management.tsx +339 -184
  159. package/src/lib/users-search.tsx +5 -63
  160. package/src/lib/utils.ts +21 -0
  161. package/src/users-management.client.tsx +37 -16
  162. package/src/users-management.css +4 -0
  163. package/src/workos-widgets.client.tsx +2 -1
  164. package/dist/cjs/lib/label.d.ts +0 -7
  165. package/dist/cjs/lib/label.d.ts.map +0 -1
  166. package/dist/cjs/lib/label.js +0 -9
  167. package/dist/cjs/lib/label.js.map +0 -1
  168. package/dist/cjs/lib/pagination.d.ts +0 -8
  169. package/dist/cjs/lib/pagination.d.ts.map +0 -1
  170. package/dist/cjs/lib/pagination.js +0 -67
  171. package/dist/cjs/lib/pagination.js.map +0 -1
  172. package/dist/esm/lib/label.d.ts +0 -7
  173. package/dist/esm/lib/label.d.ts.map +0 -1
  174. package/dist/esm/lib/label.js +0 -6
  175. package/dist/esm/lib/label.js.map +0 -1
  176. package/dist/esm/lib/pagination.d.ts +0 -8
  177. package/dist/esm/lib/pagination.d.ts.map +0 -1
  178. package/dist/esm/lib/pagination.js +0 -40
  179. package/dist/esm/lib/pagination.js.map +0 -1
  180. package/src/lib/label.tsx +0 -14
  181. package/src/lib/pagination.tsx +0 -69
@@ -2,17 +2,18 @@
2
2
 
3
3
  import { useComposedRefs } from "@radix-ui/react-compose-refs";
4
4
  import { Cross2Icon, MagnifyingGlassIcon } from "@radix-ui/react-icons";
5
- import { Checkbox, DropdownMenu, Flex, IconButton } from "@radix-ui/themes";
5
+ import { IconButton } from "@radix-ui/themes";
6
6
  import * as React from "react";
7
7
  import { useDebouncedCallback } from "use-debounce";
8
- import { PrimaryMenuItem, TextField, TextFieldSlot } from "./elements";
8
+ import { TextField, TextFieldSlot } from "./elements";
9
9
  import { useSearchContext } from "./search-provider";
10
10
  import { useUsersManagementContext } from "./users-management-context";
11
+ import { cx } from "./utils";
11
12
 
12
13
  type UsersSearchProps = React.ComponentPropsWithoutRef<typeof TextField>;
13
14
 
14
15
  export const UsersSearch = React.forwardRef<HTMLInputElement, UsersSearchProps>(
15
- (props, ref) => {
16
+ ({ className, ...props }, ref) => {
16
17
  const { inputRef, clearSearch, searchValue, setSearchValue } =
17
18
  useSearchContext();
18
19
  const { dispatch } = useUsersManagementContext();
@@ -29,6 +30,7 @@ export const UsersSearch = React.forwardRef<HTMLInputElement, UsersSearchProps>(
29
30
  return (
30
31
  <TextField
31
32
  ref={useComposedRefs(inputRef, ref)}
33
+ className={cx(["users-search"], className)}
32
34
  autoComplete="off"
33
35
  placeholder="Search by name or e-mail"
34
36
  value={searchValue}
@@ -63,68 +65,8 @@ export const UsersSearch = React.forwardRef<HTMLInputElement, UsersSearchProps>(
63
65
  <Cross2Icon aria-hidden="true" />
64
66
  </IconButton>
65
67
  )}
66
- {/* <FilterMenu /> */}
67
68
  </TextFieldSlot>
68
69
  </TextField>
69
70
  );
70
71
  },
71
72
  );
72
-
73
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
74
- function FilterMenu() {
75
- return (
76
- <DropdownMenu.Root>
77
- <DropdownMenu.Trigger>
78
- <IconButton
79
- size="1"
80
- color="gray"
81
- variant="ghost"
82
- radius="full"
83
- aria-label="Filter users"
84
- title="Filter users"
85
- >
86
- <FilterIcon aria-hidden="true" />
87
- </IconButton>
88
- </DropdownMenu.Trigger>
89
- <DropdownMenu.Content size="2" align="end">
90
- <PrimaryMenuItem>
91
- <Flex gap="2" align="center">
92
- <Checkbox variant="surface" />
93
- One
94
- </Flex>
95
- </PrimaryMenuItem>
96
- <PrimaryMenuItem>
97
- <Flex gap="2" align="center">
98
- <Checkbox />
99
- Two
100
- </Flex>
101
- </PrimaryMenuItem>
102
- </DropdownMenu.Content>
103
- </DropdownMenu.Root>
104
- );
105
- }
106
-
107
- const FilterIcon = React.forwardRef<
108
- SVGSVGElement,
109
- React.ComponentPropsWithRef<"svg">
110
- >(function FilterIcon({ children, ...props }, forwardedRef) {
111
- return (
112
- <svg
113
- width="15"
114
- height="15"
115
- viewBox="0 0 15 15"
116
- fill="currentColor"
117
- xmlns="http://www.w3.org/2000/svg"
118
- ref={forwardedRef}
119
- {...props}
120
- >
121
- {children}
122
- <path
123
- fillRule="evenodd"
124
- clipRule="evenodd"
125
- d="M1.5 1C1.22386 1 1 1.22386 1 1.5V4.5C1 4.66316 1.07961 4.81605 1.21327 4.90962L6 8.26033V13.5C6 13.6733 6.08973 13.8342 6.23713 13.9253C6.38454 14.0164 6.56861 14.0247 6.72361 13.9472L8.72361 12.9472C8.893 12.8625 9 12.6894 9 12.5V8.26033L13.7867 4.90962C13.9204 4.81605 14 4.66316 14 4.5V1.5C14 1.22386 13.7761 1 13.5 1H1.5ZM2 4.23967V2H13V4.23967L8.21327 7.59038C8.07961 7.68395 8 7.83684 8 8V12.191L7 12.691V8C7 7.83684 6.92039 7.68395 6.78673 7.59038L2 4.23967ZM12 3H3V4H12V3Z"
126
- fill="black"
127
- />
128
- </svg>
129
- );
130
- });
package/src/lib/utils.ts CHANGED
@@ -1,4 +1,6 @@
1
+ import clsx from "clsx";
1
2
  import type { User } from "./api/user";
3
+ import { WIDGETS_CLASS_NAMESPACE } from "./constants";
2
4
 
3
5
  export const canUseDOM = !!(
4
6
  typeof window !== "undefined" &&
@@ -92,3 +94,22 @@ export async function parseErrorResponse(
92
94
  };
93
95
  }
94
96
  }
97
+
98
+ export function namespaceClassName(className: string) {
99
+ return `${WIDGETS_CLASS_NAMESPACE}-${className}`;
100
+ }
101
+
102
+ export function cx(
103
+ baseClass: string | null | string[],
104
+ ...classes: (string | false | null | undefined)[]
105
+ ): string {
106
+ if (baseClass) {
107
+ return clsx(
108
+ typeof baseClass === "string"
109
+ ? namespaceClassName(baseClass)
110
+ : baseClass.map(namespaceClassName),
111
+ ...classes,
112
+ );
113
+ }
114
+ return clsx(...classes);
115
+ }
@@ -4,7 +4,11 @@ import * as React from "react";
4
4
  import { useRoles } from "./lib/api/role";
5
5
  import { useUsers } from "./lib/api/user";
6
6
  import { useIsHydrated } from "./lib/use-is-hydrated";
7
- import { UsersManagement as UsersManagementPresentational } from "./lib/users-management";
7
+ import {
8
+ UsersManagementError,
9
+ UsersManagementLoading,
10
+ UsersManagement as UsersManagementPresentational,
11
+ } from "./lib/users-management";
8
12
  import {
9
13
  UsersManagementContextProvider,
10
14
  UsersManagementContextType,
@@ -13,9 +17,10 @@ import {
13
17
  UsersManagementState,
14
18
  useUsersManagementState,
15
19
  } from "./lib/users-management-state";
20
+ import { ErrorBoundary } from "./lib/error-boundary";
16
21
 
17
22
  export interface UsersManagementProps {
18
- authToken: string | null | undefined;
23
+ authToken: string | (() => Promise<string>) | null | undefined;
19
24
  }
20
25
 
21
26
  const initialState: UsersManagementState = {
@@ -28,11 +33,13 @@ export const UsersManagement: React.FC<UsersManagementProps> = ({
28
33
  authToken = null,
29
34
  }) => {
30
35
  const isHydrated = useIsHydrated();
31
-
32
36
  const [state, dispatch] = useUsersManagementState(initialState);
33
37
  const context = React.useMemo<UsersManagementContextType>(
34
38
  () => ({
35
- authToken,
39
+ authToken:
40
+ typeof authToken === "string"
41
+ ? () => Promise.resolve(authToken)
42
+ : authToken,
36
43
  state,
37
44
  dispatch,
38
45
  }),
@@ -41,19 +48,33 @@ export const UsersManagement: React.FC<UsersManagementProps> = ({
41
48
 
42
49
  const rolesQuery = useRoles(context);
43
50
  const usersQuery = useUsers(context);
44
- const isFetching = usersQuery.isFetching || rolesQuery.isFetching;
45
- const isLoading = usersQuery.isLoading || rolesQuery.isLoading;
46
- const isPending =
47
- usersQuery.isPlaceholderData || rolesQuery.isPlaceholderData;
51
+
52
+ if (
53
+ usersQuery.isLoading ||
54
+ rolesQuery.isLoading ||
55
+ usersQuery.isPending ||
56
+ // render loading state on the server to prevent FOUC or hydration mismatch
57
+ !isHydrated
58
+ ) {
59
+ return <UsersManagementLoading />;
60
+ }
61
+
62
+ if (usersQuery.isError || rolesQuery.isError) {
63
+ return (
64
+ <UsersManagementError error={usersQuery.error || rolesQuery.isError} />
65
+ );
66
+ }
48
67
 
49
68
  return (
50
- <UsersManagementContextProvider value={context}>
51
- <UsersManagementPresentational
52
- userData={usersQuery.data}
53
- rolesData={rolesQuery.data}
54
- isInitialLoading={(isFetching && isLoading) || !isHydrated}
55
- isPending={isPending}
56
- />
57
- </UsersManagementContextProvider>
69
+ <ErrorBoundary FallbackComponent={UsersManagementError}>
70
+ <UsersManagementContextProvider value={context}>
71
+ <UsersManagementPresentational
72
+ userData={usersQuery.data}
73
+ rolesData={rolesQuery.data}
74
+ isPending={usersQuery.isFetching}
75
+ disableRolesFilter={rolesQuery.isPending || rolesQuery.isFetching}
76
+ />
77
+ </UsersManagementContextProvider>
78
+ </ErrorBoundary>
58
79
  );
59
80
  };
@@ -0,0 +1,4 @@
1
+ .woswidgets-widget:where([data-woswidgets-widget-id="users-management"]) {
2
+ display: flex;
3
+ flex-direction: column;
4
+ }
@@ -4,6 +4,7 @@ import { Theme as RadixThemes } from "@radix-ui/themes";
4
4
  import type { GetPropDefTypes, themePropDefs } from "@radix-ui/themes/props";
5
5
  import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
6
6
  import * as React from "react";
7
+ import { cx } from "./lib/utils";
7
8
  import { DEFAULT_API_HOSTNAME } from "./lib/api/config";
8
9
  import type { Elements } from "./lib/elements";
9
10
  import { WidgetsContext } from "./lib/widgets-context";
@@ -62,7 +63,7 @@ export const WorkOsWidgets: React.FC<WorkOsWidgetsProps> = ({
62
63
  <RadixThemes
63
64
  {...radixThemesProps}
64
65
  style={customStyle}
65
- className={className}
66
+ className={cx("root", className)}
66
67
  >
67
68
  <WidgetsContext.Provider value={{ elements, apiBaseUrl }}>
68
69
  {children}
@@ -1,7 +0,0 @@
1
- import { type TextProps } from "@radix-ui/themes";
2
- type LabelProps = Omit<Extract<TextProps, {
3
- as: "label";
4
- }>, "as">;
5
- export declare const Label: import("react").ForwardRefExoticComponent<LabelProps & import("react").RefAttributes<HTMLLabelElement>>;
6
- export {};
7
- //# sourceMappingURL=label.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../../src/lib/label.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGxD,KAAK,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;IAAE,EAAE,EAAE,OAAO,CAAA;CAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAElE,eAAO,MAAM,KAAK,yGAMjB,CAAC"}
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Label = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const themes_1 = require("@radix-ui/themes");
6
- const react_1 = require("react");
7
- exports.Label = (0, react_1.forwardRef)(({ children, ...props }, ref) => ((0, jsx_runtime_1.jsx)(themes_1.Text, { as: "label", ref: ref, weight: "bold", size: "2", ...props, children: children })));
8
- exports.Label.displayName = "Label";
9
- //# sourceMappingURL=label.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"label.js","sourceRoot":"","sources":["../../../src/lib/label.tsx"],"names":[],"mappings":";;;;AAAA,6CAAwD;AACxD,iCAAmC;AAItB,QAAA,KAAK,GAAG,IAAA,kBAAU,EAC7B,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAC/B,uBAAC,aAAI,IAAC,EAAE,EAAC,OAAO,EAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAC,MAAM,EAAC,IAAI,EAAC,GAAG,KAAK,KAAK,YACxD,QAAQ,GACJ,CACR,CACF,CAAC;AAEF,aAAK,CAAC,WAAW,GAAG,OAAO,CAAC"}
@@ -1,8 +0,0 @@
1
- import type { PaginationData } from "./api/user";
2
- interface PaginationProps {
3
- isPending?: boolean;
4
- pagination?: PaginationData;
5
- }
6
- export declare const Pagination: ({ isPending, pagination }: PaginationProps) => import("react/jsx-runtime").JSX.Element;
7
- export {};
8
- //# sourceMappingURL=pagination.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../src/lib/pagination.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,UAAU,eAAe;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED,eAAO,MAAM,UAAU,8BAA+B,eAAe,4CAyDpE,CAAC"}
@@ -1,67 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.Pagination = void 0;
27
- const jsx_runtime_1 = require("react/jsx-runtime");
28
- const React = __importStar(require("react"));
29
- const themes_1 = require("@radix-ui/themes");
30
- const elements_1 = require("./elements");
31
- const users_management_context_1 = require("./users-management-context");
32
- const Pagination = ({ isPending, pagination }) => {
33
- const { dispatch } = (0, users_management_context_1.useUsersManagementContext)();
34
- // we only want to show the loading indicator if the request is still pending
35
- // after 500ms. If the request is fast enough the indicator is a bit jarring.
36
- const [deferredLoading, setDeferredLoading] = React.useState(false);
37
- React.useEffect(() => {
38
- if (isPending) {
39
- const timeoutId = window.setTimeout(() => {
40
- setDeferredLoading(true);
41
- }, 500);
42
- return () => {
43
- window.clearTimeout(timeoutId);
44
- };
45
- }
46
- else {
47
- setDeferredLoading(false);
48
- }
49
- }, [isPending]);
50
- return ((0, jsx_runtime_1.jsxs)(themes_1.Flex, { gap: "2", justify: "end", children: [(0, jsx_runtime_1.jsx)(themes_1.Skeleton, { loading: !pagination, children: (0, jsx_runtime_1.jsx)(elements_1.SecondaryButton, { size: "1", disabled: !pagination?.after || isPending || undefined, loading: deferredLoading, onClick: () => {
51
- if (pagination?.after) {
52
- dispatch({
53
- type: "SET_PAGINATION",
54
- pagination: { after: pagination.after },
55
- });
56
- }
57
- }, children: "Previous" }) }), (0, jsx_runtime_1.jsx)(themes_1.Skeleton, { loading: !pagination, children: (0, jsx_runtime_1.jsx)(elements_1.SecondaryButton, { size: "1", disabled: !pagination?.before || isPending || undefined, loading: deferredLoading, onClick: () => {
58
- if (pagination?.before) {
59
- dispatch({
60
- type: "SET_PAGINATION",
61
- pagination: { before: pagination.before },
62
- });
63
- }
64
- }, children: "Next" }) })] }));
65
- };
66
- exports.Pagination = Pagination;
67
- //# sourceMappingURL=pagination.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../../src/lib/pagination.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,6CAAkD;AAClD,yCAA6C;AAE7C,yEAAuE;AAOhE,MAAM,UAAU,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAmB,EAAE,EAAE;IACvE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,oDAAyB,GAAE,CAAC;IAEjD,6EAA6E;IAC7E,6EAA6E;IAC7E,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;gBACvC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC,EAAE,GAAG,CAAC,CAAC;YACR,OAAO,GAAG,EAAE;gBACV,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,CACL,wBAAC,aAAI,IAAC,GAAG,EAAC,GAAG,EAAC,OAAO,EAAC,KAAK,aACzB,uBAAC,iBAAQ,IAAC,OAAO,EAAE,CAAC,UAAU,YAC5B,uBAAC,0BAAe,IACd,IAAI,EAAC,GAAG,EACR,QAAQ,EAAE,CAAC,UAAU,EAAE,KAAK,IAAI,SAAS,IAAI,SAAS,EACtD,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,GAAG,EAAE;wBACZ,IAAI,UAAU,EAAE,KAAK,EAAE,CAAC;4BACtB,QAAQ,CAAC;gCACP,IAAI,EAAE,gBAAgB;gCACtB,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE;6BACxC,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC,yBAGe,GACT,EACX,uBAAC,iBAAQ,IAAC,OAAO,EAAE,CAAC,UAAU,YAC5B,uBAAC,0BAAe,IACd,IAAI,EAAC,GAAG,EACR,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,IAAI,SAAS,IAAI,SAAS,EACvD,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,GAAG,EAAE;wBACZ,IAAI,UAAU,EAAE,MAAM,EAAE,CAAC;4BACvB,QAAQ,CAAC;gCACP,IAAI,EAAE,gBAAgB;gCACtB,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE;6BAC1C,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC,qBAGe,GACT,IACN,CACR,CAAC;AACJ,CAAC,CAAC;AAzDW,QAAA,UAAU,cAyDrB"}
@@ -1,7 +0,0 @@
1
- import { type TextProps } from "@radix-ui/themes";
2
- type LabelProps = Omit<Extract<TextProps, {
3
- as: "label";
4
- }>, "as">;
5
- export declare const Label: import("react").ForwardRefExoticComponent<LabelProps & import("react").RefAttributes<HTMLLabelElement>>;
6
- export {};
7
- //# sourceMappingURL=label.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../../src/lib/label.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGxD,KAAK,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;IAAE,EAAE,EAAE,OAAO,CAAA;CAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAElE,eAAO,MAAM,KAAK,yGAMjB,CAAC"}
@@ -1,6 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Text } from "@radix-ui/themes";
3
- import { forwardRef } from "react";
4
- export const Label = forwardRef(({ children, ...props }, ref) => (_jsx(Text, { as: "label", ref: ref, weight: "bold", size: "2", ...props, children: children })));
5
- Label.displayName = "Label";
6
- //# sourceMappingURL=label.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"label.js","sourceRoot":"","sources":["../../../src/lib/label.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAkB,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAInC,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAC7B,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAC/B,KAAC,IAAI,IAAC,EAAE,EAAC,OAAO,EAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAC,MAAM,EAAC,IAAI,EAAC,GAAG,KAAK,KAAK,YACxD,QAAQ,GACJ,CACR,CACF,CAAC;AAEF,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC"}
@@ -1,8 +0,0 @@
1
- import type { PaginationData } from "./api/user";
2
- interface PaginationProps {
3
- isPending?: boolean;
4
- pagination?: PaginationData;
5
- }
6
- export declare const Pagination: ({ isPending, pagination }: PaginationProps) => import("react/jsx-runtime").JSX.Element;
7
- export {};
8
- //# sourceMappingURL=pagination.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../src/lib/pagination.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,UAAU,eAAe;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED,eAAO,MAAM,UAAU,8BAA+B,eAAe,4CAyDpE,CAAC"}
@@ -1,40 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import * as React from "react";
3
- import { Flex, Skeleton } from "@radix-ui/themes";
4
- import { SecondaryButton } from "./elements";
5
- import { useUsersManagementContext } from "./users-management-context";
6
- export const Pagination = ({ isPending, pagination }) => {
7
- const { dispatch } = useUsersManagementContext();
8
- // we only want to show the loading indicator if the request is still pending
9
- // after 500ms. If the request is fast enough the indicator is a bit jarring.
10
- const [deferredLoading, setDeferredLoading] = React.useState(false);
11
- React.useEffect(() => {
12
- if (isPending) {
13
- const timeoutId = window.setTimeout(() => {
14
- setDeferredLoading(true);
15
- }, 500);
16
- return () => {
17
- window.clearTimeout(timeoutId);
18
- };
19
- }
20
- else {
21
- setDeferredLoading(false);
22
- }
23
- }, [isPending]);
24
- return (_jsxs(Flex, { gap: "2", justify: "end", children: [_jsx(Skeleton, { loading: !pagination, children: _jsx(SecondaryButton, { size: "1", disabled: !pagination?.after || isPending || undefined, loading: deferredLoading, onClick: () => {
25
- if (pagination?.after) {
26
- dispatch({
27
- type: "SET_PAGINATION",
28
- pagination: { after: pagination.after },
29
- });
30
- }
31
- }, children: "Previous" }) }), _jsx(Skeleton, { loading: !pagination, children: _jsx(SecondaryButton, { size: "1", disabled: !pagination?.before || isPending || undefined, loading: deferredLoading, onClick: () => {
32
- if (pagination?.before) {
33
- dispatch({
34
- type: "SET_PAGINATION",
35
- pagination: { before: pagination.before },
36
- });
37
- }
38
- }, children: "Next" }) })] }));
39
- };
40
- //# sourceMappingURL=pagination.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../../src/lib/pagination.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAOvE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAmB,EAAE,EAAE;IACvE,MAAM,EAAE,QAAQ,EAAE,GAAG,yBAAyB,EAAE,CAAC;IAEjD,6EAA6E;IAC7E,6EAA6E;IAC7E,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;gBACvC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC,EAAE,GAAG,CAAC,CAAC;YACR,OAAO,GAAG,EAAE;gBACV,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,CACL,MAAC,IAAI,IAAC,GAAG,EAAC,GAAG,EAAC,OAAO,EAAC,KAAK,aACzB,KAAC,QAAQ,IAAC,OAAO,EAAE,CAAC,UAAU,YAC5B,KAAC,eAAe,IACd,IAAI,EAAC,GAAG,EACR,QAAQ,EAAE,CAAC,UAAU,EAAE,KAAK,IAAI,SAAS,IAAI,SAAS,EACtD,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,GAAG,EAAE;wBACZ,IAAI,UAAU,EAAE,KAAK,EAAE,CAAC;4BACtB,QAAQ,CAAC;gCACP,IAAI,EAAE,gBAAgB;gCACtB,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE;6BACxC,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC,yBAGe,GACT,EACX,KAAC,QAAQ,IAAC,OAAO,EAAE,CAAC,UAAU,YAC5B,KAAC,eAAe,IACd,IAAI,EAAC,GAAG,EACR,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,IAAI,SAAS,IAAI,SAAS,EACvD,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,GAAG,EAAE;wBACZ,IAAI,UAAU,EAAE,MAAM,EAAE,CAAC;4BACvB,QAAQ,CAAC;gCACP,IAAI,EAAE,gBAAgB;gCACtB,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE;6BAC1C,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC,qBAGe,GACT,IACN,CACR,CAAC;AACJ,CAAC,CAAC"}
package/src/lib/label.tsx DELETED
@@ -1,14 +0,0 @@
1
- import { Text, type TextProps } from "@radix-ui/themes";
2
- import { forwardRef } from "react";
3
-
4
- type LabelProps = Omit<Extract<TextProps, { as: "label" }>, "as">;
5
-
6
- export const Label = forwardRef<HTMLLabelElement, LabelProps>(
7
- ({ children, ...props }, ref) => (
8
- <Text as="label" ref={ref} weight="bold" size="2" {...props}>
9
- {children}
10
- </Text>
11
- ),
12
- );
13
-
14
- Label.displayName = "Label";
@@ -1,69 +0,0 @@
1
- import * as React from "react";
2
- import { Flex, Skeleton } from "@radix-ui/themes";
3
- import { SecondaryButton } from "./elements";
4
- import type { PaginationData } from "./api/user";
5
- import { useUsersManagementContext } from "./users-management-context";
6
-
7
- interface PaginationProps {
8
- isPending?: boolean;
9
- pagination?: PaginationData;
10
- }
11
-
12
- export const Pagination = ({ isPending, pagination }: PaginationProps) => {
13
- const { dispatch } = useUsersManagementContext();
14
-
15
- // we only want to show the loading indicator if the request is still pending
16
- // after 500ms. If the request is fast enough the indicator is a bit jarring.
17
- const [deferredLoading, setDeferredLoading] = React.useState(false);
18
- React.useEffect(() => {
19
- if (isPending) {
20
- const timeoutId = window.setTimeout(() => {
21
- setDeferredLoading(true);
22
- }, 500);
23
- return () => {
24
- window.clearTimeout(timeoutId);
25
- };
26
- } else {
27
- setDeferredLoading(false);
28
- }
29
- }, [isPending]);
30
-
31
- return (
32
- <Flex gap="2" justify="end">
33
- <Skeleton loading={!pagination}>
34
- <SecondaryButton
35
- size="1"
36
- disabled={!pagination?.after || isPending || undefined}
37
- loading={deferredLoading}
38
- onClick={() => {
39
- if (pagination?.after) {
40
- dispatch({
41
- type: "SET_PAGINATION",
42
- pagination: { after: pagination.after },
43
- });
44
- }
45
- }}
46
- >
47
- Previous
48
- </SecondaryButton>
49
- </Skeleton>
50
- <Skeleton loading={!pagination}>
51
- <SecondaryButton
52
- size="1"
53
- disabled={!pagination?.before || isPending || undefined}
54
- loading={deferredLoading}
55
- onClick={() => {
56
- if (pagination?.before) {
57
- dispatch({
58
- type: "SET_PAGINATION",
59
- pagination: { before: pagination.before },
60
- });
61
- }
62
- }}
63
- >
64
- Next
65
- </SecondaryButton>
66
- </Skeleton>
67
- </Flex>
68
- );
69
- };