@lokalise/harmony 1.26.1 → 1.26.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 (404) hide show
  1. package/dist/harmony.cjs +65 -43
  2. package/dist/harmony.cjs.map +1 -1
  3. package/dist/harmony.mjs +37 -15
  4. package/dist/harmony.mjs.map +1 -1
  5. package/dist/harmony100.cjs +60 -12
  6. package/dist/harmony100.cjs.map +1 -1
  7. package/dist/harmony100.mjs +60 -12
  8. package/dist/harmony100.mjs.map +1 -1
  9. package/dist/harmony101.cjs +88 -36
  10. package/dist/harmony101.cjs.map +1 -1
  11. package/dist/harmony101.mjs +88 -36
  12. package/dist/harmony101.mjs.map +1 -1
  13. package/dist/harmony102.cjs +19 -29
  14. package/dist/harmony102.cjs.map +1 -1
  15. package/dist/harmony102.mjs +18 -28
  16. package/dist/harmony102.mjs.map +1 -1
  17. package/dist/harmony103.cjs +95 -12
  18. package/dist/harmony103.cjs.map +1 -1
  19. package/dist/harmony103.mjs +95 -12
  20. package/dist/harmony103.mjs.map +1 -1
  21. package/dist/harmony104.cjs +11 -13
  22. package/dist/harmony104.cjs.map +1 -1
  23. package/dist/harmony104.mjs +11 -13
  24. package/dist/harmony104.mjs.map +1 -1
  25. package/dist/harmony105.cjs +13 -15
  26. package/dist/harmony105.cjs.map +1 -1
  27. package/dist/harmony105.mjs +13 -15
  28. package/dist/harmony105.mjs.map +1 -1
  29. package/dist/harmony106.cjs +36 -7
  30. package/dist/harmony106.cjs.map +1 -1
  31. package/dist/harmony106.mjs +36 -7
  32. package/dist/harmony106.mjs.map +1 -1
  33. package/dist/harmony107.cjs +27 -56
  34. package/dist/harmony107.cjs.map +1 -1
  35. package/dist/harmony107.mjs +27 -56
  36. package/dist/harmony107.mjs.map +1 -1
  37. package/dist/harmony108.cjs +6 -59
  38. package/dist/harmony108.cjs.map +1 -1
  39. package/dist/harmony108.mjs +6 -59
  40. package/dist/harmony108.mjs.map +1 -1
  41. package/dist/harmony109.cjs +57 -18
  42. package/dist/harmony109.cjs.map +1 -1
  43. package/dist/harmony109.mjs +56 -17
  44. package/dist/harmony109.mjs.map +1 -1
  45. package/dist/harmony110.cjs +60 -11
  46. package/dist/harmony110.cjs.map +1 -1
  47. package/dist/harmony110.mjs +60 -11
  48. package/dist/harmony110.mjs.map +1 -1
  49. package/dist/harmony111.cjs +19 -17
  50. package/dist/harmony111.cjs.map +1 -1
  51. package/dist/harmony111.mjs +18 -16
  52. package/dist/harmony111.mjs.map +1 -1
  53. package/dist/harmony112.cjs +12 -20
  54. package/dist/harmony112.cjs.map +1 -1
  55. package/dist/harmony112.mjs +12 -20
  56. package/dist/harmony112.mjs.map +1 -1
  57. package/dist/harmony113.cjs +13 -10
  58. package/dist/harmony113.cjs.map +1 -1
  59. package/dist/harmony113.mjs +13 -10
  60. package/dist/harmony113.mjs.map +1 -1
  61. package/dist/harmony114.cjs +16 -46
  62. package/dist/harmony114.cjs.map +1 -1
  63. package/dist/harmony114.mjs +16 -46
  64. package/dist/harmony114.mjs.map +1 -1
  65. package/dist/harmony115.cjs +12 -13
  66. package/dist/harmony115.cjs.map +1 -1
  67. package/dist/harmony115.mjs +11 -12
  68. package/dist/harmony115.mjs.map +1 -1
  69. package/dist/harmony116.cjs +15 -5
  70. package/dist/harmony116.cjs.map +1 -1
  71. package/dist/harmony116.mjs +15 -5
  72. package/dist/harmony116.mjs.map +1 -1
  73. package/dist/harmony117.cjs +20 -11
  74. package/dist/harmony117.cjs.map +1 -1
  75. package/dist/harmony117.mjs +20 -11
  76. package/dist/harmony117.mjs.map +1 -1
  77. package/dist/harmony118.cjs +10 -30
  78. package/dist/harmony118.cjs.map +1 -1
  79. package/dist/harmony118.mjs +10 -30
  80. package/dist/harmony118.mjs.map +1 -1
  81. package/dist/harmony119.cjs +46 -14
  82. package/dist/harmony119.cjs.map +1 -1
  83. package/dist/harmony119.mjs +46 -14
  84. package/dist/harmony119.mjs.map +1 -1
  85. package/dist/harmony120.cjs +15 -0
  86. package/dist/harmony120.cjs.map +1 -0
  87. package/dist/harmony120.mjs +15 -0
  88. package/dist/harmony120.mjs.map +1 -0
  89. package/dist/harmony121.cjs +9 -0
  90. package/dist/harmony121.cjs.map +1 -0
  91. package/dist/harmony121.mjs +9 -0
  92. package/dist/harmony121.mjs.map +1 -0
  93. package/dist/harmony122.cjs +15 -0
  94. package/dist/harmony122.cjs.map +1 -0
  95. package/dist/harmony122.mjs +15 -0
  96. package/dist/harmony122.mjs.map +1 -0
  97. package/dist/harmony123.cjs +35 -0
  98. package/dist/harmony123.cjs.map +1 -0
  99. package/dist/harmony123.mjs +35 -0
  100. package/dist/harmony123.mjs.map +1 -0
  101. package/dist/harmony124.cjs +17 -0
  102. package/dist/harmony124.cjs.map +1 -0
  103. package/dist/harmony124.mjs +17 -0
  104. package/dist/harmony124.mjs.map +1 -0
  105. package/dist/harmony15.cjs +1 -1
  106. package/dist/harmony15.mjs +1 -1
  107. package/dist/harmony20.cjs +1 -1
  108. package/dist/harmony20.mjs +1 -1
  109. package/dist/harmony21.cjs +1 -1
  110. package/dist/harmony21.mjs +1 -1
  111. package/dist/harmony22.cjs +2 -2
  112. package/dist/harmony22.mjs +2 -2
  113. package/dist/harmony23.cjs +1 -1
  114. package/dist/harmony23.mjs +1 -1
  115. package/dist/harmony24.cjs +1 -1
  116. package/dist/harmony24.mjs +1 -1
  117. package/dist/harmony26.cjs +2 -2
  118. package/dist/harmony26.mjs +2 -2
  119. package/dist/harmony27.cjs +2 -2
  120. package/dist/harmony27.mjs +2 -2
  121. package/dist/harmony28.cjs +10 -37
  122. package/dist/harmony28.cjs.map +1 -1
  123. package/dist/harmony28.mjs +10 -37
  124. package/dist/harmony28.mjs.map +1 -1
  125. package/dist/harmony29.cjs +37 -9
  126. package/dist/harmony29.cjs.map +1 -1
  127. package/dist/harmony29.mjs +37 -9
  128. package/dist/harmony29.mjs.map +1 -1
  129. package/dist/harmony3.cjs +3 -3
  130. package/dist/harmony3.mjs +3 -3
  131. package/dist/harmony30.cjs +10 -13
  132. package/dist/harmony30.cjs.map +1 -1
  133. package/dist/harmony30.mjs +10 -13
  134. package/dist/harmony30.mjs.map +1 -1
  135. package/dist/harmony31.cjs +10 -80
  136. package/dist/harmony31.cjs.map +1 -1
  137. package/dist/harmony31.mjs +9 -79
  138. package/dist/harmony31.mjs.map +1 -1
  139. package/dist/harmony32.cjs +13 -109
  140. package/dist/harmony32.cjs.map +1 -1
  141. package/dist/harmony32.mjs +12 -108
  142. package/dist/harmony32.mjs.map +1 -1
  143. package/dist/harmony33.cjs +14 -8
  144. package/dist/harmony33.cjs.map +1 -1
  145. package/dist/harmony33.mjs +14 -8
  146. package/dist/harmony33.mjs.map +1 -1
  147. package/dist/harmony34.cjs +14 -56
  148. package/dist/harmony34.cjs.map +1 -1
  149. package/dist/harmony34.mjs +14 -56
  150. package/dist/harmony34.mjs.map +1 -1
  151. package/dist/harmony35.cjs +13 -24
  152. package/dist/harmony35.cjs.map +1 -1
  153. package/dist/harmony35.mjs +13 -24
  154. package/dist/harmony35.mjs.map +1 -1
  155. package/dist/harmony36.cjs +17 -18
  156. package/dist/harmony36.cjs.map +1 -1
  157. package/dist/harmony36.mjs +17 -18
  158. package/dist/harmony36.mjs.map +1 -1
  159. package/dist/harmony37.cjs +14 -20
  160. package/dist/harmony37.cjs.map +1 -1
  161. package/dist/harmony37.mjs +14 -20
  162. package/dist/harmony37.mjs.map +1 -1
  163. package/dist/harmony38.cjs +13 -11
  164. package/dist/harmony38.cjs.map +1 -1
  165. package/dist/harmony38.mjs +14 -12
  166. package/dist/harmony38.mjs.map +1 -1
  167. package/dist/harmony39.cjs +9 -9
  168. package/dist/harmony39.cjs.map +1 -1
  169. package/dist/harmony39.mjs +9 -9
  170. package/dist/harmony39.mjs.map +1 -1
  171. package/dist/harmony4.cjs +10 -10
  172. package/dist/harmony4.mjs +10 -10
  173. package/dist/harmony40.cjs +14 -12
  174. package/dist/harmony40.cjs.map +1 -1
  175. package/dist/harmony40.mjs +15 -13
  176. package/dist/harmony40.mjs.map +1 -1
  177. package/dist/harmony42.cjs +1 -1
  178. package/dist/harmony42.mjs +1 -1
  179. package/dist/harmony44.cjs +1 -1
  180. package/dist/harmony44.mjs +1 -1
  181. package/dist/harmony45.cjs +1 -1
  182. package/dist/harmony45.mjs +1 -1
  183. package/dist/harmony46.cjs +56 -14
  184. package/dist/harmony46.cjs.map +1 -1
  185. package/dist/harmony46.mjs +56 -14
  186. package/dist/harmony46.mjs.map +1 -1
  187. package/dist/harmony47.cjs +79 -16
  188. package/dist/harmony47.cjs.map +1 -1
  189. package/dist/harmony47.mjs +79 -16
  190. package/dist/harmony47.mjs.map +1 -1
  191. package/dist/harmony48.cjs +21 -16
  192. package/dist/harmony48.cjs.map +1 -1
  193. package/dist/harmony48.mjs +20 -15
  194. package/dist/harmony48.mjs.map +1 -1
  195. package/dist/harmony49.cjs +111 -19
  196. package/dist/harmony49.cjs.map +1 -1
  197. package/dist/harmony49.mjs +110 -18
  198. package/dist/harmony49.mjs.map +1 -1
  199. package/dist/harmony5.cjs +1 -1
  200. package/dist/harmony5.mjs +1 -1
  201. package/dist/harmony50.cjs +22 -62
  202. package/dist/harmony50.cjs.map +1 -1
  203. package/dist/harmony50.mjs +21 -61
  204. package/dist/harmony50.mjs.map +1 -1
  205. package/dist/harmony51.cjs +27 -7
  206. package/dist/harmony51.cjs.map +1 -1
  207. package/dist/harmony51.mjs +26 -6
  208. package/dist/harmony51.mjs.map +1 -1
  209. package/dist/harmony52.cjs +8 -9
  210. package/dist/harmony52.cjs.map +1 -1
  211. package/dist/harmony52.mjs +8 -9
  212. package/dist/harmony52.mjs.map +1 -1
  213. package/dist/harmony53.cjs +24 -18
  214. package/dist/harmony53.cjs.map +1 -1
  215. package/dist/harmony53.mjs +24 -18
  216. package/dist/harmony53.mjs.map +1 -1
  217. package/dist/harmony54.cjs +18 -23
  218. package/dist/harmony54.cjs.map +1 -1
  219. package/dist/harmony54.mjs +18 -23
  220. package/dist/harmony54.mjs.map +1 -1
  221. package/dist/harmony55.cjs +16 -6
  222. package/dist/harmony55.cjs.map +1 -1
  223. package/dist/harmony55.mjs +15 -5
  224. package/dist/harmony55.mjs.map +1 -1
  225. package/dist/harmony56.cjs +18 -32
  226. package/dist/harmony56.cjs.map +1 -1
  227. package/dist/harmony56.mjs +17 -31
  228. package/dist/harmony56.mjs.map +1 -1
  229. package/dist/harmony57.cjs +61 -32
  230. package/dist/harmony57.cjs.map +1 -1
  231. package/dist/harmony57.mjs +60 -31
  232. package/dist/harmony57.mjs.map +1 -1
  233. package/dist/harmony58.cjs +6 -19
  234. package/dist/harmony58.cjs.map +1 -1
  235. package/dist/harmony58.mjs +5 -18
  236. package/dist/harmony58.mjs.map +1 -1
  237. package/dist/harmony59.cjs +8 -30
  238. package/dist/harmony59.cjs.map +1 -1
  239. package/dist/harmony59.mjs +9 -31
  240. package/dist/harmony59.mjs.map +1 -1
  241. package/dist/harmony6.cjs +4 -4
  242. package/dist/harmony6.mjs +4 -4
  243. package/dist/harmony60.cjs +13 -54
  244. package/dist/harmony60.cjs.map +1 -1
  245. package/dist/harmony60.mjs +15 -56
  246. package/dist/harmony60.mjs.map +1 -1
  247. package/dist/harmony61.cjs +23 -9
  248. package/dist/harmony61.cjs.map +1 -1
  249. package/dist/harmony61.mjs +22 -8
  250. package/dist/harmony61.mjs.map +1 -1
  251. package/dist/harmony62.cjs +4 -7
  252. package/dist/harmony62.cjs.map +1 -1
  253. package/dist/harmony62.mjs +5 -8
  254. package/dist/harmony62.mjs.map +1 -1
  255. package/dist/harmony63.cjs +30 -27
  256. package/dist/harmony63.cjs.map +1 -1
  257. package/dist/harmony63.mjs +32 -29
  258. package/dist/harmony63.mjs.map +1 -1
  259. package/dist/harmony64.cjs +32 -3
  260. package/dist/harmony64.cjs.map +1 -1
  261. package/dist/harmony64.mjs +32 -3
  262. package/dist/harmony64.mjs.map +1 -1
  263. package/dist/harmony65.cjs +19 -6
  264. package/dist/harmony65.cjs.map +1 -1
  265. package/dist/harmony65.mjs +18 -5
  266. package/dist/harmony65.mjs.map +1 -1
  267. package/dist/harmony66.cjs +31 -9
  268. package/dist/harmony66.cjs.map +1 -1
  269. package/dist/harmony66.mjs +30 -8
  270. package/dist/harmony66.mjs.map +1 -1
  271. package/dist/harmony67.cjs +60 -10
  272. package/dist/harmony67.cjs.map +1 -1
  273. package/dist/harmony67.mjs +59 -9
  274. package/dist/harmony67.mjs.map +1 -1
  275. package/dist/harmony68.cjs +9 -57
  276. package/dist/harmony68.cjs.map +1 -1
  277. package/dist/harmony68.mjs +8 -56
  278. package/dist/harmony68.mjs.map +1 -1
  279. package/dist/harmony69.cjs +7 -31
  280. package/dist/harmony69.cjs.map +1 -1
  281. package/dist/harmony69.mjs +8 -32
  282. package/dist/harmony69.mjs.map +1 -1
  283. package/dist/harmony70.cjs +28 -4
  284. package/dist/harmony70.cjs.map +1 -1
  285. package/dist/harmony70.mjs +29 -5
  286. package/dist/harmony70.mjs.map +1 -1
  287. package/dist/harmony71.cjs +4 -10
  288. package/dist/harmony71.cjs.map +1 -1
  289. package/dist/harmony71.mjs +3 -9
  290. package/dist/harmony71.mjs.map +1 -1
  291. package/dist/harmony72.cjs +12 -25
  292. package/dist/harmony72.cjs.map +1 -1
  293. package/dist/harmony72.mjs +11 -24
  294. package/dist/harmony72.mjs.map +1 -1
  295. package/dist/harmony73.cjs +20 -5
  296. package/dist/harmony73.cjs.map +1 -1
  297. package/dist/harmony73.mjs +20 -5
  298. package/dist/harmony73.mjs.map +1 -1
  299. package/dist/harmony74.cjs +6 -21
  300. package/dist/harmony74.cjs.map +1 -1
  301. package/dist/harmony74.mjs +5 -20
  302. package/dist/harmony74.mjs.map +1 -1
  303. package/dist/harmony75.cjs +6 -9
  304. package/dist/harmony75.cjs.map +1 -1
  305. package/dist/harmony75.mjs +6 -9
  306. package/dist/harmony75.mjs.map +1 -1
  307. package/dist/harmony76.cjs +10 -12
  308. package/dist/harmony76.cjs.map +1 -1
  309. package/dist/harmony76.mjs +9 -11
  310. package/dist/harmony76.mjs.map +1 -1
  311. package/dist/harmony77.cjs +57 -21
  312. package/dist/harmony77.cjs.map +1 -1
  313. package/dist/harmony77.mjs +56 -20
  314. package/dist/harmony77.mjs.map +1 -1
  315. package/dist/harmony78.cjs +32 -18
  316. package/dist/harmony78.cjs.map +1 -1
  317. package/dist/harmony78.mjs +32 -18
  318. package/dist/harmony78.mjs.map +1 -1
  319. package/dist/harmony79.cjs +5 -14
  320. package/dist/harmony79.cjs.map +1 -1
  321. package/dist/harmony79.mjs +5 -14
  322. package/dist/harmony79.mjs.map +1 -1
  323. package/dist/harmony80.cjs +10 -27
  324. package/dist/harmony80.cjs.map +1 -1
  325. package/dist/harmony80.mjs +9 -26
  326. package/dist/harmony80.mjs.map +1 -1
  327. package/dist/harmony81.cjs +25 -12
  328. package/dist/harmony81.cjs.map +1 -1
  329. package/dist/harmony81.mjs +24 -11
  330. package/dist/harmony81.mjs.map +1 -1
  331. package/dist/harmony82.cjs +6 -99
  332. package/dist/harmony82.cjs.map +1 -1
  333. package/dist/harmony82.mjs +5 -81
  334. package/dist/harmony82.mjs.map +1 -1
  335. package/dist/harmony83.cjs +21 -21
  336. package/dist/harmony83.cjs.map +1 -1
  337. package/dist/harmony83.mjs +20 -20
  338. package/dist/harmony83.mjs.map +1 -1
  339. package/dist/harmony84.cjs +12 -5
  340. package/dist/harmony84.cjs.map +1 -1
  341. package/dist/harmony84.mjs +11 -4
  342. package/dist/harmony84.mjs.map +1 -1
  343. package/dist/harmony85.cjs +18 -132
  344. package/dist/harmony85.cjs.map +1 -1
  345. package/dist/harmony85.mjs +18 -132
  346. package/dist/harmony85.mjs.map +1 -1
  347. package/dist/harmony86.cjs +14 -12
  348. package/dist/harmony86.cjs.map +1 -1
  349. package/dist/harmony86.mjs +13 -11
  350. package/dist/harmony86.mjs.map +1 -1
  351. package/dist/harmony87.cjs +16 -5
  352. package/dist/harmony87.cjs.map +1 -1
  353. package/dist/harmony87.mjs +16 -5
  354. package/dist/harmony87.mjs.map +1 -1
  355. package/dist/harmony88.cjs +21 -40
  356. package/dist/harmony88.cjs.map +1 -1
  357. package/dist/harmony88.mjs +20 -39
  358. package/dist/harmony88.mjs.map +1 -1
  359. package/dist/harmony89.cjs +4 -59
  360. package/dist/harmony89.cjs.map +1 -1
  361. package/dist/harmony89.mjs +4 -59
  362. package/dist/harmony89.mjs.map +1 -1
  363. package/dist/harmony90.cjs +98 -6
  364. package/dist/harmony90.cjs.map +1 -1
  365. package/dist/harmony90.mjs +81 -6
  366. package/dist/harmony90.mjs.map +1 -1
  367. package/dist/harmony91.cjs +132 -6
  368. package/dist/harmony91.cjs.map +1 -1
  369. package/dist/harmony91.mjs +131 -5
  370. package/dist/harmony91.mjs.map +1 -1
  371. package/dist/harmony92.cjs +12 -5
  372. package/dist/harmony92.cjs.map +1 -1
  373. package/dist/harmony92.mjs +12 -5
  374. package/dist/harmony92.mjs.map +1 -1
  375. package/dist/harmony93.cjs +6 -6
  376. package/dist/harmony93.cjs.map +1 -1
  377. package/dist/harmony93.mjs +5 -5
  378. package/dist/harmony93.mjs.map +1 -1
  379. package/dist/harmony94.cjs +40 -16
  380. package/dist/harmony94.cjs.map +1 -1
  381. package/dist/harmony94.mjs +40 -16
  382. package/dist/harmony94.mjs.map +1 -1
  383. package/dist/harmony95.cjs +57 -59
  384. package/dist/harmony95.cjs.map +1 -1
  385. package/dist/harmony95.mjs +57 -59
  386. package/dist/harmony95.mjs.map +1 -1
  387. package/dist/harmony96.cjs +6 -87
  388. package/dist/harmony96.cjs.map +1 -1
  389. package/dist/harmony96.mjs +6 -87
  390. package/dist/harmony96.mjs.map +1 -1
  391. package/dist/harmony97.cjs +3 -15
  392. package/dist/harmony97.cjs.map +1 -1
  393. package/dist/harmony97.mjs +3 -15
  394. package/dist/harmony97.mjs.map +1 -1
  395. package/dist/harmony98.cjs +6 -97
  396. package/dist/harmony98.cjs.map +1 -1
  397. package/dist/harmony98.mjs +5 -96
  398. package/dist/harmony98.mjs.map +1 -1
  399. package/dist/harmony99.cjs +6 -14
  400. package/dist/harmony99.cjs.map +1 -1
  401. package/dist/harmony99.mjs +5 -13
  402. package/dist/harmony99.mjs.map +1 -1
  403. package/dist/types/src/features/publicApi/node.d.ts +16 -9
  404. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"harmony60.cjs","sources":["../src/components/Sidebar/Widgets/Tasks/Tasks.tsx"],"sourcesContent":["import { shift } from '@floating-ui/core'\nimport { Button, JobIcon, Popover, Tooltip } from '@lokalise/louis'\nimport { useEffectOnce } from '@utils'\nimport clsx from 'clsx'\nimport { useState } from 'react'\nimport styles from './Tasks.module.css'\nimport { useTasks } from './TasksContext'\nimport { TasksPopover } from './TasksPopover/TasksPopover'\nimport { withTasksContext } from './TasksProvider'\nimport { TaskEvents } from './utils/taskEvents'\n\nexport const Tasks = withTasksContext(() => {\n\tconst [open, setOpen] = useState(false)\n\n\tconst { tasksCount } = useTasks()\n\n\tuseEffectOnce(() => {\n\t\tconst showDialog = () => {\n\t\t\tsetOpen(true)\n\t\t}\n\n\t\tdocument.addEventListener(TaskEvents.ShowDialog, showDialog)\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(TaskEvents.ShowDialog, showDialog)\n\t\t}\n\t})\n\n\treturn (\n\t\t<Tooltip tooltip=\"Tasks\" placement=\"right\">\n\t\t\t<Popover\n\t\t\t\tcontent={<TasksPopover />}\n\t\t\t\tplacement=\"right\"\n\t\t\t\topen={open}\n\t\t\t\tonOpenChange={setOpen}\n\t\t\t\tmiddlewares={[\n\t\t\t\t\tshift({\n\t\t\t\t\t\t// Adding some spacing to the top and bottom so the popover\n\t\t\t\t\t\t// doesn't extend to the edges of the screen.\n\t\t\t\t\t\tpadding: {\n\t\t\t\t\t\t\ttop: 32,\n\t\t\t\t\t\t\tbottom: 32,\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t]}\n\t\t\t>\n\t\t\t\t{(visible) => (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tdata-testid=\"sidebar-tasks-widget-button\"\n\t\t\t\t\t\taria-label=\"Tasks\"\n\t\t\t\t\t\tclassName={clsx(styles.navItem, {\n\t\t\t\t\t\t\t[styles.activeNavItem]: visible,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<JobIcon size=\"25px\" />\n\t\t\t\t\t\t{tasksCount > 0 && (\n\t\t\t\t\t\t\t<div className={styles.badge} aria-label={`${tasksCount} items requiring attention`}>\n\t\t\t\t\t\t\t\t{tasksCount > 9 ? '9+' : tasksCount}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t</Popover>\n\t\t</Tooltip>\n\t)\n})\n"],"names":["withTasksContext","useState","useTasks","useEffectOnce","TaskEvents","jsx","Tooltip","Popover","TasksPopover","shift","jsxs","Button","clsx","styles","JobIcon"],"mappings":";;;;;;;;;;;;;AAWa,MAAA,QAAQA,+BAAiB,MAAM;AAC3C,QAAM,CAAC,MAAM,OAAO,IAAIC,MAAAA,SAAS,KAAK;AAEhC,QAAA,EAAE,WAAW,IAAIC,sBAAS;AAEhCC,gBAAAA,cAAc,MAAM;AACnB,UAAM,aAAa,MAAM;AACxB,cAAQ,IAAI;AAAA,IACb;AAES,aAAA,iBAAiBC,sBAAW,YAAY,UAAU;AAE3D,WAAO,MAAM;AACH,eAAA,oBAAoBA,sBAAW,YAAY,UAAU;AAAA,IAC/D;AAAA,EAAA,CACA;AAED,SACEC,2BAAA,IAAAC,MAAA,SAAA,EAAQ,SAAQ,SAAQ,WAAU,SAClC,UAAAD,2BAAA;AAAA,IAACE,MAAA;AAAA,IAAA;AAAA,MACA,wCAAUC,aAAa,cAAA,EAAA;AAAA,MACvB,WAAU;AAAA,MACV;AAAA,MACA,cAAc;AAAA,MACd,aAAa;AAAA,QACZC,sBAAM;AAAA;AAAA;AAAA,UAGL,SAAS;AAAA,YACR,KAAK;AAAA,YACL,QAAQ;AAAA,UAAA;AAAA,QAET,CAAA;AAAA,MACF;AAAA,MAEC,WAAC,YACDC,2BAAA;AAAA,QAACC,MAAA;AAAA,QAAA;AAAA,UACA,MAAK;AAAA,UACL,eAAY;AAAA,UACZ,cAAW;AAAA,UACX,WAAWC,KAAAA,KAAKC,aAAA,QAAO,SAAS;AAAA,YAC/B,CAACA,aAAAA,QAAO,aAAa,GAAG;AAAA,UAAA,CACxB;AAAA,UAED,UAAA;AAAA,YAACR,2BAAAA,IAAAS,MAAA,SAAA,EAAQ,MAAK,OAAO,CAAA;AAAA,YACpB,aAAa,KACZT,+BAAA,OAAA,EAAI,WAAWQ,aAAO,QAAA,OAAO,cAAY,GAAG,UAAU,8BACrD,UAAa,aAAA,IAAI,OAAO,WAC1B,CAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAEF;AAAA,EAAA,GAGH;AAEF,CAAC;;"}
