@lokalise/harmony 1.40.2 → 1.40.3-exp-epic2x.2

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 (390) hide show
  1. package/dist/harmony.css +110 -317
  2. package/dist/harmony100.cjs +9 -10
  3. package/dist/harmony100.cjs.map +1 -1
  4. package/dist/harmony100.mjs +11 -12
  5. package/dist/harmony100.mjs.map +1 -1
  6. package/dist/harmony101.cjs +20 -11
  7. package/dist/harmony101.cjs.map +1 -1
  8. package/dist/harmony101.mjs +20 -11
  9. package/dist/harmony101.mjs.map +1 -1
  10. package/dist/harmony102.cjs +99 -6
  11. package/dist/harmony102.cjs.map +1 -1
  12. package/dist/harmony102.mjs +81 -5
  13. package/dist/harmony102.mjs.map +1 -1
  14. package/dist/harmony103.cjs +14 -9
  15. package/dist/harmony103.cjs.map +1 -1
  16. package/dist/harmony103.mjs +13 -8
  17. package/dist/harmony103.mjs.map +1 -1
  18. package/dist/harmony104.cjs +21 -10
  19. package/dist/harmony104.cjs.map +1 -1
  20. package/dist/harmony104.mjs +20 -9
  21. package/dist/harmony104.mjs.map +1 -1
  22. package/dist/harmony105.cjs +85 -55
  23. package/dist/harmony105.cjs.map +1 -1
  24. package/dist/harmony105.mjs +85 -55
  25. package/dist/harmony105.mjs.map +1 -1
  26. package/dist/harmony106.cjs +29 -41
  27. package/dist/harmony106.cjs.map +1 -1
  28. package/dist/harmony106.mjs +29 -41
  29. package/dist/harmony106.mjs.map +1 -1
  30. package/dist/harmony107.cjs +10 -6
  31. package/dist/harmony107.cjs.map +1 -1
  32. package/dist/harmony107.mjs +9 -5
  33. package/dist/harmony107.mjs.map +1 -1
  34. package/dist/harmony108.cjs +12 -9
  35. package/dist/harmony108.cjs.map +1 -1
  36. package/dist/harmony108.mjs +11 -8
  37. package/dist/harmony108.mjs.map +1 -1
  38. package/dist/harmony109.cjs +15 -24
  39. package/dist/harmony109.cjs.map +1 -1
  40. package/dist/harmony109.mjs +14 -23
  41. package/dist/harmony109.mjs.map +1 -1
  42. package/dist/harmony110.cjs +19 -6
  43. package/dist/harmony110.cjs.map +1 -1
  44. package/dist/harmony110.mjs +18 -5
  45. package/dist/harmony110.mjs.map +1 -1
  46. package/dist/harmony111.cjs +7 -18
  47. package/dist/harmony111.cjs.map +1 -1
  48. package/dist/harmony111.mjs +9 -20
  49. package/dist/harmony111.mjs.map +1 -1
  50. package/dist/harmony112.cjs +27 -12
  51. package/dist/harmony112.cjs.map +1 -1
  52. package/dist/harmony112.mjs +26 -11
  53. package/dist/harmony112.mjs.map +1 -1
  54. package/dist/harmony113.cjs +10 -12
  55. package/dist/harmony113.cjs.map +1 -1
  56. package/dist/harmony113.mjs +10 -12
  57. package/dist/harmony113.mjs.map +1 -1
  58. package/dist/harmony114.cjs +38 -18
  59. package/dist/harmony114.cjs.map +1 -1
  60. package/dist/harmony114.mjs +38 -18
  61. package/dist/harmony114.mjs.map +1 -1
  62. package/dist/harmony115.cjs +11 -98
  63. package/dist/harmony115.cjs.map +1 -1
  64. package/dist/harmony115.mjs +11 -81
  65. package/dist/harmony115.mjs.map +1 -1
  66. package/dist/harmony116.cjs +19 -84
  67. package/dist/harmony116.cjs.map +1 -1
  68. package/dist/harmony116.mjs +19 -84
  69. package/dist/harmony116.mjs.map +1 -1
  70. package/dist/harmony117.cjs +35 -29
  71. package/dist/harmony117.cjs.map +1 -1
  72. package/dist/harmony117.mjs +35 -29
  73. package/dist/harmony117.mjs.map +1 -1
  74. package/dist/harmony119.cjs +20 -5
  75. package/dist/harmony119.cjs.map +1 -1
  76. package/dist/harmony119.mjs +20 -5
  77. package/dist/harmony119.mjs.map +1 -1
  78. package/dist/harmony120.cjs +6 -132
  79. package/dist/harmony120.cjs.map +1 -1
  80. package/dist/harmony120.mjs +5 -131
  81. package/dist/harmony120.mjs.map +1 -1
  82. package/dist/harmony121.cjs +12 -9
  83. package/dist/harmony121.cjs.map +1 -1
  84. package/dist/harmony121.mjs +12 -9
  85. package/dist/harmony121.mjs.map +1 -1
  86. package/dist/harmony122.cjs +6 -6
  87. package/dist/harmony122.cjs.map +1 -1
  88. package/dist/harmony122.mjs +5 -5
  89. package/dist/harmony122.mjs.map +1 -1
  90. package/dist/harmony123.cjs +6 -41
  91. package/dist/harmony123.cjs.map +1 -1
  92. package/dist/harmony123.mjs +5 -40
  93. package/dist/harmony123.mjs.map +1 -1
  94. package/dist/harmony124.cjs +96 -60
  95. package/dist/harmony124.cjs.map +1 -1
  96. package/dist/harmony124.mjs +96 -60
  97. package/dist/harmony124.mjs.map +1 -1
  98. package/dist/harmony125.cjs +13 -7
  99. package/dist/harmony125.cjs.map +1 -1
  100. package/dist/harmony125.mjs +13 -7
  101. package/dist/harmony125.mjs.map +1 -1
  102. package/dist/harmony126.cjs +15 -7
  103. package/dist/harmony126.cjs.map +1 -1
  104. package/dist/harmony126.mjs +14 -6
  105. package/dist/harmony126.mjs.map +1 -1
  106. package/dist/harmony127.cjs +37 -6
  107. package/dist/harmony127.cjs.map +1 -1
  108. package/dist/harmony127.mjs +36 -5
  109. package/dist/harmony127.mjs.map +1 -1
  110. package/dist/harmony128.cjs +29 -6
  111. package/dist/harmony128.cjs.map +1 -1
  112. package/dist/harmony128.mjs +28 -5
  113. package/dist/harmony128.mjs.map +1 -1
  114. package/dist/harmony130.cjs +10 -63
  115. package/dist/harmony130.cjs.map +1 -1
  116. package/dist/harmony130.mjs +9 -62
  117. package/dist/harmony130.mjs.map +1 -1
  118. package/dist/harmony131.cjs +6 -88
  119. package/dist/harmony131.cjs.map +1 -1
  120. package/dist/harmony131.mjs +5 -87
  121. package/dist/harmony131.mjs.map +1 -1
  122. package/dist/harmony132.cjs +6 -15
  123. package/dist/harmony132.cjs.map +1 -1
  124. package/dist/harmony132.mjs +6 -15
  125. package/dist/harmony132.mjs.map +1 -1
  126. package/dist/harmony133.cjs +25 -97
  127. package/dist/harmony133.cjs.map +1 -1
  128. package/dist/harmony133.mjs +24 -96
  129. package/dist/harmony133.mjs.map +1 -1
  130. package/dist/harmony134.cjs +7 -14
  131. package/dist/harmony134.cjs.map +1 -1
  132. package/dist/harmony134.mjs +6 -13
  133. package/dist/harmony134.mjs.map +1 -1
  134. package/dist/harmony135.cjs +13 -15
  135. package/dist/harmony135.cjs.map +1 -1
  136. package/dist/harmony135.mjs +12 -14
  137. package/dist/harmony135.mjs.map +1 -1
  138. package/dist/harmony136.cjs +7 -37
  139. package/dist/harmony136.cjs.map +1 -1
  140. package/dist/harmony136.mjs +6 -36
  141. package/dist/harmony136.mjs.map +1 -1
  142. package/dist/harmony137.cjs +12 -27
  143. package/dist/harmony137.cjs.map +1 -1
  144. package/dist/harmony137.mjs +12 -27
  145. package/dist/harmony137.mjs.map +1 -1
  146. package/dist/harmony138.cjs +14 -12
  147. package/dist/harmony138.cjs.map +1 -1
  148. package/dist/harmony138.mjs +14 -12
  149. package/dist/harmony138.mjs.map +1 -1
  150. package/dist/harmony139.cjs +14 -13
  151. package/dist/harmony139.cjs.map +1 -1
  152. package/dist/harmony139.mjs +14 -13
  153. package/dist/harmony139.mjs.map +1 -1
  154. package/dist/harmony14.cjs +1 -1
  155. package/dist/harmony14.mjs +1 -1
  156. package/dist/harmony140.cjs +10 -15
  157. package/dist/harmony140.cjs.map +1 -1
  158. package/dist/harmony140.mjs +10 -15
  159. package/dist/harmony140.mjs.map +1 -1
  160. package/dist/harmony141.cjs +16 -7
  161. package/dist/harmony141.cjs.map +1 -1
  162. package/dist/harmony141.mjs +16 -7
  163. package/dist/harmony141.mjs.map +1 -1
  164. package/dist/harmony142.cjs +20 -56
  165. package/dist/harmony142.cjs.map +1 -1
  166. package/dist/harmony142.mjs +20 -56
  167. package/dist/harmony142.mjs.map +1 -1
  168. package/dist/harmony143.cjs +11 -59
  169. package/dist/harmony143.cjs.map +1 -1
  170. package/dist/harmony143.mjs +11 -59
  171. package/dist/harmony143.mjs.map +1 -1
  172. package/dist/harmony144.cjs +7 -19
  173. package/dist/harmony144.cjs.map +1 -1
  174. package/dist/harmony144.mjs +6 -18
  175. package/dist/harmony144.mjs.map +1 -1
  176. package/dist/harmony145.cjs +11 -10
  177. package/dist/harmony145.cjs.map +1 -1
  178. package/dist/harmony145.mjs +11 -10
  179. package/dist/harmony145.mjs.map +1 -1
  180. package/dist/harmony146.cjs +29 -13
  181. package/dist/harmony146.cjs.map +1 -1
  182. package/dist/harmony146.mjs +29 -13
  183. package/dist/harmony146.mjs.map +1 -1
  184. package/dist/harmony147.cjs +12 -19
  185. package/dist/harmony147.cjs.map +1 -1
  186. package/dist/harmony147.mjs +12 -19
  187. package/dist/harmony147.mjs.map +1 -1
  188. package/dist/harmony17.cjs +1 -1
  189. package/dist/harmony17.mjs +1 -1
  190. package/dist/harmony25.cjs +1 -1
  191. package/dist/harmony25.mjs +1 -1
  192. package/dist/harmony26.cjs +1 -1
  193. package/dist/harmony26.mjs +1 -1
  194. package/dist/harmony4.cjs +5 -24
  195. package/dist/harmony4.cjs.map +1 -1
  196. package/dist/harmony4.mjs +5 -24
  197. package/dist/harmony4.mjs.map +1 -1
  198. package/dist/harmony5.cjs +1 -1
  199. package/dist/harmony5.mjs +1 -1
  200. package/dist/harmony6.cjs +3 -3
  201. package/dist/harmony6.mjs +3 -3
  202. package/dist/harmony7.cjs +1 -1
  203. package/dist/harmony7.mjs +1 -1
  204. package/dist/harmony75.cjs +1 -1
  205. package/dist/harmony75.mjs +1 -1
  206. package/dist/harmony76.cjs +39 -6
  207. package/dist/harmony76.cjs.map +1 -1
  208. package/dist/harmony76.mjs +38 -5
  209. package/dist/harmony76.mjs.map +1 -1
  210. package/dist/harmony77.cjs +36 -8
  211. package/dist/harmony77.cjs.map +1 -1
  212. package/dist/harmony77.mjs +37 -9
  213. package/dist/harmony77.mjs.map +1 -1
  214. package/dist/harmony78.cjs +9 -18
  215. package/dist/harmony78.cjs.map +1 -1
  216. package/dist/harmony78.mjs +8 -17
  217. package/dist/harmony78.mjs.map +1 -1
  218. package/dist/harmony79.cjs +6 -21
  219. package/dist/harmony79.cjs.map +1 -1
  220. package/dist/harmony79.mjs +8 -23
  221. package/dist/harmony79.mjs.map +1 -1
  222. package/dist/harmony8.cjs +5 -5
  223. package/dist/harmony8.mjs +5 -5
  224. package/dist/harmony80.cjs +28 -4
  225. package/dist/harmony80.cjs.map +1 -1
  226. package/dist/harmony80.mjs +28 -4
  227. package/dist/harmony80.mjs.map +1 -1
  228. package/dist/harmony81.cjs +3 -32
  229. package/dist/harmony81.cjs.map +1 -1
  230. package/dist/harmony81.mjs +3 -32
  231. package/dist/harmony81.mjs.map +1 -1
  232. package/dist/harmony82.cjs +30 -29
  233. package/dist/harmony82.cjs.map +1 -1
  234. package/dist/harmony82.mjs +31 -30
  235. package/dist/harmony82.mjs.map +1 -1
  236. package/dist/harmony83.cjs +43 -19
  237. package/dist/harmony83.cjs.map +1 -1
  238. package/dist/harmony83.mjs +43 -19
  239. package/dist/harmony83.mjs.map +1 -1
  240. package/dist/harmony84.cjs +27 -29
  241. package/dist/harmony84.cjs.map +1 -1
  242. package/dist/harmony84.mjs +27 -29
  243. package/dist/harmony84.mjs.map +1 -1
  244. package/dist/harmony85.cjs +64 -57
  245. package/dist/harmony85.cjs.map +1 -1
  246. package/dist/harmony85.mjs +64 -57
  247. package/dist/harmony85.mjs.map +1 -1
  248. package/dist/harmony86.cjs +15 -9
  249. package/dist/harmony86.cjs.map +1 -1
  250. package/dist/harmony86.mjs +14 -8
  251. package/dist/harmony86.mjs.map +1 -1
  252. package/dist/harmony87.cjs +3 -8
  253. package/dist/harmony87.cjs.map +1 -1
  254. package/dist/harmony87.mjs +3 -8
  255. package/dist/harmony87.mjs.map +1 -1
  256. package/dist/harmony88.cjs +163 -26
  257. package/dist/harmony88.cjs.map +1 -1
  258. package/dist/harmony88.mjs +164 -27
  259. package/dist/harmony88.mjs.map +1 -1
  260. package/dist/harmony89.cjs +44 -3
  261. package/dist/harmony89.cjs.map +1 -1
  262. package/dist/harmony89.mjs +44 -3
  263. package/dist/harmony89.mjs.map +1 -1
  264. package/dist/harmony90.cjs +9 -30
  265. package/dist/harmony90.cjs.map +1 -1
  266. package/dist/harmony90.mjs +11 -32
  267. package/dist/harmony90.mjs.map +1 -1
  268. package/dist/harmony91.cjs +13 -44
  269. package/dist/harmony91.cjs.map +1 -1
  270. package/dist/harmony91.mjs +12 -43
  271. package/dist/harmony91.mjs.map +1 -1
  272. package/dist/harmony92.cjs +2 -28
  273. package/dist/harmony92.cjs.map +1 -1
  274. package/dist/harmony92.mjs +3 -29
  275. package/dist/harmony92.mjs.map +1 -1
  276. package/dist/harmony93.cjs +15 -63
  277. package/dist/harmony93.cjs.map +1 -1
  278. package/dist/harmony93.mjs +15 -63
  279. package/dist/harmony93.mjs.map +1 -1
  280. package/dist/harmony94.cjs +74 -13
  281. package/dist/harmony94.cjs.map +1 -1
  282. package/dist/harmony94.mjs +75 -14
  283. package/dist/harmony94.mjs.map +1 -1
  284. package/dist/harmony95.cjs +12 -3
  285. package/dist/harmony95.cjs.map +1 -1
  286. package/dist/harmony95.mjs +12 -3
  287. package/dist/harmony95.mjs.map +1 -1
  288. package/dist/harmony96.cjs +30 -11
  289. package/dist/harmony96.cjs.map +1 -1
  290. package/dist/harmony96.mjs +30 -11
  291. package/dist/harmony96.mjs.map +1 -1
  292. package/dist/harmony97.cjs +10 -22
  293. package/dist/harmony97.cjs.map +1 -1
  294. package/dist/harmony97.mjs +9 -21
  295. package/dist/harmony97.mjs.map +1 -1
  296. package/dist/harmony98.cjs +44 -163
  297. package/dist/harmony98.cjs.map +1 -1
  298. package/dist/harmony98.mjs +44 -163
  299. package/dist/harmony98.mjs.map +1 -1
  300. package/dist/harmony99.cjs +9 -44
  301. package/dist/harmony99.cjs.map +1 -1
  302. package/dist/harmony99.mjs +8 -43
  303. package/dist/harmony99.mjs.map +1 -1
  304. package/dist/types/src/components/Sidebar/Sidebar.d.ts +15 -49
  305. package/dist/types/src/components/Sidebar/SidebarContent/SidebarContent.d.ts +7 -0
  306. package/dist/types/src/components/Sidebar/SidebarContext.d.ts +3 -0
  307. package/dist/types/src/components/Sidebar/SidebarProvider.d.ts +3 -0
  308. package/dist/types/src/components/Sidebar/Widgets/Avatar/Avatar.d.ts +5 -0
  309. package/dist/types/src/components/Sidebar/Widgets/HelpMenu/HelpMenu.d.ts +13 -0
  310. package/dist/types/src/components/Sidebar/Widgets/HelpMenu/HelpMenu.test.d.ts +1 -0
  311. package/dist/types/src/components/Sidebar/Widgets/IconLink/IconLink.test.d.ts +1 -0
  312. package/dist/types/src/components/Sidebar/Widgets/Menu/Menu.d.ts +3 -2
  313. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/BillingMenuItem/BillingMenuItem.d.ts +13 -0
  314. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/CreateNewTeam/CreateNewTeam.d.ts +17 -0
  315. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/CreateNewTeam/CreateNewTeam.test.d.ts +1 -0
  316. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/CreateNewTeamPlaceholder/CreateNewTeamPlaceholder.d.ts +17 -0
  317. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/CreateNewTeamPlaceholder/CreateNewTeamPlaceholder.test.d.ts +1 -0
  318. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/DarkModeToggle/DarkModeToggle.d.ts +18 -0
  319. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProfileMenu.d.ts +11 -24
  320. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProfileMenu.stories.d.ts +3 -5
  321. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProfileSettingsMenuItem/ProfileSettingsMenuItem.d.ts +10 -35
  322. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProfileSettingsMenuItem/ProfileSettingsMenuItem.test.d.ts +1 -0
  323. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProviderMenuItem/ProviderMenuItem.d.ts +13 -0
  324. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProviderMenuItem/ProviderMenuItem.test.d.ts +1 -0
  325. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/TeamMenuItem/TeamMenuItem.d.ts +1 -3
  326. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/TeamMenuItem/TeamMenuItem.test.d.ts +1 -0
  327. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/TeamSettingsMenuItem/TeamSettingsMenuItem.d.ts +13 -0
  328. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/TeamSettingsMenuItem/TeamSettingsMenuItem.test.d.ts +1 -0
  329. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/TeamSwitch/TeamSwitch.d.ts +5 -7
  330. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/TeamSwitch/TeamSwitch.test.d.ts +1 -0
  331. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/UpgradeMenuItem/UpgradeMenuItem.d.ts +6 -9
  332. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/UpgradeMenuItem/UpgradeMenuItem.test.d.ts +1 -0
  333. package/dist/types/src/components/Sidebar/Widgets/Tasks/utils/content.d.ts +4 -0
  334. package/dist/types/src/components/Sidebar/hooks/useSidebar.d.ts +1 -0
  335. package/dist/types/src/components/Sidebar/hooks/useSidebarDataLoader.d.ts +5 -0
  336. package/dist/types/src/components/Sidebar/types.d.ts +70 -0
  337. package/dist/types/src/features/auth/core/types/jwtTokenPayload.d.ts +16 -10
  338. package/dist/types/src/features/auth/core/types/jwtTokenPayload.fixture.d.ts +15 -11
  339. package/dist/types/src/features/auth/frontend/hooks/useAuthenticatedSessionPayload.d.ts +7 -5
  340. package/dist/types/src/features/auth/frontend/hooks/useAuthenticatedUser.d.ts +1 -1
  341. package/dist/types/src/features/publicApi/hooks/useGetProjectPermissionMetaQuery.d.ts +3 -3
  342. package/dist/types/src/features/publicApi/hooks/useGetTeamUsersQuery.d.ts +1 -1
  343. package/dist/types/src/features/publicApi/hooks/useListPermissionTemplates.d.ts +2 -2
  344. package/dist/types/src/features/publicApi/hooks/useListTeamUsersQuery.d.ts +1 -1
  345. package/dist/types/src/features/publicApi/permissionTemplates.d.ts +8 -8
  346. package/dist/types/src/features/publicApi/projects.d.ts +12 -12
  347. package/dist/types/src/features/publicApi/teamUsers.d.ts +8 -8
  348. package/dist/types/src/features/publicApi/types/permissionTemplateTypes.d.ts +12 -12
  349. package/dist/types/src/features/publicApi/types/permissionTypes.d.ts +2 -2
  350. package/dist/types/src/features/publicApi/types/projectTypes.d.ts +18 -18
  351. package/dist/types/src/features/publicApi/types/teamUserTypes.d.ts +10 -10
  352. package/dist/types/src/utils/user/permissions.d.ts +9 -0
  353. package/dist/types/src/utils/user/permissions.test.d.ts +1 -0
  354. package/dist/types/tests/mocks/sidebar/sidebar.d.ts +14 -0
  355. package/dist/types/tests/utils/sidebar.d.ts +4 -0
  356. package/package.json +1 -1
  357. package/dist/harmony148.cjs +0 -15
  358. package/dist/harmony148.cjs.map +0 -1
  359. package/dist/harmony148.mjs +0 -15
  360. package/dist/harmony148.mjs.map +0 -1
  361. package/dist/harmony149.cjs +0 -9
  362. package/dist/harmony149.cjs.map +0 -1
  363. package/dist/harmony149.mjs +0 -9
  364. package/dist/harmony149.mjs.map +0 -1
  365. package/dist/harmony150.cjs +0 -15
  366. package/dist/harmony150.cjs.map +0 -1
  367. package/dist/harmony150.mjs +0 -15
  368. package/dist/harmony150.mjs.map +0 -1
  369. package/dist/harmony151.cjs +0 -35
  370. package/dist/harmony151.cjs.map +0 -1
  371. package/dist/harmony151.mjs +0 -35
  372. package/dist/harmony151.mjs.map +0 -1
  373. package/dist/harmony152.cjs +0 -17
  374. package/dist/harmony152.cjs.map +0 -1
  375. package/dist/harmony152.mjs +0 -17
  376. package/dist/harmony152.mjs.map +0 -1
  377. package/dist/harmony153.cjs +0 -49
  378. package/dist/harmony153.cjs.map +0 -1
  379. package/dist/harmony153.mjs +0 -49
  380. package/dist/harmony153.mjs.map +0 -1
  381. package/dist/harmony154.cjs +0 -15
  382. package/dist/harmony154.cjs.map +0 -1
  383. package/dist/harmony154.mjs +0 -15
  384. package/dist/harmony154.mjs.map +0 -1
  385. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProfileMenuContent.d.ts +0 -6
  386. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProfileMenuContext.d.ts +0 -3
  387. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProfileMenuProvider.d.ts +0 -7
  388. package/dist/types/src/components/Sidebar/utils/index.d.ts +0 -4
  389. /package/dist/types/src/components/Sidebar/Widgets/{ProfileMenu/ProfileMenu.test.d.ts → Avatar/Avatar.test.d.ts} +0 -0
  390. /package/dist/types/src/components/Sidebar/{UpgradeIcon → Widgets/ProfileMenu/UpgradeIcon}/UpgradeIcon.d.ts +0 -0
