@psnext/design-system 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (834) hide show
  1. package/README.md +103 -90
  2. package/dist/Header.cjs +890 -0
  3. package/dist/Header.cjs.map +1 -0
  4. package/dist/Header.js +798 -0
  5. package/dist/Header.js.map +1 -0
  6. package/dist/Icon.cjs +1969 -0
  7. package/dist/Icon.cjs.map +1 -0
  8. package/dist/Icon.js +1956 -0
  9. package/dist/Icon.js.map +1 -0
  10. package/dist/Logo.cjs +813 -0
  11. package/dist/Logo.cjs.map +1 -0
  12. package/dist/Logo.js +808 -0
  13. package/dist/Logo.js.map +1 -0
  14. package/dist/Sidebar.cjs +562 -0
  15. package/dist/Sidebar.cjs.map +1 -0
  16. package/dist/Sidebar.js +416 -0
  17. package/dist/Sidebar.js.map +1 -0
  18. package/dist/chunk.cjs +28 -0
  19. package/dist/cn.cjs +15 -0
  20. package/dist/cn.cjs.map +1 -0
  21. package/dist/cn.js +10 -0
  22. package/dist/cn.js.map +1 -0
  23. package/dist/contexts/index.cjs +0 -60
  24. package/dist/contexts/index.d.cts +1 -23
  25. package/dist/contexts/index.d.ts +1 -23
  26. package/dist/contexts/index.js +1 -58
  27. package/dist/index.cjs +414 -272
  28. package/dist/index.d.cts +17 -1424
  29. package/dist/index.d.cts.map +1 -1
  30. package/dist/index.d.ts +17 -1424
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +72 -7
  33. package/dist/index10.d.cts +38 -0
  34. package/dist/index10.d.cts.map +1 -0
  35. package/dist/index10.d.ts +38 -0
  36. package/dist/index10.d.ts.map +1 -0
  37. package/dist/index11.d.cts +30 -0
  38. package/dist/index11.d.cts.map +1 -0
  39. package/dist/index11.d.ts +30 -0
  40. package/dist/index11.d.ts.map +1 -0
  41. package/dist/index12.d.cts +75 -0
  42. package/dist/index12.d.cts.map +1 -0
  43. package/dist/index12.d.ts +75 -0
  44. package/dist/index12.d.ts.map +1 -0
  45. package/dist/index13.d.cts +57 -0
  46. package/dist/index13.d.cts.map +1 -0
  47. package/dist/index13.d.ts +57 -0
  48. package/dist/index13.d.ts.map +1 -0
  49. package/dist/index14.d.cts +98 -0
  50. package/dist/index14.d.cts.map +1 -0
  51. package/dist/index14.d.ts +98 -0
  52. package/dist/index14.d.ts.map +1 -0
  53. package/dist/index15.d.cts +29 -0
  54. package/dist/index15.d.cts.map +1 -0
  55. package/dist/index15.d.ts +29 -0
  56. package/dist/index15.d.ts.map +1 -0
  57. package/dist/index16.d.cts +38 -0
  58. package/dist/index16.d.cts.map +1 -0
  59. package/dist/index16.d.ts +38 -0
  60. package/dist/index16.d.ts.map +1 -0
  61. package/dist/index17.d.cts +19 -0
  62. package/dist/index17.d.cts.map +1 -0
  63. package/dist/index17.d.ts +19 -0
  64. package/dist/index17.d.ts.map +1 -0
  65. package/dist/index18.d.cts +73 -0
  66. package/dist/index18.d.cts.map +1 -0
  67. package/dist/index18.d.ts +73 -0
  68. package/dist/index18.d.ts.map +1 -0
  69. package/dist/index19.d.cts +66 -0
  70. package/dist/index19.d.cts.map +1 -0
  71. package/dist/index19.d.ts +66 -0
  72. package/dist/index19.d.ts.map +1 -0
  73. package/dist/index2.d.cts +41 -13
  74. package/dist/index2.d.cts.map +1 -1
  75. package/dist/index2.d.ts +41 -13
  76. package/dist/index2.d.ts.map +1 -1
  77. package/dist/index20.d.cts +96 -0
  78. package/dist/index20.d.cts.map +1 -0
  79. package/dist/index20.d.ts +96 -0
  80. package/dist/index20.d.ts.map +1 -0
  81. package/dist/index21.d.cts +34 -0
  82. package/dist/index21.d.cts.map +1 -0
  83. package/dist/index21.d.ts +34 -0
  84. package/dist/index21.d.ts.map +1 -0
  85. package/dist/index22.d.cts +62 -0
  86. package/dist/index22.d.cts.map +1 -0
  87. package/dist/index22.d.ts +62 -0
  88. package/dist/index22.d.ts.map +1 -0
  89. package/dist/index23.d.cts +99 -0
  90. package/dist/index23.d.cts.map +1 -0
  91. package/dist/index23.d.ts +99 -0
  92. package/dist/index23.d.ts.map +1 -0
  93. package/dist/index24.d.cts +49 -0
  94. package/dist/index24.d.cts.map +1 -0
  95. package/dist/index24.d.ts +49 -0
  96. package/dist/index24.d.ts.map +1 -0
  97. package/dist/index25.d.cts +17 -0
  98. package/dist/index25.d.cts.map +1 -0
  99. package/dist/index25.d.ts +17 -0
  100. package/dist/index25.d.ts.map +1 -0
  101. package/dist/index26.d.cts +80 -0
  102. package/dist/index26.d.cts.map +1 -0
  103. package/dist/index26.d.ts +80 -0
  104. package/dist/index26.d.ts.map +1 -0
  105. package/dist/index27.d.cts +71 -0
  106. package/dist/index27.d.cts.map +1 -0
  107. package/dist/index27.d.ts +71 -0
  108. package/dist/index27.d.ts.map +1 -0
  109. package/dist/index28.d.cts +37 -0
  110. package/dist/index28.d.cts.map +1 -0
  111. package/dist/index28.d.ts +37 -0
  112. package/dist/index28.d.ts.map +1 -0
  113. package/dist/index29.d.cts +25 -0
  114. package/dist/index29.d.cts.map +1 -0
  115. package/dist/index29.d.ts +25 -0
  116. package/dist/index29.d.ts.map +1 -0
  117. package/dist/index3.d.cts +62 -0
  118. package/dist/index3.d.cts.map +1 -0
  119. package/dist/index3.d.ts +62 -0
  120. package/dist/index3.d.ts.map +1 -0
  121. package/dist/index30.d.cts +59 -0
  122. package/dist/index30.d.cts.map +1 -0
  123. package/dist/index30.d.ts +59 -0
  124. package/dist/index30.d.ts.map +1 -0
  125. package/dist/index31.d.cts +40 -0
  126. package/dist/index31.d.cts.map +1 -0
  127. package/dist/index31.d.ts +40 -0
  128. package/dist/index31.d.ts.map +1 -0
  129. package/dist/index32.d.cts +23 -0
  130. package/dist/index32.d.cts.map +1 -0
  131. package/dist/index32.d.ts +23 -0
  132. package/dist/index32.d.ts.map +1 -0
  133. package/dist/index33.d.cts +55 -0
  134. package/dist/index33.d.cts.map +1 -0
  135. package/dist/index33.d.ts +55 -0
  136. package/dist/index33.d.ts.map +1 -0
  137. package/dist/index34.d.cts +43 -0
  138. package/dist/index34.d.cts.map +1 -0
  139. package/dist/index34.d.ts +43 -0
  140. package/dist/index34.d.ts.map +1 -0
  141. package/dist/index35.d.cts +77 -0
  142. package/dist/index35.d.cts.map +1 -0
  143. package/dist/index35.d.ts +77 -0
  144. package/dist/index35.d.ts.map +1 -0
  145. package/dist/index36.d.cts +19 -0
  146. package/dist/index36.d.cts.map +1 -0
  147. package/dist/index36.d.ts +19 -0
  148. package/dist/index36.d.ts.map +1 -0
  149. package/dist/index37.d.cts +29 -0
  150. package/dist/index37.d.cts.map +1 -0
  151. package/dist/index37.d.ts +29 -0
  152. package/dist/index37.d.ts.map +1 -0
  153. package/dist/index38.d.cts +20 -0
  154. package/dist/index38.d.cts.map +1 -0
  155. package/dist/index38.d.ts +20 -0
  156. package/dist/index38.d.ts.map +1 -0
  157. package/dist/index39.d.cts +105 -0
  158. package/dist/index39.d.cts.map +1 -0
  159. package/dist/index39.d.ts +105 -0
  160. package/dist/index39.d.ts.map +1 -0
  161. package/dist/index4.d.cts +11 -0
  162. package/dist/index4.d.cts.map +1 -0
  163. package/dist/index4.d.ts +11 -0
  164. package/dist/index4.d.ts.map +1 -0
  165. package/dist/index40.d.cts +22 -0
  166. package/dist/index40.d.cts.map +1 -0
  167. package/dist/index40.d.ts +22 -0
  168. package/dist/index40.d.ts.map +1 -0
  169. package/dist/index41.d.cts +56 -0
  170. package/dist/index41.d.cts.map +1 -0
  171. package/dist/index41.d.ts +56 -0
  172. package/dist/index41.d.ts.map +1 -0
  173. package/dist/index42.d.cts +45 -0
  174. package/dist/index42.d.cts.map +1 -0
  175. package/dist/index42.d.ts +45 -0
  176. package/dist/index42.d.ts.map +1 -0
  177. package/dist/index43.d.cts +96 -0
  178. package/dist/index43.d.cts.map +1 -0
  179. package/dist/index43.d.ts +96 -0
  180. package/dist/index43.d.ts.map +1 -0
  181. package/dist/index44.d.cts +48 -0
  182. package/dist/index44.d.cts.map +1 -0
  183. package/dist/index44.d.ts +48 -0
  184. package/dist/index44.d.ts.map +1 -0
  185. package/dist/index45.d.cts +28 -0
  186. package/dist/index45.d.cts.map +1 -0
  187. package/dist/index45.d.ts +28 -0
  188. package/dist/index45.d.ts.map +1 -0
  189. package/dist/index46.d.cts +41 -0
  190. package/dist/index46.d.cts.map +1 -0
  191. package/dist/index46.d.ts +41 -0
  192. package/dist/index46.d.ts.map +1 -0
  193. package/dist/index47.d.cts +25 -0
  194. package/dist/index47.d.cts.map +1 -0
  195. package/dist/index47.d.ts +25 -0
  196. package/dist/index47.d.ts.map +1 -0
  197. package/dist/index48.d.cts +21 -0
  198. package/dist/index48.d.cts.map +1 -0
  199. package/dist/index48.d.ts +21 -0
  200. package/dist/index48.d.ts.map +1 -0
  201. package/dist/index49.d.cts +69 -0
  202. package/dist/index49.d.cts.map +1 -0
  203. package/dist/index49.d.ts +69 -0
  204. package/dist/index49.d.ts.map +1 -0
  205. package/dist/index5.d.cts +45 -0
  206. package/dist/index5.d.cts.map +1 -0
  207. package/dist/index5.d.ts +45 -0
  208. package/dist/index5.d.ts.map +1 -0
  209. package/dist/index50.d.cts +63 -0
  210. package/dist/index50.d.cts.map +1 -0
  211. package/dist/index50.d.ts +63 -0
  212. package/dist/index50.d.ts.map +1 -0
  213. package/dist/index51.d.cts +31 -0
  214. package/dist/index51.d.cts.map +1 -0
  215. package/dist/index51.d.ts +31 -0
  216. package/dist/index51.d.ts.map +1 -0
  217. package/dist/index52.d.cts +209 -0
  218. package/dist/index52.d.cts.map +1 -0
  219. package/dist/index52.d.ts +209 -0
  220. package/dist/index52.d.ts.map +1 -0
  221. package/dist/index53.d.cts +26 -0
  222. package/dist/index53.d.cts.map +1 -0
  223. package/dist/index53.d.ts +26 -0
  224. package/dist/index53.d.ts.map +1 -0
  225. package/dist/index54.d.cts +28 -0
  226. package/dist/index54.d.cts.map +1 -0
  227. package/dist/index54.d.ts +28 -0
  228. package/dist/index54.d.ts.map +1 -0
  229. package/dist/index55.d.cts +25 -0
  230. package/dist/index55.d.cts.map +1 -0
  231. package/dist/index55.d.ts +25 -0
  232. package/dist/index55.d.ts.map +1 -0
  233. package/dist/index56.d.cts +12 -0
  234. package/dist/index56.d.cts.map +1 -0
  235. package/dist/index56.d.ts +12 -0
  236. package/dist/index56.d.ts.map +1 -0
  237. package/dist/index57.d.cts +50 -0
  238. package/dist/index57.d.cts.map +1 -0
  239. package/dist/index57.d.ts +50 -0
  240. package/dist/index57.d.ts.map +1 -0
  241. package/dist/index58.d.cts +51 -0
  242. package/dist/index58.d.cts.map +1 -0
  243. package/dist/index58.d.ts +51 -0
  244. package/dist/index58.d.ts.map +1 -0
  245. package/dist/index59.d.cts +58 -0
  246. package/dist/index59.d.cts.map +1 -0
  247. package/dist/index59.d.ts +58 -0
  248. package/dist/index59.d.ts.map +1 -0
  249. package/dist/index6.d.cts +26 -0
  250. package/dist/index6.d.cts.map +1 -0
  251. package/dist/index6.d.ts +26 -0
  252. package/dist/index6.d.ts.map +1 -0
  253. package/dist/index60.d.cts +45 -0
  254. package/dist/index60.d.cts.map +1 -0
  255. package/dist/index60.d.ts +45 -0
  256. package/dist/index60.d.ts.map +1 -0
  257. package/dist/index61.d.cts +21 -0
  258. package/dist/index61.d.cts.map +1 -0
  259. package/dist/index61.d.ts +21 -0
  260. package/dist/index61.d.ts.map +1 -0
  261. package/dist/index62.d.cts +45 -0
  262. package/dist/index62.d.cts.map +1 -0
  263. package/dist/index62.d.ts +45 -0
  264. package/dist/index62.d.ts.map +1 -0
  265. package/dist/index63.d.cts +23 -0
  266. package/dist/index63.d.cts.map +1 -0
  267. package/dist/index63.d.ts +23 -0
  268. package/dist/index63.d.ts.map +1 -0
  269. package/dist/index64.d.cts +48 -0
  270. package/dist/index64.d.cts.map +1 -0
  271. package/dist/index64.d.ts +48 -0
  272. package/dist/index64.d.ts.map +1 -0
  273. package/dist/index65.d.cts +25 -0
  274. package/dist/index65.d.cts.map +1 -0
  275. package/dist/index65.d.ts +25 -0
  276. package/dist/index65.d.ts.map +1 -0
  277. package/dist/index66.d.cts +19 -0
  278. package/dist/index66.d.cts.map +1 -0
  279. package/dist/index66.d.ts +19 -0
  280. package/dist/index66.d.ts.map +1 -0
  281. package/dist/index67.d.cts +37 -0
  282. package/dist/index67.d.cts.map +1 -0
  283. package/dist/index67.d.ts +37 -0
  284. package/dist/index67.d.ts.map +1 -0
  285. package/dist/index68.d.cts +36 -0
  286. package/dist/index68.d.cts.map +1 -0
  287. package/dist/index68.d.ts +36 -0
  288. package/dist/index68.d.ts.map +1 -0
  289. package/dist/index69.d.cts +69 -0
  290. package/dist/index69.d.ts +69 -0
  291. package/dist/index7.d.cts +46 -0
  292. package/dist/index7.d.cts.map +1 -0
  293. package/dist/index7.d.ts +46 -0
  294. package/dist/index7.d.ts.map +1 -0
  295. package/dist/index70.d.cts +242 -0
  296. package/dist/index70.d.cts.map +1 -0
  297. package/dist/index70.d.ts +242 -0
  298. package/dist/index70.d.ts.map +1 -0
  299. package/dist/index8.d.cts +26 -0
  300. package/dist/index8.d.cts.map +1 -0
  301. package/dist/index8.d.ts +26 -0
  302. package/dist/index8.d.ts.map +1 -0
  303. package/dist/index9.d.cts +20 -0
  304. package/dist/index9.d.cts.map +1 -0
  305. package/dist/index9.d.ts +20 -0
  306. package/dist/index9.d.ts.map +1 -0
  307. package/dist/layouts/Container/index.cjs +39 -0
  308. package/dist/layouts/Container/index.cjs.map +1 -0
  309. package/dist/layouts/Container/index.d.cts +2 -0
  310. package/dist/layouts/Container/index.d.ts +2 -0
  311. package/dist/layouts/Container/index.js +38 -0
  312. package/dist/layouts/Container/index.js.map +1 -0
  313. package/dist/layouts/PageBackground/index.cjs +22 -0
  314. package/dist/layouts/PageBackground/index.cjs.map +1 -0
  315. package/dist/layouts/PageBackground/index.d.cts +2 -0
  316. package/dist/layouts/PageBackground/index.d.ts +2 -0
  317. package/dist/layouts/PageBackground/index.js +21 -0
  318. package/dist/layouts/PageBackground/index.js.map +1 -0
  319. package/dist/layouts/Stack/index.cjs +56 -0
  320. package/dist/layouts/Stack/index.cjs.map +1 -0
  321. package/dist/layouts/Stack/index.d.cts +2 -0
  322. package/dist/layouts/Stack/index.d.ts +2 -0
  323. package/dist/layouts/Stack/index.js +55 -0
  324. package/dist/layouts/Stack/index.js.map +1 -0
  325. package/dist/layouts/TwoColumn/index.cjs +51 -0
  326. package/dist/layouts/TwoColumn/index.cjs.map +1 -0
  327. package/dist/layouts/TwoColumn/index.d.cts +2 -0
  328. package/dist/layouts/TwoColumn/index.d.ts +2 -0
  329. package/dist/layouts/TwoColumn/index.js +48 -0
  330. package/dist/layouts/TwoColumn/index.js.map +1 -0
  331. package/dist/layouts/index.cjs +13 -12
  332. package/dist/layouts/index.d.cts +5 -133
  333. package/dist/layouts/index.d.ts +5 -133
  334. package/dist/layouts/index.js +5 -2
  335. package/dist/patterns/DataTable/index.cjs +114 -0
  336. package/dist/patterns/DataTable/index.cjs.map +1 -0
  337. package/dist/patterns/DataTable/index.d.cts +43 -0
  338. package/dist/patterns/DataTable/index.d.cts.map +1 -0
  339. package/dist/patterns/DataTable/index.d.ts +43 -0
  340. package/dist/patterns/DataTable/index.d.ts.map +1 -0
  341. package/dist/patterns/DataTable/index.js +110 -0
  342. package/dist/patterns/DataTable/index.js.map +1 -0
  343. package/dist/patterns/Footer/index.cjs +76 -0
  344. package/dist/patterns/Footer/index.cjs.map +1 -0
  345. package/dist/patterns/Footer/index.d.cts +54 -0
  346. package/dist/patterns/Footer/index.d.cts.map +1 -0
  347. package/dist/patterns/Footer/index.d.ts +54 -0
  348. package/dist/patterns/Footer/index.d.ts.map +1 -0
  349. package/dist/patterns/Footer/index.js +70 -0
  350. package/dist/patterns/Footer/index.js.map +1 -0
  351. package/dist/patterns/Header/index.cjs +17 -0
  352. package/dist/patterns/Header/index.d.cts +2 -0
  353. package/dist/patterns/Header/index.d.ts +2 -0
  354. package/dist/patterns/Header/index.js +2 -0
  355. package/dist/patterns/MediaObject/index.cjs +108 -0
  356. package/dist/patterns/MediaObject/index.cjs.map +1 -0
  357. package/dist/patterns/MediaObject/index.d.cts +71 -0
  358. package/dist/patterns/MediaObject/index.d.cts.map +1 -0
  359. package/dist/patterns/MediaObject/index.d.ts +71 -0
  360. package/dist/patterns/MediaObject/index.d.ts.map +1 -0
  361. package/dist/patterns/MediaObject/index.js +99 -0
  362. package/dist/patterns/MediaObject/index.js.map +1 -0
  363. package/dist/patterns/SectionCard/index.cjs +35 -0
  364. package/dist/patterns/SectionCard/index.cjs.map +1 -0
  365. package/dist/patterns/SectionCard/index.d.cts +21 -0
  366. package/dist/patterns/SectionCard/index.d.cts.map +1 -0
  367. package/dist/patterns/SectionCard/index.d.ts +21 -0
  368. package/dist/patterns/SectionCard/index.d.ts.map +1 -0
  369. package/dist/patterns/SectionCard/index.js +34 -0
  370. package/dist/patterns/SectionCard/index.js.map +1 -0
  371. package/dist/patterns/SectionHeading/index.cjs +44 -0
  372. package/dist/patterns/SectionHeading/index.cjs.map +1 -0
  373. package/dist/patterns/SectionHeading/index.d.cts +37 -0
  374. package/dist/patterns/SectionHeading/index.d.cts.map +1 -0
  375. package/dist/patterns/SectionHeading/index.d.ts +37 -0
  376. package/dist/patterns/SectionHeading/index.d.ts.map +1 -0
  377. package/dist/patterns/SectionHeading/index.js +43 -0
  378. package/dist/patterns/SectionHeading/index.js.map +1 -0
  379. package/dist/patterns/index.cjs +40 -7374
  380. package/dist/patterns/index.d.cts +7 -418
  381. package/dist/patterns/index.d.ts +7 -418
  382. package/dist/patterns/index.js +7 -7344
  383. package/dist/primitives/Accordion/index.cjs +54 -0
  384. package/dist/primitives/Accordion/index.cjs.map +1 -0
  385. package/dist/primitives/Accordion/index.d.cts +2 -0
  386. package/dist/primitives/Accordion/index.d.ts +2 -0
  387. package/dist/primitives/Accordion/index.js +50 -0
  388. package/dist/primitives/Accordion/index.js.map +1 -0
  389. package/dist/primitives/Alert/index.cjs +61 -0
  390. package/dist/primitives/Alert/index.cjs.map +1 -0
  391. package/dist/primitives/Alert/index.d.cts +2 -0
  392. package/dist/primitives/Alert/index.d.ts +2 -0
  393. package/dist/primitives/Alert/index.js +57 -0
  394. package/dist/primitives/Alert/index.js.map +1 -0
  395. package/dist/primitives/AlertDialog/index.cjs +102 -0
  396. package/dist/primitives/AlertDialog/index.cjs.map +1 -0
  397. package/dist/primitives/AlertDialog/index.d.cts +2 -0
  398. package/dist/primitives/AlertDialog/index.d.ts +2 -0
  399. package/dist/primitives/AlertDialog/index.js +90 -0
  400. package/dist/primitives/AlertDialog/index.js.map +1 -0
  401. package/dist/primitives/AspectRatio/index.cjs +15 -0
  402. package/dist/primitives/AspectRatio/index.cjs.map +1 -0
  403. package/dist/primitives/AspectRatio/index.d.cts +2 -0
  404. package/dist/primitives/AspectRatio/index.d.ts +2 -0
  405. package/dist/primitives/AspectRatio/index.js +14 -0
  406. package/dist/primitives/AspectRatio/index.js.map +1 -0
  407. package/dist/primitives/Avatar/index.cjs +64 -0
  408. package/dist/primitives/Avatar/index.cjs.map +1 -0
  409. package/dist/primitives/Avatar/index.d.cts +2 -0
  410. package/dist/primitives/Avatar/index.d.ts +2 -0
  411. package/dist/primitives/Avatar/index.js +58 -0
  412. package/dist/primitives/Avatar/index.js.map +1 -0
  413. package/dist/primitives/Badge/index.cjs +44 -0
  414. package/dist/primitives/Badge/index.cjs.map +1 -0
  415. package/dist/primitives/Badge/index.d.cts +2 -0
  416. package/dist/primitives/Badge/index.d.ts +2 -0
  417. package/dist/primitives/Badge/index.js +43 -0
  418. package/dist/primitives/Badge/index.js.map +1 -0
  419. package/dist/primitives/Breadcrumb/index.cjs +82 -0
  420. package/dist/primitives/Breadcrumb/index.cjs.map +1 -0
  421. package/dist/primitives/Breadcrumb/index.d.cts +2 -0
  422. package/dist/primitives/Breadcrumb/index.d.ts +2 -0
  423. package/dist/primitives/Breadcrumb/index.js +75 -0
  424. package/dist/primitives/Breadcrumb/index.js.map +1 -0
  425. package/dist/primitives/Button/index.cjs +61 -0
  426. package/dist/primitives/Button/index.cjs.map +1 -0
  427. package/dist/primitives/Button/index.d.cts +2 -0
  428. package/dist/primitives/Button/index.d.ts +2 -0
  429. package/dist/primitives/Button/index.js +60 -0
  430. package/dist/primitives/Button/index.js.map +1 -0
  431. package/dist/primitives/ButtonGroup/index.cjs +46 -0
  432. package/dist/primitives/ButtonGroup/index.cjs.map +1 -0
  433. package/dist/primitives/ButtonGroup/index.d.cts +2 -0
  434. package/dist/primitives/ButtonGroup/index.d.ts +2 -0
  435. package/dist/primitives/ButtonGroup/index.js +43 -0
  436. package/dist/primitives/ButtonGroup/index.js.map +1 -0
  437. package/dist/primitives/Calendar/index.cjs +112 -0
  438. package/dist/primitives/Calendar/index.cjs.map +1 -0
  439. package/dist/primitives/Calendar/index.d.cts +2 -0
  440. package/dist/primitives/Calendar/index.d.ts +2 -0
  441. package/dist/primitives/Calendar/index.js +108 -0
  442. package/dist/primitives/Calendar/index.js.map +1 -0
  443. package/dist/primitives/Card/index.cjs +128 -0
  444. package/dist/primitives/Card/index.cjs.map +1 -0
  445. package/dist/primitives/Card/index.d.cts +2 -0
  446. package/dist/primitives/Card/index.d.ts +2 -0
  447. package/dist/primitives/Card/index.js +121 -0
  448. package/dist/primitives/Card/index.js.map +1 -0
  449. package/dist/primitives/Carousel/index.cjs +146 -0
  450. package/dist/primitives/Carousel/index.cjs.map +1 -0
  451. package/dist/primitives/Carousel/index.d.cts +2 -0
  452. package/dist/primitives/Carousel/index.d.ts +2 -0
  453. package/dist/primitives/Carousel/index.js +138 -0
  454. package/dist/primitives/Carousel/index.js.map +1 -0
  455. package/dist/primitives/Chart/index.cjs +162 -0
  456. package/dist/primitives/Chart/index.cjs.map +1 -0
  457. package/dist/primitives/Chart/index.d.cts +2 -0
  458. package/dist/primitives/Chart/index.d.ts +2 -0
  459. package/dist/primitives/Chart/index.js +153 -0
  460. package/dist/primitives/Chart/index.js.map +1 -0
  461. package/dist/primitives/Checkbox/index.cjs +53 -0
  462. package/dist/primitives/Checkbox/index.cjs.map +1 -0
  463. package/dist/primitives/Checkbox/index.d.cts +2 -0
  464. package/dist/primitives/Checkbox/index.d.ts +2 -0
  465. package/dist/primitives/Checkbox/index.js +51 -0
  466. package/dist/primitives/Checkbox/index.js.map +1 -0
  467. package/dist/primitives/CheckboxTree/index.cjs +106 -0
  468. package/dist/primitives/CheckboxTree/index.cjs.map +1 -0
  469. package/dist/primitives/CheckboxTree/index.d.cts +2 -0
  470. package/dist/primitives/CheckboxTree/index.d.ts +2 -0
  471. package/dist/primitives/CheckboxTree/index.js +103 -0
  472. package/dist/primitives/CheckboxTree/index.js.map +1 -0
  473. package/dist/primitives/Collapsible/index.cjs +31 -0
  474. package/dist/primitives/Collapsible/index.cjs.map +1 -0
  475. package/dist/primitives/Collapsible/index.d.cts +2 -0
  476. package/dist/primitives/Collapsible/index.d.ts +2 -0
  477. package/dist/primitives/Collapsible/index.js +28 -0
  478. package/dist/primitives/Collapsible/index.js.map +1 -0
  479. package/dist/primitives/Command/index.cjs +104 -0
  480. package/dist/primitives/Command/index.cjs.map +1 -0
  481. package/dist/primitives/Command/index.d.cts +2 -0
  482. package/dist/primitives/Command/index.d.ts +2 -0
  483. package/dist/primitives/Command/index.js +95 -0
  484. package/dist/primitives/Command/index.js.map +1 -0
  485. package/dist/primitives/ContextMenu/index.cjs +152 -0
  486. package/dist/primitives/ContextMenu/index.cjs.map +1 -0
  487. package/dist/primitives/ContextMenu/index.d.cts +2 -0
  488. package/dist/primitives/ContextMenu/index.d.ts +2 -0
  489. package/dist/primitives/ContextMenu/index.js +137 -0
  490. package/dist/primitives/ContextMenu/index.js.map +1 -0
  491. package/dist/primitives/Credits/index.cjs +39 -0
  492. package/dist/primitives/Credits/index.cjs.map +1 -0
  493. package/dist/primitives/Credits/index.d.cts +2 -0
  494. package/dist/primitives/Credits/index.d.ts +2 -0
  495. package/dist/primitives/Credits/index.js +38 -0
  496. package/dist/primitives/Credits/index.js.map +1 -0
  497. package/dist/primitives/Dialog/index.cjs +121 -0
  498. package/dist/primitives/Dialog/index.cjs.map +1 -0
  499. package/dist/primitives/Dialog/index.d.cts +2 -0
  500. package/dist/primitives/Dialog/index.d.ts +2 -0
  501. package/dist/primitives/Dialog/index.js +111 -0
  502. package/dist/primitives/Dialog/index.js.map +1 -0
  503. package/dist/primitives/Drawer/index.cjs +98 -0
  504. package/dist/primitives/Drawer/index.cjs.map +1 -0
  505. package/dist/primitives/Drawer/index.d.cts +2 -0
  506. package/dist/primitives/Drawer/index.d.ts +2 -0
  507. package/dist/primitives/Drawer/index.js +88 -0
  508. package/dist/primitives/Drawer/index.js.map +1 -0
  509. package/dist/primitives/DropdownMenu/index.cjs +153 -0
  510. package/dist/primitives/DropdownMenu/index.cjs.map +1 -0
  511. package/dist/primitives/DropdownMenu/index.d.cts +2 -0
  512. package/dist/primitives/DropdownMenu/index.d.ts +2 -0
  513. package/dist/primitives/DropdownMenu/index.js +138 -0
  514. package/dist/primitives/DropdownMenu/index.js.map +1 -0
  515. package/dist/primitives/Empty/index.cjs +84 -0
  516. package/dist/primitives/Empty/index.cjs.map +1 -0
  517. package/dist/primitives/Empty/index.d.cts +2 -0
  518. package/dist/primitives/Empty/index.d.ts +2 -0
  519. package/dist/primitives/Empty/index.js +77 -0
  520. package/dist/primitives/Empty/index.js.map +1 -0
  521. package/dist/primitives/Field/index.cjs +139 -0
  522. package/dist/primitives/Field/index.cjs.map +1 -0
  523. package/dist/primitives/Field/index.d.cts +2 -0
  524. package/dist/primitives/Field/index.d.ts +2 -0
  525. package/dist/primitives/Field/index.js +129 -0
  526. package/dist/primitives/Field/index.js.map +1 -0
  527. package/dist/primitives/Form/index.cjs +104 -0
  528. package/dist/primitives/Form/index.cjs.map +1 -0
  529. package/dist/primitives/Form/index.d.cts +2 -0
  530. package/dist/primitives/Form/index.d.ts +2 -0
  531. package/dist/primitives/Form/index.js +94 -0
  532. package/dist/primitives/Form/index.js.map +1 -0
  533. package/dist/primitives/Heading/index.cjs +53 -0
  534. package/dist/primitives/Heading/index.cjs.map +1 -0
  535. package/dist/primitives/Heading/index.d.cts +2 -0
  536. package/dist/primitives/Heading/index.d.ts +2 -0
  537. package/dist/primitives/Heading/index.js +52 -0
  538. package/dist/primitives/Heading/index.js.map +1 -0
  539. package/dist/primitives/HoverCard/index.cjs +38 -0
  540. package/dist/primitives/HoverCard/index.cjs.map +1 -0
  541. package/dist/primitives/HoverCard/index.d.cts +2 -0
  542. package/dist/primitives/HoverCard/index.d.ts +2 -0
  543. package/dist/primitives/HoverCard/index.js +35 -0
  544. package/dist/primitives/HoverCard/index.js.map +1 -0
  545. package/dist/primitives/Icon/index.cjs +4 -0
  546. package/dist/primitives/Icon/index.d.cts +2 -0
  547. package/dist/primitives/Icon/index.d.ts +2 -0
  548. package/dist/primitives/Icon/index.js +2 -0
  549. package/dist/primitives/InfoBanner/index.cjs +79 -0
  550. package/dist/primitives/InfoBanner/index.cjs.map +1 -0
  551. package/dist/primitives/InfoBanner/index.d.cts +2 -0
  552. package/dist/primitives/InfoBanner/index.d.ts +2 -0
  553. package/dist/primitives/InfoBanner/index.js +78 -0
  554. package/dist/primitives/InfoBanner/index.js.map +1 -0
  555. package/dist/primitives/Input/index.cjs +39 -0
  556. package/dist/primitives/Input/index.cjs.map +1 -0
  557. package/dist/primitives/Input/index.d.cts +2 -0
  558. package/dist/primitives/Input/index.d.ts +2 -0
  559. package/dist/primitives/Input/index.js +38 -0
  560. package/dist/primitives/Input/index.js.map +1 -0
  561. package/dist/primitives/InputGroup/index.cjs +91 -0
  562. package/dist/primitives/InputGroup/index.cjs.map +1 -0
  563. package/dist/primitives/InputGroup/index.d.cts +2 -0
  564. package/dist/primitives/InputGroup/index.d.ts +2 -0
  565. package/dist/primitives/InputGroup/index.js +85 -0
  566. package/dist/primitives/InputGroup/index.js.map +1 -0
  567. package/dist/primitives/InputOtp/index.cjs +80 -0
  568. package/dist/primitives/InputOtp/index.cjs.map +1 -0
  569. package/dist/primitives/InputOtp/index.d.cts +2 -0
  570. package/dist/primitives/InputOtp/index.d.ts +2 -0
  571. package/dist/primitives/InputOtp/index.js +74 -0
  572. package/dist/primitives/InputOtp/index.js.map +1 -0
  573. package/dist/primitives/Item/index.cjs +137 -0
  574. package/dist/primitives/Item/index.cjs.map +1 -0
  575. package/dist/primitives/Item/index.d.cts +2 -0
  576. package/dist/primitives/Item/index.d.ts +2 -0
  577. package/dist/primitives/Item/index.js +127 -0
  578. package/dist/primitives/Item/index.js.map +1 -0
  579. package/dist/primitives/Kbd/index.cjs +25 -0
  580. package/dist/primitives/Kbd/index.cjs.map +1 -0
  581. package/dist/primitives/Kbd/index.d.cts +2 -0
  582. package/dist/primitives/Kbd/index.d.ts +2 -0
  583. package/dist/primitives/Kbd/index.js +23 -0
  584. package/dist/primitives/Kbd/index.js.map +1 -0
  585. package/dist/primitives/Label/index.cjs +18 -0
  586. package/dist/primitives/Label/index.cjs.map +1 -0
  587. package/dist/primitives/Label/index.d.cts +2 -0
  588. package/dist/primitives/Label/index.d.ts +2 -0
  589. package/dist/primitives/Label/index.js +17 -0
  590. package/dist/primitives/Label/index.js.map +1 -0
  591. package/dist/primitives/Link/index.cjs +38 -0
  592. package/dist/primitives/Link/index.cjs.map +1 -0
  593. package/dist/primitives/Link/index.d.cts +2 -0
  594. package/dist/primitives/Link/index.d.ts +2 -0
  595. package/dist/primitives/Link/index.js +37 -0
  596. package/dist/primitives/Link/index.js.map +1 -0
  597. package/dist/primitives/Logo/index.cjs +3 -0
  598. package/dist/primitives/Logo/index.d.cts +2 -0
  599. package/dist/primitives/Logo/index.d.ts +2 -0
  600. package/dist/primitives/Logo/index.js +2 -0
  601. package/dist/primitives/Menubar/index.cjs +165 -0
  602. package/dist/primitives/Menubar/index.cjs.map +1 -0
  603. package/dist/primitives/Menubar/index.d.cts +2 -0
  604. package/dist/primitives/Menubar/index.d.ts +2 -0
  605. package/dist/primitives/Menubar/index.js +149 -0
  606. package/dist/primitives/Menubar/index.js.map +1 -0
  607. package/dist/primitives/NativeSelect/index.cjs +40 -0
  608. package/dist/primitives/NativeSelect/index.cjs.map +1 -0
  609. package/dist/primitives/NativeSelect/index.d.cts +2 -0
  610. package/dist/primitives/NativeSelect/index.d.ts +2 -0
  611. package/dist/primitives/NativeSelect/index.js +39 -0
  612. package/dist/primitives/NativeSelect/index.js.map +1 -0
  613. package/dist/primitives/NavRail/index.cjs +195 -0
  614. package/dist/primitives/NavRail/index.cjs.map +1 -0
  615. package/dist/primitives/NavRail/index.d.cts +2 -0
  616. package/dist/primitives/NavRail/index.d.ts +2 -0
  617. package/dist/primitives/NavRail/index.js +185 -0
  618. package/dist/primitives/NavRail/index.js.map +1 -0
  619. package/dist/primitives/NavigationMenu/index.cjs +98 -0
  620. package/dist/primitives/NavigationMenu/index.cjs.map +1 -0
  621. package/dist/primitives/NavigationMenu/index.d.cts +2 -0
  622. package/dist/primitives/NavigationMenu/index.d.ts +2 -0
  623. package/dist/primitives/NavigationMenu/index.js +89 -0
  624. package/dist/primitives/NavigationMenu/index.js.map +1 -0
  625. package/dist/primitives/Pagination/index.cjs +93 -0
  626. package/dist/primitives/Pagination/index.cjs.map +1 -0
  627. package/dist/primitives/Pagination/index.d.cts +2 -0
  628. package/dist/primitives/Pagination/index.d.ts +2 -0
  629. package/dist/primitives/Pagination/index.js +86 -0
  630. package/dist/primitives/Pagination/index.js.map +1 -0
  631. package/dist/primitives/Popover/index.cjs +70 -0
  632. package/dist/primitives/Popover/index.cjs.map +1 -0
  633. package/dist/primitives/Popover/index.d.cts +2 -0
  634. package/dist/primitives/Popover/index.d.ts +2 -0
  635. package/dist/primitives/Popover/index.js +63 -0
  636. package/dist/primitives/Popover/index.js.map +1 -0
  637. package/dist/primitives/Progress/index.cjs +44 -0
  638. package/dist/primitives/Progress/index.cjs.map +1 -0
  639. package/dist/primitives/Progress/index.d.cts +2 -0
  640. package/dist/primitives/Progress/index.d.ts +2 -0
  641. package/dist/primitives/Progress/index.js +43 -0
  642. package/dist/primitives/Progress/index.js.map +1 -0
  643. package/dist/primitives/RadioGroup/index.cjs +65 -0
  644. package/dist/primitives/RadioGroup/index.cjs.map +1 -0
  645. package/dist/primitives/RadioGroup/index.d.cts +2 -0
  646. package/dist/primitives/RadioGroup/index.d.ts +2 -0
  647. package/dist/primitives/RadioGroup/index.js +62 -0
  648. package/dist/primitives/RadioGroup/index.js.map +1 -0
  649. package/dist/primitives/Resizable/index.cjs +41 -0
  650. package/dist/primitives/Resizable/index.cjs.map +1 -0
  651. package/dist/primitives/Resizable/index.d.cts +2 -0
  652. package/dist/primitives/Resizable/index.d.ts +2 -0
  653. package/dist/primitives/Resizable/index.js +36 -0
  654. package/dist/primitives/Resizable/index.js.map +1 -0
  655. package/dist/primitives/ScrollArea/index.cjs +40 -0
  656. package/dist/primitives/ScrollArea/index.cjs.map +1 -0
  657. package/dist/primitives/ScrollArea/index.d.cts +2 -0
  658. package/dist/primitives/ScrollArea/index.d.ts +2 -0
  659. package/dist/primitives/ScrollArea/index.js +38 -0
  660. package/dist/primitives/ScrollArea/index.js.map +1 -0
  661. package/dist/primitives/Select/index.cjs +126 -0
  662. package/dist/primitives/Select/index.cjs.map +1 -0
  663. package/dist/primitives/Select/index.d.cts +2 -0
  664. package/dist/primitives/Select/index.d.ts +2 -0
  665. package/dist/primitives/Select/index.js +116 -0
  666. package/dist/primitives/Select/index.js.map +1 -0
  667. package/dist/primitives/Separator/index.cjs +25 -0
  668. package/dist/primitives/Separator/index.cjs.map +1 -0
  669. package/dist/primitives/Separator/index.d.cts +2 -0
  670. package/dist/primitives/Separator/index.d.ts +2 -0
  671. package/dist/primitives/Separator/index.js +24 -0
  672. package/dist/primitives/Separator/index.js.map +1 -0
  673. package/dist/primitives/Sheet/index.cjs +107 -0
  674. package/dist/primitives/Sheet/index.cjs.map +1 -0
  675. package/dist/primitives/Sheet/index.d.cts +2 -0
  676. package/dist/primitives/Sheet/index.d.ts +2 -0
  677. package/dist/primitives/Sheet/index.js +99 -0
  678. package/dist/primitives/Sheet/index.js.map +1 -0
  679. package/dist/primitives/Sidebar/index.cjs +26 -0
  680. package/dist/primitives/Sidebar/index.d.cts +2 -0
  681. package/dist/primitives/Sidebar/index.d.ts +2 -0
  682. package/dist/primitives/Sidebar/index.js +2 -0
  683. package/dist/primitives/Skeleton/index.cjs +43 -0
  684. package/dist/primitives/Skeleton/index.cjs.map +1 -0
  685. package/dist/primitives/Skeleton/index.d.cts +2 -0
  686. package/dist/primitives/Skeleton/index.d.ts +2 -0
  687. package/dist/primitives/Skeleton/index.js +39 -0
  688. package/dist/primitives/Skeleton/index.js.map +1 -0
  689. package/dist/primitives/Slider/index.cjs +46 -0
  690. package/dist/primitives/Slider/index.cjs.map +1 -0
  691. package/dist/primitives/Slider/index.d.cts +2 -0
  692. package/dist/primitives/Slider/index.d.ts +2 -0
  693. package/dist/primitives/Slider/index.js +43 -0
  694. package/dist/primitives/Slider/index.js.map +1 -0
  695. package/dist/primitives/Sonner/index.cjs +42 -0
  696. package/dist/primitives/Sonner/index.cjs.map +1 -0
  697. package/dist/primitives/Sonner/index.d.cts +2 -0
  698. package/dist/primitives/Sonner/index.d.ts +2 -0
  699. package/dist/primitives/Sonner/index.js +41 -0
  700. package/dist/primitives/Sonner/index.js.map +1 -0
  701. package/dist/primitives/Spinner/index.cjs +19 -0
  702. package/dist/primitives/Spinner/index.cjs.map +1 -0
  703. package/dist/primitives/Spinner/index.d.cts +2 -0
  704. package/dist/primitives/Spinner/index.d.ts +2 -0
  705. package/dist/primitives/Spinner/index.js +18 -0
  706. package/dist/primitives/Spinner/index.js.map +1 -0
  707. package/dist/primitives/Switch/index.cjs +71 -0
  708. package/dist/primitives/Switch/index.cjs.map +1 -0
  709. package/dist/primitives/Switch/index.d.cts +2 -0
  710. package/dist/primitives/Switch/index.d.ts +2 -0
  711. package/dist/primitives/Switch/index.js +68 -0
  712. package/dist/primitives/Switch/index.js.map +1 -0
  713. package/dist/primitives/Table/index.cjs +84 -0
  714. package/dist/primitives/Table/index.cjs.map +1 -0
  715. package/dist/primitives/Table/index.d.cts +2 -0
  716. package/dist/primitives/Table/index.d.ts +2 -0
  717. package/dist/primitives/Table/index.js +76 -0
  718. package/dist/primitives/Table/index.js.map +1 -0
  719. package/dist/primitives/Tabs/index.cjs +267 -0
  720. package/dist/primitives/Tabs/index.cjs.map +1 -0
  721. package/dist/primitives/Tabs/index.d.cts +2 -0
  722. package/dist/primitives/Tabs/index.d.ts +2 -0
  723. package/dist/primitives/Tabs/index.js +258 -0
  724. package/dist/primitives/Tabs/index.js.map +1 -0
  725. package/dist/primitives/Text/index.cjs +64 -0
  726. package/dist/primitives/Text/index.cjs.map +1 -0
  727. package/dist/primitives/Text/index.d.cts +2 -0
  728. package/dist/primitives/Text/index.d.ts +2 -0
  729. package/dist/primitives/Text/index.js +63 -0
  730. package/dist/primitives/Text/index.js.map +1 -0
  731. package/dist/primitives/Textarea/index.cjs +24 -0
  732. package/dist/primitives/Textarea/index.cjs.map +1 -0
  733. package/dist/primitives/Textarea/index.d.cts +2 -0
  734. package/dist/primitives/Textarea/index.d.ts +2 -0
  735. package/dist/primitives/Textarea/index.js +23 -0
  736. package/dist/primitives/Textarea/index.js.map +1 -0
  737. package/dist/primitives/ThemeProvider/index.cjs +93 -0
  738. package/dist/primitives/ThemeProvider/index.cjs.map +1 -0
  739. package/dist/primitives/ThemeProvider/index.d.cts +2 -0
  740. package/dist/primitives/ThemeProvider/index.d.ts +2 -0
  741. package/dist/primitives/ThemeProvider/index.js +88 -0
  742. package/dist/primitives/ThemeProvider/index.js.map +1 -0
  743. package/dist/primitives/Toggle/index.cjs +59 -0
  744. package/dist/primitives/Toggle/index.cjs.map +1 -0
  745. package/dist/primitives/Toggle/index.d.cts +2 -0
  746. package/dist/primitives/Toggle/index.d.ts +2 -0
  747. package/dist/primitives/Toggle/index.js +58 -0
  748. package/dist/primitives/Toggle/index.js.map +1 -0
  749. package/dist/primitives/ToggleGroup/index.cjs +65 -0
  750. package/dist/primitives/ToggleGroup/index.cjs.map +1 -0
  751. package/dist/primitives/ToggleGroup/index.d.cts +2 -0
  752. package/dist/primitives/ToggleGroup/index.d.ts +2 -0
  753. package/dist/primitives/ToggleGroup/index.js +61 -0
  754. package/dist/primitives/ToggleGroup/index.js.map +1 -0
  755. package/dist/primitives/Tooltip/index.cjs +47 -0
  756. package/dist/primitives/Tooltip/index.cjs.map +1 -0
  757. package/dist/primitives/Tooltip/index.d.cts +2 -0
  758. package/dist/primitives/Tooltip/index.d.ts +2 -0
  759. package/dist/primitives/Tooltip/index.js +43 -0
  760. package/dist/primitives/Tooltip/index.js.map +1 -0
  761. package/dist/primitives/index.cjs +398 -255
  762. package/dist/primitives/index.d.cts +65 -2
  763. package/dist/primitives/index.d.ts +65 -2
  764. package/dist/primitives/index.js +65 -5
  765. package/dist/styles/base.css +113 -0
  766. package/dist/styles/glass.css +75 -0
  767. package/dist/styles/index.css +43 -23
  768. package/dist/styles/semantic.css +167 -0
  769. package/dist/styles/theme.css +54 -24
  770. package/dist/styles/tokens/alpha.css +39 -0
  771. package/dist/styles/tokens/border-radius.css +17 -0
  772. package/dist/styles/tokens/chart-colors-dark.css +18 -0
  773. package/dist/styles/tokens/chart-colors-light.css +18 -0
  774. package/dist/styles/tokens/colors.css +251 -0
  775. package/dist/styles/tokens/mode-dark.css +101 -0
  776. package/dist/styles/tokens/mode-light.css +101 -0
  777. package/dist/styles/tokens/shadows.css +14 -0
  778. package/dist/styles/tokens/spacing.css +44 -0
  779. package/dist/styles/tokens/theme-bodhi.css +35 -0
  780. package/dist/styles/tokens/theme-slingshot.css +35 -0
  781. package/dist/styles/tokens/theme-sustain.css +35 -0
  782. package/dist/styles/tokens/typography.css +83 -0
  783. package/package.json +33 -40
  784. package/dist/AiChatPanel.cjs +0 -1603
  785. package/dist/AiChatPanel.cjs.map +0 -1
  786. package/dist/AiChatPanel.js +0 -1526
  787. package/dist/AiChatPanel.js.map +0 -1
  788. package/dist/BodhiLogo.cjs +0 -240
  789. package/dist/BodhiLogo.cjs.map +0 -1
  790. package/dist/BodhiLogo.js +0 -194
  791. package/dist/BodhiLogo.js.map +0 -1
  792. package/dist/Skeleton.cjs +0 -19
  793. package/dist/Skeleton.cjs.map +0 -1
  794. package/dist/Skeleton.js +0 -14
  795. package/dist/Skeleton.js.map +0 -1
  796. package/dist/SustainLogo.cjs +0 -415
  797. package/dist/SustainLogo.cjs.map +0 -1
  798. package/dist/SustainLogo.js +0 -378
  799. package/dist/SustainLogo.js.map +0 -1
  800. package/dist/contexts/index.cjs.map +0 -1
  801. package/dist/contexts/index.d.cts.map +0 -1
  802. package/dist/contexts/index.d.ts.map +0 -1
  803. package/dist/contexts/index.js.map +0 -1
  804. package/dist/layouts/index.d.cts.map +0 -1
  805. package/dist/layouts/index.d.ts.map +0 -1
  806. package/dist/layouts.cjs +0 -3245
  807. package/dist/layouts.cjs.map +0 -1
  808. package/dist/layouts.js +0 -3180
  809. package/dist/layouts.js.map +0 -1
  810. package/dist/patterns/index.cjs.map +0 -1
  811. package/dist/patterns/index.d.cts.map +0 -1
  812. package/dist/patterns/index.d.ts.map +0 -1
  813. package/dist/patterns/index.js.map +0 -1
  814. package/dist/primitives.cjs +0 -4292
  815. package/dist/primitives.cjs.map +0 -1
  816. package/dist/primitives.js +0 -2807
  817. package/dist/primitives.js.map +0 -1
  818. package/dist/styles/base/colors.css +0 -300
  819. package/dist/styles/base/component-tokens.css +0 -240
  820. package/dist/styles/base/elevation.css +0 -7
  821. package/dist/styles/base/fonts.css +0 -14
  822. package/dist/styles/base/global.css +0 -305
  823. package/dist/styles/base/radius.css +0 -22
  824. package/dist/styles/base/semantic-aliases.css +0 -53
  825. package/dist/styles/base/spacing.css +0 -33
  826. package/dist/styles/base/typography.css +0 -48
  827. package/dist/styles/generated/bodhi-vars.css +0 -34
  828. package/dist/styles/generated/dark.css +0 -87
  829. package/dist/styles/generated/light.css +0 -87
  830. package/dist/styles/generated/slingshot-vars.css +0 -34
  831. package/dist/styles/generated/sustain-vars.css +0 -34
  832. package/dist/styles/themes/bodhi.css +0 -166
  833. package/dist/styles/themes/slingshot.css +0 -144
  834. package/dist/styles/themes/sustain.css +0 -130