1
+ {"version":3,"file":"harmony60.cjs","sources":["../src/components/Sidebar/Widgets/IconLink/IconLink.tsx"],"sourcesContent":["import { Link, type SvgIconProps, Tooltip } from '@lokalise/louis'\nimport clsx from 'clsx'\nimport type { FC } from 'react'\nimport styles from './IconLink.module.css'\n\ntype IconLinkProps = {\n\t/** URL destination for the link */\n\tto: string\n\t/** Text to display in the tooltip when hovering over the icon */\n\tlabel: string\n\t/** Icon component from @lokalise/louis to display */\n\ticon: FC<SvgIconProps>\n}\n\n/**\n * A navigation link component that displays an icon with a tooltip.\n * When hovered, shows a tooltip with the label text.\n * The link is highlighted when the current URL matches its destination.\n *\n * @example\n * ```tsx\n * <IconLink to=\"/projects\" label=\"Projects\" icon={FolderOpenIcon} />\n * ```\n */\nexport const IconLink = ({ label, to, icon: Icon }: IconLinkProps) => {\n\treturn (\n\t\t<Tooltip placement=\"right\" tooltip={label}>\n\t\t\t<Link\n\t\t\t\taria-label={label}\n\t\t\t\tclassName={clsx(styles.link, {\n\t\t\t\t\t[styles.active]: window.location.pathname.startsWith(to),\n\t\t\t\t})}\n\t\t\t\thref={to}\n\t\t\t>\n\t\t\t\t<Icon size=\"25px\" />\n\t\t\t</Link>\n\t\t</Tooltip>\n\t)\n}\n"],"names":["jsx","Tooltip","Link","clsx","styles"],"mappings":";;;;;;AAwBO,MAAM,WAAW,CAAC,EAAE,OAAO,IAAI,MAAM,WAA0B;AACrE,SACEA,2BAAA,IAAAC,MAAA,SAAA,EAAQ,WAAU,SAAQ,SAAS,OACnC,UAAAD,2BAAA;AAAA,IAACE,MAAA;AAAA,IAAA;AAAA,MACA,cAAY;AAAA,MACZ,WAAWC,KAAAA,KAAKC,gBAAA,QAAO,MAAM;AAAA,QAC5B,CAACA,gBAAAA,QAAO,MAAM,GAAG,OAAO,SAAS,SAAS,WAAW,EAAE;AAAA,MAAA,CACvD;AAAA,MACD,MAAM;AAAA,MAEN,UAAAJ,2BAAAA,IAAC,MAAK,EAAA,MAAK,OAAO,CAAA;AAAA,IAAA;AAAA,EAAA,GAEpB;AAEF;;"}
@@ -1,62 +1,21 @@
1
- import { jsx, jsxs } from "react/jsx-runtime";
2
- import { shift } from "./harmony85.mjs";
3
- import { Tooltip, Popover, Button, JobIcon } from "@lokalise/louis";
4
- import { useEffectOnce } from "./harmony11.mjs";
5
- import { clsx } from "./harmony48.mjs";
6
- import { useState } from "react";
7
- import styles from "./harmony86.mjs";
8
- import { useTasks } from "./harmony87.mjs";
9
- import { TasksPopover } from "./harmony88.mjs";
10
- import { withTasksContext } from "./harmony89.mjs";
11
- import { TaskEvents } from "./harmony90.mjs";
12
- const Tasks = withTasksContext(() => {
13
- const [open, setOpen] = useState(false);
14
- const { tasksCount } = useTasks();
15
- useEffectOnce(() => {
16
- const showDialog = () => {
17
- setOpen(true);
18
- };
19
- document.addEventListener(TaskEvents.ShowDialog, showDialog);
20
- return () => {
21
- document.removeEventListener(TaskEvents.ShowDialog, showDialog);
22
- };
23
- });
24
- return /* @__PURE__ */ jsx(Tooltip, { tooltip: "Tasks", placement: "right", children: /* @__PURE__ */ jsx(
25
- Popover,
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Tooltip, Link } from "@lokalise/louis";
3
+ import { clsx } from "./harmony55.mjs";
4
+ import styles from "./harmony75.mjs";
5
+ const IconLink = ({ label, to, icon: Icon }) => {
6
+ return /* @__PURE__ */ jsx(Tooltip, { placement: "right", tooltip: label, children: /* @__PURE__ */ jsx(
7
+ Link,
26
8
  {
27
- content: /* @__PURE__ */ jsx(TasksPopover, {}),
28
- placement: "right",
29
- open,
30
- onOpenChange: setOpen,
31
- middlewares: [
32
- shift({
33
- // Adding some spacing to the top and bottom so the popover
34
- // doesn't extend to the edges of the screen.
35
- padding: {
36
- top: 32,
37
- bottom: 32
38
- }
39
- })
40
- ],
41
- children: (visible) => /* @__PURE__ */ jsxs(
42
- Button,
43
- {
44
- type: "button",
45
- "data-testid": "sidebar-tasks-widget-button",
46
- "aria-label": "Tasks",
47
- className: clsx(styles.navItem, {
48
- [styles.activeNavItem]: visible
49
- }),
50
- children: [
51
- /* @__PURE__ */ jsx(JobIcon, { size: "25px" }),
52
- tasksCount > 0 && /* @__PURE__ */ jsx("div", { className: styles.badge, "aria-label": `${tasksCount} items requiring attention`, children: tasksCount > 9 ? "9+" : tasksCount })
53
- ]
54
- }
55
- )
9
+ "aria-label": label,
10
+ className: clsx(styles.link, {
11
+ [styles.active]: window.location.pathname.startsWith(to)
12
+ }),
13
+ href: to,
14
+ children: /* @__PURE__ */ jsx(Icon, { size: "25px" })
56
15
  }
57
16
  ) });
58
- });
17
+ };
59
18
  export {
60
- Tasks
19
+ IconLink
61
20
  };
62
21
  //# sourceMappingURL=harmony60.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony60.mjs","sources":["../src/components/Sidebar/Widgets/Tasks/Tasks.tsx"],"sourcesContent":["import { shift } from '@floating-ui/core'\nimport { Button, JobIcon, Popover, Tooltip } from '@lokalise/louis'\nimport { useEffectOnce } from '@utils'\nimport clsx from 'clsx'\nimport { useState } from 'react'\nimport styles from './Tasks.module.css'\nimport { useTasks } from './TasksContext'\nimport { TasksPopover } from './TasksPopover/TasksPopover'\nimport { withTasksContext } from './TasksProvider'\nimport { TaskEvents } from './utils/taskEvents'\n\nexport const Tasks = withTasksContext(() => {\n\tconst [open, setOpen] = useState(false)\n\n\tconst { tasksCount } = useTasks()\n\n\tuseEffectOnce(() => {\n\t\tconst showDialog = () => {\n\t\t\tsetOpen(true)\n\t\t}\n\n\t\tdocument.addEventListener(TaskEvents.ShowDialog, showDialog)\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(TaskEvents.ShowDialog, showDialog)\n\t\t}\n\t})\n\n\treturn (\n\t\t<Tooltip tooltip=\"Tasks\" placement=\"right\">\n\t\t\t<Popover\n\t\t\t\tcontent={<TasksPopover />}\n\t\t\t\tplacement=\"right\"\n\t\t\t\topen={open}\n\t\t\t\tonOpenChange={setOpen}\n\t\t\t\tmiddlewares={[\n\t\t\t\t\tshift({\n\t\t\t\t\t\t// Adding some spacing to the top and bottom so the popover\n\t\t\t\t\t\t// doesn't extend to the edges of the screen.\n\t\t\t\t\t\tpadding: {\n\t\t\t\t\t\t\ttop: 32,\n\t\t\t\t\t\t\tbottom: 32,\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t]}\n\t\t\t>\n\t\t\t\t{(visible) => (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tdata-testid=\"sidebar-tasks-widget-button\"\n\t\t\t\t\t\taria-label=\"Tasks\"\n\t\t\t\t\t\tclassName={clsx(styles.navItem, {\n\t\t\t\t\t\t\t[styles.activeNavItem]: visible,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<JobIcon size=\"25px\" />\n\t\t\t\t\t\t{tasksCount > 0 && (\n\t\t\t\t\t\t\t<div className={styles.badge} aria-label={`${tasksCount} items requiring attention`}>\n\t\t\t\t\t\t\t\t{tasksCount > 9 ? '9+' : tasksCount}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t</Popover>\n\t\t</Tooltip>\n\t)\n})\n"],"names":[],"mappings":";;;;;;;;;;;AAWa,MAAA,QAAQ,iBAAiB,MAAM;AAC3C,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AAEhC,QAAA,EAAE,WAAW,IAAI,SAAS;AAEhC,gBAAc,MAAM;AACnB,UAAM,aAAa,MAAM;AACxB,cAAQ,IAAI;AAAA,IACb;AAES,aAAA,iBAAiB,WAAW,YAAY,UAAU;AAE3D,WAAO,MAAM;AACH,eAAA,oBAAoB,WAAW,YAAY,UAAU;AAAA,IAC/D;AAAA,EAAA,CACA;AAED,SACE,oBAAA,SAAA,EAAQ,SAAQ,SAAQ,WAAU,SAClC,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,6BAAU,cAAa,EAAA;AAAA,MACvB,WAAU;AAAA,MACV;AAAA,MACA,cAAc;AAAA,MACd,aAAa;AAAA,QACZ,MAAM;AAAA;AAAA;AAAA,UAGL,SAAS;AAAA,YACR,KAAK;AAAA,YACL,QAAQ;AAAA,UAAA;AAAA,QAET,CAAA;AAAA,MACF;AAAA,MAEC,WAAC,YACD;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,MAAK;AAAA,UACL,eAAY;AAAA,UACZ,cAAW;AAAA,UACX,WAAW,KAAK,OAAO,SAAS;AAAA,YAC/B,CAAC,OAAO,aAAa,GAAG;AAAA,UAAA,CACxB;AAAA,UAED,UAAA;AAAA,YAAC,oBAAA,SAAA,EAAQ,MAAK,OAAO,CAAA;AAAA,YACpB,aAAa,KACZ,oBAAA,OAAA,EAAI,WAAW,OAAO,OAAO,cAAY,GAAG,UAAU,8BACrD,UAAa,aAAA,IAAI,OAAO,WAC1B,CAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAEF;AAAA,EAAA,GAGH;AAEF,CAAC;"}
1
+ {"version":3,"file":"harmony60.mjs","sources":["../src/components/Sidebar/Widgets/IconLink/IconLink.tsx"],"sourcesContent":["import { Link, type SvgIconProps, Tooltip } from '@lokalise/louis'\nimport clsx from 'clsx'\nimport type { FC } from 'react'\nimport styles from './IconLink.module.css'\n\ntype IconLinkProps = {\n\t/** URL destination for the link */\n\tto: string\n\t/** Text to display in the tooltip when hovering over the icon */\n\tlabel: string\n\t/** Icon component from @lokalise/louis to display */\n\ticon: FC<SvgIconProps>\n}\n\n/**\n * A navigation link component that displays an icon with a tooltip.\n * When hovered, shows a tooltip with the label text.\n * The link is highlighted when the current URL matches its destination.\n *\n * @example\n * ```tsx\n * <IconLink to=\"/projects\" label=\"Projects\" icon={FolderOpenIcon} />\n * ```\n */\nexport const IconLink = ({ label, to, icon: Icon }: IconLinkProps) => {\n\treturn (\n\t\t<Tooltip placement=\"right\" tooltip={label}>\n\t\t\t<Link\n\t\t\t\taria-label={label}\n\t\t\t\tclassName={clsx(styles.link, {\n\t\t\t\t\t[styles.active]: window.location.pathname.startsWith(to),\n\t\t\t\t})}\n\t\t\t\thref={to}\n\t\t\t>\n\t\t\t\t<Icon size=\"25px\" />\n\t\t\t</Link>\n\t\t</Tooltip>\n\t)\n}\n"],"names":[],"mappings":";;;;AAwBO,MAAM,WAAW,CAAC,EAAE,OAAO,IAAI,MAAM,WAA0B;AACrE,SACE,oBAAA,SAAA,EAAQ,WAAU,SAAQ,SAAS,OACnC,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,cAAY;AAAA,MACZ,WAAW,KAAK,OAAO,MAAM;AAAA,QAC5B,CAAC,OAAO,MAAM,GAAG,OAAO,SAAS,SAAS,WAAW,EAAE;AAAA,MAAA,CACvD;AAAA,MACD,MAAM;AAAA,MAEN,UAAA,oBAAC,MAAK,EAAA,MAAK,OAAO,CAAA;AAAA,IAAA;AAAA,EAAA,GAEpB;AAEF;"}
@@ -1,12 +1,26 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const breadcrumbsItem = "_breadcrumbsItem_1hm6a_1";
4
- const breadcrumbs = "_breadcrumbs_1hm6a_1";
5
- const classes = {
6
- breadcrumbsItem,
7
- breadcrumbs
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const louis = require("@lokalise/louis");
5
+ const clsx = require("./harmony55.cjs");
6
+ const Menu_module = require("./harmony76.cjs");
7
+ const Menu = ({ children, icon: Icon }) => {
8
+ return /* @__PURE__ */ jsxRuntime.jsx(
9
+ louis.Menu,
10
+ {
11
+ menuButton: ({ opened }) => /* @__PURE__ */ jsxRuntime.jsx(louis.Tooltip, { placement: "right", tooltip: "Help", children: /* @__PURE__ */ jsxRuntime.jsx(
12
+ "button",
13
+ {
14
+ type: "button",
15
+ className: clsx.clsx(Menu_module.default.dropdownButton, {
16
+ [Menu_module.default.dropdownButtonActive]: opened
17
+ }),
18
+ children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { size: "25px" })
19
+ }
20
+ ) }),
21
+ children: /* @__PURE__ */ jsxRuntime.jsx(louis.MenuList, { placement: "right-start", children })
22
+ }
23
+ );
8
24
  };
9
- exports.breadcrumbs = breadcrumbs;
10
- exports.breadcrumbsItem = breadcrumbsItem;
11
- exports.default = classes;
25
+ exports.Menu = Menu;
12
26
  //# sourceMappingURL=harmony61.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony61.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
1
+ {"version":3,"file":"harmony61.cjs","sources":["../src/components/Sidebar/Widgets/Menu/Menu.tsx"],"sourcesContent":["import { MenuList, type SvgIconProps, Tooltip, Menu as UIMenu } from '@lokalise/louis'\nimport clsx from 'clsx'\nimport type { FC, PropsWithChildren } from 'react'\nimport styles from './Menu.module.css'\n\ntype MenuProps = PropsWithChildren<{\n\t/** Icon component from @lokalise/louis to display in the menu button */\n\ticon: FC<SvgIconProps>\n}>\n\n/**\n * A dropdown menu component that displays an icon button which reveals a menu list when clicked.\n * The menu is positioned to the right of the button and includes a tooltip.\n *\n * Used primarily for dropdown menus in the Sidebar, such as the Help menu.\n *\n * @example\n * ```tsx\n * <Menu icon={HelpCenterIcon}>\n * <MenuItem href=\"/docs\">Documentation</MenuItem>\n * <MenuItem href=\"/tutorial\">Tutorials</MenuItem>\n * <MenuDivider />\n * <MenuItem href=\"/blog\">Blog</MenuItem>\n * </Menu>\n * ```\n */\nexport const Menu = ({ children, icon: Icon }: MenuProps) => {\n\treturn (\n\t\t<UIMenu\n\t\t\tmenuButton={({ opened }) => (\n\t\t\t\t<Tooltip placement=\"right\" tooltip=\"Help\">\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName={clsx(styles.dropdownButton, {\n\t\t\t\t\t\t\t[styles.dropdownButtonActive]: opened,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon size=\"25px\" />\n\t\t\t\t\t</button>\n\t\t\t\t</Tooltip>\n\t\t\t)}\n\t\t>\n\t\t\t<MenuList placement=\"right-start\">{children}</MenuList>\n\t\t</UIMenu>\n\t)\n}\n"],"names":["jsx","UIMenu","Tooltip","clsx","styles","MenuList"],"mappings":";;;;;;AA0BO,MAAM,OAAO,CAAC,EAAE,UAAU,MAAM,WAAsB;AAE3D,SAAAA,2BAAA;AAAA,IAACC,MAAA;AAAA,IAAA;AAAA,MACA,YAAY,CAAC,EAAE,OAAO,qCACpBC,MAAQ,SAAA,EAAA,WAAU,SAAQ,SAAQ,QAClC,UAAAF,2BAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,MAAK;AAAA,UACL,WAAWG,KAAAA,KAAKC,YAAA,QAAO,gBAAgB;AAAA,YACtC,CAACA,YAAAA,QAAO,oBAAoB,GAAG;AAAA,UAAA,CAC/B;AAAA,UAED,UAAAJ,2BAAAA,IAAC,MAAK,EAAA,MAAK,OAAO,CAAA;AAAA,QAAA;AAAA,MAAA,GAEpB;AAAA,MAGD,UAACA,2BAAA,IAAAK,MAAA,UAAA,EAAS,WAAU,eAAe,SAAS,CAAA;AAAA,IAAA;AAAA,EAC7C;AAEF;;"}
@@ -1,12 +1,26 @@
1
- const breadcrumbsItem = "_breadcrumbsItem_1hm6a_1";
2
- const breadcrumbs = "_breadcrumbs_1hm6a_1";
3
- const classes = {
4
- breadcrumbsItem,
5
- breadcrumbs
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Menu as Menu$1, MenuList, Tooltip } from "@lokalise/louis";
3
+ import { clsx } from "./harmony55.mjs";
4
+ import styles from "./harmony76.mjs";
5
+ const Menu = ({ children, icon: Icon }) => {
6
+ return /* @__PURE__ */ jsx(
7
+ Menu$1,
8
+ {
9
+ menuButton: ({ opened }) => /* @__PURE__ */ jsx(Tooltip, { placement: "right", tooltip: "Help", children: /* @__PURE__ */ jsx(
10
+ "button",
11
+ {
12
+ type: "button",
13
+ className: clsx(styles.dropdownButton, {
14
+ [styles.dropdownButtonActive]: opened
15
+ }),
16
+ children: /* @__PURE__ */ jsx(Icon, { size: "25px" })
17
+ }
18
+ ) }),
19
+ children: /* @__PURE__ */ jsx(MenuList, { placement: "right-start", children })
20
+ }
21
+ );
6
22
  };
7
23
  export {
8
- breadcrumbs,
9
- breadcrumbsItem,
10
- classes as default
24
+ Menu
11
25
  };
12
26
  //# sourceMappingURL=harmony61.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony61.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
1
+ {"version":3,"file":"harmony61.mjs","sources":["../src/components/Sidebar/Widgets/Menu/Menu.tsx"],"sourcesContent":["import { MenuList, type SvgIconProps, Tooltip, Menu as UIMenu } from '@lokalise/louis'\nimport clsx from 'clsx'\nimport type { FC, PropsWithChildren } from 'react'\nimport styles from './Menu.module.css'\n\ntype MenuProps = PropsWithChildren<{\n\t/** Icon component from @lokalise/louis to display in the menu button */\n\ticon: FC<SvgIconProps>\n}>\n\n/**\n * A dropdown menu component that displays an icon button which reveals a menu list when clicked.\n * The menu is positioned to the right of the button and includes a tooltip.\n *\n * Used primarily for dropdown menus in the Sidebar, such as the Help menu.\n *\n * @example\n * ```tsx\n * <Menu icon={HelpCenterIcon}>\n * <MenuItem href=\"/docs\">Documentation</MenuItem>\n * <MenuItem href=\"/tutorial\">Tutorials</MenuItem>\n * <MenuDivider />\n * <MenuItem href=\"/blog\">Blog</MenuItem>\n * </Menu>\n * ```\n */\nexport const Menu = ({ children, icon: Icon }: MenuProps) => {\n\treturn (\n\t\t<UIMenu\n\t\t\tmenuButton={({ opened }) => (\n\t\t\t\t<Tooltip placement=\"right\" tooltip=\"Help\">\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName={clsx(styles.dropdownButton, {\n\t\t\t\t\t\t\t[styles.dropdownButtonActive]: opened,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon size=\"25px\" />\n\t\t\t\t\t</button>\n\t\t\t\t</Tooltip>\n\t\t\t)}\n\t\t>\n\t\t\t<MenuList placement=\"right-start\">{children}</MenuList>\n\t\t</UIMenu>\n\t)\n}\n"],"names":["UIMenu"],"mappings":";;;;AA0BO,MAAM,OAAO,CAAC,EAAE,UAAU,MAAM,WAAsB;AAE3D,SAAA;AAAA,IAACA;AAAAA,IAAA;AAAA,MACA,YAAY,CAAC,EAAE,OAAO,0BACpB,SAAQ,EAAA,WAAU,SAAQ,SAAQ,QAClC,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,MAAK;AAAA,UACL,WAAW,KAAK,OAAO,gBAAgB;AAAA,YACtC,CAAC,OAAO,oBAAoB,GAAG;AAAA,UAAA,CAC/B;AAAA,UAED,UAAA,oBAAC,MAAK,EAAA,MAAK,OAAO,CAAA;AAAA,QAAA;AAAA,MAAA,GAEpB;AAAA,MAGD,UAAC,oBAAA,UAAA,EAAS,WAAU,eAAe,SAAS,CAAA;AAAA,IAAA;AAAA,EAC7C;AAEF;"}
@@ -1,11 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
- const louis = require("@lokalise/louis");
5
- const React = require("react");
6
- const DropdownContent = ({ items }) => /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: items.map((item, index) => /* @__PURE__ */ jsxRuntime.jsxs(React.Fragment, { children: [
7
- !!index && item.some((value) => value.visible) && /* @__PURE__ */ jsxRuntime.jsx(louis.MenuDivider, {}),
8
- item.filter(({ visible }) => visible).map(({ link, label, onClick }) => /* @__PURE__ */ jsxRuntime.jsx(louis.MenuItem, { href: link || "#", "aria-label": label, onClick, children: label }, label))
9
- ] }, item[0].label)) });
10
- exports.DropdownContent = DropdownContent;
4
+ const ProfileMenuContent = require("./harmony77.cjs");
5
+ const ProfileMenuProvider = require("./harmony78.cjs");
6
+ const ProfileMenu = ({ config, children }) => /* @__PURE__ */ jsxRuntime.jsx(ProfileMenuProvider.ProfileMenuProvider, { config, children: /* @__PURE__ */ jsxRuntime.jsx(ProfileMenuContent.ProfileMenuContent, { children }) });
7
+ exports.ProfileMenu = ProfileMenu;
11
8
  //# sourceMappingURL=harmony62.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony62.cjs","sources":["../src/components/NavigationPanel/components/DropdownContent/DropdownContent.tsx"],"sourcesContent":["import { MenuDivider, MenuItem } from '@lokalise/louis'\nimport { Fragment } from 'react'\nimport type { DropdownItem } from '../../types/navigation'\n\nexport const DropdownContent = ({ items }: { items: DropdownItem[][] }) => (\n\t<>\n\t\t{items.map((item, index) => (\n\t\t\t<Fragment key={item[0].label}>\n\t\t\t\t{!!index && item.some((value) => value.visible) && <MenuDivider />}\n\t\t\t\t{item\n\t\t\t\t\t.filter(({ visible }) => visible)\n\t\t\t\t\t.map(({ link, label, onClick }) => (\n\t\t\t\t\t\t<MenuItem key={label} href={link || '#'} aria-label={label} onClick={onClick}>\n\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t))}\n\t\t\t</Fragment>\n\t\t))}\n\t</>\n)\n"],"names":["jsx","Fragment","jsxs","MenuDivider","MenuItem"],"mappings":";;;;;AAIO,MAAM,kBAAkB,CAAC,EAAE,MAAA,MACjCA,2BAAAA,IAAAC,WAAAA,UAAA,EACE,UAAM,MAAA,IAAI,CAAC,MAAM,UACjBC,2BAAAA,KAACD,MAAAA,UAAA,EACC,UAAA;AAAA,EAAC,CAAA,CAAC,SAAS,KAAK,KAAK,CAAC,UAAU,MAAM,OAAO,KAAKD,+BAACG,MAAAA,aAAY,CAAA,CAAA;AAAA,EAC/D,KACC,OAAO,CAAC,EAAE,cAAc,OAAO,EAC/B,IAAI,CAAC,EAAE,MAAM,OAAO,QAAQ,MAC3BH,+BAAAI,MAAAA,UAAA,EAAqB,MAAM,QAAQ,KAAK,cAAY,OAAO,SAC1D,UADa,MAAA,GAAA,KAEf,CACA;AAAA,EAAA,GARY,KAAK,CAAC,EAAE,KASvB,CACA,EACF,CAAA;;"}
