@workos-inc/widgets 1.1.5 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/cjs/lib/organization-switcher.d.ts +10 -1
  2. package/dist/cjs/lib/organization-switcher.d.ts.map +1 -1
  3. package/dist/cjs/lib/organization-switcher.js +31 -3
  4. package/dist/cjs/lib/organization-switcher.js.map +1 -1
  5. package/dist/cjs/workos-widgets.client.d.ts +6 -0
  6. package/dist/cjs/workos-widgets.client.d.ts.map +1 -1
  7. package/dist/cjs/workos-widgets.client.js +23 -3
  8. package/dist/cjs/workos-widgets.client.js.map +1 -1
  9. package/dist/esm/lib/organization-switcher.d.ts +10 -1
  10. package/dist/esm/lib/organization-switcher.d.ts.map +1 -1
  11. package/dist/esm/lib/organization-switcher.js +31 -3
  12. package/dist/esm/lib/organization-switcher.js.map +1 -1
  13. package/dist/esm/workos-widgets.client.d.ts +6 -0
  14. package/dist/esm/workos-widgets.client.d.ts.map +1 -1
  15. package/dist/esm/workos-widgets.client.js +25 -5
  16. package/dist/esm/workos-widgets.client.js.map +1 -1
  17. package/package.json +8 -9
  18. package/src/api/api-provider.tsx +0 -158
  19. package/src/api/constants.ts +0 -1
  20. package/src/api/endpoint.ts +0 -3097
  21. package/src/api/errors.ts +0 -48
  22. package/src/api/index.ts +0 -2
  23. package/src/api/utils.ts +0 -42
  24. package/src/api/widgets-api-client.ts +0 -87
  25. package/src/card-list.tsx +0 -26
  26. package/src/index.ts +0 -9
  27. package/src/lib/add-mfa-dialog.tsx +0 -379
  28. package/src/lib/api/config.ts +0 -9
  29. package/src/lib/api/user.ts +0 -98
  30. package/src/lib/change-password-dialog.tsx +0 -290
  31. package/src/lib/constants.ts +0 -3
  32. package/src/lib/copy-button.tsx +0 -53
  33. package/src/lib/delete-user-dialog.tsx +0 -110
  34. package/src/lib/edit-user-profile-dialog.tsx +0 -181
  35. package/src/lib/edit-user-role-dialog.tsx +0 -178
  36. package/src/lib/elements.tsx +0 -428
  37. package/src/lib/elevated-access.tsx +0 -261
  38. package/src/lib/error-boundary.tsx +0 -166
  39. package/src/lib/errors.ts +0 -49
  40. package/src/lib/generic-error.tsx +0 -70
  41. package/src/lib/icon-panel.tsx +0 -26
  42. package/src/lib/icons.tsx +0 -21
  43. package/src/lib/invite-user-dialog.tsx +0 -327
  44. package/src/lib/logout-all-sessions-dialog.tsx +0 -82
  45. package/src/lib/logout-dialog.tsx +0 -85
  46. package/src/lib/marker.tsx +0 -39
  47. package/src/lib/oauth-icons.tsx +0 -138
  48. package/src/lib/organization-switcher.tsx +0 -156
  49. package/src/lib/otp-input.tsx +0 -276
  50. package/src/lib/resend-invite-dialog.tsx +0 -145
  51. package/src/lib/reset-mfa-dialog.tsx +0 -104
  52. package/src/lib/revoke-invite-dialog.tsx +0 -111
  53. package/src/lib/save-button.tsx +0 -113
  54. package/src/lib/search-provider.tsx +0 -51
  55. package/src/lib/set-password-dialog.tsx +0 -204
  56. package/src/lib/use-dialog-close.tsx +0 -19
  57. package/src/lib/use-is-hydrated.ts +0 -13
  58. package/src/lib/use-layout-effect.ts +0 -6
  59. package/src/lib/use-security-settings.tsx +0 -49
  60. package/src/lib/user-actions-dropdown.tsx +0 -157
  61. package/src/lib/user-profile.tsx +0 -227
  62. package/src/lib/user-security.tsx +0 -187
  63. package/src/lib/user-sessions.tsx +0 -204
  64. package/src/lib/users-filter.tsx +0 -62
  65. package/src/lib/users-management-context.tsx +0 -74
  66. package/src/lib/users-management-state.ts +0 -165
  67. package/src/lib/users-management.tsx +0 -594
  68. package/src/lib/users-search.tsx +0 -73
  69. package/src/lib/utils.ts +0 -131
  70. package/src/lib/widgets-context.ts +0 -29
  71. package/src/organization-switcher.client.tsx +0 -81
  72. package/src/user-profile.client.tsx +0 -55
  73. package/src/user-security.client.tsx +0 -55
  74. package/src/user-sessions.client.tsx +0 -100
  75. package/src/users-management.client.tsx +0 -73
  76. package/src/workos-widgets.client.tsx +0 -75
  77. /package/{src → dist/css}/base.css +0 -0
  78. /package/{src → dist/css}/lib/card-list.css +0 -0
  79. /package/{src → dist/css}/lib/marker.css +0 -0
  80. /package/{src → dist/css}/lib/save-button.css +0 -0
  81. /package/{src → dist/css}/styles.css +0 -0
  82. /package/{src → dist/css}/users-management.css +0 -0
@@ -7,11 +7,20 @@ export type OrganizationSwitcherPassthroughProps = {
7
7
  variant?: OrganizationSwitcherVariant;
8
8
  organizationLabel?: string | null;
9
9
  children?: React.ReactNode;
10
+ /**
11
+ * Choose where to truncate organization name in the trigger and dropdown
12
+ * items.
13
+ *
14
+ * - `right`: Truncate the right side of the organization name
15
+ * - `middle`: Truncate the middle of the organization name, trying to keep
16
+ * words whole
17
+ */
18
+ truncateBehavior?: "right" | "middle";
10
19
  };
11
20
  export interface OrganizationSwitcherProps extends OrganizationSwitcherPassthroughProps {
12
21
  organizations: OrganizationInfo[];
13
22
  }