@@ -1,9 +1,22 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const teamsContainer = "_teamsContainer_1ncrr_5";
4
- const styles = {
5
- teamsContainer
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const useSidebar = require("./harmony95.cjs");
5
+ const louis = require("@lokalise/louis");
6
+ const permissions = require("./harmony96.cjs");
7
+ const CreateNewTeamPlaceholder_module = require("./harmony130.cjs");
8
+ const CreateNewTeamPlaceholder = ({ onClick }) => {
9
+ const { jwt } = useSidebar.useSidebar();
10
+ if (!permissions.canCreateTeam(jwt.result)) {
11
+ return null;
12
+ }
13
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
14
+ /* @__PURE__ */ jsxRuntime.jsx(louis.MenuItem, { onClick, "data-testid": "sidebar-create-new-team-placeholder", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", children: [
15
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: CreateNewTeamPlaceholder_module.default.mainLabel, children: "Create new team" }),
16
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: CreateNewTeamPlaceholder_module.default.subLabel, children: "Switch to Expert to create a new team" })
17
+ ] }) }),
18
+ /* @__PURE__ */ jsxRuntime.jsx(louis.MenuDivider, {})
19
+ ] });
6
20
  };
7
- exports.default = styles;
8
- exports.teamsContainer = teamsContainer;
21
+ exports.CreateNewTeamPlaceholder = CreateNewTeamPlaceholder;
9
22
  //# sourceMappingURL=harmony110.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony110.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