1
+ {"version":3,"file":"harmony62.cjs","sources":["../src/components/Sidebar/Widgets/ProfileMenu/ProfileMenu.tsx"],"sourcesContent":["import { ProfileMenuContent, type ProfileMenuContentProps } from './ProfileMenuContent'\nimport { ProfileMenuProvider } from './ProfileMenuProvider'\nimport type { SidebarProfileMenuConfig } from './types'\n\ntype ProfileMenuProps = {\n\t/** Configuration object containing team and user settings */\n\tconfig: SidebarProfileMenuConfig\n\t/** Render function for the menu content */\n\tchildren: ProfileMenuContentProps['children']\n}\n\n/**\n * A contextual menu component that provides team management functionality.\n * It manages team switching, profile settings, billing options, and upgrade prompts.\n *\n * The component uses a render prop pattern to provide context values to its children,\n * allowing flexible composition of menu items based on user permissions and team status.\n *\n * @example\n * ```tsx\n * <ProfileMenu config={profileMenuConfig}>\n * {({ allowTeamCreation, showBillingButton }) => (\n * <>\n * <TeamSwitch onSwitchTeam={handleTeamSwitch} />\n * {allowTeamCreation && <MenuItem>Create new team</MenuItem>}\n * {showBillingButton && <MenuItem href=\"/billing\">Billing</MenuItem>}\n * </>\n * )}\n * </ProfileMenu>\n * ```\n */\nexport const ProfileMenu = ({ config, children }: ProfileMenuProps) => (\n\t<ProfileMenuProvider config={config}>\n\t\t<ProfileMenuContent>{children}</ProfileMenuContent>\n\t</ProfileMenuProvider>\n)\n"],"names":["jsx","ProfileMenuProvider","ProfileMenuContent"],"mappings":";;;;;AA+BO,MAAM,cAAc,CAAC,EAAE,QAAQ,SAAS,MAC7CA,2BAAA,IAAAC,oBAAA,qBAAA,EAAoB,QACpB,UAAAD,2BAAA,IAACE,mBAAoB,oBAAA,EAAA,SAAS,CAAA,EAC/B,CAAA;;"}
@@ -1,11 +1,8 @@
1
- import { jsx, Fragment, jsxs } from "react/jsx-runtime";
2
- import { MenuDivider, MenuItem } from "@lokalise/louis";
3
- import { Fragment as Fragment$1 } from "react";
4
- const DropdownContent = ({ items }) => /* @__PURE__ */ jsx(Fragment, { children: items.map((item, index) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
5
- !!index && item.some((value) => value.visible) && /* @__PURE__ */ jsx(MenuDivider, {}),
6
- item.filter(({ visible }) => visible).map(({ link, label, onClick }) => /* @__PURE__ */ jsx(MenuItem, { href: link || "#", "aria-label": label, onClick, children: label }, label))
7
- ] }, item[0].label)) });
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { ProfileMenuContent } from "./harmony77.mjs";
3
+ import { ProfileMenuProvider } from "./harmony78.mjs";
4
+ const ProfileMenu = ({ config, children }) => /* @__PURE__ */ jsx(ProfileMenuProvider, { config, children: /* @__PURE__ */ jsx(ProfileMenuContent, { children }) });
8
5
  export {
9
- DropdownContent
6
+ ProfileMenu
10
7
  };