14
- export declare const OrganizationSwitcher: ({ organizations, switchToOrganization, variant, organizationLabel, children, }: OrganizationSwitcherProps) => import("react/jsx-runtime").JSX.Element | null;
23
+ export declare const OrganizationSwitcher: ({ organizations, switchToOrganization, variant, organizationLabel, truncateBehavior, children, }: OrganizationSwitcherProps) => import("react/jsx-runtime").JSX.Element | null;
15
24
  export declare function OrganizationSwitcherLoading({ variant, organizations, }: {
16
25
  variant?: OrganizationSwitcherVariant;
17
26
  organizations: OrganizationInfo[];
@@ -1 +1 @@
1
- {"version":3,"file":"organization-switcher.d.ts","sourceRoot":"","sources":["../../../src/lib/organization-switcher.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE9E,KAAK,2BAA2B,GAAG,OAAO,GAAG,SAAS,CAAC;AAGvD,MAAM,MAAM,oCAAoC,GAAG;IACjD,oBAAoB,EAAE,CAAC,EACrB,cAAc,GACf,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;KACxB,KAAK,IAAI,CAAC;IAEX,OAAO,CAAC,EAAE,2BAA2B,CAAC;IACtC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,WAAW,yBACf,SAAQ,oCAAoC;IAC5C,aAAa,EAAE,gBAAgB,EAAE,CAAC;CACnC;AAED,eAAO,MAAM,oBAAoB,mFAM9B,yBAAyB,mDAiF3B,CAAC;AAEF,wBAAgB,2BAA2B,CAAC,EAC1C,OAAmB,EACnB,aAAa,GACd,EAAE;IACD,OAAO,CAAC,EAAE,2BAA2B,CAAC;IACtC,aAAa,EAAE,gBAAgB,EAAE,CAAC;CACnC,2CAgBA;AAED,UAAU,8BAA8B;IACtC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;CAC5C;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,8BAA8B,QAG1E"}
1
+ {"version":3,"file":"organization-switcher.d.ts","sourceRoot":"","sources":["../../../src/lib/organization-switcher.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE9E,KAAK,2BAA2B,GAAG,OAAO,GAAG,SAAS,CAAC;AAGvD,MAAM,MAAM,oCAAoC,GAAG;IACjD,oBAAoB,EAAE,CAAC,EACrB,cAAc,GACf,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;KACxB,KAAK,IAAI,CAAC;IAEX,OAAO,CAAC,EAAE,2BAA2B,CAAC;IACtC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CACvC,CAAC;AAEF,MAAM,WAAW,yBACf,SAAQ,oCAAoC;IAC5C,aAAa,EAAE,gBAAgB,EAAE,CAAC;CACnC;AAED,eAAO,MAAM,oBAAoB,qGAO9B,yBAAyB,mDA8F3B,CAAC;AAEF,wBAAgB,2BAA2B,CAAC,EAC1C,OAAmB,EACnB,aAAa,GACd,EAAE;IACD,OAAO,CAAC,EAAE,2BAA2B,CAAC;IACtC,aAAa,EAAE,gBAAgB,EAAE,CAAC;CACnC,2CAgBA;AAED,UAAU,8BAA8B;IACtC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;CAC5C;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,8BAA8B,QAG1E"}
@@ -7,17 +7,17 @@ exports.OrganizationSwitcherError = OrganizationSwitcherError;
7
7
  const jsx_runtime_1 = require("react/jsx-runtime");
8
8
  const react_icons_1 = require("@radix-ui/react-icons");
9
9
  const themes_1 = require("@radix-ui/themes");
10
- const OrganizationSwitcher = ({ organizations, switchToOrganization, variant = "outline", organizationLabel = "Organizations", children, }) => {
10
+ const OrganizationSwitcher = ({ organizations, switchToOrganization, variant = "outline", organizationLabel = "Organizations", truncateBehavior = "right", children, }) => {
11
11
  const currentOrganization = organizations.find((organization) => organization.current);
12
12
  // Possible if the user has no organizations - we should figure out what to do in this case
13
13
  if (!currentOrganization) {
14
14
  return null;
15
15
  }
16
- return ((0, jsx_runtime_1.jsxs)(themes_1.DropdownMenu.Root, { children: [(0, jsx_runtime_1.jsx)(themes_1.DropdownMenu.Trigger, { children: (0, jsx_runtime_1.jsx)(themes_1.Button, { color: "gray", variant: variant, className: "OrganizationSwitcherTrigger", children: (0, jsx_runtime_1.jsxs)(themes_1.Flex, { align: "center", justify: "between", gap: "2", flexGrow: "1", children: [(0, jsx_runtime_1.jsx)(themes_1.Text, { children: currentOrganization.name }), (0, jsx_runtime_1.jsx)(themes_1.DropdownMenu.TriggerIcon, {})] }) }) }), (0, jsx_runtime_1.jsxs)(themes_1.DropdownMenu.Content, { children: [(0, jsx_runtime_1.jsxs)(themes_1.DropdownMenu.Group, { children: [organizationLabel ? ((0, jsx_runtime_1.jsx)(themes_1.DropdownMenu.Label, { children: (0, jsx_runtime_1.jsx)(themes_1.Text, { children: organizationLabel }) })) : null, organizations.map((organization) => ((0, jsx_runtime_1.jsx)(themes_1.Flex, { asChild: true, pr: "2", maxWidth: "280px", minWidth: "180px", children: (0, jsx_runtime_1.jsx)(themes_1.DropdownMenu.Item, { onClick: () => {
16
+ return ((0, jsx_runtime_1.jsxs)(themes_1.DropdownMenu.Root, { children: [(0, jsx_runtime_1.jsx)(themes_1.DropdownMenu.Trigger, { children: (0, jsx_runtime_1.jsx)(themes_1.Button, { color: "gray", variant: variant, className: "OrganizationSwitcherTrigger", children: (0, jsx_runtime_1.jsxs)(themes_1.Flex, { align: "center", justify: "between", gap: "2", flexGrow: "1", overflow: "hidden", minWidth: "0", children: [(0, jsx_runtime_1.jsx)(TruncatedOrganizationName, { organizationName: currentOrganization.name, truncateBehavior: truncateBehavior }), (0, jsx_runtime_1.jsx)(themes_1.Flex, { asChild: true, flexShrink: "0", children: (0, jsx_runtime_1.jsx)(themes_1.DropdownMenu.TriggerIcon, {}) })] }) }) }), (0, jsx_runtime_1.jsxs)(themes_1.DropdownMenu.Content, { children: [(0, jsx_runtime_1.jsxs)(themes_1.DropdownMenu.Group, { children: [organizationLabel ? ((0, jsx_runtime_1.jsx)(themes_1.DropdownMenu.Label, { children: (0, jsx_runtime_1.jsx)(themes_1.Text, { children: organizationLabel }) })) : null, organizations.map((organization) => ((0, jsx_runtime_1.jsx)(themes_1.Flex, { asChild: true, pr: "2", maxWidth: "280px", minWidth: "180px", children: (0, jsx_runtime_1.jsx)(themes_1.DropdownMenu.Item, { onClick: () => {
17
17
  if (organization.id !== currentOrganization.id) {
18
18
  switchToOrganization({ organizationId: organization.id });
19
19
  }
20
- }, children: (0, jsx_runtime_1.jsxs)(themes_1.Flex, { justify: "between", align: "center", gap: "4", flexGrow: "1", overflow: "hidden", children: [(0, jsx_runtime_1.jsxs)(themes_1.Text, { truncate: true, children: [organization.name, organization.current && ((0, jsx_runtime_1.jsx)(themes_1.VisuallyHidden, { children: " (current)" }))] }), (0, jsx_runtime_1.jsx)(themes_1.Flex, { "aria-hidden": true, align: "center", justify: "center", flexShrink: "0", children: organization.current ? ((0, jsx_runtime_1.jsx)(react_icons_1.CheckIcon, { width: "18px", height: "18px" })) : (
20
+ }, children: (0, jsx_runtime_1.jsxs)(themes_1.Flex, { justify: "between", align: "center", gap: "4", flexGrow: "1", overflow: "hidden", children: [(0, jsx_runtime_1.jsx)(TruncatedOrganizationName, { organizationName: organization.name, truncateBehavior: truncateBehavior }), organization.current && ((0, jsx_runtime_1.jsx)(themes_1.VisuallyHidden, { children: " (current)" })), (0, jsx_runtime_1.jsx)(themes_1.Flex, { "aria-hidden": true, align: "center", justify: "center", flexShrink: "0", children: organization.current ? ((0, jsx_runtime_1.jsx)(react_icons_1.CheckIcon, { width: "18px", height: "18px" })) : (
21
21
  // make the extra space for
22
22
  (0, jsx_runtime_1.jsx)(themes_1.Box, { width: "18px", height: "18px" })) })] }) }) }, organization.id)))] }), children] })] }));
23
23
  };
@@ -32,4 +32,32 @@ function OrganizationSwitcherError(_) {
32
32
  // TODO: consider other error state options
33
33
  return null;
34
34
  }
35
+ const MAX_TRUNCATED_SUFFIX_LENGTH = 10;
36
+ const MIN_TRUNCATED_SUFFIX_LENGTH = 3;
37
+ const WHITE_SPACE_REGEX = /\s/;
38
+ const getSplitPosition = (organizationName) => {
39
+ if (organizationName.length <= MAX_TRUNCATED_SUFFIX_LENGTH) {
40
+ return organizationName.length;
41
+ }
42
+ for (let i = organizationName.length - MAX_TRUNCATED_SUFFIX_LENGTH; i < organizationName.length - MIN_TRUNCATED_SUFFIX_LENGTH; i++) {
43
+ if (WHITE_SPACE_REGEX.test(organizationName[i - 1])) {
44
+ return i;
45
+ }
46
+ }
47
+ return organizationName.length - MAX_TRUNCATED_SUFFIX_LENGTH;
48
+ };
49
+ const splitOrganizationName = (organizationName) => {
50
+ const splitPosition = getSplitPosition(organizationName);
51
+ return [
52
+ organizationName.slice(0, splitPosition),
53
+ organizationName.slice(splitPosition),
54
+ ];
55
+ };
56
+ const TruncatedOrganizationName = ({ organizationName, truncateBehavior, }) => {
57
+ if (truncateBehavior === "right") {
58
+ return (0, jsx_runtime_1.jsx)(themes_1.Text, { truncate: true, children: organizationName });
59
+ }
60
+ const [organizationNameLeft, organizationNameRight] = splitOrganizationName(organizationName);
61
+ return ((0, jsx_runtime_1.jsxs)(themes_1.Flex, { overflow: "hidden", children: [(0, jsx_runtime_1.jsx)(themes_1.VisuallyHidden, { children: (0, jsx_runtime_1.jsx)(themes_1.Text, { children: organizationName }) }), (0, jsx_runtime_1.jsx)(themes_1.Text, { "aria-hidden": true, truncate: true, style: { whiteSpace: "pre" }, children: organizationNameLeft }), (0, jsx_runtime_1.jsx)(themes_1.Text, { "aria-hidden": true, children: organizationNameRight })] }));
62
+ };
35
63
  //# sourceMappingURL=organization-switcher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"organization-switcher.js","sourceRoot":"","sources":["../../../src/lib/organization-switcher.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"organization-switcher.js","sourceRoot":"","sources":["../../../src/lib/organization-switcher.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { GetPropDefTypes, themePropDefs } from "@radix-ui/themes/props";
2
+ import { QueryClient } from "@tanstack/react-query";
2
3
  import * as React from "react";
3
4
  import type { Elements } from "./lib/elements";
4
5
  export interface WorkOsWidgetsProps {
@@ -12,6 +13,11 @@ export interface WorkOsWidgetsProps {
12
13
  apiHostname?: string;
13
14
  port?: number | null;
14
15
  https?: boolean;
16
+ /**
17
+ * Optional query client for users who are already using Tanstack Query. If
18
+ * not provided, a new query client will be created and mounted internally.
19
+ */
20
+ queryClient?: QueryClient;
15
21
  }
16
22
  export declare const WorkOsWidgets: React.FC<WorkOsWidgetsProps>;
17
23
  //# sourceMappingURL=workos-widgets.client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workos-widgets.client.d.ts","sourceRoot":"","sources":["../../src/workos-widgets.client.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG7E,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK/C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,aAAa,CAAC,EAAE,SAAS,CAAC,GAAG;QAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA+CtD,CAAC"}
1
+ {"version":3,"file":"workos-widgets.client.d.ts","sourceRoot":"","sources":["../../src/workos-widgets.client.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EACL,WAAW,EAGZ,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK/C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,aAAa,CAAC,EAAE,SAAS,CAAC,GAAG;QAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAgDtD,CAAC"}
@@ -36,8 +36,8 @@ const React = __importStar(require("react"));
36
36
  const utils_1 = require("./lib/utils");
37
37
  const config_1 = require("./lib/api/config");
38
38
  const widgets_context_1 = require("./lib/widgets-context");
39
- const queryClient = new react_query_1.QueryClient();
40
- const WorkOsWidgets = ({ elements = {}, className, theme: { fontFamily, ...radixThemesProps } = {}, style = {}, children, apiHostname = config_1.DEFAULT_API_HOSTNAME, port = null, https = true, }) => {
39
+ let queryClientInternal;
40
+ const WorkOsWidgets = ({ elements = {}, className, theme: { fontFamily, ...radixThemesProps } = {}, style = {}, children, apiHostname = config_1.DEFAULT_API_HOSTNAME, port = null, https = true, queryClient, }) => {
41
41
  const customStyle = (fontFamily
42
42
  ? {
43
43
  "--default-font-family": fontFamily,
@@ -54,7 +54,27 @@ const WorkOsWidgets = ({ elements = {}, className, theme: { fontFamily, ...radix
54
54
  return `https://${config_1.DEFAULT_API_HOSTNAME}`;
55
55
  }
56
56
  }, [apiHostname, https, port]);
57
- return ((0, jsx_runtime_1.jsx)(react_query_1.QueryClientProvider, { client: queryClient, children: (0, jsx_runtime_1.jsx)(themes_1.Theme, { ...radixThemesProps, style: customStyle, className: (0, clsx_1.default)((0, utils_1.namespaceClassNames)("root"), className), children: (0, jsx_runtime_1.jsx)(widgets_context_1.WidgetsContext.Provider, { value: { elements, apiBaseUrl }, children: children }) }) }));
57
+ return ((0, jsx_runtime_1.jsx)(QueryClientProviderImpl, { client: queryClient, children: (0, jsx_runtime_1.jsx)(themes_1.Theme, { ...radixThemesProps, style: customStyle, className: (0, clsx_1.default)((0, utils_1.namespaceClassNames)("root"), className), children: (0, jsx_runtime_1.jsx)(widgets_context_1.WidgetsContext.Provider, { value: { elements, apiBaseUrl }, children: children }) }) }));
58
58
  };
59
59
  exports.WorkOsWidgets = WorkOsWidgets;
60
+ const QueryClientProviderImpl = ({ client: providedClient, children, }) => {
61
+ let queryClient;
62
+ if (providedClient) {
63
+ queryClient = providedClient;
64
+ }
65
+ else if (queryClientInternal) {
66
+ queryClient = queryClientInternal;
67
+ }
68
+ else {
69
+ queryClientInternal = new react_query_1.QueryClient();
70
+ queryClient = queryClientInternal;
71
+ }
72
+ const client = (0, react_query_1.useQueryClient)(queryClient);
73
+ if (Object.is(client, providedClient)) {
74
+ // No need for a new context provider if the user provided the client to
75
+ // their own provider, which has already mounted the client.
76
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children });
77
+ }
78
+ return (0, jsx_runtime_1.jsx)(react_query_1.QueryClientProvider, { client: client, children: children });
79
+ };
60
80
  //# sourceMappingURL=workos-widgets.client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workos-widgets.client.js","sourceRoot":"","sources":["../../src/workos-widgets.client.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEb,6CAAwD;AAExD,uDAAyE;AACzE,gDAAsB;AACtB,6CAA+B;AAC/B,uCAAkD;AAClD,6CAAwD;AAExD,2DAAuD;AAEvD,MAAM,WAAW,GAAG,IAAI,yBAAW,EAAE,CAAC;AAe/B,MAAM,aAAa,GAAiC,CAAC,EAC1D,QAAQ,GAAG,EAAE,EACb,SAAS,EACT,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,gBAAgB,EAAE,GAAG,EAAE,EAC/C,KAAK,GAAG,EAAE,EACV,QAAQ,EACR,WAAW,GAAG,6BAAoB,EAClC,IAAI,GAAG,IAAI,EACX,KAAK,GAAG,IAAI,GACb,EAAE,EAAE;IACH,MAAM,WAAW,GAAG,CAClB,UAAU;QACR,CAAC,CAAC;YACE,uBAAuB,EAAE,UAAU;YACnC,GAAG,KAAK;SACT;QACH,CAAC,CAAC,KAAK,CACa,CAAC;IAEzB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACpC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CACjB,GAAG,EACH,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACxE,CAAC;YACF,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CACX,8HAA8H,CAC/H,CAAC;YACF,OAAO,WAAW,6BAAoB,EAAE,CAAC;QAC3C,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAE/B,OAAO,CACL,uBAAC,iCAAmB,IAAC,MAAM,EAAE,WAAW,YACtC,uBAAC,cAAW,OACN,gBAAgB,EACpB,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,IAAA,cAAE,EAAC,IAAA,2BAAmB,EAAC,MAAM,CAAC,EAAE,SAAS,CAAC,YAErD,uBAAC,gCAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,YACrD,QAAQ,GACe,GACd,GACM,CACvB,CAAC;AACJ,CAAC,CAAC;AA/CW,QAAA,aAAa,iBA+CxB"}
1
+ {"version":3,"file":"workos-widgets.client.js","sourceRoot":"","sources":["../../src/workos-widgets.client.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEb,6CAAwD;AAExD,uDAI+B;AAC/B,gDAAsB;AACtB,6CAA+B;AAC/B,uCAAkD;AAClD,6CAAwD;AAExD,2DAAuD;AAEvD,IAAI,mBAA4C,CAAC;AAoB1C,MAAM,aAAa,GAAiC,CAAC,EAC1D,QAAQ,GAAG,EAAE,EACb,SAAS,EACT,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,gBAAgB,EAAE,GAAG,EAAE,EAC/C,KAAK,GAAG,EAAE,EACV,QAAQ,EACR,WAAW,GAAG,6BAAoB,EAClC,IAAI,GAAG,IAAI,EACX,KAAK,GAAG,IAAI,EACZ,WAAW,GACZ,EAAE,EAAE;IACH,MAAM,WAAW,GAAG,CAClB,UAAU;QACR,CAAC,CAAC;YACE,uBAAuB,EAAE,UAAU;YACnC,GAAG,KAAK;SACT;QACH,CAAC,CAAC,KAAK,CACa,CAAC;IAEzB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACpC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CACjB,GAAG,EACH,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACxE,CAAC;YACF,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CACX,8HAA8H,CAC/H,CAAC;YACF,OAAO,WAAW,6BAAoB,EAAE,CAAC;QAC3C,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAE/B,OAAO,CACL,uBAAC,uBAAuB,IAAC,MAAM,EAAE,WAAW,YAC1C,uBAAC,cAAW,OACN,gBAAgB,EACpB,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,IAAA,cAAE,EAAC,IAAA,2BAAmB,EAAC,MAAM,CAAC,EAAE,SAAS,CAAC,YAErD,uBAAC,gCAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,YACrD,QAAQ,GACe,GACd,GACU,CAC3B,CAAC;AACJ,CAAC,CAAC;AAhDW,QAAA,aAAa,iBAgDxB;AAEF,MAAM,uBAAuB,GAAG,CAAC,EAC/B,MAAM,EAAE,cAAc,EACtB,QAAQ,GAIT,EAAE,EAAE;IACH,IAAI,WAAwB,CAAC;IAC7B,IAAI,cAAc,EAAE,CAAC;QACnB,WAAW,GAAG,cAAc,CAAC;IAC/B,CAAC;SAAM,IAAI,mBAAmB,EAAE,CAAC;QAC/B,WAAW,GAAG,mBAAmB,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,mBAAmB,GAAG,IAAI,yBAAW,EAAE,CAAC;QACxC,WAAW,GAAG,mBAAmB,CAAC;IACpC,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,4BAAc,EAAC,WAAW,CAAC,CAAC;IAC3C,IAAI,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,CAAC;QACtC,wEAAwE;QACxE,4DAA4D;QAC5D,OAAO,2DAAG,QAAQ,GAAI,CAAC;IACzB,CAAC;IAED,OAAO,uBAAC,iCAAmB,IAAC,MAAM,EAAE,MAAM,YAAG,QAAQ,GAAuB,CAAC;AAC/E,CAAC,CAAC"}
@@ -7,11 +7,20 @@ export type OrganizationSwitcherPassthroughProps = {
7
7
  variant?: OrganizationSwitcherVariant;
8
8
  organizationLabel?: string | null;
9
9
  children?: React.ReactNode;
10
+ /**
11
+ * Choose where to truncate organization name in the trigger and dropdown
12
+ * items.
13
+ *
14
+ * - `right`: Truncate the right side of the organization name
15
+ * - `middle`: Truncate the middle of the organization name, trying to keep
16
+ * words whole
17
+ */
18
+ truncateBehavior?: "right" | "middle";
10
19
  };
11
20
  export interface OrganizationSwitcherProps extends OrganizationSwitcherPassthroughProps {
12
21
  organizations: OrganizationInfo[];
13
22
  }
14
- export declare const OrganizationSwitcher: ({ organizations, switchToOrganization, variant, organizationLabel, children, }: OrganizationSwitcherProps) => import("react/jsx-runtime").JSX.Element | null;
23
+ export declare const OrganizationSwitcher: ({ organizations, switchToOrganization, variant, organizationLabel, truncateBehavior, children, }: OrganizationSwitcherProps) => import("react/jsx-runtime").JSX.Element | null;
15
24
  export declare function OrganizationSwitcherLoading({ variant, organizations, }: {
16
25
  variant?: OrganizationSwitcherVariant;
17
26
  organizations: OrganizationInfo[];
@@ -1 +1 @@
1
- {"version":3,"file":"organization-switcher.d.ts","sourceRoot":"","sources":["../../../src/lib/organization-switcher.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE9E,KAAK,2BAA2B,GAAG,OAAO,GAAG,SAAS,CAAC;AAGvD,MAAM,MAAM,oCAAoC,GAAG;IACjD,oBAAoB,EAAE,CAAC,EACrB,cAAc,GACf,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;KACxB,KAAK,IAAI,CAAC;IAEX,OAAO,CAAC,EAAE,2BAA2B,CAAC;IACtC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,WAAW,yBACf,SAAQ,oCAAoC;IAC5C,aAAa,EAAE,gBAAgB,EAAE,CAAC;CACnC;AAED,eAAO,MAAM,oBAAoB,mFAM9B,yBAAyB,mDAiF3B,CAAC;AAEF,wBAAgB,2BAA2B,CAAC,EAC1C,OAAmB,EACnB,aAAa,GACd,EAAE;IACD,OAAO,CAAC,EAAE,2BAA2B,CAAC;IACtC,aAAa,EAAE,gBAAgB,EAAE,CAAC;CACnC,2CAgBA;AAED,UAAU,8BAA8B;IACtC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;CAC5C;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,8BAA8B,QAG1E"}
1
+ {"version":3,"file":"organization-switcher.d.ts","sourceRoot":"","sources":["../../../src/lib/organization-switcher.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE9E,KAAK,2BAA2B,GAAG,OAAO,GAAG,SAAS,CAAC;AAGvD,MAAM,MAAM,oCAAoC,GAAG;IACjD,oBAAoB,EAAE,CAAC,EACrB,cAAc,GACf,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;KACxB,KAAK,IAAI,CAAC;IAEX,OAAO,CAAC,EAAE,2BAA2B,CAAC;IACtC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CACvC,CAAC;AAEF,MAAM,WAAW,yBACf,SAAQ,oCAAoC;IAC5C,aAAa,EAAE,gBAAgB,EAAE,CAAC;CACnC;AAED,eAAO,MAAM,oBAAoB,qGAO9B,yBAAyB,mDA8F3B,CAAC;AAEF,wBAAgB,2BAA2B,CAAC,EAC1C,OAAmB,EACnB,aAAa,GACd,EAAE;IACD,OAAO,CAAC,EAAE,2BAA2B,CAAC;IACtC,aAAa,EAAE,gBAAgB,EAAE,CAAC;CACnC,2CAgBA;AAED,UAAU,8BAA8B;IACtC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;CAC5C;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,8BAA8B,QAG1E"}
@@ -2,17 +2,17 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { CheckIcon } from "@radix-ui/react-icons";
4
4
  import { Box, Button, ChevronDownIcon, DropdownMenu, Flex, Skeleton, Text, VisuallyHidden, } from "@radix-ui/themes";
5
- export const OrganizationSwitcher = ({ organizations, switchToOrganization, variant = "outline", organizationLabel = "Organizations", children, }) => {
5
+ export const OrganizationSwitcher = ({ organizations, switchToOrganization, variant = "outline", organizationLabel = "Organizations", truncateBehavior = "right", children, }) => {
6
6
  const currentOrganization = organizations.find((organization) => organization.current);
7
7
  // Possible if the user has no organizations - we should figure out what to do in this case
8
8
  if (!currentOrganization) {
9
9
  return null;
10
10
  }
11
- return (_jsxs(DropdownMenu.Root, { children: [_jsx(DropdownMenu.Trigger, { children: _jsx(Button, { color: "gray", variant: variant, className: "OrganizationSwitcherTrigger", children: _jsxs(Flex, { align: "center", justify: "between", gap: "2", flexGrow: "1", children: [_jsx(Text, { children: currentOrganization.name }), _jsx(DropdownMenu.TriggerIcon, {})] }) }) }), _jsxs(DropdownMenu.Content, { children: [_jsxs(DropdownMenu.Group, { children: [organizationLabel ? (_jsx(DropdownMenu.Label, { children: _jsx(Text, { children: organizationLabel }) })) : null, organizations.map((organization) => (_jsx(Flex, { asChild: true, pr: "2", maxWidth: "280px", minWidth: "180px", children: _jsx(DropdownMenu.Item, { onClick: () => {
11
+ return (_jsxs(DropdownMenu.Root, { children: [_jsx(DropdownMenu.Trigger, { children: _jsx(Button, { color: "gray", variant: variant, className: "OrganizationSwitcherTrigger", children: _jsxs(Flex, { align: "center", justify: "between", gap: "2", flexGrow: "1", overflow: "hidden", minWidth: "0", children: [_jsx(TruncatedOrganizationName, { organizationName: currentOrganization.name, truncateBehavior: truncateBehavior }), _jsx(Flex, { asChild: true, flexShrink: "0", children: _jsx(DropdownMenu.TriggerIcon, {}) })] }) }) }), _jsxs(DropdownMenu.Content, { children: [_jsxs(DropdownMenu.Group, { children: [organizationLabel ? (_jsx(DropdownMenu.Label, { children: _jsx(Text, { children: organizationLabel }) })) : null, organizations.map((organization) => (_jsx(Flex, { asChild: true, pr: "2", maxWidth: "280px", minWidth: "180px", children: _jsx(DropdownMenu.Item, { onClick: () => {
12
12
  if (organization.id !== currentOrganization.id) {
13
13
  switchToOrganization({ organizationId: organization.id });
14
14
  }
15
- }, children: _jsxs(Flex, { justify: "between", align: "center", gap: "4", flexGrow: "1", overflow: "hidden", children: [_jsxs(Text, { truncate: true, children: [organization.name, organization.current && (_jsx(VisuallyHidden, { children: " (current)" }))] }), _jsx(Flex, { "aria-hidden": true, align: "center", justify: "center", flexShrink: "0", children: organization.current ? (_jsx(CheckIcon, { width: "18px", height: "18px" })) : (
15
+ }, children: _jsxs(Flex, { justify: "between", align: "center", gap: "4", flexGrow: "1", overflow: "hidden", children: [_jsx(TruncatedOrganizationName, { organizationName: organization.name, truncateBehavior: truncateBehavior }), organization.current && (_jsx(VisuallyHidden, { children: " (current)" })), _jsx(Flex, { "aria-hidden": true, align: "center", justify: "center", flexShrink: "0", children: organization.current ? (_jsx(CheckIcon, { width: "18px", height: "18px" })) : (
16
16
  // make the extra space for
17
17
  _jsx(Box, { width: "18px", height: "18px" })) })] }) }) }, organization.id)))] }), children] })] }));
18
18
  };
@@ -26,4 +26,32 @@ export function OrganizationSwitcherError(_) {
26
26
  // TODO: consider other error state options
27
27
  return null;
28
28
  }
29
+ const MAX_TRUNCATED_SUFFIX_LENGTH = 10;
30
+ const MIN_TRUNCATED_SUFFIX_LENGTH = 3;
31
+ const WHITE_SPACE_REGEX = /\s/;
32
+ const getSplitPosition = (organizationName) => {
33
+ if (organizationName.length <= MAX_TRUNCATED_SUFFIX_LENGTH) {
34
+ return organizationName.length;
35
+ }
36
+ for (let i = organizationName.length - MAX_TRUNCATED_SUFFIX_LENGTH; i < organizationName.length - MIN_TRUNCATED_SUFFIX_LENGTH; i++) {
37
+ if (WHITE_SPACE_REGEX.test(organizationName[i - 1])) {
38
+ return i;
39
+ }
40
+ }
41
+ return organizationName.length - MAX_TRUNCATED_SUFFIX_LENGTH;
42
+ };
43
+ const splitOrganizationName = (organizationName) => {
44
+ const splitPosition = getSplitPosition(organizationName);
45
+ return [
46
+ organizationName.slice(0, splitPosition),
47
+ organizationName.slice(splitPosition),
48
+ ];
49
+ };
50
+ const TruncatedOrganizationName = ({ organizationName, truncateBehavior, }) => {
51
+ if (truncateBehavior === "right") {
52
+ return _jsx(Text, { truncate: true, children: organizationName });
53
+ }
54
+ const [organizationNameLeft, organizationNameRight] = splitOrganizationName(organizationName);
55
+ return (_jsxs(Flex, { overflow: "hidden", children: [_jsx(VisuallyHidden, { children: _jsx(Text, { children: organizationName }) }), _jsx(Text, { "aria-hidden": true, truncate: true, style: { whiteSpace: "pre" }, children: organizationNameLeft }), _jsx(Text, { "aria-hidden": true, children: organizationNameRight })] }));
56
+ };
29
57
  //# sourceMappingURL=organization-switcher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"organization-switcher.js","sourceRoot":"","sources":["../../../src/lib/organization-switcher.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EACL,GAAG,EACH,MAAM,EACN,eAAe,EACf,YAAY,EACZ,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,cAAc,GACf,MAAM,kBAAkB,CAAC;AAuB1B,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,aAAa,EACb,oBAAoB,EACpB,OAAO,GAAG,SAAS,EACnB,iBAAiB,GAAG,eAAe,EACnC,QAAQ,GACkB,EAAE,EAAE;IAC9B,MAAM,mBAAmB,GAAG,aAAa,CAAC,IAAI,CAC5C,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CACvC,CAAC;IAEF,2FAA2F;IAC3F,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,MAAC,YAAY,CAAC,IAAI,eAChB,KAAC,YAAY,CAAC,OAAO,cACnB,KAAC,MAAM,IACL,KAAK,EAAC,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,6BAA6B,YAEvC,MAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,OAAO,EAAC,SAAS,EAAC,GAAG,EAAC,GAAG,EAAC,QAAQ,EAAC,GAAG,aACzD,KAAC,IAAI,cAAE,mBAAmB,CAAC,IAAI,GAAQ,EACvC,KAAC,YAAY,CAAC,WAAW,KAAG,IACvB,GACA,GACY,EACvB,MAAC,YAAY,CAAC,OAAO,eACnB,MAAC,YAAY,CAAC,KAAK,eAChB,iBAAiB,CAAC,CAAC,CAAC,CACnB,KAAC,YAAY,CAAC,KAAK,cACjB,KAAC,IAAI,cAAE,iBAAiB,GAAQ,GACb,CACtB,CAAC,CAAC,CAAC,IAAI,EACP,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CACnC,KAAC,IAAI,IAEH,OAAO,QACP,EAAE,EAAC,GAAG,EACN,QAAQ,EAAC,OAAO,EAChB,QAAQ,EAAC,OAAO,YAEhB,KAAC,YAAY,CAAC,IAAI,IAChB,OAAO,EAAE,GAAG,EAAE;wCACZ,IAAI,YAAY,CAAC,EAAE,KAAK,mBAAmB,CAAC,EAAE,EAAE,CAAC;4CAC/C,oBAAoB,CAAC,EAAE,cAAc,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;wCAC5D,CAAC;oCACH,CAAC,YAED,MAAC,IAAI,IACH,OAAO,EAAC,SAAS,EACjB,KAAK,EAAC,QAAQ,EACd,GAAG,EAAC,GAAG,EACP,QAAQ,EAAC,GAAG,EACZ,QAAQ,EAAC,QAAQ,aAEjB,MAAC,IAAI,IAAC,QAAQ,mBACX,YAAY,CAAC,IAAI,EACjB,YAAY,CAAC,OAAO,IAAI,CACvB,KAAC,cAAc,6BAA4B,CAC5C,IACI,EACP,KAAC,IAAI,yBAEH,KAAK,EAAC,QAAQ,EACd,OAAO,EAAC,QAAQ,EAChB,UAAU,EAAC,GAAG,YAEb,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CACtB,KAAC,SAAS,IAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,GAAG,CACzC,CAAC,CAAC,CAAC;gDACF,2BAA2B;gDAC3B,KAAC,GAAG,IAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,GAAG,CACnC,GACI,IACF,GACW,IAxCf,YAAY,CAAC,EAAE,CAyCf,CACR,CAAC,IACiB,EACpB,QAAQ,IACY,IACL,CACrB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,2BAA2B,CAAC,EAC1C,OAAO,GAAG,SAAS,EACnB,aAAa,GAId;IACC,MAAM,mBAAmB,GAAG,aAAa,CAAC,IAAI,CAC5C,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CACvC,CAAC;IAEF,OAAO;IACL,kEAAkE;IAClE,KAAC,MAAM,IAAC,KAAK,EAAC,MAAM,EAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,kBAC7C,MAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,GAAG,EAAC,GAAG,aAC1B,KAAC,QAAQ,IAAC,OAAO,EAAE,CAAC,mBAAmB,YACrC,KAAC,IAAI,cAAE,mBAAmB,EAAE,IAAI,IAAI,YAAY,GAAQ,GAC/C,EACX,KAAC,eAAe,KAAG,IACd,GACA,CACV,CAAC;AACJ,CAAC;AAMD,MAAM,UAAU,yBAAyB,CAAC,CAAiC;IACzE,2CAA2C;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"organization-switcher.js","sourceRoot":"","sources":["../../../src/lib/organization-switcher.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { GetPropDefTypes, themePropDefs } from "@radix-ui/themes/props";
2
+ import { QueryClient } from "@tanstack/react-query";
2
3
  import * as React from "react";
3
4
  import type { Elements } from "./lib/elements";
4
5
  export interface WorkOsWidgetsProps {
@@ -12,6 +13,11 @@ export interface WorkOsWidgetsProps {
12
13
  apiHostname?: string;
13
14
  port?: number | null;
14
15
  https?: boolean;
16
+ /**
17
+ * Optional query client for users who are already using Tanstack Query. If
18
+ * not provided, a new query client will be created and mounted internally.
19
+ */
20
+ queryClient?: QueryClient;
15
21
  }
16
22
  export declare const WorkOsWidgets: React.FC<WorkOsWidgetsProps>;
17
23
  //# sourceMappingURL=workos-widgets.client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workos-widgets.client.d.ts","sourceRoot":"","sources":["../../src/workos-widgets.client.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG7E,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK/C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,aAAa,CAAC,EAAE,SAAS,CAAC,GAAG;QAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA+CtD,CAAC"}
1
+ {"version":3,"file":"workos-widgets.client.d.ts","sourceRoot":"","sources":["../../src/workos-widgets.client.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EACL,WAAW,EAGZ,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK/C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,aAAa,CAAC,EAAE,SAAS,CAAC,GAAG;QAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAgDtD,CAAC"}
@@ -1,14 +1,14 @@
1
1
  "use client";
2
- import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { Theme as RadixThemes } from "@radix-ui/themes";
4
- import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
4
+ import { QueryClient, QueryClientProvider, useQueryClient, } from "@tanstack/react-query";
5
5
  import cx from "clsx";
6
6
  import * as React from "react";
7
7
  import { namespaceClassNames } from "./lib/utils";
8
8
  import { DEFAULT_API_HOSTNAME } from "./lib/api/config";
9
9
  import { WidgetsContext } from "./lib/widgets-context";
10
- const queryClient = new QueryClient();
11
- export const WorkOsWidgets = ({ elements = {}, className, theme: { fontFamily, ...radixThemesProps } = {}, style = {}, children, apiHostname = DEFAULT_API_HOSTNAME, port = null, https = true, }) => {
10
+ let queryClientInternal;
11
+ export const WorkOsWidgets = ({ elements = {}, className, theme: { fontFamily, ...radixThemesProps } = {}, style = {}, children, apiHostname = DEFAULT_API_HOSTNAME, port = null, https = true, queryClient, }) => {
12
12
  const customStyle = (fontFamily
13
13
  ? {
14
14
  "--default-font-family": fontFamily,
@@ -25,6 +25,26 @@ export const WorkOsWidgets = ({ elements = {}, className, theme: { fontFamily, .
25
25
  return `https://${DEFAULT_API_HOSTNAME}`;
26
26
  }
27
27
  }, [apiHostname, https, port]);
28
- return (_jsx(QueryClientProvider, { client: queryClient, children: _jsx(RadixThemes, { ...radixThemesProps, style: customStyle, className: cx(namespaceClassNames("root"), className), children: _jsx(WidgetsContext.Provider, { value: { elements, apiBaseUrl }, children: children }) }) }));
28
+ return (_jsx(QueryClientProviderImpl, { client: queryClient, children: _jsx(RadixThemes, { ...radixThemesProps, style: customStyle, className: cx(namespaceClassNames("root"), className), children: _jsx(WidgetsContext.Provider, { value: { elements, apiBaseUrl }, children: children }) }) }));
29
+ };
30
+ const QueryClientProviderImpl = ({ client: providedClient, children, }) => {
31
+ let queryClient;
32
+ if (providedClient) {
33
+ queryClient = providedClient;
34
+ }
35
+ else if (queryClientInternal) {
36
+ queryClient = queryClientInternal;
37
+ }
38
+ else {
39
+ queryClientInternal = new QueryClient();
40
+ queryClient = queryClientInternal;
41
+ }
42
+ const client = useQueryClient(queryClient);
43
+ if (Object.is(client, providedClient)) {
44
+ // No need for a new context provider if the user provided the client to
45
+ // their own provider, which has already mounted the client.
46
+ return _jsx(_Fragment, { children: children });
47
+ }
48
+ return _jsx(QueryClientProvider, { client: client, children: children });
29
49
  };
30
50
  //# sourceMappingURL=workos-widgets.client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workos-widgets.client.js","sourceRoot":"","sources":["../../src/workos-widgets.client.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAetC,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EAC1D,QAAQ,GAAG,EAAE,EACb,SAAS,EACT,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,gBAAgB,EAAE,GAAG,EAAE,EAC/C,KAAK,GAAG,EAAE,EACV,QAAQ,EACR,WAAW,GAAG,oBAAoB,EAClC,IAAI,GAAG,IAAI,EACX,KAAK,GAAG,IAAI,GACb,EAAE,EAAE;IACH,MAAM,WAAW,GAAG,CAClB,UAAU;QACR,CAAC,CAAC;YACE,uBAAuB,EAAE,UAAU;YACnC,GAAG,KAAK;SACT;QACH,CAAC,CAAC,KAAK,CACa,CAAC;IAEzB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACpC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CACjB,GAAG,EACH,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACxE,CAAC;YACF,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CACX,8HAA8H,CAC/H,CAAC;YACF,OAAO,WAAW,oBAAoB,EAAE,CAAC;QAC3C,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAE/B,OAAO,CACL,KAAC,mBAAmB,IAAC,MAAM,EAAE,WAAW,YACtC,KAAC,WAAW,OACN,gBAAgB,EACpB,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,YAErD,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,YACrD,QAAQ,GACe,GACd,GACM,CACvB,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"workos-widgets.client.js","sourceRoot":"","sources":["../../src/workos-widgets.client.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workos-inc/widgets",
3
- "version": "1.1.5",
3
+ "version": "1.2.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "exports": {
@@ -24,14 +24,10 @@
24
24
  "default": "./dist/cjs/*.client.js"
25
25
  }
26
26
  },
27
- "./*.css": {
28
- "import": "./src/*.css",
29
- "require": "./src/*.css"
30
- }
27
+ "./*.css": "./dist/css/*.css"
31
28
  },
32
29
  "files": [
33
30
  "dist",
34
- "src",
35
31
  "CHANGELOG.md",
36
32
  "LICENSE",
37
33
  "README.md"
@@ -62,6 +58,7 @@
62
58
  "@types/node": "^20.16.6",
63
59
  "@types/react": "^18.3.12",
64
60
  "@types/react-dom": "^18.3.1",
61
+ "fast-glob": "^3.3.3",
65
62
  "orval": "^7.5.0",
66
63
  "react": "^18.3.1",
67
64
  "react-dom": "^18.3.1",
@@ -76,9 +73,11 @@
76
73
  }
77
74
  },
78
75
  "scripts": {
79
- "build": "npm run clean:dist && tsc -b ./tsconfig.cjs.json ./tsconfig.esm.json",
80
- "build:ci": "tsc --noEmit",
81
- "clean": "rm -rf .turbo && rm -rf node_modules && npm run clean:dist",
76
+ "build": "pnpm build:js && pnpm build:css",
77
+ "build:js": "pnpm clean:dist && tsc -b ./tsconfig.cjs.json ./tsconfig.esm.json",
78
+ "build:css": "node ./scripts/build-css.js",
79
+ "build:ci": "pnpm build:css && tsc --noEmit",
80
+ "clean": "rm -rf .turbo && rm -rf node_modules && pnpm clean:dist",
82
81
  "clean:dist": "rm -rf dist",
83
82
  "generate-api": "orval --config ./orval.config.ts"
84
83
  },
@@ -1,158 +0,0 @@
1
- import * as React from "react";
2
-
3
- export type WidgetType =
4
- | "user-management"
5
- | "organization-switcher"
6
- | "user-sessions"
7
- | "user-security"
8
- | "user-profile";
9
-
10
- export type AuthToken = string | (() => Promise<string>);
11
-
12
- interface ElevatedAccess {
13
- token: string;
14
- expiresAt: string;
15
- }
16
-
17
- interface ApiConfig {
18
- authToken: Promise<string> | string;
19
- authTokenQueryKey: string;
20
- baseUrl: string;
21
- widgetType: WidgetType;
22
- elevatedAccess?: ElevatedAccess;
23
- setElevatedAccess: (elevatedAccess?: ElevatedAccess) => void;
24
- }
25
-
26
- const ApiContext = React.createContext<ApiConfig | undefined>(undefined);
27
-
28
- interface ApiProviderProps {
29
- authToken: AuthToken;
30
- baseUrl: string;
31
- children: React.ReactNode;
32
- widgetType: WidgetType;
33
- }
34
-
35
- export const ApiProvider = ({
36
- authToken,
37
- baseUrl,
38
- children,
39
- widgetType,
40
- }: ApiProviderProps) => {
41
- const authTokenPromiseOrString =
42
- typeof authToken === "string" ? authToken : authToken();
43
- const [elevatedAccess, setElevatedAccess] = React.useState<ElevatedAccess>();
44
- const elevatedAccessTimeout = React.useRef<NodeJS.Timeout>();
45
-
46
- // This effect manages the expiration of elevated access tokens
47
- // When an elevated access token is present, it checks every 30 seconds if the token has expired
48
- // If the token has expired (current time > expiration time), it clears the elevated access
49
- React.useEffect(() => {
50
- if (elevatedAccessTimeout.current) {
51
- clearInterval(elevatedAccessTimeout.current);
52
- }
53
-
54
- if (elevatedAccess) {
55
- elevatedAccessTimeout.current = setInterval(() => {
56
- const now = new Date();
57
- const expiresAtDate = new Date(elevatedAccess.expiresAt);
58
-
59
- // Reset the elevated access if it has expired
60
- if (now > expiresAtDate) {
61
- setElevatedAccess(undefined);
62
- }
63
- }, 30_000); // every 30 seconds
64
- }
65
-
66
- return () => {
67
- if (elevatedAccessTimeout.current) {
68
- clearInterval(elevatedAccessTimeout.current);
69
- }
70
- };
71
- }, [elevatedAccess]);
72
-
73
- const value = React.useMemo(
74
- () => ({
75
- authToken: authTokenPromiseOrString,
76
- authTokenQueryKey: getAuthTokenQueryKey(authTokenPromiseOrString),
77
- baseUrl,
78
- elevatedAccess,
79
- setElevatedAccess,
80
- widgetType,
81
- }),
82
- [
83
- authTokenPromiseOrString,
84
- baseUrl,
85
- elevatedAccess,
86
- setElevatedAccess,
87
- widgetType,
88
- ],
89
- );
90
-
91
- return <ApiContext.Provider value={value}>{children}</ApiContext.Provider>;
92
- };
93
-
94
- export const useApi = () => {
95
- const context = React.useContext(ApiContext);
96
-
97
- if (context === undefined) {
98
- throw new Error("useApi must be used within an ApiProvider");
99
- }
100
-
101
- return context;
102
- };
103
-
104
- export const useElevatedAccessToken = () => {
105
- const { elevatedAccess, setElevatedAccess } = useApi();
106
-
107
- return { elevatedAccess, setElevatedAccess };
108
- };
109
-
110
- // Map promises to a UUID that they can be identified by
111
- const PromiseKey = new WeakMap<Promise<string>, string>();
112
- /*
113
- *
114
- * @param getAccessToken - Async function that returns a promise that resolves to a string
115
- * @returns a resolved string or null from the access token promise
116
- */
117
- function getAuthTokenQueryKey(
118
- authTokenPromiseOrString: Promise<string> | string,
119
- ): string {
120
- // Need to go by equality of the promise to avoid scenarios where
121
- // 1. The promise is the same, but the function changes
122
- // 2. The function is the same, but the promise is different ⚠️
123
- //
124
- // This does have the unfortunate side effect where if the function result
125
- // isn't memoized somehow, then it will invalidate the query on every render.
126
- // This doesn't occur with the current use case of getAccessToken from
127
- // useAuth, but could in a custom implementation.
128
- //
129
- // Other things I explored:
130
- // 1. Removing promise api, and force user to resolve the promise
131
- // themselves. The user can already do this with the string API, so
132
- // it's not necessary, and they could run into issues 1, or 2 if
133
- // implemented wrong.
134
- // 2. Memoizing the function - this results in issue 2, where the function
135
- // is static, but the promise changes. I believe this actually is the
136
- // case with useAuth since it only sets the client once on initialization,
137
- // and binds the function to the client after that promise resolves.
138
-
139
- if (typeof authTokenPromiseOrString === "string") {
140
- return authTokenPromiseOrString;
141
- }
142
-
143
- const authTokenPromise = authTokenPromiseOrString;
144
-
145
- // Cannot memoize on the function because it could remain the same while
146
- // returning a different promise (and useAuth behaves this way).
147
-
148
- const promiseKey = PromiseKey.get(authTokenPromise);
149
-
150
- // Side effect, but we we're using a weak map, so it should be pretty safe
151
- if (!promiseKey) {
152
- const newPromiseKey = `${Math.random()}`;
153
- PromiseKey.set(authTokenPromise, newPromiseKey);
154
- return newPromiseKey;
155
- } else {
156
- return promiseKey;
157
- }
158
- }
@@ -1 +0,0 @@
1
- export const WIDGETS_API_VERSION = "1";