1
+ {"version":3,"file":"harmony110.cjs","sources":["../src/components/Sidebar/Widgets/ProfileMenu/CreateNewTeamPlaceholder/CreateNewTeamPlaceholder.tsx"],"sourcesContent":["import { useSidebar } from '@components/Sidebar/hooks/useSidebar'\nimport { MenuDivider, MenuItem } from '@lokalise/louis'\nimport { canCreateTeam } from '@utils/user/permissions'\nimport styles from './CreateNewTeamPlaceholder.module.css'\n\ntype CreateNewTeamPlaceholderProps = {\n\tonClick: () => void\n}\n\n/**\n * A placeholder menu item for creating a new team.\n * Checks the user's permissions using the Sidebar context and renders\n * nothing if the user does not have access.\n *\n * @example\n * ```\n * <CreateNewTeamPlaceholder onClick={handleCreateTeam} />\n * ```\n *\n * @note This component must be used within a Sidebar Context.\n */\n\nexport const CreateNewTeamPlaceholder = ({ onClick }: CreateNewTeamPlaceholderProps) => {\n\tconst { jwt } = useSidebar()\n\n\tif (!canCreateTeam(jwt.result)) {\n\t\treturn null\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem onClick={onClick} data-testid=\"sidebar-create-new-team-placeholder\">\n\t\t\t\t<div className=\"flex flex-col\">\n\t\t\t\t\t<span className={styles.mainLabel}>Create new team</span>\n\t\t\t\t\t<span className={styles.subLabel}>Switch to Expert to create a new team</span>\n\t\t\t\t</div>\n\t\t\t</MenuItem>\n\t\t\t<MenuDivider />\n\t\t</>\n\t)\n}\n"],"names":["useSidebar","canCreateTeam","jsxs","Fragment","jsx","MenuItem","styles","MenuDivider"],"mappings":";;;;;;;AAsBO,MAAM,2BAA2B,CAAC,EAAE,cAA6C;AACjF,QAAA,EAAE,IAAI,IAAIA,sBAAW;AAE3B,MAAI,CAACC,YAAA,cAAc,IAAI,MAAM,GAAG;AACxB,WAAA;AAAA,EAAA;AAGR,SAEEC,2BAAA,KAAAC,qBAAA,EAAA,UAAA;AAAA,IAAAC,2BAAAA,IAACC,kBAAS,SAAkB,eAAY,uCACvC,UAACH,2BAAAA,KAAA,OAAA,EAAI,WAAU,iBACd,UAAA;AAAA,MAAAE,2BAAA,IAAC,QAAK,EAAA,WAAWE,gCAAO,QAAA,WAAW,UAAe,mBAAA;AAAA,MACjDF,2BAAA,IAAA,QAAA,EAAK,WAAWE,gCAAA,QAAO,UAAU,UAAqC,wCAAA,CAAA;AAAA,IAAA,EAAA,CACxE,EACD,CAAA;AAAA,mCACCC,MAAY,aAAA,CAAA,CAAA;AAAA,EAAA,GACd;AAEF;;"}
@@ -1,9 +1,22 @@
1
- const teamsContainer = "_teamsContainer_1ncrr_5";
2
- const styles = {
3
- teamsContainer
1
+ import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
+ import { useSidebar } from "./harmony95.mjs";
3
+ import { MenuItem, MenuDivider } from "@lokalise/louis";
4
+ import { canCreateTeam } from "./harmony96.mjs";
5
+ import styles from "./harmony130.mjs";
6
+ const CreateNewTeamPlaceholder = ({ onClick }) => {
7
+ const { jwt } = useSidebar();
8
+ if (!canCreateTeam(jwt.result)) {
9
+ return null;
10
+ }
11
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
12
+ /* @__PURE__ */ jsx(MenuItem, { onClick, "data-testid": "sidebar-create-new-team-placeholder", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
13
+ /* @__PURE__ */ jsx("span", { className: styles.mainLabel, children: "Create new team" }),
14
+ /* @__PURE__ */ jsx("span", { className: styles.subLabel, children: "Switch to Expert to create a new team" })
15
+ ] }) }),
16
+ /* @__PURE__ */ jsx(MenuDivider, {})
17
+ ] });
4
18
  };
5
19
  export {
6
- styles as default,
7
- teamsContainer
20
+ CreateNewTeamPlaceholder
8
21
  };
9
22
  //# sourceMappingURL=harmony110.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony110.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"harmony110.mjs","sources":["../src/components/Sidebar/Widgets/ProfileMenu/CreateNewTeamPlaceholder/CreateNewTeamPlaceholder.tsx"],"sourcesContent":["import { useSidebar } from '@components/Sidebar/hooks/useSidebar'\nimport { MenuDivider, MenuItem } from '@lokalise/louis'\nimport { canCreateTeam } from '@utils/user/permissions'\nimport styles from './CreateNewTeamPlaceholder.module.css'\n\ntype CreateNewTeamPlaceholderProps = {\n\tonClick: () => void\n}\n\n/**\n * A placeholder menu item for creating a new team.\n * Checks the user's permissions using the Sidebar context and renders\n * nothing if the user does not have access.\n *\n * @example\n * ```\n * <CreateNewTeamPlaceholder onClick={handleCreateTeam} />\n * ```\n *\n * @note This component must be used within a Sidebar Context.\n */\n\nexport const CreateNewTeamPlaceholder = ({ onClick }: CreateNewTeamPlaceholderProps) => {\n\tconst { jwt } = useSidebar()\n\n\tif (!canCreateTeam(jwt.result)) {\n\t\treturn null\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem onClick={onClick} data-testid=\"sidebar-create-new-team-placeholder\">\n\t\t\t\t<div className=\"flex flex-col\">\n\t\t\t\t\t<span className={styles.mainLabel}>Create new team</span>\n\t\t\t\t\t<span className={styles.subLabel}>Switch to Expert to create a new team</span>\n\t\t\t\t</div>\n\t\t\t</MenuItem>\n\t\t\t<MenuDivider />\n\t\t</>\n\t)\n}\n"],"names":[],"mappings":";;;;;AAsBO,MAAM,2BAA2B,CAAC,EAAE,cAA6C;AACjF,QAAA,EAAE,IAAI,IAAI,WAAW;AAE3B,MAAI,CAAC,cAAc,IAAI,MAAM,GAAG;AACxB,WAAA;AAAA,EAAA;AAGR,SAEE,qBAAA,UAAA,EAAA,UAAA;AAAA,IAAA,oBAAC,YAAS,SAAkB,eAAY,uCACvC,UAAC,qBAAA,OAAA,EAAI,WAAU,iBACd,UAAA;AAAA,MAAA,oBAAC,QAAK,EAAA,WAAW,OAAO,WAAW,UAAe,mBAAA;AAAA,MACjD,oBAAA,QAAA,EAAK,WAAW,OAAO,UAAU,UAAqC,wCAAA,CAAA;AAAA,IAAA,EAAA,CACxE,EACD,CAAA;AAAA,wBACC,aAAY,CAAA,CAAA;AAAA,EAAA,GACd;AAEF;"}