11
8
  //# sourceMappingURL=harmony62.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony62.mjs","sources":["../src/components/NavigationPanel/components/DropdownContent/DropdownContent.tsx"],"sourcesContent":["import { MenuDivider, MenuItem } from '@lokalise/louis'\nimport { Fragment } from 'react'\nimport type { DropdownItem } from '../../types/navigation'\n\nexport const DropdownContent = ({ items }: { items: DropdownItem[][] }) => (\n\t<>\n\t\t{items.map((item, index) => (\n\t\t\t<Fragment key={item[0].label}>\n\t\t\t\t{!!index && item.some((value) => value.visible) && <MenuDivider />}\n\t\t\t\t{item\n\t\t\t\t\t.filter(({ visible }) => visible)\n\t\t\t\t\t.map(({ link, label, onClick }) => (\n\t\t\t\t\t\t<MenuItem key={label} href={link || '#'} aria-label={label} onClick={onClick}>\n\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t))}\n\t\t\t</Fragment>\n\t\t))}\n\t</>\n)\n"],"names":["Fragment"],"mappings":";;;AAIO,MAAM,kBAAkB,CAAC,EAAE,MAAA,MACjC,oBAAA,UAAA,EACE,UAAM,MAAA,IAAI,CAAC,MAAM,UACjB,qBAACA,YAAA,EACC,UAAA;AAAA,EAAC,CAAA,CAAC,SAAS,KAAK,KAAK,CAAC,UAAU,MAAM,OAAO,KAAK,oBAAC,aAAY,CAAA,CAAA;AAAA,EAC/D,KACC,OAAO,CAAC,EAAE,cAAc,OAAO,EAC/B,IAAI,CAAC,EAAE,MAAM,OAAO,QAAQ,MAC3B,oBAAA,UAAA,EAAqB,MAAM,QAAQ,KAAK,cAAY,OAAO,SAC1D,UADa,MAAA,GAAA,KAEf,CACA;AAAA,EAAA,GARY,KAAK,CAAC,EAAE,KASvB,CACA,EACF,CAAA;"}
