@workos-inc/widgets 1.5.0 → 1.6.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 (224) hide show
  1. package/CHANGELOG.md +30 -8
  2. package/dist/cjs/admin-portal-domain-verification.client.cjs +34 -20
  3. package/dist/cjs/admin-portal-domain-verification.client.cjs.map +1 -1
  4. package/dist/cjs/admin-portal-domain-verification.client.d.cts +3 -2
  5. package/dist/cjs/{admin-portal-sso-connection-client.cjs → admin-portal-sso-connection.client.cjs} +61 -35
  6. package/dist/cjs/admin-portal-sso-connection.client.cjs.map +1 -0
  7. package/dist/cjs/admin-portal-sso-connection.client.d.cts +16 -0
  8. package/dist/cjs/api/api-provider.cjs +27 -19
  9. package/dist/cjs/api/api-provider.cjs.map +1 -1
  10. package/dist/cjs/api/api-provider.d.cts +5 -4
  11. package/dist/cjs/api/endpoint.cjs +62 -2
  12. package/dist/cjs/api/endpoint.cjs.map +1 -1
  13. package/dist/cjs/api/endpoint.d.cts +62 -1
  14. package/dist/cjs/api/utils.cjs +10 -0
  15. package/dist/cjs/api/utils.cjs.map +1 -1
  16. package/dist/cjs/api/utils.d.cts +7 -2
  17. package/dist/cjs/api/widgets-api-client.cjs +11 -5
  18. package/dist/cjs/api/widgets-api-client.cjs.map +1 -1
  19. package/dist/cjs/{api-keys-client.cjs → api-keys.client.cjs} +45 -33
  20. package/dist/cjs/api-keys.client.cjs.map +1 -0
  21. package/dist/cjs/api-keys.client.d.cts +15 -0
  22. package/dist/cjs/index.cjs +9 -2
  23. package/dist/cjs/index.cjs.map +1 -1
  24. package/dist/cjs/index.d.cts +6 -2
  25. package/dist/cjs/lib/add-mfa-dialog.cjs +1 -1
  26. package/dist/cjs/lib/add-mfa-dialog.cjs.map +1 -1
  27. package/dist/cjs/lib/admin-portal-domain-verification.cjs +18 -12
  28. package/dist/cjs/lib/admin-portal-domain-verification.cjs.map +1 -1
  29. package/dist/cjs/lib/admin-portal-domain-verification.d.cts +10 -6
  30. package/dist/cjs/lib/admin-portal-sso-connection.cjs +84 -106
  31. package/dist/cjs/lib/admin-portal-sso-connection.cjs.map +1 -1
  32. package/dist/cjs/lib/admin-portal-sso-connection.d.cts +13 -6
  33. package/dist/cjs/lib/api-keys/api-keys.cjs +70 -66
  34. package/dist/cjs/lib/api-keys/api-keys.cjs.map +1 -1
  35. package/dist/cjs/lib/api-keys/api-keys.d.cts +16 -8
  36. package/dist/cjs/lib/card-list.cjs.map +1 -0
  37. package/dist/cjs/lib/constants.cjs +5 -2
  38. package/dist/cjs/lib/constants.cjs.map +1 -1
  39. package/dist/cjs/lib/constants.d.cts +2 -1
  40. package/dist/cjs/lib/elevated-access.cjs.map +1 -1
  41. package/dist/cjs/lib/empty-state.cjs +24 -8
  42. package/dist/cjs/lib/empty-state.cjs.map +1 -1
  43. package/dist/cjs/lib/empty-state.d.cts +6 -2
  44. package/dist/cjs/lib/errors.cjs +1 -1
  45. package/dist/cjs/lib/errors.cjs.map +1 -1
  46. package/dist/cjs/lib/generic-error.cjs +56 -58
  47. package/dist/cjs/lib/generic-error.cjs.map +1 -1
  48. package/dist/cjs/lib/generic-error.d.cts +10 -3
  49. package/dist/cjs/lib/identity-providers.cjs +2 -1
  50. package/dist/cjs/lib/identity-providers.cjs.map +1 -1
  51. package/dist/cjs/lib/identity-providers.d.cts +2 -2
  52. package/dist/cjs/lib/oauth-icons.cjs +12 -7
  53. package/dist/cjs/lib/oauth-icons.cjs.map +1 -1
  54. package/dist/cjs/lib/oauth-icons.d.cts +7 -3
  55. package/dist/cjs/lib/organization-switcher.cjs +62 -9
  56. package/dist/cjs/lib/organization-switcher.cjs.map +1 -1
  57. package/dist/cjs/lib/organization-switcher.d.cts +12 -9
  58. package/dist/cjs/lib/otp-input.cjs +1 -1
  59. package/dist/cjs/lib/otp-input.cjs.map +1 -1
  60. package/dist/cjs/lib/pipes.cjs +343 -0
  61. package/dist/cjs/lib/pipes.cjs.map +1 -0
  62. package/dist/cjs/lib/pipes.d.cts +19 -0
  63. package/dist/cjs/lib/provider-icon.cjs +0 -6
  64. package/dist/cjs/lib/provider-icon.cjs.map +1 -1
  65. package/dist/cjs/lib/provider-icon.d.cts +4 -1
  66. package/dist/cjs/lib/save-button.cjs.map +1 -1
  67. package/dist/cjs/lib/use-permissions.cjs +7 -14
  68. package/dist/cjs/lib/use-permissions.cjs.map +1 -1
  69. package/dist/cjs/lib/use-permissions.d.cts +1 -1
  70. package/dist/cjs/lib/user-profile.cjs +77 -83
  71. package/dist/cjs/lib/user-profile.cjs.map +1 -1
  72. package/dist/cjs/lib/user-profile.d.cts +11 -7
  73. package/dist/cjs/lib/user-security.cjs +31 -25
  74. package/dist/cjs/lib/user-security.cjs.map +1 -1
  75. package/dist/cjs/lib/user-security.d.cts +10 -7
  76. package/dist/cjs/lib/user-sessions.cjs +20 -10
  77. package/dist/cjs/lib/user-sessions.cjs.map +1 -1
  78. package/dist/cjs/lib/user-sessions.d.cts +10 -6
  79. package/dist/cjs/lib/users-management.cjs +224 -216
  80. package/dist/cjs/lib/users-management.cjs.map +1 -1
  81. package/dist/cjs/lib/users-management.d.cts +10 -7
  82. package/dist/cjs/lib/utils.cjs +43 -0
  83. package/dist/cjs/lib/utils.cjs.map +1 -1
  84. package/dist/cjs/lib/utils.d.cts +29 -2
  85. package/dist/cjs/organization-switcher.client.cjs +47 -20
  86. package/dist/cjs/organization-switcher.client.cjs.map +1 -1
  87. package/dist/cjs/organization-switcher.client.d.cts +2 -1
  88. package/dist/cjs/pipes.client.cjs +64 -0
  89. package/dist/cjs/pipes.client.cjs.map +1 -0
  90. package/dist/cjs/pipes.client.d.cts +15 -0
  91. package/dist/cjs/user-profile.client.cjs +29 -16
  92. package/dist/cjs/user-profile.client.cjs.map +1 -1
  93. package/dist/cjs/user-profile.client.d.cts +4 -3
  94. package/dist/cjs/user-security.client.cjs +32 -14
  95. package/dist/cjs/user-security.client.cjs.map +1 -1
  96. package/dist/cjs/user-security.client.d.cts +3 -2
  97. package/dist/cjs/user-sessions.client.cjs +42 -28
  98. package/dist/cjs/user-sessions.client.cjs.map +1 -1
  99. package/dist/cjs/user-sessions.client.d.cts +4 -2
  100. package/dist/cjs/users-management.client.cjs +38 -27
  101. package/dist/cjs/users-management.client.cjs.map +1 -1
  102. package/dist/cjs/users-management.client.d.cts +3 -2
  103. package/dist/cjs/workos-widgets.client.cjs +7 -12
  104. package/dist/cjs/workos-widgets.client.cjs.map +1 -1
  105. package/dist/css/lib/provider-icon.css +16 -11
  106. package/dist/esm/admin-portal-domain-verification.client.d.ts +3 -2
  107. package/dist/esm/admin-portal-domain-verification.client.js +34 -21
  108. package/dist/esm/admin-portal-domain-verification.client.js.map +1 -1
  109. package/dist/esm/admin-portal-sso-connection.client.d.ts +16 -0
  110. package/dist/esm/{admin-portal-sso-connection-client.js → admin-portal-sso-connection.client.js} +61 -36
  111. package/dist/esm/admin-portal-sso-connection.client.js.map +1 -0
  112. package/dist/esm/api/api-provider.d.ts +5 -4
  113. package/dist/esm/api/api-provider.js +26 -19
  114. package/dist/esm/api/api-provider.js.map +1 -1
  115. package/dist/esm/api/endpoint.d.ts +62 -1
  116. package/dist/esm/api/endpoint.js +56 -2
  117. package/dist/esm/api/endpoint.js.map +1 -1
  118. package/dist/esm/api/utils.d.ts +7 -2
  119. package/dist/esm/api/utils.js +9 -0
  120. package/dist/esm/api/utils.js.map +1 -1
  121. package/dist/esm/api/widgets-api-client.js +11 -5
  122. package/dist/esm/api/widgets-api-client.js.map +1 -1
  123. package/dist/esm/api-keys.client.d.ts +15 -0
  124. package/dist/esm/api-keys.client.js +75 -0
  125. package/dist/esm/api-keys.client.js.map +1 -0
  126. package/dist/esm/index.d.ts +6 -2
  127. package/dist/esm/index.js +9 -2
  128. package/dist/esm/index.js.map +1 -1
  129. package/dist/esm/lib/add-mfa-dialog.js +1 -1
  130. package/dist/esm/lib/add-mfa-dialog.js.map +1 -1
  131. package/dist/esm/lib/admin-portal-domain-verification.d.ts +10 -6
  132. package/dist/esm/lib/admin-portal-domain-verification.js +18 -12
  133. package/dist/esm/lib/admin-portal-domain-verification.js.map +1 -1
  134. package/dist/esm/lib/admin-portal-sso-connection.d.ts +13 -6
  135. package/dist/esm/lib/admin-portal-sso-connection.js +88 -107
  136. package/dist/esm/lib/admin-portal-sso-connection.js.map +1 -1
  137. package/dist/esm/lib/api-keys/api-keys.d.ts +16 -8
  138. package/dist/esm/lib/api-keys/api-keys.js +69 -54
  139. package/dist/esm/lib/api-keys/api-keys.js.map +1 -1
  140. package/dist/esm/lib/card-list.js.map +1 -0
  141. package/dist/esm/lib/constants.d.ts +2 -1
  142. package/dist/esm/lib/constants.js +3 -1
  143. package/dist/esm/lib/constants.js.map +1 -1
  144. package/dist/esm/lib/elevated-access.js.map +1 -1
  145. package/dist/esm/lib/empty-state.d.ts +6 -2
  146. package/dist/esm/lib/empty-state.js +24 -8
  147. package/dist/esm/lib/empty-state.js.map +1 -1
  148. package/dist/esm/lib/errors.js +1 -1
  149. package/dist/esm/lib/errors.js.map +1 -1
  150. package/dist/esm/lib/generic-error.d.ts +10 -3
  151. package/dist/esm/lib/generic-error.js +56 -60
  152. package/dist/esm/lib/generic-error.js.map +1 -1
  153. package/dist/esm/lib/identity-providers.d.ts +2 -2
  154. package/dist/esm/lib/identity-providers.js +2 -1
  155. package/dist/esm/lib/identity-providers.js.map +1 -1
  156. package/dist/esm/lib/oauth-icons.d.ts +7 -3
  157. package/dist/esm/lib/oauth-icons.js +11 -6
  158. package/dist/esm/lib/oauth-icons.js.map +1 -1
  159. package/dist/esm/lib/organization-switcher.d.ts +12 -9
  160. package/dist/esm/lib/organization-switcher.js +54 -9
  161. package/dist/esm/lib/organization-switcher.js.map +1 -1
  162. package/dist/esm/lib/otp-input.js +1 -1
  163. package/dist/esm/lib/otp-input.js.map +1 -1
  164. package/dist/esm/lib/pipes.d.ts +19 -0
  165. package/dist/esm/lib/pipes.js +334 -0
  166. package/dist/esm/lib/pipes.js.map +1 -0
  167. package/dist/esm/lib/provider-icon.d.ts +4 -1
  168. package/dist/esm/lib/provider-icon.js +0 -8
  169. package/dist/esm/lib/provider-icon.js.map +1 -1
  170. package/dist/esm/lib/save-button.js.map +1 -1
  171. package/dist/esm/lib/use-permissions.d.ts +1 -1
  172. package/dist/esm/lib/use-permissions.js +8 -15
  173. package/dist/esm/lib/use-permissions.js.map +1 -1
  174. package/dist/esm/lib/user-profile.d.ts +11 -7
  175. package/dist/esm/lib/user-profile.js +82 -75
  176. package/dist/esm/lib/user-profile.js.map +1 -1
  177. package/dist/esm/lib/user-security.d.ts +10 -7
  178. package/dist/esm/lib/user-security.js +35 -26
  179. package/dist/esm/lib/user-security.js.map +1 -1
  180. package/dist/esm/lib/user-sessions.d.ts +10 -6
  181. package/dist/esm/lib/user-sessions.js +21 -10
  182. package/dist/esm/lib/user-sessions.js.map +1 -1
  183. package/dist/esm/lib/users-management.d.ts +10 -7
  184. package/dist/esm/lib/users-management.js +230 -217
  185. package/dist/esm/lib/users-management.js.map +1 -1
  186. package/dist/esm/lib/utils.d.ts +29 -2
  187. package/dist/esm/lib/utils.js +46 -1
  188. package/dist/esm/lib/utils.js.map +1 -1
  189. package/dist/esm/organization-switcher.client.d.ts +2 -1
  190. package/dist/esm/organization-switcher.client.js +47 -21
  191. package/dist/esm/organization-switcher.client.js.map +1 -1
  192. package/dist/esm/pipes.client.d.ts +15 -0
  193. package/dist/esm/pipes.client.js +42 -0
  194. package/dist/esm/pipes.client.js.map +1 -0
  195. package/dist/esm/user-profile.client.d.ts +4 -3
  196. package/dist/esm/user-profile.client.js +29 -17
  197. package/dist/esm/user-profile.client.js.map +1 -1
  198. package/dist/esm/user-security.client.d.ts +3 -2
  199. package/dist/esm/user-security.client.js +32 -15
  200. package/dist/esm/user-security.client.js.map +1 -1
  201. package/dist/esm/user-sessions.client.d.ts +4 -2
  202. package/dist/esm/user-sessions.client.js +43 -30
  203. package/dist/esm/user-sessions.client.js.map +1 -1
  204. package/dist/esm/users-management.client.d.ts +3 -2
  205. package/dist/esm/users-management.client.js +38 -28
  206. package/dist/esm/users-management.client.js.map +1 -1
  207. package/dist/esm/workos-widgets.client.js +7 -12
  208. package/dist/esm/workos-widgets.client.js.map +1 -1
  209. package/package.json +20 -10
  210. package/dist/cjs/admin-portal-sso-connection-client.cjs.map +0 -1
  211. package/dist/cjs/admin-portal-sso-connection-client.d.cts +0 -12
  212. package/dist/cjs/api-keys-client.cjs.map +0 -1
  213. package/dist/cjs/api-keys-client.d.cts +0 -10
  214. package/dist/cjs/card-list.cjs.map +0 -1
  215. package/dist/esm/admin-portal-sso-connection-client.d.ts +0 -12
  216. package/dist/esm/admin-portal-sso-connection-client.js.map +0 -1
  217. package/dist/esm/api-keys-client.d.ts +0 -10
  218. package/dist/esm/api-keys-client.js +0 -65
  219. package/dist/esm/api-keys-client.js.map +0 -1
  220. package/dist/esm/card-list.js.map +0 -1
  221. /package/dist/cjs/{card-list.cjs → lib/card-list.cjs} +0 -0
  222. /package/dist/cjs/{card-list.d.cts → lib/card-list.d.cts} +0 -0
  223. /package/dist/esm/{card-list.d.ts → lib/card-list.d.ts} +0 -0
  224. /package/dist/esm/{card-list.js → lib/card-list.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/user-profile.client.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n UserProfileError,\n UserProfileLoading,\n UserProfile as UserProfilePresentational,\n} from \"./lib/user-profile.js\";\nimport { useIsHydrated } from \"./lib/use-is-hydrated.js\";\nimport { useMe } from \"./api/endpoint.js\";\nimport { ApiProvider, AuthToken } from \"./api/api-provider.js\";\nimport { useWorkOsApiUrl } from \"./lib/widgets-context.js\";\nimport { ErrorBoundary } from \"./lib/error-boundary.js\";\n\nexport interface UserProfileProps {\n authToken: AuthToken;\n}\n\nexport const UserProfile: React.FC<UserProfileProps> = ({ authToken }) => {\n const baseUrl = useWorkOsApiUrl();\n\n return (\n <ApiProvider\n widgetType=\"user-profile\"\n authToken={authToken}\n baseUrl={baseUrl}\n >\n <UserProfileContent />\n </ApiProvider>\n );\n};\n\nexport { UserProfileLoading };\n\nconst UserProfileContent = () => {\n const isHydrated = useIsHydrated();\n const meQuery = useMe();\n\n if (\n // render loading state on the server to prevent FOUC or hydration mismatch\n !isHydrated ||\n meQuery.isLoading\n ) {\n return <UserProfileLoading />;\n }\n\n if (meQuery.isError) {\n return <UserProfileError error={meQuery.error} />;\n }\n\n const user = meQuery.data!;\n\n return (\n <ErrorBoundary FallbackComponent={UserProfileError}>\n <UserProfilePresentational userData={user} />\n </ErrorBoundary>\n );\n};\n"],"mappings":";AA2BM;AAxBN;AAAA,EACE;AAAA,EACA;AAAA,EACA,eAAe;AAAA,OACV;AACP,SAAS,qBAAqB;AAC9B,SAAS,aAAa;AACtB,SAAS,mBAA8B;AACvC,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAMvB,MAAM,cAA0C,CAAC,EAAE,UAAU,MAAM;AACxE,QAAM,UAAU,gBAAgB;AAEhC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,YAAW;AAAA,MACX;AAAA,MACA;AAAA,MAEA,8BAAC,sBAAmB;AAAA;AAAA,EACtB;AAEJ;AAIA,MAAM,qBAAqB,MAAM;AAC/B,QAAM,aAAa,cAAc;AACjC,QAAM,UAAU,MAAM;AAEtB;AAAA;AAAA,IAEE,CAAC,cACD,QAAQ;AAAA,IACR;AACA,WAAO,oBAAC,sBAAmB;AAAA,EAC7B;AAEA,MAAI,QAAQ,SAAS;AACnB,WAAO,oBAAC,oBAAiB,OAAO,QAAQ,OAAO;AAAA,EACjD;AAEA,QAAM,OAAO,QAAQ;AAErB,SACE,oBAAC,iBAAc,mBAAmB,kBAChC,8BAAC,6BAA0B,UAAU,MAAM,GAC7C;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/user-profile.client.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n UserProfileError,\n UserProfileLoading,\n UserProfile as UserProfilePresentational,\n} from \"./lib/user-profile.js\";\nimport type {\n UserProfileErrorProps,\n UserProfileLoadingProps,\n} from \"./lib/user-profile.js\";\nimport { useMe } from \"./api/endpoint.js\";\nimport { ApiProvider, AuthToken, useApiReady } from \"./api/api-provider.js\";\nimport { useWorkOsApiUrl } from \"./lib/widgets-context.js\";\nimport { ErrorBoundary } from \"./lib/error-boundary.js\";\nimport type { WidgetRootDomProps } from \"./lib/utils.js\";\n\ninterface UserProfileProps extends WidgetRootDomProps {\n authToken: AuthToken;\n}\n\nconst UserProfile: React.FC<UserProfileProps> = ({\n authToken,\n ...domProps\n}) => {\n const baseUrl = useWorkOsApiUrl();\n\n return (\n <ErrorBoundary\n fallbackRender={({ error }) => (\n <UserProfileError {...domProps} error={error} />\n )}\n >\n <ApiProvider\n widgetType=\"user-profile\"\n authToken={authToken}\n baseUrl={baseUrl}\n >\n <UserProfileImpl {...domProps} />\n </ApiProvider>\n </ErrorBoundary>\n );\n};\n\nconst UserProfileImpl = (props: WidgetRootDomProps) => {\n const isApiReady = useApiReady();\n const meQuery = useMe();\n\n if (!isApiReady || meQuery.isLoading) {\n return <UserProfileLoading {...props} />;\n }\n\n if (meQuery.isError) {\n return <UserProfileError error={meQuery.error} {...props} />;\n }\n\n const user = meQuery.data!;\n\n return (\n <ErrorBoundary\n fallbackRender={({ error }) => (\n <UserProfileError error={error} {...props} />\n )}\n >\n <UserProfilePresentational userData={user} {...props} />\n </ErrorBoundary>\n );\n};\n\nexport type {\n UserProfileProps,\n UserProfileLoadingProps,\n UserProfileErrorProps,\n};\nexport { UserProfile, UserProfileLoading, UserProfileError };\n"],"mappings":";AA+BQ;AA5BR;AAAA,EACE;AAAA,EACA;AAAA,EACA,eAAe;AAAA,OACV;AAKP,SAAS,aAAa;AACtB,SAAS,aAAwB,mBAAmB;AACpD,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAO9B,MAAM,cAA0C,CAAC;AAAA,EAC/C;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,UAAU,gBAAgB;AAEhC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgB,CAAC,EAAE,MAAM,MACvB,oBAAC,oBAAkB,GAAG,UAAU,OAAc;AAAA,MAGhD;AAAA,QAAC;AAAA;AAAA,UACC,YAAW;AAAA,UACX;AAAA,UACA;AAAA,UAEA,8BAAC,mBAAiB,GAAG,UAAU;AAAA;AAAA,MACjC;AAAA;AAAA,EACF;AAEJ;AAEA,MAAM,kBAAkB,CAAC,UAA8B;AACrD,QAAM,aAAa,YAAY;AAC/B,QAAM,UAAU,MAAM;AAEtB,MAAI,CAAC,cAAc,QAAQ,WAAW;AACpC,WAAO,oBAAC,sBAAoB,GAAG,OAAO;AAAA,EACxC;AAEA,MAAI,QAAQ,SAAS;AACnB,WAAO,oBAAC,oBAAiB,OAAO,QAAQ,OAAQ,GAAG,OAAO;AAAA,EAC5D;AAEA,QAAM,OAAO,QAAQ;AAErB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgB,CAAC,EAAE,MAAM,MACvB,oBAAC,oBAAiB,OAAe,GAAG,OAAO;AAAA,MAG7C,8BAAC,6BAA0B,UAAU,MAAO,GAAG,OAAO;AAAA;AAAA,EACxD;AAEJ;","names":[]}