@@ -2,23 +2,12 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const louis = require("@lokalise/louis");
5
- const clsx = require("./harmony73.cjs");
6
- const UpgradeIcon_module = require("./harmony126.cjs");
7
- const UpgradeIcon = ({ className = "" }) => {
8
- return /* @__PURE__ */ jsxRuntime.jsx(
9
- "div",
10
- {
11
- "aria-label": "Upgrade Icon",
12
- className: clsx.clsx(
13
- UpgradeIcon_module.default.iconContainer,
14
- "flex-row",
15
- "items-center",
16
- "justify-center",
17
- className
18
- ),
19
- children: /* @__PURE__ */ jsxRuntime.jsx(louis.CaretUpIcon, {})
20
- }
21
- );
5
+ const DarkModeToggle_module = require("./harmony131.cjs");
6
+ const DarkModeToggle = ({ onToggle, isDarkMode }) => {
7
+ return /* @__PURE__ */ jsxRuntime.jsx(louis.MenuItem, { onClick: onToggle, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex-row justify-between gap-1 ${DarkModeToggle_module.default.switchContainer}`, children: [
8
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Dark mode" }),
9
+ /* @__PURE__ */ jsxRuntime.jsx(louis.Switch, { defaultChecked: isDarkMode, "aria-label": "Toggle dark mode" })
10
+ ] }) });
22
11
  };
23
- exports.UpgradeIcon = UpgradeIcon;
12
+ exports.DarkModeToggle = DarkModeToggle;
24
13
  //# sourceMappingURL=harmony111.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony111.cjs","sources":["../src/components/Sidebar/UpgradeIcon/UpgradeIcon.tsx"],"sourcesContent":["import { CaretUpIcon } from '@lokalise/louis'\nimport clsx from 'clsx'\nimport styles from './UpgradeIcon.module.css'\n\ntype UpgradeIconProps = {\n\tclassName?: string\n}\n\nexport const UpgradeIcon = ({ className = '' }: UpgradeIconProps) => {\n\treturn (\n\t\t<div\n\t\t\taria-label={'Upgrade Icon'}\n\t\t\tclassName={clsx(\n\t\t\t\tstyles.iconContainer,\n\t\t\t\t'flex-row',\n\t\t\t\t'items-center',\n\t\t\t\t'justify-center',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<CaretUpIcon />\n\t\t</div>\n\t)\n}\n"],"names":["jsx","clsx","styles","CaretUpIcon"],"mappings":";;;;;;AAQO,MAAM,cAAc,CAAC,EAAE,YAAY,SAA2B;AAEnE,SAAAA,2BAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,cAAY;AAAA,MACZ,WAAWC,KAAA;AAAA,QACVC,mBAAAA,QAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,MAEA,yCAACC,MAAAA,aAAY,CAAA,CAAA;AAAA,IAAA;AAAA,EACd;AAEF;;"}
1
+ {"version":3,"file":"harmony111.cjs","sources":["../src/components/Sidebar/Widgets/ProfileMenu/DarkModeToggle/DarkModeToggle.tsx"],"sourcesContent":["import { MenuItem, Switch } from '@lokalise/louis'\nimport styles from './DarkModeToggle.module.css'\n\ntype DarkModeToggleProps = {\n\tonToggle: () => void\n\tisDarkMode: boolean\n}\n\n/**\n * A menu item component for toggling dark mode.\n * Displays a switch and label, and calls the provided onToggle handler when clicked.\n *\n * @example\n * ```\n * <DarkModeToggle\n * isDarkMode={isDarkMode}\n * onToggle={handleToggleDarkMode}\n * />\n * ```\n */\n\nexport const DarkModeToggle = ({ onToggle, isDarkMode }: DarkModeToggleProps) => {\n\treturn (\n\t\t<MenuItem onClick={onToggle}>\n\t\t\t<div className={`flex-row justify-between gap-1 ${styles.switchContainer}`}>\n\t\t\t\t<span>Dark mode</span>\n\t\t\t\t<Switch defaultChecked={isDarkMode} aria-label=\"Toggle dark mode\" />\n\t\t\t</div>\n\t\t</MenuItem>\n\t)\n}\n"],"names":["jsx","MenuItem","jsxs","styles","Switch"],"mappings":";;;;;AAqBO,MAAM,iBAAiB,CAAC,EAAE,UAAU,iBAAsC;AAE/E,SAAAA,2BAAAA,IAACC,MAAAA,UAAS,EAAA,SAAS,UAClB,UAAAC,2BAAA,KAAC,SAAI,WAAW,kCAAkCC,sBAAO,QAAA,eAAe,IACvE,UAAA;AAAA,IAAAH,2BAAAA,IAAC,UAAK,UAAS,YAAA,CAAA;AAAA,IACdA,2BAAA,IAAAI,MAAA,QAAA,EAAO,gBAAgB,YAAY,cAAW,mBAAmB,CAAA;AAAA,EAAA,EAAA,CACnE,EACD,CAAA;AAEF;;"}
@@ -1,24 +1,13 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import { CaretUpIcon } from "@lokalise/louis";
3
- import { clsx } from "./harmony73.mjs";
4
- import styles from "./harmony126.mjs";
5
- const UpgradeIcon = ({ className = "" }) => {
6
- return /* @__PURE__ */ jsx(
7
- "div",
8
- {
9
- "aria-label": "Upgrade Icon",
10
- className: clsx(
11
- styles.iconContainer,
12
- "flex-row",
13
- "items-center",
14
- "justify-center",
15
- className
16
- ),
17
- children: /* @__PURE__ */ jsx(CaretUpIcon, {})
18
- }
19
- );
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { MenuItem, Switch } from "@lokalise/louis";
3
+ import styles from "./harmony131.mjs";
4
+ const DarkModeToggle = ({ onToggle, isDarkMode }) => {
5
+ return /* @__PURE__ */ jsx(MenuItem, { onClick: onToggle, children: /* @__PURE__ */ jsxs("div", { className: `flex-row justify-between gap-1 ${styles.switchContainer}`, children: [
6
+ /* @__PURE__ */ jsx("span", { children: "Dark mode" }),
7
+ /* @__PURE__ */ jsx(Switch, { defaultChecked: isDarkMode, "aria-label": "Toggle dark mode" })
8
+ ] }) });
20
9
  };
21
10
  export {
22
- UpgradeIcon
11
+ DarkModeToggle
23
12
  };
24
13
  //# sourceMappingURL=harmony111.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony111.mjs","sources":["../src/components/Sidebar/UpgradeIcon/UpgradeIcon.tsx"],"sourcesContent":["import { CaretUpIcon } from '@lokalise/louis'\nimport clsx from 'clsx'\nimport styles from './UpgradeIcon.module.css'\n\ntype UpgradeIconProps = {\n\tclassName?: string\n}\n\nexport const UpgradeIcon = ({ className = '' }: UpgradeIconProps) => {\n\treturn (\n\t\t<div\n\t\t\taria-label={'Upgrade Icon'}\n\t\t\tclassName={clsx(\n\t\t\t\tstyles.iconContainer,\n\t\t\t\t'flex-row',\n\t\t\t\t'items-center',\n\t\t\t\t'justify-center',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<CaretUpIcon />\n\t\t</div>\n\t)\n}\n"],"names":[],"mappings":";;;;AAQO,MAAM,cAAc,CAAC,EAAE,YAAY,SAA2B;AAEnE,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,cAAY;AAAA,MACZ,WAAW;AAAA,QACV,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,MAEA,8BAAC,aAAY,CAAA,CAAA;AAAA,IAAA;AAAA,EACd;AAEF;"}
1
+ {"version":3,"file":"harmony111.mjs","sources":["../src/components/Sidebar/Widgets/ProfileMenu/DarkModeToggle/DarkModeToggle.tsx"],"sourcesContent":["import { MenuItem, Switch } from '@lokalise/louis'\nimport styles from './DarkModeToggle.module.css'\n\ntype DarkModeToggleProps = {\n\tonToggle: () => void\n\tisDarkMode: boolean\n}\n\n/**\n * A menu item component for toggling dark mode.\n * Displays a switch and label, and calls the provided onToggle handler when clicked.\n *\n * @example\n * ```\n * <DarkModeToggle\n * isDarkMode={isDarkMode}\n * onToggle={handleToggleDarkMode}\n * />\n * ```\n */\n\nexport const DarkModeToggle = ({ onToggle, isDarkMode }: DarkModeToggleProps) => {\n\treturn (\n\t\t<MenuItem onClick={onToggle}>\n\t\t\t<div className={`flex-row justify-between gap-1 ${styles.switchContainer}`}>\n\t\t\t\t<span>Dark mode</span>\n\t\t\t\t<Switch defaultChecked={isDarkMode} aria-label=\"Toggle dark mode\" />\n\t\t\t</div>\n\t\t</MenuItem>\n\t)\n}\n"],"names":[],"mappings":";;;AAqBO,MAAM,iBAAiB,CAAC,EAAE,UAAU,iBAAsC;AAE/E,SAAA,oBAAC,UAAS,EAAA,SAAS,UAClB,UAAA,qBAAC,SAAI,WAAW,kCAAkC,OAAO,eAAe,IACvE,UAAA;AAAA,IAAA,oBAAC,UAAK,UAAS,YAAA,CAAA;AAAA,IACd,oBAAA,QAAA,EAAO,gBAAgB,YAAY,cAAW,mBAAmB,CAAA;AAAA,EAAA,EAAA,CACnE,EACD,CAAA;AAEF;"}
@@ -1,15 +1,30 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const container = "_container_1u995_1";
4
- const planCta = "_planCta_1u995_15";
5
- const upgradeIconWrapper = "_upgradeIconWrapper_1u995_19";
6
- const styles = {
7
- container,
8
- planCta,
9
- upgradeIconWrapper
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const useSidebar = require("./harmony95.cjs");
5
+ const louis = require("@lokalise/louis");
6
+ const permissions = require("./harmony96.cjs");
7
+ const ProfileSettingsMenuItem_module = require("./harmony132.cjs");
8
+ const ProfileSettingsMenuItem = ({ onClick }) => {
9
+ var _a;
10
+ const { jwt } = useSidebar.useSidebar();
11
+ if (!permissions.canAccessProfileSettings(jwt.result)) {
12
+ return null;
13
+ }
14
+ return /* @__PURE__ */ jsxRuntime.jsx(
15
+ louis.MenuItem,
16
+ {
17
+ "data-testid": "sidebar-profile-settings-menu-item",
18
+ href: "/settings",
19
+ onClick: () => {
20
+ onClick == null ? void 0 : onClick();
21
+ },
22
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex-col ${ProfileSettingsMenuItem_module.default.container}`, children: [
23
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Profile Settings" }),
24
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: ProfileSettingsMenuItem_module.default.profileEmail, children: (_a = jwt.result) == null ? void 0 : _a.userEmail })
25
+ ] })
26
+ }
27
+ );
10
28
  };