1
+ {"version":3,"file":"harmony62.mjs","sources":["../src/components/Sidebar/Widgets/ProfileMenu/ProfileMenu.tsx"],"sourcesContent":["import { ProfileMenuContent, type ProfileMenuContentProps } from './ProfileMenuContent'\nimport { ProfileMenuProvider } from './ProfileMenuProvider'\nimport type { SidebarProfileMenuConfig } from './types'\n\ntype ProfileMenuProps = {\n\t/** Configuration object containing team and user settings */\n\tconfig: SidebarProfileMenuConfig\n\t/** Render function for the menu content */\n\tchildren: ProfileMenuContentProps['children']\n}\n\n/**\n * A contextual menu component that provides team management functionality.\n * It manages team switching, profile settings, billing options, and upgrade prompts.\n *\n * The component uses a render prop pattern to provide context values to its children,\n * allowing flexible composition of menu items based on user permissions and team status.\n *\n * @example\n * ```tsx\n * <ProfileMenu config={profileMenuConfig}>\n * {({ allowTeamCreation, showBillingButton }) => (\n * <>\n * <TeamSwitch onSwitchTeam={handleTeamSwitch} />\n * {allowTeamCreation && <MenuItem>Create new team</MenuItem>}\n * {showBillingButton && <MenuItem href=\"/billing\">Billing</MenuItem>}\n * </>\n * )}\n * </ProfileMenu>\n * ```\n */\nexport const ProfileMenu = ({ config, children }: ProfileMenuProps) => (\n\t<ProfileMenuProvider config={config}>\n\t\t<ProfileMenuContent>{children}</ProfileMenuContent>\n\t</ProfileMenuProvider>\n)\n"],"names":[],"mappings":";;;AA+BO,MAAM,cAAc,CAAC,EAAE,QAAQ,SAAS,MAC7C,oBAAA,qBAAA,EAAoB,QACpB,UAAA,oBAAC,oBAAoB,EAAA,SAAS,CAAA,EAC/B,CAAA;"}
@@ -2,31 +2,34 @@
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("./harmony48.cjs");
6
- const React = require("react");
7
- const NavItemContents = require("./harmony76.cjs");
8
- const styles_module = require("./harmony77.cjs");
9
- const NavigationTabsItem = React.forwardRef(
10
- ({ label, href = "", disabled = false, badge, onClick, novel }, ref) => /* @__PURE__ */ jsxRuntime.jsx(louis.Tooltip, { tooltip: "You do not have access to this function", show: disabled, children: /* @__PURE__ */ jsxRuntime.jsx(
11
- "div",
12
- {
13
- className: disabled ? styles_module.default.projectNavigationItemDisabled : styles_module.default.projectNavigationItem,
14
- children: onClick || disabled || !href ? /* @__PURE__ */ jsxRuntime.jsx(
15
- "button",
16
- {
17
- type: "button",
18
- ref,
19
- className: clsx.clsx(styles_module.default.withNavLinkStyle, {
20
- [styles_module.default.disabled]: disabled
21
- }),
22
- disabled,
23
- onClick,
24
- children: /* @__PURE__ */ jsxRuntime.jsx(NavItemContents.NavItemContents, { label, badge, novel })
25
- }
26
- ) : /* @__PURE__ */ jsxRuntime.jsx("a", { href, className: styles_module.default.withNavLinkStyle, children: /* @__PURE__ */ jsxRuntime.jsx(NavItemContents.NavItemContents, { label, badge, novel }) })
27
- }
28
- ) })
29
- );
30
- NavigationTabsItem.displayName = "NavigationTabsItem";
31
- exports.NavigationTabsItem = NavigationTabsItem;
5
+ const ProfileMenuContext = require("./harmony79.cjs");
6
+ const ProfileSettingsMenuItem_module = require("./harmony80.cjs");
7
+ const ProfileSettingsMenuItem = ({
8
+ href,
9
+ onClick,
10
+ userEmail,
11
+ hideBottomDivider
12
+ }) => {
13
+ const { isEndOfTrialActive, isTeamSuspended } = ProfileMenuContext.useProfileMenu();
14
+ if (isEndOfTrialActive || isTeamSuspended) {
15
+ return null;
16
+ }
17
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
18
+ /* @__PURE__ */ jsxRuntime.jsx(
19
+ louis.MenuItem,
20
+ {
21
+ href,
22
+ onClick: () => {
23
+ onClick == null ? void 0 : onClick();
24
+ },
25
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex-col ${ProfileSettingsMenuItem_module.default.container}`, children: [
26
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Profile Settings" }),
27
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: ProfileSettingsMenuItem_module.default.profileEmail, children: userEmail })
28
+ ] })
29
+ }
30
+ ),
31
+ !hideBottomDivider && /* @__PURE__ */ jsxRuntime.jsx(louis.MenuDivider, {})
32
+ ] });
33
+ };
34
+ exports.ProfileSettingsMenuItem = ProfileSettingsMenuItem;
32
35
  //# sourceMappingURL=harmony63.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony63.cjs","sources":["../src/components/NavigationPanel/components/NavigationTabs/NavigationTabsItem/NavigationTabsItem.tsx"],"sourcesContent":["import { Tooltip } from '@lokalise/louis'\nimport clsx from 'clsx'\nimport { forwardRef } from 'react'\nimport { NavItemContents } from './NavItemContents'\nimport classes from './styles.module.css'\n\ntype NavigationTabsItemProps = {\n\tlabel: string\n\tbadge?: number\n\tdisabled?: boolean\n\tactive?: boolean\n\tonClick?: () => void\n\thref?: string\n\tnovel?: string\n}\n\nexport const NavigationTabsItem = forwardRef<HTMLButtonElement, NavigationTabsItemProps>(\n\t({ label, href = '', disabled = false, badge, onClick, novel }, ref) => (\n\t\t<Tooltip tooltip=\"You do not have access to this function\" show={disabled}>\n\t\t\t<div\n\t\t\t\tclassName={disabled ? classes.projectNavigationItemDisabled : classes.projectNavigationItem}\n\t\t\t>\n\t\t\t\t{onClick || disabled || !href ? (\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\tclassName={clsx(classes.withNavLinkStyle, {\n\t\t\t\t\t\t\t[classes.disabled]: disabled,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tonClick={onClick}\n\t\t\t\t\t>\n\t\t\t\t\t\t<NavItemContents label={label} badge={badge} novel={novel} />\n\t\t\t\t\t</button>\n\t\t\t\t) : (\n\t\t\t\t\t<a href={href} className={classes.withNavLinkStyle}>\n\t\t\t\t\t\t<NavItemContents label={label} badge={badge} novel={novel} />\n\t\t\t\t\t</a>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</Tooltip>\n\t),\n)\n\nNavigationTabsItem.displayName = 'NavigationTabsItem'\n"],"names":["forwardRef","jsx","Tooltip","classes","clsx","NavItemContents"],"mappings":";;;;;;;;AAgBO,MAAM,qBAAqBA,MAAA;AAAA,EACjC,CAAC,EAAE,OAAO,OAAO,IAAI,WAAW,OAAO,OAAO,SAAS,MAAA,GAAS,QAC/DC,2BAAA,IAACC,iBAAQ,SAAQ,2CAA0C,MAAM,UAChE,UAAAD,2BAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,WAAW,WAAWE,cAAAA,QAAQ,gCAAgCA,cAAQ,QAAA;AAAA,MAErE,UAAA,WAAW,YAAY,CAAC,OACxBF,2BAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,MAAK;AAAA,UACL;AAAA,UACA,WAAWG,KAAAA,KAAKD,cAAA,QAAQ,kBAAkB;AAAA,YACzC,CAACA,cAAAA,QAAQ,QAAQ,GAAG;AAAA,UAAA,CACpB;AAAA,UACD;AAAA,UACA;AAAA,UAEA,UAACF,2BAAA,IAAAI,gBAAA,iBAAA,EAAgB,OAAc,OAAc,MAAc,CAAA;AAAA,QAAA;AAAA,MAAA,IAG5DJ,2BAAAA,IAAC,KAAE,EAAA,MAAY,WAAWE,cAAA,QAAQ,kBACjC,UAAAF,2BAAA,IAACI,gBAAgB,iBAAA,EAAA,OAAc,OAAc,MAAc,CAAA,EAC5D,CAAA;AAAA,IAAA;AAAA,EAAA,EAGH,CAAA;AAEF;AAEA,mBAAmB,cAAc;;"}
1
+ {"version":3,"file":"harmony63.cjs","sources":["../src/components/Sidebar/Widgets/ProfileMenu/ProfileSettingsMenuItem/ProfileSettingsMenuItem.tsx"],"sourcesContent":["import { MenuDivider, MenuItem } from '@lokalise/louis'\nimport { useProfileMenu } from '../ProfileMenuContext'\nimport styles from './ProfileSettingsMenuItem.module.css'\n\ntype ProfileSettingsMenuItemProps = {\n\t/** URL to the profile settings page */\n\thref: string\n\t/** User's email address to display below \"Profile Settings\" */\n\tuserEmail: string\n\t/** Optional callback function for tracking or additional actions */\n\tonClick?: () => void\n\t/** Whether to hide the divider that appears below this menu item */\n\thideBottomDivider?: boolean\n}\n\n/**\n * A menu item component that provides access to profile settings.\n *\n * Features:\n * - Displays \"Profile Settings\" with the user's email address below\n * - Conditionally renders based on team status\n * - Includes an optional divider below the item\n * - Will not render if:\n * - Team is suspended\n * - Team's trial period has ended\n *\n * @example\n * ```tsx\n * <ProfileSettingsMenuItem\n * href=\"/settings/profile\"\n * userEmail=\"user@example.com\"\n * onClick={() => trackSettingsClick()}\n * />\n *\n * // Without bottom divider\n * <ProfileSettingsMenuItem\n * href=\"/settings/profile\"\n * userEmail=\"user@example.com\"\n * hideBottomDivider\n * />\n * ```\n *\n * @note This component must be used within a ProfileMenu component\n * as it requires access to the ProfileMenu context for team status information.\n */\nexport const ProfileSettingsMenuItem = ({\n\thref,\n\tonClick,\n\tuserEmail,\n\thideBottomDivider,\n}: ProfileSettingsMenuItemProps) => {\n\tconst { isEndOfTrialActive, isTeamSuspended } = useProfileMenu()\n\n\tif (isEndOfTrialActive || isTeamSuspended) {\n\t\treturn null\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem\n\t\t\t\thref={href}\n\t\t\t\tonClick={() => {\n\t\t\t\t\tonClick?.()\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div className={`flex-col ${styles.container}`}>\n\t\t\t\t\t<span>Profile Settings</span>\n\t\t\t\t\t<span className={styles.profileEmail}>{userEmail}</span>\n\t\t\t\t</div>\n\t\t\t</MenuItem>\n\n\t\t\t{!hideBottomDivider && <MenuDivider />}\n\t\t</>\n\t)\n}\n"],"names":["useProfileMenu","jsxs","Fragment","jsx","MenuItem","styles","MenuDivider"],"mappings":";;;;;;AA6CO,MAAM,0BAA0B,CAAC;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAAoC;AACnC,QAAM,EAAE,oBAAoB,gBAAgB,IAAIA,kCAAe;AAE/D,MAAI,sBAAsB,iBAAiB;AACnC,WAAA;AAAA,EAAA;AAGR,SAEEC,2BAAA,KAAAC,qBAAA,EAAA,UAAA;AAAA,IAAAC,2BAAA;AAAA,MAACC,MAAA;AAAA,MAAA;AAAA,QACA;AAAA,QACA,SAAS,MAAM;AACJ;AAAA,QACX;AAAA,QAEA,0CAAC,OAAI,EAAA,WAAW,YAAYC,uCAAO,SAAS,IAC3C,UAAA;AAAA,UAAAF,2BAAAA,IAAC,UAAK,UAAgB,mBAAA,CAAA;AAAA,UACrBA,2BAAA,IAAA,QAAA,EAAK,WAAWE,+BAAA,QAAO,cAAe,UAAU,UAAA,CAAA;AAAA,QAAA,EAClD,CAAA;AAAA,MAAA;AAAA,IACD;AAAA,IAEC,CAAC,qBAAqBF,+BAACG,MAAAA,aAAY,CAAA,CAAA;AAAA,EAAA,GACrC;AAEF;;"}
@@ -1,32 +1,35 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import { Tooltip } from "@lokalise/louis";
3
- import { clsx } from "./harmony48.mjs";
4
- import { forwardRef } from "react";
5
- import { NavItemContents } from "./harmony76.mjs";
6
- import classes from "./harmony77.mjs";
7
- const NavigationTabsItem = forwardRef(
8
- ({ label, href = "", disabled = false, badge, onClick, novel }, ref) => /* @__PURE__ */ jsx(Tooltip, { tooltip: "You do not have access to this function", show: disabled, children: /* @__PURE__ */ jsx(
9
- "div",
10
- {
11
- className: disabled ? classes.projectNavigationItemDisabled : classes.projectNavigationItem,
12
- children: onClick || disabled || !href ? /* @__PURE__ */ jsx(
13
- "button",
14
- {
15
- type: "button",
16
- ref,
17
- className: clsx(classes.withNavLinkStyle, {
18
- [classes.disabled]: disabled
19
- }),
20
- disabled,
21
- onClick,
22
- children: /* @__PURE__ */ jsx(NavItemContents, { label, badge, novel })
23
- }
24
- ) : /* @__PURE__ */ jsx("a", { href, className: classes.withNavLinkStyle, children: /* @__PURE__ */ jsx(NavItemContents, { label, badge, novel }) })
25
- }
26
- ) })
27
- );
28
- NavigationTabsItem.displayName = "NavigationTabsItem";
1
+ import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
+ import { MenuItem, MenuDivider } from "@lokalise/louis";
3
+ import { useProfileMenu } from "./harmony79.mjs";
4
+ import styles from "./harmony80.mjs";
5
+ const ProfileSettingsMenuItem = ({
6
+ href,
7
+ onClick,
8
+ userEmail,
9
+ hideBottomDivider
10
+ }) => {
11
+ const { isEndOfTrialActive, isTeamSuspended } = useProfileMenu();
12
+ if (isEndOfTrialActive || isTeamSuspended) {
13
+ return null;
14
+ }
15
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
16
+ /* @__PURE__ */ jsx(
17
+ MenuItem,
18
+ {
19
+ href,
20
+ onClick: () => {
21
+ onClick == null ? void 0 : onClick();
22
+ },
23
+ children: /* @__PURE__ */ jsxs("div", { className: `flex-col ${styles.container}`, children: [
24
+ /* @__PURE__ */ jsx("span", { children: "Profile Settings" }),
25
+ /* @__PURE__ */ jsx("span", { className: styles.profileEmail, children: userEmail })
26
+ ] })
27
+ }
28
+ ),
29
+ !hideBottomDivider && /* @__PURE__ */ jsx(MenuDivider, {})
30
+ ] });
31
+ };
29
32
  export {
30
- NavigationTabsItem
33
+ ProfileSettingsMenuItem
31
34
  };