@@ -1,12 +1,13 @@
1
1
  import * as React from 'react';
2
2
  import { AuthToken } from './api/api-provider.js';
3
- export { UserSecurityLoading } from './lib/user-security.js';
3
+ export { UserSecurityError, UserSecurityErrorProps, UserSecurityLoading, UserSecurityLoadingProps } from './lib/user-security.js';
4
+ import { WidgetRootDomProps } from './lib/utils.js';
4
5
  import 'react/jsx-runtime';
5
6
  import './api/endpoint.js';
6
7
  import '@tanstack/react-query';
7
8
  import './api/widgets-api-client.js';
8
9
 
9
- interface UserSecurityProps {
10
+ interface UserSecurityProps extends WidgetRootDomProps {
10
11
  authToken: AuthToken;
11
12
  }
12
13
  declare const UserSecurity: React.FC<UserSecurityProps>;
@@ -1,46 +1,63 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
- import { ApiProvider } from "./api/api-provider.js";
3
+ import { ApiProvider, useApiReady } from "./api/api-provider.js";
4
4
  import { useAuthenticationInformation } from "./api/endpoint.js";
5
5
  import {
6
6
  UserSecurityError,
7
7
  UserSecurityLoading,
8
8
  UserSecurity as UserSecurityPresentational
9
9
  } from "./lib/user-security.js";
10
- import { useIsHydrated } from "./lib/use-is-hydrated.js";
11
10
  import { useWorkOsApiUrl } from "./lib/widgets-context.js";
12
11
  import { ErrorBoundary } from "./lib/error-boundary.js";
13
- const UserSecurity = ({ authToken }) => {
12
+ const UserSecurity = ({
13
+ authToken,
14
+ ...domProps
15
+ }) => {
14
16
  const baseUrl = useWorkOsApiUrl();
15
17
  return /* @__PURE__ */ jsx(
16
- ApiProvider,
18
+ ErrorBoundary,
17
19
  {
18
- widgetType: "user-security",
19
- authToken,
20
- baseUrl,
21
- children: /* @__PURE__ */ jsx(UserSecurityContent, {})
20
+ fallbackRender: ({ error }) => /* @__PURE__ */ jsx(UserSecurityError, { error, ...domProps }),
21
+ children: /* @__PURE__ */ jsx(
22
+ ApiProvider,
23
+ {
24
+ widgetType: "user-security",
25
+ authToken,
26
+ baseUrl,
27
+ children: /* @__PURE__ */ jsx(UserSecurityImpl, { ...domProps })
28
+ }
29
+ )
22
30
  }
23
31
  );
24
32
  };
25
- const UserSecurityContent = () => {
26
- const isHydrated = useIsHydrated();
33
+ const UserSecurityImpl = (props) => {
34
+ const isApiReady = useApiReady();
27
35
  const {
28
36
  data: settings,
29
37
  isLoading,
30
38
  isError,
31
39
  isSuccess,
32
40
  error
33
- } = useAuthenticationInformation();
34
- if (!isHydrated || isLoading) {
35
- return /* @__PURE__ */ jsx(UserSecurityLoading, {});
41
+ } = useAuthenticationInformation({
42
+ query: { enabled: isApiReady }
43
+ });
44
+ if (!isApiReady || isLoading) {
45
+ return /* @__PURE__ */ jsx(UserSecurityLoading, { ...props });
36
46
  }
37
47
  if (isError || !isSuccess) {
38
- return /* @__PURE__ */ jsx(UserSecurityError, { error });
48
+ return /* @__PURE__ */ jsx(UserSecurityError, { error, ...props });
39
49
  }
40
- return /* @__PURE__ */ jsx(ErrorBoundary, { FallbackComponent: UserSecurityError, children: /* @__PURE__ */ jsx(UserSecurityPresentational, { settings: settings.data }) });
50
+ return /* @__PURE__ */ jsx(
51
+ ErrorBoundary,
52
+ {
53
+ fallbackRender: ({ error: error2 }) => /* @__PURE__ */ jsx(UserSecurityError, { error: error2, ...props }),
54
+ children: /* @__PURE__ */ jsx(UserSecurityPresentational, { settings: settings.data, ...props })
55
+ }
56
+ );
41
57
  };
42
58
  export {
43
59
  UserSecurity,
60
+ UserSecurityError,
44
61
  UserSecurityLoading
45
62
  };
46
63
  //# sourceMappingURL=user-security.client.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/user-security.client.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { ApiProvider, AuthToken } from \"./api/api-provider.js\";\nimport { useAuthenticationInformation } from \"./api/endpoint.js\";\nimport {\n UserSecurityError,\n UserSecurityLoading,\n UserSecurity as UserSecurityPresentational,\n} from \"./lib/user-security.js\";\nimport { useIsHydrated } from \"./lib/use-is-hydrated.js\";\nimport { useWorkOsApiUrl } from \"./lib/widgets-context.js\";\nimport { ErrorBoundary } from \"./lib/error-boundary.js\";\n\nexport interface UserSecurityProps {\n authToken: AuthToken;\n}\n\nexport const UserSecurity: React.FC<UserSecurityProps> = ({ authToken }) => {\n const baseUrl = useWorkOsApiUrl();\n\n return (\n <ApiProvider\n widgetType=\"user-security\"\n authToken={authToken}\n baseUrl={baseUrl}\n >\n <UserSecurityContent />\n </ApiProvider>\n );\n};\n\nexport { UserSecurityLoading };\n\nconst UserSecurityContent = () => {\n const isHydrated = useIsHydrated();\n const {\n data: settings,\n isLoading,\n isError,\n isSuccess,\n error,\n } = useAuthenticationInformation();\n\n if (!isHydrated || isLoading) {\n return <UserSecurityLoading />;\n }\n\n if (isError || !isSuccess) {\n return <UserSecurityError error={error} />;\n }\n\n return (\n <ErrorBoundary FallbackComponent={UserSecurityError}>\n <UserSecurityPresentational settings={settings.data} />\n </ErrorBoundary>\n );\n};\n"],"mappings":";AA2BM;AAxBN,SAAS,mBAA8B;AACvC,SAAS,oCAAoC;AAC7C;AAAA,EACE;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,OACX;AACP,SAAS,qBAAqB;AAC9B,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAMvB,MAAM,eAA4C,CAAC,EAAE,UAAU,MAAM;AAC1E,QAAM,UAAU,gBAAgB;AAEhC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,YAAW;AAAA,MACX;AAAA,MACA;AAAA,MAEA,8BAAC,uBAAoB;AAAA;AAAA,EACvB;AAEJ;AAIA,MAAM,sBAAsB,MAAM;AAChC,QAAM,aAAa,cAAc;AACjC,QAAM;AAAA,IACJ,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,6BAA6B;AAEjC,MAAI,CAAC,cAAc,WAAW;AAC5B,WAAO,oBAAC,uBAAoB;AAAA,EAC9B;AAEA,MAAI,WAAW,CAAC,WAAW;AACzB,WAAO,oBAAC,qBAAkB,OAAc;AAAA,EAC1C;AAEA,SACE,oBAAC,iBAAc,mBAAmB,mBAChC,8BAAC,8BAA2B,UAAU,SAAS,MAAM,GACvD;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/user-security.client.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { ApiProvider, AuthToken, useApiReady } from \"./api/api-provider.js\";\nimport { useAuthenticationInformation } from \"./api/endpoint.js\";\nimport {\n UserSecurityError,\n UserSecurityLoading,\n UserSecurity as UserSecurityPresentational,\n} from \"./lib/user-security.js\";\nimport type {\n UserSecurityErrorProps,\n UserSecurityLoadingProps,\n} from \"./lib/user-security.js\";\nimport { useWorkOsApiUrl } from \"./lib/widgets-context.js\";\nimport { ErrorBoundary } from \"./lib/error-boundary.js\";\nimport type { WidgetRootDomProps } from \"./lib/utils.js\";\n\ninterface UserSecurityProps extends WidgetRootDomProps {\n authToken: AuthToken;\n}\n\nconst UserSecurity: React.FC<UserSecurityProps> = ({\n authToken,\n ...domProps\n}) => {\n const baseUrl = useWorkOsApiUrl();\n\n return (\n <ErrorBoundary\n fallbackRender={({ error }) => (\n <UserSecurityError error={error} {...domProps} />\n )}\n >\n <ApiProvider\n widgetType=\"user-security\"\n authToken={authToken}\n baseUrl={baseUrl}\n >\n <UserSecurityImpl {...domProps} />\n </ApiProvider>\n </ErrorBoundary>\n );\n};\n\nconst UserSecurityImpl = (props: WidgetRootDomProps) => {\n const isApiReady = useApiReady();\n const {\n data: settings,\n isLoading,\n isError,\n isSuccess,\n error,\n } = useAuthenticationInformation({\n query: { enabled: isApiReady },\n });\n\n if (!isApiReady || isLoading) {\n return <UserSecurityLoading {...props} />;\n }\n\n if (isError || !isSuccess) {\n return <UserSecurityError error={error} {...props} />;\n }\n\n return (\n <ErrorBoundary\n fallbackRender={({ error }) => (\n <UserSecurityError error={error} {...props} />\n )}\n >\n <UserSecurityPresentational settings={settings.data} {...props} />\n </ErrorBoundary>\n );\n};\n\nexport type {\n UserSecurityProps,\n UserSecurityLoadingProps,\n UserSecurityErrorProps,\n};\nexport { UserSecurity, UserSecurityLoading, UserSecurityError };\n"],"mappings":";AA+BQ;AA5BR,SAAS,aAAwB,mBAAmB;AACpD,SAAS,oCAAoC;AAC7C;AAAA,EACE;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,OACX;AAKP,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAO9B,MAAM,eAA4C,CAAC;AAAA,EACjD;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,UAAU,gBAAgB;AAEhC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgB,CAAC,EAAE,MAAM,MACvB,oBAAC,qBAAkB,OAAe,GAAG,UAAU;AAAA,MAGjD;AAAA,QAAC;AAAA;AAAA,UACC,YAAW;AAAA,UACX;AAAA,UACA;AAAA,UAEA,8BAAC,oBAAkB,GAAG,UAAU;AAAA;AAAA,MAClC;AAAA;AAAA,EACF;AAEJ;AAEA,MAAM,mBAAmB,CAAC,UAA8B;AACtD,QAAM,aAAa,YAAY;AAC/B,QAAM;AAAA,IACJ,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,6BAA6B;AAAA,IAC/B,OAAO,EAAE,SAAS,WAAW;AAAA,EAC/B,CAAC;AAED,MAAI,CAAC,cAAc,WAAW;AAC5B,WAAO,oBAAC,uBAAqB,GAAG,OAAO;AAAA,EACzC;AAEA,MAAI,WAAW,CAAC,WAAW;AACzB,WAAO,oBAAC,qBAAkB,OAAe,GAAG,OAAO;AAAA,EACrD;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgB,CAAC,EAAE,OAAAA,OAAM,MACvB,oBAAC,qBAAkB,OAAOA,QAAQ,GAAG,OAAO;AAAA,MAG9C,8BAAC,8BAA2B,UAAU,SAAS,MAAO,GAAG,OAAO;AAAA;AAAA,EAClE;AAEJ;","names":["error"]}
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
- export { UserSessionsLoading } from './lib/user-sessions.js';
2
+ export { UserSessionsError, UserSessionsErrorProps, UserSessionsLoading, UserSessionsLoadingProps } from './lib/user-sessions.js';
3
+ import { WidgetRootDomProps } from './lib/utils.js';
3
4
  import 'react/jsx-runtime';
4
5
  import './api/endpoint.js';
5
6
  import '@tanstack/react-query';
@@ -7,12 +8,13 @@ import './api/widgets-api-client.js';
7
8
 
8
9
  type UserSessionsWithoutCurrentSessionIdProps = {
9
10
  authToken: () => Promise<string>;
11
+ currentSessionId?: never;
10
12
  };
11
13
  type UserSessionsWithCurrentSessionIdProps = {
12
14
  authToken: string;
13
15
  currentSessionId: string;
14
16
  };
15
- type UserSessionsProps = UserSessionsWithoutCurrentSessionIdProps | UserSessionsWithCurrentSessionIdProps;
17
+ type UserSessionsProps = WidgetRootDomProps & (UserSessionsWithoutCurrentSessionIdProps | UserSessionsWithCurrentSessionIdProps);
16
18
  declare const UserSessions: React.FC<UserSessionsProps>;
17
19
 
18
20
  export { UserSessions, type UserSessionsProps };
@@ -5,73 +5,86 @@ import {
5
5
  UserSessionsLoading,
6
6
  UserSessions as UserSessionsPresentational
7
7
  } from "./lib/user-sessions.js";
8
- import { useIsHydrated } from "./lib/use-is-hydrated.js";
9
8
  import { useSessions } from "./api/endpoint.js";
10
- import { ApiProvider, useApi } from "./api/api-provider.js";
9
+ import { ApiProvider, useApi, useApiReady } from "./api/api-provider.js";
11
10
  import { useWorkOsApiUrl } from "./lib/widgets-context.js";
12
11
  import { ErrorBoundary } from "./lib/error-boundary.js";
13
- import { useQuery } from "@tanstack/react-query";
14
- const UserSessions = (props) => {
12
+ import { useQuery, skipToken } from "@tanstack/react-query";
13
+ import { getClaims } from "./api/utils.js";
14
+ const UserSessions = ({
15
+ authToken,
16
+ ...passthroughProps
17
+ }) => {
15
18
  const baseUrl = useWorkOsApiUrl();
16
19
  return /* @__PURE__ */ jsx(
17
- ApiProvider,
20
+ ErrorBoundary,
18
21
  {
19
- widgetType: "user-sessions",
20
- authToken: props.authToken,
21
- baseUrl,
22
+ fallbackRender: ({ error }) => {
23
+ const { currentSessionId, ...domProps } = passthroughProps;
24
+ return /* @__PURE__ */ jsx(UserSessionsError, { error, ...domProps });
25
+ },
22
26
  children: /* @__PURE__ */ jsx(
23
- UserSessionsContent,
27
+ ApiProvider,
24
28
  {
25
- currentSessionId: "currentSessionId" in props ? props.currentSessionId : void 0
29
+ widgetType: "user-sessions",
30
+ authToken,
31
+ baseUrl,
32
+ children: /* @__PURE__ */ jsx(UserSessionsImpl, { ...passthroughProps })
26
33
  }
27
34
  )
28
35
  }
29
36
  );
30
37
  };
31
- const UserSessionsContent = ({
32
- currentSessionId
38
+ const UserSessionsImpl = ({
39
+ currentSessionId,
40
+ ...domProps
33
41
  }) => {
34
- const isHydrated = useIsHydrated();
42
+ const isApiReady = useApiReady();
35
43
  const sessionsQuery = useSessions();
36
44
  const currentSessionIdQuery = useCurrentSessionIdQuery(currentSessionId);
37
- if (!isHydrated || sessionsQuery.isLoading || currentSessionIdQuery.isLoading) {
38
- return /* @__PURE__ */ jsx(UserSessionsLoading, {});
45
+ if (!isApiReady || sessionsQuery.isLoading || currentSessionIdQuery.isLoading) {
46
+ return /* @__PURE__ */ jsx(UserSessionsLoading, { ...domProps });
39
47
  }
40
48
  if (sessionsQuery.isError || currentSessionIdQuery.isError) {
41
49
  return /* @__PURE__ */ jsx(
42
50
  UserSessionsError,
43
51
  {
44
- error: sessionsQuery.error || currentSessionIdQuery.error
52
+ error: sessionsQuery.error || currentSessionIdQuery.error,
53
+ ...domProps
45
54
  }
46
55
  );
47
56
  }
48
- return /* @__PURE__ */ jsx(ErrorBoundary, { FallbackComponent: UserSessionsError, children: /* @__PURE__ */ jsx(
49
- UserSessionsPresentational,
57
+ return /* @__PURE__ */ jsx(
58
+ ErrorBoundary,
50
59
  {
51
- sessionsData: sessionsQuery.data?.data || [],
52
- currentSessionId: currentSessionIdQuery.data ?? ""
60
+ fallbackRender: ({ error }) => /* @__PURE__ */ jsx(UserSessionsError, { error, ...domProps }),
61
+ children: /* @__PURE__ */ jsx(
62
+ UserSessionsPresentational,
63
+ {
64
+ sessionsData: sessionsQuery.data?.data || [],
65
+ currentSessionId: currentSessionIdQuery.data ?? "",
66
+ ...domProps
67
+ }
68
+ )
53
69
  }
54
- ) });
70
+ );
55
71
  };
56
72
  function useCurrentSessionIdQuery(currentSessionId) {
57
73
  const { authToken } = useApi();
58
74
  return useQuery({
59
- queryKey: ["authToken"],
60
- queryFn: async () => {
75
+ queryKey: ["authToken", authToken],
76
+ queryFn: authToken ? async () => {
61
77
  if (currentSessionId) {
62
78
  return currentSessionId;
63
79
  }
64
- const res = await Promise.resolve(authToken);
65
- const claims = getClaims(res);
66
- return claims.sid;
67
- }
80
+ const { sid } = getClaims(authToken);
81
+ return sid;
82
+ } : skipToken
68
83
  });
69
84
  }
70
- function getClaims(accessToken) {
71
- return JSON.parse(atob(accessToken.split(".")[1]));
72
- }
73
85
  export {
74
86
  UserSessions,
87
+ UserSessionsError,
75
88
  UserSessionsLoading
76
89
  };
77
90
  //# sourceMappingURL=user-sessions.client.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/user-sessions.client.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n UserSessionsError,\n UserSessionsLoading,\n UserSessions as UserSessionsPresentational,\n} from \"./lib/user-sessions.js\";\nimport { useIsHydrated } from \"./lib/use-is-hydrated.js\";\nimport { useSessions } from \"./api/endpoint.js\";\nimport { ApiProvider, useApi } from \"./api/api-provider.js\";\nimport { useWorkOsApiUrl } from \"./lib/widgets-context.js\";\nimport { ErrorBoundary } from \"./lib/error-boundary.js\";\nimport { useQuery } from \"@tanstack/react-query\";\n\ntype UserSessionsWithoutCurrentSessionIdProps = {\n authToken: () => Promise<string>;\n};\n\ntype UserSessionsWithCurrentSessionIdProps = {\n authToken: string;\n currentSessionId: string;\n};\n\nexport type UserSessionsProps =\n | UserSessionsWithoutCurrentSessionIdProps\n | UserSessionsWithCurrentSessionIdProps;\n\nexport const UserSessions: React.FC<UserSessionsProps> = (props) => {\n const baseUrl = useWorkOsApiUrl();\n\n return (\n <ApiProvider\n widgetType=\"user-sessions\"\n authToken={props.authToken}\n baseUrl={baseUrl}\n >\n <UserSessionsContent\n currentSessionId={\n \"currentSessionId\" in props ? props.currentSessionId : undefined\n }\n />\n </ApiProvider>\n );\n};\n\nexport { UserSessionsLoading };\n\nconst UserSessionsContent = ({\n currentSessionId,\n}: {\n currentSessionId?: string;\n}) => {\n const isHydrated = useIsHydrated();\n const sessionsQuery = useSessions();\n const currentSessionIdQuery = useCurrentSessionIdQuery(currentSessionId);\n\n if (\n !isHydrated ||\n sessionsQuery.isLoading ||\n currentSessionIdQuery.isLoading\n ) {\n return <UserSessionsLoading />;\n }\n\n if (sessionsQuery.isError || currentSessionIdQuery.isError) {\n return (\n <UserSessionsError\n error={sessionsQuery.error || currentSessionIdQuery.error}\n />\n );\n }\n\n return (\n <ErrorBoundary FallbackComponent={UserSessionsError}>\n <UserSessionsPresentational\n sessionsData={sessionsQuery.data?.data || []}\n currentSessionId={currentSessionIdQuery.data ?? \"\"}\n />\n </ErrorBoundary>\n );\n};\n\nfunction useCurrentSessionIdQuery(currentSessionId?: string) {\n const { authToken } = useApi();\n\n return useQuery({\n queryKey: [\"authToken\"],\n queryFn: async () => {\n if (currentSessionId) {\n return currentSessionId;\n }\n\n const res = await Promise.resolve(authToken);\n const claims = getClaims(res);\n return claims.sid;\n },\n });\n}\n\nfunction getClaims(accessToken: string) {\n return JSON.parse(atob(accessToken.split(\".\")[1])) as { sid: string };\n}\n"],"mappings":";AAqCM;AAlCN;AAAA,EACE;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,OACX;AACP,SAAS,qBAAqB;AAC9B,SAAS,mBAAmB;AAC5B,SAAS,aAAa,cAAc;AACpC,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAC9B,SAAS,gBAAgB;AAelB,MAAM,eAA4C,CAAC,UAAU;AAClE,QAAM,UAAU,gBAAgB;AAEhC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,YAAW;AAAA,MACX,WAAW,MAAM;AAAA,MACjB;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,kBACE,sBAAsB,QAAQ,MAAM,mBAAmB;AAAA;AAAA,MAE3D;AAAA;AAAA,EACF;AAEJ;AAIA,MAAM,sBAAsB,CAAC;AAAA,EAC3B;AACF,MAEM;AACJ,QAAM,aAAa,cAAc;AACjC,QAAM,gBAAgB,YAAY;AAClC,QAAM,wBAAwB,yBAAyB,gBAAgB;AAEvE,MACE,CAAC,cACD,cAAc,aACd,sBAAsB,WACtB;AACA,WAAO,oBAAC,uBAAoB;AAAA,EAC9B;AAEA,MAAI,cAAc,WAAW,sBAAsB,SAAS;AAC1D,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,cAAc,SAAS,sBAAsB;AAAA;AAAA,IACtD;AAAA,EAEJ;AAEA,SACE,oBAAC,iBAAc,mBAAmB,mBAChC;AAAA,IAAC;AAAA;AAAA,MACC,cAAc,cAAc,MAAM,QAAQ,CAAC;AAAA,MAC3C,kBAAkB,sBAAsB,QAAQ;AAAA;AAAA,EAClD,GACF;AAEJ;AAEA,SAAS,yBAAyB,kBAA2B;AAC3D,QAAM,EAAE,UAAU,IAAI,OAAO;AAE7B,SAAO,SAAS;AAAA,IACd,UAAU,CAAC,WAAW;AAAA,IACtB,SAAS,YAAY;AACnB,UAAI,kBAAkB;AACpB,eAAO;AAAA,MACT;AAEA,YAAM,MAAM,MAAM,QAAQ,QAAQ,SAAS;AAC3C,YAAM,SAAS,UAAU,GAAG;AAC5B,aAAO,OAAO;AAAA,IAChB;AAAA,EACF,CAAC;AACH;AAEA,SAAS,UAAU,aAAqB;AACtC,SAAO,KAAK,MAAM,KAAK,YAAY,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;AACnD;","names":[]}
1
+ {"version":3,"sources":["../../src/user-sessions.client.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n UserSessionsError,\n UserSessionsLoading,\n UserSessions as UserSessionsPresentational,\n} from \"./lib/user-sessions.js\";\nimport type {\n UserSessionsErrorProps,\n UserSessionsLoadingProps,\n} from \"./lib/user-sessions.js\";\nimport { useSessions } from \"./api/endpoint.js\";\nimport { ApiProvider, useApi, useApiReady } from \"./api/api-provider.js\";\nimport { useWorkOsApiUrl } from \"./lib/widgets-context.js\";\nimport { ErrorBoundary } from \"./lib/error-boundary.js\";\nimport { useQuery, skipToken } from \"@tanstack/react-query\";\nimport { getClaims } from \"./api/utils.js\";\nimport { WidgetRootDomProps } from \"./lib/utils.js\";\n\ntype UserSessionsWithoutCurrentSessionIdProps = {\n authToken: () => Promise<string>;\n currentSessionId?: never;\n};\n\ntype UserSessionsWithCurrentSessionIdProps = {\n authToken: string;\n currentSessionId: string;\n};\n\ntype UserSessionsProps = WidgetRootDomProps &\n (\n | UserSessionsWithoutCurrentSessionIdProps\n | UserSessionsWithCurrentSessionIdProps\n );\n\nconst UserSessions: React.FC<UserSessionsProps> = ({\n authToken,\n ...passthroughProps\n}) => {\n const baseUrl = useWorkOsApiUrl();\n return (\n <ErrorBoundary\n fallbackRender={({ error }) => {\n const { currentSessionId, ...domProps } = passthroughProps;\n return <UserSessionsError error={error} {...domProps} />;\n }}\n >\n <ApiProvider\n widgetType=\"user-sessions\"\n authToken={authToken}\n baseUrl={baseUrl}\n >\n <UserSessionsImpl {...passthroughProps} />\n </ApiProvider>\n </ErrorBoundary>\n );\n};\n\ninterface UserSessionsImplProps extends WidgetRootDomProps {\n currentSessionId?: string;\n}\n\nconst UserSessionsImpl: React.FC<UserSessionsImplProps> = ({\n currentSessionId,\n ...domProps\n}) => {\n const isApiReady = useApiReady();\n const sessionsQuery = useSessions();\n const currentSessionIdQuery = useCurrentSessionIdQuery(currentSessionId);\n\n if (\n !isApiReady ||\n sessionsQuery.isLoading ||\n currentSessionIdQuery.isLoading\n ) {\n return <UserSessionsLoading {...domProps} />;\n }\n\n if (sessionsQuery.isError || currentSessionIdQuery.isError) {\n return (\n <UserSessionsError\n error={sessionsQuery.error || currentSessionIdQuery.error}\n {...domProps}\n />\n );\n }\n\n return (\n <ErrorBoundary\n fallbackRender={({ error }) => (\n <UserSessionsError error={error} {...domProps} />\n )}\n >\n <UserSessionsPresentational\n sessionsData={sessionsQuery.data?.data || []}\n currentSessionId={currentSessionIdQuery.data ?? \"\"}\n {...domProps}\n />\n </ErrorBoundary>\n );\n};\n\nfunction useCurrentSessionIdQuery(currentSessionId?: string) {\n const { authToken } = useApi();\n\n return useQuery({\n queryKey: [\"authToken\", authToken],\n queryFn: authToken\n ? async () => {\n if (currentSessionId) {\n return currentSessionId;\n }\n\n const { sid } = getClaims(authToken);\n return sid;\n }\n : skipToken,\n });\n}\n\nexport type {\n UserSessionsProps,\n UserSessionsLoadingProps,\n UserSessionsErrorProps,\n};\nexport { UserSessions, UserSessionsLoading, UserSessionsError };\n"],"mappings":";AA6Ce;AA1Cf;AAAA,EACE;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,OACX;AAKP,SAAS,mBAAmB;AAC5B,SAAS,aAAa,QAAQ,mBAAmB;AACjD,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAC9B,SAAS,UAAU,iBAAiB;AACpC,SAAS,iBAAiB;AAmB1B,MAAM,eAA4C,CAAC;AAAA,EACjD;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,UAAU,gBAAgB;AAChC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgB,CAAC,EAAE,MAAM,MAAM;AAC7B,cAAM,EAAE,kBAAkB,GAAG,SAAS,IAAI;AAC1C,eAAO,oBAAC,qBAAkB,OAAe,GAAG,UAAU;AAAA,MACxD;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,YAAW;AAAA,UACX;AAAA,UACA;AAAA,UAEA,8BAAC,oBAAkB,GAAG,kBAAkB;AAAA;AAAA,MAC1C;AAAA;AAAA,EACF;AAEJ;AAMA,MAAM,mBAAoD,CAAC;AAAA,EACzD;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,aAAa,YAAY;AAC/B,QAAM,gBAAgB,YAAY;AAClC,QAAM,wBAAwB,yBAAyB,gBAAgB;AAEvE,MACE,CAAC,cACD,cAAc,aACd,sBAAsB,WACtB;AACA,WAAO,oBAAC,uBAAqB,GAAG,UAAU;AAAA,EAC5C;AAEA,MAAI,cAAc,WAAW,sBAAsB,SAAS;AAC1D,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,cAAc,SAAS,sBAAsB;AAAA,QACnD,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgB,CAAC,EAAE,MAAM,MACvB,oBAAC,qBAAkB,OAAe,GAAG,UAAU;AAAA,MAGjD;AAAA,QAAC;AAAA;AAAA,UACC,cAAc,cAAc,MAAM,QAAQ,CAAC;AAAA,UAC3C,kBAAkB,sBAAsB,QAAQ;AAAA,UAC/C,GAAG;AAAA;AAAA,MACN;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,yBAAyB,kBAA2B;AAC3D,QAAM,EAAE,UAAU,IAAI,OAAO;AAE7B,SAAO,SAAS;AAAA,IACd,UAAU,CAAC,aAAa,SAAS;AAAA,IACjC,SAAS,YACL,YAAY;AACV,UAAI,kBAAkB;AACpB,eAAO;AAAA,MACT;AAEA,YAAM,EAAE,IAAI,IAAI,UAAU,SAAS;AACnC,aAAO;AAAA,IACT,IACA;AAAA,EACN,CAAC;AACH;","names":[]}
@@ -1,12 +1,13 @@
1
1
  import { AuthToken } from './api/api-provider.js';
2
2
  import * as React from 'react';
3
- export { UsersManagementLoading } from './lib/users-management.js';
3
+ export { UsersManagementError, UsersManagementErrorProps, UsersManagementLoading, UsersManagementLoadingProps } from './lib/users-management.js';
4
+ import { WidgetRootDomProps } from './lib/utils.js';
4
5
  import 'react/jsx-runtime';
5
6
  import './api/endpoint.js';
6
7
  import '@tanstack/react-query';
7
8
  import './api/widgets-api-client.js';
8
9
 
9
- interface UsersManagementProps {
10
+ interface UsersManagementProps extends WidgetRootDomProps {
10
11
  authToken: AuthToken;
11
12
  }
12
13
  declare const UsersManagement: React.FC<UsersManagementProps>;
@@ -1,9 +1,8 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  import { useRolesAndConfig } from "./api/endpoint.js";
4
- import { ApiProvider, useApi } from "./api/api-provider.js";
4
+ import { ApiProvider, useApiReady } from "./api/api-provider.js";
5
5
  import { useUsers } from "./lib/api/user.js";
6
- import { useIsHydrated } from "./lib/use-is-hydrated.js";
7
6
  import {
8
7
  UsersManagementError,
9
8
  UsersManagementLoading,
@@ -14,54 +13,65 @@ import { useWorkOsApiUrl } from "./lib/widgets-context.js";
14
13
  import { ErrorBoundary } from "./lib/error-boundary.js";
15
14
  import { usePermissions } from "./lib/use-permissions.js";
16
15
  const UsersManagement = ({
17
- authToken
16
+ authToken,
17
+ ...domProps
18
18
  }) => {
19
19
  const baseUrl = useWorkOsApiUrl();
20
- return /* @__PURE__ */ jsx(ErrorBoundary, { FallbackComponent: UsersManagementError, children: /* @__PURE__ */ jsx(
21
- ApiProvider,
20
+ return /* @__PURE__ */ jsx(
21
+ ErrorBoundary,
22
22
  {
23
- widgetType: "user-management",
24
- authToken,
25
- baseUrl,
26
- children: /* @__PURE__ */ jsx(UsersManagementContextProvider, { children: /* @__PURE__ */ jsx(UsersManagementContent, {}) })
23
+ fallbackRender: ({ error }) => /* @__PURE__ */ jsx(UsersManagementError, { error, ...domProps }),
24
+ children: /* @__PURE__ */ jsx(
25
+ ApiProvider,
26
+ {
27
+ widgetType: "user-management",
28
+ authToken,
29
+ baseUrl,
30
+ children: /* @__PURE__ */ jsx(UsersManagementContextProvider, { children: /* @__PURE__ */ jsx(UsersManagementImpl, { ...domProps }) })
31
+ }
32
+ )
27
33
  }
28
- ) });
34
+ );
29
35
  };
30
- const UsersManagementContent = () => {
31
- const isHydrated = useIsHydrated();
36
+ const UsersManagementImpl = (props) => {
37
+ const isApiReady = useApiReady();
32
38
  const rolesAndConfigQuery = useRolesAndConfig({
33
39
  query: { initialData: { roles: [], multipleRolesEnabled: false } }
34
40
  });
35
41
  const usersQuery = useUsers();
36
- const context = useApi();
37
- const permissionsQuery = usePermissions(
38
- "widgets:users-table:manage",
39
- context.authToken
40
- );
41
- if (permissionsQuery.isLoading || usersQuery.isLoading || rolesAndConfigQuery.isLoading || usersQuery.isPending || // render loading state on the server to prevent FOUC or hydration mismatch
42
- !isHydrated) {
43
- return /* @__PURE__ */ jsx(UsersManagementLoading, {});
42
+ const permissionsQuery = usePermissions("widgets:users-table:manage");
43
+ if (permissionsQuery.isLoading || usersQuery.isLoading || rolesAndConfigQuery.isLoading || usersQuery.isPending || !isApiReady) {
44
+ return /* @__PURE__ */ jsx(UsersManagementLoading, { ...props });
44
45
  }
45
46
  if (permissionsQuery.isError || usersQuery.isError || rolesAndConfigQuery.isError) {
46
47
  return /* @__PURE__ */ jsx(
47
48
  UsersManagementError,
48
49
  {
49
- error: permissionsQuery.error || usersQuery.error || rolesAndConfigQuery.error
50
+ error: permissionsQuery.error || usersQuery.error || rolesAndConfigQuery.error,
51
+ ...props
50
52
  }
51
53
  );
52
54
  }
53
- return /* @__PURE__ */ jsx(ErrorBoundary, { FallbackComponent: UsersManagementError, children: /* @__PURE__ */ jsx(
54
- UsersManagementPresentational,
55
+ return /* @__PURE__ */ jsx(
56
+ ErrorBoundary,
55
57
  {
56
- userData: usersQuery.data,
57
- rolesData: rolesAndConfigQuery.data,
58
- isPending: usersQuery.isFetching,
59
- disableRolesFilter: rolesAndConfigQuery.isPending || rolesAndConfigQuery.isFetching
58
+ fallbackRender: ({ error }) => /* @__PURE__ */ jsx(UsersManagementError, { error, ...props }),
59
+ children: /* @__PURE__ */ jsx(
60
+ UsersManagementPresentational,
61
+ {
62
+ userData: usersQuery.data,
63
+ rolesData: rolesAndConfigQuery.data,
64
+ isPending: usersQuery.isFetching,
65
+ disableRolesFilter: rolesAndConfigQuery.isPending || rolesAndConfigQuery.isFetching,
66
+ ...props
67
+ }
68
+ )
60
69
  }
61
- ) });
70
+ );
62
71
  };
63
72
  export {
64
73
  UsersManagement,
74
+ UsersManagementError,
65
75
  UsersManagementLoading
66
76
  };
67
77
  //# sourceMappingURL=users-management.client.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/users-management.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { useRolesAndConfig } from \"./api/endpoint.js\";\nimport { ApiProvider, AuthToken, useApi } from \"./api/api-provider.js\";\nimport * as React from \"react\";\nimport { useUsers } from \"./lib/api/user.js\";\nimport { useIsHydrated } from \"./lib/use-is-hydrated.js\";\nimport {\n UsersManagementError,\n UsersManagementLoading,\n UsersManagement as UsersManagementPresentational,\n} from \"./lib/users-management.js\";\nimport { UsersManagementContextProvider } from \"./lib/users-management-context.js\";\nimport { useWorkOsApiUrl } from \"./lib/widgets-context.js\";\nimport { ErrorBoundary } from \"./lib/error-boundary.js\";\nimport { usePermissions } from \"./lib/use-permissions.js\";\n\nexport interface UsersManagementProps {\n authToken: AuthToken;\n}\n\nexport const UsersManagement: React.FC<UsersManagementProps> = ({\n authToken,\n}) => {\n const baseUrl = useWorkOsApiUrl();\n\n return (\n <ErrorBoundary FallbackComponent={UsersManagementError}>\n <ApiProvider\n widgetType=\"user-management\"\n authToken={authToken}\n baseUrl={baseUrl}\n >\n <UsersManagementContextProvider>\n <UsersManagementContent />\n </UsersManagementContextProvider>\n </ApiProvider>\n </ErrorBoundary>\n );\n};\n\nexport { UsersManagementLoading };\n\nconst UsersManagementContent = () => {\n const isHydrated = useIsHydrated();\n const rolesAndConfigQuery = useRolesAndConfig({\n query: { initialData: { roles: [], multipleRolesEnabled: false } },\n });\n const usersQuery = useUsers();\n const context = useApi();\n const permissionsQuery = usePermissions(\n \"widgets:users-table:manage\",\n context.authToken,\n );\n\n if (\n permissionsQuery.isLoading ||\n usersQuery.isLoading ||\n rolesAndConfigQuery.isLoading ||\n usersQuery.isPending ||\n // render loading state on the server to prevent FOUC or hydration mismatch\n !isHydrated\n ) {\n return <UsersManagementLoading />;\n }\n\n if (\n permissionsQuery.isError ||\n usersQuery.isError ||\n rolesAndConfigQuery.isError\n ) {\n return (\n <UsersManagementError\n error={\n permissionsQuery.error ||\n usersQuery.error ||\n rolesAndConfigQuery.error\n }\n />\n );\n }\n\n return (\n <ErrorBoundary FallbackComponent={UsersManagementError}>\n <UsersManagementPresentational\n userData={usersQuery.data}\n rolesData={rolesAndConfigQuery.data}\n isPending={usersQuery.isFetching}\n disableRolesFilter={\n rolesAndConfigQuery.isPending || rolesAndConfigQuery.isFetching\n }\n />\n </ErrorBoundary>\n );\n};\n"],"mappings":";AAkCU;AAhCV,SAAS,yBAAyB;AAClC,SAAS,aAAwB,cAAc;AAE/C,SAAS,gBAAgB;AACzB,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,OACd;AACP,SAAS,sCAAsC;AAC/C,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAMxB,MAAM,kBAAkD,CAAC;AAAA,EAC9D;AACF,MAAM;AACJ,QAAM,UAAU,gBAAgB;AAEhC,SACE,oBAAC,iBAAc,mBAAmB,sBAChC;AAAA,IAAC;AAAA;AAAA,MACC,YAAW;AAAA,MACX;AAAA,MACA;AAAA,MAEA,8BAAC,kCACC,8BAAC,0BAAuB,GAC1B;AAAA;AAAA,EACF,GACF;AAEJ;AAIA,MAAM,yBAAyB,MAAM;AACnC,QAAM,aAAa,cAAc;AACjC,QAAM,sBAAsB,kBAAkB;AAAA,IAC5C,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,GAAG,sBAAsB,MAAM,EAAE;AAAA,EACnE,CAAC;AACD,QAAM,aAAa,SAAS;AAC5B,QAAM,UAAU,OAAO;AACvB,QAAM,mBAAmB;AAAA,IACvB;AAAA,IACA,QAAQ;AAAA,EACV;AAEA,MACE,iBAAiB,aACjB,WAAW,aACX,oBAAoB,aACpB,WAAW;AAAA,EAEX,CAAC,YACD;AACA,WAAO,oBAAC,0BAAuB;AAAA,EACjC;AAEA,MACE,iBAAiB,WACjB,WAAW,WACX,oBAAoB,SACpB;AACA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OACE,iBAAiB,SACjB,WAAW,SACX,oBAAoB;AAAA;AAAA,IAExB;AAAA,EAEJ;AAEA,SACE,oBAAC,iBAAc,mBAAmB,sBAChC;AAAA,IAAC;AAAA;AAAA,MACC,UAAU,WAAW;AAAA,MACrB,WAAW,oBAAoB;AAAA,MAC/B,WAAW,WAAW;AAAA,MACtB,oBACE,oBAAoB,aAAa,oBAAoB;AAAA;AAAA,EAEzD,GACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/users-management.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { useRolesAndConfig } from \"./api/endpoint.js\";\nimport { ApiProvider, AuthToken, useApiReady } from \"./api/api-provider.js\";\nimport * as React from \"react\";\nimport { useUsers } from \"./lib/api/user.js\";\nimport {\n UsersManagementError,\n UsersManagementLoading,\n UsersManagement as UsersManagementPresentational,\n} from \"./lib/users-management.js\";\nimport type {\n UsersManagementErrorProps,\n UsersManagementLoadingProps,\n} from \"./lib/users-management.js\";\nimport { UsersManagementContextProvider } from \"./lib/users-management-context.js\";\nimport { useWorkOsApiUrl } from \"./lib/widgets-context.js\";\nimport { ErrorBoundary } from \"./lib/error-boundary.js\";\nimport { usePermissions } from \"./lib/use-permissions.js\";\nimport type { WidgetRootDomProps } from \"./lib/utils.js\";\n\ninterface UsersManagementProps extends WidgetRootDomProps {\n authToken: AuthToken;\n}\n\nconst UsersManagement: React.FC<UsersManagementProps> = ({\n authToken,\n ...domProps\n}) => {\n const baseUrl = useWorkOsApiUrl();\n\n return (\n <ErrorBoundary\n fallbackRender={({ error }) => (\n <UsersManagementError error={error} {...domProps} />\n )}\n >\n <ApiProvider\n widgetType=\"user-management\"\n authToken={authToken}\n baseUrl={baseUrl}\n >\n <UsersManagementContextProvider>\n <UsersManagementImpl {...domProps} />\n </UsersManagementContextProvider>\n </ApiProvider>\n </ErrorBoundary>\n );\n};\n\nconst UsersManagementImpl = (props: WidgetRootDomProps) => {\n const isApiReady = useApiReady();\n const rolesAndConfigQuery = useRolesAndConfig({\n query: { initialData: { roles: [], multipleRolesEnabled: false } },\n });\n const usersQuery = useUsers();\n const permissionsQuery = usePermissions(\"widgets:users-table:manage\");\n\n if (\n permissionsQuery.isLoading ||\n usersQuery.isLoading ||\n rolesAndConfigQuery.isLoading ||\n usersQuery.isPending ||\n !isApiReady\n ) {\n return <UsersManagementLoading {...props} />;\n }\n\n if (\n permissionsQuery.isError ||\n usersQuery.isError ||\n rolesAndConfigQuery.isError\n ) {\n return (\n <UsersManagementError\n error={\n permissionsQuery.error ||\n usersQuery.error ||\n rolesAndConfigQuery.error\n }\n {...props}\n />\n );\n }\n\n return (\n <ErrorBoundary\n fallbackRender={({ error }) => (\n <UsersManagementError error={error} {...props} />\n )}\n >\n <UsersManagementPresentational\n userData={usersQuery.data}\n rolesData={rolesAndConfigQuery.data}\n isPending={usersQuery.isFetching}\n disableRolesFilter={\n rolesAndConfigQuery.isPending || rolesAndConfigQuery.isFetching\n }\n {...props}\n />\n </ErrorBoundary>\n );\n};\n\nexport type {\n UsersManagementProps,\n UsersManagementLoadingProps,\n UsersManagementErrorProps,\n};\nexport { UsersManagement, UsersManagementLoading, UsersManagementError };\n"],"mappings":";AAkCQ;AAhCR,SAAS,yBAAyB;AAClC,SAAS,aAAwB,mBAAmB;AAEpD,SAAS,gBAAgB;AACzB;AAAA,EACE;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,OACd;AAKP,SAAS,sCAAsC;AAC/C,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAO/B,MAAM,kBAAkD,CAAC;AAAA,EACvD;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,UAAU,gBAAgB;AAEhC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgB,CAAC,EAAE,MAAM,MACvB,oBAAC,wBAAqB,OAAe,GAAG,UAAU;AAAA,MAGpD;AAAA,QAAC;AAAA;AAAA,UACC,YAAW;AAAA,UACX;AAAA,UACA;AAAA,UAEA,8BAAC,kCACC,8BAAC,uBAAqB,GAAG,UAAU,GACrC;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;AAEA,MAAM,sBAAsB,CAAC,UAA8B;AACzD,QAAM,aAAa,YAAY;AAC/B,QAAM,sBAAsB,kBAAkB;AAAA,IAC5C,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,GAAG,sBAAsB,MAAM,EAAE;AAAA,EACnE,CAAC;AACD,QAAM,aAAa,SAAS;AAC5B,QAAM,mBAAmB,eAAe,4BAA4B;AAEpE,MACE,iBAAiB,aACjB,WAAW,aACX,oBAAoB,aACpB,WAAW,aACX,CAAC,YACD;AACA,WAAO,oBAAC,0BAAwB,GAAG,OAAO;AAAA,EAC5C;AAEA,MACE,iBAAiB,WACjB,WAAW,WACX,oBAAoB,SACpB;AACA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OACE,iBAAiB,SACjB,WAAW,SACX,oBAAoB;AAAA,QAErB,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgB,CAAC,EAAE,MAAM,MACvB,oBAAC,wBAAqB,OAAe,GAAG,OAAO;AAAA,MAGjD;AAAA,QAAC;AAAA;AAAA,UACC,UAAU,WAAW;AAAA,UACrB,WAAW,oBAAoB;AAAA,UAC/B,WAAW,WAAW;AAAA,UACtB,oBACE,oBAAoB,aAAa,oBAAoB;AAAA,UAEtD,GAAG;AAAA;AAAA,MACN;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -11,17 +11,17 @@ import * as React from "react";
11
11
  import { namespaceClassNames } from "./lib/utils.js";
12
12
  import { DEFAULT_API_HOSTNAME } from "./lib/api/config.js";
13
13
  import { WidgetsContext } from "./lib/widgets-context.js";
14
- let queryClientInternal;
14
+ import { WIDGETS_DATA_ATTRIBUTE_NAMESPACE } from "./lib/constants.js";
15
15
  const WorkOsWidgets = ({
16
16
  elements = {},
17
- className,
18
17
  theme: { fontFamily, ...radixThemesProps } = {},
19
18
  style = {},
20
19
  children,
21
20
  apiHostname = DEFAULT_API_HOSTNAME,
22
21
  port = null,
23
22
  https = true,
24
- queryClient
23
+ queryClient,
24
+ className
25
25
  }) => {
26
26
  const customStyle = fontFamily ? {
27
27
  "--default-font-family": fontFamily,
@@ -45,6 +45,7 @@ const WorkOsWidgets = ({
45
45
  RadixThemes,
46
46
  {
47
47
  ...radixThemesProps,
48
+ ...{ [`data-${WIDGETS_DATA_ATTRIBUTE_NAMESPACE}-root`]: true },
48
49
  style: customStyle,
49
50
  className: cx(namespaceClassNames("root"), className),
50
51
  children: /* @__PURE__ */ jsx(WidgetsContext.Provider, { value: { elements, apiBaseUrl }, children })
@@ -55,15 +56,9 @@ const QueryClientProviderImpl = ({
55
56
  client: providedClient,
56
57
  children
57
58
  }) => {
58
- let queryClient;
59
- if (providedClient) {
60
- queryClient = providedClient;
61
- } else if (queryClientInternal) {
62
- queryClient = queryClientInternal;
63
- } else {
64
- queryClientInternal = new QueryClient();
65
- queryClient = queryClientInternal;
66
- }
59
+ const [queryClient] = React.useState(
60
+ () => providedClient ?? new QueryClient()
61
+ );
67
62
  const client = useQueryClient(queryClient);
68
63
  if (Object.is(client, providedClient)) {
69
64
  return /* @__PURE__ */ jsx(Fragment, { children });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/workos-widgets.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { Theme as RadixThemes } from \"@radix-ui/themes\";\nimport type { GetPropDefTypes, themePropDefs } from \"@radix-ui/themes/props\";\nimport {\n QueryClient,\n QueryClientProvider,\n useQueryClient,\n} from \"@tanstack/react-query\";\nimport cx from \"clsx\";\nimport * as React from \"react\";\nimport { namespaceClassNames } from \"./lib/utils.js\";\nimport { DEFAULT_API_HOSTNAME } from \"./lib/api/config.js\";\nimport type { Elements } from \"./lib/elements.js\";\nimport { WidgetsContext } from \"./lib/widgets-context.js\";\n\nlet queryClientInternal: QueryClient | undefined;\n\nexport interface WorkOsWidgetsProps {\n elements?: Elements;\n theme?: Omit<GetPropDefTypes<typeof themePropDefs>, \"asChild\"> & {\n fontFamily?: string;\n };\n style?: React.CSSProperties;\n className?: string;\n children: React.ReactNode;\n apiHostname?: string;\n port?: number | null;\n https?: boolean;\n /**\n * Optional query client for users who are already using Tanstack Query. If\n * not provided, a new query client will be created and mounted internally.\n */\n queryClient?: QueryClient;\n}\n\nexport const WorkOsWidgets: React.FC<WorkOsWidgetsProps> = ({\n elements = {},\n className,\n theme: { fontFamily, ...radixThemesProps } = {},\n style = {},\n children,\n apiHostname = DEFAULT_API_HOSTNAME,\n port = null,\n https = true,\n queryClient,\n}) => {\n const customStyle: React.CSSProperties = fontFamily\n ? {\n \"--default-font-family\": fontFamily,\n ...style,\n }\n : style;\n\n const apiBaseUrl = React.useMemo(() => {\n try {\n const url = new URL(\n \"/\",\n `${https ? \"https\" : \"http\"}://${apiHostname}${port ? `:${port}` : \"\"}`,\n );\n return url.toString().slice(0, -1);\n } catch {\n console.error(\n \"Failed to validate the WorkOS API URL. Check to ensure that valid `apiHostname` and `port` props are passed to WorkOsWidgets\",\n );\n return `https://${DEFAULT_API_HOSTNAME}`;\n }\n }, [apiHostname, https, port]);\n\n return (\n <QueryClientProviderImpl client={queryClient}>\n <RadixThemes\n {...radixThemesProps}\n style={customStyle}\n className={cx(namespaceClassNames(\"root\"), className)}\n >\n <WidgetsContext.Provider value={{ elements, apiBaseUrl }}>\n {children}\n </WidgetsContext.Provider>\n </RadixThemes>\n </QueryClientProviderImpl>\n );\n};\n\nconst QueryClientProviderImpl = ({\n client: providedClient,\n children,\n}: {\n client: QueryClient | undefined;\n children: React.ReactNode;\n}) => {\n let queryClient: QueryClient;\n if (providedClient) {\n queryClient = providedClient;\n } else if (queryClientInternal) {\n queryClient = queryClientInternal;\n } else {\n queryClientInternal = new QueryClient();\n queryClient = queryClientInternal;\n }\n\n const client = useQueryClient(queryClient);\n if (Object.is(client, providedClient)) {\n // No need for a new context provider if the user provided the client to\n // their own provider, which has already mounted the client.\n return <>{children}</>;\n }\n\n return <QueryClientProvider client={client}>{children}</QueryClientProvider>;\n};\n"],"mappings":";AA4EQ,SA6BG,UA7BH;AA1ER,SAAS,SAAS,mBAAmB;AAErC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,OAAO,QAAQ;AACf,YAAY,WAAW;AACvB,SAAS,2BAA2B;AACpC,SAAS,4BAA4B;AAErC,SAAS,sBAAsB;AAE/B,IAAI;AAoBG,MAAM,gBAA8C,CAAC;AAAA,EAC1D,WAAW,CAAC;AAAA,EACZ;AAAA,EACA,OAAO,EAAE,YAAY,GAAG,iBAAiB,IAAI,CAAC;AAAA,EAC9C,QAAQ,CAAC;AAAA,EACT;AAAA,EACA,cAAc;AAAA,EACd,OAAO;AAAA,EACP,QAAQ;AAAA,EACR;AACF,MAAM;AACJ,QAAM,cAAmC,aACrC;AAAA,IACE,yBAAyB;AAAA,IACzB,GAAG;AAAA,EACL,IACA;AAEJ,QAAM,aAAa,MAAM,QAAQ,MAAM;AACrC,QAAI;AACF,YAAM,MAAM,IAAI;AAAA,QACd;AAAA,QACA,GAAG,QAAQ,UAAU,MAAM,MAAM,WAAW,GAAG,OAAO,IAAI,IAAI,KAAK,EAAE;AAAA,MACvE;AACA,aAAO,IAAI,SAAS,EAAE,MAAM,GAAG,EAAE;AAAA,IACnC,QAAQ;AACN,cAAQ;AAAA,QACN;AAAA,MACF;AACA,aAAO,WAAW,oBAAoB;AAAA,IACxC;AAAA,EACF,GAAG,CAAC,aAAa,OAAO,IAAI,CAAC;AAE7B,SACE,oBAAC,2BAAwB,QAAQ,aAC/B;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,OAAO;AAAA,MACP,WAAW,GAAG,oBAAoB,MAAM,GAAG,SAAS;AAAA,MAEpD,8BAAC,eAAe,UAAf,EAAwB,OAAO,EAAE,UAAU,WAAW,GACpD,UACH;AAAA;AAAA,EACF,GACF;AAEJ;AAEA,MAAM,0BAA0B,CAAC;AAAA,EAC/B,QAAQ;AAAA,EACR;AACF,MAGM;AACJ,MAAI;AACJ,MAAI,gBAAgB;AAClB,kBAAc;AAAA,EAChB,WAAW,qBAAqB;AAC9B,kBAAc;AAAA,EAChB,OAAO;AACL,0BAAsB,IAAI,YAAY;AACtC,kBAAc;AAAA,EAChB;AAEA,QAAM,SAAS,eAAe,WAAW;AACzC,MAAI,OAAO,GAAG,QAAQ,cAAc,GAAG;AAGrC,WAAO,gCAAG,UAAS;AAAA,EACrB;AAEA,SAAO,oBAAC,uBAAoB,QAAiB,UAAS;AACxD;","names":[]}
1
+ {"version":3,"sources":["../../src/workos-widgets.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { Theme as RadixThemes } from \"@radix-ui/themes\";\nimport type { GetPropDefTypes, themePropDefs } from \"@radix-ui/themes/props\";\nimport {\n QueryClient,\n QueryClientProvider,\n useQueryClient,\n} from \"@tanstack/react-query\";\nimport cx from \"clsx\";\nimport * as React from \"react\";\nimport { namespaceClassNames } from \"./lib/utils.js\";\nimport { DEFAULT_API_HOSTNAME } from \"./lib/api/config.js\";\nimport type { Elements } from \"./lib/elements.js\";\nimport { WidgetsContext } from \"./lib/widgets-context.js\";\nimport { WIDGETS_DATA_ATTRIBUTE_NAMESPACE } from \"./lib/constants.js\";\n\nexport interface WorkOsWidgetsProps {\n elements?: Elements;\n theme?: Omit<GetPropDefTypes<typeof themePropDefs>, \"asChild\"> & {\n fontFamily?: string;\n };\n style?: React.CSSProperties;\n className?: string;\n children: React.ReactNode;\n apiHostname?: string;\n port?: number | null;\n https?: boolean;\n /**\n * Optional query client for users who are already using Tanstack Query. If\n * not provided, a new query client will be created and mounted internally.\n */\n queryClient?: QueryClient;\n}\n\nexport const WorkOsWidgets: React.FC<WorkOsWidgetsProps> = ({\n elements = {},\n theme: { fontFamily, ...radixThemesProps } = {},\n style = {},\n children,\n apiHostname = DEFAULT_API_HOSTNAME,\n port = null,\n https = true,\n queryClient,\n className,\n}) => {\n const customStyle: React.CSSProperties = fontFamily\n ? {\n \"--default-font-family\": fontFamily,\n ...style,\n }\n : style;\n\n const apiBaseUrl = React.useMemo(() => {\n try {\n const url = new URL(\n \"/\",\n `${https ? \"https\" : \"http\"}://${apiHostname}${port ? `:${port}` : \"\"}`,\n );\n return url.toString().slice(0, -1);\n } catch {\n console.error(\n \"Failed to validate the WorkOS API URL. Check to ensure that valid `apiHostname` and `port` props are passed to WorkOsWidgets\",\n );\n return `https://${DEFAULT_API_HOSTNAME}`;\n }\n }, [apiHostname, https, port]);\n\n return (\n <QueryClientProviderImpl client={queryClient}>\n <RadixThemes\n {...radixThemesProps}\n {...{ [`data-${WIDGETS_DATA_ATTRIBUTE_NAMESPACE}-root`]: true }}\n style={customStyle}\n className={cx(namespaceClassNames(\"root\"), className)}\n >\n <WidgetsContext.Provider value={{ elements, apiBaseUrl }}>\n {children}\n </WidgetsContext.Provider>\n </RadixThemes>\n </QueryClientProviderImpl>\n );\n};\n\nconst QueryClientProviderImpl = ({\n client: providedClient,\n children,\n}: {\n client: QueryClient | undefined;\n children: React.ReactNode;\n}) => {\n const [queryClient] = React.useState(\n () => providedClient ?? new QueryClient(),\n );\n\n const client = useQueryClient(queryClient);\n if (Object.is(client, providedClient)) {\n // No need for a new context provider if the user provided the client to\n // their own provider, which has already mounted the client.\n return <>{children}</>;\n }\n\n return <QueryClientProvider client={client}>{children}</QueryClientProvider>;\n};\n"],"mappings":";AA4EQ,SAuBG,UAvBH;AA1ER,SAAS,SAAS,mBAAmB;AAErC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,OAAO,QAAQ;AACf,YAAY,WAAW;AACvB,SAAS,2BAA2B;AACpC,SAAS,4BAA4B;AAErC,SAAS,sBAAsB;AAC/B,SAAS,wCAAwC;AAoB1C,MAAM,gBAA8C,CAAC;AAAA,EAC1D,WAAW,CAAC;AAAA,EACZ,OAAO,EAAE,YAAY,GAAG,iBAAiB,IAAI,CAAC;AAAA,EAC9C,QAAQ,CAAC;AAAA,EACT;AAAA,EACA,cAAc;AAAA,EACd,OAAO;AAAA,EACP,QAAQ;AAAA,EACR;AAAA,EACA;AACF,MAAM;AACJ,QAAM,cAAmC,aACrC;AAAA,IACE,yBAAyB;AAAA,IACzB,GAAG;AAAA,EACL,IACA;AAEJ,QAAM,aAAa,MAAM,QAAQ,MAAM;AACrC,QAAI;AACF,YAAM,MAAM,IAAI;AAAA,QACd;AAAA,QACA,GAAG,QAAQ,UAAU,MAAM,MAAM,WAAW,GAAG,OAAO,IAAI,IAAI,KAAK,EAAE;AAAA,MACvE;AACA,aAAO,IAAI,SAAS,EAAE,MAAM,GAAG,EAAE;AAAA,IACnC,QAAQ;AACN,cAAQ;AAAA,QACN;AAAA,MACF;AACA,aAAO,WAAW,oBAAoB;AAAA,IACxC;AAAA,EACF,GAAG,CAAC,aAAa,OAAO,IAAI,CAAC;AAE7B,SACE,oBAAC,2BAAwB,QAAQ,aAC/B;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACH,GAAG,EAAE,CAAC,QAAQ,gCAAgC,OAAO,GAAG,KAAK;AAAA,MAC9D,OAAO;AAAA,MACP,WAAW,GAAG,oBAAoB,MAAM,GAAG,SAAS;AAAA,MAEpD,8BAAC,eAAe,UAAf,EAAwB,OAAO,EAAE,UAAU,WAAW,GACpD,UACH;AAAA;AAAA,EACF,GACF;AAEJ;AAEA,MAAM,0BAA0B,CAAC;AAAA,EAC/B,QAAQ;AAAA,EACR;AACF,MAGM;AACJ,QAAM,CAAC,WAAW,IAAI,MAAM;AAAA,IAC1B,MAAM,kBAAkB,IAAI,YAAY;AAAA,EAC1C;AAEA,QAAM,SAAS,eAAe,WAAW;AACzC,MAAI,OAAO,GAAG,QAAQ,cAAc,GAAG;AAGrC,WAAO,gCAAG,UAAS;AAAA,EACrB;AAEA,SAAO,oBAAC,uBAAoB,QAAiB,UAAS;AACxD;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workos-inc/widgets",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "exports": {
@@ -53,18 +53,26 @@
53
53
  "react-dom": ">=18"
54
54
  },
55
55
  "devDependencies": {
56
+ "@radix-ui/react-compose-refs": "^1.1.2",
57
+ "@radix-ui/react-form": "^0.1.8",
58
+ "@radix-ui/react-icons": "^1.3.2",
59
+ "@radix-ui/react-popover": "^1.1.15",
60
+ "@radix-ui/react-use-controllable-state": "^1.2.2",
56
61
  "@radix-ui/themes": "^3.2.1",
57
- "@tanstack/react-query": "^5.89.0",
58
- "@types/node": "^22",
59
- "@types/react": "^19.1.13",
60
- "@types/react-dom": "^19.1.9",
62
+ "@tanstack/react-query": "^5.90.10",
63
+ "@types/node": "^24",
64
+ "@types/react": "^19.2.6",
65
+ "@types/react-dom": "^19.2.3",
66
+ "clsx": "^2.1.1",
61
67
  "execa": "^9.6.0",
62
68
  "fast-glob": "^3.3.3",
63
- "orval": "^7.11.2",
64
- "react": "^19.1.1",
65
- "react-dom": "^19.1.1",
66
- "tsup": "^8.5.0",
67
- "typescript": "^5.9.2",
69
+ "orval": "^7.16.1",
70
+ "react": "^19.2.0",
71
+ "react-dom": "^19.2.0",
72
+ "tsup": "^8.5.1",
73
+ "typescript": "^5.9.3",
74
+ "use-debounce": "^10.0.6",
75
+ "@repo/eslint-config": "0.0.0",
68
76
  "@repo/typescript-config": "0.0.0"
69
77
  },
70
78
  "typesVersions": {
@@ -82,6 +90,8 @@
82
90
  "typecheck": "tsc --noEmit",
83
91
  "clean": "rm -rf .turbo && rm -rf node_modules && pnpm clean:dist",
84
92
  "clean:dist": "rm -rf dist",
93
+ "lint": "eslint --max-warnings 0 .",
94
+ "lint:fix": "eslint --max-warnings 0 --fix .",
85
95
  "generate-api": "orval --config ./orval.config.ts"
86
96
  },
87
97
  "main": "./dist/cjs/index.cjs",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/admin-portal-sso-connection-client.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n AdminPortalOpenButton,\n AdminPortalSsoConnectionError,\n AdminPortalSsoConnectionLoading,\n AdminPortalSsoConnection as AdminPortalSsoConnectionPresentational,\n type AdminPortalSsoConnectionStatusProps,\n} from \"./lib/admin-portal-sso-connection.js\";\nimport { useIsHydrated } from \"./lib/use-is-hydrated.js\";\nimport { ApiProvider, AuthToken } from \"./api/api-provider.js\";\nimport {\n type SsoConnection,\n useGenerateAdminPortalLink,\n useListSsoConnections,\n} from \"./api/endpoint.js\";\nimport { useWorkOsApiUrl } from \"./lib/widgets-context.js\";\nimport { ErrorBoundary } from \"./lib/error-boundary.js\";\nimport { unreachable } from \"./lib/utils.js\";\nimport { IdentityProvider } from \"./lib/identity-providers.js\";\n\nexport interface AdminPortalSsoConnectionProps {\n authToken: AuthToken;\n}\n\nexport const AdminPortalSsoConnection: React.FC<\n AdminPortalSsoConnectionProps\n> = ({ authToken }) => {\n const baseUrl = useWorkOsApiUrl();\n return (\n <ApiProvider\n widgetType=\"admin-portal-sso-connection\"\n authToken={authToken}\n baseUrl={baseUrl}\n >\n <SingleSignOnContent />\n </ApiProvider>\n );\n};\n\nexport { AdminPortalSsoConnectionLoading };\n\nconst SingleSignOnContent = () => {\n const isHydrated = useIsHydrated();\n const [currentDate, setCurrentDate] = React.useState<Date | null>(() =>\n isHydrated ? new Date() : null,\n );\n if (isHydrated && currentDate === null) {\n setCurrentDate(new Date());\n }\n\n const { mutate: generateAdminPortalLink, ...mutation } =\n useGenerateAdminPortalLink({\n mutation: {\n onSuccess: (data) => {\n window.open(data.link, \"_blank\", \"noopener,noreferrer\");\n },\n },\n });\n\n const adminPortalLink = mutation.data?.link ?? null;\n\n const query = useListSsoConnections();\n\n const initConfig = () => {\n generateAdminPortalLink({\n params: {\n intent: \"sso\",\n },\n });\n };\n\n if (query.isLoading) {\n return <AdminPortalSsoConnectionLoading />;\n }\n\n if (query.isError) {\n return <AdminPortalSsoConnectionError error={query.error} />;\n }\n\n if (query.data) {\n const connection = query.data[0];\n if (!connection) {\n return (\n <AdminPortalSsoConnectionPresentational\n connectionStatus=\"NotConfigured\"\n currentDate={currentDate}\n lastSession={null}\n adminPortalOpenButton={\n <AdminPortalOpenButton\n isPending={mutation.isPending}\n href={adminPortalLink}\n initConfig={initConfig}\n />\n }\n />\n );\n }\n\n const connectionState = getConnectionState(connection, currentDate);\n const props: AdminPortalSsoConnectionStatusProps = (() => {\n const connectionStatus = connectionState.status;\n if (!connection || connectionStatus === \"NotConfigured\") {\n return {\n connectionStatus: \"NotConfigured\",\n } satisfies AdminPortalSsoConnectionStatusProps;\n }\n\n const identityProvider = getIdentityProvider(connection);\n switch (connectionStatus) {\n case \"Active\":\n return {\n connectionStatus,\n identityProvider,\n } satisfies AdminPortalSsoConnectionStatusProps;\n case \"Inactive\":\n return {\n connectionStatus,\n identityProvider,\n } satisfies AdminPortalSsoConnectionStatusProps;\n case \"Expired\":\n case \"Expiring\":\n return {\n connectionStatus,\n expiryDate: connectionState.expiryDate,\n identityProvider,\n } satisfies AdminPortalSsoConnectionStatusProps;\n default:\n return unreachable(connectionState);\n }\n })();\n\n const lastSession = connection.lastSession\n ? new Date(connection.lastSession.createdAt)\n : null;\n\n return (\n <ErrorBoundary FallbackComponent={AdminPortalSsoConnectionError}>\n <AdminPortalSsoConnectionPresentational\n {...props}\n currentDate={currentDate}\n lastSession={lastSession}\n adminPortalOpenButton={\n <AdminPortalOpenButton\n isPending={mutation.isPending}\n href={adminPortalLink}\n initConfig={initConfig}\n />\n }\n />\n </ErrorBoundary>\n );\n }\n};\n\ntype ConnectionState =\n | { status: \"NotConfigured\" }\n | { status: \"Active\" }\n | { status: \"Inactive\" }\n | {\n status: \"Expiring\";\n daysUntilExpiry: number | null;\n expiryDate: Date | null;\n }\n | { status: \"Expired\"; expiryDate: Date | null };\n\nfunction getConnectionState(\n connection: SsoConnection,\n currentDate: Date | null,\n): ConnectionState {\n switch (connection.state) {\n case \"Active\":\n case \"Validating\":\n case \"Deleting\": {\n const activeStatus = { status: \"Active\" } satisfies ConnectionState;\n if (connection.providerTag !== \"Saml\") {\n return activeStatus;\n }\n\n if (connection.latestExpiredCertificate) {\n return {\n status: \"Expired\",\n expiryDate: connection.latestExpiredCertificate.notAfter\n ? new Date(connection.latestExpiredCertificate.notAfter)\n : null,\n };\n }\n\n const expiryTime = connection.latestExpiringCertificate?.notAfter;\n if (currentDate == null || expiryTime == null) {\n return activeStatus;\n }\n\n const expiryDate = new Date(expiryTime);\n const daysUntilExpiry = (() => {\n const diff = expiryDate.getTime() - currentDate.getTime();\n if (diff < 0) {\n return -1;\n }\n\n return diff / (1000 * 60 * 60 * 24);\n })();\n\n if (daysUntilExpiry !== -1 && daysUntilExpiry <= 30) {\n return { status: \"Expiring\", daysUntilExpiry, expiryDate };\n }\n\n return activeStatus;\n }\n case \"Inactive\": {\n return { status: \"Inactive\" };\n }\n default:\n return unreachable(connection);\n }\n}\n\nfunction getIdentityProvider(connection: SsoConnection): IdentityProvider {\n switch (connection.type) {\n case \"AdfsSaml\":\n case \"EntraIdOidc\":\n return \"microsoft\";\n case \"Auth0Migration\":\n case \"Auth0Saml\":\n return \"auth0\";\n case \"AzureSaml\":\n return \"azure\";\n case \"CasSaml\":\n return \"cas\";\n case \"ClassLinkSaml\":\n return \"classlink\";\n case \"CloudflareSaml\":\n return \"cloudflare\";\n case \"CyberArkSaml\":\n return \"cyberark\";\n case \"DuoSaml\":\n return \"duo\";\n case \"GenericSaml\":\n return \"generic-saml\";\n case \"GoogleSaml\":\n case \"GoogleOidc\":\n return \"google\";\n case \"JumpCloudSaml\":\n return \"jumpcloud\";\n case \"KeycloakSaml\":\n return \"keycloak\";\n case \"LastPassSaml\":\n return \"lastpass\";\n case \"MiniOrangeSaml\":\n return \"miniorange\";\n case \"NetIqSaml\":\n return \"net-iq\";\n case \"OktaOidc\":\n case \"OktaSaml\":\n return \"okta\";\n case \"OneLoginSaml\":\n return \"onelogin\";\n case \"OracleSaml\":\n return \"oracle\";\n case \"PingFederateSaml\":\n case \"PingOneSaml\":\n return \"ping-identity\";\n case \"RipplingSaml\":\n return \"rippling\";\n case \"SalesforceSaml\":\n return \"salesforce\";\n case \"ShibbolethGenericSaml\":\n case \"ShibbolethSaml\":\n return \"shibboleth\";\n case \"SimpleSamlPhpSaml\":\n return \"simple-saml-php\";\n case \"TestIdp\":\n return \"test-idp\";\n case \"VmWareSaml\":\n return \"vmware\";\n case \"AdpOidc\":\n return \"adp\";\n case \"GenericOidc\":\n return \"generic-oidc\";\n case \"LoginGovOidc\":\n return \"login-gov\";\n default:\n return unreachable(connection);\n }\n}\n"],"mappings":"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","names":["AdminPortalSsoConnectionPresentational"]}
@@ -1,12 +0,0 @@
1
- import * as React from 'react';
2
- export { AdminPortalSsoConnectionLoading } from './lib/admin-portal-sso-connection.cjs';
3
- import { AuthToken } from './api/api-provider.cjs';
4
- import 'react/jsx-runtime';
5
- import './lib/identity-providers.cjs';
6
-
7
- interface AdminPortalSsoConnectionProps {
8
- authToken: AuthToken;
9
- }
10
- declare const AdminPortalSsoConnection: React.FC<AdminPortalSsoConnectionProps>;
11
-
12
- export { AdminPortalSsoConnection, type AdminPortalSsoConnectionProps };