11
- exports.container = container;
12
- exports.default = styles;
13
- exports.planCta = planCta;
14
- exports.upgradeIconWrapper = upgradeIconWrapper;
29
+ exports.ProfileSettingsMenuItem = ProfileSettingsMenuItem;
15
30
  //# sourceMappingURL=harmony112.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony112.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"harmony112.cjs","sources":["../src/components/Sidebar/Widgets/ProfileMenu/ProfileSettingsMenuItem/ProfileSettingsMenuItem.tsx"],"sourcesContent":["import { useSidebar } from '@components/Sidebar/hooks/useSidebar'\nimport { MenuItem } from '@lokalise/louis'\nimport { canAccessProfileSettings } from '@utils/user/permissions'\nimport styles from './ProfileSettingsMenuItem.module.css'\n\n/**\n * A menu item component for navigating to the profile settings page.\n * Checks the user's permissions using the Sidebar context and renders\n * nothing if the user does not have access.\n *\n * @example\n * ```\n * <ProfileSettingsMenuItem onClick={() => { }} />\n * ```\n *\n * @note This component must be used within a Sidebar Context.\n */\n\ntype ProfileSettingsMenuItem = {\n\tonClick?: () => void\n}\n\nexport const ProfileSettingsMenuItem = ({ onClick }: ProfileSettingsMenuItem) => {\n\tconst { jwt } = useSidebar()\n\n\tif (!canAccessProfileSettings(jwt.result)) {\n\t\treturn null\n\t}\n\n\treturn (\n\t\t<MenuItem\n\t\t\tdata-testid=\"sidebar-profile-settings-menu-item\"\n\t\t\thref=\"/settings\"\n\t\t\tonClick={() => {\n\t\t\t\tonClick?.()\n\t\t\t}}\n\t\t>\n\t\t\t<div className={`flex-col ${styles.container}`}>\n\t\t\t\t<span>Profile Settings</span>\n\t\t\t\t<span className={styles.profileEmail}>{jwt.result?.userEmail}</span>\n\t\t\t</div>\n\t\t</MenuItem>\n\t)\n}\n"],"names":["useSidebar","canAccessProfileSettings","jsx","MenuItem","styles"],"mappings":";;;;;;;AAsBO,MAAM,0BAA0B,CAAC,EAAE,cAAuC;;AAC1E,QAAA,EAAE,IAAI,IAAIA,sBAAW;AAE3B,MAAI,CAACC,YAAA,yBAAyB,IAAI,MAAM,GAAG;AACnC,WAAA;AAAA,EAAA;AAIP,SAAAC,2BAAA;AAAA,IAACC,MAAA;AAAA,IAAA;AAAA,MACA,eAAY;AAAA,MACZ,MAAK;AAAA,MACL,SAAS,MAAM;AACJ;AAAA,MACX;AAAA,MAEA,0CAAC,OAAI,EAAA,WAAW,YAAYC,uCAAO,SAAS,IAC3C,UAAA;AAAA,QAAAF,2BAAAA,IAAC,UAAK,UAAgB,mBAAA,CAAA;AAAA,uCACrB,QAAK,EAAA,WAAWE,uCAAO,cAAe,WAAA,SAAI,WAAJ,mBAAY,UAAU,CAAA;AAAA,MAAA,EAC9D,CAAA;AAAA,IAAA;AAAA,EACD;AAEF;;"}
@@ -1,15 +1,30 @@
1
- const container = "_container_1u995_1";
2
- const planCta = "_planCta_1u995_15";
3
- const upgradeIconWrapper = "_upgradeIconWrapper_1u995_19";
4
- const styles = {
5
- container,
6
- planCta,
7
- upgradeIconWrapper
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useSidebar } from "./harmony95.mjs";
3
+ import { MenuItem } from "@lokalise/louis";
4
+ import { canAccessProfileSettings } from "./harmony96.mjs";
5
+ import styles from "./harmony132.mjs";
6
+ const ProfileSettingsMenuItem = ({ onClick }) => {
7
+ var _a;
8
+ const { jwt } = useSidebar();
9
+ if (!canAccessProfileSettings(jwt.result)) {
10
+ return null;
11
+ }
12
+ return /* @__PURE__ */ jsx(
13
+ MenuItem,
14
+ {
15
+ "data-testid": "sidebar-profile-settings-menu-item",
16
+ href: "/settings",
17
+ onClick: () => {
18
+ onClick == null ? void 0 : onClick();
19
+ },
20
+ children: /* @__PURE__ */ jsxs("div", { className: `flex-col ${styles.container}`, children: [
21
+ /* @__PURE__ */ jsx("span", { children: "Profile Settings" }),
22
+ /* @__PURE__ */ jsx("span", { className: styles.profileEmail, children: (_a = jwt.result) == null ? void 0 : _a.userEmail })
23
+ ] })
24
+ }
25
+ );
8
26
  };
9
27
  export {
10
- container,
11
- styles as default,
12
- planCta,
13
- upgradeIconWrapper
28
+ ProfileSettingsMenuItem
14
29
  };
15
30
  //# sourceMappingURL=harmony112.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony112.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
1
+ {"version":3,"file":"harmony112.mjs","sources":["../src/components/Sidebar/Widgets/ProfileMenu/ProfileSettingsMenuItem/ProfileSettingsMenuItem.tsx"],"sourcesContent":["import { useSidebar } from '@components/Sidebar/hooks/useSidebar'\nimport { MenuItem } from '@lokalise/louis'\nimport { canAccessProfileSettings } from '@utils/user/permissions'\nimport styles from './ProfileSettingsMenuItem.module.css'\n\n/**\n * A menu item component for navigating to the profile settings page.\n * Checks the user's permissions using the Sidebar context and renders\n * nothing if the user does not have access.\n *\n * @example\n * ```\n * <ProfileSettingsMenuItem onClick={() => { }} />\n * ```\n *\n * @note This component must be used within a Sidebar Context.\n */\n\ntype ProfileSettingsMenuItem = {\n\tonClick?: () => void\n}\n\nexport const ProfileSettingsMenuItem = ({ onClick }: ProfileSettingsMenuItem) => {\n\tconst { jwt } = useSidebar()\n\n\tif (!canAccessProfileSettings(jwt.result)) {\n\t\treturn null\n\t}\n\n\treturn (\n\t\t<MenuItem\n\t\t\tdata-testid=\"sidebar-profile-settings-menu-item\"\n\t\t\thref=\"/settings\"\n\t\t\tonClick={() => {\n\t\t\t\tonClick?.()\n\t\t\t}}\n\t\t>\n\t\t\t<div className={`flex-col ${styles.container}`}>\n\t\t\t\t<span>Profile Settings</span>\n\t\t\t\t<span className={styles.profileEmail}>{jwt.result?.userEmail}</span>\n\t\t\t</div>\n\t\t</MenuItem>\n\t)\n}\n"],"names":[],"mappings":";;;;;AAsBO,MAAM,0BAA0B,CAAC,EAAE,cAAuC;;AAC1E,QAAA,EAAE,IAAI,IAAI,WAAW;AAE3B,MAAI,CAAC,yBAAyB,IAAI,MAAM,GAAG;AACnC,WAAA;AAAA,EAAA;AAIP,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,eAAY;AAAA,MACZ,MAAK;AAAA,MACL,SAAS,MAAM;AACJ;AAAA,MACX;AAAA,MAEA,+BAAC,OAAI,EAAA,WAAW,YAAY,OAAO,SAAS,IAC3C,UAAA;AAAA,QAAA,oBAAC,UAAK,UAAgB,mBAAA,CAAA;AAAA,4BACrB,QAAK,EAAA,WAAW,OAAO,cAAe,WAAA,SAAI,WAAJ,mBAAY,UAAU,CAAA;AAAA,MAAA,EAC9D,CAAA;AAAA,IAAA;AAAA,EACD;AAEF;"}
@@ -1,17 +1,15 @@
1
1
  "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