32
35
  //# sourceMappingURL=harmony63.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony63.mjs","sources":["../src/components/NavigationPanel/components/NavigationTabs/NavigationTabsItem/NavigationTabsItem.tsx"],"sourcesContent":["import { Tooltip } from '@lokalise/louis'\nimport clsx from 'clsx'\nimport { forwardRef } from 'react'\nimport { NavItemContents } from './NavItemContents'\nimport classes from './styles.module.css'\n\ntype NavigationTabsItemProps = {\n\tlabel: string\n\tbadge?: number\n\tdisabled?: boolean\n\tactive?: boolean\n\tonClick?: () => void\n\thref?: string\n\tnovel?: string\n}\n\nexport const NavigationTabsItem = forwardRef<HTMLButtonElement, NavigationTabsItemProps>(\n\t({ label, href = '', disabled = false, badge, onClick, novel }, ref) => (\n\t\t<Tooltip tooltip=\"You do not have access to this function\" show={disabled}>\n\t\t\t<div\n\t\t\t\tclassName={disabled ? classes.projectNavigationItemDisabled : classes.projectNavigationItem}\n\t\t\t>\n\t\t\t\t{onClick || disabled || !href ? (\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\tclassName={clsx(classes.withNavLinkStyle, {\n\t\t\t\t\t\t\t[classes.disabled]: disabled,\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tonClick={onClick}\n\t\t\t\t\t>\n\t\t\t\t\t\t<NavItemContents label={label} badge={badge} novel={novel} />\n\t\t\t\t\t</button>\n\t\t\t\t) : (\n\t\t\t\t\t<a href={href} className={classes.withNavLinkStyle}>\n\t\t\t\t\t\t<NavItemContents label={label} badge={badge} novel={novel} />\n\t\t\t\t\t</a>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</Tooltip>\n\t),\n)\n\nNavigationTabsItem.displayName = 'NavigationTabsItem'\n"],"names":[],"mappings":";;;;;;AAgBO,MAAM,qBAAqB;AAAA,EACjC,CAAC,EAAE,OAAO,OAAO,IAAI,WAAW,OAAO,OAAO,SAAS,MAAA,GAAS,QAC/D,oBAAC,WAAQ,SAAQ,2CAA0C,MAAM,UAChE,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,WAAW,WAAW,QAAQ,gCAAgC,QAAQ;AAAA,MAErE,UAAA,WAAW,YAAY,CAAC,OACxB;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,MAAK;AAAA,UACL;AAAA,UACA,WAAW,KAAK,QAAQ,kBAAkB;AAAA,YACzC,CAAC,QAAQ,QAAQ,GAAG;AAAA,UAAA,CACpB;AAAA,UACD;AAAA,UACA;AAAA,UAEA,UAAC,oBAAA,iBAAA,EAAgB,OAAc,OAAc,MAAc,CAAA;AAAA,QAAA;AAAA,MAAA,IAG5D,oBAAC,KAAE,EAAA,MAAY,WAAW,QAAQ,kBACjC,UAAA,oBAAC,iBAAgB,EAAA,OAAc,OAAc,MAAc,CAAA,EAC5D,CAAA;AAAA,IAAA;AAAA,EAAA,EAGH,CAAA;AAEF;AAEA,mBAAmB,cAAc;"}
