@thunderid/react 0.3.3 → 0.3.5

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 (255) hide show
  1. package/dist/ThunderIDReactClient.d.ts +1 -5
  2. package/dist/ThunderIDReactClient.d.ts.map +1 -1
  3. package/dist/ThunderIDReactClient.js +1 -68
  4. package/dist/ThunderIDReactClient.js.map +1 -1
  5. package/dist/cjs/ThunderIDReactClient.cjs +0 -67
  6. package/dist/cjs/ThunderIDReactClient.cjs.map +1 -1
  7. package/dist/cjs/components/presentation/LanguageSwitcher/BaseLanguageSwitcher.cjs +1 -1
  8. package/dist/cjs/components/presentation/UserAvatar/BaseUserAvatar.cjs +57 -0
  9. package/dist/cjs/components/presentation/UserAvatar/BaseUserAvatar.cjs.map +1 -0
  10. package/dist/cjs/components/presentation/UserAvatar/UserAvatar.cjs +36 -0
  11. package/dist/cjs/components/presentation/UserAvatar/UserAvatar.cjs.map +1 -0
  12. package/dist/cjs/components/presentation/UserDropdown/BaseUserDropdown.cjs +6 -5
  13. package/dist/cjs/components/presentation/UserDropdown/BaseUserDropdown.cjs.map +1 -1
  14. package/dist/cjs/components/presentation/auth/AuthOptionFactory.cjs +3 -15
  15. package/dist/cjs/components/presentation/auth/AuthOptionFactory.cjs.map +1 -1
  16. package/dist/cjs/contexts/Theme/ThemeContext.cjs.map +1 -1
  17. package/dist/cjs/contexts/Theme/ThemeProvider.cjs +2 -5
  18. package/dist/cjs/contexts/Theme/ThemeProvider.cjs.map +1 -1
  19. package/dist/cjs/contexts/ThunderID/ThunderIDContext.cjs +0 -2
  20. package/dist/cjs/contexts/ThunderID/ThunderIDContext.cjs.map +1 -1
  21. package/dist/cjs/contexts/ThunderID/ThunderIDProvider.cjs +14 -90
  22. package/dist/cjs/contexts/ThunderID/ThunderIDProvider.cjs.map +1 -1
  23. package/dist/cjs/index.cjs +6 -51
  24. package/dist/components/presentation/LanguageSwitcher/BaseLanguageSwitcher.js +1 -1
  25. package/dist/components/presentation/UserAvatar/BaseUserAvatar.d.ts +50 -0
  26. package/dist/components/presentation/UserAvatar/BaseUserAvatar.d.ts.map +1 -0
  27. package/dist/components/presentation/UserAvatar/BaseUserAvatar.js +55 -0
  28. package/dist/components/presentation/UserAvatar/BaseUserAvatar.js.map +1 -0
  29. package/dist/components/presentation/UserAvatar/UserAvatar.d.ts +46 -0
  30. package/dist/components/presentation/UserAvatar/UserAvatar.d.ts.map +1 -0
  31. package/dist/components/presentation/UserAvatar/UserAvatar.js +34 -0
  32. package/dist/components/presentation/UserAvatar/UserAvatar.js.map +1 -0
  33. package/dist/components/presentation/UserDropdown/BaseUserDropdown.d.ts.map +1 -1
  34. package/dist/components/presentation/UserDropdown/BaseUserDropdown.js +6 -5
  35. package/dist/components/presentation/UserDropdown/BaseUserDropdown.js.map +1 -1
  36. package/dist/components/presentation/auth/AuthOptionFactory.d.ts +2 -2
  37. package/dist/components/presentation/auth/AuthOptionFactory.d.ts.map +1 -1
  38. package/dist/components/presentation/auth/AuthOptionFactory.js +3 -15
  39. package/dist/components/presentation/auth/AuthOptionFactory.js.map +1 -1
  40. package/dist/contexts/Theme/ThemeContext.d.ts +0 -12
  41. package/dist/contexts/Theme/ThemeContext.d.ts.map +1 -1
  42. package/dist/contexts/Theme/ThemeContext.js.map +1 -1
  43. package/dist/contexts/Theme/ThemeProvider.d.ts +0 -4
  44. package/dist/contexts/Theme/ThemeProvider.d.ts.map +1 -1
  45. package/dist/contexts/Theme/ThemeProvider.js +2 -5
  46. package/dist/contexts/Theme/ThemeProvider.js.map +1 -1
  47. package/dist/contexts/ThunderID/ThunderIDContext.d.ts +2 -3
  48. package/dist/contexts/ThunderID/ThunderIDContext.d.ts.map +1 -1
  49. package/dist/contexts/ThunderID/ThunderIDContext.js +0 -2
  50. package/dist/contexts/ThunderID/ThunderIDContext.js.map +1 -1
  51. package/dist/contexts/ThunderID/ThunderIDProvider.d.ts.map +1 -1
  52. package/dist/contexts/ThunderID/ThunderIDProvider.js +15 -91
  53. package/dist/contexts/ThunderID/ThunderIDProvider.js.map +1 -1
  54. package/dist/index.d.ts +4 -40
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +5 -27
  57. package/package.json +2 -2
  58. package/dist/api/createOrganization.d.ts +0 -86
  59. package/dist/api/createOrganization.d.ts.map +0 -1
  60. package/dist/api/createOrganization.js +0 -80
  61. package/dist/api/createOrganization.js.map +0 -1
  62. package/dist/api/getAllOrganizations.d.ts +0 -78
  63. package/dist/api/getAllOrganizations.d.ts.map +0 -1
  64. package/dist/api/getAllOrganizations.js +0 -71
  65. package/dist/api/getAllOrganizations.js.map +0 -1
  66. package/dist/api/getMeOrganizations.d.ts +0 -82
  67. package/dist/api/getMeOrganizations.d.ts.map +0 -1
  68. package/dist/api/getMeOrganizations.js +0 -75
  69. package/dist/api/getMeOrganizations.js.map +0 -1
  70. package/dist/api/getOrganization.d.ts +0 -74
  71. package/dist/api/getOrganization.d.ts.map +0 -1
  72. package/dist/api/getOrganization.js +0 -67
  73. package/dist/api/getOrganization.js.map +0 -1
  74. package/dist/api/getSchemas.d.ts +0 -72
  75. package/dist/api/getSchemas.d.ts.map +0 -1
  76. package/dist/api/getSchemas.js +0 -65
  77. package/dist/api/getSchemas.js.map +0 -1
  78. package/dist/api/updateOrganization.d.ts +0 -81
  79. package/dist/api/updateOrganization.d.ts.map +0 -1
  80. package/dist/api/updateOrganization.js +0 -74
  81. package/dist/api/updateOrganization.js.map +0 -1
  82. package/dist/cjs/api/createOrganization.cjs +0 -82
  83. package/dist/cjs/api/createOrganization.cjs.map +0 -1
  84. package/dist/cjs/api/getAllOrganizations.cjs +0 -73
  85. package/dist/cjs/api/getAllOrganizations.cjs.map +0 -1
  86. package/dist/cjs/api/getMeOrganizations.cjs +0 -77
  87. package/dist/cjs/api/getMeOrganizations.cjs.map +0 -1
  88. package/dist/cjs/api/getOrganization.cjs +0 -69
  89. package/dist/cjs/api/getOrganization.cjs.map +0 -1
  90. package/dist/cjs/api/getSchemas.cjs +0 -67
  91. package/dist/cjs/api/getSchemas.cjs.map +0 -1
  92. package/dist/cjs/api/updateOrganization.cjs +0 -76
  93. package/dist/cjs/api/updateOrganization.cjs.map +0 -1
  94. package/dist/cjs/components/control/OrganizationContext/OrganizationContext.cjs +0 -34
  95. package/dist/cjs/components/control/OrganizationContext/OrganizationContext.cjs.map +0 -1
  96. package/dist/cjs/components/control/OrganizationContext/OrganizationContextController.cjs +0 -58
  97. package/dist/cjs/components/control/OrganizationContext/OrganizationContextController.cjs.map +0 -1
  98. package/dist/cjs/components/presentation/CreateOrganization/BaseCreateOrganization.cjs +0 -183
  99. package/dist/cjs/components/presentation/CreateOrganization/BaseCreateOrganization.cjs.map +0 -1
  100. package/dist/cjs/components/presentation/CreateOrganization/BaseCreateOrganization.styles.cjs +0 -150
  101. package/dist/cjs/components/presentation/CreateOrganization/BaseCreateOrganization.styles.cjs.map +0 -1
  102. package/dist/cjs/components/presentation/CreateOrganization/CreateOrganization.cjs +0 -90
  103. package/dist/cjs/components/presentation/CreateOrganization/CreateOrganization.cjs.map +0 -1
  104. package/dist/cjs/components/presentation/Organization/BaseOrganization.cjs +0 -41
  105. package/dist/cjs/components/presentation/Organization/BaseOrganization.cjs.map +0 -1
  106. package/dist/cjs/components/presentation/Organization/Organization.cjs +0 -49
  107. package/dist/cjs/components/presentation/Organization/Organization.cjs.map +0 -1
  108. package/dist/cjs/components/presentation/OrganizationList/BaseOrganizationList.cjs +0 -257
  109. package/dist/cjs/components/presentation/OrganizationList/BaseOrganizationList.cjs.map +0 -1
  110. package/dist/cjs/components/presentation/OrganizationList/BaseOrganizationList.styles.cjs +0 -236
  111. package/dist/cjs/components/presentation/OrganizationList/BaseOrganizationList.styles.cjs.map +0 -1
  112. package/dist/cjs/components/presentation/OrganizationList/OrganizationList.cjs +0 -86
  113. package/dist/cjs/components/presentation/OrganizationList/OrganizationList.cjs.map +0 -1
  114. package/dist/cjs/components/presentation/OrganizationList/OrganizationList.styles.cjs +0 -75
  115. package/dist/cjs/components/presentation/OrganizationList/OrganizationList.styles.cjs.map +0 -1
  116. package/dist/cjs/components/presentation/OrganizationProfile/BaseOrganizationProfile.cjs +0 -328
  117. package/dist/cjs/components/presentation/OrganizationProfile/BaseOrganizationProfile.cjs.map +0 -1
  118. package/dist/cjs/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.cjs +0 -166
  119. package/dist/cjs/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.cjs.map +0 -1
  120. package/dist/cjs/components/presentation/OrganizationProfile/OrganizationProfile.cjs +0 -126
  121. package/dist/cjs/components/presentation/OrganizationProfile/OrganizationProfile.cjs.map +0 -1
  122. package/dist/cjs/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.cjs +0 -288
  123. package/dist/cjs/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.cjs.map +0 -1
  124. package/dist/cjs/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.cjs +0 -237
  125. package/dist/cjs/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.cjs.map +0 -1
  126. package/dist/cjs/components/presentation/OrganizationSwitcher/OrganizationSwitcher.cjs +0 -127
  127. package/dist/cjs/components/presentation/OrganizationSwitcher/OrganizationSwitcher.cjs.map +0 -1
  128. package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.cjs +0 -183
  129. package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.cjs.map +0 -1
  130. package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.cjs +0 -128
  131. package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.cjs.map +0 -1
  132. package/dist/cjs/components/primitives/Icons/Building.cjs +0 -75
  133. package/dist/cjs/components/primitives/Icons/Building.cjs.map +0 -1
  134. package/dist/cjs/contexts/Branding/BrandingContext.cjs +0 -12
  135. package/dist/cjs/contexts/Branding/BrandingContext.cjs.map +0 -1
  136. package/dist/cjs/contexts/Branding/BrandingProvider.cjs +0 -96
  137. package/dist/cjs/contexts/Branding/BrandingProvider.cjs.map +0 -1
  138. package/dist/cjs/contexts/Branding/useBrandingContext.cjs +0 -40
  139. package/dist/cjs/contexts/Branding/useBrandingContext.cjs.map +0 -1
  140. package/dist/cjs/contexts/Organization/OrganizationContext.cjs +0 -27
  141. package/dist/cjs/contexts/Organization/OrganizationContext.cjs.map +0 -1
  142. package/dist/cjs/contexts/Organization/OrganizationProvider.cjs +0 -97
  143. package/dist/cjs/contexts/Organization/OrganizationProvider.cjs.map +0 -1
  144. package/dist/cjs/contexts/Organization/useOrganization.cjs +0 -100
  145. package/dist/cjs/contexts/Organization/useOrganization.cjs.map +0 -1
  146. package/dist/cjs/hooks/useBranding.cjs +0 -71
  147. package/dist/cjs/hooks/useBranding.cjs.map +0 -1
  148. package/dist/components/control/OrganizationContext/OrganizationContext.d.ts +0 -40
  149. package/dist/components/control/OrganizationContext/OrganizationContext.d.ts.map +0 -1
  150. package/dist/components/control/OrganizationContext/OrganizationContext.js +0 -32
  151. package/dist/components/control/OrganizationContext/OrganizationContext.js.map +0 -1
  152. package/dist/components/control/OrganizationContext/OrganizationContextController.d.ts +0 -35
  153. package/dist/components/control/OrganizationContext/OrganizationContextController.d.ts.map +0 -1
  154. package/dist/components/control/OrganizationContext/OrganizationContextController.js +0 -55
  155. package/dist/components/control/OrganizationContext/OrganizationContextController.js.map +0 -1
  156. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.d.ts +0 -60
  157. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.d.ts.map +0 -1
  158. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.js +0 -178
  159. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.js.map +0 -1
  160. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.styles.d.ts +0 -27
  161. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.styles.d.ts.map +0 -1
  162. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.styles.js +0 -147
  163. package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.styles.js.map +0 -1
  164. package/dist/components/presentation/CreateOrganization/CreateOrganization.d.ts +0 -68
  165. package/dist/components/presentation/CreateOrganization/CreateOrganization.d.ts.map +0 -1
  166. package/dist/components/presentation/CreateOrganization/CreateOrganization.js +0 -87
  167. package/dist/components/presentation/CreateOrganization/CreateOrganization.js.map +0 -1
  168. package/dist/components/presentation/Organization/BaseOrganization.d.ts +0 -67
  169. package/dist/components/presentation/Organization/BaseOrganization.d.ts.map +0 -1
  170. package/dist/components/presentation/Organization/BaseOrganization.js +0 -39
  171. package/dist/components/presentation/Organization/BaseOrganization.js.map +0 -1
  172. package/dist/components/presentation/Organization/Organization.d.ts +0 -67
  173. package/dist/components/presentation/Organization/Organization.d.ts.map +0 -1
  174. package/dist/components/presentation/Organization/Organization.js +0 -47
  175. package/dist/components/presentation/Organization/Organization.js.map +0 -1
  176. package/dist/components/presentation/OrganizationList/BaseOrganizationList.d.ts +0 -135
  177. package/dist/components/presentation/OrganizationList/BaseOrganizationList.d.ts.map +0 -1
  178. package/dist/components/presentation/OrganizationList/BaseOrganizationList.js +0 -252
  179. package/dist/components/presentation/OrganizationList/BaseOrganizationList.js.map +0 -1
  180. package/dist/components/presentation/OrganizationList/BaseOrganizationList.styles.d.ts +0 -27
  181. package/dist/components/presentation/OrganizationList/BaseOrganizationList.styles.d.ts.map +0 -1
  182. package/dist/components/presentation/OrganizationList/BaseOrganizationList.styles.js +0 -233
  183. package/dist/components/presentation/OrganizationList/BaseOrganizationList.styles.js.map +0 -1
  184. package/dist/components/presentation/OrganizationList/OrganizationList.d.ts +0 -93
  185. package/dist/components/presentation/OrganizationList/OrganizationList.d.ts.map +0 -1
  186. package/dist/components/presentation/OrganizationList/OrganizationList.js +0 -82
  187. package/dist/components/presentation/OrganizationList/OrganizationList.js.map +0 -1
  188. package/dist/components/presentation/OrganizationList/OrganizationList.styles.d.ts +0 -27
  189. package/dist/components/presentation/OrganizationList/OrganizationList.styles.d.ts.map +0 -1
  190. package/dist/components/presentation/OrganizationList/OrganizationList.styles.js +0 -72
  191. package/dist/components/presentation/OrganizationList/OrganizationList.styles.js.map +0 -1
  192. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.d.ts +0 -160
  193. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.d.ts.map +0 -1
  194. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.js +0 -323
  195. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.js.map +0 -1
  196. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.d.ts +0 -27
  197. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.d.ts.map +0 -1
  198. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.js +0 -163
  199. package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.js.map +0 -1
  200. package/dist/components/presentation/OrganizationProfile/OrganizationProfile.d.ts +0 -120
  201. package/dist/components/presentation/OrganizationProfile/OrganizationProfile.d.ts.map +0 -1
  202. package/dist/components/presentation/OrganizationProfile/OrganizationProfile.js +0 -122
  203. package/dist/components/presentation/OrganizationProfile/OrganizationProfile.js.map +0 -1
  204. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.d.ts +0 -149
  205. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.d.ts.map +0 -1
  206. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.js +0 -282
  207. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.js.map +0 -1
  208. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.d.ts +0 -27
  209. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.d.ts.map +0 -1
  210. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.js +0 -234
  211. package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.js.map +0 -1
  212. package/dist/components/presentation/OrganizationSwitcher/OrganizationSwitcher.d.ts +0 -71
  213. package/dist/components/presentation/OrganizationSwitcher/OrganizationSwitcher.d.ts.map +0 -1
  214. package/dist/components/presentation/OrganizationSwitcher/OrganizationSwitcher.js +0 -124
  215. package/dist/components/presentation/OrganizationSwitcher/OrganizationSwitcher.js.map +0 -1
  216. package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.d.ts +0 -30
  217. package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.d.ts.map +0 -1
  218. package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.js +0 -179
  219. package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.js.map +0 -1
  220. package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.d.ts +0 -21
  221. package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.d.ts.map +0 -1
  222. package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.js +0 -125
  223. package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.js.map +0 -1
  224. package/dist/components/presentation/auth/OrganizationUnitPicker/index.d.ts +0 -20
  225. package/dist/components/presentation/auth/OrganizationUnitPicker/index.d.ts.map +0 -1
  226. package/dist/components/primitives/Icons/Building.js +0 -73
  227. package/dist/components/primitives/Icons/Building.js.map +0 -1
  228. package/dist/contexts/Branding/BrandingContext.d.ts +0 -53
  229. package/dist/contexts/Branding/BrandingContext.d.ts.map +0 -1
  230. package/dist/contexts/Branding/BrandingContext.js +0 -10
  231. package/dist/contexts/Branding/BrandingContext.js.map +0 -1
  232. package/dist/contexts/Branding/BrandingProvider.d.ts +0 -89
  233. package/dist/contexts/Branding/BrandingProvider.d.ts.map +0 -1
  234. package/dist/contexts/Branding/BrandingProvider.js +0 -92
  235. package/dist/contexts/Branding/BrandingProvider.js.map +0 -1
  236. package/dist/contexts/Branding/useBrandingContext.d.ts +0 -45
  237. package/dist/contexts/Branding/useBrandingContext.d.ts.map +0 -1
  238. package/dist/contexts/Branding/useBrandingContext.js +0 -38
  239. package/dist/contexts/Branding/useBrandingContext.js.map +0 -1
  240. package/dist/contexts/Organization/OrganizationContext.d.ts +0 -41
  241. package/dist/contexts/Organization/OrganizationContext.d.ts.map +0 -1
  242. package/dist/contexts/Organization/OrganizationContext.js +0 -25
  243. package/dist/contexts/Organization/OrganizationContext.js.map +0 -1
  244. package/dist/contexts/Organization/OrganizationProvider.d.ts +0 -94
  245. package/dist/contexts/Organization/OrganizationProvider.d.ts.map +0 -1
  246. package/dist/contexts/Organization/OrganizationProvider.js +0 -93
  247. package/dist/contexts/Organization/OrganizationProvider.js.map +0 -1
  248. package/dist/contexts/Organization/useOrganization.d.ts +0 -105
  249. package/dist/contexts/Organization/useOrganization.d.ts.map +0 -1
  250. package/dist/contexts/Organization/useOrganization.js +0 -98
  251. package/dist/contexts/Organization/useOrganization.js.map +0 -1
  252. package/dist/hooks/useBranding.d.ts +0 -128
  253. package/dist/hooks/useBranding.d.ts.map +0 -1
  254. package/dist/hooks/useBranding.js +0 -69
  255. package/dist/hooks/useBranding.js.map +0 -1