6
- const jwtTokenPayload = require("./harmony17.cjs");
7
- const _NewJwtIssuedEvent = class _NewJwtIssuedEvent extends CustomEvent {
8
- constructor(token) {
9
- super(_NewJwtIssuedEvent.eventName, {
10
- detail: { token, payload: jwtTokenPayload.parseJwtTokenPayload(token.accessToken) }
11
- });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const useSidebar = require("./harmony95.cjs");
5
+ const louis = require("@lokalise/louis");
6
+ const permissions = require("./harmony96.cjs");
7
+ const ProviderMenuItem = () => {
8
+ const { jwt } = useSidebar.useSidebar();
9
+ if (!permissions.canAccessProviderDashboard(jwt.result)) {
10
+ return null;
12
11
  }
12
+ return /* @__PURE__ */ jsxRuntime.jsx(louis.MenuItem, { href: "/provider", children: "Provider dashboard" });
13
13
  };
14
- __publicField(_NewJwtIssuedEvent, "eventName", "new-jwt-issued");
15
- let NewJwtIssuedEvent = _NewJwtIssuedEvent;
16
- exports.NewJwtIssuedEvent = NewJwtIssuedEvent;
14
+ exports.ProviderMenuItem = ProviderMenuItem;
17
15
  //# sourceMappingURL=harmony113.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony113.cjs","sources":["../src/features/auth/frontend/events/NewJwtIssuedEvent.ts"],"sourcesContent":["import type { JwtTokenPayload } from '@features/auth/core/types/jwtTokenPayload'\nimport { parseJwtTokenPayload } from '@features/auth/core/utils/jwtTokenPayload'\nimport type { JwtToken } from '@features/publicApi/types/userTokenTypes'\n\ntype NewJwtIssuedEventDetail = {\n\ttoken: JwtToken\n\tpayload: JwtTokenPayload | undefined\n}\n\n/**\n * This event is emitted when a new JWT token is issued or refreshed.\n */\nexport class NewJwtIssuedEvent extends CustomEvent<NewJwtIssuedEventDetail> {\n\tstatic readonly eventName = 'new-jwt-issued' as const\n\n\tconstructor(token: JwtToken) {\n\t\tsuper(NewJwtIssuedEvent.eventName, {\n\t\t\tdetail: { token, payload: parseJwtTokenPayload(token.accessToken) },\n\t\t})\n\t}\n}\n\nexport const isNewJwtIssuedEvent = (event: Event): event is NewJwtIssuedEvent =>\n\tevent.type === NewJwtIssuedEvent.eventName\n\ndeclare global {\n\tinterface WindowEventMap {\n\t\t[NewJwtIssuedEvent.eventName]: NewJwtIssuedEvent\n\t}\n}\n"],"names":["parseJwtTokenPayload"],"mappings":";;;;;;AAYO,MAAM,qBAAN,MAAM,2BAA0B,YAAqC;AAAA,EAG3E,YAAY,OAAiB;AAC5B,UAAM,mBAAkB,WAAW;AAAA,MAClC,QAAQ,EAAE,OAAO,SAASA,gBAAAA,qBAAqB,MAAM,WAAW,EAAE;AAAA,IAAA,CAClE;AAAA,EAAA;AAEH;AAPC,cADY,oBACI,aAAY;AADtB,IAAM,oBAAN;;"}
1
+ {"version":3,"file":"harmony113.cjs","sources":["../src/components/Sidebar/Widgets/ProfileMenu/ProviderMenuItem/ProviderMenuItem.tsx"],"sourcesContent":["import { useSidebar } from '@components/Sidebar/hooks/useSidebar'\nimport { MenuItem } from '@lokalise/louis'\nimport { canAccessProviderDashboard } from '@utils/user/permissions'\n\n/**\n * A menu item component for navigating to the provider dashboard.\n * It checks the current user's permissions using the Sidebar context\n * and renders nothing if the user does not have access.\n *\n * @example\n * ```\n * <ProviderMenuItem />\n * ```\n *\n * @note This component must be used within a Sidebar Context.\n */\n\nexport const ProviderMenuItem = () => {\n\tconst { jwt } = useSidebar()\n\n\tif (!canAccessProviderDashboard(jwt.result)) {\n\t\treturn null\n\t}\n\n\treturn <MenuItem href=\"/provider\">Provider dashboard</MenuItem>\n}\n"],"names":["useSidebar","canAccessProviderDashboard","jsx","MenuItem"],"mappings":";;;;;;AAiBO,MAAM,mBAAmB,MAAM;AAC/B,QAAA,EAAE,IAAI,IAAIA,sBAAW;AAE3B,MAAI,CAACC,YAAA,2BAA2B,IAAI,MAAM,GAAG;AACrC,WAAA;AAAA,EAAA;AAGR,SAAQC,2BAAAA,IAAAC,MAAAA,UAAA,EAAS,MAAK,aAAY,UAAkB,sBAAA;AACrD;;"}
@@ -1,17 +1,15 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { parseJwtTokenPayload } from "./harmony17.mjs";
5
- const _NewJwtIssuedEvent = class _NewJwtIssuedEvent extends CustomEvent {
6
- constructor(token) {
7
- super(_NewJwtIssuedEvent.eventName, {
8
- detail: { token, payload: parseJwtTokenPayload(token.accessToken) }
9
- });
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useSidebar } from "./harmony95.mjs";
3
+ import { MenuItem } from "@lokalise/louis";
4
+ import { canAccessProviderDashboard } from "./harmony96.mjs";
5
+ const ProviderMenuItem = () => {
6
+ const { jwt } = useSidebar();
7
+ if (!canAccessProviderDashboard(jwt.result)) {
8
+ return null;
10
9
  }
10
+ return /* @__PURE__ */ jsx(MenuItem, { href: "/provider", children: "Provider dashboard" });
11
11
  };
12
- __publicField(_NewJwtIssuedEvent, "eventName", "new-jwt-issued");
13
- let NewJwtIssuedEvent = _NewJwtIssuedEvent;
14
12
  export {
15
- NewJwtIssuedEvent
13
+ ProviderMenuItem
16
14
  };
17
15
  //# sourceMappingURL=harmony113.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony113.mjs","sources":["../src/features/auth/frontend/events/NewJwtIssuedEvent.ts"],"sourcesContent":["import type { JwtTokenPayload } from '@features/auth/core/types/jwtTokenPayload'\nimport { parseJwtTokenPayload } from '@features/auth/core/utils/jwtTokenPayload'\nimport type { JwtToken } from '@features/publicApi/types/userTokenTypes'\n\ntype NewJwtIssuedEventDetail = {\n\ttoken: JwtToken\n\tpayload: JwtTokenPayload | undefined\n}\n\n/**\n * This event is emitted when a new JWT token is issued or refreshed.\n */\nexport class NewJwtIssuedEvent extends CustomEvent<NewJwtIssuedEventDetail> {\n\tstatic readonly eventName = 'new-jwt-issued' as const\n\n\tconstructor(token: JwtToken) {\n\t\tsuper(NewJwtIssuedEvent.eventName, {\n\t\t\tdetail: { token, payload: parseJwtTokenPayload(token.accessToken) },\n\t\t})\n\t}\n}\n\nexport const isNewJwtIssuedEvent = (event: Event): event is NewJwtIssuedEvent =>\n\tevent.type === NewJwtIssuedEvent.eventName\n\ndeclare global {\n\tinterface WindowEventMap {\n\t\t[NewJwtIssuedEvent.eventName]: NewJwtIssuedEvent\n\t}\n}\n"],"names":[],"mappings":";;;;AAYO,MAAM,qBAAN,MAAM,2BAA0B,YAAqC;AAAA,EAG3E,YAAY,OAAiB;AAC5B,UAAM,mBAAkB,WAAW;AAAA,MAClC,QAAQ,EAAE,OAAO,SAAS,qBAAqB,MAAM,WAAW,EAAE;AAAA,IAAA,CAClE;AAAA,EAAA;AAEH;AAPC,cADY,oBACI,aAAY;AADtB,IAAM,oBAAN;"}
1
+ {"version":3,"file":"harmony113.mjs","sources":["../src/components/Sidebar/Widgets/ProfileMenu/ProviderMenuItem/ProviderMenuItem.tsx"],"sourcesContent":["import { useSidebar } from '@components/Sidebar/hooks/useSidebar'\nimport { MenuItem } from '@lokalise/louis'\nimport { canAccessProviderDashboard } from '@utils/user/permissions'\n\n/**\n * A menu item component for navigating to the provider dashboard.\n * It checks the current user's permissions using the Sidebar context\n * and renders nothing if the user does not have access.\n *\n * @example\n * ```\n * <ProviderMenuItem />\n * ```\n *\n * @note This component must be used within a Sidebar Context.\n */\n\nexport const ProviderMenuItem = () => {\n\tconst { jwt } = useSidebar()\n\n\tif (!canAccessProviderDashboard(jwt.result)) {\n\t\treturn null\n\t}\n\n\treturn <MenuItem href=\"/provider\">Provider dashboard</MenuItem>\n}\n"],"names":[],"mappings":";;;;AAiBO,MAAM,mBAAmB,MAAM;AAC/B,QAAA,EAAE,IAAI,IAAI,WAAW;AAE3B,MAAI,CAAC,2BAA2B,IAAI,MAAM,GAAG;AACrC,WAAA;AAAA,EAAA;AAGR,SAAQ,oBAAA,UAAA,EAAS,MAAK,aAAY,UAAkB,sBAAA;AACrD;"}
@@ -1,21 +1,41 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const zod = require("zod");
4
- const teamRoleTypes = require("./harmony69.cjs");
5
- const JWT_TOKEN_PAYLOAD_SCHEMA = zod.z.object({
6
- userId: zod.z.number(),
7
- userUuid: zod.z.string().uuid(),
8
- teamId: zod.z.number(),
9
- teamUuid: zod.z.string().uuid(),
10
- userTeamRole: teamRoleTypes.TEAM_ROLE_SCHEMA,
11
- userEmail: zod.z.string().email(),
12
- userName: zod.z.string(),
13
- userCurrentTeamId: zod.z.number(),
14
- planId: zod.z.number(),
15
- planName: zod.z.string(),
16
- isProviderAlpha: zod.z.boolean(),
17
- isFullyAuthenticated: zod.z.boolean(),
18
- exp: zod.z.number()
19
- });
20
- exports.JWT_TOKEN_PAYLOAD_SCHEMA = JWT_TOKEN_PAYLOAD_SCHEMA;
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const useSidebar = require("./harmony95.cjs");
5
+ const louis = require("@lokalise/louis");
6
+ const plan = require("./harmony9.cjs");
7
+ const TeamMenuItem_module = require("./harmony133.cjs");
8
+ const TeamMenuItem = ({ team, onClick, hidePlanLabel }) => {
9
+ var _a;
10
+ const {
11
+ jwt,
12
+ data: { currentTeam }
13
+ } = useSidebar.useSidebar();
14
+ const contextTeam = team || currentTeam.result;
15
+ if (!contextTeam || typeof ((_a = jwt.result) == null ? void 0 : _a.planId) !== "number" || !Number.isFinite(jwt.result.planId)) {
16
+ return null;
17
+ }
18
+ const planId = jwt.result.planId;
19
+ const planLabel = plan.isFreePlan(planId) ? "Free" : plan.isTrialPlan(planId) ? "Trial" : void 0;
20
+ const WrapperNode = onClick ? louis.MenuItem : "div";
21
+ return /* @__PURE__ */ jsxRuntime.jsxs(
22
+ WrapperNode,
23
+ {
24
+ "data-testid": "sidebar-team-menu-item",
25
+ className: TeamMenuItem_module.default.wrapper,
26
+ ...onClick && { onClick: () => onClick(contextTeam) },
27
+ children: [
28
+ contextTeam.logoUrl ? /* @__PURE__ */ jsxRuntime.jsx("img", { className: TeamMenuItem_module.default.profileImage, src: contextTeam.logoUrl, alt: "Team logo" }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: `${TeamMenuItem_module.default.defaultProfileImage}`, children: /* @__PURE__ */ jsxRuntime.jsx(louis.UserIcon, { size: "25px" }) }),
29
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: TeamMenuItem_module.default.teamDetails, children: [
30
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: TeamMenuItem_module.default.planWrapper, children: [
31
+ /* @__PURE__ */ jsxRuntime.jsx("span", { title: contextTeam.name, className: TeamMenuItem_module.default.teamName, children: contextTeam.name }),
32
+ planLabel && !hidePlanLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: TeamMenuItem_module.default.teamName, children: planLabel })
33
+ ] }),
34
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: TeamMenuItem_module.default.membership, children: contextTeam.role })
35
+ ] })
36
+ ]
37
+ }
38
+ );
39
+ };
40
+ exports.TeamMenuItem = TeamMenuItem;
21
41
  //# sourceMappingURL=harmony114.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony114.cjs","sources":["../src/features/auth/core/types/jwtTokenPayload.ts"],"sourcesContent":["import { z } from 'zod'\nimport { TEAM_ROLE_SCHEMA } from '../../../publicApi/types/teamRoleTypes'\n\nexport const JWT_TOKEN_PAYLOAD_SCHEMA = z.object({\n\tuserId: z.number(),\n\tuserUuid: z.string().uuid(),\n\tteamId: z.number(),\n\tteamUuid: z.string().uuid(),\n\tuserTeamRole: TEAM_ROLE_SCHEMA,\n\tuserEmail: z.string().email(),\n\tuserName: z.string(),\n\tuserCurrentTeamId: z.number(),\n\tplanId: z.number(),\n\tplanName: z.string(),\n\tisProviderAlpha: z.boolean(),\n\tisFullyAuthenticated: z.boolean(),\n\texp: z.number(),\n})\nexport type JwtTokenPayload = z.infer<typeof JWT_TOKEN_PAYLOAD_SCHEMA>\n"],"names":["z","TEAM_ROLE_SCHEMA"],"mappings":";;;;AAGa,MAAA,2BAA2BA,MAAE,OAAO;AAAA,EAChD,QAAQA,MAAE,OAAO;AAAA,EACjB,UAAUA,IAAA,EAAE,OAAO,EAAE,KAAK;AAAA,EAC1B,QAAQA,MAAE,OAAO;AAAA,EACjB,UAAUA,IAAA,EAAE,OAAO,EAAE,KAAK;AAAA,EAC1B,cAAcC,cAAA;AAAA,EACd,WAAWD,IAAA,EAAE,OAAO,EAAE,MAAM;AAAA,EAC5B,UAAUA,MAAE,OAAO;AAAA,EACnB,mBAAmBA,MAAE,OAAO;AAAA,EAC5B,QAAQA,MAAE,OAAO;AAAA,EACjB,UAAUA,MAAE,OAAO;AAAA,EACnB,iBAAiBA,MAAE,QAAQ;AAAA,EAC3B,sBAAsBA,MAAE,QAAQ;AAAA,EAChC,KAAKA,MAAE,OAAO;AACf,CAAC;;"}