1
+ {"version":3,"file":"harmony63.mjs","sources":["../src/components/Sidebar/Widgets/ProfileMenu/ProfileSettingsMenuItem/ProfileSettingsMenuItem.tsx"],"sourcesContent":["import { MenuDivider, MenuItem } from '@lokalise/louis'\nimport { useProfileMenu } from '../ProfileMenuContext'\nimport styles from './ProfileSettingsMenuItem.module.css'\n\ntype ProfileSettingsMenuItemProps = {\n\t/** URL to the profile settings page */\n\thref: string\n\t/** User's email address to display below \"Profile Settings\" */\n\tuserEmail: string\n\t/** Optional callback function for tracking or additional actions */\n\tonClick?: () => void\n\t/** Whether to hide the divider that appears below this menu item */\n\thideBottomDivider?: boolean\n}\n\n/**\n * A menu item component that provides access to profile settings.\n *\n * Features:\n * - Displays \"Profile Settings\" with the user's email address below\n * - Conditionally renders based on team status\n * - Includes an optional divider below the item\n * - Will not render if:\n * - Team is suspended\n * - Team's trial period has ended\n *\n * @example\n * ```tsx\n * <ProfileSettingsMenuItem\n * href=\"/settings/profile\"\n * userEmail=\"user@example.com\"\n * onClick={() => trackSettingsClick()}\n * />\n *\n * // Without bottom divider\n * <ProfileSettingsMenuItem\n * href=\"/settings/profile\"\n * userEmail=\"user@example.com\"\n * hideBottomDivider\n * />\n * ```\n *\n * @note This component must be used within a ProfileMenu component\n * as it requires access to the ProfileMenu context for team status information.\n */\nexport const ProfileSettingsMenuItem = ({\n\thref,\n\tonClick,\n\tuserEmail,\n\thideBottomDivider,\n}: ProfileSettingsMenuItemProps) => {\n\tconst { isEndOfTrialActive, isTeamSuspended } = useProfileMenu()\n\n\tif (isEndOfTrialActive || isTeamSuspended) {\n\t\treturn null\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem\n\t\t\t\thref={href}\n\t\t\t\tonClick={() => {\n\t\t\t\t\tonClick?.()\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div className={`flex-col ${styles.container}`}>\n\t\t\t\t\t<span>Profile Settings</span>\n\t\t\t\t\t<span className={styles.profileEmail}>{userEmail}</span>\n\t\t\t\t</div>\n\t\t\t</MenuItem>\n\n\t\t\t{!hideBottomDivider && <MenuDivider />}\n\t\t</>\n\t)\n}\n"],"names":[],"mappings":";;;;AA6CO,MAAM,0BAA0B,CAAC;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAAoC;AACnC,QAAM,EAAE,oBAAoB,gBAAgB,IAAI,eAAe;AAE/D,MAAI,sBAAsB,iBAAiB;AACnC,WAAA;AAAA,EAAA;AAGR,SAEE,qBAAA,UAAA,EAAA,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA;AAAA,QACA,SAAS,MAAM;AACJ;AAAA,QACX;AAAA,QAEA,+BAAC,OAAI,EAAA,WAAW,YAAY,OAAO,SAAS,IAC3C,UAAA;AAAA,UAAA,oBAAC,UAAK,UAAgB,mBAAA,CAAA;AAAA,UACrB,oBAAA,QAAA,EAAK,WAAW,OAAO,cAAe,UAAU,UAAA,CAAA;AAAA,QAAA,EAClD,CAAA;AAAA,MAAA;AAAA,IACD;AAAA,IAEC,CAAC,qBAAqB,oBAAC,aAAY,CAAA,CAAA;AAAA,EAAA,GACrC;AAEF;"}
@@ -1,6 +1,35 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const hasVisibleItems = (dropdownSections) => (dropdownSections == null ? void 0 : dropdownSections.some((section) => section.some((item) => item.visible))) ?? false;
4
- const isNavigationItemVisible = (item) => item.visible && (!item.dropdown || hasVisibleItems(item.dropdown));
5
- exports.isNavigationItemVisible = isNavigationItemVisible;
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const louis = require("@lokalise/louis");
5
+ const plan = require("./harmony7.cjs");
6
+ const ProfileMenuContext = require("./harmony79.cjs");
7
+ const TeamMenuItem_module = require("./harmony81.cjs");
8
+ const TeamMenuItem = ({ team, onClick, hidePlanLabel }) => {
9
+ const { currentTeam, planId } = ProfileMenuContext.useProfileMenu();
10
+ const contextTeam = team || currentTeam;
11
+ if (!contextTeam) {
12
+ return null;
13
+ }
14
+ const planLabel = plan.isFreePlan(planId) ? "Free" : plan.isTrialPlan(planId) ? "Trial" : void 0;
15
+ const WrapperNode = onClick ? louis.MenuItem : "div";
16
+ return /* @__PURE__ */ jsxRuntime.jsxs(
17
+ WrapperNode,
18
+ {
19
+ className: TeamMenuItem_module.default.wrapper,
20
+ ...onClick && { onClick: () => onClick(contextTeam) },
21
+ children: [
22
+ 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" }) }),
23
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: TeamMenuItem_module.default.teamDetails, children: [
24
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: TeamMenuItem_module.default.planWrapper, children: [
25
+ /* @__PURE__ */ jsxRuntime.jsx("span", { title: contextTeam.name, className: TeamMenuItem_module.default.teamName, children: contextTeam.name }),
26
+ planLabel && !hidePlanLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: TeamMenuItem_module.default.teamName, children: planLabel })
27
+ ] }),
28
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: TeamMenuItem_module.default.membership, children: contextTeam.role })
29
+ ] })
30
+ ]
31
+ }
32
+ );
33
+ };
34
+ exports.TeamMenuItem = TeamMenuItem;
6
35
  //# sourceMappingURL=harmony64.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony64.cjs","sources":["../src/components/NavigationPanel/components/NavigationTabs/helpers.ts"],"sourcesContent":["import type { DropdownItem, NavigationTabsItem } from '../../types/navigation'\n\nconst hasVisibleItems = (dropdownSections?: DropdownItem[][]): boolean =>\n\tdropdownSections?.some((section) => section.some((item) => item.visible)) ?? false\n\nexport const isNavigationItemVisible = (item: NavigationTabsItem): boolean =>\n\titem.visible && (!item.dropdown || hasVisibleItems(item.dropdown))\n"],"names":[],"mappings":";;AAEA,MAAM,kBAAkB,CAAC,sBACxB,qDAAkB,KAAK,CAAC,YAAY,QAAQ,KAAK,CAAC,SAAS,KAAK,OAAO,OAAM;AAEjE,MAAA,0BAA0B,CAAC,SACvC,KAAK,YAAY,CAAC,KAAK,YAAY,gBAAgB,KAAK,QAAQ;;"}