@@ -1,282 +0,0 @@
1
- import useTheme_default from "../../../contexts/Theme/useTheme.js";
2
- import useTranslation_default from "../../../hooks/useTranslation.js";
3
- import Button_default from "../../primitives/Button/Button.js";
4
- import Typography_default from "../../primitives/Typography/Typography.js";
5
- import { Avatar } from "../../primitives/Avatar/Avatar.js";
6
- import BaseOrganizationSwitcher_styles_default from "./BaseOrganizationSwitcher.styles.js";
7
- import Building_default from "../../primitives/Icons/Building.js";
8
- import Check_default from "../../primitives/Icons/Check.js";
9
- import ChevronDown_default from "../../primitives/Icons/ChevronDown.js";
10
- import { useState } from "react";
11
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
12
- import { cx } from "@emotion/css";
13
- import { FloatingFocusManager, FloatingPortal, autoUpdate, flip, offset, shift, useClick, useDismiss, useFloating, useInteractions, useRole } from "@floating-ui/react";
14
-
15
- //#region src/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.tsx
16
- /**
17
- * BaseOrganizationSwitcher component displays an organization selector with a dropdown menu.
18
- * When clicked, it shows a popover with available organizations to switch between.
19
- * This component serves as the base for framework-specific implementations.
20
- */
21
- const BaseOrganizationSwitcher = ({ organizations, currentOrganization, loading = false, error, onOrganizationSwitch, onManageProfile, className = "", style, renderOrganization, renderLoading, renderError, showRole = false, showMemberCount = true, menuItems = [], portalId = "thunderid-organization-switcher", showTriggerLabel = true, avatarSize = 24, fallback = null, preferences }) => {
22
- const { theme, colorScheme, direction } = useTheme_default();
23
- const styles = BaseOrganizationSwitcher_styles_default(theme, colorScheme);
24
- const [isOpen, setIsOpen] = useState(false);
25
- const [hoveredItemIndex, setHoveredItemIndex] = useState(null);
26
- const { t } = useTranslation_default(preferences?.i18n);
27
- const isRTL = direction === "rtl";
28
- const { refs, floatingStyles, context } = useFloating({
29
- middleware: [
30
- offset(5),
31
- flip({ fallbackAxisSideDirection: "end" }),
32
- shift({ padding: 5 })
33
- ],
34
- onOpenChange: setIsOpen,
35
- open: isOpen,
36
- placement: "bottom-end",
37
- whileElementsMounted: autoUpdate
38
- });
39
- const { getReferenceProps, getFloatingProps } = useInteractions([
40
- useClick(context),
41
- useDismiss(context),
42
- useRole(context)
43
- ]);
44
- if (fallback && !currentOrganization && !loading && organizations.length === 0) return fallback;
45
- const handleOrganizationSwitch = (organization) => {
46
- onOrganizationSwitch(organization);
47
- setIsOpen(false);
48
- };
49
- const handleMenuItemClick = (item) => {
50
- if (item.onClick) item.onClick();
51
- setIsOpen(false);
52
- };
53
- const switchableOrganizations = organizations.filter((org) => org.id !== currentOrganization?.id);
54
- const defaultRenderOrganization = (organization, isSelected) => /* @__PURE__ */ jsxs(Fragment, { children: [
55
- /* @__PURE__ */ jsx(Avatar, {
56
- variant: "square",
57
- imageUrl: organization.avatar,
58
- name: organization.name,
59
- size: avatarSize * 1.25,
60
- alt: `${organization.name} avatar`
61
- }),
62
- /* @__PURE__ */ jsxs("div", {
63
- className: cx(styles["organizationInfo"]),
64
- children: [/* @__PURE__ */ jsx(Typography_default, {
65
- variant: "body2",
66
- fontWeight: "medium",
67
- className: cx(styles["organizationName"]),
68
- children: organization.name
69
- }), /* @__PURE__ */ jsxs("div", {
70
- className: cx(styles["organizationMeta"]),
71
- children: [
72
- showMemberCount && organization.memberCount !== void 0 && /* @__PURE__ */ jsxs("span", { children: [
73
- organization.memberCount,
74
- " ",
75
- organization.memberCount === 1 ? t("organization.switcher.member") : t("organization.switcher.members")
76
- ] }),
77
- showRole && organization.role && showMemberCount && organization.memberCount !== void 0 && /* @__PURE__ */ jsx("span", { children: " • " }),
78
- showRole && organization.role && /* @__PURE__ */ jsx("span", {
79
- className: cx(styles["roleCapitalized"]),
80
- children: organization.role
81
- })
82
- ]
83
- })]
84
- }),
85
- isSelected && /* @__PURE__ */ jsx(Check_default, {
86
- width: "16",
87
- height: "16",
88
- color: theme.vars.colors.text.primary
89
- })
90
- ] });
91
- const defaultRenderLoading = () => /* @__PURE__ */ jsx("div", {
92
- className: cx(styles["loadingContainer"]),
93
- children: /* @__PURE__ */ jsx(Typography_default, {
94
- variant: "caption",
95
- className: cx(styles["loadingText"]),
96
- children: t("organization.switcher.loading.placeholder.organizations")
97
- })
98
- });
99
- const defaultRenderError = (errorMessage) => /* @__PURE__ */ jsx("div", {
100
- className: cx(styles["errorContainer"]),
101
- children: /* @__PURE__ */ jsx(Typography_default, {
102
- variant: "caption",
103
- className: cx(styles["errorText"]),
104
- children: errorMessage
105
- })
106
- });
107
- return /* @__PURE__ */ jsxs("div", {
108
- className: cx(styles["root"], className),
109
- style,
110
- children: [/* @__PURE__ */ jsxs(Button_default, {
111
- ref: refs.setReference,
112
- className: cx(styles["trigger"]),
113
- color: "tertiary",
114
- variant: "outline",
115
- size: "medium",
116
- ...getReferenceProps(),
117
- children: [currentOrganization ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Avatar, {
118
- variant: "square",
119
- imageUrl: currentOrganization.avatar,
120
- name: currentOrganization.name,
121
- size: avatarSize,
122
- alt: `${currentOrganization.name} avatar`
123
- }), showTriggerLabel && /* @__PURE__ */ jsx(Typography_default, {
124
- variant: "body2",
125
- className: cx(styles["triggerLabel"]),
126
- children: currentOrganization.name
127
- })] }) : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Building_default, {
128
- width: avatarSize,
129
- height: avatarSize
130
- }), showTriggerLabel && /* @__PURE__ */ jsx(Typography_default, {
131
- variant: "body2",
132
- className: cx(styles["triggerLabel"]),
133
- children: t("elements.fields.organization.select.label")
134
- })] }), /* @__PURE__ */ jsx("span", {
135
- style: {
136
- display: "inline-flex",
137
- transform: isRTL ? "scaleX(-1)" : "none"
138
- },
139
- children: /* @__PURE__ */ jsx(ChevronDown_default, {
140
- width: "16",
141
- height: "16"
142
- })
143
- })]
144
- }), isOpen && /* @__PURE__ */ jsx(FloatingPortal, {
145
- id: portalId,
146
- children: /* @__PURE__ */ jsx(FloatingFocusManager, {
147
- context,
148
- modal: false,
149
- initialFocus: -1,
150
- children: /* @__PURE__ */ jsxs("div", {
151
- ref: refs.setFloating,
152
- className: cx(styles["content"]),
153
- style: floatingStyles,
154
- ...getFloatingProps(),
155
- children: [
156
- currentOrganization && /* @__PURE__ */ jsxs("div", {
157
- className: cx(styles["header"]),
158
- children: [
159
- /* @__PURE__ */ jsx(Avatar, {
160
- variant: "square",
161
- imageUrl: currentOrganization.avatar,
162
- name: currentOrganization.name,
163
- size: avatarSize * 1.5,
164
- alt: `${currentOrganization.name} avatar`
165
- }),
166
- /* @__PURE__ */ jsxs("div", {
167
- className: cx(styles["headerInfo"]),
168
- children: [/* @__PURE__ */ jsx(Typography_default, {
169
- noWrap: true,
170
- className: cx(styles["headerName"]),
171
- variant: "body1",
172
- fontWeight: "medium",
173
- children: currentOrganization.name
174
- }), /* @__PURE__ */ jsxs("div", {
175
- className: cx(styles["headerMeta"]),
176
- children: [showMemberCount && currentOrganization.memberCount !== void 0 && /* @__PURE__ */ jsxs(Typography_default, {
177
- noWrap: true,
178
- variant: "caption",
179
- color: "secondary",
180
- children: [
181
- currentOrganization.memberCount,
182
- " ",
183
- currentOrganization.memberCount === 1 ? t("organization.switcher.member") : t("organization.switcher.members"),
184
- showRole && currentOrganization.role && /* @__PURE__ */ jsxs("span", { children: [" • ", currentOrganization.role] })
185
- ]
186
- }), showRole && currentOrganization.role && (!showMemberCount || currentOrganization.memberCount === void 0) && /* @__PURE__ */ jsx(Typography_default, {
187
- noWrap: true,
188
- className: cx(styles["headerRole"]),
189
- variant: "caption",
190
- color: "secondary",
191
- children: currentOrganization.role
192
- })]
193
- })]
194
- }),
195
- onManageProfile && /* @__PURE__ */ jsx(Button_default, {
196
- onClick: onManageProfile,
197
- color: "tertiary",
198
- variant: "outline",
199
- size: "small",
200
- "aria-label": "Manage Organization Profile",
201
- className: cx(styles["manageButton"]),
202
- endIcon: /* @__PURE__ */ jsxs("svg", {
203
- width: "16",
204
- height: "16",
205
- viewBox: "0 0 24 24",
206
- fill: "none",
207
- stroke: "currentColor",
208
- strokeWidth: "2",
209
- strokeLinecap: "round",
210
- strokeLinejoin: "round",
211
- children: [/* @__PURE__ */ jsx("circle", {
212
- cx: "12",
213
- cy: "12",
214
- r: "3"
215
- }), /* @__PURE__ */ jsx("path", { d: "M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1 1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z" })]
216
- }),
217
- children: t("organization.switcher.buttons.manage.text")
218
- })
219
- ]
220
- }),
221
- organizations.length > 1 && /* @__PURE__ */ jsx("div", {
222
- className: cx(styles["header"], styles["sectionHeaderContainer"]),
223
- style: { borderTop: currentOrganization ? `1px solid ${theme.vars.colors.border}` : "none" },
224
- children: /* @__PURE__ */ jsx(Typography_default, {
225
- variant: "caption",
226
- fontWeight: 600,
227
- className: cx(styles["sectionHeader"]),
228
- children: t("organization.switcher.switch.organization")
229
- })
230
- }),
231
- /* @__PURE__ */ jsx("div", {
232
- className: cx(styles["menu"]),
233
- children: (() => {
234
- if (loading) return renderLoading ? renderLoading() : defaultRenderLoading();
235
- if (error) return renderError ? renderError(error) : defaultRenderError(error);
236
- return /* @__PURE__ */ jsxs(Fragment, { children: [switchableOrganizations.map((organization) => {
237
- const isSelected = false;
238
- return /* @__PURE__ */ jsx(Button_default, {
239
- onClick: () => handleOrganizationSwitch(organization),
240
- className: cx(styles["menuItem"]),
241
- color: "tertiary",
242
- variant: "text",
243
- size: "small",
244
- style: { backgroundColor: hoveredItemIndex === switchableOrganizations.indexOf(organization) ? theme.vars.colors.action?.hover : "transparent" },
245
- onMouseEnter: () => setHoveredItemIndex(switchableOrganizations.indexOf(organization)),
246
- onMouseLeave: () => setHoveredItemIndex(null),
247
- children: renderOrganization ? renderOrganization(organization, isSelected) : defaultRenderOrganization(organization, isSelected)
248
- }, organization.id);
249
- }), menuItems.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", { className: cx(styles["menuDivider"]) }), menuItems.map((item, index) => /* @__PURE__ */ jsx("div", { children: item.href ? /* @__PURE__ */ jsxs("a", {
250
- href: item.href,
251
- style: { backgroundColor: hoveredItemIndex === switchableOrganizations.length + index ? theme.vars.colors.action?.hover : "transparent" },
252
- className: cx(styles["menuItem"]),
253
- onMouseEnter: () => setHoveredItemIndex(switchableOrganizations.length + index),
254
- onMouseLeave: () => setHoveredItemIndex(null),
255
- onFocus: () => setHoveredItemIndex(switchableOrganizations.length + index),
256
- onBlur: () => setHoveredItemIndex(null),
257
- children: [item.icon, /* @__PURE__ */ jsx("span", { children: item.label })]
258
- }) : /* @__PURE__ */ jsx(Button_default, {
259
- onClick: () => handleMenuItemClick(item),
260
- style: { backgroundColor: hoveredItemIndex === switchableOrganizations.length + index ? theme.vars.colors.action?.hover : "transparent" },
261
- className: cx(styles["menuItem"]),
262
- color: "tertiary",
263
- variant: "text",
264
- size: "small",
265
- startIcon: item.icon,
266
- onMouseEnter: () => setHoveredItemIndex(switchableOrganizations.length + index),
267
- onMouseLeave: () => setHoveredItemIndex(null),
268
- children: item.label
269
- }) }, index))] })] });
270
- })()
271
- })
272
- ]
273
- })
274
- })
275
- })]
276
- });
277
- };
278
- var BaseOrganizationSwitcher_default = BaseOrganizationSwitcher;
279
-
280
- //#endregion
281
- export { BaseOrganizationSwitcher, BaseOrganizationSwitcher_default as default };
282
- //# sourceMappingURL=BaseOrganizationSwitcher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BaseOrganizationSwitcher.js","names":["BaseOrganizationSwitcher: FC<BaseOrganizationSwitcherProps>","useTheme","styles: Record<string, string>","useStyles","useTranslation","isRTL: boolean","switchableOrganizations: Organization[]","Typography","Check","Button","Building","ChevronDown"],"sources":["../../../../src/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\n// Removed BEM and vendor prefix utilities\nimport {cx} from '@emotion/css';\nimport {\n useFloating,\n autoUpdate,\n offset,\n flip,\n shift,\n useClick,\n useDismiss,\n useRole,\n useInteractions,\n FloatingFocusManager,\n FloatingPortal,\n} from '@floating-ui/react';\nimport {Preferences} from '@thunderid/browser';\nimport {CSSProperties, FC, ReactElement, ReactNode, useState} from 'react';\nimport useStyles from './BaseOrganizationSwitcher.styles';\nimport useTheme from '../../../contexts/Theme/useTheme';\nimport useTranslation from '../../../hooks/useTranslation';\nimport {Avatar} from '../../primitives/Avatar/Avatar';\nimport Button from '../../primitives/Button/Button';\nimport Building from '../../primitives/Icons/Building';\nimport Check from '../../primitives/Icons/Check';\nimport ChevronDown from '../../primitives/Icons/ChevronDown';\nimport Typography from '../../primitives/Typography/Typography';\n\ninterface MenuItem {\n href?: string;\n icon?: ReactNode;\n label: ReactNode;\n onClick?: () => void;\n}\n\n/**\n * Interface for organization data.\n */\nexport interface Organization {\n /**\n * Avatar URL for the organization.\n */\n avatar?: string;\n /**\n * Unique identifier for the organization.\n */\n id: string;\n /**\n * Number of members in the organization.\n */\n memberCount?: number;\n /**\n * Additional metadata for the organization.\n */\n metadata?: Record<string, any>;\n /**\n * Display name of the organization.\n */\n name: string;\n /**\n * User's role in the organization.\n */\n role?: 'owner' | 'admin' | 'member';\n /**\n * URL slug for the organization.\n */\n slug?: string;\n}\n\n/**\n * Props interface for the BaseOrganizationSwitcher component.\n */\nexport interface BaseOrganizationSwitcherProps {\n /**\n * Optional size for the avatar\n */\n avatarSize?: number;\n /**\n * Custom class name for styling.\n */\n className?: string;\n /**\n * Currently selected organization.\n */\n currentOrganization?: Organization;\n /**\n * Error message to display.\n */\n error?: string;\n /**\n * Optional element to render when no organization is selected.\n */\n fallback?: ReactElement | null;\n /**\n * Whether the component is in a loading state.\n */\n loading?: boolean;\n /**\n * Additional menu items to display at the bottom of the dropdown.\n */\n menuItems?: MenuItem[];\n /**\n * Handler for when the manage profile button is clicked.\n */\n onManageProfile?: () => void;\n /**\n * Handler for when an organization is selected.\n */\n onOrganizationSwitch: (organization: Organization) => void;\n /**\n * List of available organizations.\n */\n organizations: Organization[];\n /**\n * The HTML element ID where the portal should be mounted\n */\n portalId?: string;\n /**\n * Component-level preferences to override global i18n and theme settings.\n * Preferences are deep-merged with global ones, with component preferences\n * taking precedence. Affects this component and all its descendants.\n */\n preferences?: Preferences;\n /**\n * Custom render function for the error state.\n */\n renderError?: (error: string) => ReactElement;\n /**\n * Custom render function for the loading state.\n */\n renderLoading?: () => ReactElement;\n /**\n * Custom render function for the organization item.\n */\n renderOrganization?: (organization: Organization, isSelected: boolean) => ReactElement;\n /**\n * Whether to show the member count.\n */\n showMemberCount?: boolean;\n /**\n * Whether to show the role badge.\n */\n showRole?: boolean;\n /**\n * Show organization name next to avatar in the trigger button\n */\n showTriggerLabel?: boolean;\n\n /**\n * Custom styles for the component.\n */\n style?: CSSProperties;\n}\n\n/**\n * BaseOrganizationSwitcher component displays an organization selector with a dropdown menu.\n * When clicked, it shows a popover with available organizations to switch between.\n * This component serves as the base for framework-specific implementations.\n */\nexport const BaseOrganizationSwitcher: FC<BaseOrganizationSwitcherProps> = ({\n organizations,\n currentOrganization,\n loading = false,\n error,\n onOrganizationSwitch,\n onManageProfile,\n className = '',\n style,\n renderOrganization,\n renderLoading,\n renderError,\n showRole = false,\n showMemberCount = true,\n menuItems = [],\n portalId = 'thunderid-organization-switcher',\n showTriggerLabel = true,\n avatarSize = 24,\n fallback = null,\n preferences,\n}: BaseOrganizationSwitcherProps): ReactElement | null => {\n const {theme, colorScheme, direction} = useTheme();\n const styles: Record<string, string> = useStyles(theme, colorScheme);\n const [isOpen, setIsOpen] = useState(false);\n const [hoveredItemIndex, setHoveredItemIndex] = useState<number | null>(null);\n const {t} = useTranslation(preferences?.i18n);\n const isRTL: boolean = direction === 'rtl';\n\n const {refs, floatingStyles, context} = useFloating({\n middleware: [offset(5), flip({fallbackAxisSideDirection: 'end'}), shift({padding: 5})],\n onOpenChange: setIsOpen,\n open: isOpen,\n placement: 'bottom-end',\n whileElementsMounted: autoUpdate,\n });\n\n const click: any = useClick(context);\n const dismiss: any = useDismiss(context);\n const role: any = useRole(context);\n\n const {getReferenceProps, getFloatingProps} = useInteractions([click, dismiss, role]);\n\n if (fallback && !currentOrganization && !loading && organizations.length === 0) {\n return fallback;\n }\n\n const handleOrganizationSwitch = (organization: Organization): void => {\n onOrganizationSwitch(organization);\n setIsOpen(false);\n };\n\n const handleMenuItemClick = (item: MenuItem): void => {\n if (item.onClick) {\n item.onClick();\n }\n setIsOpen(false);\n };\n\n // Filter out current organization from switchable list\n const switchableOrganizations: Organization[] = organizations.filter(\n (org: Organization): boolean => org.id !== currentOrganization?.id,\n );\n\n const defaultRenderOrganization = (organization: Organization, isSelected: boolean): ReactElement => (\n <>\n <Avatar\n variant=\"square\"\n imageUrl={organization.avatar}\n name={organization.name}\n size={avatarSize * 1.25}\n alt={`${organization.name} avatar`}\n />\n <div className={cx(styles['organizationInfo'])}>\n <Typography variant=\"body2\" fontWeight=\"medium\" className={cx(styles['organizationName'])}>\n {organization.name}\n </Typography>\n <div className={cx(styles['organizationMeta'])}>\n {showMemberCount && organization.memberCount !== undefined && (\n <span>\n {organization.memberCount}{' '}\n {organization.memberCount === 1 ? t('organization.switcher.member') : t('organization.switcher.members')}\n </span>\n )}\n {showRole && organization.role && showMemberCount && organization.memberCount !== undefined && (\n <span> • </span>\n )}\n {showRole && organization.role && <span className={cx(styles['roleCapitalized'])}>{organization.role}</span>}\n </div>\n </div>\n {isSelected && <Check width=\"16\" height=\"16\" color={theme.vars.colors.text.primary} />}\n </>\n );\n\n const defaultRenderLoading = (): ReactElement => (\n <div className={cx(styles['loadingContainer'])}>\n <Typography variant=\"caption\" className={cx(styles['loadingText'])}>\n {t('organization.switcher.loading.placeholder.organizations')}\n </Typography>\n </div>\n );\n\n const defaultRenderError = (errorMessage: string): ReactElement => (\n <div className={cx(styles['errorContainer'])}>\n <Typography variant=\"caption\" className={cx(styles['errorText'])}>\n {errorMessage}\n </Typography>\n </div>\n );\n\n return (\n <div className={cx(styles['root'], className)} style={style}>\n <Button\n ref={refs.setReference}\n className={cx(styles['trigger'])}\n color=\"tertiary\"\n variant=\"outline\"\n size=\"medium\"\n {...getReferenceProps()}\n >\n {currentOrganization ? (\n <>\n <Avatar\n variant=\"square\"\n imageUrl={currentOrganization.avatar}\n name={currentOrganization.name}\n size={avatarSize}\n alt={`${currentOrganization.name} avatar`}\n />\n {showTriggerLabel && (\n <Typography variant=\"body2\" className={cx(styles['triggerLabel'])}>\n {currentOrganization.name}\n </Typography>\n )}\n </>\n ) : (\n <>\n <Building width={avatarSize} height={avatarSize} />\n {showTriggerLabel && (\n <Typography variant=\"body2\" className={cx(styles['triggerLabel'])}>\n {t('elements.fields.organization.select.label')}\n </Typography>\n )}\n </>\n )}\n <span style={{display: 'inline-flex', transform: isRTL ? 'scaleX(-1)' : 'none'}}>\n <ChevronDown width=\"16\" height=\"16\" />\n </span>\n </Button>\n\n {isOpen && (\n <FloatingPortal id={portalId}>\n <FloatingFocusManager context={context} modal={false} initialFocus={-1}>\n <div\n ref={refs.setFloating}\n className={cx(styles['content'])}\n style={floatingStyles}\n {...getFloatingProps()}\n >\n {/* Header - Current Organization */}\n {currentOrganization && (\n <div className={cx(styles['header'])}>\n <Avatar\n variant=\"square\"\n imageUrl={currentOrganization.avatar}\n name={currentOrganization.name}\n size={avatarSize * 1.5}\n alt={`${currentOrganization.name} avatar`}\n />\n <div className={cx(styles['headerInfo'])}>\n <Typography noWrap className={cx(styles['headerName'])} variant=\"body1\" fontWeight=\"medium\">\n {currentOrganization.name}\n </Typography>\n <div className={cx(styles['headerMeta'])}>\n {showMemberCount && currentOrganization.memberCount !== undefined && (\n <Typography\n noWrap\n // ...existing code...\n variant=\"caption\"\n color=\"secondary\"\n >\n {currentOrganization.memberCount}{' '}\n {currentOrganization.memberCount === 1\n ? t('organization.switcher.member')\n : t('organization.switcher.members')}\n {showRole && currentOrganization.role && <span> • {currentOrganization.role}</span>}\n </Typography>\n )}\n {showRole &&\n currentOrganization.role &&\n (!showMemberCount || currentOrganization.memberCount === undefined) && (\n <Typography noWrap className={cx(styles['headerRole'])} variant=\"caption\" color=\"secondary\">\n {currentOrganization.role}\n </Typography>\n )}\n </div>\n </div>\n {onManageProfile && (\n <Button\n onClick={onManageProfile}\n color=\"tertiary\"\n variant=\"outline\"\n size=\"small\"\n aria-label=\"Manage Organization Profile\"\n className={cx(styles['manageButton'])}\n endIcon={\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n <path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1 1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\" />\n </svg>\n }\n >\n {t('organization.switcher.buttons.manage.text')}\n </Button>\n )}\n </div>\n )}\n\n {/* Section Header for Other Organizations */}\n {organizations.length > 1 && (\n <div\n className={cx(styles['header'], styles['sectionHeaderContainer'])}\n style={{\n borderTop: currentOrganization ? `1px solid ${theme.vars.colors.border}` : 'none',\n }}\n >\n <Typography variant=\"caption\" fontWeight={600} className={cx(styles['sectionHeader'])}>\n {t('organization.switcher.switch.organization')}\n </Typography>\n </div>\n )}\n\n {/* Content */}\n <div className={cx(styles['menu'])}>\n {((): ReactElement => {\n if (loading) {\n return renderLoading ? renderLoading() : defaultRenderLoading();\n }\n if (error) {\n return renderError ? renderError(error) : defaultRenderError(error);\n }\n return (\n <>\n {switchableOrganizations.map((organization: Organization): ReactElement => {\n const isSelected = false; // Never selected since we exclude current org\n return (\n <Button\n key={organization.id}\n onClick={(): void => handleOrganizationSwitch(organization)}\n className={cx(styles['menuItem'])}\n color=\"tertiary\"\n variant=\"text\"\n size=\"small\"\n style={{\n backgroundColor:\n hoveredItemIndex === switchableOrganizations.indexOf(organization)\n ? theme.vars.colors.action?.hover\n : 'transparent',\n }}\n onMouseEnter={(): void =>\n setHoveredItemIndex(switchableOrganizations.indexOf(organization))\n }\n onMouseLeave={(): void => setHoveredItemIndex(null)}\n >\n {renderOrganization\n ? renderOrganization(organization, isSelected)\n : defaultRenderOrganization(organization, isSelected)}\n </Button>\n );\n })}\n\n {/* Menu Items */}\n {menuItems.length > 0 && (\n <>\n <div className={cx(styles['menuDivider'])} />\n {menuItems.map(\n (item: any, index: number): ReactElement => (\n <div key={index}>\n {item.href ? (\n <a\n href={item.href}\n style={{\n backgroundColor:\n hoveredItemIndex === switchableOrganizations.length + index\n ? theme.vars.colors.action?.hover\n : 'transparent',\n }}\n className={cx(styles['menuItem'])}\n onMouseEnter={(): void =>\n setHoveredItemIndex(switchableOrganizations.length + index)\n }\n onMouseLeave={(): void => setHoveredItemIndex(null)}\n onFocus={(): void => setHoveredItemIndex(switchableOrganizations.length + index)}\n onBlur={(): void => setHoveredItemIndex(null)}\n >\n {item.icon}\n <span>{item.label}</span>\n </a>\n ) : (\n <Button\n onClick={(): void => handleMenuItemClick(item)}\n style={{\n backgroundColor:\n hoveredItemIndex === switchableOrganizations.length + index\n ? theme.vars.colors.action?.hover\n : 'transparent',\n }}\n className={cx(styles['menuItem'])}\n color=\"tertiary\"\n variant=\"text\"\n size=\"small\"\n startIcon={item.icon}\n onMouseEnter={(): void =>\n setHoveredItemIndex(switchableOrganizations.length + index)\n }\n onMouseLeave={(): void => setHoveredItemIndex(null)}\n >\n {item.label}\n </Button>\n )}\n </div>\n ),\n )}\n </>\n )}\n </>\n );\n })()}\n </div>\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </div>\n );\n};\n\nexport default BaseOrganizationSwitcher;\n"],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- /**
2
- * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).
3
- *
4
- * WSO2 LLC. licenses this file to you under the Apache License,
5
- * Version 2.0 (the "License"); you may not use this file except
6
- * in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing,
12
- * software distributed under the License is distributed on an
13
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
- * KIND, either express or implied. See the License for the
15
- * specific language governing permissions and limitations
16
- * under the License.
17
- */
18
- import { Theme } from '@thunderid/browser';
19
- /**
20
- * Creates styles for the BaseOrganizationSwitcher component using BEM methodology
21
- * @param theme - The theme object containing design tokens
22
- * @param colorScheme - The current color scheme (used for memoization)
23
- * @returns Object containing CSS class names for component styling
24
- */
25
- declare const useStyles: (theme: Theme, colorScheme: string) => Record<string, string>;
26
- export default useStyles;
27
- //# sourceMappingURL=BaseOrganizationSwitcher.styles.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BaseOrganizationSwitcher.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAC,KAAK,EAAC,MAAM,oBAAoB,CAAC;AAGzC;;;;;GAKG;AAEH,QAAA,MAAM,SAAS,GAAI,OAAO,KAAK,EAAE,aAAa,MAAM,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAmPxE,CAAC;AAEL,eAAe,SAAS,CAAC"}
@@ -1,234 +0,0 @@
1
- import { useMemo } from "react";
2
- import { css } from "@emotion/css";
3
-
4
- //#region src/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.ts
5
- /**
6
- * Creates styles for the BaseOrganizationSwitcher component using BEM methodology
7
- * @param theme - The theme object containing design tokens
8
- * @param colorScheme - The current color scheme (used for memoization)
9
- * @returns Object containing CSS class names for component styling
10
- */
11
- const useStyles = (theme, colorScheme) => useMemo(() => {
12
- const root = css`
13
- display: inline-block;
14
- position: relative;
15
- font-family: ${theme.vars.typography.fontFamily};
16
- `;
17
- const trigger = css`
18
- display: inline-flex;
19
- align-items: center;
20
- gap: ${theme.vars.spacing.unit};
21
- padding: calc(${theme.vars.spacing.unit} * 0.75) ${theme.vars.spacing.unit};
22
- border: 1px solid ${theme.vars.colors.border};
23
- background: ${theme.vars.colors.background.surface};
24
- cursor: pointer;
25
- border-radius: ${theme.vars.borderRadius.medium};
26
- min-width: 160px;
27
-
28
- > span {
29
- width: 100%;
30
- gap: ${theme.vars.spacing.unit};
31
- }
32
-
33
- &:hover {
34
- background-color: ${theme.vars.colors.background.surface};
35
- }
36
- `;
37
- const triggerLabel = css`
38
- color: ${theme.vars.colors.text.primary};
39
- font-weight: 500;
40
- overflow: hidden;
41
- text-overflow: ellipsis;
42
- white-space: nowrap;
43
- flex: 1;
44
- `;
45
- const content = css`
46
- min-width: 280px;
47
- max-width: 400px;
48
- background-color: ${theme.vars.colors.background.surface};
49
- border-radius: ${theme.vars.borderRadius.medium};
50
- box-shadow: ${theme.vars.shadows.medium};
51
- border: 1px solid ${theme.vars.colors.border};
52
- outline: none;
53
- z-index: 1000;
54
- `;
55
- const header = css`
56
- display: flex;
57
- align-items: center;
58
- gap: ${theme.vars.spacing.unit};
59
- padding: ${theme.vars.spacing.unit} calc(${theme.vars.spacing.unit} * 2);
60
- `;
61
- const headerInfo = css`
62
- display: flex;
63
- flex-direction: column;
64
- gap: calc(${theme.vars.spacing.unit} / 4);
65
- flex: 1;
66
- min-width: 0;
67
- overflow: hidden;
68
- `;
69
- const headerName = css`
70
- color: ${theme.vars.colors.text.primary};
71
- font-size: 0.875rem;
72
- font-weight: 500;
73
- margin: 0;
74
- overflow: hidden;
75
- text-overflow: ellipsis;
76
- white-space: nowrap;
77
- `;
78
- const headerMeta = css`
79
- color: ${theme.vars.colors.text.secondary};
80
- font-size: 0.75rem;
81
- margin: 0;
82
- overflow: hidden;
83
- text-overflow: ellipsis;
84
- white-space: nowrap;
85
- `;
86
- const headerRole = css`
87
- color: ${theme.vars.colors.text.secondary};
88
- font-size: 0.75rem;
89
- margin: 0;
90
- overflow: hidden;
91
- text-overflow: ellipsis;
92
- white-space: nowrap;
93
- text-transform: capitalize;
94
- `;
95
- const manageButton = css`
96
- min-width: auto;
97
- margin-inline-start: auto;
98
- `;
99
- const menu = css`
100
- display: flex;
101
- flex-direction: column;
102
- width: 100%;
103
- `;
104
- const menuItem = css`
105
- display: flex;
106
- align-items: center;
107
- justify-content: flex-start;
108
- gap: ${theme.vars.spacing.unit};
109
- padding: calc(${theme.vars.spacing.unit} * 1.5) calc(${theme.vars.spacing.unit} * 2);
110
- width: 100%;
111
- color: ${theme.vars.colors.text.primary};
112
- text-decoration: none;
113
- border: none;
114
- background-color: transparent;
115
- cursor: pointer;
116
- font-size: 0.875rem;
117
- text-align: start;
118
- border-radius: ${theme.vars.borderRadius.medium};
119
- transition: background-color 0.15s ease-in-out;
120
-
121
- > span {
122
- gap: ${theme.vars.spacing.unit};
123
- }
124
-
125
- &:hover {
126
- background-color: ${theme.vars.colors.action?.hover || "rgba(0, 0, 0, 0.04)"};
127
- }
128
- `;
129
- const menuDivider = css`
130
- margin: calc(${theme.vars.spacing.unit} * 0.5) 0;
131
- border-bottom: 1px solid ${theme.vars.colors.border};
132
- `;
133
- const organizationInfo = css`
134
- display: flex;
135
- flex-direction: column;
136
- gap: calc(${theme.vars.spacing.unit} / 4);
137
- flex: 1;
138
- min-width: 0;
139
- overflow: hidden;
140
- `;
141
- const organizationName = css`
142
- color: ${theme.vars.colors.text.primary};
143
- font-size: 0.875rem;
144
- font-weight: 500;
145
- margin: 0;
146
- overflow: hidden;
147
- text-overflow: ellipsis;
148
- white-space: nowrap;
149
- `;
150
- const organizationMeta = css`
151
- color: ${theme.vars.colors.text.secondary};
152
- font-size: 0.75rem;
153
- margin: 0;
154
- overflow: hidden;
155
- text-overflow: ellipsis;
156
- white-space: nowrap;
157
- `;
158
- const loadingContainer = css`
159
- display: flex;
160
- align-items: center;
161
- justify-content: center;
162
- min-height: 80px;
163
- gap: ${theme.vars.spacing.unit};
164
- `;
165
- const loadingText = css`
166
- color: ${theme.vars.colors.text.secondary};
167
- font-size: 0.875rem;
168
- `;
169
- const errorContainer = css`
170
- display: flex;
171
- align-items: center;
172
- justify-content: center;
173
- min-height: 80px;
174
- padding: calc(${theme.vars.spacing.unit} * 2);
175
- `;
176
- const errorText = css`
177
- color: ${theme.vars.colors.text.secondary};
178
- font-size: 0.875rem;
179
- text-align: center;
180
- `;
181
- const sectionHeader = css`
182
- text-transform: uppercase;
183
- letter-spacing: 0.05em;
184
- color: ${theme.vars.colors.text.secondary};
185
- `;
186
- const sectionHeaderContainer = css`
187
- border-top: none;
188
- border-bottom: none;
189
- padding-bottom: calc(${theme.vars.spacing.unit} / 2);
190
- `;
191
- return {
192
- content,
193
- errorContainer,
194
- errorText,
195
- header,
196
- headerInfo,
197
- headerMeta,
198
- headerName,
199
- headerRole,
200
- loadingContainer,
201
- loadingText,
202
- manageButton,
203
- menu,
204
- menuDivider,
205
- menuItem,
206
- organizationInfo,
207
- organizationMeta,
208
- organizationName,
209
- roleCapitalized: css`
210
- text-transform: capitalize;
211
- `,
212
- root,
213
- sectionHeader,
214
- sectionHeaderContainer,
215
- trigger,
216
- triggerLabel
217
- };
218
- }, [
219
- theme.vars.colors.background.surface,
220
- theme.vars.colors.text.primary,
221
- theme.vars.colors.text.secondary,
222
- theme.vars.colors.border,
223
- theme.vars.borderRadius.medium,
224
- theme.vars.shadows.medium,
225
- theme.vars.spacing.unit,
226
- theme.vars.colors.action?.hover,
227
- theme.vars.typography.fontFamily,
228
- colorScheme
229
- ]);
230
- var BaseOrganizationSwitcher_styles_default = useStyles;
231
-
232
- //#endregion
233
- export { BaseOrganizationSwitcher_styles_default as default };
234
- //# sourceMappingURL=BaseOrganizationSwitcher.styles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BaseOrganizationSwitcher.styles.js","names":["root: string","trigger: string","triggerLabel: string","content: string","header: string","headerInfo: string","headerName: string","headerMeta: string","headerRole: string","manageButton: string","menu: string","menuItem: string","menuDivider: string","organizationInfo: string","organizationName: string","organizationMeta: string","loadingContainer: string","loadingText: string","errorContainer: string","errorText: string","sectionHeader: string","sectionHeaderContainer: string"],"sources":["../../../../src/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.ts"],"sourcesContent":["/**\n * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {css} from '@emotion/css';\nimport {Theme} from '@thunderid/browser';\nimport {useMemo} from 'react';\n\n/**\n * Creates styles for the BaseOrganizationSwitcher component using BEM methodology\n * @param theme - The theme object containing design tokens\n * @param colorScheme - The current color scheme (used for memoization)\n * @returns Object containing CSS class names for component styling\n */\n\nconst useStyles = (theme: Theme, colorScheme: string): Record<string, string> =>\n useMemo(() => {\n const root: string = css`\n display: inline-block;\n position: relative;\n font-family: ${theme.vars.typography.fontFamily};\n `;\n\n const trigger: string = css`\n display: inline-flex;\n align-items: center;\n gap: ${theme.vars.spacing.unit};\n padding: calc(${theme.vars.spacing.unit} * 0.75) ${theme.vars.spacing.unit};\n border: 1px solid ${theme.vars.colors.border};\n background: ${theme.vars.colors.background.surface};\n cursor: pointer;\n border-radius: ${theme.vars.borderRadius.medium};\n min-width: 160px;\n\n > span {\n width: 100%;\n gap: ${theme.vars.spacing.unit};\n }\n\n &:hover {\n background-color: ${theme.vars.colors.background.surface};\n }\n `;\n\n const triggerLabel: string = css`\n color: ${theme.vars.colors.text.primary};\n font-weight: 500;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: 1;\n `;\n\n const content: string = css`\n min-width: 280px;\n max-width: 400px;\n background-color: ${theme.vars.colors.background.surface};\n border-radius: ${theme.vars.borderRadius.medium};\n box-shadow: ${theme.vars.shadows.medium};\n border: 1px solid ${theme.vars.colors.border};\n outline: none;\n z-index: 1000;\n `;\n\n const header: string = css`\n display: flex;\n align-items: center;\n gap: ${theme.vars.spacing.unit};\n padding: ${theme.vars.spacing.unit} calc(${theme.vars.spacing.unit} * 2);\n `;\n\n const headerInfo: string = css`\n display: flex;\n flex-direction: column;\n gap: calc(${theme.vars.spacing.unit} / 4);\n flex: 1;\n min-width: 0;\n overflow: hidden;\n `;\n\n const headerName: string = css`\n color: ${theme.vars.colors.text.primary};\n font-size: 0.875rem;\n font-weight: 500;\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n `;\n\n const headerMeta: string = css`\n color: ${theme.vars.colors.text.secondary};\n font-size: 0.75rem;\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n `;\n\n const headerRole: string = css`\n color: ${theme.vars.colors.text.secondary};\n font-size: 0.75rem;\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-transform: capitalize;\n `;\n\n const manageButton: string = css`\n min-width: auto;\n margin-inline-start: auto;\n `;\n\n const menu: string = css`\n display: flex;\n flex-direction: column;\n width: 100%;\n `;\n\n const menuItem: string = css`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: ${theme.vars.spacing.unit};\n padding: calc(${theme.vars.spacing.unit} * 1.5) calc(${theme.vars.spacing.unit} * 2);\n width: 100%;\n color: ${theme.vars.colors.text.primary};\n text-decoration: none;\n border: none;\n background-color: transparent;\n cursor: pointer;\n font-size: 0.875rem;\n text-align: start;\n border-radius: ${theme.vars.borderRadius.medium};\n transition: background-color 0.15s ease-in-out;\n\n > span {\n gap: ${theme.vars.spacing.unit};\n }\n\n &:hover {\n background-color: ${theme.vars.colors.action?.hover || 'rgba(0, 0, 0, 0.04)'};\n }\n `;\n\n const menuDivider: string = css`\n margin: calc(${theme.vars.spacing.unit} * 0.5) 0;\n border-bottom: 1px solid ${theme.vars.colors.border};\n `;\n\n const organizationInfo: string = css`\n display: flex;\n flex-direction: column;\n gap: calc(${theme.vars.spacing.unit} / 4);\n flex: 1;\n min-width: 0;\n overflow: hidden;\n `;\n\n const organizationName: string = css`\n color: ${theme.vars.colors.text.primary};\n font-size: 0.875rem;\n font-weight: 500;\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n `;\n\n const organizationMeta: string = css`\n color: ${theme.vars.colors.text.secondary};\n font-size: 0.75rem;\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n `;\n\n const loadingContainer: string = css`\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 80px;\n gap: ${theme.vars.spacing.unit};\n `;\n\n const loadingText: string = css`\n color: ${theme.vars.colors.text.secondary};\n font-size: 0.875rem;\n `;\n\n const errorContainer: string = css`\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 80px;\n padding: calc(${theme.vars.spacing.unit} * 2);\n `;\n\n const errorText: string = css`\n color: ${theme.vars.colors.text.secondary};\n font-size: 0.875rem;\n text-align: center;\n `;\n\n const sectionHeader: string = css`\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: ${theme.vars.colors.text.secondary};\n `;\n\n const sectionHeaderContainer: string = css`\n border-top: none;\n border-bottom: none;\n padding-bottom: calc(${theme.vars.spacing.unit} / 2);\n `;\n\n const roleCapitalized: string = css`\n text-transform: capitalize;\n `;\n\n return {\n content,\n errorContainer,\n errorText,\n header,\n headerInfo,\n headerMeta,\n headerName,\n headerRole,\n loadingContainer,\n loadingText,\n manageButton,\n menu,\n menuDivider,\n menuItem,\n organizationInfo,\n organizationMeta,\n organizationName,\n roleCapitalized,\n root,\n sectionHeader,\n sectionHeaderContainer,\n trigger,\n triggerLabel,\n };\n }, [\n theme.vars.colors.background.surface,\n theme.vars.colors.text.primary,\n theme.vars.colors.text.secondary,\n theme.vars.colors.border,\n theme.vars.borderRadius.medium,\n theme.vars.shadows.medium,\n theme.vars.spacing.unit,\n theme.vars.colors.action?.hover,\n theme.vars.typography.fontFamily,\n colorScheme,\n ]);\n\nexport default useStyles;\n"],"mappings":"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"}