1
+ {"version":3,"file":"harmony114.cjs","sources":["../src/components/Sidebar/Widgets/ProfileMenu/TeamMenuItem/TeamMenuItem.tsx"],"sourcesContent":["import { useSidebar } from '@components/Sidebar/hooks/useSidebar'\nimport { MenuItem, UserIcon } from '@lokalise/louis'\nimport { isFreePlan, isTrialPlan } from '@utils'\nimport type { SidebarTeam } from '../../../types'\nimport styles from './TeamMenuItem.module.css'\n\ntype TeamMenuItemProps = {\n\t/** Team to display. If not provided, uses the current team from context */\n\tteam?: SidebarTeam\n\t/** Callback for when the team item is clicked. If provided, renders as a clickable MenuItem */\n\tonClick?: (team: SidebarTeam) => void\n\t/** Whether to hide the plan label (Free/Trial). Useful when displaying multiple teams */\n\thidePlanLabel?: boolean\n}\n\n/**\n * A component that displays team information in a menu item format.\n * Renders team logo (or default user icon), team name, role, and plan label.\n *\n * The component can be used in two modes:\n * 1. As a static display of the current team (when no onClick handler is provided)\n * 2. As a clickable menu item for team switching (when onClick handler is provided)\n *\n * @example\n * ```tsx\n * // Static current team display\n * <TeamMenuItem />\n *\n * // Clickable team item for switching\n * <TeamMenuItem\n * team={someTeam}\n * onClick={(team) => handleTeamSwitch(team)}\n * hidePlanLabel\n * />\n * ```\n *\n * @note This component must be used within a Sidebar Context.\n */\n\nexport const TeamMenuItem = ({ team, onClick, hidePlanLabel }: TeamMenuItemProps) => {\n\tconst {\n\t\tjwt,\n\t\tdata: { currentTeam },\n\t} = useSidebar()\n\n\tconst contextTeam = team || currentTeam.result\n\n\tif (\n\t\t!contextTeam ||\n\t\ttypeof jwt.result?.planId !== 'number' ||\n\t\t!Number.isFinite(jwt.result.planId)\n\t) {\n\t\treturn null\n\t}\n\n\tconst planId = jwt.result.planId\n\n\tconst planLabel = isFreePlan(planId) ? 'Free' : isTrialPlan(planId) ? 'Trial' : undefined\n\n\tconst WrapperNode = onClick ? MenuItem : 'div'\n\n\treturn (\n\t\t<WrapperNode\n\t\t\tdata-testid=\"sidebar-team-menu-item\"\n\t\t\tclassName={styles.wrapper}\n\t\t\t{...(onClick && { onClick: () => onClick(contextTeam) })}\n\t\t>\n\t\t\t{contextTeam.logoUrl ? (\n\t\t\t\t<img className={styles.profileImage} src={contextTeam.logoUrl} alt=\"Team logo\" />\n\t\t\t) : (\n\t\t\t\t<span className={`${styles.defaultProfileImage}`}>\n\t\t\t\t\t<UserIcon size=\"25px\" />\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t<div className={styles.teamDetails}>\n\t\t\t\t<div className={styles.planWrapper}>\n\t\t\t\t\t<span title={contextTeam.name} className={styles.teamName}>\n\t\t\t\t\t\t{contextTeam.name}\n\t\t\t\t\t</span>\n\t\t\t\t\t{planLabel && !hidePlanLabel && <span className={styles.teamName}>{planLabel}</span>}\n\t\t\t\t</div>\n\t\t\t\t<span className={styles.membership}>{contextTeam.role}</span>\n\t\t\t</div>\n\t\t</WrapperNode>\n\t)\n}\n"],"names":["useSidebar","isFreePlan","isTrialPlan","MenuItem","jsxs","styles","jsx","UserIcon"],"mappings":";;;;;;;AAuCO,MAAM,eAAe,CAAC,EAAE,MAAM,SAAS,oBAAuC;;AAC9E,QAAA;AAAA,IACL;AAAA,IACA,MAAM,EAAE,YAAY;AAAA,MACjBA,sBAAW;AAET,QAAA,cAAc,QAAQ,YAAY;AAExC,MACC,CAAC,eACD,SAAO,SAAI,WAAJ,mBAAY,YAAW,YAC9B,CAAC,OAAO,SAAS,IAAI,OAAO,MAAM,GACjC;AACM,WAAA;AAAA,EAAA;AAGF,QAAA,SAAS,IAAI,OAAO;AAEpB,QAAA,YAAYC,gBAAW,MAAM,IAAI,SAASC,iBAAY,MAAM,IAAI,UAAU;AAE1E,QAAA,cAAc,UAAUC,MAAAA,WAAW;AAGxC,SAAAC,2BAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,eAAY;AAAA,MACZ,WAAWC,oBAAO,QAAA;AAAA,MACjB,GAAI,WAAW,EAAE,SAAS,MAAM,QAAQ,WAAW,EAAE;AAAA,MAErD,UAAA;AAAA,QAAY,YAAA,yCACX,OAAI,EAAA,WAAWA,oBAAAA,QAAO,cAAc,KAAK,YAAY,SAAS,KAAI,YAAA,CAAY,IAE9EC,+BAAA,QAAA,EAAK,WAAW,GAAGD,oBAAO,QAAA,mBAAmB,IAC7C,UAACC,2BAAAA,IAAAC,MAAAA,UAAA,EAAS,MAAK,OAAA,CAAO,EACvB,CAAA;AAAA,QAEAH,2BAAA,KAAA,OAAA,EAAI,WAAWC,oBAAAA,QAAO,aACtB,UAAA;AAAA,UAACD,2BAAA,KAAA,OAAA,EAAI,WAAWC,oBAAAA,QAAO,aACtB,UAAA;AAAA,YAACC,2BAAAA,IAAA,QAAA,EAAK,OAAO,YAAY,MAAM,WAAWD,oBAAAA,QAAO,UAC/C,sBAAY,KACd,CAAA;AAAA,YACC,aAAa,CAAC,iBAAiBC,2BAAAA,IAAC,UAAK,WAAWD,4BAAO,UAAW,UAAU,UAAA,CAAA;AAAA,UAAA,GAC9E;AAAA,yCACC,QAAK,EAAA,WAAWA,oBAAAA,QAAO,YAAa,sBAAY,KAAK,CAAA;AAAA,QAAA,EACvD,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACD;AAEF;;"}
@@ -1,21 +1,41 @@
1
- import { z } from "zod";
2
- import { TEAM_ROLE_SCHEMA } from "./harmony69.mjs";
3
- const JWT_TOKEN_PAYLOAD_SCHEMA = z.object({
4
- userId: z.number(),
5
- userUuid: z.string().uuid(),
6
- teamId: z.number(),
7
- teamUuid: z.string().uuid(),
8
- userTeamRole: TEAM_ROLE_SCHEMA,
9
- userEmail: z.string().email(),
10
- userName: z.string(),
11
- userCurrentTeamId: z.number(),
12
- planId: z.number(),
13
- planName: z.string(),
14
- isProviderAlpha: z.boolean(),
15
- isFullyAuthenticated: z.boolean(),
16
- exp: z.number()
17
- });
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useSidebar } from "./harmony95.mjs";
3
+ import { MenuItem, UserIcon } from "@lokalise/louis";
4
+ import { isFreePlan, isTrialPlan } from "./harmony9.mjs";
5
+ import styles from "./harmony133.mjs";
6
+ const TeamMenuItem = ({ team, onClick, hidePlanLabel }) => {
7
+ var _a;
8
+ const {
9
+ jwt,
10
+ data: { currentTeam }
11
+ } = useSidebar();
12
+ const contextTeam = team || currentTeam.result;
13
+ if (!contextTeam || typeof ((_a = jwt.result) == null ? void 0 : _a.planId) !== "number" || !Number.isFinite(jwt.result.planId)) {
14
+ return null;
15
+ }
16
+ const planId = jwt.result.planId;
17
+ const planLabel = isFreePlan(planId) ? "Free" : isTrialPlan(planId) ? "Trial" : void 0;
18
+ const WrapperNode = onClick ? MenuItem : "div";
19
+ return /* @__PURE__ */ jsxs(
20
+ WrapperNode,
21
+ {
22
+ "data-testid": "sidebar-team-menu-item",
23
+ className: styles.wrapper,
24
+ ...onClick && { onClick: () => onClick(contextTeam) },
25
+ children: [
26
+ contextTeam.logoUrl ? /* @__PURE__ */ jsx("img", { className: styles.profileImage, src: contextTeam.logoUrl, alt: "Team logo" }) : /* @__PURE__ */ jsx("span", { className: `${styles.defaultProfileImage}`, children: /* @__PURE__ */ jsx(UserIcon, { size: "25px" }) }),
27
+ /* @__PURE__ */ jsxs("div", { className: styles.teamDetails, children: [
28
+ /* @__PURE__ */ jsxs("div", { className: styles.planWrapper, children: [
29
+ /* @__PURE__ */ jsx("span", { title: contextTeam.name, className: styles.teamName, children: contextTeam.name }),
30
+ planLabel && !hidePlanLabel && /* @__PURE__ */ jsx("span", { className: styles.teamName, children: planLabel })
31
+ ] }),
32
+ /* @__PURE__ */ jsx("span", { className: styles.membership, children: contextTeam.role })
33
+ ] })
34
+ ]
35
+ }
36
+ );
37
+ };
18
38
  export {
19
- JWT_TOKEN_PAYLOAD_SCHEMA
39
+ TeamMenuItem
20
40
  };