@@ -1 +0,0 @@
1
- {"version":3,"file":"layouts.cjs","names":["motion","BodhiLogo","SlingshotLogo","SustainLogo","ChevronDown","ChevronRight","Check","Sun","Moon","Zap","User","LogOut","ProductSwitcher","AccountProjectSwitcher","Sun","Moon","Bell","User","LogOut","Menu","LayoutGrid","Settings","FileText","BookOpen","Home","FolderOpen","GitBranch","Bot","Link","Activity","HelpCircle","MessageSquare","svgPaths","AlertCircle","BarChart3","LayoutDashboard","Leaf","Database","Target","Briefcase","ChevronDown","ChevronRight","Tooltip","TooltipTrigger","TooltipContent","ArrowLeft","Monitor","Tablet","User","Sun","Moon","defaultSuggestedPrompts","defaultMockResponses","defaultFallbackResponse","Clock","CheckCircle","AlertTriangle","AlertCircle","activityTypeLabels","Activity","X","Zap","useActivity","Minimize2","Filter","ChevronsUpDown","svgPaths","useRightPanel","Tooltip","TooltipTrigger","Bot","TooltipContent","AIChatPanel"],"sources":["../src/layouts/AnimatedBackground/AnimatedBackground.tsx","../src/layouts/AppHeader/AppHeader.tsx","../src/layouts/BodhiHeader/BodhiHeader.tsx","../src/layouts/Header/Header.tsx","../src/layouts/LeftNavigation/svg-ye4mpuwoci.ts","../src/layouts/LeftNavigation/LeftNavigation.tsx","../src/layouts/Logo/Logo.tsx","../src/layouts/MobileGate/MobileGate.tsx","../src/layouts/PsaiHeader/PsaiHeader.tsx","../src/layouts/RightSidebar/RightSidebar.tsx","../src/layouts/SlingshotHeader/SlingshotHeader.tsx","../src/layouts/SustainHeader/SustainHeader.tsx"],"sourcesContent":["import { motion } from \"motion/react\";\n\ninterface AnimatedBackgroundProps {\n isDarkMode: boolean;\n}\n\nexport function AnimatedBackground({ isDarkMode }: AnimatedBackgroundProps) {\n const lightGradient = `url('data:image/svg+xml;utf8,<svg viewBox=\"0 0 1440 2352\" xmlns=\"http://www.w3.org/2000/svg\" preserveAspectRatio=\"none\"><rect x=\"0\" y=\"0\" height=\"100%\" width=\"100%\" fill=\"url(%23grad)\" opacity=\"1\"/><defs><radialGradient id=\"grad\" gradientUnits=\"userSpaceOnUse\" cx=\"0\" cy=\"0\" r=\"10\" gradientTransform=\"matrix(-48.778 123.5 -72.053 -137.99 1293.7 371.38)\"><stop stop-color=\"rgba(226,232,240,1)\" offset=\"0\"/><stop stop-color=\"rgba(254,202,202,1)\" offset=\"0.49038\"/><stop stop-color=\"rgba(226,232,240,1)\" offset=\"0.94231\"/></radialGradient></defs></svg>')`;\n\n const darkGradient = `url('data:image/svg+xml;utf8,<svg viewBox=\"0 0 1440 2352\" xmlns=\"http://www.w3.org/2000/svg\" preserveAspectRatio=\"none\"><rect x=\"0\" y=\"0\" height=\"100%\" width=\"100%\" fill=\"url(%23grad)\" opacity=\"1\"/><defs><radialGradient id=\"grad\" gradientUnits=\"userSpaceOnUse\" cx=\"0\" cy=\"0\" r=\"10\" gradientTransform=\"matrix(-48.778 123.5 -72.053 -137.99 1293.7 371.38)\"><stop stop-color=\"rgba(3,7,18,1)\" offset=\"0\"/><stop stop-color=\"rgba(20,8,16,1)\" offset=\"0.1226\"/><stop stop-color=\"rgba(36,9,14,1)\" offset=\"0.24519\"/><stop stop-color=\"rgba(69,10,10,1)\" offset=\"0.49038\"/><stop stop-color=\"rgba(36,9,14,1)\" offset=\"0.71635\"/><stop stop-color=\"rgba(20,8,16,1)\" offset=\"0.82933\"/><stop stop-color=\"rgba(3,7,18,1)\" offset=\"0.94231\"/></radialGradient></defs></svg>')`;\n\n return (\n <>\n {/* Base gradient layer */}\n <motion.div\n className=\"fixed inset-0 -z-10\"\n style={{\n backgroundImage: isDarkMode ? darkGradient : lightGradient,\n }}\n initial={{ opacity: 50 }}\n animate={{ opacity: 100 }}\n transition={{ duration: 1.5 }}\n />\n\n {/* Animated gradient overlay - very subtle movement */}\n <motion.div\n className=\"fixed inset-0 -z-10\"\n style={{\n backgroundImage: isDarkMode\n ? \"radial-gradient(circle at 50% 50%, rgba(11, 223, 181, 0.3) 0%, transparent 50%)\"\n : \"radial-gradient(circle at 50% 50%, rgba(52, 13, 125, 0.8) 0%, transparent 50%)\",\n backgroundSize: \"100% 100%\",\n }}\n animate={{\n backgroundPosition: [\"0% 100%\", \"100% 100%\", \"0% 100%\", \"100% 0%\", \"0% 20%\"],\n backgroundSize: \"100% 100%\",\n }}\n transition={{\n duration: 50,\n ease: \"easeInOut\",\n repeat: Number.POSITIVE_INFINITY,\n repeatType: \"reverse\",\n }}\n />\n\n {/* Second animated layer for depth */}\n <motion.div\n className=\"fixed inset-0 -z-10\"\n style={{\n backgroundImage: isDarkMode\n ? \"radial-gradient(circle at 50% 50%, rgba(36,9,14,0.2) 0%, transparent 60%)\"\n : \"radial-gradient(circle at 50% 50%, rgba(25, 73, 135, 0.15) 0%, transparent 60%)\",\n }}\n animate={{\n scale: [2, 1.1, 1],\n opacity: [1.3, 5, 2],\n }}\n transition={{\n duration: 5,\n ease: \"easeInOut\",\n repeat: Number.POSITIVE_INFINITY,\n repeatType: \"reverse\",\n }}\n />\n </>\n );\n}\n","import { Check, ChevronDown, ChevronRight, LogOut, Moon, Sun, User, Zap } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { BodhiLogo } from \"../../primitives/BodhiLogo\";\nimport { SlingshotLogo } from \"../../primitives/SlingshotLogo\";\nimport { SustainLogo } from \"../../primitives/SustainLogo\";\n\n/**\n * Brand identity for {@link AppHeader}. Selects the wordmark logo and the\n * DOM id-prefix used for the portalled dropdown panels.\n *\n * Note: `slingshot` intentionally uses an empty id-prefix to preserve the\n * panel ids the prototype shipped with (`org-dropdown-panel`, …).\n */\nexport type AppHeaderBrand = \"bodhi\" | \"slingshot\" | \"sustain\";\n\nconst BRAND_LOGOS: Record<AppHeaderBrand, (props: { isDarkMode?: boolean }) => JSX.Element> = {\n bodhi: BodhiLogo,\n slingshot: SlingshotLogo,\n sustain: SustainLogo,\n};\n\nconst BRAND_ID_PREFIX: Record<AppHeaderBrand, string> = {\n bodhi: \"bodhi-\",\n slingshot: \"\",\n sustain: \"sustain-\",\n};\n\nconst ORGS = [\n \"Stellar Solutions Inc.\",\n \"Apex Technologies\",\n \"Meridian Systems\",\n \"Nova Enterprises\",\n];\n\ninterface ProjectTreeNode {\n id: string;\n label: string;\n children?: ProjectTreeNode[];\n}\n\nconst PROJECT_TREES: Record<string, ProjectTreeNode[]> = {\n \"Stellar Solutions Inc.\": [\n {\n id: \"engineering\",\n label: \"Engineering\",\n children: [\n {\n id: \"stellar-connect\",\n label: \"Stellar Connect\",\n children: [\n { id: \"stellar-connect-web\", label: \"Web App\" },\n { id: \"stellar-connect-mobile\", label: \"Mobile App\" },\n { id: \"stellar-connect-api\", label: \"API Gateway\" },\n ],\n },\n {\n id: \"stellar-analytics\",\n label: \"Stellar Analytics\",\n children: [\n { id: \"stellar-analytics-dashboard\", label: \"Dashboard\" },\n { id: \"stellar-analytics-reports\", label: \"Reports\" },\n ],\n },\n { id: \"stellar-core\", label: \"Stellar Core\" },\n ],\n },\n {\n id: \"product\",\n label: \"Product\",\n children: [\n {\n id: \"mobile-apps\",\n label: \"Mobile Apps\",\n children: [\n { id: \"mobile-ios\", label: \"iOS\" },\n { id: \"mobile-android\", label: \"Android\" },\n ],\n },\n { id: \"web-platform\", label: \"Web Platform\" },\n ],\n },\n {\n id: \"infrastructure\",\n label: \"Infrastructure\",\n children: [\n { id: \"cloud-services\", label: \"Cloud Services\" },\n { id: \"devops-pipeline\", label: \"DevOps Pipeline\" },\n ],\n },\n ],\n \"Apex Technologies\": [\n {\n id: \"platform\",\n label: \"Platform\",\n children: [\n {\n id: \"apex-platform\",\n label: \"Apex Platform\",\n children: [\n { id: \"apex-platform-core\", label: \"Core Services\" },\n { id: \"apex-platform-sdk\", label: \"SDK\" },\n { id: \"apex-platform-docs\", label: \"Documentation\" },\n ],\n },\n { id: \"apex-devops\", label: \"Apex DevOps\" },\n ],\n },\n {\n id: \"ai\",\n label: \"AI & ML\",\n children: [\n {\n id: \"apex-ai-core\",\n label: \"Apex AI Core\",\n children: [\n { id: \"apex-ai-training\", label: \"Training Pipelines\" },\n { id: \"apex-ai-inference\", label: \"Inference Engine\" },\n ],\n },\n { id: \"apex-nlp\", label: \"NLP Pipelines\" },\n { id: \"apex-vision\", label: \"Vision Models\" },\n ],\n },\n ],\n \"Meridian Systems\": [\n {\n id: \"enterprise\",\n label: \"Enterprise\",\n children: [\n {\n id: \"meridian-erp\",\n label: \"Meridian ERP\",\n children: [\n { id: \"meridian-erp-finance\", label: \"Finance Module\" },\n { id: \"meridian-erp-hr\", label: \"HR Module\" },\n { id: \"meridian-erp-supply\", label: \"Supply Chain\" },\n ],\n },\n {\n id: \"meridian-crm\",\n label: \"Meridian CRM\",\n children: [\n { id: \"meridian-crm-sales\", label: \"Sales\" },\n { id: \"meridian-crm-support\", label: \"Support\" },\n ],\n },\n ],\n },\n {\n id: \"integrations\",\n label: \"Integrations\",\n children: [\n { id: \"sap-connector\", label: \"SAP Connector\" },\n { id: \"salesforce-bridge\", label: \"Salesforce Bridge\" },\n ],\n },\n ],\n \"Nova Enterprises\": [\n {\n id: \"nova-suite\",\n label: \"Nova Suite\",\n children: [\n {\n id: \"nova-core\",\n label: \"Nova Core\",\n children: [\n { id: \"nova-core-auth\", label: \"Auth Service\" },\n { id: \"nova-core-data\", label: \"Data Layer\" },\n ],\n },\n { id: \"nova-insights\", label: \"Nova Insights\" },\n { id: \"nova-shield\", label: \"Nova Shield\" },\n ],\n },\n {\n id: \"nova-labs\",\n label: \"Nova Labs\",\n children: [\n { id: \"nova-experiments\", label: \"Experiments\" },\n { id: \"nova-sandbox\", label: \"Sandbox\" },\n ],\n },\n ],\n};\n\nfunction getFirstLeaf(nodes: ProjectTreeNode[]): string {\n for (const node of nodes) {\n if (!node.children) return node.label;\n const leaf = getFirstLeaf(node.children);\n if (leaf) return leaf;\n }\n return \"\";\n}\n\ninterface TreeNodeRowProps {\n node: ProjectTreeNode;\n depth: number;\n expandedIds: Set<string>;\n onToggle: (id: string) => void;\n selectedProject: string;\n onSelect: (label: string) => void;\n}\n\nfunction TreeNodeRow({\n node,\n depth,\n expandedIds,\n onToggle,\n selectedProject,\n onSelect,\n}: TreeNodeRowProps) {\n const isFolder = Boolean(node.children);\n const isExpanded = expandedIds.has(node.id);\n const isSelected = !isFolder && selectedProject === node.label;\n\n return (\n <>\n <button\n onClick={() => (isFolder ? onToggle(node.id) : onSelect(node.label))}\n className=\"flex items-center gap-[6px] w-full text-left transition-colors\"\n style={{\n padding: `6px 12px 6px ${12 + depth * 16}px`,\n backgroundColor: isSelected ? \"var(--accent)\" : \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n }}\n onMouseEnter={(e) => {\n if (!isSelected) e.currentTarget.style.backgroundColor = \"var(--accent)\";\n }}\n onMouseLeave={(e) => {\n if (!isSelected) e.currentTarget.style.backgroundColor = \"transparent\";\n }}\n >\n {isFolder ? (\n <span\n style={{\n color: \"var(--muted-foreground)\",\n flexShrink: 0,\n width: 14,\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n {isExpanded ? <ChevronDown size={12} /> : <ChevronRight size={12} />}\n </span>\n ) : (\n <span style={{ width: 14, flexShrink: 0 }} />\n )}\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: isFolder ? \"var(--font-weight-medium)\" : \"var(--font-weight-normal)\",\n color: isSelected ? \"var(--primary)\" : \"var(--foreground)\",\n flex: 1,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {node.label}\n </span>\n {isSelected && <Check size={13} style={{ color: \"var(--primary)\", flexShrink: 0 }} />}\n </button>\n {isFolder &&\n isExpanded &&\n node.children?.map((child) => (\n <TreeNodeRow\n key={child.id}\n node={child}\n depth={depth + 1}\n expandedIds={expandedIds}\n onToggle={onToggle}\n selectedProject={selectedProject}\n onSelect={onSelect}\n />\n ))}\n </>\n );\n}\n\nexport interface AppHeaderProps {\n /** Brand variant — selects the wordmark logo and the dropdown panel id-prefix. */\n brand: AppHeaderBrand;\n isDarkMode: boolean;\n onToggleTheme: () => void;\n}\n\n/**\n * Unified product header (logo + org/project switchers + theme toggle + credit\n * badge + avatar menu). Replaces the previously triplicated per-product headers;\n * `BodhiHeader`, `SlingshotHeader`, and `SustainHeader` are thin wrappers around\n * this component.\n */\nexport function AppHeader({ brand, isDarkMode, onToggleTheme }: AppHeaderProps) {\n const BrandLogo = BRAND_LOGOS[brand];\n const idPrefix = BRAND_ID_PREFIX[brand];\n const orgPanelId = `${idPrefix}org-dropdown-panel`;\n const projectPanelId = `${idPrefix}project-dropdown-panel`;\n\n const [avatarMenuOpen, setAvatarMenuOpen] = useState(false);\n const [orgDropdownOpen, setOrgDropdownOpen] = useState(false);\n const [projectDropdownOpen, setProjectDropdownOpen] = useState(false);\n const [selectedOrg, setSelectedOrg] = useState(ORGS[0]);\n const [selectedProject, setSelectedProject] = useState(() =>\n getFirstLeaf(PROJECT_TREES[ORGS[0]]),\n );\n const [expandedIds, setExpandedIds] = useState<Set<string>>(\n () => new Set(PROJECT_TREES[ORGS[0]].map((n) => n.id)),\n );\n const [orgPos, setOrgPos] = useState<{ top: number; left: number } | null>(null);\n const [projectPos, setProjectPos] = useState<{ top: number; left: number } | null>(null);\n\n const avatarMenuRef = useRef<HTMLDivElement>(null);\n const orgTriggerRef = useRef<HTMLButtonElement>(null);\n const projectTriggerRef = useRef<HTMLButtonElement>(null);\n\n useEffect(() => {\n function handleClickOutside(e: MouseEvent) {\n if (avatarMenuRef.current && !avatarMenuRef.current.contains(e.target as Node))\n setAvatarMenuOpen(false);\n if (orgDropdownOpen) {\n const panel = document.getElementById(orgPanelId);\n if (\n panel &&\n !panel.contains(e.target as Node) &&\n orgTriggerRef.current &&\n !orgTriggerRef.current.contains(e.target as Node)\n )\n setOrgDropdownOpen(false);\n }\n if (projectDropdownOpen) {\n const panel = document.getElementById(projectPanelId);\n if (\n panel &&\n !panel.contains(e.target as Node) &&\n projectTriggerRef.current &&\n !projectTriggerRef.current.contains(e.target as Node)\n )\n setProjectDropdownOpen(false);\n }\n }\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [orgDropdownOpen, projectDropdownOpen, orgPanelId, projectPanelId]);\n\n function openOrgDropdown() {\n if (orgDropdownOpen) {\n setOrgDropdownOpen(false);\n return;\n }\n if (orgTriggerRef.current) {\n const r = orgTriggerRef.current.getBoundingClientRect();\n setOrgPos({ top: r.bottom + 6, left: r.left });\n }\n setOrgDropdownOpen(true);\n setProjectDropdownOpen(false);\n }\n\n function openProjectDropdown() {\n if (projectDropdownOpen) {\n setProjectDropdownOpen(false);\n return;\n }\n if (projectTriggerRef.current) {\n const r = projectTriggerRef.current.getBoundingClientRect();\n setProjectPos({ top: r.bottom + 6, left: r.left });\n }\n setProjectDropdownOpen(true);\n setOrgDropdownOpen(false);\n }\n\n function toggleExpanded(id: string) {\n setExpandedIds((prev) => {\n const next = new Set(prev);\n if (next.has(id)) next.delete(id);\n else next.add(id);\n return next;\n });\n }\n\n function handleSelectOrg(org: string) {\n setSelectedOrg(org);\n setSelectedProject(getFirstLeaf(PROJECT_TREES[org]));\n setExpandedIds(new Set(PROJECT_TREES[org].map((n) => n.id)));\n setOrgDropdownOpen(false);\n }\n\n function handleSelectProject(label: string) {\n setSelectedProject(label);\n setProjectDropdownOpen(false);\n }\n\n return (\n <div\n className=\"backdrop-blur-[45px] flex gap-[12px] h-[60px] items-center px-[12px] py-[8px] rounded-[16px] shrink-0 sticky top-0 w-full z-[2]\"\n style={{ backgroundColor: \"var(--glass-heavy)\" }}\n >\n {/* Logo + chevron */}\n <div className=\"flex gap-[4px] items-center relative shrink-0\">\n <BrandLogo isDarkMode={isDarkMode} />\n <ChevronDown size={16} style={{ color: \"var(--muted-foreground)\" }} />\n </div>\n\n {/* Org Selector */}\n <div className=\"relative shrink-0\">\n <button\n ref={orgTriggerRef}\n onClick={openOrgDropdown}\n className=\"flex items-center gap-[6px] cursor-pointer transition-colors\"\n style={{\n backgroundColor: \"var(--input-background)\",\n border: \"1px solid var(--border)\",\n borderRadius: \"8px\",\n padding: \"4px 10px\",\n }}\n aria-label=\"Select organisation\"\n aria-expanded={orgDropdownOpen}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-xs)\",\n fontWeight: \"var(--font-weight-normal)\",\n color: \"var(--muted-foreground)\",\n whiteSpace: \"nowrap\",\n }}\n >\n Org:\n </span>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-xs)\",\n fontWeight: \"var(--font-weight-medium)\",\n color: \"var(--foreground)\",\n maxWidth: \"120px\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n display: \"block\",\n }}\n >\n {selectedOrg}\n </span>\n <ChevronDown size={12} style={{ color: \"var(--muted-foreground)\", flexShrink: 0 }} />\n </button>\n {orgDropdownOpen &&\n orgPos &&\n createPortal(\n <div\n id={orgPanelId}\n className=\"fixed min-w-[200px] rounded-[16px] py-[4px] z-[9999] backdrop-blur-[45px] border overflow-hidden\"\n style={{\n top: orgPos.top,\n left: orgPos.left,\n backgroundColor: \"var(--glass-subtle)\",\n borderColor: \"var(--border)\",\n }}\n >\n {ORGS.map((org) => (\n <button\n key={org}\n onClick={() => handleSelectOrg(org)}\n className=\"flex items-center justify-between gap-[8px] w-full px-[12px] py-[8px] transition-colors text-left\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")\n }\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n color: \"var(--foreground)\",\n }}\n >\n {org}\n </span>\n {selectedOrg === org && (\n <Check size={14} style={{ color: \"var(--primary)\", flexShrink: 0 }} />\n )}\n </button>\n ))}\n </div>,\n document.body,\n )}\n </div>\n\n {/* Project Selector */}\n <div className=\"relative shrink-0\">\n <button\n ref={projectTriggerRef}\n onClick={openProjectDropdown}\n className=\"flex items-center gap-[6px] cursor-pointer transition-colors\"\n style={{\n backgroundColor: \"var(--input-background)\",\n border: \"1px solid var(--border)\",\n borderRadius: \"8px\",\n padding: \"4px 10px\",\n }}\n aria-label=\"Select project\"\n aria-expanded={projectDropdownOpen}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-xs)\",\n fontWeight: \"var(--font-weight-normal)\",\n color: \"var(--muted-foreground)\",\n whiteSpace: \"nowrap\",\n }}\n >\n Project:\n </span>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-xs)\",\n fontWeight: \"var(--font-weight-medium)\",\n color: \"var(--foreground)\",\n maxWidth: \"120px\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n display: \"block\",\n }}\n >\n {selectedProject}\n </span>\n <ChevronDown size={12} style={{ color: \"var(--muted-foreground)\", flexShrink: 0 }} />\n </button>\n {projectDropdownOpen &&\n projectPos &&\n createPortal(\n <div\n id={projectPanelId}\n className=\"fixed min-w-[240px] rounded-[16px] py-[4px] z-[9999] backdrop-blur-[45px] border overflow-y-auto overflow-x-hidden\"\n style={{\n top: projectPos.top,\n left: projectPos.left,\n backgroundColor: \"var(--glass-subtle)\",\n borderColor: \"var(--border)\",\n maxHeight: \"320px\",\n }}\n >\n {PROJECT_TREES[selectedOrg].map((node) => (\n <TreeNodeRow\n key={node.id}\n node={node}\n depth={0}\n expandedIds={expandedIds}\n onToggle={toggleExpanded}\n selectedProject={selectedProject}\n onSelect={handleSelectProject}\n />\n ))}\n </div>,\n document.body,\n )}\n </div>\n\n {/* Spacer */}\n <div className=\"flex-1\" />\n\n {/* Right Actions */}\n <div className=\"flex items-center gap-[8px]\">\n {/* Theme Switcher */}\n <button\n onClick={onToggleTheme}\n className=\"flex items-center justify-center w-[40px] h-[40px] rounded-full bg-transparent transition-colors cursor-pointer\"\n style={{ color: \"var(--foreground)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n aria-label={isDarkMode ? \"Switch to light mode\" : \"Switch to dark mode\"}\n >\n {isDarkMode ? <Sun size={18} /> : <Moon size={18} />}\n </button>\n\n {/* Credit Badge */}\n <div\n className=\"flex items-center gap-[4px] px-[8px] py-[4px] rounded-[8px] shrink-0\"\n style={{ backgroundColor: \"var(--glass-light)\", border: \"1px solid var(--border)\" }}\n >\n <Zap size={12} style={{ color: \"var(--foreground)\", flexShrink: 0 }} />\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-xs)\",\n fontWeight: \"var(--font-weight-semibold)\",\n lineHeight: \"var(--leading-body-xs)\",\n color: \"var(--foreground)\",\n whiteSpace: \"nowrap\",\n }}\n >\n 1,000\n </span>\n </div>\n\n {/* Avatar Dropdown */}\n <div className=\"relative\" ref={avatarMenuRef}>\n <button\n onClick={() => setAvatarMenuOpen(!avatarMenuOpen)}\n className=\"flex items-center justify-center w-[40px] h-[40px] rounded-full overflow-hidden cursor-pointer shrink-0 relative\"\n style={{ border: \"none\", padding: 0, background: \"transparent\", lineHeight: 0 }}\n aria-label=\"User menu\"\n aria-expanded={avatarMenuOpen}\n >\n <div className=\"absolute inset-0 flex items-center justify-center bg-gradient-to-br from-violet-500 to-purple-600 rounded-full\">\n <User className=\"w-5 h-5 text-white\" />\n </div>\n </button>\n\n {/* Avatar Dropdown Menu */}\n {avatarMenuOpen && (\n <div\n className=\"absolute top-full right-0 mt-[8px] min-w-[180px] rounded-[12px] py-[4px] z-50\"\n style={{\n backgroundColor: \"var(--card)\",\n border: \"1px solid var(--border)\",\n boxShadow: \"0px 4px 16px 0px rgba(0,0,0,0.12)\",\n }}\n >\n <button\n onClick={() => {\n setAvatarMenuOpen(false);\n }}\n className=\"flex items-center gap-[12px] w-full px-[16px] py-[12px] hover:bg-[var(--muted)] transition-colors text-left\"\n >\n <User size={16} style={{ color: \"var(--foreground)\" }} />\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"14px\",\n fontWeight: \"var(--font-weight-normal)\",\n color: \"var(--foreground)\",\n }}\n >\n Profile\n </span>\n </button>\n <button\n onClick={() => {\n setAvatarMenuOpen(false);\n }}\n className=\"flex items-center gap-[12px] w-full px-[16px] py-[12px] hover:bg-[var(--muted)] transition-colors text-left border-t\"\n style={{ borderColor: \"var(--border)\" }}\n >\n <LogOut size={16} style={{ color: \"var(--foreground)\" }} />\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"14px\",\n fontWeight: \"var(--font-weight-normal)\",\n color: \"var(--foreground)\",\n }}\n >\n Logout\n </span>\n </button>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n","import { AppHeader } from \"../AppHeader\";\n\ninterface BodhiHeaderProps {\n isDarkMode: boolean;\n onToggleTheme: () => void;\n}\n\n/** Bodhi-branded {@link AppHeader}. Kept for backwards compatibility; prefer `<AppHeader brand=\"bodhi\" />`. */\nexport function BodhiHeader({ isDarkMode, onToggleTheme }: BodhiHeaderProps) {\n return <AppHeader brand=\"bodhi\" isDarkMode={isDarkMode} onToggleTheme={onToggleTheme} />;\n}\n","import { Bell, LogOut, Menu, Moon, Sun, User } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { AccountProjectSwitcher } from \"../../patterns/AccountProjectSwitcher\";\nimport { ProductSwitcher } from \"../../patterns/ProductSwitcher\";\nconst imgAvatar = \"\"; // TODO: replace Figma asset reference\n\ninterface HeaderProps {\n isDarkMode: boolean;\n onToggleTheme: () => void;\n onLogout?: () => void;\n}\n\nexport function Header({ isDarkMode, onToggleTheme, onLogout }: HeaderProps) {\n const [avatarMenuOpen, setAvatarMenuOpen] = useState(false);\n const avatarMenuRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n function handleClickOutside(e: MouseEvent) {\n if (avatarMenuRef.current && !avatarMenuRef.current.contains(e.target as Node)) {\n setAvatarMenuOpen(false);\n }\n }\n if (avatarMenuOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [avatarMenuOpen]);\n\n return (\n <div className=\"fixed top-0 left-0 right-0 shrink-0 z-50 px-3 sm:px-4 lg:px-[16px] pt-3 sm:pt-4 lg:pt-[16px]\">\n <div\n className=\"backdrop-blur-[45px] rounded-xl lg:rounded-[16px]\"\n style={{ backgroundColor: \"var(--glass-heavy)\" }}\n >\n <div className=\"flex items-center px-3 sm:px-4 lg:px-[12px] py-2 lg:py-[8px] gap-2 sm:gap-3 lg:gap-[20px]\">\n {/* Logo + Product Switcher + Account Switcher */}\n <div className=\"flex-1 flex items-center gap-1 lg:gap-[8px] overflow-visible\">\n {/* Product Switcher (Logo + Chevron) */}\n <ProductSwitcher isDarkMode={isDarkMode} />\n\n {/* Unified Account / Project Switcher */}\n <AccountProjectSwitcher />\n </div>\n\n {/* Right Actions */}\n <div className=\"flex items-center gap-[8px]\">\n {/* Theme Switcher */}\n <button\n onClick={onToggleTheme}\n className=\"hidden sm:flex items-center justify-center w-9 h-9 lg:w-[40px] lg:h-[40px] rounded-full bg-transparent transition-colors cursor-pointer\"\n style={{ color: \"var(--foreground)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n aria-label={isDarkMode ? \"Switch to light mode\" : \"Switch to dark mode\"}\n >\n {isDarkMode ? <Sun className=\"w-4 h-4\" /> : <Moon className=\"w-4 h-4\" />}\n </button>\n\n {/* Notifications */}\n <button\n className=\"hidden sm:flex items-center justify-center w-9 h-9 lg:w-[40px] lg:h-[40px] rounded-full bg-transparent transition-colors cursor-pointer\"\n style={{ color: \"var(--foreground)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n aria-label=\"Notifications\"\n >\n <Bell className=\"w-4 h-4\" />\n </button>\n\n {/* Avatar */}\n <div className=\"relative ml-1 lg:ml-0\" ref={avatarMenuRef}>\n <button\n onClick={() => setAvatarMenuOpen(!avatarMenuOpen)}\n className=\"flex items-center justify-center w-9 h-9 lg:w-[40px] lg:h-[40px] rounded-full overflow-hidden cursor-pointer shrink-0 relative\"\n style={{ border: \"none\", padding: 0, background: \"transparent\", lineHeight: 0 }}\n aria-label=\"User menu\"\n aria-expanded={avatarMenuOpen}\n >\n {/* Mock Logo Overlay */}\n <div className=\"absolute inset-0 flex items-center justify-center bg-gradient-to-br from-blue-500 to-purple-600 rounded-full\">\n <User className=\"w-5 h-5 lg:w-6 lg:h-6 text-white\" />\n </div>\n {/* Original Avatar (hidden but kept for fallback) */}\n <img\n src={imgAvatar}\n alt=\"Avatar\"\n className=\"block w-full h-full object-cover opacity-0\"\n />\n </button>\n\n {/* Avatar Dropdown Menu */}\n {avatarMenuOpen && (\n <div\n className=\"absolute top-full right-0 mt-[8px] min-w-[180px] rounded-[12px] py-[4px] z-50\"\n style={{\n backgroundColor: \"var(--card)\",\n border: \"1px solid var(--border)\",\n boxShadow: \"0px 4px 16px 0px rgba(0,0,0,0.12)\",\n }}\n >\n <button\n onClick={() => {\n setAvatarMenuOpen(false);\n onLogout?.();\n }}\n className=\"flex items-center gap-[10px] w-full px-[14px] py-[10px] border-0 bg-transparent cursor-pointer transition-colors rounded-[8px] mx-auto\"\n style={{\n width: \"calc(100% - 8px)\",\n marginLeft: \"4px\",\n marginRight: \"4px\",\n color: \"var(--danger)\",\n }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <LogOut className=\"w-[16px] h-[16px]\" />\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n }}\n >\n Logout\n </span>\n </button>\n </div>\n )}\n </div>\n\n {/* Mobile Menu */}\n <button\n className=\"flex sm:hidden items-center justify-center w-9 h-9 rounded-full bg-transparent transition-colors ml-1 cursor-pointer\"\n style={{ color: \"var(--foreground)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n aria-label=\"Menu\"\n >\n <Menu className=\"w-5 h-5\" />\n </button>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","export default {\n p1c4b9e80:\n \"M13.558 7.41602C13.7884 7.26395 14.0986 7.32752 14.2507 7.55794C14.4027 7.78838 14.3392 8.09853 14.1087 8.25065C12.0489 9.61057 9.63497 10.3353 7.16669 10.3353C4.69841 10.3353 2.28449 9.61057 0.224633 8.25065C-0.00578628 8.09853 -0.0693641 7.78838 0.082706 7.55794C0.234831 7.32752 0.544975 7.26395 0.775414 7.41602C2.67181 8.66804 4.89427 9.33529 7.16669 9.33529C9.43911 9.33529 11.6616 8.66804 13.558 7.41602Z\",\n p22d2dc00:\n \"M4.66667 1.16667C4.66667 1.07462 4.59205 1 4.5 1H1.16667C1.07462 1 1 1.07462 1 1.16667V4.5C1 4.59205 1.07462 4.66667 1.16667 4.66667H4.5C4.59205 4.66667 4.66667 4.59205 4.66667 4.5V1.16667ZM5.66667 4.5C5.66667 5.14433 5.14433 5.66667 4.5 5.66667H1.16667C0.522334 5.66667 0 5.14433 0 4.5V1.16667C0 0.522334 0.522334 0 1.16667 0H4.5C5.14433 0 5.66667 0.522334 5.66667 1.16667V4.5Z\",\n p23ebb500:\n \"M12 5.83268C12 5.71152 11.9735 5.59168 11.9225 5.48177C11.8715 5.37187 11.797 5.27418 11.7044 5.19596L11.7018 5.19401L7.03516 1.19466C6.88522 1.06915 6.69562 1 6.5 1C6.30422 1 6.11419 1.0683 5.96419 1.19401L1.29818 5.19401L1.29557 5.19596C1.20303 5.27418 1.12849 5.37187 1.07747 5.48177C1.02648 5.59168 0.999998 5.71152 1 5.83268V11.8327C1 12.0537 1.08786 12.2662 1.24414 12.4225C1.4004 12.5787 1.6124 12.666 1.83333 12.666H11.1667C11.3876 12.666 11.5996 12.5787 11.7559 12.4225C11.9121 12.2662 12 12.0537 12 11.8327V5.83268ZM13 11.8327C13 12.3189 12.8067 12.7857 12.4629 13.1296C12.1191 13.4733 11.6528 13.666 11.1667 13.666H1.83333C1.34718 13.666 0.880909 13.4733 0.537109 13.1296C0.193293 12.7857 0 12.3189 0 11.8327V5.83268C-2.26206e-06 5.56616 0.0583982 5.30297 0.170573 5.0612C0.282817 4.8193 0.446068 4.60443 0.64974 4.43229L5.3138 0.435547L5.31641 0.432943C5.64731 0.153276 6.06674 0 6.5 0C6.87906 0 7.24751 0.117304 7.55534 0.333984L7.68359 0.432943L7.6862 0.435547L12.3496 4.43229C12.5533 4.60444 12.7172 4.81928 12.8294 5.0612C12.9416 5.30297 13 5.56616 13 5.83268V11.8327Z\",\n p244a7b00:\n \"M9.33336 3.16667V1.83333C9.33336 1.61232 9.2455 1.40042 9.08922 1.24414C8.93294 1.08786 8.72104 1 8.50002 1H5.83336C5.61234 1 5.40044 1.08786 5.24416 1.24414C5.08788 1.40042 5.00002 1.61232 5.00002 1.83333V3.16667C5.00002 3.44281 4.77617 3.66667 4.50002 3.66667C4.22388 3.66667 4.00002 3.44281 4.00002 3.16667V1.83333C4.00002 1.3471 4.19332 0.880926 4.53713 0.537109C4.88095 0.193293 5.34713 0 5.83336 0H8.50002C8.98625 0 9.45243 0.193293 9.79625 0.537109C10.1401 0.880926 10.3334 1.3471 10.3334 1.83333V3.16667C10.3334 3.44281 10.1095 3.66667 9.83336 3.66667C9.55722 3.66667 9.33336 3.44281 9.33336 3.16667Z\",\n p279d1fa0:\n \"M12 8.5C12 8.40795 11.9254 8.33333 11.8333 8.33333H8.5C8.40795 8.33333 8.33333 8.40795 8.33333 8.5V11.8333C8.33333 11.9254 8.40795 12 8.5 12H11.8333C11.9254 12 12 11.9254 12 11.8333V8.5ZM13 11.8333C13 12.4777 12.4777 13 11.8333 13H8.5C7.85567 13 7.33333 12.4777 7.33333 11.8333V8.5C7.33333 7.85567 7.85567 7.33333 8.5 7.33333H11.8333C12.4777 7.33333 13 7.85567 13 8.5V11.8333Z\",\n p29ae5900:\n \"M13.3334 4.5C13.3334 4.03976 12.9603 3.66667 12.5 3.66667H1.83336C1.37312 3.66667 1.00002 4.03976 1.00002 4.5V11.1667C1.00002 11.6269 1.37312 12 1.83336 12H12.5C12.9603 12 13.3334 11.6269 13.3334 11.1667V4.5ZM14.3334 11.1667C14.3334 12.1792 13.5125 13 12.5 13H1.83336C0.820835 13 2.37629e-05 12.1792 2.37629e-05 11.1667V4.5C2.37629e-05 3.48748 0.820835 2.66667 1.83336 2.66667H12.5C13.5125 2.66667 14.3334 3.48748 14.3334 4.5V11.1667Z\",\n p2bf84500:\n \"M6.5 0C6.82179 0 7.13798 0.0845628 7.41667 0.245443L7.41602 0.246094L12.0814 2.91146L12.0833 2.91211C12.3618 3.07286 12.593 3.30434 12.7539 3.58268C12.9147 3.86098 12.9997 4.17662 13 4.49805V9.83268C12.9996 10.1541 12.9148 10.4698 12.7539 10.748C12.593 11.0264 12.3618 11.2579 12.0833 11.4186L12.0814 11.4193L7.41602 14.0846L7.41667 14.0853C7.138 14.2461 6.82177 14.3307 6.5 14.3307C6.17823 14.3307 5.862 14.2461 5.58333 14.0853L0.91862 11.4193L0.916667 11.4186C0.638241 11.2579 0.406986 11.0264 0.246094 10.748C0.085244 10.4698 0.000365199 10.1541 0 9.83268V4.49805L0.00390625 4.3776C0.0226034 4.09812 0.105401 3.82612 0.246094 3.58268C0.406986 3.30434 0.638241 3.07286 0.916667 2.91211L0.91862 2.91146L5.58333 0.246094C5.86204 0.0851851 6.17818 0 6.5 0ZM6.5 1C6.35377 1 6.20998 1.03824 6.08333 1.11133L6.08138 1.11263L1.41471 3.7793C1.28909 3.85227 1.18474 3.95691 1.11198 4.08268C1.03885 4.2092 1.00015 4.35321 1 4.49935V9.83138L1.00716 9.9401C1.02147 10.0481 1.05713 10.1525 1.11198 10.2474C1.1851 10.3739 1.29015 10.479 1.41667 10.5521L6.08138 13.2181L6.08333 13.2188C6.21002 13.2919 6.35372 13.3307 6.5 13.3307C6.64628 13.3307 6.78998 13.2919 6.91667 13.2188L6.91862 13.2181L11.5833 10.5521C11.7099 10.479 11.8149 10.3739 11.888 10.2474C11.961 10.1211 11.9997 9.97792 12 9.83203V4.49935L11.9928 4.38997C11.9785 4.28212 11.9428 4.17749 11.888 4.08268C11.8153 3.95691 11.7109 3.85227 11.5853 3.7793L6.91862 1.11263L6.91667 1.11133C6.79002 1.03824 6.64623 1 6.5 1Z\",\n p2ed383f0:\n \"M0 1.83333C0 1.55719 0.223858 1.33333 0.5 1.33333C0.776142 1.33333 1 1.55719 1 1.83333C1 2.05435 1.08786 2.26625 1.24414 2.42253C1.40042 2.57881 1.61232 2.66667 1.83333 2.66667H3.83333C4.10948 2.66667 4.33333 2.89052 4.33333 3.16667C4.33333 3.44281 4.10948 3.66667 3.83333 3.66667H1.83333C1.3471 3.66667 0.880926 3.47337 0.537109 3.12956C0.193293 2.78574 0 2.31956 0 1.83333Z\",\n p2fe7e180:\n \"M8 13.1663V7.83299C8 7.78878 7.98243 7.7464 7.95117 7.71515C7.91992 7.68389 7.87754 7.66632 7.83333 7.66632H5.16667C5.12246 7.66632 5.08008 7.68389 5.04883 7.71515C5.01757 7.7464 5 7.78878 5 7.83299V13.1663C5 13.4425 4.77614 13.6663 4.5 13.6663C4.22386 13.6663 4 13.4425 4 13.1663V7.83299C4 7.52357 4.123 7.22691 4.3418 7.00812C4.56059 6.78932 4.85725 6.66632 5.16667 6.66632H7.83333C8.14275 6.66632 8.43941 6.78932 8.6582 7.00812C8.877 7.22691 9 7.52357 9 7.83299V13.1663C9 13.4425 8.77614 13.6663 8.5 13.6663C8.22386 13.6663 8 13.4425 8 13.1663Z\",\n p32fb3800:\n \"M10.6667 12.5C10.6667 11.2181 10.1577 9.98846 9.2513 9.08203C8.34488 8.17561 7.11521 7.66667 5.83333 7.66667C4.55145 7.66667 3.32179 8.17561 2.41536 9.08203C1.50894 9.98846 1 11.2181 1 12.5C1 12.7761 0.776142 13 0.5 13C0.223858 13 0 12.7761 0 12.5C0 10.9529 0.614371 9.46896 1.70833 8.375C2.8023 7.28104 4.28624 6.66667 5.83333 6.66667C7.38043 6.66667 8.86437 7.28104 9.95833 8.375C11.0523 9.46896 11.6667 10.9529 11.6667 12.5C11.6667 12.7761 11.4428 13 11.1667 13C10.8905 13 10.6667 12.7761 10.6667 12.5Z\",\n p33696440:\n \"M12.0579 3.39837C12.2974 3.26099 12.6028 3.34382 12.7402 3.58327C12.8776 3.82274 12.7948 4.12811 12.5553 4.26556L6.74867 7.59889C6.5946 7.68726 6.40535 7.68727 6.25128 7.59889L0.444635 4.26556C0.2052 4.12811 0.122387 3.82273 0.25974 3.58327C0.397188 3.34383 0.702567 3.26102 0.942031 3.39837L6.49997 6.58848L12.0579 3.39837Z\",\n p34780d00:\n \"M3.06576 1.76392C3.20284 1.52435 3.50842 1.44084 3.74805 1.57772L9.74805 5.01132C9.98768 5.14844 10.0713 5.45395 9.93425 5.69361C9.79713 5.93323 9.49161 6.01617 9.25195 5.87915L3.25195 2.44621C3.01239 2.30913 2.92887 2.00355 3.06576 1.76392Z\",\n p36643e00:\n \"M8.66667 3.83333C8.66667 2.26853 7.39814 1 5.83333 1C4.26853 1 3 2.26853 3 3.83333C3 5.39814 4.26853 6.66667 5.83333 6.66667C7.39814 6.66667 8.66667 5.39814 8.66667 3.83333ZM9.66667 3.83333C9.66667 5.95043 7.95042 7.66667 5.83333 7.66667C3.71624 7.66667 2 5.95043 2 3.83333C2 1.71624 3.71624 0 5.83333 0C7.95042 0 9.66667 1.71624 9.66667 3.83333Z\",\n p36ca8400:\n \"M6 4.5V1.16667C6 0.857247 6.123 0.560589 6.3418 0.341797C6.56059 0.123004 6.85725 0 7.16667 0H8.5C8.68102 0 8.85956 0.0421328 9.02148 0.123047C9.18348 0.204046 9.32492 0.321901 9.43359 0.466797L10.0332 1.26693C10.0487 1.28758 10.0693 1.3042 10.0924 1.31576C10.1155 1.32724 10.1409 1.33333 10.1667 1.33333H11.8333C12.1428 1.33333 12.4394 1.45634 12.6582 1.67513C12.877 1.89392 13 2.19058 13 2.5V4.5C13 4.80942 12.877 5.10608 12.6582 5.32487C12.4394 5.54366 12.1428 5.66667 11.8333 5.66667H7.16667C6.85725 5.66667 6.56059 5.54366 6.3418 5.32487C6.123 5.10608 6 4.80942 6 4.5ZM7 4.5C7 4.5442 7.01757 4.58658 7.04883 4.61784C7.08008 4.6491 7.12246 4.66667 7.16667 4.66667H11.8333C11.8775 4.66667 11.9199 4.64909 11.9512 4.61784C11.9824 4.58658 12 4.5442 12 4.5V2.5C12 2.4558 11.9824 2.41342 11.9512 2.38216C11.9199 2.35091 11.8775 2.33333 11.8333 2.33333H10.1667C9.98565 2.33333 9.80711 2.2912 9.64518 2.21029C9.48318 2.12929 9.34174 2.01143 9.23307 1.86654L8.63346 1.06641C8.61795 1.04576 8.59732 1.02913 8.57422 1.01758C8.55115 1.00609 8.52578 1 8.5 1H7.16667C7.12246 1 7.08008 1.01757 7.04883 1.04883C7.01757 1.08008 7 1.12246 7 1.16667V4.5Z\",\n p36e63380:\n \"M0 9.16667V0.5C0 0.223858 0.223858 0 0.5 0C0.776142 0 1 0.223858 1 0.5V9.16667C1 9.38768 1.08786 9.59958 1.24414 9.75586C1.40042 9.91214 1.61232 10 1.83333 10H3.83333C4.10948 10 4.33333 10.2239 4.33333 10.5C4.33333 10.7761 4.10948 11 3.83333 11H1.83333C1.3471 11 0.880926 10.8067 0.537109 10.4629C0.193293 10.1191 0 9.6529 0 9.16667Z\",\n p38866000:\n \"M4.66667 8.5C4.66667 8.40795 4.59205 8.33333 4.5 8.33333H1.16667C1.07462 8.33333 1 8.40795 1 8.5V11.8333C1 11.9254 1.07462 12 1.16667 12H4.5C4.59205 12 4.66667 11.9254 4.66667 11.8333V8.5ZM5.66667 11.8333C5.66667 12.4777 5.14433 13 4.5 13H1.16667C0.522334 13 0 12.4777 0 11.8333V8.5C0 7.85567 0.522334 7.33333 1.16667 7.33333H4.5C5.14433 7.33333 5.66667 7.85567 5.66667 8.5V11.8333Z\",\n p3e73ad00:\n \"M7.1732 6.66667C7.44934 6.66667 7.6732 6.89052 7.6732 7.16667C7.6732 7.44281 7.44934 7.66667 7.1732 7.66667H7.16669C6.89055 7.66667 6.66669 7.44281 6.66669 7.16667C6.66669 6.89052 6.89055 6.66667 7.16669 6.66667H7.1732Z\",\n p3febec0:\n \"M6 13.832V7.1653C6 6.88916 6.22386 6.6653 6.5 6.6653C6.77614 6.6653 7 6.88916 7 7.1653V13.832C7 14.1081 6.77614 14.332 6.5 14.332C6.22386 14.332 6 14.1081 6 13.832Z\",\n p4987580:\n \"M12 1.16667C12 1.07462 11.9254 1 11.8333 1H8.5C8.40795 1 8.33333 1.07462 8.33333 1.16667V4.5C8.33333 4.59205 8.40795 4.66667 8.5 4.66667H11.8333C11.9254 4.66667 12 4.59205 12 4.5V1.16667ZM13 4.5C13 5.14433 12.4777 5.66667 11.8333 5.66667H8.5C7.85567 5.66667 7.33333 5.14433 7.33333 4.5V1.16667C7.33333 0.522334 7.85567 0 8.5 0H11.8333C12.4777 0 13 0.522334 13 1.16667V4.5Z\",\n pc279880:\n \"M6 11.8333V8.5C6 8.19058 6.12301 7.89392 6.3418 7.67513C6.56059 7.45634 6.85725 7.33333 7.16667 7.33333H8.41992C8.64704 7.33286 8.86964 7.3987 9.0599 7.52278C9.24382 7.64278 9.38929 7.81258 9.48112 8.01172L9.75977 8.57487C9.77347 8.60206 9.7945 8.62511 9.82031 8.64127C9.84609 8.65738 9.87586 8.66621 9.90625 8.66666H11.8333C12.1428 8.66666 12.4394 8.78967 12.6582 9.00846C12.877 9.22725 13 9.52391 13 9.83333V11.8333C13 12.1427 12.877 12.4394 12.6582 12.6582C12.4394 12.877 12.1428 13 11.8333 13H7.16667C6.85725 13 6.56059 12.877 6.3418 12.6582C6.12301 12.4394 6 12.1427 6 11.8333ZM7 11.8333C7 11.8775 7.01757 11.9199 7.04883 11.9512C7.08008 11.9824 7.12246 12 7.16667 12H11.8333C11.8775 12 11.9199 11.9824 11.9512 11.9512C11.9824 11.9199 12 11.8775 12 11.8333V9.83333C12 9.78913 11.9824 9.74675 11.9512 9.71549C11.9199 9.68424 11.8775 9.66666 11.8333 9.66666H9.89323C9.67988 9.66383 9.47131 9.60265 9.29036 9.48958C9.10934 9.37644 8.96258 9.21539 8.86654 9.02474L8.86523 9.02148L8.58529 8.45507C8.58181 8.44804 8.57801 8.44079 8.57487 8.43359C8.56191 8.4039 8.54076 8.37843 8.51367 8.36067C8.48646 8.34293 8.45436 8.33324 8.42188 8.33333H7.16667C7.12247 8.33333 7.08008 8.3509 7.04883 8.38216C7.01757 8.41341 7 8.4558 7 8.5V11.8333Z\",\n pcc5de00:\n \"M13.3335 11.8332C13.3334 9.76626 12.0929 7.82004 10.8667 6.90026C10.7408 6.80584 10.6668 6.65723 10.6668 6.49987C10.6668 6.34257 10.7408 6.19454 10.8667 6.10013C11.2391 5.82069 11.537 5.45372 11.7339 5.03177C11.9307 4.60971 12.0208 4.14525 11.9956 3.68021C11.9704 3.21518 11.8307 2.76339 11.5893 2.3651C11.348 1.96687 11.012 1.63456 10.6115 1.39701C10.374 1.25614 10.2955 0.948965 10.4363 0.711458C10.5772 0.473956 10.8844 0.395477 11.1219 0.536328C11.6638 0.857761 12.1182 1.308 12.4448 1.84688C12.7713 2.38575 12.9602 2.99699 12.9943 3.62617C13.0284 4.25533 12.9065 4.88329 12.6401 5.4543C12.4614 5.8374 12.2195 6.18536 11.9285 6.48815C13.1966 7.66254 14.3334 9.66802 14.3335 11.8332C14.3335 12.1093 14.1095 12.3331 13.8335 12.3332C13.5573 12.3332 13.3335 12.1093 13.3335 11.8332Z\",\n};\n","import {\n Activity,\n AlertCircle,\n ArrowLeft,\n BarChart3,\n BookOpen,\n Bot,\n Briefcase,\n ChevronDown,\n ChevronRight,\n Database,\n FileText,\n FolderOpen,\n GitBranch,\n HelpCircle,\n Home,\n LayoutDashboard,\n LayoutGrid,\n Leaf,\n Link,\n MessageSquare,\n Settings,\n Target,\n} from \"lucide-react\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../../primitives/Tooltip\";\nimport svgPaths from \"./svg-ye4mpuwoci\";\n\n// ─── Shared Types ────────────────────────────────────────────────────────────\n\ninterface NavItem {\n id: string;\n label: string;\n active: boolean;\n icon: \"svg\" | \"lucide\";\n // SVG-based icon props\n paths?: string[];\n viewBox?: string;\n inset?: string;\n // Lucide icon\n LucideIcon?: React.ComponentType<{ className?: string; style?: React.CSSProperties }>;\n}\n\ntype NavMode = \"home\" | \"onboarding\" | \"bodhi\" | \"sustain\" | \"ecg\" | \"app-mod\" | \"sub-page\";\n\ninterface NavSubItem {\n id: string;\n label: string;\n description?: string;\n}\n\ninterface LeftNavigationProps {\n activePage: string;\n onNavigate: (page: string) => void;\n}\n\nfunction getSubItems(item: NavItem, navMode: NavMode): NavSubItem[] {\n if (navMode === \"home\" && item.id === \"projects\") {\n return [\n { id: \"projects\", label: \"Projects\", description: \"Project workspace\" },\n { id: \"app-access-request\", label: \"App Access Request\", description: \"Request access\" },\n ];\n }\n\n if (navMode === \"bodhi\" && item.id === \"bodhi-incidents\") {\n return [\n { id: \"bodhi-incidents-active\", label: \"Active Incidents\", description: \"Currently open\" },\n { id: \"bodhi-incidents-triage\", label: \"Triage Queue\", description: \"Pending review\" },\n { id: \"bodhi-incidents-resolved\", label: \"Resolved\", description: \"Past 30 days\" },\n ];\n }\n\n if (navMode === \"bodhi\" && item.id === \"bodhi-knowledge\") {\n return [\n { id: \"bodhi-knowledge-runbooks\", label: \"Runbooks\", description: \"Automated playbooks\" },\n { id: \"bodhi-knowledge-patterns\", label: \"Patterns\", description: \"Issue patterns\" },\n { id: \"bodhi-knowledge-config\", label: \"Config Library\", description: \"System configs\" },\n ];\n }\n\n if (navMode === \"sustain\" && item.id === \"sustain-dashboard\") {\n return [\n { id: \"sustain-dashboard-overview\", label: \"Overview\", description: \"Summary view\" },\n { id: \"sustain-dashboard-reports\", label: \"Reports\", description: \"ESG reports\" },\n { id: \"sustain-dashboard-trends\", label: \"Trends\", description: \"Historical data\" },\n ];\n }\n\n if (navMode === \"sustain\" && item.id === \"sustain-initiatives\") {\n return [\n { id: \"sustain-initiatives-active\", label: \"Active\", description: \"In progress\" },\n { id: \"sustain-initiatives-pipeline\", label: \"Pipeline\", description: \"Planned initiatives\" },\n { id: \"sustain-initiatives-completed\", label: \"Completed\", description: \"Past initiatives\" },\n ];\n }\n\n return [];\n}\n\nfunction getAppModNavItems(activePage: string): NavItem[] {\n return [\n {\n id: \"app-modernization\",\n label: \"Dashboard\",\n active: activePage === \"app-modernization\",\n icon: \"lucide\",\n LucideIcon: LayoutGrid,\n },\n {\n id: \"app-mod-settings\",\n label: \"Settings\",\n active: activePage === \"app-mod-settings\",\n icon: \"lucide\",\n LucideIcon: Settings,\n },\n {\n id: \"app-mod-templates\",\n label: \"Templates\",\n active: activePage === \"app-mod-templates\",\n icon: \"lucide\",\n LucideIcon: FileText,\n },\n {\n id: \"app-mod-docs\",\n label: \"Docs\",\n active: activePage === \"app-mod-docs\",\n icon: \"lucide\",\n LucideIcon: BookOpen,\n },\n ];\n}\n\n// ─── Determine nav mode from active page ─────────────────────────────────────\n\nfunction getNavMode(activePage: string): NavMode {\n if (\n [\n \"home\",\n \"projects\",\n \"workflow\",\n \"agents\",\n \"mcp\",\n \"resources\",\n \"manage-resources\",\n \"settings\",\n \"help\",\n \"feedback\",\n ].includes(activePage)\n )\n return \"home\";\n if (\n [\"dashboard\", \"hierarchy\", \"users\", \"roles\", \"manage-accounts\", \"jira-connections\"].includes(\n activePage,\n )\n )\n return \"onboarding\";\n if (activePage.startsWith(\"bodhi-\")) return \"bodhi\";\n if (activePage.startsWith(\"sustain-\")) return \"sustain\";\n if (\n [\n \"ecg-landing\",\n \"ecg-portfolios\",\n \"ecg-graph\",\n \"ecg-context-store\",\n \"ecg-manage-resources\",\n \"ecg-settings\",\n ].includes(activePage)\n )\n return \"ecg\";\n if (activePage.startsWith(\"app-mod\") || activePage === \"app-modernization\") return \"app-mod\";\n return \"sub-page\";\n}\n\n// ─── Nav Item Configs ────────────────────────────────────────────────────────\n\nfunction getHomeNavItems(activePage: string): NavItem[] {\n return [\n { id: \"home\", label: \"Home\", active: activePage === \"home\", icon: \"lucide\", LucideIcon: Home },\n {\n id: \"projects\",\n label: \"Projects\",\n active: activePage === \"projects\",\n icon: \"lucide\",\n LucideIcon: FolderOpen,\n },\n {\n id: \"workflow\",\n label: \"Workflow\",\n active: activePage === \"workflow\",\n icon: \"lucide\",\n LucideIcon: GitBranch,\n },\n {\n id: \"agents\",\n label: \"Agents\",\n active: activePage === \"agents\",\n icon: \"lucide\",\n LucideIcon: Bot,\n },\n { id: \"mcp\", label: \"MCP\", active: activePage === \"mcp\", icon: \"lucide\", LucideIcon: Link },\n {\n id: \"resources\",\n label: \"ECG\",\n active: activePage === \"resources\" || activePage === \"manage-resources\",\n icon: \"lucide\",\n LucideIcon: Activity,\n },\n {\n id: \"settings\",\n label: \"Settings\",\n active: activePage === \"settings\",\n icon: \"lucide\",\n LucideIcon: Settings,\n },\n {\n id: \"help\",\n label: \"Help\",\n active: activePage === \"help\",\n icon: \"lucide\",\n LucideIcon: HelpCircle,\n },\n {\n id: \"feedback\",\n label: \"Feedback\",\n active: activePage === \"feedback\",\n icon: \"lucide\",\n LucideIcon: MessageSquare,\n },\n ];\n}\n\nfunction getOnboardingNavItems(activePage: string): NavItem[] {\n return [\n {\n id: \"dashboard\",\n label: \"Dashboard\",\n active: activePage === \"dashboard\",\n icon: \"svg\",\n paths: [svgPaths.p22d2dc00, svgPaths.p4987580, svgPaths.p279d1fa0, svgPaths.p38866000],\n viewBox: \"0 0 13 13\",\n inset: \"inset-[9.38%]\",\n },\n {\n id: \"manage-accounts\",\n label: \"Org Management\",\n active: activePage === \"manage-accounts\",\n icon: \"lucide\",\n LucideIcon: Settings,\n },\n {\n id: \"jira-connections\",\n label: \"Jira Connections\",\n active: activePage === \"jira-connections\",\n icon: \"lucide\",\n LucideIcon: Link,\n },\n {\n id: \"hierarchy\",\n label: \"Hierarchy\",\n active: activePage === \"hierarchy\",\n icon: \"svg\",\n paths: [svgPaths.p36ca8400, svgPaths.pc279880, svgPaths.p2ed383f0, svgPaths.p36e63380],\n viewBox: \"0 0 13 13\",\n inset: \"inset-[9.38%]\",\n },\n {\n id: \"users\",\n label: \"Users\",\n active: activePage === \"users\",\n icon: \"svg\",\n paths: [svgPaths.p32fb3800, svgPaths.p36643e00, svgPaths.pcc5de00],\n viewBox: \"0 0 14.3335 13\",\n inset: \"inset-[9.38%_5.21%]\",\n },\n {\n id: \"roles\",\n label: \"Roles\",\n active: activePage === \"roles\",\n icon: \"svg\",\n paths: [svgPaths.p3e73ad00, svgPaths.p244a7b00, svgPaths.p1c4b9e80, svgPaths.p29ae5900],\n viewBox: \"0 0 14.3334 13\",\n inset: \"inset-[5.21%_5.21%_13.54%_5.21%]\",\n },\n ];\n}\n\nfunction getBodhiNavItems(activePage: string): NavItem[] {\n return [\n {\n id: \"bodhi-home\",\n label: \"Home\",\n active: activePage === \"bodhi-home\",\n icon: \"lucide\",\n LucideIcon: Home,\n },\n {\n id: \"bodhi-incidents\",\n label: \"Incidents\",\n active: activePage.startsWith(\"bodhi-incidents\"),\n icon: \"lucide\",\n LucideIcon: AlertCircle,\n },\n {\n id: \"bodhi-agents\",\n label: \"Agents\",\n active: activePage === \"bodhi-agents\",\n icon: \"lucide\",\n LucideIcon: Bot,\n },\n {\n id: \"bodhi-knowledge\",\n label: \"Knowledge\",\n active: activePage.startsWith(\"bodhi-knowledge\"),\n icon: \"lucide\",\n LucideIcon: BookOpen,\n },\n {\n id: \"bodhi-analytics\",\n label: \"Analytics\",\n active: activePage === \"bodhi-analytics\",\n icon: \"lucide\",\n LucideIcon: BarChart3,\n },\n {\n id: \"bodhi-settings\",\n label: \"Settings\",\n active: activePage === \"bodhi-settings\",\n icon: \"lucide\",\n LucideIcon: Settings,\n },\n {\n id: \"bodhi-help\",\n label: \"Help\",\n active: activePage === \"bodhi-help\",\n icon: \"lucide\",\n LucideIcon: HelpCircle,\n },\n ];\n}\n\nfunction getSustainNavItems(activePage: string): NavItem[] {\n return [\n {\n id: \"sustain-home\",\n label: \"Home\",\n active: activePage === \"sustain-home\",\n icon: \"lucide\",\n LucideIcon: Home,\n },\n {\n id: \"sustain-dashboard\",\n label: \"Dashboard\",\n active: activePage.startsWith(\"sustain-dashboard\"),\n icon: \"lucide\",\n LucideIcon: LayoutDashboard,\n },\n {\n id: \"sustain-initiatives\",\n label: \"Initiatives\",\n active: activePage.startsWith(\"sustain-initiatives\"),\n icon: \"lucide\",\n LucideIcon: Leaf,\n },\n {\n id: \"sustain-data\",\n label: \"Data Sources\",\n active: activePage === \"sustain-data\",\n icon: \"lucide\",\n LucideIcon: Database,\n },\n {\n id: \"sustain-goals\",\n label: \"Goals\",\n active: activePage === \"sustain-goals\",\n icon: \"lucide\",\n LucideIcon: Target,\n },\n {\n id: \"sustain-settings\",\n label: \"Settings\",\n active: activePage === \"sustain-settings\",\n icon: \"lucide\",\n LucideIcon: Settings,\n },\n {\n id: \"sustain-help\",\n label: \"Help\",\n active: activePage === \"sustain-help\",\n icon: \"lucide\",\n LucideIcon: HelpCircle,\n },\n ];\n}\n\nfunction getEcgNavItems(activePage: string): NavItem[] {\n return [\n {\n id: \"ecg-portfolios\",\n label: \"Workspaces\",\n active: activePage === \"ecg-portfolios\" || activePage === \"ecg-landing\",\n icon: \"lucide\",\n LucideIcon: Briefcase,\n },\n {\n id: \"ecg-graph\",\n label: \"Knowledge Graph\",\n active: activePage === \"ecg-graph\",\n icon: \"lucide\",\n LucideIcon: GitBranch,\n },\n {\n id: \"ecg-context-store\",\n label: \"Context Store\",\n active: activePage === \"ecg-context-store\" || activePage === \"ecg-manage-resources\",\n icon: \"lucide\",\n LucideIcon: Database,\n },\n {\n id: \"ecg-settings\",\n label: \"Settings\",\n active: activePage === \"ecg-settings\",\n icon: \"lucide\",\n LucideIcon: Settings,\n },\n ];\n}\n\n// ─── Reusable Nav Button ─────────────────────────────────────────────────────\n\nfunction NavButton({\n item,\n onClick,\n setButtonRef,\n hideTooltip,\n hasSubmenu,\n submenuOpen,\n tooltipSide = \"right\",\n}: {\n item: NavItem;\n onClick: () => void;\n setButtonRef?: (node: HTMLButtonElement | null) => void;\n hideTooltip?: boolean;\n hasSubmenu?: boolean;\n submenuOpen?: boolean;\n tooltipSide?: \"top\" | \"right\" | \"bottom\" | \"left\";\n}) {\n const button = (\n <button\n ref={setButtonRef}\n onClick={onClick}\n className=\"relative flex items-center justify-center w-[40px] h-[40px] rounded-full transition-all cursor-pointer\"\n style={item.active ? { backgroundColor: \"var(--nav-active-bg)\" } : {}}\n onMouseEnter={(e) => {\n !item.active && (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\");\n }}\n onMouseLeave={(e) => {\n !item.active && (e.currentTarget.style.backgroundColor = \"transparent\");\n }}\n aria-expanded={hasSubmenu ? submenuOpen : undefined}\n aria-haspopup={hasSubmenu ? \"menu\" : undefined}\n >\n {item.icon === \"svg\" && item.paths ? (\n <div className=\"overflow-clip relative shrink-0 size-[16px]\">\n <div className={`absolute ${item.inset}`}>\n <svg\n className=\"absolute block size-full\"\n fill=\"none\"\n preserveAspectRatio=\"none\"\n viewBox={item.viewBox}\n >\n <g>\n {item.paths.map((path, i) => (\n <path key={i} d={path} fill={item.active ? \"#EF4444\" : \"var(--foreground)\"} />\n ))}\n </g>\n </svg>\n </div>\n </div>\n ) : item.LucideIcon ? (\n <item.LucideIcon\n className=\"size-[16px]\"\n style={{ color: item.active ? \"#EF4444\" : \"var(--foreground)\" }}\n />\n ) : null}\n\n {hasSubmenu && (\n <span className=\"absolute right-[-2px] top-1/2 -translate-y-1/2 flex items-center justify-center h-[12px] w-[12px]\">\n {submenuOpen ? (\n <ChevronDown className=\"size-[10px]\" style={{ color: \"var(--muted-foreground)\" }} />\n ) : (\n <ChevronRight className=\"size-[10px]\" style={{ color: \"var(--muted-foreground)\" }} />\n )}\n </span>\n )}\n </button>\n );\n\n if (hideTooltip) {\n return button;\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <NavTooltipContent label={item.label} side={tooltipSide} />\n </Tooltip>\n );\n}\n\nfunction NavFlyout({\n item,\n subItems,\n rect,\n activePage,\n onNavigate,\n}: {\n item: NavItem;\n subItems: NavSubItem[];\n rect: DOMRect | null;\n activePage: string;\n onNavigate: (page: string) => void;\n}) {\n if (!rect || typeof document === \"undefined\") return null;\n\n const estimatedHeight = Math.min(\n 16 + subItems.length * 56,\n Math.max(160, window.innerHeight - 24),\n );\n const top = Math.max(12, Math.min(rect.top - 12, window.innerHeight - estimatedHeight - 12));\n const left = rect.right + 12;\n\n return createPortal(\n <div\n data-left-nav-flyout=\"true\"\n className=\"fixed z-50 w-fit min-w-[180px] max-w-[calc(100vw-96px)] rounded-[16px] border backdrop-blur-[45px] overflow-hidden\"\n style={{\n top,\n left,\n backgroundColor: \"var(--glass-subtle)\",\n borderColor: \"var(--border)\",\n boxShadow: \"var(--elevation-sm)\",\n }}\n >\n <div className=\"flex flex-col p-[8px] gap-[4px] max-h-[calc(100vh-120px)] overflow-auto\">\n {subItems.map((subItem) => {\n const isActive = subItem.id === activePage;\n return (\n <button\n key={subItem.id}\n onClick={() => {\n onNavigate(subItem.id);\n }}\n className=\"flex items-start justify-between gap-[12px] w-full text-left rounded-[12px] px-[12px] py-[10px] transition-all cursor-pointer\"\n style={{ backgroundColor: isActive ? \"var(--nav-active-bg)\" : \"transparent\" }}\n onMouseEnter={(e) =>\n !isActive && (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")\n }\n onMouseLeave={(e) =>\n !isActive && (e.currentTarget.style.backgroundColor = \"transparent\")\n }\n >\n <div className=\"flex flex-col gap-[2px] min-w-0\">\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n lineHeight: \"var(--leading-body-sm)\",\n fontWeight: isActive\n ? \"var(--font-weight-semibold)\"\n : \"var(--font-weight-normal)\",\n color: \"var(--foreground)\",\n }}\n >\n {subItem.label}\n </span>\n </div>\n <ChevronRight\n className=\"size-[14px] shrink-0 mt-[2px]\"\n style={{ color: \"var(--muted-foreground)\" }}\n />\n </button>\n );\n })}\n </div>\n </div>,\n document.body,\n );\n}\n\n// ─── Reusable Tooltip Content ────────────────────────────────────────────────\n\nfunction NavTooltipContent({\n label,\n side = \"right\",\n}: {\n label: string;\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n}) {\n return (\n <TooltipContent\n side={side}\n sideOffset={8}\n className=\"flex gap-[8px] items-center justify-center px-[8px] py-[6px] rounded-[8px] z-50 relative\"\n style={{ backgroundColor: \"var(--tooltip-bg)\" }}\n >\n <p\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"16px\",\n color: \"var(--tooltip-foreground)\",\n }}\n >\n {label}\n </p>\n </TooltipContent>\n );\n}\n\n// ─── Glass Nav Block ─────────────────────────────────────────────────────────\n\nfunction NavBlock({ children }: { children: React.ReactNode }) {\n return (\n <div\n className=\"backdrop-blur-[45px] rounded-[16px] shrink-0 w-full\"\n style={{ backgroundColor: \"var(--glass-strong)\" }}\n >\n <div className=\"flex flex-col gap-[8px] p-[8px]\">{children}</div>\n </div>\n );\n}\n\n// ─── Back Button Block ──────────────────────────────────────────────────────\n\nfunction BackButtonBlock({ onClick }: { onClick: () => void }) {\n return (\n <NavBlock>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n onClick={onClick}\n className=\"flex items-center justify-center w-[40px] h-[40px] rounded-full transition-all cursor-pointer\"\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <Home className=\"size-[16px]\" style={{ color: \"var(--foreground)\" }} />\n </button>\n </TooltipTrigger>\n <NavTooltipContent label=\"Home\" />\n </Tooltip>\n </NavBlock>\n );\n}\n\n// ─── Main LeftNavigation Component ───────────────────────────────────────────\n\nexport function LeftNavigation({ activePage, onNavigate }: LeftNavigationProps) {\n const navMode = getNavMode(activePage);\n const [openFlyoutItemId, setOpenFlyoutItemId] = useState<string | null>(null);\n const [flyoutAnchorRect, setFlyoutAnchorRect] = useState<DOMRect | null>(null);\n const buttonRefs = useRef<Record<string, HTMLButtonElement | null>>({});\n\n const homeItems = getHomeNavItems(activePage);\n const onboardingItems = getOnboardingNavItems(activePage);\n const bodhiItems = getBodhiNavItems(activePage);\n const sustainItems = getSustainNavItems(activePage);\n const ecgItems = getEcgNavItems(activePage);\n const appModItems = getAppModNavItems(activePage);\n const currentItems = useMemo(() => {\n if (navMode === \"home\") return homeItems;\n if (navMode === \"onboarding\") return onboardingItems;\n if (navMode === \"bodhi\") return bodhiItems;\n if (navMode === \"sustain\") return sustainItems;\n if (navMode === \"ecg\") return ecgItems;\n if (navMode === \"app-mod\") return appModItems;\n return [] as NavItem[];\n }, [navMode, homeItems, onboardingItems, bodhiItems, sustainItems, ecgItems, appModItems]);\n\n const flyoutItem = currentItems.find((item) => item.id === openFlyoutItemId) ?? null;\n const flyoutSubItems = flyoutItem ? getSubItems(flyoutItem, navMode) : [];\n\n const closeFlyout = () => {\n setOpenFlyoutItemId(null);\n setFlyoutAnchorRect(null);\n };\n\n const openFlyout = (item: NavItem) => {\n const subItems = getSubItems(item, navMode);\n if (!subItems.length) {\n closeFlyout();\n return;\n }\n\n const rect = buttonRefs.current[item.id]?.getBoundingClientRect() ?? null;\n if (!rect) return;\n setOpenFlyoutItemId(item.id);\n setFlyoutAnchorRect(rect);\n };\n\n const toggleFlyout = (item: NavItem) => {\n if (openFlyoutItemId === item.id) {\n closeFlyout();\n return;\n }\n openFlyout(item);\n };\n\n useEffect(() => {\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target as HTMLElement | null;\n if (!target) return;\n const inFlyout = Boolean(target.closest('[data-left-nav-flyout=\"true\"]'));\n const inRail = Boolean(target.closest('[data-left-nav-rail=\"true\"]'));\n if (!inFlyout && !inRail) closeFlyout();\n };\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") closeFlyout();\n };\n\n document.addEventListener(\"pointerdown\", handlePointerDown);\n document.addEventListener(\"keydown\", handleEscape);\n\n return () => {\n document.removeEventListener(\"pointerdown\", handlePointerDown);\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, []);\n\n return (\n <>\n {/* Desktop Sidebar */}\n <div\n className=\"hidden lg:flex flex-col gap-[12px] fixed left-[16px] top-[88px] z-40 w-[56px]\"\n data-left-nav-rail=\"true\"\n >\n {/* Back button block — shown for onboarding, ecg, app-mod, and sub-page modes */}\n {(navMode === \"onboarding\" ||\n navMode === \"ecg\" ||\n navMode === \"app-mod\" ||\n navMode === \"sub-page\") && <BackButtonBlock onClick={() => onNavigate(\"home\")} />}\n\n {/* Nav items block — only render if there are items */}\n {navMode !== \"sub-page\" && (\n <NavBlock>\n {currentItems.map((item, index) => {\n const hasSubmenu = getSubItems(item, navMode).length > 0;\n const isSubmenuOpen = openFlyoutItemId === item.id;\n\n return (\n <div\n key={navMode + \"-\" + item.id}\n className=\"nav-item-enter\"\n style={{ animationDelay: `${index * 40}ms` }}\n >\n <NavButton\n item={item}\n onClick={() => {\n if (hasSubmenu) {\n toggleFlyout(item);\n return;\n }\n closeFlyout();\n onNavigate(item.id);\n }}\n setButtonRef={(node) => {\n buttonRefs.current[item.id] = node;\n }}\n hideTooltip={false}\n hasSubmenu={hasSubmenu}\n submenuOpen={isSubmenuOpen}\n tooltipSide={hasSubmenu ? \"left\" : \"right\"}\n />\n </div>\n );\n })}\n </NavBlock>\n )}\n </div>\n\n {/* Desktop flyout: hover preview for submenu */}\n {flyoutItem && flyoutSubItems.length > 0 && navMode !== \"sub-page\" && (\n <NavFlyout\n item={flyoutItem}\n subItems={flyoutSubItems}\n rect={flyoutAnchorRect}\n activePage={activePage}\n onNavigate={(page) => {\n closeFlyout();\n onNavigate(page);\n }}\n />\n )}\n\n {/* Mobile Bottom Navigation */}\n <div\n className=\"lg:hidden fixed bottom-0 left-0 right-0 backdrop-blur-[45px] border-t z-40\"\n style={{ backgroundColor: \"var(--glass-strong)\", borderColor: \"var(--border)\" }}\n >\n <div className=\"flex items-center justify-around p-2 max-w-screen-sm mx-auto\">\n {/* Show back button on mobile for onboarding / ecg / app-mod / sub-page */}\n {(navMode === \"onboarding\" ||\n navMode === \"ecg\" ||\n navMode === \"app-mod\" ||\n navMode === \"sub-page\") && (\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n onClick={() => onNavigate(\"home\")}\n className=\"flex items-center justify-center w-12 h-12 rounded-full transition-all cursor-pointer\"\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")\n }\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <ArrowLeft className=\"size-[16px]\" style={{ color: \"var(--foreground)\" }} />\n </button>\n </TooltipTrigger>\n <NavTooltipContent label=\"Back\" side=\"top\" />\n </Tooltip>\n )}\n\n {/* Mobile nav items — show first 5 of whichever set is active */}\n {navMode === \"home\" &&\n homeItems.slice(0, 5).map((item) => (\n <Tooltip key={item.id}>\n <TooltipTrigger asChild>\n <button\n onClick={() => onNavigate(item.id)}\n className=\"flex items-center justify-center w-12 h-12 rounded-full transition-all cursor-pointer\"\n style={item.active ? { backgroundColor: \"var(--nav-active-bg)\" } : {}}\n onMouseEnter={(e) =>\n !item.active &&\n (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")\n }\n onMouseLeave={(e) =>\n !item.active && (e.currentTarget.style.backgroundColor = \"transparent\")\n }\n >\n {item.LucideIcon && (\n <item.LucideIcon\n className=\"size-[16px]\"\n style={{ color: item.active ? \"#EF4444\" : \"var(--foreground)\" }}\n />\n )}\n </button>\n </TooltipTrigger>\n <NavTooltipContent label={item.label} side=\"top\" />\n </Tooltip>\n ))}\n\n {navMode === \"onboarding\" &&\n onboardingItems.map((item) => (\n <Tooltip key={item.id}>\n <TooltipTrigger asChild>\n <button\n onClick={() => onNavigate(item.id)}\n className=\"flex items-center justify-center w-12 h-12 rounded-full transition-all cursor-pointer\"\n style={item.active ? { backgroundColor: \"var(--nav-active-bg)\" } : {}}\n onMouseEnter={(e) =>\n !item.active &&\n (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")\n }\n onMouseLeave={(e) =>\n !item.active && (e.currentTarget.style.backgroundColor = \"transparent\")\n }\n >\n {item.icon === \"svg\" && item.paths ? (\n <div className=\"overflow-clip relative shrink-0 size-[16px]\">\n <div className={`absolute ${item.inset}`}>\n <svg\n className=\"absolute block size-full\"\n fill=\"none\"\n preserveAspectRatio=\"none\"\n viewBox={item.viewBox}\n >\n <g>\n {item.paths.map((path, i) => (\n <path\n key={i}\n d={path}\n fill={item.active ? \"#EF4444\" : \"var(--foreground)\"}\n />\n ))}\n </g>\n </svg>\n </div>\n </div>\n ) : item.LucideIcon ? (\n <item.LucideIcon\n className=\"size-[16px]\"\n style={{ color: item.active ? \"#EF4444\" : \"var(--foreground)\" }}\n />\n ) : null}\n </button>\n </TooltipTrigger>\n <NavTooltipContent label={item.label} side=\"top\" />\n </Tooltip>\n ))}\n\n {navMode === \"bodhi\" &&\n bodhiItems.slice(0, 5).map((item) => (\n <Tooltip key={item.id}>\n <TooltipTrigger asChild>\n <button\n onClick={() => onNavigate(item.id)}\n className=\"flex items-center justify-center w-12 h-12 rounded-full transition-all cursor-pointer\"\n style={item.active ? { backgroundColor: \"var(--nav-active-bg)\" } : {}}\n onMouseEnter={(e) =>\n !item.active &&\n (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")\n }\n onMouseLeave={(e) =>\n !item.active && (e.currentTarget.style.backgroundColor = \"transparent\")\n }\n >\n {item.LucideIcon && (\n <item.LucideIcon\n className=\"size-[16px]\"\n style={{ color: item.active ? \"#EF4444\" : \"var(--foreground)\" }}\n />\n )}\n </button>\n </TooltipTrigger>\n <NavTooltipContent label={item.label} side=\"top\" />\n </Tooltip>\n ))}\n\n {navMode === \"sustain\" &&\n sustainItems.slice(0, 5).map((item) => (\n <Tooltip key={item.id}>\n <TooltipTrigger asChild>\n <button\n onClick={() => onNavigate(item.id)}\n className=\"flex items-center justify-center w-12 h-12 rounded-full transition-all cursor-pointer\"\n style={item.active ? { backgroundColor: \"var(--nav-active-bg)\" } : {}}\n onMouseEnter={(e) =>\n !item.active &&\n (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")\n }\n onMouseLeave={(e) =>\n !item.active && (e.currentTarget.style.backgroundColor = \"transparent\")\n }\n >\n {item.LucideIcon && (\n <item.LucideIcon\n className=\"size-[16px]\"\n style={{ color: item.active ? \"#EF4444\" : \"var(--foreground)\" }}\n />\n )}\n </button>\n </TooltipTrigger>\n <NavTooltipContent label={item.label} side=\"top\" />\n </Tooltip>\n ))}\n\n {navMode === \"ecg\" &&\n ecgItems.map((item) => (\n <Tooltip key={item.id}>\n <TooltipTrigger asChild>\n <button\n onClick={() => onNavigate(item.id)}\n className=\"flex items-center justify-center w-12 h-12 rounded-full transition-all cursor-pointer\"\n style={item.active ? { backgroundColor: \"var(--nav-active-bg)\" } : {}}\n onMouseEnter={(e) =>\n !item.active &&\n (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")\n }\n onMouseLeave={(e) =>\n !item.active && (e.currentTarget.style.backgroundColor = \"transparent\")\n }\n >\n {item.LucideIcon && (\n <item.LucideIcon\n className=\"size-[16px]\"\n style={{ color: item.active ? \"#EF4444\" : \"var(--foreground)\" }}\n />\n )}\n </button>\n </TooltipTrigger>\n <NavTooltipContent label={item.label} side=\"top\" />\n </Tooltip>\n ))}\n </div>\n </div>\n </>\n );\n}\n","export function Logo({ isDarkMode }: { isDarkMode: boolean }) {\n return (\n <div>\n <svg\n width=\"113\"\n height=\"37\"\n viewBox=\"0 0 113 37\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clip-path=\"url(#clip0_0_1)\">\n <path\n d=\"M35.6082 18.2807C35.6082 28.0252 27.6992 36.3105 17.9428 36.3105C8.18644 36.3105 0.277344 28.0252 0.277344 18.2807C0.277344 8.53618 8.18644 0.636719 17.9428 0.636719C27.6992 0.636719 35.6082 8.53618 35.6082 18.2807Z\"\n fill=\"white\"\n />\n <path\n d=\"M32.1757 18.2904C32.6898 18.2904 33.1893 18.3359 33.6762 18.4268C33.6294 19.1208 33.5011 19.8088 33.2919 20.4775C32.6416 20.3218 31.9783 20.2385 31.3031 20.2385V20.3063C31.1334 20.0192 30.8321 19.8118 30.4897 19.8118C29.9979 19.8118 29.5809 20.2297 29.5809 20.7207C29.5809 21.2117 29.9979 21.6297 30.4897 21.6297C30.9359 21.6297 31.3194 21.3691 31.4621 20.9985C32.1065 20.9985 32.7389 21.0722 33.3605 21.2079C32.998 22.4014 32.495 23.5646 31.8688 24.6556C31.4937 24.5947 31.1062 24.5683 30.7107 24.5683C27.213 24.5683 24.5052 27.2706 24.5052 30.7648C24.5052 34.2590 24.5243 31.8098 24.5631 32.0945C23.7722 32.4754 22.9625 32.8179 22.1369 33.0709C22.0379 32.6531 21.9787 32.2281 21.9532 31.7961C22.2627 31.6184 22.451 31.2960 22.451 30.9221C22.451 30.4310 22.0346 30.0147 21.5440 30.0147C21.0534 30.0147 20.6370 30.4310 20.6370 30.9221C20.6370 31.4148 20.8762 31.8399 21.2434 32.0087C21.2794 32.5243 21.3463 33.0345 21.4493 33.5365C20.4821 33.7647 19.4717 33.9060 18.4273 33.9668C18.2503 33.1379 18.1669 32.2901 18.1669 31.4187C18.1669 24.4305 23.9833 18.6085 31.0015 18.6085V18.2904ZM1.86157 18.2904C8.87897 18.2904 14.7072 24.1116 14.7072 31.1012C14.7072 31.9726 14.6238 32.8222 14.4473 33.6536C13.3725 33.5946 12.3176 33.4492 11.2913 33.2185C11.4030 32.8457 11.4673 32.4538 11.5007 32.0472C11.9361 31.9015 12.2630 31.5620 12.2630 31.1419C12.2630 30.6508 11.8466 30.2345 11.3560 30.2345C10.8654 30.2345 10.4490 30.6508 10.4490 31.1419C10.4490 31.4753 10.6244 31.7588 10.8977 31.9239C10.8736 32.3575 10.8129 32.7856 10.7172 33.2011C9.89166 32.9306 9.11226 32.6158 8.38256 32.2570C8.41829 31.9148 8.44453 31.5758 8.44453 31.2258C8.44453 27.7316 5.73675 24.8294 2.23875 24.8294C-1.25924 24.8294 1.71048 24.8477 1.42783 24.8863C1.08313 24.1174 0.800262 23.3265 0.563325 22.522C1.13894 22.3755 1.72638 22.2920 2.33195 22.2920C2.47630 22.7369 2.84934 23.0634 3.34102 23.0634C3.83269 23.0634 4.24999 22.6471 4.24999 22.1560C4.24999 21.6650 3.83269 21.2487 3.34102 21.2487C2.84934 21.2487 2.64535 21.5457 2.47605 21.8613V21.7874C1.77819 21.7874 1.10219 21.8923 0.459396 22.0967C0.234978 21.2533 0.0888672 20.391 0 19.5131C0.821876 19.3571 1.66486 19.2751 2.52376 19.2751L2.54399 20.2385V18.2904ZM31.0015 25.0845C31.1750 25.0845 31.3377 25.0838 31.5003 25.1102C30.1267 27.5438 28.1265 29.5387 25.7486 30.8986C25.7374 30.7329 25.7262 30.5737 25.7262 30.4109C25.7262 27.2893 27.8939 24.9819 30.5939 25.0845H31.0015ZM2.54399 25.0845C5.24476 25.0845 7.41343 27.2515 7.41343 30.2314C7.41343 33.2113 7.41343 30.5566 7.39127 30.7120C5.01335 29.3521 3.01313 27.3571 1.63924 25.0845C1.80854 25.0845 1.94971 25.0845 2.12307 25.0845L2.54399 25.0845ZM17.9289 6.83809C19.2770 12.0850 23.5200 16.1023 28.9134 17.2263C23.5200 18.3489 19.2770 22.3721 17.9289 27.6191C16.5809 22.3721 12.3378 18.3489 6.94425 17.2263C12.3378 16.1036 16.5809 12.0850 17.9289 6.83809ZM18.0003 13.5901C18.0003 16.1175 15.9970 18.1190 13.4666 18.1190C15.9970 18.1190 18.0003 20.1205 18.0003 22.6493C18.0003 20.1226 20.0049 18.1190 22.5368 18.1167C20.0049 18.1190 18.0003 16.1175 18.0003 13.5901Z\"\n fill=\"#EF4444\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_0_1\">\n <rect width=\"36\" height=\"36\" fill=\"white\" />\n </clipPath>\n </defs>\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M66.2671 5.16847C66.5358 5.16847 66.7542 4.94537 66.7542 4.67017C66.7542 4.39497 66.5351 4.17188 66.2671 4.17188C65.9991 4.17188 65.7793 4.39497 65.7793 4.67017C65.7793 4.94537 65.9984 5.16847 66.2671 5.16847Z\"\n fill=\"#030712\"\n ></path>\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M65.8809 12.7299H66.6424V6.11328H65.8809V12.7291V12.7299Z\"\n fill=\"#030712\"\n ></path>\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M50.7183 9.40396C50.7183 8.01914 51.7808 6.89118 53.0876 6.89118C54.3944 6.89118 55.4569 8.01841 55.4569 9.40396V9.50743C55.4067 10.8739 54.3657 11.9431 53.0876 11.9431C51.8096 11.9431 50.7183 10.8042 50.7183 9.40396ZM53.0869 12.7211C54.0072 12.7211 54.8607 12.3057 55.4555 11.5755V12.7291H56.2177V6.11328H55.4555V7.24638C54.8657 6.52425 54.0122 6.11328 53.0869 6.11328C51.3606 6.11328 49.9561 7.58909 49.9561 9.40396C49.9561 11.2188 51.3606 12.7211 53.0869 12.7211Z\"\n fill=\"#030712\"\n ></path>\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M61.3471 11.9424C60.0698 11.9424 59.0295 10.8732 58.9778 9.5067V9.40322C58.9778 8.01841 60.0403 6.89045 61.3471 6.89045C62.6539 6.89045 63.7157 8.01767 63.7157 9.40322C63.7157 10.7888 62.6532 11.9424 61.3471 11.9424ZM64.4772 9.40396C64.4772 7.58909 63.0727 6.11328 61.3464 6.11328C60.4211 6.11328 59.5676 6.52351 58.9771 7.24638V6.11328H58.2148V15.1142H58.9771V11.5755C59.5719 12.3064 60.4261 12.721 61.3464 12.721C63.0727 12.721 64.4772 11.2335 64.4772 9.40396Z\"\n fill=\"#030712\"\n ></path>\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M78.7283 6.11402C78.0049 6.11402 77.3202 6.41564 76.8245 6.94696V6.11402H76.0889V12.7299H76.8245V8.81172C76.8497 7.74614 77.7031 6.87871 78.7283 6.87871C79.7535 6.87871 80.6185 7.74468 80.6185 8.80952V12.7299H81.367V8.80952C81.367 7.3227 80.1831 6.11328 78.7283 6.11328\"\n fill=\"#030712\"\n ></path>\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M85.3071 11.971L85.2317 11.9923C85.1591 12.0129 85.0363 12.0371 84.8617 12.0371C84.5557 12.0371 84.4242 11.8389 84.4242 11.3737V6.86917H85.3229V6.10961H84.4242V3.88672H83.644V6.10888H82.7402V6.86843H83.644V11.3957C83.644 11.8932 83.7316 12.2176 83.9184 12.415C84.0916 12.6176 84.3574 12.7247 84.6864 12.7247C84.9335 12.7247 85.1527 12.6902 85.3028 12.6264L85.3452 12.6088L85.3071 11.971Z\"\n fill=\"#030712\"\n ></path>\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M71.415 6.88066C72.5314 6.88066 73.4891 7.70553 73.719 8.85184H69.073C69.328 7.68718 70.2806 6.88066 71.4143 6.88066H71.415ZM73.4 10.8201C72.9847 11.5224 72.2247 11.959 71.4143 11.959C70.1549 11.959 69.1168 10.9302 69.0234 9.60332H74.1579C74.3677 9.60332 74.5322 9.44774 74.5322 9.24739V9.18942C74.3979 7.43693 73.0573 6.11523 71.4143 6.11523C69.6815 6.11523 68.2705 7.60352 68.2705 9.43233C68.2705 11.2611 69.6808 12.723 71.4143 12.723C72.4732 12.723 73.4474 12.1667 74.0243 11.2354L73.4 10.8201Z\"\n fill=\"#030712\"\n ></path>\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M48.1994 9.53144C48.1994 9.53144 48.0019 9.37365 47.7878 9.28265C47.5744 9.19092 47.2684 9.08451 46.6333 8.92599C46.5471 8.90471 46.463 8.88636 46.384 8.86582C45.9594 8.7572 45.6239 8.61116 45.3876 8.43063C45.1526 8.22368 45.065 8.05195 45.0751 7.81932C45.0858 7.57347 45.2295 7.33496 45.4817 7.14709C45.7683 6.9306 46.1864 6.82272 46.6599 6.844C47.1965 6.86822 47.6046 7.14195 48.045 7.46999L48.0874 7.50155L48.6413 6.97463C48.5744 6.91005 48.5615 6.89978 48.3762 6.76988C47.9408 6.469 47.4063 6.1505 46.6908 6.11894C46.0679 6.09105 45.5119 6.22095 45.0815 6.49615C44.6153 6.81905 44.3207 7.288 44.315 7.78483C44.3099 8.15543 44.3847 8.50255 44.7475 8.85921C45.1807 9.28559 45.8545 9.51015 46.4709 9.63198C46.9997 9.73619 47.4882 9.93653 47.7339 10.145C48.0277 10.4202 48.1319 10.6198 48.1319 10.906C48.1204 11.1804 47.9451 11.4424 47.6455 11.6281C47.3452 11.8578 46.9156 11.9782 46.4673 11.9576C45.8768 11.9312 45.2669 11.6685 44.6519 11.1768L44.6095 11.1423L44.0664 11.6509L44.1203 11.6986C44.8358 12.3297 45.6146 12.6739 46.4343 12.7208C47.0485 12.7487 47.5838 12.599 48.073 12.2651C48.5788 11.9077 48.8582 11.449 48.8805 10.939C48.9035 10.3967 48.6427 9.85728 48.1994 9.5307\"\n fill=\"#030712\"\n ></path>\n <path\n d=\"M52.1064 22.9933L50.7464 24.5933C50.1864 24.1733 49.6464 23.9533 49.1264 23.9533C48.5264 23.9533 48.0664 24.3133 48.0664 24.7733C48.0664 25.2533 48.3264 25.4133 49.6264 25.8733C51.9064 26.6733 52.6064 27.3533 52.6064 28.9133C52.6064 30.9733 50.9064 32.4333 48.5064 32.4333C47.0064 32.4333 45.7664 31.8933 44.7864 30.8133L46.2064 29.1333C46.9664 29.8933 47.7464 30.2933 48.5264 30.2933C49.2264 30.2933 49.7664 29.8333 49.7664 29.2133C49.7664 28.6733 49.5464 28.4333 48.2664 27.9733C45.8864 27.1333 45.4064 26.4933 45.4064 25.0733C45.4064 23.1733 46.9464 21.9533 48.9064 21.9533C50.1064 21.9533 51.1664 22.2933 52.1064 22.9933ZM54.5266 22.3133H57.2866V27.8733C57.2866 29.3533 57.9466 30.0933 59.2666 30.0933C60.6066 30.0933 61.2666 29.3533 61.2666 27.8733V22.3133H64.0066V28.3333C64.0066 30.9533 62.3066 32.4133 59.2666 32.4133C56.2266 32.4133 54.5266 30.9533 54.5266 28.3333V22.3133ZM73.3369 22.9933L71.9769 24.5933C71.4169 24.1733 70.8769 23.9533 70.3569 23.9533C69.7569 23.9533 69.2969 24.3133 69.2969 24.7733C69.2969 25.2533 69.5569 25.4133 70.8569 25.8733C73.1369 26.6733 73.8369 27.3533 73.8369 28.9133C73.8369 30.9733 72.1369 32.4333 69.7369 32.4333C68.2369 32.4333 66.9969 31.8933 66.0169 30.8133L67.4369 29.1333C68.1969 29.8933 68.9769 30.2933 69.7569 30.2933C70.4569 30.2933 70.9969 29.8333 70.9969 29.2133C70.9969 28.6733 70.7769 28.4333 69.4969 27.9733C67.1169 27.1333 66.6369 26.4933 66.6369 25.0733C66.6369 23.1733 68.1769 21.9533 70.1369 21.9533C71.3369 21.9533 72.3969 22.2933 73.3369 22.9933ZM75.777 24.6733H74.697V22.3133H75.777V18.9733H78.537V22.3133H80.457V24.6733H78.537V27.5933C78.537 29.1133 78.717 29.9933 79.737 29.9933C79.917 29.9933 80.097 29.9733 80.237 29.9533V32.3533C79.937 32.3933 79.377 32.4133 79.077 32.4133C76.937 32.4133 75.777 30.8333 75.777 28.5733V24.6733ZM90.0023 27.2333C90.0023 25.7133 88.7623 24.4733 87.2623 24.4733C85.7223 24.4733 84.5223 25.6933 84.5223 27.2133C84.5223 28.7333 85.7223 29.9533 87.2623 29.9533C88.7223 29.9533 90.0023 28.7133 90.0023 27.2333ZM89.7023 23.5733V22.3133H92.4623V32.1133H89.7023V30.8333C88.8623 31.8933 87.8023 32.4133 86.5023 32.4133C83.7423 32.4133 81.6823 30.1533 81.6823 27.1933C81.6823 24.2733 83.7223 21.9933 86.4423 21.9933C87.7223 21.9933 88.8023 22.5333 89.7023 23.5733ZM95.0139 22.3133H97.7739V32.1133H95.0139V22.3133ZM94.7539 18.1733C94.7539 17.2733 95.4939 16.5333 96.3939 16.5333C97.2939 16.5333 98.0339 17.2733 98.0339 18.1733C98.0339 19.0733 97.2939 19.8133 96.3939 19.8133C95.4939 19.8133 94.7539 19.0733 94.7539 18.1733ZM100.327 32.1133V22.3133H103.087V23.5333C103.887 22.5133 104.907 21.9933 106.147 21.9933C108.127 21.9933 109.787 23.1333 109.787 25.7733V32.1133H107.027V26.7333C107.027 25.0933 106.567 24.3333 105.167 24.3333C103.787 24.3333 103.087 25.1933 103.087 27.0333V32.1133H100.327Z\"\n fill=\"#030712\"\n ></path>\n </svg>\n </div>\n );\n}\n","import { Monitor, Tablet } from \"lucide-react\";\n\nexport function MobileGate() {\n return (\n <div\n className=\"fixed inset-0 flex md:hidden flex-col items-center justify-center px-[32px] py-[48px] gap-[32px]\"\n style={{ backgroundColor: \"var(--background)\", zIndex: 99999 }}\n >\n {/* Icon cluster */}\n <div className=\"flex items-center gap-[16px]\">\n <div\n className=\"flex items-center justify-center w-[56px] h-[56px] rounded-[16px]\"\n style={{ backgroundColor: \"var(--muted)\" }}\n >\n <Monitor className=\"size-[28px]\" style={{ color: \"var(--foreground)\" }} />\n </div>\n <div\n className=\"flex items-center justify-center w-[56px] h-[56px] rounded-[16px]\"\n style={{ backgroundColor: \"var(--muted)\" }}\n >\n <Tablet className=\"size-[28px]\" style={{ color: \"var(--muted-foreground)\" }} />\n </div>\n </div>\n\n {/* Text */}\n <div className=\"flex flex-col items-center gap-[12px] max-w-[320px] text-center\">\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-2xl)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"32px\",\n color: \"var(--foreground)\",\n }}\n >\n Desktop Experience Only\n </span>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n This portal is optimized for desktop and tablet screens. Please switch to a device with a\n larger display for the best experience.\n </span>\n </div>\n\n {/* Visual hint */}\n <div\n className=\"flex items-center gap-[8px] px-[16px] py-[10px] rounded-[9999px]\"\n style={{ backgroundColor: \"var(--muted)\" }}\n >\n <div\n className=\"w-[8px] h-[8px] rounded-full\"\n style={{ backgroundColor: \"var(--chart-2)\" }}\n />\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n 768px minimum width required\n </span>\n </div>\n </div>\n );\n}\n","import { Moon, Sun, User } from \"lucide-react\";\nimport { useState } from \"react\";\n\n// Placeholder avatar image\nconst placeholderAvatar =\n 'data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\"%3E%3Cdefs%3E%3ClinearGradient id=\"av\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\"%3E%3Cstop offset=\"0%\" style=\"stop-color:%237c3aed;stop-opacity:1\" /%3E%3Cstop offset=\"100%\" style=\"stop-color:%235b21b6;stop-opacity:1\" /%3E%3C/linearGradient%3E%3C/defs%3E%3Crect width=\"40\" height=\"40\" rx=\"20\" fill=\"url(%23av)\" /%3E%3Ctext x=\"50%\" y=\"50%\" dominant-baseline=\"middle\" text-anchor=\"middle\" font-size=\"20\" fill=\"white\" font-weight=\"bold\"%3EPS%3C/text%3E%3C/svg%3E';\n\n// PSAI Logo Icon (the red circular icon with geometric pattern)\nfunction PSAILogoIcon() {\n return (\n <svg\n width=\"151\"\n height=\"38\"\n viewBox=\"0 0 151 38\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{ fill: \"var(--color-red-500)\" }}\n >\n <path d=\"M18.0824 0C8.11124 0 0 8.28513 0 18.4701C0 28.655 8.11124 36.9401 18.0824 36.9401C28.0536 36.9401 36.1648 28.655 36.1648 18.4701C36.1648 8.28513 28.0517 0 18.0824 0Z\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M31.5785 24.1953C31.3084 24.8592 30.5627 25.1735 29.9127 24.8976C29.2628 24.6216 28.9551 23.86 29.2234 23.1961C29.4935 22.5322 30.2391 22.2179 30.8891 22.4919C31.5391 22.7678 31.8468 23.5295 31.5766 24.1934\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M23.6623 32.2649C23.0104 32.5389 22.2666 32.2227 21.9965 31.5588C21.7283 30.8949 22.0378 30.1313 22.6878 29.8573C23.3396 29.5833 24.0853 29.8995 24.3535 30.5634C24.6218 31.2292 24.3123 31.989 23.6623 32.2649Z\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12.4762 32.2553C11.8262 31.9794 11.5186 31.2178 11.7868 30.5538C12.057 29.8899 12.8026 29.5757 13.4545 29.8497C14.1045 30.1256 14.4121 30.8872 14.142 31.5512C13.8719 32.2151 13.1262 32.5312 12.4762 32.2534\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M4.57415 24.1675C4.3059 23.5036 4.61542 22.742 5.26541 22.468C5.91727 22.194 6.66105 22.5101 6.9293 23.174C7.19755 23.8399 6.88803 24.5996 6.23804 24.8755C5.58806 25.1495 4.8424 24.8334 4.57415 24.1694\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M4.58664 12.7439C4.85676 12.0799 5.60242 11.7657 6.25428 12.0397C6.90427 12.3156 7.21191 13.0772 6.94179 13.7412C6.67166 14.4051 5.92601 14.7193 5.27602 14.4434C4.62603 14.1675 4.31839 13.4059 4.58664 12.7419\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12.5028 4.67236C13.1546 4.39836 13.8984 4.71451 14.1685 5.37844C14.4368 6.04236 14.1272 6.804 13.4763 7.078C12.8263 7.352 12.0807 7.03585 11.8124 6.37192C11.5442 5.70609 11.8537 4.94636 12.5037 4.67044\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M23.6874 4.68482C24.3374 4.96074 24.645 5.72238 24.3749 6.3863C24.1048 7.05022 23.3591 7.36446 22.7091 7.08854C22.0591 6.81263 21.7515 6.05099 22.0197 5.38706C22.2899 4.72314 23.0355 4.40699 23.6855 4.6829\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M31.5894 12.7707C31.8576 13.4365 31.5481 14.1982 30.8981 14.4722C30.2481 14.7462 29.5025 14.43 29.2324 13.7661C28.9641 13.1022 29.2736 12.3405 29.9236 12.0665C30.5755 11.7925 31.3193 12.1087 31.5894 12.7726\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M19.416 20.9658C18.4246 22.3597 17.7193 24.6149 19.0296 25.9524C19.9188 26.8606 19.2481 28.3666 18.0495 28.3666C16.8508 28.3666 16.1802 26.8606 17.0693 25.9524C18.3796 24.614 17.6762 22.3607 16.6829 20.9658C16.5103 20.7234 15.8556 19.9962 15.6362 19.8343C14.2696 18.8217 12.0636 18.1012 10.7542 19.4396C9.86506 20.3478 8.39062 19.6628 8.39062 18.4384C8.39062 17.2141 9.86599 16.5291 10.7542 17.4373C12.0645 18.7757 14.2705 18.0552 15.6362 17.0426C15.8735 16.8663 16.5853 16.1976 16.7439 15.9734C17.7352 14.5775 18.4406 12.3261 17.1303 10.9868C16.2411 10.0786 16.9117 8.57255 18.1104 8.57255C19.3091 8.57255 19.9797 10.0795 19.0906 10.9868C17.7803 12.3252 18.4856 14.5785 19.477 15.9734C19.6496 16.2158 20.3042 16.9429 20.5237 17.1049C21.8903 18.1175 24.0944 18.838 25.4057 17.4996C26.2948 16.5913 27.7692 17.2763 27.7692 18.5007C27.7692 19.7251 26.2948 20.4101 25.4057 19.5019C24.0954 18.1635 21.8893 18.8839 20.5237 19.8966C20.2864 20.0729 19.5745 20.7416 19.416 20.9658Z\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M25.0352 11.3672C25.7846 12.1326 25.7846 13.3723 25.0352 14.1359C24.2858 14.8994 23.0721 14.9014 22.3245 14.1359C21.577 13.3704 21.5751 12.1307 22.3245 11.3672C23.0739 10.6017 24.2876 10.6017 25.0352 11.3672Z\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M25.0373 25.5739C24.2878 26.3394 23.0742 26.3394 22.3248 25.5739C21.5753 24.8085 21.5753 23.5688 22.3248 22.8052C23.0742 22.0397 24.286 22.0397 25.0354 22.8052C25.7848 23.5707 25.7848 24.8104 25.0354 25.5739\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11.1275 25.5739C10.3781 24.8085 10.3781 23.5688 11.1275 22.8052C11.8769 22.0397 13.0906 22.0397 13.8381 22.8052C14.5875 23.5707 14.5875 24.8104 13.8381 25.5739C13.0887 26.3394 11.875 26.3394 11.1275 25.5739Z\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11.1275 11.3672C11.8769 10.6017 13.0906 10.6017 13.8381 11.3672C14.5875 12.1326 14.5875 13.3723 13.8381 14.1378C13.0887 14.9033 11.875 14.9033 11.1275 14.1378C10.3781 13.3723 10.3781 12.1345 11.1275 11.3691\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M66.3657 5.63905C66.6344 5.63905 66.8528 5.41596 66.8528 5.14075C66.8528 4.86555 66.6337 4.64246 66.3657 4.64246C66.0978 4.64246 65.8779 4.86555 65.8779 5.14075C65.8779 5.41596 66.097 5.63905 66.3657 5.63905Z\"\n fill=\"var(--foreground)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M65.9785 13.1995H66.74V6.58289H65.9785V13.1987V13.1995Z\"\n fill=\"var(--foreground)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M50.8164 9.87356C50.8164 8.48875 51.879 7.36079 53.1858 7.36079C54.4926 7.36079 55.5551 8.48801 55.5551 9.87356V9.97704C55.5048 11.3435 54.4638 12.4128 53.1858 12.4128C51.9077 12.4128 50.8164 11.2738 50.8164 9.87356ZM53.185 13.1907C54.1053 13.1907 54.9588 12.7753 55.5536 12.0451V13.1987H56.3159V6.58289H55.5536V7.71598C54.9638 6.99385 54.1104 6.58289 53.185 6.58289C51.4587 6.58289 50.0542 8.0587 50.0542 9.87356C50.0542 11.6884 51.4587 13.1907 53.185 13.1907Z\"\n fill=\"var(--foreground)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M61.4458 12.412C60.1684 12.412 59.1282 11.3428 59.0764 9.9763V9.87283C59.0764 8.48801 60.139 7.36005 61.4458 7.36005C62.7525 7.36005 63.8144 8.48728 63.8144 9.87283C63.8144 11.2584 62.7518 12.412 61.4458 12.412ZM64.5759 9.87356C64.5759 8.0587 63.1714 6.58289 61.445 6.58289C60.5197 6.58289 59.6662 6.99312 59.0757 7.71598V6.58289H58.3135V15.5838H59.0757V12.0451C59.6706 12.776 60.5247 13.1907 61.445 13.1907C63.1714 13.1907 64.5759 11.7031 64.5759 9.87356Z\"\n fill=\"var(--foreground)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M78.8265 6.58264C78.103 6.58264 77.4184 6.88426 76.9227 7.41559V6.58264H76.187V13.1985H76.9227V9.28035C76.9478 8.21477 77.8013 7.34734 78.8265 7.34734C79.8516 7.34734 80.7166 8.2133 80.7166 9.27815V13.1985H81.4652V9.27815C81.4652 7.79133 80.2812 6.58191 78.8265 6.58191\"\n fill=\"var(--foreground)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M85.4048 12.4406L85.3294 12.4619C85.2568 12.4825 85.1339 12.5067 84.9594 12.5067C84.6533 12.5067 84.5219 12.3085 84.5219 11.8433V7.33877H85.4206V6.57922H84.5219V4.35632H83.7417V6.57848H82.8379V7.33804H83.7417V11.8653C83.7417 12.3628 83.8293 12.6872 84.0161 12.8846C84.1892 13.0872 84.455 13.1943 84.7841 13.1943C85.0312 13.1943 85.2503 13.1598 85.4005 13.096L85.4429 13.0784L85.4048 12.4406Z\"\n fill=\"var(--foreground)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M71.5131 7.35027C72.6296 7.35027 73.5872 8.17514 73.8171 9.32144H69.1711C69.4262 8.15679 70.3788 7.35027 71.5124 7.35027H71.5131ZM73.4981 11.2897C73.0829 11.992 72.3228 12.4286 71.5124 12.4286C70.253 12.4286 69.2149 11.3998 69.1215 10.0729H74.256C74.4658 10.0729 74.6303 9.91734 74.6303 9.717V9.65902C74.496 7.90654 73.1554 6.58484 71.5124 6.58484C69.7796 6.58484 68.3687 8.07313 68.3687 9.90193C68.3687 11.7307 69.7789 13.1926 71.5124 13.1926C72.5714 13.1926 73.5455 12.6363 74.1224 11.7051L73.4981 11.2897Z\"\n fill=\"var(--foreground)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M48.2976 10.001C48.2976 10.001 48.1 9.84326 47.8859 9.75226C47.6726 9.66053 47.3665 9.55411 46.7314 9.3956C46.6452 9.37432 46.5612 9.35597 46.4821 9.33542C46.0576 9.22681 45.7221 9.08077 45.4857 8.90024C45.2508 8.69328 45.1631 8.52156 45.1732 8.28892C45.184 8.04307 45.3277 7.80457 45.5798 7.6167C45.8665 7.4002 46.2846 7.29233 46.758 7.31361C47.2947 7.33783 47.7027 7.61156 48.1431 7.9396L48.1855 7.97116L48.7394 7.44424C48.6726 7.37966 48.6597 7.36938 48.4743 7.23949C48.039 6.9386 47.5044 6.6201 46.7889 6.58854C46.166 6.56066 45.61 6.69055 45.1797 6.96575C44.7134 7.28866 44.4189 7.7576 44.4131 8.25443C44.4081 8.62503 44.4828 8.97215 44.8456 9.32882C45.2788 9.75519 45.9527 9.97976 46.5691 10.1016C47.0978 10.2058 47.5863 10.4061 47.832 10.6146C48.1259 10.8898 48.23 11.0894 48.23 11.3756C48.2186 11.65 48.0433 11.912 47.7437 12.0977C47.4434 12.3274 47.0138 12.4478 46.5655 12.4272C45.9749 12.4008 45.365 12.1381 44.7501 11.6464L44.7077 11.6119L44.1646 12.1205L44.2184 12.1682C44.934 12.7993 45.7127 13.1435 46.5324 13.1904C47.1467 13.2183 47.6819 13.0686 48.1711 12.7347C48.6769 12.3773 48.9564 11.9186 48.9786 11.4086C49.0016 10.8663 48.7408 10.3269 48.2976 10.0003\"\n fill=\"var(--foreground)\"\n />\n <path\n d=\"M53.2646 27.7038C53.2646 26.1838 52.0246 24.9438 50.5246 24.9438C48.9846 24.9438 47.7846 26.1638 47.7846 27.6838C47.7846 29.2038 48.9846 30.4238 50.5246 30.4238C51.9846 30.4238 53.2646 29.1838 53.2646 27.7038ZM52.9646 24.0438V22.7838H55.7246V32.5838H52.9646V31.3038C52.1246 32.3638 51.0646 32.8838 49.7646 32.8838C47.0046 32.8838 44.9446 30.6238 44.9446 27.6638C44.9446 24.7438 46.9846 22.4638 49.7046 22.4638C50.9846 22.4638 52.0646 23.0038 52.9646 24.0438ZM58.2761 22.7838H61.0361V32.5838H58.2761V22.7838ZM58.0161 18.6438C58.0161 17.7438 58.7561 17.0038 59.6561 17.0038C60.5561 17.0038 61.2961 17.7438 61.2961 18.6438C61.2961 19.5438 60.5561 20.2838 59.6561 20.2838C58.7561 20.2838 58.0161 19.5438 58.0161 18.6438ZM75.5214 27.7038C75.5214 26.1838 74.3414 24.9438 72.7814 24.9438C71.2214 24.9438 70.0214 26.2038 70.0214 27.6838C70.0214 29.1638 71.2614 30.4238 72.7814 30.4238C74.2814 30.4238 75.5214 29.1638 75.5214 27.7038ZM70.3214 31.3038V37.8038H67.5614V22.7838H70.3214V24.0438C71.1614 23.0038 72.2214 22.4638 73.5214 22.4638C76.2814 22.4638 78.3414 24.7438 78.3414 27.6838C78.3414 30.6438 76.2614 32.8838 73.5814 32.8838C72.3014 32.8838 71.2214 32.3638 70.3214 31.3038ZM80.4325 32.5838V22.7838H83.1925V24.2638C83.8725 23.0638 84.8125 22.4638 86.0325 22.4638C86.4125 22.4638 86.8125 22.5438 87.2325 22.7038L86.8525 25.2838C86.4325 25.0638 85.9925 24.9438 85.5325 24.9438C83.9725 24.9438 83.1925 25.9238 83.1925 27.8838V32.5838H80.4325ZM90.858 27.6438C90.858 29.2038 92.078 30.4238 93.618 30.4238C95.138 30.4238 96.398 29.1838 96.398 27.6838C96.398 26.2038 95.138 24.9438 93.618 24.9438C92.138 24.9438 90.858 26.2038 90.858 27.6438ZM88.018 27.6038C88.018 24.6238 90.398 22.4638 93.638 22.4638C96.878 22.4638 99.218 24.6238 99.218 27.6638C99.218 30.8238 96.858 32.8838 93.578 32.8838C90.238 32.8838 88.018 30.7038 88.018 27.6038ZM109.111 27.7038C109.111 26.1838 107.871 24.9438 106.371 24.9438C104.871 24.9438 103.631 26.1838 103.631 27.6838C103.631 29.1838 104.871 30.4238 106.371 30.4238C107.831 30.4238 109.111 29.1838 109.111 27.7038ZM108.811 24.0438V15.6238H111.571V32.5838H108.811V31.3038C107.971 32.3638 106.911 32.8838 105.611 32.8838C102.851 32.8838 100.791 30.6638 100.791 27.6638C100.791 24.7438 102.851 22.4638 105.551 22.4638C106.831 22.4638 107.911 23.0038 108.811 24.0438ZM114.163 22.7838H116.923V28.3438C116.923 29.8238 117.583 30.5638 118.903 30.5638C120.243 30.5638 120.903 29.8238 120.903 28.3438V22.7838H123.643V28.8038C123.643 31.4238 121.943 32.8838 118.903 32.8838C115.863 32.8838 114.163 31.4238 114.163 28.8038V22.7838ZM133.593 23.0638V25.7638C132.873 25.2038 132.133 24.9438 131.353 24.9438C129.773 24.9438 128.553 26.0838 128.553 27.6838C128.553 29.2838 129.753 30.4238 131.353 30.4238C132.153 30.4238 132.893 30.1438 133.593 29.6038V32.3038C132.753 32.6838 131.913 32.8838 131.073 32.8838C128.013 32.8838 125.713 30.6438 125.713 27.7238C125.713 24.7438 128.033 22.4638 131.113 22.4638C132.013 22.4638 132.833 22.6638 133.593 23.0638ZM135.687 25.1438H134.607V22.7838H135.687V19.4438H138.447V22.7838H140.367V25.1438H138.447V28.0638C138.447 29.5838 138.627 30.4638 139.647 30.4638C139.827 30.4638 140.007 30.4438 140.147 30.4238V32.8238C139.847 32.8638 139.287 32.8838 138.987 32.8838C136.847 32.8838 135.687 31.3038 135.687 29.0438V25.1438ZM148.852 23.4638L147.492 25.0638C146.932 24.6438 146.392 24.4238 145.872 24.4238C145.272 24.4238 144.812 24.7838 144.812 25.2438C144.812 25.7238 145.072 25.8838 146.372 26.3438C148.652 27.1438 149.352 27.8238 149.352 29.3838C149.352 31.4438 147.652 32.9038 145.252 32.9038C143.752 32.9038 142.512 32.3638 141.532 31.2838L142.952 29.6038C143.712 30.3638 144.492 30.7638 145.272 30.7638C145.972 30.7638 146.512 30.3038 146.512 29.6838C146.512 29.1438 146.292 28.9038 145.012 28.4438C142.632 27.6038 142.152 26.9638 142.152 25.5438C142.152 23.6438 143.692 22.4238 145.652 22.4238C146.852 22.4238 147.912 22.7638 148.852 23.4638Z\"\n fill=\"var(--foreground)\"\n />\n </svg>\n );\n}\n\ninterface PSAIHeaderProps {\n isDarkMode: boolean;\n onToggleTheme: () => void;\n onAdminLogin?: () => void;\n adminLoginLabel?: string;\n onBack?: () => void;\n showBackButton?: boolean;\n}\n\nexport function PSAIHeader({\n isDarkMode,\n onToggleTheme,\n onAdminLogin,\n adminLoginLabel = \"Domain Admin Login\",\n onBack,\n showBackButton = false,\n}: PSAIHeaderProps) {\n const [loginHovered, setLoginHovered] = useState(false);\n const [backHovered, setBackHovered] = useState(false);\n\n return (\n <div\n className=\"backdrop-blur-[45px] rounded-[16px] shrink-0 w-full\"\n style={{ backgroundColor: \"var(--glass-heavy)\" }}\n >\n <div className=\"flex items-center px-[12px] py-[8px] gap-[20px]\">\n {/* Logo Panel */}\n <div className=\"flex-1 flex items-center\">\n <div className=\"flex items-center gap-[8px]\">\n {/* Back Button */}\n {showBackButton && onBack && (\n <button\n className=\"flex items-center justify-center w-[40px] h-[40px] rounded-full transition-all cursor-pointer mr-[8px]\"\n style={{\n backgroundColor: backHovered ? \"var(--glass-medium)\" : \"transparent\",\n border: \"1px solid var(--border)\",\n }}\n onMouseEnter={() => setBackHovered(true)}\n onMouseLeave={() => setBackHovered(false)}\n onClick={onBack}\n aria-label=\"Go back\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19 12H5\"\n stroke=\"var(--foreground)\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M12 19L5 12L12 5\"\n stroke=\"var(--foreground)\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n )}\n <PSAILogoIcon />\n </div>\n </div>\n\n {/* Right Actions */}\n <div className=\"flex items-center gap-[8px]\">\n {/* Admin Login / Custom Action */}\n {onAdminLogin && (\n <button\n className=\"hidden sm:flex items-center gap-[8px] px-[24px] py-[10px] min-h-[40px] rounded-full transition-all cursor-pointer relative\"\n style={{\n backgroundColor: loginHovered ? \"var(--glass-medium)\" : \"transparent\",\n border: \"1px solid var(--border)\",\n color: \"var(--foreground)\",\n }}\n onMouseEnter={() => setLoginHovered(true)}\n onMouseLeave={() => setLoginHovered(false)}\n onClick={onAdminLogin}\n >\n <User className=\"size-[16px]\" />\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n }}\n >\n {adminLoginLabel}\n </span>\n </button>\n )}\n\n {/* Theme Switcher */}\n <button\n onClick={onToggleTheme}\n className=\"flex items-center justify-center w-[40px] h-[40px] rounded-full bg-transparent transition-colors hover:bg-[var(--glass-medium)]\"\n aria-label={isDarkMode ? \"Switch to light mode\" : \"Switch to dark mode\"}\n >\n {isDarkMode ? (\n <Sun className=\"w-4 h-4\" style={{ color: \"var(--foreground)\" }} />\n ) : (\n <Moon className=\"w-4 h-4\" style={{ color: \"var(--foreground)\" }} />\n )}\n </button>\n\n {/* Avatar */}\n <div className=\"w-[40px] h-[40px] rounded-full overflow-hidden\">\n <img src={placeholderAvatar} alt=\"Avatar\" className=\"w-full h-full object-cover\" />\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import {\n Activity,\n AlertCircle,\n AlertTriangle,\n Bot,\n CheckCircle,\n ChevronsUpDown,\n Clock,\n Filter,\n Minimize2,\n X,\n Zap,\n} from \"lucide-react\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { AIChatPanel } from \"../../patterns/AiChatPanel\";\nimport {\n defaultFallbackResponse,\n defaultMockResponses,\n defaultSuggestedPrompts,\n} from \"../../patterns/AiChatPanel\";\nimport { activityTypeLabels, useActivity } from \"../../patterns/AiChatPanel/activity-context\";\nimport type {\n ActivityEvent,\n ActivityFilterType,\n ActivitySeverity,\n} from \"../../patterns/AiChatPanel/activity-context\";\nimport { useRightPanel } from \"../../patterns/AiChatPanel/right-panel-context\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../../primitives/Tooltip\";\n\n/* ════════════════════════════════════════════════════════════\n Per-domain AI chat config\n ════════════════════════════════════════════════════════════ */\nconst domainChatConfigs: Record<\n string,\n {\n suggestedPrompts: string[];\n mockResponses: Record<string, string>;\n fallbackResponse: string;\n }\n> = {\n slingshot: {\n suggestedPrompts: defaultSuggestedPrompts,\n mockResponses: defaultMockResponses,\n fallbackResponse: defaultFallbackResponse,\n },\n bodhi: {\n suggestedPrompts: [\n \"Show active incidents\",\n \"Summarize agent activity\",\n \"Latest runbook updates\",\n \"Top error patterns\",\n ],\n mockResponses: {\n \"show active incidents\":\n \"There are currently 3 active incidents: 2 P2 issues around license provisioning and 1 P3 network timeout. All have been triaged and assigned to agents.\",\n \"summarize agent activity\":\n \"In the past hour, 12 agent runs completed successfully, 1 failed due to a timeout on the GitHub connector. Overall resolution rate is 91%.\",\n \"latest runbook updates\":\n \"The VPN timeout runbook was updated 2 hours ago with a new escalation path. The password reset runbook has been auto-resolving at 98% success this week.\",\n \"top error patterns\":\n \"Top 3 recurring patterns: (1) Password reset loops — 340 tickets/month, auto-resolvable. (2) License provisioning delays — 160 tickets/month, workflow fix available. (3) VPN timeout cascades — 210 tickets/month, correlated to infra config.\",\n },\n fallbackResponse:\n \"I can help with incident triage, agent run summaries, runbook management, and pattern analysis. Could you provide more detail on what you need?\",\n },\n sustain: {\n suggestedPrompts: [\n \"Summarize emissions this month\",\n \"Show pending ESG reports\",\n \"Which initiatives need attention?\",\n \"Latest compliance status\",\n ],\n mockResponses: {\n \"summarize emissions this month\":\n \"Total Scope 1+2 emissions this month: 1,240 tCO₂e — down 8% vs last month. Nissan's manufacturing sites account for 63% of total. 2 data sources flagged for quality review.\",\n \"show pending esg reports\":\n \"There are 2 pending ESG reports: the Q2 GHG Inventory (due Jun 15) and the CSRD disclosure package (due Jun 30). Both are 70% complete.\",\n \"which initiatives need attention\":\n \"3 initiatives are behind schedule: Solar Panel Rollout (15 days late), Fleet Electrification (waiting on supplier data), and Supply Chain Audit (blocked on vendor responses).\",\n \"latest compliance status\":\n \"CSRD compliance score: 78/100. 3 data gaps identified in Scope 3 categories 1 and 11. GRI reporting is on track; TCFD disclosures need board sign-off.\",\n },\n fallbackResponse:\n \"I can help with emissions tracking, ESG reporting, initiative progress, and compliance status. Could you provide more detail on what you need?\",\n },\n};\nimport svgPaths from \"../../patterns/AiChatPanel/svg-9ebyigi4zl\";\n\n/* ════════════════════════════════════════════════════════════\n Helpers\n ════════════════════════════════════════════════════════════ */\nfunction timeAgo(date: Date): string {\n const seconds = Math.floor((Date.now() - date.getTime()) / 1000);\n if (seconds < 60) return \"Just now\";\n const minutes = Math.floor(seconds / 60);\n if (minutes < 60) return `${minutes} min${minutes !== 1 ? \"s\" : \"\"} ago`;\n const hours = Math.floor(minutes / 60);\n if (hours < 24) return `${hours} hr${hours !== 1 ? \"s\" : \"\"} ago`;\n const days = Math.floor(hours / 24);\n return `${days} day${days !== 1 ? \"s\" : \"\"} ago`;\n}\n\nconst severityIcons: Record<ActivitySeverity, React.ReactNode> = {\n info: <Clock className=\"size-[16px]\" style={{ color: \"var(--foreground)\" }} />,\n success: <CheckCircle className=\"size-[16px]\" style={{ color: \"var(--badge-success-text)\" }} />,\n warning: <AlertTriangle className=\"size-[16px]\" style={{ color: \"var(--badge-warning-text)\" }} />,\n error: <AlertCircle className=\"size-[16px]\" style={{ color: \"var(--badge-danger-text)\" }} />,\n};\n\nconst severityColorMap: Record<ActivitySeverity, string> = {\n info: \"var(--badge-info-bg)\",\n success: \"var(--badge-success-bg)\",\n warning: \"var(--badge-warning-bg)\",\n error: \"var(--badge-danger-bg)\",\n};\nconst severityTextMap: Record<ActivitySeverity, string> = {\n info: \"var(--badge-info-text)\",\n success: \"var(--badge-success-text)\",\n warning: \"var(--badge-warning-text)\",\n error: \"var(--badge-danger-text)\",\n};\n\n/* ════════════════════════════════════════════════════════════\n Tab Counter Badge\n ════════════════════════════════════════════════════════════ */\nfunction TabCounter({ count, variant }: { count: number; variant: \"warning\" | \"danger\" }) {\n const bgVar = variant === \"warning\" ? \"var(--tab-counter-warning)\" : \"var(--tab-counter-danger)\";\n return (\n <div\n className=\"flex items-center justify-center h-[16px] min-w-[16px] px-[4px] rounded-[10px]\"\n style={{ backgroundColor: bgVar }}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: 600,\n lineHeight: \"16px\",\n color: \"var(--tab-counter-text)\",\n }}\n >\n {count}\n </span>\n </div>\n );\n}\n\n/* ════════════════════════════════════════════════════════════\n Activity Card\n ════════════════════════════════════════════════════════════ */\nfunction ActivityCard({ item, onViewDetails }: { item: ActivityEvent; onViewDetails: () => void }) {\n return (\n <div\n className=\"relative rounded-[12px] shrink-0 w-full\"\n style={{ backgroundColor: \"var(--tile-bg)\" }}\n >\n <div className=\"flex flex-col items-start justify-center p-[16px] w-full\">\n <div className=\"flex flex-col gap-[12px] items-start w-full\">\n {/* Title row */}\n <div className=\"flex flex-col gap-[8px] items-start w-full\">\n <div className=\"flex gap-[12px] items-center w-full\">\n {severityIcons[item.severity]}\n <span\n className=\"flex-1 min-w-0\"\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {activityTypeLabels[item.type]}\n </span>\n </div>\n {/* Subtitle */}\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"16px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n {item.source} · {timeAgo(item.timestamp)} · {item.category}\n </span>\n </div>\n {/* View Details button */}\n <button\n onClick={onViewDetails}\n className=\"relative flex gap-[6px] items-center justify-center min-h-[24px] px-[8px] py-[3px] rounded-[9999px] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"var(--input-background)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")}\n onMouseLeave={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--input-background)\")\n }\n >\n <div\n aria-hidden=\"true\"\n className=\"absolute inset-0 pointer-events-none rounded-[9999px]\"\n style={{\n border: \"1px solid var(--border)\",\n }}\n />\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"16px\",\n color: \"var(--foreground)\",\n }}\n >\n View Details\n </span>\n </button>\n </div>\n </div>\n </div>\n );\n}\n\n/* ════════════════════════════════════════════════════════════\n Empty State\n ════════════════════════════════════════════════════════════ */\nfunction EmptyState({ tab }: { tab: \"logs\" | \"errors\" }) {\n return (\n <div className=\"flex flex-col items-center justify-center flex-1 min-h-[200px] gap-[12px]\">\n <div\n className=\"size-[40px] flex items-center justify-center rounded-full\"\n style={{ backgroundColor: \"var(--muted)\" }}\n >\n {tab === \"errors\" ? (\n <AlertCircle className=\"size-[20px]\" style={{ color: \"var(--muted-foreground)\" }} />\n ) : (\n <Activity className=\"size-[20px]\" style={{ color: \"var(--muted-foreground)\" }} />\n )}\n </div>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n textAlign: \"center\",\n }}\n >\n {tab === \"errors\" ? \"No errors detected\" : \"No activity yet\"}\n </span>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"16px\",\n color: \"var(--muted-foreground)\",\n textAlign: \"center\",\n }}\n >\n {tab === \"errors\"\n ? \"Errors will appear here when detected during ingestion.\"\n : \"Add a context source to see activity here.\"}\n </span>\n </div>\n );\n}\n\n/* ════════════════════════════════════════════════════════════\n Activity Detail Drawer\n — Matches AddContextDrawer style: full-viewport overlay,\n backdrop blur, animated slide-in, rounded-tl/bl, same\n header/footer pattern.\n — Rendered via createPortal so it's not clipped by the\n sidebar's overflow-hidden.\n ════════════════════════════════════════════════════════════ */\nfunction ActivityDetailDrawer({\n activity,\n isOpen,\n onClose,\n}: {\n activity: ActivityEvent | null;\n isOpen: boolean;\n onClose: () => void;\n}) {\n const [isAnimating, setIsAnimating] = useState(false);\n\n useEffect(() => {\n if (isOpen) {\n /* Trigger animation on next frame so the initial state (hidden) renders first */\n requestAnimationFrame(() => {\n requestAnimationFrame(() => setIsAnimating(true));\n });\n } else {\n setIsAnimating(false);\n }\n }, [isOpen]);\n\n /* Close with animation */\n const handleClose = useCallback(() => {\n setIsAnimating(false);\n setTimeout(onClose, 300);\n }, [onClose]);\n\n if (!isOpen || !activity) return null;\n\n const metadataRows: { label: string; value: string }[] = [];\n if (activity.metadata) {\n const m = activity.metadata;\n if (m.phase) metadataRows.push({ label: \"Phase\", value: m.phase });\n if (m.filesCount !== undefined)\n metadataRows.push({ label: \"Files Discovered\", value: String(m.filesCount) });\n if (m.errorsCount !== undefined)\n metadataRows.push({ label: \"Errors\", value: String(m.errorsCount) });\n if (m.completedCount !== undefined)\n metadataRows.push({ label: \"Completed\", value: String(m.completedCount) });\n if (m.pendingCount !== undefined)\n metadataRows.push({ label: \"Pending\", value: String(m.pendingCount) });\n if (m.activeRepoCount !== undefined)\n metadataRows.push({ label: \"Active Repos\", value: String(m.activeRepoCount) });\n if (m.tokenExpiredCount !== undefined)\n metadataRows.push({ label: \"Expired Tokens\", value: String(m.tokenExpiredCount) });\n if (m.eta) metadataRows.push({ label: \"ETA\", value: m.eta });\n }\n\n const drawer = (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-end overflow-clip transition-all duration-300\"\n style={{\n backdropFilter: isAnimating ? \"blur(5px)\" : \"blur(0px)\",\n backgroundColor: isAnimating ? \"rgba(31, 40, 50, 0.4)\" : \"rgba(31, 40, 50, 0)\",\n }}\n onClick={(e) => {\n if (e.target === e.currentTarget) handleClose();\n }}\n >\n {/* Drawer Panel */}\n <div\n className=\"h-full shrink-0 w-[480px] sm:w-[560px] md:w-[640px] flex flex-col transition-transform duration-300 ease-out rounded-tl-[16px] rounded-bl-[16px]\"\n style={{\n backgroundColor: \"var(--card)\",\n transform: isAnimating ? \"translateX(0)\" : \"translateX(100%)\",\n }}\n >\n {/* ── Header ── */}\n <div className=\"shrink-0 px-[24px] py-[16px]\">\n <div className=\"flex items-center justify-between w-full\">\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-xl)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Activity Details\n </span>\n <button\n onClick={handleClose}\n className=\"flex items-center justify-center size-[28px] rounded-[8px] transition-colors cursor-pointer\"\n style={{ color: \"var(--muted-foreground)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <X className=\"size-[16px]\" />\n </button>\n </div>\n </div>\n\n {/* ── Content (scrollable) ── */}\n <div className=\"flex-1 min-h-0 overflow-y-auto px-[24px] py-[8px]\">\n <div className=\"flex flex-col gap-[32px]\">\n {/* Sub-header */}\n <div className=\"flex flex-col gap-[4px]\">\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n {activityTypeLabels[activity.type]}\n </span>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n Review the details of this activity event\n </span>\n </div>\n\n {/* Status badges */}\n <div className=\"flex flex-col gap-[16px]\">\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Status\n </span>\n <div className=\"flex gap-[8px] items-center flex-wrap\">\n <span\n className=\"inline-flex items-center gap-[4px] px-[8px] py-[2px] rounded-[8px]\"\n style={{ backgroundColor: severityColorMap[activity.severity] }}\n >\n {severityIcons[activity.severity]}\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: 600,\n lineHeight: \"16px\",\n color: severityTextMap[activity.severity],\n textTransform: \"capitalize\",\n }}\n >\n {activity.severity}\n </span>\n </span>\n <span\n className=\"relative inline-flex items-center px-[8px] py-[2px] rounded-[8px]\"\n style={{ backgroundColor: \"var(--badge-default-bg)\" }}\n >\n <div\n aria-hidden=\"true\"\n className=\"absolute border border-solid inset-0 pointer-events-none rounded-[8px]\"\n style={{ borderColor: \"var(--border)\" }}\n />\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: 600,\n lineHeight: \"16px\",\n color: \"var(--foreground)\",\n }}\n >\n {activity.category}\n </span>\n </span>\n </div>\n </div>\n\n {/* Source + time */}\n <div className=\"flex flex-col gap-[16px]\">\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Source Information\n </span>\n <div\n className=\"relative rounded-[12px] p-[16px] flex flex-col gap-[12px]\"\n style={{ backgroundColor: \"var(--input-background)\" }}\n >\n <div\n aria-hidden=\"true\"\n className=\"absolute border border-solid inset-0 pointer-events-none rounded-[12px]\"\n style={{ borderColor: \"var(--border)\" }}\n />\n <div className=\"flex items-center gap-[8px]\">\n <Zap\n className=\"size-[14px] shrink-0\"\n style={{ color: \"var(--muted-foreground)\" }}\n />\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n Source:\n </span>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n }}\n >\n {activity.source}\n </span>\n </div>\n <div className=\"flex items-center gap-[8px]\">\n <Clock\n className=\"size-[14px] shrink-0\"\n style={{ color: \"var(--muted-foreground)\" }}\n />\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n {timeAgo(activity.timestamp)} · {activity.timestamp.toLocaleTimeString()}\n </span>\n </div>\n </div>\n </div>\n\n {/* Description */}\n <div className=\"flex flex-col gap-[16px]\">\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Description\n </span>\n <div\n className=\"relative rounded-[12px] p-[16px]\"\n style={{ backgroundColor: \"var(--input-background)\" }}\n >\n <div\n aria-hidden=\"true\"\n className=\"absolute border border-solid inset-0 pointer-events-none rounded-[12px]\"\n style={{ borderColor: \"var(--border)\" }}\n />\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n }}\n >\n {activity.description}\n </span>\n </div>\n </div>\n\n {/* Metadata details */}\n {metadataRows.length > 0 && (\n <div className=\"flex flex-col gap-[16px]\">\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Event Metadata\n </span>\n <div\n className=\"relative rounded-[12px] p-[16px] flex flex-col gap-[12px]\"\n style={{ backgroundColor: \"var(--input-background)\" }}\n >\n <div\n aria-hidden=\"true\"\n className=\"absolute border border-solid inset-0 pointer-events-none rounded-[12px]\"\n style={{ borderColor: \"var(--border)\" }}\n />\n {metadataRows.map((row) => (\n <div key={row.label} className=\"flex items-center justify-between\">\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n {row.label}\n </span>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n }}\n >\n {row.value}\n </span>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n </div>\n\n {/* ── Footer ── */}\n <div className=\"shrink-0 px-[24px] py-[16px]\">\n <div className=\"flex gap-[8px] items-start justify-end w-full\">\n {/* Close Button */}\n <div className=\"relative flex-1 rounded-[9999px]\">\n <div\n aria-hidden=\"true\"\n className=\"absolute border border-solid inset-0 pointer-events-none rounded-[9999px]\"\n style={{ borderColor: \"var(--ring)\" }}\n />\n <button\n onClick={handleClose}\n className=\"flex items-center justify-center w-full px-[32px] py-[12px] rounded-[9999px] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Close\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n\n return createPortal(drawer, document.body);\n}\n\n/* ════════════════════════════════════════════════════════════\n Recent Activities Panel\n ════════════════════════════════════════════════════════════ */\nfunction RecentActivitiesPanel({\n onClose,\n onViewDetails,\n externalFilterType,\n externalFilterResourceId,\n onClearFilter,\n}: {\n onClose: () => void;\n onViewDetails: (activity: ActivityEvent) => void;\n externalFilterType?: ActivityFilterType;\n externalFilterResourceId?: string | null;\n onClearFilter?: () => void;\n}) {\n const { activities, markAllRead } = useActivity();\n const [activeTab, setActiveTab] = useState<\"logs\" | \"errors\">(\"logs\");\n\n /* Auto-switch tab based on external filter */\n useEffect(() => {\n if (externalFilterType === \"errors\") {\n setActiveTab(\"errors\");\n } else if (externalFilterType === \"token_expired\" || externalFilterType === \"warnings\") {\n setActiveTab(\"logs\");\n }\n }, [externalFilterType]);\n\n const logItems = activities.filter((a) => a.severity !== \"error\");\n const errorItems = activities.filter((a) => a.severity === \"error\");\n\n /* Apply external resource filter if active */\n const applyResourceFilter = (items: ActivityEvent[]) => {\n if (!externalFilterResourceId) return items;\n return items.filter((a) => a.metadata?.resourceId === externalFilterResourceId);\n };\n\n /* Apply type filter if active */\n const applyTypeFilter = (items: ActivityEvent[]) => {\n if (!externalFilterType || externalFilterType === \"all\") return items;\n if (externalFilterType === \"errors\") return items; // already on errors tab\n if (externalFilterType === \"token_expired\")\n return items.filter((a) => a.type === \"token_expired\");\n if (externalFilterType === \"warnings\") return items.filter((a) => a.severity === \"warning\");\n return items;\n };\n\n const rawItems = activeTab === \"logs\" ? logItems : errorItems;\n const items = applyTypeFilter(applyResourceFilter(rawItems));\n\n const isFiltered =\n !!externalFilterResourceId || (!!externalFilterType && externalFilterType !== \"all\");\n\n /* Determine source name for the filter label */\n const filterSourceName =\n isFiltered && externalFilterResourceId && items.length > 0 ? items[0].source : null;\n\n const handleOpenPanel = () => {\n markAllRead();\n };\n\n return (\n <div\n className=\"flex flex-col gap-[16px] items-start p-[20px] size-full\"\n onClick={handleOpenPanel}\n >\n {/* Header */}\n <div className=\"flex gap-[16px] h-[24px] items-center justify-center shrink-0 w-full\">\n <Activity className=\"size-[20px] shrink-0\" style={{ color: \"var(--foreground)\" }} />\n <div className=\"flex flex-1 min-w-0\">\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Recent Activities\n </span>\n </div>\n <button\n onClick={(e) => {\n e.stopPropagation();\n onClose();\n }}\n className=\"flex items-center justify-center shrink-0 size-[24px] rounded-[24px] cursor-pointer bg-transparent transition-all\"\n aria-label=\"Minimize panel\"\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <Minimize2 className=\"size-[16px]\" style={{ color: \"var(--foreground)\" }} />\n </button>\n </div>\n\n {/* Tabs */}\n <div\n className=\"relative rounded-[12px] shrink-0 w-full\"\n style={{ backgroundColor: \"var(--tab-container-bg)\" }}\n >\n <div className=\"flex items-center p-[4px] w-full\">\n <button\n onClick={() => setActiveTab(\"logs\")}\n className=\"flex-1 min-h-[32px] min-w-[32px] relative rounded-[10px] cursor-pointer transition-all\"\n style={{\n backgroundColor: activeTab === \"logs\" ? \"var(--tab-active-bg)\" : \"transparent\",\n boxShadow: activeTab === \"logs\" ? \"var(--elevation-sm)\" : \"none\",\n }}\n >\n <div className=\"flex items-center justify-center gap-[8px] px-[10px] py-[5.5px] w-full min-h-[inherit]\">\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n }}\n >\n Logs\n </span>\n <TabCounter count={logItems.length} variant=\"warning\" />\n </div>\n </button>\n <button\n onClick={() => setActiveTab(\"errors\")}\n className=\"flex-1 min-h-[32px] min-w-[32px] relative rounded-[10px] cursor-pointer transition-all\"\n style={{\n backgroundColor: activeTab === \"errors\" ? \"var(--tab-active-bg)\" : \"transparent\",\n boxShadow: activeTab === \"errors\" ? \"var(--elevation-sm)\" : \"none\",\n }}\n >\n <div className=\"flex items-center justify-center gap-[8px] px-[10px] py-[5.5px] w-full min-h-[inherit]\">\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n }}\n >\n Errors\n </span>\n <TabCounter count={errorItems.length} variant=\"danger\" />\n </div>\n </button>\n </div>\n </div>\n\n {/* Filter indicator */}\n {isFiltered && (\n <div\n className=\"flex items-center justify-between gap-[8px] w-full px-[12px] py-[8px] rounded-[10px] shrink-0\"\n style={{ backgroundColor: \"var(--badge-info-bg)\" }}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"16px\",\n color: \"var(--badge-info-text)\",\n }}\n >\n Filtered{filterSourceName ? `: ${filterSourceName}` : \"\"}\n {externalFilterType && externalFilterType !== \"all\"\n ? ` · ${externalFilterType.replace(\"_\", \" \")}`\n : \"\"}\n </span>\n {onClearFilter && (\n <button\n onClick={(e) => {\n e.stopPropagation();\n onClearFilter();\n }}\n className=\"flex items-center justify-center size-[20px] rounded-[6px] cursor-pointer transition-colors\"\n style={{ color: \"var(--badge-info-text)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.opacity = \"0.7\")}\n onMouseLeave={(e) => (e.currentTarget.style.opacity = \"1\")}\n aria-label=\"Clear filter\"\n >\n <X className=\"size-[12px]\" />\n </button>\n )}\n </div>\n )}\n\n {/* Activity Items (scrollable) */}\n <div className=\"flex flex-col gap-[12px] items-start overflow-y-auto flex-1 min-h-0 w-full\">\n {items.length === 0 ? (\n isFiltered ? (\n <div className=\"flex flex-col items-center justify-center flex-1 min-h-[200px] gap-[12px]\">\n <div\n className=\"size-[40px] flex items-center justify-center rounded-full\"\n style={{ backgroundColor: \"var(--muted)\" }}\n >\n <Filter className=\"size-[20px]\" style={{ color: \"var(--muted-foreground)\" }} />\n </div>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n textAlign: \"center\",\n }}\n >\n No matching activity yet\n </span>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"16px\",\n color: \"var(--muted-foreground)\",\n textAlign: \"center\",\n }}\n >\n Events will appear here as the resource progresses through its lifecycle.\n </span>\n </div>\n ) : (\n <div className=\"w-full\">\n <EmptyState tab={activeTab} />\n </div>\n )\n ) : (\n items.map((item) => (\n <ActivityCard key={item.id} item={item} onViewDetails={() => onViewDetails(item)} />\n ))\n )}\n </div>\n </div>\n );\n}\n\n/* ════════════════════════════════════════════════════════════\n Collapsed Panel Bar — clickable bar to switch panels\n ════════════════════════════════════════════════════════════ */\nfunction CollapsedActivityBar({\n onClick,\n unreadCount,\n}: { onClick: () => void; unreadCount: number }) {\n return (\n <button\n onClick={onClick}\n className=\"backdrop-blur-[45px] flex flex-col items-start overflow-x-clip overflow-y-auto p-[16px] rounded-[16px] shrink-0 w-full cursor-pointer transition-all\"\n style={{ backgroundColor: \"var(--glass-strong)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"var(--glass-strong)\")}\n >\n <div className=\"flex gap-[16px] h-[24px] items-center justify-center w-full\">\n <Activity className=\"size-[20px] shrink-0\" style={{ color: \"var(--foreground)\" }} />\n <div className=\"flex flex-1 flex-col gap-[8px] items-start min-w-0\">\n <div className=\"flex gap-[8px] items-center w-full\">\n <p\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n whiteSpace: \"nowrap\",\n textAlign: \"left\",\n }}\n >\n Recent Activities\n </p>\n {unreadCount > 0 && (\n <div\n className=\"flex items-center justify-center min-w-[16px] h-[16px] px-[4px] rounded-full\"\n style={{ backgroundColor: \"var(--destructive)\" }}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"10px\",\n fontWeight: 600,\n lineHeight: \"12px\",\n color: \"var(--destructive-foreground)\",\n }}\n >\n {unreadCount > 9 ? \"9+\" : unreadCount}\n </span>\n </div>\n )}\n </div>\n </div>\n <ChevronsUpDown className=\"size-[24px] shrink-0\" style={{ color: \"var(--foreground)\" }} />\n </div>\n </button>\n );\n}\n\nfunction CollapsedChatBar({ onClick }: { onClick: () => void }) {\n return (\n <button\n onClick={onClick}\n className=\"backdrop-blur-[45px] flex flex-col items-start overflow-x-clip overflow-y-auto p-[16px] rounded-[16px] shrink-0 w-full cursor-pointer transition-all\"\n style={{ backgroundColor: \"var(--glass-strong)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"var(--glass-strong)\")}\n >\n <div className=\"flex gap-[16px] h-[24px] items-center justify-center w-full\">\n {/* Sparkles icon from Figma SVG */}\n <div className=\"overflow-clip relative rounded-[24px] shrink-0 size-[20px]\">\n <div className=\"absolute\" style={{ inset: \"5.21%\" }}>\n <svg\n className=\"absolute block size-full\"\n fill=\"none\"\n preserveAspectRatio=\"none\"\n viewBox=\"0 0 17.9175 17.9175\"\n >\n <path d={svgPaths.p1104e600} fill=\"var(--foreground)\" />\n <path d={svgPaths.p2fe30c00} fill=\"var(--foreground)\" />\n <path d={svgPaths.p18accf00} fill=\"var(--foreground)\" />\n <path d={svgPaths.p2b445ef2} fill=\"var(--foreground)\" />\n <path d={svgPaths.p29b5f100} fill=\"var(--foreground)\" />\n </svg>\n </div>\n </div>\n <div className=\"flex flex-1 flex-col gap-[8px] items-start min-w-0\">\n <div className=\"flex gap-[8px] items-center w-full\">\n <p\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n whiteSpace: \"nowrap\",\n textAlign: \"left\",\n }}\n >\n AI Assistance\n </p>\n </div>\n </div>\n <ChevronsUpDown className=\"size-[24px] shrink-0\" style={{ color: \"var(--foreground)\" }} />\n </div>\n </button>\n );\n}\n\n/* ════════════════════════════════════════════════════════════\n Right Sidebar\n ═══════════════════════════════════════════════════════════ */\nexport function RightSidebar({\n domain = \"slingshot\",\n}: { domain?: \"slingshot\" | \"bodhi\" | \"sustain\" }) {\n const chatConfig = domainChatConfigs[domain] ?? domainChatConfigs.slingshot;\n const [selectedActivity, setSelectedActivity] = useState<ActivityEvent | null>(null);\n const { activePanel, openPanel, closePanel } = useRightPanel();\n const {\n unreadCount,\n panelExpanded,\n setPanelExpanded,\n filterType,\n setFilterType,\n filterResourceId,\n setFilterResourceId,\n } = useActivity();\n\n const isExpanded = activePanel !== null;\n\n /* ── Horizontal resize state ── */\n const MIN_WIDTH = 320;\n const MAX_WIDTH = 600;\n const DEFAULT_WIDTH = 400;\n const [panelWidth, setPanelWidth] = useState(DEFAULT_WIDTH);\n\n const handleHorizontalResizeStart = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n const startX = e.clientX;\n const startWidth = panelWidth;\n\n const onMouseMove = (ev: MouseEvent) => {\n /* Dragging left = larger panel (panel is on the right side) */\n const delta = startX - ev.clientX;\n const newWidth = Math.min(MAX_WIDTH, Math.max(MIN_WIDTH, startWidth + delta));\n setPanelWidth(newWidth);\n };\n\n const onMouseUp = () => {\n document.removeEventListener(\"mousemove\", onMouseMove);\n document.removeEventListener(\"mouseup\", onMouseUp);\n document.body.style.cursor = \"\";\n document.body.style.userSelect = \"\";\n };\n\n document.body.style.cursor = \"col-resize\";\n document.body.style.userSelect = \"none\";\n document.addEventListener(\"mousemove\", onMouseMove);\n document.addEventListener(\"mouseup\", onMouseUp);\n },\n [panelWidth],\n );\n\n /* Double-click resets to default width */\n const handleDoubleClick = useCallback(() => {\n setPanelWidth(DEFAULT_WIDTH);\n }, []);\n\n /* Respond to programmatic expand from badge clicks */\n useEffect(() => {\n if (panelExpanded && activePanel !== \"activity\") {\n openPanel(\"activity\");\n }\n }, [panelExpanded, activePanel, openPanel]);\n\n const handleCloseActivity = useCallback(() => {\n closePanel();\n setPanelExpanded(false);\n setFilterType(null);\n setFilterResourceId(null);\n }, [closePanel, setPanelExpanded, setFilterType, setFilterResourceId]);\n\n const handleCloseChat = useCallback(() => {\n closePanel();\n }, [closePanel]);\n\n const handleClearFilter = useCallback(() => {\n setFilterType(null);\n setFilterResourceId(null);\n }, [setFilterType, setFilterResourceId]);\n\n const handleViewDetails = useCallback((activity: ActivityEvent) => {\n setSelectedActivity(activity);\n }, []);\n\n const handleSwitchToActivity = useCallback(() => {\n openPanel(\"activity\");\n }, [openPanel]);\n\n const handleSwitchToChat = useCallback(() => {\n if (activePanel === \"activity\") {\n setPanelExpanded(false);\n setFilterType(null);\n setFilterResourceId(null);\n }\n openPanel(\"ai-chat\");\n }, [activePanel, openPanel, setPanelExpanded, setFilterType, setFilterResourceId]);\n\n /* ── Collapsed state: two icon buttons stacked ── */\n if (!isExpanded) {\n return (\n <>\n <div className=\"flex flex-col gap-[8px] shrink-0 sticky top-[88px] z-[1]\">\n {/* AI Chat icon */}\n <div\n className=\"backdrop-blur-[45px] rounded-[16px] overflow-hidden\"\n style={{\n backgroundColor: \"var(--glass-strong)\",\n width: \"56px\",\n height: \"56px\",\n }}\n >\n <div className=\"flex items-center justify-center size-[56px]\">\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n className=\"relative flex items-center justify-center w-[40px] h-[40px] rounded-full bg-transparent transition-all cursor-pointer\"\n aria-label=\"AI Chat Assistant\"\n onClick={() => openPanel(\"ai-chat\")}\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")\n }\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <Bot className=\"size-[16px]\" style={{ color: \"var(--foreground)\" }} />\n </button>\n </TooltipTrigger>\n <TooltipContent\n side=\"left\"\n sideOffset={8}\n className=\"flex gap-[8px] items-center justify-center px-[8px] py-[6px] rounded-[8px] z-50 relative\"\n style={{ backgroundColor: \"var(--tooltip-bg)\" }}\n >\n <p\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"16px\",\n color: \"var(--tooltip-foreground)\",\n }}\n >\n AI Chat Assistant\n </p>\n </TooltipContent>\n </Tooltip>\n </div>\n </div>\n\n {/* Activity icon */}\n <div\n className=\"backdrop-blur-[45px] rounded-[16px] overflow-hidden\"\n style={{\n backgroundColor: \"var(--glass-strong)\",\n width: \"56px\",\n height: \"56px\",\n }}\n >\n <div className=\"flex items-center justify-center size-[56px]\">\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n className=\"relative flex items-center justify-center w-[40px] h-[40px] rounded-full bg-transparent transition-all cursor-pointer\"\n aria-label=\"Activity\"\n onClick={() => openPanel(\"activity\")}\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")\n }\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <Activity className=\"size-[16px]\" style={{ color: \"var(--foreground)\" }} />\n {unreadCount > 0 && (\n <div\n className=\"absolute top-[4px] right-[4px] flex items-center justify-center min-w-[16px] h-[16px] px-[4px] rounded-full\"\n style={{ backgroundColor: \"var(--destructive)\" }}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"10px\",\n fontWeight: 600,\n lineHeight: \"12px\",\n color: \"var(--destructive-foreground)\",\n }}\n >\n {unreadCount > 9 ? \"9+\" : unreadCount}\n </span>\n </div>\n )}\n </button>\n </TooltipTrigger>\n <TooltipContent\n side=\"left\"\n sideOffset={8}\n className=\"flex gap-[8px] items-center justify-center px-[8px] py-[6px] rounded-[8px] z-50 relative\"\n style={{ backgroundColor: \"var(--tooltip-bg)\" }}\n >\n <p\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"16px\",\n color: \"var(--tooltip-foreground)\",\n }}\n >\n Activity\n </p>\n </TooltipContent>\n </Tooltip>\n </div>\n </div>\n </div>\n\n <ActivityDetailDrawer\n activity={selectedActivity}\n isOpen={!!selectedActivity}\n onClose={() => setSelectedActivity(null)}\n />\n </>\n );\n }\n\n /* ── Expanded state: active panel + collapsed bar for the other ── */\n return (\n <>\n <div\n className=\"flex flex-row items-stretch shrink-0 sticky top-[88px] z-[1]\"\n style={{\n width: `${panelWidth}px`,\n height: \"calc(100vh - 84px - 16px)\",\n }}\n >\n {/* Left-edge resize handle */}\n <div\n className=\"flex items-center justify-center shrink-0 cursor-col-resize group\"\n style={{ width: \"8px\", marginRight: \"0px\" }}\n onMouseDown={handleHorizontalResizeStart}\n onDoubleClick={handleDoubleClick}\n aria-label=\"Resize panel\"\n >\n <div\n className=\"rounded-full transition-all duration-150\"\n style={{\n width: \"3px\",\n height: \"40px\",\n backgroundColor: \"var(--border)\",\n opacity: 0.5,\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.opacity = \"1\";\n e.currentTarget.style.backgroundColor = \"var(--ring)\";\n e.currentTarget.style.width = \"4px\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.opacity = \"0.5\";\n e.currentTarget.style.backgroundColor = \"var(--border)\";\n e.currentTarget.style.width = \"3px\";\n }}\n />\n </div>\n\n {/* Panel content column */}\n <div className=\"flex flex-col gap-[12px] items-start flex-1 min-w-0\">\n {/* Active expanded panel */}\n <div\n className=\"backdrop-blur-[45px] flex-1 min-h-0 relative rounded-[16px] w-full overflow-hidden transition-all duration-300 ease-in-out\"\n style={{ backgroundColor: \"var(--glass-strong)\" }}\n >\n <div className=\"overflow-x-clip overflow-y-auto size-full\">\n {activePanel === \"ai-chat\" ? (\n <AIChatPanel\n onClose={handleCloseChat}\n suggestedPrompts={chatConfig.suggestedPrompts}\n mockResponses={chatConfig.mockResponses}\n fallbackResponse={chatConfig.fallbackResponse}\n />\n ) : (\n <RecentActivitiesPanel\n onClose={handleCloseActivity}\n onViewDetails={handleViewDetails}\n externalFilterType={filterType}\n externalFilterResourceId={filterResourceId}\n onClearFilter={handleClearFilter}\n />\n )}\n </div>\n </div>\n\n {/* Collapsed bar for the other panel */}\n {activePanel === \"ai-chat\" ? (\n <CollapsedActivityBar onClick={handleSwitchToActivity} unreadCount={unreadCount} />\n ) : (\n <CollapsedChatBar onClick={handleSwitchToChat} />\n )}\n </div>\n </div>\n\n <ActivityDetailDrawer\n activity={selectedActivity}\n isOpen={!!selectedActivity}\n onClose={() => setSelectedActivity(null)}\n />\n </>\n );\n}\n","import { AppHeader } from \"../AppHeader\";\n\ninterface SlingshotHeaderProps {\n isDarkMode: boolean;\n onToggleTheme: () => void;\n}\n\n/** Slingshot-branded {@link AppHeader}. Kept for backwards compatibility; prefer `<AppHeader brand=\"slingshot\" />`. */\nexport function SlingshotHeader({ isDarkMode, onToggleTheme }: SlingshotHeaderProps) {\n return <AppHeader brand=\"slingshot\" isDarkMode={isDarkMode} onToggleTheme={onToggleTheme} />;\n}\n","import { AppHeader } from \"../AppHeader\";\n\ninterface SustainHeaderProps {\n isDarkMode: boolean;\n onToggleTheme: () => void;\n}\n\n/** Sustain-branded {@link AppHeader}. Kept for backwards compatibility; prefer `<AppHeader brand=\"sustain\" />`. */\nexport function SustainHeader({ isDarkMode, onToggleTheme }: SustainHeaderProps) {\n return <AppHeader brand=\"sustain\" isDarkMode={isDarkMode} onToggleTheme={onToggleTheme} />;\n}\n"],"mappings":"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"}