1
+ {"version":3,"file":"harmony64.cjs","sources":["../src/components/Sidebar/Widgets/ProfileMenu/TeamMenuItem/TeamMenuItem.tsx"],"sourcesContent":["import { MenuItem, UserIcon } from '@lokalise/louis'\nimport { isFreePlan, isTrialPlan } from '../../../../../utils/billing/plan/plan'\nimport type { SidebarTeam } from '../../../types'\nimport { useProfileMenu } from '../ProfileMenuContext'\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 ProfileMenu component\n * as it requires access to the ProfileMenu context for current team\n * and plan information.\n */\nexport const TeamMenuItem = ({ team, onClick, hidePlanLabel }: TeamMenuItemProps) => {\n\tconst { currentTeam, planId } = useProfileMenu()\n\n\tconst contextTeam = team || currentTeam\n\n\tif (!contextTeam) {\n\t\treturn null\n\t}\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\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":["useProfileMenu","isFreePlan","isTrialPlan","MenuItem","jsxs","styles","jsx","UserIcon"],"mappings":";;;;;;;AAwCO,MAAM,eAAe,CAAC,EAAE,MAAM,SAAS,oBAAuC;AACpF,QAAM,EAAE,aAAa,OAAO,IAAIA,kCAAe;AAE/C,QAAM,cAAc,QAAQ;AAE5B,MAAI,CAAC,aAAa;AACV,WAAA;AAAA,EAAA;AAGF,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,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,6 +1,35 @@
1
- const hasVisibleItems = (dropdownSections) => (dropdownSections == null ? void 0 : dropdownSections.some((section) => section.some((item) => item.visible))) ?? false;
2
- const isNavigationItemVisible = (item) => item.visible && (!item.dropdown || hasVisibleItems(item.dropdown));
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { MenuItem, UserIcon } from "@lokalise/louis";
3
+ import { isFreePlan, isTrialPlan } from "./harmony7.mjs";
4
+ import { useProfileMenu } from "./harmony79.mjs";
5
+ import styles from "./harmony81.mjs";
6
+ const TeamMenuItem = ({ team, onClick, hidePlanLabel }) => {
7
+ const { currentTeam, planId } = useProfileMenu();
8
+ const contextTeam = team || currentTeam;
9
+ if (!contextTeam) {
10
+ return null;
11
+ }
12
+ const planLabel = isFreePlan(planId) ? "Free" : isTrialPlan(planId) ? "Trial" : void 0;
13
+ const WrapperNode = onClick ? MenuItem : "div";
14
+ return /* @__PURE__ */ jsxs(
15
+ WrapperNode,
16
+ {
17
+ className: styles.wrapper,
18
+ ...onClick && { onClick: () => onClick(contextTeam) },
19
+ children: [
20
+ 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" }) }),
21
+ /* @__PURE__ */ jsxs("div", { className: styles.teamDetails, children: [
22
+ /* @__PURE__ */ jsxs("div", { className: styles.planWrapper, children: [
23
+ /* @__PURE__ */ jsx("span", { title: contextTeam.name, className: styles.teamName, children: contextTeam.name }),
24
+ planLabel && !hidePlanLabel && /* @__PURE__ */ jsx("span", { className: styles.teamName, children: planLabel })
25
+ ] }),
26
+ /* @__PURE__ */ jsx("span", { className: styles.membership, children: contextTeam.role })
27
+ ] })
28
+ ]
29
+ }
30
+ );
31
+ };
3
32
  export {
4
- isNavigationItemVisible
33
+ TeamMenuItem
5
34
  };
6
35
  //# sourceMappingURL=harmony64.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"harmony64.mjs","sources":["../src/components/NavigationPanel/components/NavigationTabs/helpers.ts"],"sourcesContent":["import type { DropdownItem, NavigationTabsItem } from '../../types/navigation'\n\nconst hasVisibleItems = (dropdownSections?: DropdownItem[][]): boolean =>\n\tdropdownSections?.some((section) => section.some((item) => item.visible)) ?? false\n\nexport const isNavigationItemVisible = (item: NavigationTabsItem): boolean =>\n\titem.visible && (!item.dropdown || hasVisibleItems(item.dropdown))\n"],"names":[],"mappings":"AAEA,MAAM,kBAAkB,CAAC,sBACxB,qDAAkB,KAAK,CAAC,YAAY,QAAQ,KAAK,CAAC,SAAS,KAAK,OAAO,OAAM;AAEjE,MAAA,0BAA0B,CAAC,SACvC,KAAK,YAAY,CAAC,KAAK,YAAY,gBAAgB,KAAK,QAAQ;"}
1
+ {"version":3,"file":"harmony64.mjs","sources":["../src/components/Sidebar/Widgets/ProfileMenu/TeamMenuItem/TeamMenuItem.tsx"],"sourcesContent":["import { MenuItem, UserIcon } from '@lokalise/louis'\nimport { isFreePlan, isTrialPlan } from '../../../../../utils/billing/plan/plan'\nimport type { SidebarTeam } from '../../../types'\nimport { useProfileMenu } from '../ProfileMenuContext'\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 ProfileMenu component\n * as it requires access to the ProfileMenu context for current team\n * and plan information.\n */\nexport const TeamMenuItem = ({ team, onClick, hidePlanLabel }: TeamMenuItemProps) => {\n\tconst { currentTeam, planId } = useProfileMenu()\n\n\tconst contextTeam = team || currentTeam\n\n\tif (!contextTeam) {\n\t\treturn null\n\t}\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\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":";;;;;AAwCO,MAAM,eAAe,CAAC,EAAE,MAAM,SAAS,oBAAuC;AACpF,QAAM,EAAE,aAAa,OAAO,IAAI,eAAe;AAE/C,QAAM,cAAc,QAAQ;AAE5B,MAAI,CAAC,aAAa;AACV,WAAA;AAAA,EAAA;AAGF,QAAA,YAAY,WAAW,MAAM,IAAI,SAAS,YAAY,MAAM,IAAI,UAAU;AAE1E,QAAA,cAAc,UAAU,WAAW;AAGxC,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,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;"}