21
41
  //# sourceMappingURL=harmony114.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony114.mjs","sources":["../src/features/auth/core/types/jwtTokenPayload.ts"],"sourcesContent":["import { z } from 'zod'\nimport { TEAM_ROLE_SCHEMA } from '../../../publicApi/types/teamRoleTypes'\n\nexport const JWT_TOKEN_PAYLOAD_SCHEMA = z.object({\n\tuserId: z.number(),\n\tuserUuid: z.string().uuid(),\n\tteamId: z.number(),\n\tteamUuid: z.string().uuid(),\n\tuserTeamRole: TEAM_ROLE_SCHEMA,\n\tuserEmail: z.string().email(),\n\tuserName: z.string(),\n\tuserCurrentTeamId: z.number(),\n\tplanId: z.number(),\n\tplanName: z.string(),\n\tisProviderAlpha: z.boolean(),\n\tisFullyAuthenticated: z.boolean(),\n\texp: z.number(),\n})\nexport type JwtTokenPayload = z.infer<typeof JWT_TOKEN_PAYLOAD_SCHEMA>\n"],"names":[],"mappings":";;AAGa,MAAA,2BAA2B,EAAE,OAAO;AAAA,EAChD,QAAQ,EAAE,OAAO;AAAA,EACjB,UAAU,EAAE,OAAO,EAAE,KAAK;AAAA,EAC1B,QAAQ,EAAE,OAAO;AAAA,EACjB,UAAU,EAAE,OAAO,EAAE,KAAK;AAAA,EAC1B,cAAc;AAAA,EACd,WAAW,EAAE,OAAO,EAAE,MAAM;AAAA,EAC5B,UAAU,EAAE,OAAO;AAAA,EACnB,mBAAmB,EAAE,OAAO;AAAA,EAC5B,QAAQ,EAAE,OAAO;AAAA,EACjB,UAAU,EAAE,OAAO;AAAA,EACnB,iBAAiB,EAAE,QAAQ;AAAA,EAC3B,sBAAsB,EAAE,QAAQ;AAAA,EAChC,KAAK,EAAE,OAAO;AACf,CAAC;"}
1
+ {"version":3,"file":"harmony114.mjs","sources":["../src/components/Sidebar/Widgets/ProfileMenu/TeamMenuItem/TeamMenuItem.tsx"],"sourcesContent":["import { useSidebar } from '@components/Sidebar/hooks/useSidebar'\nimport { MenuItem, UserIcon } from '@lokalise/louis'\nimport { isFreePlan, isTrialPlan } from '@utils'\nimport type { SidebarTeam } from '../../../types'\nimport styles from './TeamMenuItem.module.css'\n\ntype TeamMenuItemProps = {\n\t/** Team to display. If not provided, uses the current team from context */\n\tteam?: SidebarTeam\n\t/** Callback for when the team item is clicked. If provided, renders as a clickable MenuItem */\n\tonClick?: (team: SidebarTeam) => void\n\t/** Whether to hide the plan label (Free/Trial). Useful when displaying multiple teams */\n\thidePlanLabel?: boolean\n}\n\n/**\n * A component that displays team information in a menu item format.\n * Renders team logo (or default user icon), team name, role, and plan label.\n *\n * The component can be used in two modes:\n * 1. As a static display of the current team (when no onClick handler is provided)\n * 2. As a clickable menu item for team switching (when onClick handler is provided)\n *\n * @example\n * ```tsx\n * // Static current team display\n * <TeamMenuItem />\n *\n * // Clickable team item for switching\n * <TeamMenuItem\n * team={someTeam}\n * onClick={(team) => handleTeamSwitch(team)}\n * hidePlanLabel\n * />\n * ```\n *\n * @note This component must be used within a Sidebar Context.\n */\n\nexport const TeamMenuItem = ({ team, onClick, hidePlanLabel }: TeamMenuItemProps) => {\n\tconst {\n\t\tjwt,\n\t\tdata: { currentTeam },\n\t} = useSidebar()\n\n\tconst contextTeam = team || currentTeam.result\n\n\tif (\n\t\t!contextTeam ||\n\t\ttypeof jwt.result?.planId !== 'number' ||\n\t\t!Number.isFinite(jwt.result.planId)\n\t) {\n\t\treturn null\n\t}\n\n\tconst planId = jwt.result.planId\n\n\tconst planLabel = isFreePlan(planId) ? 'Free' : isTrialPlan(planId) ? 'Trial' : undefined\n\n\tconst WrapperNode = onClick ? MenuItem : 'div'\n\n\treturn (\n\t\t<WrapperNode\n\t\t\tdata-testid=\"sidebar-team-menu-item\"\n\t\t\tclassName={styles.wrapper}\n\t\t\t{...(onClick && { onClick: () => onClick(contextTeam) })}\n\t\t>\n\t\t\t{contextTeam.logoUrl ? (\n\t\t\t\t<img className={styles.profileImage} src={contextTeam.logoUrl} alt=\"Team logo\" />\n\t\t\t) : (\n\t\t\t\t<span className={`${styles.defaultProfileImage}`}>\n\t\t\t\t\t<UserIcon size=\"25px\" />\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t<div className={styles.teamDetails}>\n\t\t\t\t<div className={styles.planWrapper}>\n\t\t\t\t\t<span title={contextTeam.name} className={styles.teamName}>\n\t\t\t\t\t\t{contextTeam.name}\n\t\t\t\t\t</span>\n\t\t\t\t\t{planLabel && !hidePlanLabel && <span className={styles.teamName}>{planLabel}</span>}\n\t\t\t\t</div>\n\t\t\t\t<span className={styles.membership}>{contextTeam.role}</span>\n\t\t\t</div>\n\t\t</WrapperNode>\n\t)\n}\n"],"names":[],"mappings":";;;;;AAuCO,MAAM,eAAe,CAAC,EAAE,MAAM,SAAS,oBAAuC;;AAC9E,QAAA;AAAA,IACL;AAAA,IACA,MAAM,EAAE,YAAY;AAAA,MACjB,WAAW;AAET,QAAA,cAAc,QAAQ,YAAY;AAExC,MACC,CAAC,eACD,SAAO,SAAI,WAAJ,mBAAY,YAAW,YAC9B,CAAC,OAAO,SAAS,IAAI,OAAO,MAAM,GACjC;AACM,WAAA;AAAA,EAAA;AAGF,QAAA,SAAS,IAAI,OAAO;AAEpB,QAAA,YAAY,WAAW,MAAM,IAAI,SAAS,YAAY,MAAM,IAAI,UAAU;AAE1E,QAAA,cAAc,UAAU,WAAW;AAGxC,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,eAAY;AAAA,MACZ,WAAW,OAAO;AAAA,MACjB,GAAI,WAAW,EAAE,SAAS,MAAM,QAAQ,WAAW,EAAE;AAAA,MAErD,UAAA;AAAA,QAAY,YAAA,8BACX,OAAI,EAAA,WAAW,OAAO,cAAc,KAAK,YAAY,SAAS,KAAI,YAAA,CAAY,IAE9E,oBAAA,QAAA,EAAK,WAAW,GAAG,OAAO,mBAAmB,IAC7C,UAAC,oBAAA,UAAA,EAAS,MAAK,OAAA,CAAO,EACvB,CAAA;AAAA,QAEA,qBAAA,OAAA,EAAI,WAAW,OAAO,aACtB,UAAA;AAAA,UAAC,qBAAA,OAAA,EAAI,WAAW,OAAO,aACtB,UAAA;AAAA,YAAC,oBAAA,QAAA,EAAK,OAAO,YAAY,MAAM,WAAW,OAAO,UAC/C,sBAAY,KACd,CAAA;AAAA,YACC,aAAa,CAAC,iBAAiB,oBAAC,UAAK,WAAW,OAAO,UAAW,UAAU,UAAA,CAAA;AAAA,UAAA,GAC9E;AAAA,8BACC,QAAK,EAAA,WAAW,OAAO,YAAa,sBAAY,KAAK,CAAA;AAAA,QAAA,EACvD,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACD;AAEF;"}