@exulu/frontend 1.0.3 → 1.1.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 (239) hide show
  1. package/dist/.next/BUILD_ID +1 -1
  2. package/dist/.next/app-build-manifest.json +192 -192
  3. package/dist/.next/app-path-routes-manifest.json +1 -1
  4. package/dist/.next/build-manifest.json +3 -3
  5. package/dist/.next/prerender-manifest.json +1 -1
  6. package/dist/.next/required-server-files.json +1 -1
  7. package/dist/.next/server/app/(application)/agents/edit/[id]/page.js +1 -1
  8. package/dist/.next/server/app/(application)/agents/edit/[id]/page.js.nft.json +1 -1
  9. package/dist/.next/server/app/(application)/agents/edit/[id]/page_client-reference-manifest.js +1 -1
  10. package/dist/.next/server/app/(application)/agents/page.js +2 -2
  11. package/dist/.next/server/app/(application)/agents/page.js.nft.json +1 -1
  12. package/dist/.next/server/app/(application)/agents/page_client-reference-manifest.js +1 -1
  13. package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js +2 -2
  14. package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js.nft.json +1 -1
  15. package/dist/.next/server/app/(application)/chat/[agent]/[session]/page_client-reference-manifest.js +1 -1
  16. package/dist/.next/server/app/(application)/chat/[agent]/page.js +1 -1
  17. package/dist/.next/server/app/(application)/chat/[agent]/page.js.nft.json +1 -1
  18. package/dist/.next/server/app/(application)/chat/[agent]/page_client-reference-manifest.js +1 -1
  19. package/dist/.next/server/app/(application)/chat/page.js +1 -1
  20. package/dist/.next/server/app/(application)/chat/page.js.nft.json +1 -1
  21. package/dist/.next/server/app/(application)/chat/page_client-reference-manifest.js +1 -1
  22. package/dist/.next/server/app/(application)/configuration/page.js +1 -1
  23. package/dist/.next/server/app/(application)/configuration/page.js.nft.json +1 -1
  24. package/dist/.next/server/app/(application)/configuration/page_client-reference-manifest.js +1 -1
  25. package/dist/.next/server/app/(application)/dashboard/page.js +2 -2
  26. package/dist/.next/server/app/(application)/dashboard/page.js.nft.json +1 -1
  27. package/dist/.next/server/app/(application)/dashboard/page_client-reference-manifest.js +1 -1
  28. package/dist/.next/server/app/(application)/data/[[...query]]/page.js +2 -2
  29. package/dist/.next/server/app/(application)/data/[[...query]]/page.js.nft.json +1 -1
  30. package/dist/.next/server/app/(application)/data/[[...query]]/page_client-reference-manifest.js +1 -1
  31. package/dist/.next/server/app/(application)/evals/[id]/page.js +1 -1
  32. package/dist/.next/server/app/(application)/evals/[id]/page.js.nft.json +1 -1
  33. package/dist/.next/server/app/(application)/evals/[id]/page_client-reference-manifest.js +1 -1
  34. package/dist/.next/server/app/(application)/evals/[id]/runs/page.js +1 -1
  35. package/dist/.next/server/app/(application)/evals/[id]/runs/page.js.nft.json +1 -1
  36. package/dist/.next/server/app/(application)/evals/[id]/runs/page_client-reference-manifest.js +1 -1
  37. package/dist/.next/server/app/(application)/evals/cases/page.js +1 -1
  38. package/dist/.next/server/app/(application)/evals/cases/page.js.nft.json +1 -1
  39. package/dist/.next/server/app/(application)/evals/cases/page_client-reference-manifest.js +1 -1
  40. package/dist/.next/server/app/(application)/evals/page.js +1 -1
  41. package/dist/.next/server/app/(application)/evals/page.js.nft.json +1 -1
  42. package/dist/.next/server/app/(application)/evals/page_client-reference-manifest.js +1 -1
  43. package/dist/.next/server/app/(application)/explorer/page.js +9 -9
  44. package/dist/.next/server/app/(application)/explorer/page.js.nft.json +1 -1
  45. package/dist/.next/server/app/(application)/explorer/page_client-reference-manifest.js +1 -1
  46. package/dist/.next/server/app/(application)/jobs/page.js +1 -1
  47. package/dist/.next/server/app/(application)/jobs/page.js.nft.json +1 -1
  48. package/dist/.next/server/app/(application)/jobs/page_client-reference-manifest.js +1 -1
  49. package/dist/.next/server/app/(application)/keys/page.js +1 -1
  50. package/dist/.next/server/app/(application)/keys/page.js.nft.json +1 -1
  51. package/dist/.next/server/app/(application)/keys/page_client-reference-manifest.js +1 -1
  52. package/dist/.next/server/app/(application)/page.js +1 -1
  53. package/dist/.next/server/app/(application)/page.js.nft.json +1 -1
  54. package/dist/.next/server/app/(application)/page_client-reference-manifest.js +1 -1
  55. package/dist/.next/server/app/(application)/projects/[project]/page.js +1 -1
  56. package/dist/.next/server/app/(application)/projects/[project]/page.js.nft.json +1 -1
  57. package/dist/.next/server/app/(application)/projects/[project]/page_client-reference-manifest.js +1 -1
  58. package/dist/.next/server/app/(application)/projects/page.js +1 -1
  59. package/dist/.next/server/app/(application)/projects/page.js.nft.json +1 -1
  60. package/dist/.next/server/app/(application)/projects/page_client-reference-manifest.js +1 -1
  61. package/dist/.next/server/app/(application)/roles/page.js +1 -1
  62. package/dist/.next/server/app/(application)/roles/page.js.nft.json +1 -1
  63. package/dist/.next/server/app/(application)/roles/page_client-reference-manifest.js +1 -1
  64. package/dist/.next/server/app/(application)/token/page.js +1 -1
  65. package/dist/.next/server/app/(application)/token/page.js.nft.json +1 -1
  66. package/dist/.next/server/app/(application)/token/page_client-reference-manifest.js +1 -1
  67. package/dist/.next/server/app/(application)/users/page.js +1 -1
  68. package/dist/.next/server/app/(application)/users/page.js.nft.json +1 -1
  69. package/dist/.next/server/app/(application)/users/page_client-reference-manifest.js +1 -1
  70. package/dist/.next/server/app/(application)/variables/create/page.js +1 -1
  71. package/dist/.next/server/app/(application)/variables/create/page.js.nft.json +1 -1
  72. package/dist/.next/server/app/(application)/variables/create/page_client-reference-manifest.js +1 -1
  73. package/dist/.next/server/app/(application)/variables/edit/[variable_id]/page.js +1 -1
  74. package/dist/.next/server/app/(application)/variables/edit/[variable_id]/page.js.nft.json +1 -1
  75. package/dist/.next/server/app/(application)/variables/edit/[variable_id]/page_client-reference-manifest.js +1 -1
  76. package/dist/.next/server/app/(application)/variables/page.js +1 -1
  77. package/dist/.next/server/app/(application)/variables/page.js.nft.json +1 -1
  78. package/dist/.next/server/app/(application)/variables/page_client-reference-manifest.js +1 -1
  79. package/dist/.next/server/app/(application)/variables/usage/[variable_id]/page.js +1 -1
  80. package/dist/.next/server/app/(application)/variables/usage/[variable_id]/page.js.nft.json +1 -1
  81. package/dist/.next/server/app/(application)/variables/usage/[variable_id]/page_client-reference-manifest.js +1 -1
  82. package/dist/.next/server/app/(application)/workflows/page.js +1 -1
  83. package/dist/.next/server/app/(application)/workflows/page.js.nft.json +1 -1
  84. package/dist/.next/server/app/(application)/workflows/page_client-reference-manifest.js +1 -1
  85. package/dist/.next/server/app/(authentication)/login/page.js +3 -3
  86. package/dist/.next/server/app/(authentication)/login/page.js.nft.json +1 -1
  87. package/dist/.next/server/app/(authentication)/login/page_client-reference-manifest.js +1 -1
  88. package/dist/.next/server/app/_not-found/page.js +1 -1
  89. package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  90. package/dist/.next/server/app/_not-found.html +1 -1
  91. package/dist/.next/server/app/_not-found.rsc +1 -1
  92. package/dist/.next/server/app/api/auth/[...nextauth]/route.js +2 -2
  93. package/dist/.next/server/app/api/config/route.js +2 -2
  94. package/dist/.next/server/app-paths-manifest.json +9 -9
  95. package/dist/.next/server/chunks/{2711.js → 3575.js} +1 -1
  96. package/dist/.next/server/chunks/{1558.js → 5192.js} +1 -1
  97. package/dist/.next/server/chunks/{9762.js → 7223.js} +5 -5
  98. package/dist/.next/server/chunks/{4470.js → 7944.js} +2 -2
  99. package/dist/.next/server/chunks/9049.js +2 -2
  100. package/dist/.next/server/middleware-build-manifest.js +1 -1
  101. package/dist/.next/server/middleware-manifest.json +5 -5
  102. package/dist/.next/server/middleware.js +2 -2
  103. package/dist/.next/server/next-font-manifest.js +1 -1
  104. package/dist/.next/server/next-font-manifest.json +1 -1
  105. package/dist/.next/server/pages/404.html +1 -1
  106. package/dist/.next/server/pages/500.html +1 -1
  107. package/dist/.next/server/pages-manifest.json +1 -1
  108. package/dist/.next/server/server-reference-manifest.json +1 -1
  109. package/dist/.next/static/chunks/2117-7e0e97ffa5867cf9.js.map +1 -1
  110. package/dist/.next/static/chunks/6111-5ab0e72a466543ea.js.map +1 -1
  111. package/dist/.next/static/chunks/7648-be88d7a414ab6394.js.map +1 -1
  112. package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/{page-7737da0d7329baf0.js → page-e622860a59223955.js} +2 -2
  113. package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-e622860a59223955.js.map +1 -0
  114. package/dist/.next/static/chunks/app/(application)/agents/{page-58d7ecbf04b75ef3.js → page-fe256553444f6e6f.js} +2 -2
  115. package/dist/.next/static/chunks/app/(application)/agents/page-fe256553444f6e6f.js.map +1 -0
  116. package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-beaa99a35c9e9bfc.js +2 -0
  117. package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-beaa99a35c9e9bfc.js.map +1 -0
  118. package/dist/.next/static/chunks/app/(application)/chat/[agent]/{layout-a701083f64a86849.js → layout-1736d0931ae3f866.js} +2 -2
  119. package/dist/.next/static/chunks/app/(application)/chat/[agent]/layout-1736d0931ae3f866.js.map +1 -0
  120. package/dist/.next/static/chunks/app/(application)/chat/[agent]/{page-2f7e3126e0e76d70.js → page-1538a952e1e99f94.js} +2 -2
  121. package/dist/.next/static/chunks/app/(application)/chat/[agent]/page-1538a952e1e99f94.js.map +1 -0
  122. package/dist/.next/static/chunks/app/(application)/chat/{layout-b934ba4c0a125683.js → layout-3fbafd811d12ed10.js} +2 -2
  123. package/dist/.next/static/chunks/app/(application)/chat/layout-3fbafd811d12ed10.js.map +1 -0
  124. package/dist/.next/static/chunks/app/(application)/configuration/{page-3aa96486933ae5dd.js → page-876d1d43a9cc36e4.js} +2 -2
  125. package/dist/.next/static/chunks/app/(application)/configuration/page-876d1d43a9cc36e4.js.map +1 -0
  126. package/dist/.next/static/chunks/app/(application)/dashboard/{page-2436e355871758ba.js → page-ca746e824cb97052.js} +2 -2
  127. package/dist/.next/static/chunks/app/(application)/dashboard/page-ca746e824cb97052.js.map +1 -0
  128. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/{layout-e073c74bd194e8cc.js → layout-47ad558a66e699c7.js} +2 -2
  129. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-47ad558a66e699c7.js.map +1 -0
  130. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/{page-375a978d25ee3a65.js → page-edcdd8944daaaef8.js} +2 -2
  131. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-edcdd8944daaaef8.js.map +1 -0
  132. package/dist/.next/static/chunks/app/(application)/evals/[id]/{page-b668fca1ba6993e2.js → page-5d4b8e351ee3265f.js} +2 -2
  133. package/dist/.next/static/chunks/app/(application)/evals/[id]/page-5d4b8e351ee3265f.js.map +1 -0
  134. package/dist/.next/static/chunks/app/(application)/evals/[id]/runs/{page-07969d6e5fb01d7b.js → page-4f0d1524fc7936d1.js} +2 -2
  135. package/dist/.next/static/chunks/app/(application)/evals/[id]/runs/page-4f0d1524fc7936d1.js.map +1 -0
  136. package/dist/.next/static/chunks/app/(application)/evals/cases/{page-0f25ee5d9498cbc5.js → page-47274d92d3daf16b.js} +2 -2
  137. package/dist/.next/static/chunks/app/(application)/evals/cases/page-47274d92d3daf16b.js.map +1 -0
  138. package/dist/.next/static/chunks/app/(application)/evals/page-e25d76c28076b126.js +2 -0
  139. package/dist/.next/static/chunks/app/(application)/evals/page-e25d76c28076b126.js.map +1 -0
  140. package/dist/.next/static/chunks/app/(application)/explorer/{page-d1580ece2ff5ba64.js → page-9f8ab38b5cd68c45.js} +2 -2
  141. package/dist/.next/static/chunks/app/(application)/explorer/page-9f8ab38b5cd68c45.js.map +1 -0
  142. package/dist/.next/static/chunks/app/(application)/jobs/{page-1f32c5e7202301b2.js → page-2d9a06a9959e7977.js} +2 -2
  143. package/dist/.next/static/chunks/app/(application)/jobs/page-2d9a06a9959e7977.js.map +1 -0
  144. package/dist/.next/static/chunks/app/(application)/keys/page-6ecb8218f18773b9.js +2 -0
  145. package/dist/.next/static/chunks/app/(application)/keys/page-6ecb8218f18773b9.js.map +1 -0
  146. package/dist/.next/static/chunks/app/(application)/layout-73d93420d0c6661c.js +2 -0
  147. package/dist/.next/static/chunks/app/(application)/layout-73d93420d0c6661c.js.map +1 -0
  148. package/dist/.next/static/chunks/app/(application)/{page-661f24beb316dabf.js → page-16a518c5864e6963.js} +2 -2
  149. package/dist/.next/static/chunks/app/(application)/page-16a518c5864e6963.js.map +1 -0
  150. package/dist/.next/static/chunks/app/(application)/projects/[project]/{page-cc6f6786682fd877.js → page-870b48a3e7f64f7d.js} +2 -2
  151. package/dist/.next/static/chunks/app/(application)/projects/[project]/page-870b48a3e7f64f7d.js.map +1 -0
  152. package/dist/.next/static/chunks/app/(application)/projects/{layout-3ef4b8519966eee7.js → layout-aa5baaf5cc644e70.js} +2 -2
  153. package/dist/.next/static/chunks/app/(application)/projects/layout-aa5baaf5cc644e70.js.map +1 -0
  154. package/dist/.next/static/chunks/app/(application)/projects/{page-6a38fd92beb3b45a.js → page-055a048a107095ed.js} +2 -2
  155. package/dist/.next/static/chunks/app/(application)/projects/page-055a048a107095ed.js.map +1 -0
  156. package/dist/.next/static/chunks/app/(application)/roles/page-b30682514e63b3f8.js +2 -0
  157. package/dist/.next/static/chunks/app/(application)/roles/page-b30682514e63b3f8.js.map +1 -0
  158. package/dist/.next/static/chunks/app/(application)/token/{page-19921b235606b9f3.js → page-f86eaf8c51fdbe52.js} +2 -2
  159. package/dist/.next/static/chunks/app/(application)/token/page-f86eaf8c51fdbe52.js.map +1 -0
  160. package/dist/.next/static/chunks/app/(application)/users/page-1a686fd83f765d8e.js +2 -0
  161. package/dist/.next/static/chunks/app/(application)/users/page-1a686fd83f765d8e.js.map +1 -0
  162. package/dist/.next/static/chunks/app/(application)/variables/create/{page-3d0e1788a92cba52.js → page-16582f525a24dd45.js} +2 -2
  163. package/dist/.next/static/chunks/app/(application)/variables/create/page-16582f525a24dd45.js.map +1 -0
  164. package/dist/.next/static/chunks/app/(application)/variables/edit/[variable_id]/{page-ad12a1419856c280.js → page-b37d9320812bb8f6.js} +2 -2
  165. package/dist/.next/static/chunks/app/(application)/variables/edit/[variable_id]/page-b37d9320812bb8f6.js.map +1 -0
  166. package/dist/.next/static/chunks/app/(application)/variables/{page-530fff39006ba055.js → page-9b438ce239c07987.js} +2 -2
  167. package/dist/.next/static/chunks/app/(application)/variables/page-9b438ce239c07987.js.map +1 -0
  168. package/dist/.next/static/chunks/app/(application)/variables/usage/[variable_id]/{page-11fc31486ee7764e.js → page-b1fe1791701d361e.js} +2 -2
  169. package/dist/.next/static/chunks/app/(application)/variables/usage/[variable_id]/page-b1fe1791701d361e.js.map +1 -0
  170. package/dist/.next/static/chunks/app/(application)/workflows/{page-feb479eaa043e041.js → page-93969baedc6f38ff.js} +2 -2
  171. package/dist/.next/static/chunks/app/(application)/workflows/page-93969baedc6f38ff.js.map +1 -0
  172. package/dist/.next/static/chunks/app/(authentication)/{layout-ed3d63f0ade93b47.js → layout-2dfa18ea6e6dc5cd.js} +2 -2
  173. package/dist/.next/static/chunks/app/(authentication)/layout-2dfa18ea6e6dc5cd.js.map +1 -0
  174. package/dist/.next/static/chunks/app/(authentication)/login/{error-65d2315c483bed81.js → error-c5f516f76e374400.js} +2 -2
  175. package/dist/.next/static/chunks/app/(authentication)/login/error-c5f516f76e374400.js.map +1 -0
  176. package/dist/.next/static/chunks/app/(authentication)/login/{page-3233ca86dc3297c3.js → page-4de4d6f64507c919.js} +2 -2
  177. package/dist/.next/static/chunks/app/(authentication)/login/page-4de4d6f64507c919.js.map +1 -0
  178. package/dist/.next/static/chunks/app/_not-found/page-3832d1eb6511168a.js.map +1 -1
  179. package/dist/.next/static/chunks/main-83299e0cc175f2ed.js.map +1 -1
  180. package/dist/.next/static/chunks/{main-app-e4276b9c44f225cb.js → main-app-da1df2757744a2ea.js} +2 -2
  181. package/dist/.next/static/chunks/main-app-da1df2757744a2ea.js.map +1 -0
  182. package/dist/.next/static/css/e3f2a16ab7676b05.css.map +1 -1
  183. package/dist/node_modules/sharp/build/Release/sharp-linux-x64.node +0 -0
  184. package/dist/node_modules/sharp/vendor/8.14.5/{darwin-arm64v8/lib/libvips-cpp.42.dylib → linux-x64/lib/libvips-cpp.so.42} +0 -0
  185. package/dist/node_modules/sharp/vendor/8.14.5/linux-x64/platform.json +1 -0
  186. package/dist/node_modules/sharp/vendor/8.14.5/{darwin-arm64v8 → linux-x64}/versions.json +1 -1
  187. package/dist/package.json +3 -2
  188. package/dist/server.js +1 -1
  189. package/index.js +37 -0
  190. package/package.json +7 -6
  191. package/release.config.cjs +30 -0
  192. package/dist/.env +0 -32
  193. package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-7737da0d7329baf0.js.map +0 -1
  194. package/dist/.next/static/chunks/app/(application)/agents/page-58d7ecbf04b75ef3.js.map +0 -1
  195. package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-fb7ea4dc4cdb350b.js +0 -2
  196. package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-fb7ea4dc4cdb350b.js.map +0 -1
  197. package/dist/.next/static/chunks/app/(application)/chat/[agent]/layout-a701083f64a86849.js.map +0 -1
  198. package/dist/.next/static/chunks/app/(application)/chat/[agent]/page-2f7e3126e0e76d70.js.map +0 -1
  199. package/dist/.next/static/chunks/app/(application)/chat/layout-b934ba4c0a125683.js.map +0 -1
  200. package/dist/.next/static/chunks/app/(application)/configuration/page-3aa96486933ae5dd.js.map +0 -1
  201. package/dist/.next/static/chunks/app/(application)/dashboard/page-2436e355871758ba.js.map +0 -1
  202. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-e073c74bd194e8cc.js.map +0 -1
  203. package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-375a978d25ee3a65.js.map +0 -1
  204. package/dist/.next/static/chunks/app/(application)/evals/[id]/page-b668fca1ba6993e2.js.map +0 -1
  205. package/dist/.next/static/chunks/app/(application)/evals/[id]/runs/page-07969d6e5fb01d7b.js.map +0 -1
  206. package/dist/.next/static/chunks/app/(application)/evals/cases/page-0f25ee5d9498cbc5.js.map +0 -1
  207. package/dist/.next/static/chunks/app/(application)/evals/page-78bbdcf2c04a4ef9.js +0 -2
  208. package/dist/.next/static/chunks/app/(application)/evals/page-78bbdcf2c04a4ef9.js.map +0 -1
  209. package/dist/.next/static/chunks/app/(application)/explorer/page-d1580ece2ff5ba64.js.map +0 -1
  210. package/dist/.next/static/chunks/app/(application)/jobs/page-1f32c5e7202301b2.js.map +0 -1
  211. package/dist/.next/static/chunks/app/(application)/keys/page-9b13ab99042d606c.js +0 -2
  212. package/dist/.next/static/chunks/app/(application)/keys/page-9b13ab99042d606c.js.map +0 -1
  213. package/dist/.next/static/chunks/app/(application)/layout-cff96ce5805f0772.js +0 -2
  214. package/dist/.next/static/chunks/app/(application)/layout-cff96ce5805f0772.js.map +0 -1
  215. package/dist/.next/static/chunks/app/(application)/page-661f24beb316dabf.js.map +0 -1
  216. package/dist/.next/static/chunks/app/(application)/projects/[project]/page-cc6f6786682fd877.js.map +0 -1
  217. package/dist/.next/static/chunks/app/(application)/projects/layout-3ef4b8519966eee7.js.map +0 -1
  218. package/dist/.next/static/chunks/app/(application)/projects/page-6a38fd92beb3b45a.js.map +0 -1
  219. package/dist/.next/static/chunks/app/(application)/roles/page-d4a925d823a3c66c.js +0 -2
  220. package/dist/.next/static/chunks/app/(application)/roles/page-d4a925d823a3c66c.js.map +0 -1
  221. package/dist/.next/static/chunks/app/(application)/token/page-19921b235606b9f3.js.map +0 -1
  222. package/dist/.next/static/chunks/app/(application)/users/page-7cddc0528218c5c8.js +0 -2
  223. package/dist/.next/static/chunks/app/(application)/users/page-7cddc0528218c5c8.js.map +0 -1
  224. package/dist/.next/static/chunks/app/(application)/variables/create/page-3d0e1788a92cba52.js.map +0 -1
  225. package/dist/.next/static/chunks/app/(application)/variables/edit/[variable_id]/page-ad12a1419856c280.js.map +0 -1
  226. package/dist/.next/static/chunks/app/(application)/variables/page-530fff39006ba055.js.map +0 -1
  227. package/dist/.next/static/chunks/app/(application)/variables/usage/[variable_id]/page-11fc31486ee7764e.js.map +0 -1
  228. package/dist/.next/static/chunks/app/(application)/workflows/page-feb479eaa043e041.js.map +0 -1
  229. package/dist/.next/static/chunks/app/(authentication)/layout-ed3d63f0ade93b47.js.map +0 -1
  230. package/dist/.next/static/chunks/app/(authentication)/login/error-65d2315c483bed81.js.map +0 -1
  231. package/dist/.next/static/chunks/app/(authentication)/login/page-3233ca86dc3297c3.js.map +0 -1
  232. package/dist/.next/static/chunks/main-app-e4276b9c44f225cb.js.map +0 -1
  233. package/dist/node_modules/sharp/build/Release/sharp-darwin-arm64v8.node +0 -0
  234. package/dist/node_modules/sharp/vendor/8.14.5/darwin-arm64v8/include/harfbuzz/hb-cplusplus.hh +0 -223
  235. package/dist/node_modules/sharp/vendor/8.14.5/darwin-arm64v8/include/vips/vips8 +0 -60
  236. package/dist/node_modules/sharp/vendor/8.14.5/darwin-arm64v8/platform.json +0 -1
  237. /package/dist/.next/static/{5Vf-v5wyENpLUvLzma2J6 → Wt4IDtB-Xwfc0Z_CpMmtm}/_buildManifest.js +0 -0
  238. /package/dist/.next/static/{5Vf-v5wyENpLUvLzma2J6 → Wt4IDtB-Xwfc0Z_CpMmtm}/_ssgManifest.js +0 -0
  239. /package/dist/node_modules/sharp/vendor/8.14.5/{darwin-arm64v8 → linux-x64}/THIRD-PARTY-NOTICES.md +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"static/chunks/app/(application)/projects/[project]/page-cc6f6786682fd877.js","mappings":"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","sources":["webpack://_N_E/?b31e","webpack://_N_E/../../../src/icons/files.ts","webpack://_N_E/../../../src/icons/package-minus.ts","webpack://_N_E/../../../src/icons/plus-square.ts","webpack://_N_E/./components/items-selection-modal.tsx","webpack://_N_E/./components/project-details.tsx","webpack://_N_E/./app/(application)/projects/[project]/page.tsx","webpack://_N_E/./components/ui/alert.tsx","webpack://_N_E/./components/ui/checkbox.tsx","webpack://_N_E/./hooks/use-uppy.tsx","webpack://_N_E/./components/uppy-dashboard.tsx","webpack://_N_E/./hooks/contexts.tsx","webpack://_N_E/./lib/check-chat-session-write-access.ts","webpack://_N_E/../../../src/icons/alert-triangle.ts","webpack://_N_E/../../../src/icons/chevrons-up-down.ts","webpack://_N_E/../../../src/icons/folder.ts","webpack://_N_E/../../../src/icons/globe.ts","webpack://_N_E/../../../src/icons/loader-2.ts","webpack://_N_E/../../../src/icons/lock.ts","webpack://_N_E/../../../src/icons/message-square.ts","webpack://_N_E/../../../src/icons/pencil.ts","webpack://_N_E/../../../src/icons/settings-2.ts","webpack://_N_E/../../../src/icons/shield.ts","webpack://_N_E/../src/checkbox.tsx","webpack://_N_E/../src/label.tsx"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/Users/daniel.claessen/Desktop/Projects/exulu/frontend/app/(application)/projects/[project]/page.tsx\");\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Files\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUuNSAySDguNmMtLjQgMC0uOC4yLTEuMS41LS4zLjMtLjUuNy0uNSAxLjF2MTIuOGMwIC40LjIuOC41IDEuMS4zLjMuNy41IDEuMS41aDkuOGMuNCAwIC44LS4yIDEuMS0uNS4zLS4zLjUtLjcuNS0xLjFWNi41TDE1LjUgMnoiIC8+CiAgPHBhdGggZD0iTTMgNy42djEyLjhjMCAuNC4yLjguNSAxLjEuMy4zLjcuNSAxLjEuNWg5LjgiIC8+CiAgPHBhdGggZD0iTTE1IDJ2NWg1IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/files\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Files = createLucideIcon('Files', [\n [\n 'path',\n {\n d: 'M15.5 2H8.6c-.4 0-.8.2-1.1.5-.3.3-.5.7-.5 1.1v12.8c0 .4.2.8.5 1.1.3.3.7.5 1.1.5h9.8c.4 0 .8-.2 1.1-.5.3-.3.5-.7.5-1.1V6.5L15.5 2z',\n key: 'cennsq',\n },\n ],\n ['path', { d: 'M3 7.6v12.8c0 .4.2.8.5 1.1.3.3.7.5 1.1.5h9.8', key: 'ms809a' }],\n ['path', { d: 'M15 2v5h5', key: 'qq6kwv' }],\n]);\n\nexport default Files;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name PackageMinus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTYgMTZoNiIgLz4KICA8cGF0aCBkPSJNMjEgMTBWOGEyIDIgMCAwIDAtMS0xLjczbC03LTRhMiAyIDAgMCAwLTIgMGwtNyA0QTIgMiAwIDAgMCAzIDh2OGEyIDIgMCAwIDAgMSAxLjczbDcgNGEyIDIgMCAwIDAgMiAwbDItMS4xNCIgLz4KICA8cGF0aCBkPSJtNy41IDQuMjcgOSA1LjE1IiAvPgogIDxwb2x5bGluZSBwb2ludHM9IjMuMjkgNyAxMiAxMiAyMC43MSA3IiAvPgogIDxsaW5lIHgxPSIxMiIgeDI9IjEyIiB5MT0iMjIiIHkyPSIxMiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/package-minus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst PackageMinus = createLucideIcon('PackageMinus', [\n ['path', { d: 'M16 16h6', key: '100bgy' }],\n [\n 'path',\n {\n d: 'M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l2-1.14',\n key: 'e7tb2h',\n },\n ],\n ['path', { d: 'm7.5 4.27 9 5.15', key: '1c824w' }],\n ['polyline', { points: '3.29 7 12 12 20.71 7', key: 'ousv84' }],\n ['line', { x1: '12', x2: '12', y1: '22', y2: '12', key: 'a4e8g8' }],\n]);\n\nexport default PackageMinus;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name PlusSquare\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHg9IjMiIHk9IjMiIHJ4PSIyIiAvPgogIDxwYXRoIGQ9Ik04IDEyaDgiIC8+CiAgPHBhdGggZD0iTTEyIDh2OCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/plus-square\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst PlusSquare = createLucideIcon('PlusSquare', [\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', key: 'afitv7' }],\n ['path', { d: 'M8 12h8', key: '1wcyev' }],\n ['path', { d: 'M12 8v8', key: 'napkw2' }],\n]);\n\nexport default PlusSquare;\n","import { Context } from \"@/types/models/context\";\nimport { useContexts } from \"@/hooks/contexts\";\nimport { useState } from \"react\"\nimport { PlusSquareIcon } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport { useQuery } from \"@apollo/client\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/components/ui/command\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/components/ui/dialog\"\nimport { Item } from \"@/types/models/item\";\nimport { GET_ITEMS, PAGINATION_POSTFIX } from \"@/queries/queries\";\nimport { Loading } from \"./ui/loading\";\n\nexport const ItemsSelectionModal = ({ onConfirm }: {\n onConfirm: (data: {\n item: Item,\n context: Context\n }[]) => void\n}) => {\n // Shows a modal that first shows a list of all contexts\n\n const { data, loading, error } = useContexts();\n const [context, setContext] = useState<Context | undefined>(undefined);\n const [open, setOpen] = useState(false);\n\n return (<Dialog open={open} onOpenChange={(value) => {\n setOpen(value)\n setContext(undefined)\n }}>\n <DialogTrigger asChild>\n <Button className=\"w-full\" variant=\"outline\">\n <PlusSquareIcon className=\"h-4 w-4 mr-2\" />\n Select items from knowledge sources\n to add to the project, or upload files.\n </Button>\n </DialogTrigger>\n <DialogContent className=\"sm:max-w-[900px]\">\n <DialogHeader>\n <DialogTitle>Item selection</DialogTitle>\n <DialogDescription>Browse through contexts and select items.</DialogDescription>\n </DialogHeader>\n {\n !context && (\n <Command className=\"rounded-lg border shadow-md md:min-w-[450px]\">\n <CommandInput placeholder=\"Type a command or search...\" />\n <CommandList>\n <CommandEmpty>No results found.</CommandEmpty>\n\n <CommandGroup heading=\"Contexts\">\n {\n data?.contexts?.items.map((context: Context) => (\n <CommandItem key={context.id} onSelect={() => {\n setContext(context)\n }}>\n {context.name}\n </CommandItem>\n ))\n }\n </CommandGroup>\n\n </CommandList>\n </Command>\n )\n }\n {\n context && (\n <ItemsList context={context} onConfirm={(item) => {\n console.log(\"item\", item)\n onConfirm([{\n item,\n context\n }])\n setOpen(false)\n }} />\n )\n }\n </DialogContent>\n </Dialog>)\n}\n\nconst ItemsList = ({ context, onConfirm }: { context: Context, onConfirm: (item: Item) => void }) => {\n const [search, setSearch] = useState<string | undefined>(undefined)\n let { loading, data, refetch, previousData: prev, error } = useQuery<{\n [key: string]: {\n pageInfo: {\n pageCount: number;\n itemCount: number;\n currentPage: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n };\n items: Item[];\n }\n }>(GET_ITEMS(context.id, []), {\n fetchPolicy: \"no-cache\",\n nextFetchPolicy: \"network-only\",\n skip: !context.id,\n variables: {\n context: context.id,\n page: 1,\n limit: 10,\n sort: {\n field: \"updatedAt\",\n direction: \"DESC\",\n },\n filters: {\n archived: {\n ne: true\n },\n ...(search ? { name: { contains: `${search}` } } : {}),\n },\n },\n });\n\n return (\n <Command className=\"rounded-lg border shadow-md md:min-w-[450px]\">\n <CommandInput onValueChange={(data) => setSearch(data)} placeholder=\"Type a command or search...\" />\n <CommandList>\n <CommandGroup heading=\"Items\">\n {\n !prev && loading && (\n <CommandItem key={\"loading\"}>\n <Loading />\n </CommandItem>\n )\n }\n {\n !loading && !data?.[context.id + PAGINATION_POSTFIX]?.items?.length && (\n <CommandEmpty>No items found.</CommandEmpty>\n )\n }\n {(data || prev)?.[context.id + PAGINATION_POSTFIX]?.items?.map((item: Item) => (\n <CommandItem key={item.id} onSelect={() => {\n onConfirm(item)\n }}>{item.name}</CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n )\n}","\"use client\";\n\nimport * as React from \"react\";\nimport { useState, useContext } from \"react\";\nimport { useQuery, useMutation, useApolloClient } from \"@apollo/client\";\nimport { UPDATE_PROJECT, DELETE_PROJECT, GET_AGENT_SESSIONS, GET_AGENTS, CREATE_AGENT_SESSION, GET_ITEM_BY_ID, UPDATE_AGENT_SESSION_PROJECT, REMOVE_AGENT_SESSION_BY_ID, DELETE_ITEM } from \"@/queries/queries\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { Textarea } from \"@/components/ui/textarea\";\nimport { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from \"@/components/ui/dialog\";\nimport { Checkbox } from \"@/components/ui/checkbox\";\nimport { Trash2, Plus, MessageSquare, Settings2, Files, AlertTriangle, Shield, Pencil, Search, Bot, PackageMinus } from \"lucide-react\";\nimport { RBACControl } from \"@/components/rbac\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { useToast } from \"@/components/ui/use-toast\";\nimport { Loading } from \"./ui/loading\";\nimport { Agent } from \"@/types/models/agent\";\nimport { useRouter } from \"next/navigation\";\nimport { AgentSession } from \"@/types/models/agent-session\";\nimport { Project } from \"@/types/models/project\";\nimport { checkChatSessionWriteAccess } from \"@/lib/check-chat-session-write-access\";\nimport { UserContext } from \"@/app/(application)/authenticated\";\nimport Link from \"next/link\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\";\nimport { Item } from \"@/types/models/item\";\nimport { FileItem } from \"./uppy-dashboard\";\nimport { ItemsSelectionModal } from \"./items-selection-modal\";\nimport { files } from \"@/util/api\";\n\ninterface ProjectDetailsProps {\n project: Project;\n}\n\nexport function ProjectDetails({ project }: ProjectDetailsProps) {\n const [isEditing, setIsEditing] = useState(false);\n const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false);\n const [isAgentSelectionOpen, setIsAgentSelectionOpen] = useState(false);\n const [agentSearch, setAgentSearch] = useState(\"\");\n const [activeView, setActiveView] = useState<'overview' | 'context' | 'sessions' | 'access' | 'settings'>('overview');\n const { user } = useContext(UserContext);\n const router = useRouter();\n const [deleteOptions, setDeleteOptions] = useState({\n deleteItems: false,\n deleteSessions: false,\n });\n const [formData, setFormData] = useState({\n name: project.name || \"\",\n description: project.description || \"\",\n custom_instructions: project.custom_instructions || \"\",\n });\n const { toast } = useToast();\n\n const [rbac, setRbac] = useState({\n rights_mode: project.rights_mode,\n users: project.RBAC?.users,\n roles: project.RBAC?.roles,\n projects: project.RBAC?.projects\n })\n\n const [projectItems, setProjectItems] = useState<string[]>(project.project_items || []);\n const [updateProject, { loading: isSaving }] = useMutation(UPDATE_PROJECT);\n const [deleteProject] = useMutation(DELETE_PROJECT);\n const [deletingProject, setDeletingProject] = useState(false);\n const { data: sessionsData, loading: sessionsLoading, refetch: refetchSessions } = useQuery(GET_AGENT_SESSIONS, {\n variables: {\n page: 1,\n limit: 50,\n filters: [\n { project: { eq: project.id } }\n ]\n }\n });\n\n const { data: agentsData, loading: agentsLoading } = useQuery(GET_AGENTS, {\n variables: {\n page: 1,\n limit: 100,\n filters: [],\n sort: { field: \"updatedAt\", direction: \"DESC\" }\n }\n });\n\n const apolloClient = useApolloClient()\n\n const [createAgentSession, { loading: isCreatingSession }] = useMutation(CREATE_AGENT_SESSION);\n\n const [updateAgentSession, { loading: isUpdatingSession }] = useMutation(UPDATE_AGENT_SESSION_PROJECT);\n\n const [deleteSession, { loading: isDeletingSession }] = useMutation(REMOVE_AGENT_SESSION_BY_ID);\n\n const chatSessions: AgentSession[] = sessionsData?.agent_sessionsPagination?.items || [];\n const agents: Agent[] = agentsData?.agentsPagination?.items || [];\n\n const filteredAgents = React.useMemo(() => {\n if (!agentSearch) return agents;\n return agents.filter(agent =>\n agent.name.toLowerCase().includes(agentSearch.toLowerCase())\n );\n }, [agents, agentSearch]);\n\n const handleSave = async () => {\n if (!formData.name.trim()) {\n toast({\n title: \"Validation Error\",\n description: \"Project name is required.\",\n variant: \"destructive\",\n });\n return;\n }\n\n try {\n await updateProject({\n variables: {\n id: project.id,\n input: {\n name: formData.name.trim(),\n description: formData.description.trim() || null,\n custom_instructions: formData.custom_instructions.trim() || null,\n },\n },\n });\n\n toast({\n title: \"Success\",\n description: \"Project updated successfully!\",\n });\n\n setIsEditing(false);\n } catch (error: any) {\n console.error(\"Error updating project:\", error);\n toast({\n title: \"Error\",\n description: error.message || \"Failed to update project. Please try again.\",\n variant: \"destructive\",\n });\n }\n };\n\n const handleCancel = () => {\n if (project) {\n setFormData({\n name: project.name || \"\",\n description: project.description || \"\",\n custom_instructions: project.custom_instructions || \"\",\n });\n }\n setIsEditing(false);\n };\n\n const handleNewChatSession = () => {\n setIsAgentSelectionOpen(true);\n };\n\n const handleAgentSelect = async (agent: Agent) => {\n try {\n const result = await createAgentSession({\n variables: {\n title: `New session with ${agent.name}`,\n agent: agent.id,\n project: project.id,\n rights_mode: \"projects\",\n RBAC: {\n projects: [{ id: project.id, rights: \"read\" }]\n }\n },\n });\n\n const sessionId = result.data?.agent_sessionsCreateOne?.item?.id;\n\n if (sessionId) {\n toast({\n title: \"Success\",\n description: \"Session created successfully! Sessions started in a project are accessible for viewing by project members.\",\n });\n\n setIsAgentSelectionOpen(false);\n setAgentSearch(\"\");\n\n router.push(`/chat/${agent.id}/${sessionId}`);\n }\n } catch (error: any) {\n console.error(\"Error creating session:\", error);\n toast({\n title: \"Error\",\n description: error.message || \"Failed to create session. Please try again.\",\n variant: \"destructive\",\n });\n }\n };\n\n const handleDeleteProject = async () => {\n try {\n setDeletingProject(true);\n if (deleteOptions.deleteItems) {\n await Promise.all(projectItems.map(async (item) => {\n const context = item.split(\"/\")[0];\n const id = item.split(\"/\")[1];\n if (!context || !id) return;\n const { data } = await apolloClient.mutate({\n mutation: DELETE_ITEM(context, context === \"files_default_context\" ? [\"s3key\"] : []),\n variables: { id },\n });\n\n if (data[`${context}_itemsRemoveOneById`]?.s3key) {\n try {\n await files.delete(data[`${context}_itemsRemoveOneById`]?.s3key)\n } catch (error: any) {\n console.error(\"[EXULU] Error deleting file from s3 storage:\", error);\n }\n }\n\n }));\n }\n\n await Promise.all(chatSessions.map(async (session) => {\n if (deleteOptions.deleteSessions) {\n await deleteSession({\n variables: { id: session.id },\n });\n } else {\n await updateAgentSession({\n variables: { id: session.id, project: null },\n });\n }\n }))\n\n await deleteProject({\n variables: { id: project.id },\n });\n\n toast({\n title: \"Success\",\n description: `Project \"${project.name}\" has been deleted successfully.`,\n });\n\n // Navigate back to projects list or close modal\n setIsDeleteDialogOpen(false);\n setDeletingProject(false);\n router.push('/projects');\n } catch (error: any) {\n setDeletingProject(false);\n console.error(\"Error deleting project:\", error);\n toast({\n title: \"Error\",\n description: error.message || \"Failed to delete project. Please try again.\",\n variant: \"destructive\",\n });\n }\n };\n\n return (\n <div className=\"flex-1 p-6 mt-20\">\n <div className=\"max-w-5xl mx-auto space-y-6\">\n <div className=\"flex gap-6 h-full\">\n <div className=\"w-80 space-y-4\">\n <Card>\n <CardContent className=\"p-4\">\n <div className=\"space-y-3\">\n <h3 className=\"font-semibold text-lg\">{project.name}</h3>\n <p className=\"text-muted-foreground text-sm leading-relaxed\">\n {project.description || \"No description provided.\"}\n </p>\n </div>\n </CardContent>\n </Card>\n\n {/* Navigation Buttons */}\n <div className=\"space-y-2\">\n <Button\n variant={activeView === 'overview' ? 'default' : 'ghost'}\n className=\"w-full justify-start\"\n onClick={() => setActiveView('overview')}\n >\n <Settings2 className=\"h-4 w-4 mr-2\" />\n Project information\n </Button>\n <Button\n variant={activeView === 'context' ? 'default' : 'ghost'}\n className=\"w-full justify-start\"\n onClick={() => setActiveView('context')}\n >\n <Files className=\"h-4 w-4 mr-2\" />\n Project files\n </Button>\n <Button\n variant={activeView === 'sessions' ? 'default' : 'ghost'}\n className=\"w-full justify-start\"\n onClick={() => setActiveView('sessions')}\n >\n <MessageSquare className=\"h-4 w-4 mr-2\" />\n Project sessions\n </Button>\n <Button\n variant={activeView === 'access' ? 'default' : 'ghost'}\n className=\"w-full justify-start\"\n onClick={() => setActiveView('access')}\n >\n <Shield className=\"h-4 w-4 mr-2\" />\n Access control\n </Button>\n <Button\n variant={activeView === 'settings' ? 'default' : 'ghost'}\n className=\"w-full justify-start\"\n onClick={() => setActiveView('settings')}\n >\n <Settings2 className=\"h-4 w-4 mr-2\" />\n Project settings\n </Button>\n </div>\n </div>\n\n {/* Main Content Area */}\n <div className=\"flex-1\">\n {activeView === 'overview' && (\n <div className=\"space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle>Project Information</CardTitle>\n <CardDescription>\n Basic information about this project\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"grid gap-4\">\n <div className=\"space-y-2\">\n <Label htmlFor=\"name\">Project Name</Label>\n {isEditing ? (\n <Input\n id=\"name\"\n value={formData.name}\n onChange={(e) => setFormData({ ...formData, name: e.target.value })}\n />\n ) : (\n <p className=\"text-sm\">{project.name}</p>\n )}\n </div>\n </div>\n <div className=\"space-y-2\">\n <Label htmlFor=\"description\">Description</Label>\n {isEditing ? (\n <Textarea\n id=\"description\"\n value={formData.description}\n onChange={(e) => setFormData({ ...formData, description: e.target.value })}\n rows={3}\n />\n ) : (\n <p className=\"text-sm\">{project.description || \"No description provided\"}</p>\n )}\n </div>\n <div className=\"space-y-2\">\n <Label htmlFor=\"instructions\">Custom Instructions</Label>\n {isEditing ? (\n <Textarea\n id=\"instructions\"\n value={formData.custom_instructions}\n onChange={(e) => setFormData({ ...formData, custom_instructions: e.target.value })}\n rows={4}\n placeholder=\"Enter custom instructions for sessions in this project...\"\n />\n ) : (\n <p className=\"text-sm\">{project.custom_instructions || \"No custom instructions set\"}</p>\n )}\n </div>\n </CardContent>\n\n <CardFooter>\n <div className=\"flex items-center justify-between\">\n <div className=\"flex gap-2\">\n {isEditing ? (\n <>\n <Button variant=\"outline\" onClick={handleCancel}>\n Cancel\n </Button>\n <Button onClick={handleSave}>\n <span>Save changes</span>\n {\n isSaving && (\n <Loading className=\"mr-2\" />\n )\n }\n </Button>\n </>\n ) : (\n <Button variant=\"outline\" onClick={() => setIsEditing(true)}>\n <Pencil className=\"h-4 w-4 mr-2\" />\n Edit\n </Button>\n )}\n </div>\n </div>\n </CardFooter>\n </Card>\n </div>\n )}\n\n {activeView === 'context' && (\n <div className=\"space-y-6 w-full\">\n <Card>\n <CardHeader>\n <CardTitle>Project context items</CardTitle>\n <CardDescription>\n Items that provide context for sessions in this project (max 15 items). Note that different\n agents may have different file types supported.\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-4\">\n <ItemsSelectionModal onConfirm={(data) => {\n const update = [...projectItems, ...data.map((x) => `${x.context.id}/${x.item.id}`)];\n console.log(\"update\", update);\n setProjectItems(update);\n updateProject({\n variables: {\n id: project.id,\n input: {\n project_items: update\n }\n }\n })\n }} />\n\n {/* List of items */}\n <div className=\"space-y-2\">\n {\n <div className=\"space-y-2\">\n {\n projectItems?.length === 0 && (\n <div className=\"text-center py-8 text-muted-foreground\">\n <Files className=\"h-12 w-12 mx-auto mb-2 opacity-50\" />\n <p>No items added to the project context yet.</p>\n </div>\n )\n }\n <div className=\"grid grid-cols-3 sm:grid-cols-4 gap-3\">\n {projectItems?.map((gid) => (\n <ProjectItem key={gid} gid={gid} onRemove={(gid) => {\n const update = projectItems.filter((g) => g !== gid)\n setProjectItems(update)\n updateProject({\n variables: {\n id: project.id,\n input: {\n project_items: update\n }\n }\n })\n }} />\n ))}\n </div>\n </div>\n }\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n )}\n\n {activeView === 'sessions' && (\n <div className=\"space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle>Project sessions</CardTitle>\n <CardDescription>\n Sessions associated with this project\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-4\">\n <Button onClick={handleNewChatSession} className=\"w-full\" variant=\"outline\">\n <Plus className=\"h-4 w-4 mr-2\" />\n Start new session\n </Button>\n\n <div className=\"space-y-2\">\n {chatSessions.map((session) => {\n const writeAccess = checkChatSessionWriteAccess(session, user);\n return (\n <div key={session.id} className=\"flex items-center justify-between p-3 border rounded-lg\">\n <div className=\"flex items-center gap-3\">\n <MessageSquare className=\"h-4 w-4\" />\n <div>\n <Link href={`/chat/${session.agent}/${session.id}`}>\n <p className=\"font-medium max-w-[80%] truncate\">{session.title}</p>\n </Link>\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n disabled={!writeAccess || isUpdatingSession}\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => {\n if (isUpdatingSession) return;\n updateAgentSession({\n variables: {\n id: session.id,\n project: null\n }\n })\n refetchSessions();\n }}>\n <PackageMinus className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p>Remove session from project.</p>\n </TooltipContent>\n </Tooltip>\n\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n disabled={!writeAccess || isDeletingSession}\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => {\n if (isDeletingSession) return;\n deleteSession({\n variables: {\n id: session.id\n }\n })\n refetchSessions();\n }}\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p>Delete session completely.</p>\n </TooltipContent>\n </Tooltip>\n </div>\n </div>\n )\n }\n )}\n </div>\n\n {chatSessions.length === 0 && !sessionsLoading && (\n <div className=\"text-center py-8 text-muted-foreground\">\n <MessageSquare className=\"h-12 w-12 mx-auto mb-2 opacity-50\" />\n <p>No sessions found</p>\n </div>\n )}\n\n {sessionsLoading && (\n <div className=\"text-center py-8 text-muted-foreground\">\n <MessageSquare className=\"h-12 w-12 mx-auto mb-2 opacity-50\" />\n <p>Loading sessions...</p>\n </div>\n )}\n </div>\n </CardContent>\n </Card>\n </div>\n )}\n\n {activeView === 'access' && (\n <div className=\"space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle>Access Control</CardTitle>\n <CardDescription>\n Control who can access this project\n </CardDescription>\n </CardHeader>\n <CardContent>\n <RBACControl\n allowedModes={['private', 'users', 'roles']}\n initialRightsMode={project.rights_mode || 'private'}\n initialUsers={project.RBAC?.users}\n initialRoles={project.RBAC?.roles}\n initialProjects={project.RBAC?.projects}\n onChange={(rights_mode, users, roles, projects) => {\n setRbac({\n rights_mode,\n users,\n roles,\n projects\n })\n }}\n />\n </CardContent>\n <CardFooter>\n <Button onClick={() => {\n updateProject({\n variables: {\n id: project.id,\n input: {\n rights_mode: rbac.rights_mode,\n RBAC: {\n users: rbac.users,\n roles: rbac.roles,\n projects: rbac.projects\n }\n }\n }\n })\n }}>\n <span>Save access rights</span>\n {isSaving && <Loading className=\"ml-2\" />}\n </Button>\n </CardFooter>\n </Card>\n </div>\n )}\n\n {activeView === 'settings' && (\n <div className=\"space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle>Danger Zone</CardTitle>\n <CardDescription>\n Permanently delete this project and all associated data\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-4\">\n <div className=\"flex items-start gap-3 p-4 border border-destructive/20 rounded-lg bg-destructive/5\">\n <AlertTriangle className=\"h-5 w-5 text-destructive mt-0.5\" />\n <div className=\"flex-1\">\n <h4 className=\"font-medium text-destructive\">Delete Project</h4>\n <p className=\"text-sm text-muted-foreground mt-1\">\n This action cannot be undone. This will permanently delete the project and optionally remove all associated context files and sessions.\n </p>\n </div>\n </div>\n\n <Dialog open={isDeleteDialogOpen} onOpenChange={setIsDeleteDialogOpen}>\n <DialogTrigger asChild>\n <Button variant=\"destructive\">\n <Trash2 className=\"h-4 w-4 mr-2\" />\n Delete Project\n </Button>\n </DialogTrigger>\n <DialogContent className=\"sm:max-w-md\">\n <DialogHeader>\n <DialogTitle>Delete Project</DialogTitle>\n <DialogDescription>\n Are you sure you want to delete \"{project.name}\"? This action cannot be undone.\n </DialogDescription>\n </DialogHeader>\n <div className=\"space-y-4\">\n <div className=\"flex items-center space-x-2\">\n <Checkbox\n id=\"delete-items\"\n checked={deleteOptions.deleteItems}\n onCheckedChange={(checked) =>\n setDeleteOptions(prev => ({ ...prev, deleteItems: checked as boolean }))\n }\n />\n <label htmlFor=\"delete-items\" className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n Also delete all context items ({projectItems?.length} items)\n </label>\n </div>\n <div className=\"flex items-center space-x-2\">\n <Checkbox\n id=\"delete-sessions\"\n checked={deleteOptions.deleteSessions}\n onCheckedChange={(checked) =>\n setDeleteOptions(prev => ({ ...prev, deleteSessions: checked as boolean }))\n }\n />\n <label htmlFor=\"delete-sessions\" className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n Also delete all sessions ({chatSessions.length} sessions)\n </label>\n </div>\n {(deleteOptions.deleteItems || deleteOptions.deleteSessions) && (\n <div className=\"flex items-start gap-2 p-3 border border-amber-200 rounded-lg bg-amber-50\">\n <AlertTriangle className=\"h-4 w-4 text-amber-600 mt-0.5\" />\n <p className=\"text-sm text-amber-800\">\n {deleteOptions.deleteItems && deleteOptions.deleteSessions\n ? \"All context items and sessions will be permanently deleted.\"\n : deleteOptions.deleteItems\n ? \"All context items will be permanently deleted.\"\n : \"All sessions will be permanently deleted.\"\n }\n </p>\n </div>\n )}\n </div>\n <DialogFooter className=\"sm:justify-start\">\n <Button variant=\"outline\" onClick={() => setIsDeleteDialogOpen(false)}>\n Cancel\n </Button>\n <Button disabled={deletingProject} variant=\"destructive\" onClick={handleDeleteProject}>\n {\n deletingProject ? (\n <Loading className=\"mr-2 w-4 h-4\" />\n ) : (\n <Trash2 className=\"h-4 w-4 mr-2\" />\n )\n }\n Delete Project\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </div>\n </CardContent>\n </Card>\n </div>\n )}\n </div>\n </div>\n </div>\n\n {/* Agent Selection Modal */}\n <Dialog open={isAgentSelectionOpen} onOpenChange={setIsAgentSelectionOpen}>\n <DialogContent className=\"sm:max-w-4xl\">\n <DialogHeader>\n <DialogTitle>Select an Agent</DialogTitle>\n <DialogDescription>\n Choose an agent to start a new chat session. Sessions started in a project are accessible for viewing by project members.\n </DialogDescription>\n </DialogHeader>\n\n <div className=\"space-y-4\">\n {/* Search Input */}\n <div className=\"relative\">\n <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground\" />\n <Input\n placeholder=\"Search agents...\"\n value={agentSearch}\n onChange={(e) => setAgentSearch(e.target.value)}\n className=\"pl-10\"\n />\n </div>\n\n {/* Agents Grid */}\n <div className=\"max-h-96 overflow-y-auto\">\n {agentsLoading ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {[...Array(6)].map((_, i) => (\n <div key={i} className=\"p-4 border rounded-lg\">\n <div className=\"flex items-center gap-3\">\n <Skeleton className=\"h-12 w-12 rounded-full\" />\n <div className=\"space-y-2 flex-1\">\n <Skeleton className=\"h-4 w-3/4\" />\n <Skeleton className=\"h-3 w-1/2\" />\n </div>\n </div>\n </div>\n ))}\n </div>\n ) : filteredAgents.length > 0 ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {filteredAgents.map((agent) => (\n <div\n key={agent.id}\n className=\"p-4 border rounded-lg hover:border-primary cursor-pointer transition-colors\"\n onClick={() => handleAgentSelect(agent)}\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"h-12 w-12 rounded-full bg-primary/10 flex items-center justify-center\">\n {agent.image ? (\n <img\n src={agent.image}\n alt={agent.name}\n className=\"h-12 w-12 rounded-full object-cover\"\n />\n ) : (\n <Bot className=\"h-6 w-6\" />\n )}\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"font-medium truncate\">{agent.name}</p>\n <p className=\"text-sm text-muted-foreground truncate\">\n {agent.description || `${agent.type} agent`}\n </p>\n <div className=\"flex items-center gap-2 mt-1\">\n <Badge variant={agent.active ? \"default\" : \"secondary\"} className=\"text-xs\">\n {agent.active ? \"Active\" : \"Inactive\"}\n </Badge>\n <Badge variant=\"outline\" className=\"text-xs\">\n {agent.type}\n </Badge>\n </div>\n </div>\n </div>\n </div>\n ))}\n </div>\n ) : (\n <div className=\"text-center py-8 text-muted-foreground\">\n <Bot className=\"h-12 w-12 mx-auto mb-2 opacity-50\" />\n <p>{agentSearch ? \"No agents found matching your search\" : \"No agents available\"}</p>\n </div>\n )}\n </div>\n </div>\n\n <DialogFooter>\n <Button variant=\"outline\" onClick={() => setIsAgentSelectionOpen(false)}>\n Cancel\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </div>\n );\n}\n\nfunction ProjectItem({ gid, onRemove }: { gid: string, onRemove: (gid: string) => void }) {\n\n const context = gid.split(\"/\")[0];\n const id = gid.split(\"/\")[1];\n if (!context) return null;\n if (!id) return null;\n\n const { data, loading } = useQuery<\n {\n [key: string]: Item\n }>(GET_ITEM_BY_ID(context, context === \"files_default_context\" ? [\n \"s3key\"\n ] : []), {\n variables: {\n id\n }\n });\n\n console.log(\"data\", data);\n\n if (loading) return null;\n const item = data?.[context + \"_itemsById\"];\n if (!item) return null;\n const fields = Object.values(item || {})\n const files = fields.filter(x => x === \"_s3key\");\n\n if (!files.length) return null;\n\n return <>\n {files.map(file => (\n <FileItem s3Key={file} onRemove={() => {\n onRemove(gid)\n }} active={false} disabled={false} />\n ))}\n </>\n}","\"use client\";\n\nimport * as React from \"react\";\nimport { useParams } from \"next/navigation\";\nimport { ProjectDetails } from \"@/components/project-details\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { Alert, AlertDescription, AlertTitle } from \"@/components/ui/alert\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_PROJECT_BY_ID } from \"@/queries/queries\";\nimport { ExclamationTriangleIcon } from \"@radix-ui/react-icons\";\n\nexport default function ProjectPage() {\n const params = useParams();\n const projectId = params?.project as string;\n\n const { data, loading, error } = useQuery(GET_PROJECT_BY_ID, {\n variables: { id: projectId }\n });\n\n\n if (loading) {\n return <div>\n <Skeleton className=\"w-full h-full\" />\n </div>\n }\n\n if (error) {\n return <Alert variant=\"destructive\">\n <ExclamationTriangleIcon className=\"size-4\" />\n <AlertTitle>Error</AlertTitle>\n <AlertDescription>\n Error loading project.\n </AlertDescription>\n </Alert>\n }\n\n if (!data?.projectById) {\n return <Alert variant=\"destructive\">\n <ExclamationTriangleIcon className=\"size-4\" />\n <AlertTitle>Error</AlertTitle>\n <AlertDescription>\n Project not found.\n </AlertDescription>\n </Alert>\n }\n\n return <ProjectDetails project={data.projectById} />;\n}","import { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n info: \"border-info/50 text-info dark:border-info [&>svg]:text-info\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n));\nAlert.displayName = \"Alert\";\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n));\nAlertTitle.displayName = \"AlertTitle\";\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n {...props}\n />\n));\nAlertDescription.displayName = \"AlertDescription\";\n\nexport { Alert, AlertTitle, AlertDescription };\n","\"use client\";\n\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"size-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n","import { useEffect, useState, useContext } from \"react\";\nimport Uppy from \"@uppy/core\";\nimport AwsS3 from \"@uppy/aws-s3\";\nimport \"@uppy/core/dist/style.min.css\";\nimport \"@uppy/dashboard/dist/style.min.css\";\nimport '@uppy/core/dist/style.min.css';\nimport '@uppy/dashboard/dist/style.min.css';\nimport { getToken } from \"@/util/api\";\nimport { ConfigContext } from \"@/components/config-context\";\n\ninterface InitializeOptions {\n backend: string;\n callbacks?: {\n uploadSuccess?: (response: {\n file: any | null;\n url: string\n key: string\n }) => void;\n };\n fileKey?: string;\n fileKeyPrefix?: string;\n maxNumberOfFiles?: number;\n uppyOptions?: {\n id?: string;\n allowedFileTypes: string[];\n };\n useName?: boolean;\n}\n\nexport const initializeUppy = async (options: InitializeOptions): Promise<Uppy> => {\n if (!options.backend) {\n throw new Error(\"No backend set.\")\n }\n const { callbacks, maxNumberOfFiles, uppyOptions } = options || {};\n const { uploadSuccess } = callbacks || {};\n const { allowedFileTypes, id } = uppyOptions || {};\n const token = await getToken()\n\n const uppy = new Uppy({\n autoProceed: true,\n debug: false,\n id: id || \"uppy\",\n restrictions: {\n maxNumberOfFiles: maxNumberOfFiles || 5,\n allowedFileTypes: allowedFileTypes || [\".heic\", \".jpg\", \".jpeg\", \".png\", \".webp\", \".svg\"],\n }\n })\n .use(AwsS3, {\n id: \"Exulu\",\n endpoint: options.backend,\n headers: { \n Authorization: `Bearer ${token}`,\n Session: localStorage.getItem(\"session\") ?? \"\",\n }\n })\n .on(\"file-added\", async (file) => {\n console.debug(\"added\", file);\n })\n .on(\"upload-error\", (file, error) => {\n if (!file?.id) {\n return;\n }\n uppy.removeFile(file?.id);\n console.error(\"error\", error);\n })\n .on(\"upload-success\", (file, response) => {\n if (!response.uploadURL) {\n return;\n }\n if (uploadSuccess) {\n console.log(\"response\", response)\n uploadSuccess({\n file: file,\n key: response.uploadURL.split(\"/\").pop() || \"\",\n url: response.uploadURL,\n });\n }\n });\n\n return uppy;\n};\n\nfunction useUppy(options: InitializeOptions, deps: any[] = []) {\n const configContext = useContext(ConfigContext);\n const [uppy, setUppy] = useState<Uppy | undefined>(undefined);\n useEffect(() => {\n const initUppy = async () => {\n const uppyInstance = await initializeUppy({\n ...options,\n backend: configContext?.backend || \"\",\n });\n setUppy(uppyInstance);\n };\n initUppy()\n return () => {\n if (uppy) {\n uppy.destroy();\n setUppy(undefined);\n }\n };\n }, [...deps]);\n\n return uppy;\n}\n\nexport default useUppy;\n","import useUppy from \"@/hooks/use-uppy\";\nimport { Dashboard } from '@uppy/react';\nimport { useContext, useEffect, useState } from \"react\"\nimport { X, File, ImageIcon, FileText, FilePlus, Download, LoaderIcon, FileWarning, Upload, PlusSquareIcon, EyeIcon, PlusIcon, ChevronRightIcon, ChevronLeftIcon } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/components/ui/dialog\"\nimport { ScrollArea } from \"@/components/ui/scroll-area\"\nimport '@uppy/core/dist/style.min.css';\nimport '@uppy/dashboard/dist/style.min.css';\nimport { files, S3FileListOutput } from \"@/util/api\"\nimport { useTheme } from \"next-themes\";\nimport { ConfigContext } from \"./config-context\";\nimport { useQuery as useTanstackQuery, useMutation as useTanstackMutation } from \"@tanstack/react-query\";\nimport { Loading } from \"./ui/loading\";\nimport { allFileTypes } from \"@/types/models/agent\";\nimport { Input } from \"./ui/input\";\nimport { DoubleArrowLeftIcon } from \"@radix-ui/react-icons\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"./ui/card\";\nimport { Skeleton } from \"./ui/skeleton\";\n\nexport function FileDataCard({ s3key, children }: { s3key: string, children?: React.ReactNode }) {\n const { data, isLoading, error, refetch } = useTanstackQuery({\n queryKey: ['fileObject', s3key],\n queryFn: async () => {\n if (!s3key) {\n return null;\n }\n const result = await files.object(s3key);\n return result;\n },\n enabled: s3key !== undefined && s3key !== null,\n })\n\n useEffect(() => {\n if (s3key) {\n refetch();\n }\n }, [s3key]);\n\n if (!s3key) {\n return <Card>\n <CardContent className=\"p-3 flex\">\n <p className=\"text-sm text-muted-foreground m-auto\">No file selected</p>\n {children}\n </CardContent>\n </Card>;\n }\n\n return <Card>\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-sm truncate\">{s3key.split(\"_EXULU_\").pop()}</CardTitle>\n </CardHeader>\n <CardContent className=\"pt-0\">\n {\n isLoading && (\n <div className=\"space-y-2\">\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-2/3\" />\n </div>\n )\n }\n {!isLoading && data && (\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between text-xs text-muted-foreground\">\n <span className=\"capitalize\">{data?.ContentType.split(\"/\").pop()}</span>\n <span>{(data?.ContentLength / 1024 / 1024).toFixed(2)} MB</span>\n </div>\n <div className=\"flex items-center justify-between text-xs text-muted-foreground\">\n <span>Last modified: {new Date(data?.LastModified).toLocaleDateString(\"en-US\", { year: \"numeric\", month: \"long\", day: \"numeric\", hour: \"2-digit\", minute: \"2-digit\" })}</span>\n <Button\n variant=\"secondary\"\n size=\"sm\"\n type=\"button\"\n className=\"h-7 px-2\"\n onClick={() => {\n files.download(s3key).then(async res => {\n console.log(\"res\", res);\n const json = await res.json()\n console.log(\"res\", json);\n const downloadUrl = json.url;\n window.open(downloadUrl, '_blank');\n return;\n })\n }}>\n <span className=\"mr-1 text-xs\">View</span>\n <Download className=\"h-3 w-3\" />\n </Button>\n </div>\n </div>\n )}\n {\n !isLoading && error && (\n <p className=\"text-xs text-muted-foreground\">{error.message}</p>\n )\n }\n {children}\n </CardContent>\n </Card>\n}\n\nexport default function UppyDashboard({ id, allowedFileTypes, dependencies, onConfirm, selectionLimit, buttonText }: {\n id: string,\n buttonText?: string,\n allowedFileTypes?: allFileTypes[],\n selectionLimit: number,\n dependencies: any[],\n onConfirm: (keys: string[]) => void\n}) {\n const [open, setOpen] = useState(false)\n return <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger asChild>\n <Button variant=\"outline\">\n {buttonText && (\n <span className=\"mr-2\">{buttonText}</span>\n )\n }\n <FilePlus className=\"h-4 w-4\" />\n </Button>\n </DialogTrigger>\n <DialogContent className=\"sm:max-w-[900px]\">\n <DialogHeader>\n <DialogTitle>File Gallery</DialogTitle>\n <DialogDescription>Browse your previously uploaded files or upload new ones.</DialogDescription>\n </DialogHeader>\n <FileGalleryAndUpload\n id={id}\n allowedFileTypes={allowedFileTypes}\n dependencies={dependencies}\n selectionLimit={selectionLimit}\n onConfirm={(data) => {\n onConfirm(data)\n setOpen(false)\n }}\n />\n </DialogContent>\n </Dialog>;\n}\n\nexport const FileGalleryAndUpload = ({ id, allowedFileTypes, dependencies, onConfirm, selectionLimit }: {\n id: string,\n allowedFileTypes?: allFileTypes[],\n dependencies: any[],\n selectionLimit: number,\n onConfirm: (keys: string[]) => void\n}) => {\n\n if (!allowedFileTypes) {\n allowedFileTypes = [\n '.png',\n '.jpg',\n '.jpeg',\n '.gif',\n '.webp',\n '.pdf',\n '.docx',\n '.xlsx',\n '.xls',\n '.csv',\n '.pptx',\n '.ppt',\n '.mp3',\n '.wav',\n '.m4a',\n '.mp4',\n '.mpeg',\n '.mp4',\n '.m4a',\n '.mp3',\n '.mpeg',\n '.wav'\n ]\n }\n\n const [search, setSearch] = useState<string | undefined>(undefined)\n const [previousContinuationToken, setPreviousContinuationToken] = useState<string | undefined>(undefined)\n const [currentContinuationToken, setCurrentContinuationToken] = useState<string | undefined>(undefined)\n const configContext = useContext(ConfigContext);\n const [selected, setSelected] = useState<string[]>([])\n\n const addSelected = (key: string) => {\n if (selected.includes(key)) {\n setSelected(selected.filter((s) => s !== key))\n return;\n }\n if (selectionLimit === 1) {\n setSelected([key])\n return;\n }\n if (selected.length >= selectionLimit) {\n return;\n }\n setSelected([...selected, key])\n }\n\n const deleteFile = useTanstackMutation({\n mutationFn: async ({ key }: { key: string }) => {\n await files.delete(key)\n refetch();\n return;\n }\n })\n\n const { data, isLoading: loading, error, refetch } = useTanstackQuery({\n queryKey: ['filesQuery', search, currentContinuationToken],\n staleTime: 30000,\n queryFn: async (): Promise<S3FileListOutput> => {\n return files.list({\n search,\n continuationToken: currentContinuationToken\n })\n },\n })\n\n console.log(\"!! data !!\", data)\n\n const { theme } = useTheme()\n const uppy = useUppy(\n {\n backend: configContext?.backend || \"\",\n uppyOptions: {\n id,\n allowedFileTypes\n },\n callbacks: {\n uploadSuccess: async (data) => {\n console.log(\"data\", data)\n /* \n We no longer create items automatically for files uploaded via uppy.\n const item = {\n name: data.file.name,\n type: data.file.type,\n rights_mode: \"private\",\n s3key: `${user?.id}/${data.key}`\n }\n await createItemMutation({ variables: { input: item } }) */\n },\n },\n maxNumberOfFiles: 10,\n },\n dependencies,\n );\n\n useEffect(() => {\n refetch();\n }, [search, currentContinuationToken]);\n\n // Loading state\n if (!uppy) {\n return null;\n }\n\n return <>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4 mt-4\">\n {/* Left side - Gallery of previously uploaded files */}\n <div className=\"border rounded-lg p-4\">\n <h3 className=\"text-sm font-medium mb-3\">Previously Uploaded Files</h3>\n\n {/* search */}\n <Input\n placeholder=\"Search files...\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"mb-3\"\n />\n <div className=\"flex items-center justify-between text-xs text-muted-foreground pb-2\">\n <span>{selected.length} / {selectionLimit} files selected</span>\n <span>Allowed file types: {allowedFileTypes?.map((type) => type).join(\", \")}</span>\n </div>\n <ScrollArea>\n {loading && (\n <div className=\"flex items-center justify-center h-full w-full grid grid-cols-2 sm:grid-cols-3 gap-3\">\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n <Skeleton className=\"h-[120px] w-full\" />\n </div>\n )}\n <div className=\"grid grid-cols-2 sm:grid-cols-3 gap-3\">\n {\n !loading && !data?.Contents?.length && (\n <div className=\"col-span-full flex flex-col items-center justify-center py-12 text-center\">\n <FileWarning className=\"h-12 w-12 text-muted-foreground/50 mb-3\" />\n <p className=\"text-sm font-medium text-muted-foreground\">Nothing to see here... yet!</p>\n <p className=\"text-xs text-muted-foreground/75 mt-1\">Upload some files to get started</p>\n </div>\n )\n }\n {data?.Contents?.map((item: S3FileListOutput[\"Contents\"][0]) => {\n return (\n <FileItem s3Key={item.Key} onSelect={addSelected} active={selected.some((s) => s === item.Key)} onRemove={() => {\n deleteFile.mutate({\n key: item.Key\n })\n }} disabled={!allowedFileTypes ? false : !allowedFileTypes?.some((type) => item.Key.endsWith(type))} />\n )\n })}\n </div>\n\n <div className=\"flex items-center space-x-6 lg:space-x-8 pt-3\">\n <div className=\"flex items-center space-x-2\">\n <Button\n variant=\"outline\"\n className=\"hidden size-8 p-0 lg:flex\"\n onClick={() => {\n setCurrentContinuationToken(undefined)\n }}\n disabled={\n !currentContinuationToken ||\n loading\n }\n >\n <span className=\"sr-only\">Go to first page</span>\n <DoubleArrowLeftIcon className=\"size-4\" />\n </Button>\n <Button\n variant=\"outline\"\n className=\"size-8 p-0\"\n onClick={() => {\n setCurrentContinuationToken(previousContinuationToken)\n }}\n disabled={\n !currentContinuationToken ||\n loading\n }\n >\n <span className=\"sr-only\">Go to previous page</span>\n <ChevronLeftIcon className=\"size-4\" />\n </Button>\n <Button\n variant=\"outline\"\n className=\"size-8 p-0\"\n onClick={() => {\n setPreviousContinuationToken(currentContinuationToken)\n setCurrentContinuationToken(data?.NextContinuationToken)\n }}\n disabled={\n !data?.NextContinuationToken ||\n loading\n }>\n <span className=\"sr-only\">Go to next page</span>\n <ChevronRightIcon className=\"size-4\" />\n </Button>\n </div>\n </div>\n </ScrollArea>\n </div>\n {/* Right side - Upload area */}\n <div className=\"border rounded-lg p-4\">\n <h3 className=\"text-sm font-medium mb-3\">Upload New Files</h3>\n <Dashboard uppy={uppy} theme={theme === \"dark\" ? \"dark\" : \"light\"} />\n </div>\n </div>\n <div className=\"flex justify-end\">\n <Button variant=\"outline\" onClick={() => {\n onConfirm(selected)\n setSelected([])\n }}>\n Confirm\n </Button>\n </div>\n </>\n}\n\nexport const FileItem = ({ s3Key, onSelect, onRemove, active, disabled, addToContext }: {\n s3Key: string,\n onSelect?: (key: string) => void,\n onRemove?: (key: string) => void,\n active: boolean,\n disabled: boolean,\n addToContext?: (key: string) => void\n}) => {\n const getFileIcon = (s3Key: string) => {\n if (!s3Key) {\n return <FileText className=\"h-6 w-6 text-gray-500\" />\n }\n if (\n s3Key.toLowerCase().endsWith(\"jpg\") ||\n s3Key.toLowerCase().endsWith(\"jpeg\") ||\n s3Key.toLowerCase().endsWith(\"png\") ||\n s3Key.toLowerCase().endsWith(\"svg\")\n ) {\n return <ImageIcon className=\"h-6 w-6 text-blue-500\" />\n } else if (s3Key.endsWith(\"pdf\")) {\n return <File className=\"h-6 w-6 text-red-500\" />\n } else if (s3Key.endsWith(\"xls\") || s3Key.endsWith(\"xlsx\") || s3Key.endsWith(\"csv\")) {\n return <FileText className=\"h-6 w-6 text-green-500\" />\n } else if (s3Key.endsWith(\"ppt\") || s3Key.endsWith(\"pptx\")) {\n return <FileText className=\"h-6 w-6 text-orange-500\" />\n } else {\n return <FileText className=\"h-6 w-6 text-gray-500\" />\n }\n }\n\n return (\n <div\n key={s3Key}\n className={`${disabled ? 'opacity-50' : ''} group relative rounded-lg p-2 hover:bg-muted transition-colors cursor-pointer ${active ? 'border border-purple-500' : 'border'}`}\n onClick={() => {\n if (!disabled && onSelect) {\n onSelect(s3Key)\n }\n }}>\n <div className=\"aspect-square relative mb-2 bg-muted/50 rounded-md overflow-hidden flex items-center justify-center\">\n {(\n s3Key && (\n s3Key.toLowerCase().endsWith(\"jpg\") ||\n s3Key.toLowerCase().endsWith(\"jpeg\") ||\n s3Key.toLowerCase().endsWith(\"png\") ||\n s3Key.toLowerCase().endsWith(\"svg\")\n )\n ) ? (\n <SecureImageRenderComponent fileKey={s3Key} />\n ) : (\n <div className=\"flex flex-col items-center justify-center h-full\">\n {getFileIcon(s3Key)}\n <span className=\"text-xs text-muted-foreground mt-1 text-center\">{s3Key ? s3Key.split(\"_EXULU_\").pop() : s3Key}</span>\n </div>\n )}\n </div>\n <p className=\"text-xs truncate\">{s3Key ? s3Key.split(\"_EXULU_\").pop() : s3Key}</p>\n <div className=\"opacity-0 group-hover:opacity-100 flex absolute top-1 right-1\">\n\n {addToContext && (\n <Button variant=\"ghost\" size=\"icon\" type=\"button\" className=\"h-6 w-6 bg-background/80 hover:bg-background\" onClick={() => {\n addToContext(s3Key)\n }}>\n <PlusIcon className=\"h-3 w-3\" />\n <span className=\"sr-only\">Add</span>\n </Button>\n )}\n\n <Button\n variant=\"ghost\"\n size=\"icon\"\n type=\"button\"\n className=\"h-6 w-6 bg-background/80 hover:bg-background\"\n onClick={() => {\n files.download(s3Key).then(async res => {\n console.log(\"res\", res);\n const json = await res.json()\n console.log(\"res\", json);\n const downloadUrl = json.url;\n window.open(downloadUrl, '_blank');\n return;\n })\n }}>\n <Download className=\"h-3 w-3\" />\n <span className=\"sr-only\">View</span>\n </Button>\n\n {onRemove && (\n <Button\n onClick={(e) => {\n e.stopPropagation()\n onRemove(s3Key)\n }}\n variant=\"ghost\"\n type=\"button\"\n size=\"icon\"\n className=\"h-6 w-6 opacity-0 group-hover:opacity-100 bg-background/80 hover:bg-background ml-1\">\n <X className=\"h-3 w-3\" />\n <span className=\"sr-only\">Remove</span>\n </Button>\n )}\n </div>\n </div>\n )\n}\n\nlet signedUrlCache: {\n [key: string]: {\n url: string;\n expiresAt: number;\n }\n} = {};\n\nexport const getPresignedUrl = async (fileKey: string) => {\n if (signedUrlCache[fileKey]) {\n if (signedUrlCache[fileKey].expiresAt < Date.now()) {\n delete signedUrlCache[fileKey];\n } else {\n return signedUrlCache[fileKey].url;\n }\n }\n const response = await files.download(fileKey)\n const json = await response.json();\n console.log(\"json\", json)\n signedUrlCache[fileKey] = {\n url: json.url,\n expiresAt: Date.now() + 60 * 1000, // 1 minute\n }\n return json.url;\n}\n\nconst SecureImageRenderComponent = ({ fileKey }: { fileKey: string }) => {\n // Gets a signed key to show the image\n console.log(\"key\", fileKey)\n const query = useTanstackQuery({\n queryKey: ['imageQuery', fileKey],\n staleTime: 30000,\n queryFn: async () => {\n return getPresignedUrl(fileKey)\n },\n })\n\n if (query.isLoading) {\n return <div><LoaderIcon /></div>\n }\n\n if (!query.isLoading && !query.data) {\n return <div><FileWarning /></div>\n }\n\n return (<img\n src={query.data}\n alt={fileKey}\n className=\"object-cover w-full h-full\"\n />)\n\n}","import { GET_CONTEXTS } from \"@/queries/queries\";\nimport { Context } from \"@/types/models/context\";\nimport { useQuery } from \"@apollo/client\";\n\nexport const useContexts = () => {\n return useQuery<{ contexts: { items: Context[] } }>(GET_CONTEXTS, {\n variables: {\n limit: 20\n }\n })\n};","import { AgentSession } from \"@/types/models/agent-session\";\nimport { UserWithRole } from \"@/types/models/user\";\n\nexport const checkChatSessionWriteAccess = (session: AgentSession, user: UserWithRole) => {\n const isPrivate = session.rights_mode === 'private';\n const isPublic = session.rights_mode === 'public';\n const byUsers = session.rights_mode === 'users';\n const byRoles = session.rights_mode === 'roles';\n const isAdmin = user.super_admin;\n const isCreator = session.created_by === user.id.toString();\n \n let writeAccess = false;\n if (isPrivate && isCreator) {\n writeAccess = true;\n }\n if (isPublic) {\n writeAccess = true;\n }\n if (byUsers) {\n writeAccess = session.RBAC?.users?.find(u => u.id === user.id)?.rights === 'write';\n }\n if (byRoles) {\n writeAccess = session.RBAC?.roles?.find(r => r.id === user.role?.id)?.rights === 'write';\n }\n if (isAdmin) {\n writeAccess = true;\n }\n return writeAccess;\n}","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name AlertTriangle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMjEuNzMgMTgtOC0xNGEyIDIgMCAwIDAtMy40OCAwbC04IDE0QTIgMiAwIDAgMCA0IDIxaDE2YTIgMiAwIDAgMCAxLjczLTNaIiAvPgogIDxwYXRoIGQ9Ik0xMiA5djQiIC8+CiAgPHBhdGggZD0iTTEyIDE3aC4wMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/alert-triangle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst AlertTriangle = createLucideIcon('AlertTriangle', [\n [\n 'path',\n {\n d: 'm21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z',\n key: 'c3ski4',\n },\n ],\n ['path', { d: 'M12 9v4', key: 'juzpu7' }],\n ['path', { d: 'M12 17h.01', key: 'p32p05' }],\n]);\n\nexport default AlertTriangle;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ChevronsUpDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNyAxNSA1IDUgNS01IiAvPgogIDxwYXRoIGQ9Im03IDkgNS01IDUgNSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/chevrons-up-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronsUpDown = createLucideIcon('ChevronsUpDown', [\n ['path', { d: 'm7 15 5 5 5-5', key: '1hf1tw' }],\n ['path', { d: 'm7 9 5-5 5 5', key: 'sgt6xg' }],\n]);\n\nexport default ChevronsUpDown;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Folder\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgMjBhMiAyIDAgMCAwIDItMlY4YTIgMiAwIDAgMC0yLTJoLTcuOWEyIDIgMCAwIDEtMS42OS0uOUw5LjYgMy45QTIgMiAwIDAgMCA3LjkzIDNINGEyIDIgMCAwIDAtMiAydjEzYTIgMiAwIDAgMCAyIDJaIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/folder\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Folder = createLucideIcon('Folder', [\n [\n 'path',\n {\n d: 'M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z',\n key: '1kt360',\n },\n ],\n]);\n\nexport default Folder;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Globe\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8cGF0aCBkPSJNMTIgMmExNC41IDE0LjUgMCAwIDAgMCAyMCAxNC41IDE0LjUgMCAwIDAgMC0yMCIgLz4KICA8cGF0aCBkPSJNMiAxMmgyMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/globe\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Globe = createLucideIcon('Globe', [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20', key: '13o1zl' }],\n ['path', { d: 'M2 12h20', key: '9i4pu4' }],\n]);\n\nexport default Globe;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Loader2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTJhOSA5IDAgMSAxLTYuMjE5LTguNTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/loader-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Loader2 = createLucideIcon('Loader2', [\n ['path', { d: 'M21 12a9 9 0 1 1-6.219-8.56', key: '13zald' }],\n]);\n\nexport default Loader2;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Lock\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTEiIHg9IjMiIHk9IjExIiByeD0iMiIgcnk9IjIiIC8+CiAgPHBhdGggZD0iTTcgMTFWN2E1IDUgMCAwIDEgMTAgMHY0IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/lock\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Lock = createLucideIcon('Lock', [\n ['rect', { width: '18', height: '11', x: '3', y: '11', rx: '2', ry: '2', key: '1w4ew1' }],\n ['path', { d: 'M7 11V7a5 5 0 0 1 10 0v4', key: 'fwvmzm' }],\n]);\n\nexport default Lock;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name MessageSquare\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTVhMiAyIDAgMCAxLTIgMkg3bC00IDRWNWEyIDIgMCAwIDEgMi0yaDE0YTIgMiAwIDAgMSAyIDJ6IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/message-square\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst MessageSquare = createLucideIcon('MessageSquare', [\n ['path', { d: 'M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z', key: '1lielz' }],\n]);\n\nexport default MessageSquare;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Pencil\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTcgM2EyLjg1IDIuODMgMCAxIDEgNCA0TDcuNSAyMC41IDIgMjJsMS41LTUuNVoiIC8+CiAgPHBhdGggZD0ibTE1IDUgNCA0IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/pencil\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Pencil = createLucideIcon('Pencil', [\n ['path', { d: 'M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z', key: '5qss01' }],\n ['path', { d: 'm15 5 4 4', key: '1mk7zo' }],\n]);\n\nexport default Pencil;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Settings2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgN2gtOSIgLz4KICA8cGF0aCBkPSJNMTQgMTdINSIgLz4KICA8Y2lyY2xlIGN4PSIxNyIgY3k9IjE3IiByPSIzIiAvPgogIDxjaXJjbGUgY3g9IjciIGN5PSI3IiByPSIzIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/settings-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Settings2 = createLucideIcon('Settings2', [\n ['path', { d: 'M20 7h-9', key: '3s1dr2' }],\n ['path', { d: 'M14 17H5', key: 'gfn3mx' }],\n ['circle', { cx: '17', cy: '17', r: '3', key: '18b49y' }],\n ['circle', { cx: '7', cy: '7', r: '3', key: 'dfmy0x' }],\n]);\n\nexport default Settings2;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Shield\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgMjJzOC00IDgtMTBWNWwtOC0zLTggM3Y3YzAgNiA4IDEwIDggMTAiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/shield\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Shield = createLucideIcon('Shield', [\n ['path', { d: 'M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10', key: '1irkt0' }],\n]);\n\nexport default Shield;\n","import * as React from 'react';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { usePrevious } from '@radix-ui/react-use-previous';\nimport { useSize } from '@radix-ui/react-use-size';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\n\nimport type { Scope } from '@radix-ui/react-context';\n\nconst CHECKBOX_NAME = 'Checkbox';\n\ntype ScopedProps<P> = P & { __scopeCheckbox?: Scope };\nconst [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME);\n\ntype CheckedState = boolean | 'indeterminate';\n\ntype CheckboxContextValue<State extends CheckedState | boolean = CheckedState> = {\n checked: State | boolean;\n setChecked: React.Dispatch<React.SetStateAction<State | boolean>>;\n disabled: boolean | undefined;\n control: HTMLButtonElement | null;\n setControl: React.Dispatch<React.SetStateAction<HTMLButtonElement | null>>;\n name: string | undefined;\n form: string | undefined;\n value: string | number | readonly string[];\n hasConsumerStoppedPropagationRef: React.RefObject<boolean>;\n required: boolean | undefined;\n defaultChecked: boolean | undefined;\n isFormControl: boolean;\n bubbleInput: HTMLInputElement | null;\n setBubbleInput: React.Dispatch<React.SetStateAction<HTMLInputElement | null>>;\n};\n\nconst [CheckboxProviderImpl, useCheckboxContext] =\n createCheckboxContext<CheckboxContextValue>(CHECKBOX_NAME);\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CheckboxProviderProps<State extends CheckedState = CheckedState> {\n checked?: State | boolean;\n defaultChecked?: State | boolean;\n required?: boolean;\n onCheckedChange?(checked: State | boolean): void;\n name?: string;\n form?: string;\n disabled?: boolean;\n value?: string | number | readonly string[];\n children?: React.ReactNode;\n}\n\nfunction CheckboxProvider<State extends CheckedState = CheckedState>(\n props: ScopedProps<CheckboxProviderProps<State>>\n) {\n const {\n __scopeCheckbox,\n checked: checkedProp,\n children,\n defaultChecked,\n disabled,\n form,\n name,\n onCheckedChange,\n required,\n value = 'on',\n // @ts-expect-error\n internal_do_not_use_render,\n } = props;\n\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: CHECKBOX_NAME,\n });\n const [control, setControl] = React.useState<HTMLButtonElement | null>(null);\n const [bubbleInput, setBubbleInput] = React.useState<HTMLInputElement | null>(null);\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = control\n ? !!form || !!control.closest('form')\n : // We set this to true by default so that events bubble to forms without JS (SSR)\n true;\n\n const context: CheckboxContextValue<State> = {\n checked: checked,\n disabled: disabled,\n setChecked: setChecked,\n control: control,\n setControl: setControl,\n name: name,\n form: form,\n value: value,\n hasConsumerStoppedPropagationRef: hasConsumerStoppedPropagationRef,\n required: required,\n defaultChecked: isIndeterminate(defaultChecked) ? false : defaultChecked,\n isFormControl: isFormControl,\n bubbleInput,\n setBubbleInput,\n };\n\n return (\n <CheckboxProviderImpl\n scope={__scopeCheckbox}\n {...(context as unknown as CheckboxContextValue<CheckedState>)}\n >\n {isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children}\n </CheckboxProviderImpl>\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'CheckboxTrigger';\n\ninterface CheckboxTriggerProps\n extends Omit<\n React.ComponentPropsWithoutRef<typeof Primitive.button>,\n keyof CheckboxProviderProps\n > {\n children?: React.ReactNode;\n}\n\nconst CheckboxTrigger = React.forwardRef<HTMLButtonElement, CheckboxTriggerProps>(\n (\n { __scopeCheckbox, onKeyDown, onClick, ...checkboxProps }: ScopedProps<CheckboxTriggerProps>,\n forwardedRef\n ) => {\n const {\n control,\n value,\n disabled,\n checked,\n required,\n setControl,\n setChecked,\n hasConsumerStoppedPropagationRef,\n isFormControl,\n bubbleInput,\n } = useCheckboxContext(TRIGGER_NAME, __scopeCheckbox);\n const composedRefs = useComposedRefs(forwardedRef, setControl);\n\n const initialCheckedStateRef = React.useRef(checked);\n React.useEffect(() => {\n const form = control?.form;\n if (form) {\n const reset = () => setChecked(initialCheckedStateRef.current);\n form.addEventListener('reset', reset);\n return () => form.removeEventListener('reset', reset);\n }\n }, [control, setChecked]);\n\n return (\n <Primitive.button\n type=\"button\"\n role=\"checkbox\"\n aria-checked={isIndeterminate(checked) ? 'mixed' : checked}\n aria-required={required}\n data-state={getState(checked)}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n value={value}\n {...checkboxProps}\n ref={composedRefs}\n onKeyDown={composeEventHandlers(onKeyDown, (event) => {\n // According to WAI ARIA, Checkboxes don't activate on enter keypress\n if (event.key === 'Enter') event.preventDefault();\n })}\n onClick={composeEventHandlers(onClick, (event) => {\n setChecked((prevChecked) => (isIndeterminate(prevChecked) ? true : !prevChecked));\n if (bubbleInput && isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n // if checkbox has a bubble input and is a form control, stop\n // propagation from the button so that we only propagate one click\n // event (from the input). We propagate changes from an input so\n // that native form validation works and form events reflect\n // checkbox updates.\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })}\n />\n );\n }\n);\n\nCheckboxTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * Checkbox\n * -----------------------------------------------------------------------------------------------*/\n\ntype CheckboxElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface CheckboxProps extends Omit<PrimitiveButtonProps, 'checked' | 'defaultChecked'> {\n checked?: CheckedState;\n defaultChecked?: CheckedState;\n required?: boolean;\n onCheckedChange?(checked: CheckedState): void;\n}\n\nconst Checkbox = React.forwardRef<CheckboxElement, CheckboxProps>(\n (props: ScopedProps<CheckboxProps>, forwardedRef) => {\n const {\n __scopeCheckbox,\n name,\n checked,\n defaultChecked,\n required,\n disabled,\n value,\n onCheckedChange,\n form,\n ...checkboxProps\n } = props;\n\n return (\n <CheckboxProvider\n __scopeCheckbox={__scopeCheckbox}\n checked={checked}\n defaultChecked={defaultChecked}\n disabled={disabled}\n required={required}\n onCheckedChange={onCheckedChange}\n name={name}\n form={form}\n value={value}\n // @ts-expect-error\n internal_do_not_use_render={({ isFormControl }: CheckboxContextValue) => (\n <>\n <CheckboxTrigger\n {...checkboxProps}\n ref={forwardedRef}\n // @ts-expect-error\n __scopeCheckbox={__scopeCheckbox}\n />\n {isFormControl && (\n <CheckboxBubbleInput\n // @ts-expect-error\n __scopeCheckbox={__scopeCheckbox}\n />\n )}\n </>\n )}\n />\n );\n }\n);\n\nCheckbox.displayName = CHECKBOX_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'CheckboxIndicator';\n\ntype CheckboxIndicatorElement = React.ComponentRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface CheckboxIndicatorProps extends PrimitiveSpanProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst CheckboxIndicator = React.forwardRef<CheckboxIndicatorElement, CheckboxIndicatorProps>(\n (props: ScopedProps<CheckboxIndicatorProps>, forwardedRef) => {\n const { __scopeCheckbox, forceMount, ...indicatorProps } = props;\n const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);\n return (\n <Presence\n present={forceMount || isIndeterminate(context.checked) || context.checked === true}\n >\n <Primitive.span\n data-state={getState(context.checked)}\n data-disabled={context.disabled ? '' : undefined}\n {...indicatorProps}\n ref={forwardedRef}\n style={{ pointerEvents: 'none', ...props.style }}\n />\n </Presence>\n );\n }\n);\n\nCheckboxIndicator.displayName = INDICATOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxBubbleInput\n * -----------------------------------------------------------------------------------------------*/\n\nconst BUBBLE_INPUT_NAME = 'CheckboxBubbleInput';\n\ntype InputProps = React.ComponentPropsWithoutRef<typeof Primitive.input>;\ninterface CheckboxBubbleInputProps extends Omit<InputProps, 'checked'> {}\n\nconst CheckboxBubbleInput = React.forwardRef<HTMLInputElement, CheckboxBubbleInputProps>(\n ({ __scopeCheckbox, ...props }: ScopedProps<CheckboxBubbleInputProps>, forwardedRef) => {\n const {\n control,\n hasConsumerStoppedPropagationRef,\n checked,\n defaultChecked,\n required,\n disabled,\n name,\n value,\n form,\n bubbleInput,\n setBubbleInput,\n } = useCheckboxContext(BUBBLE_INPUT_NAME, __scopeCheckbox);\n\n const composedRefs = useComposedRefs(forwardedRef, setBubbleInput);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n\n // Bubble checked change to parents (e.g form change event)\n React.useEffect(() => {\n const input = bubbleInput;\n if (!input) return;\n\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n 'checked'\n ) as PropertyDescriptor;\n const setChecked = descriptor.set;\n\n const bubbles = !hasConsumerStoppedPropagationRef.current;\n if (prevChecked !== checked && setChecked) {\n const event = new Event('click', { bubbles });\n input.indeterminate = isIndeterminate(checked);\n setChecked.call(input, isIndeterminate(checked) ? false : checked);\n input.dispatchEvent(event);\n }\n }, [bubbleInput, prevChecked, checked, hasConsumerStoppedPropagationRef]);\n\n const defaultCheckedRef = React.useRef(isIndeterminate(checked) ? false : checked);\n return (\n <Primitive.input\n type=\"checkbox\"\n aria-hidden\n defaultChecked={defaultChecked ?? defaultCheckedRef.current}\n required={required}\n disabled={disabled}\n name={name}\n value={value}\n form={form}\n {...props}\n tabIndex={-1}\n ref={composedRefs}\n style={{\n ...props.style,\n ...controlSize,\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0,\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n transform: 'translateX(-100%)',\n }}\n />\n );\n }\n);\n\nCheckboxBubbleInput.displayName = BUBBLE_INPUT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nfunction isFunction(value: unknown): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n\nfunction isIndeterminate(checked?: CheckedState): checked is 'indeterminate' {\n return checked === 'indeterminate';\n}\n\nfunction getState(checked: CheckedState) {\n return isIndeterminate(checked) ? 'indeterminate' : checked ? 'checked' : 'unchecked';\n}\n\nexport {\n createCheckboxScope,\n //\n Checkbox,\n CheckboxProvider,\n CheckboxTrigger,\n CheckboxIndicator,\n CheckboxBubbleInput,\n //\n Checkbox as Root,\n CheckboxProvider as Provider,\n CheckboxTrigger as Trigger,\n CheckboxIndicator as Indicator,\n CheckboxBubbleInput as BubbleInput,\n};\nexport type {\n CheckboxProps,\n CheckboxProviderProps,\n CheckboxTriggerProps,\n CheckboxIndicatorProps,\n CheckboxBubbleInputProps,\n CheckedState,\n};\n","import * as React from 'react';\nimport { Primitive } from '@radix-ui/react-primitive';\n\n/* -------------------------------------------------------------------------------------------------\n * Label\n * -----------------------------------------------------------------------------------------------*/\n\nconst NAME = 'Label';\n\ntype LabelElement = React.ComponentRef<typeof Primitive.label>;\ntype PrimitiveLabelProps = React.ComponentPropsWithoutRef<typeof Primitive.label>;\ninterface LabelProps extends PrimitiveLabelProps {}\n\nconst Label = React.forwardRef<LabelElement, LabelProps>((props, forwardedRef) => {\n return (\n <Primitive.label\n {...props}\n ref={forwardedRef}\n onMouseDown={(event) => {\n // only prevent text selection if clicking inside the label itself\n const target = event.target as HTMLElement;\n if (target.closest('button, input, select, textarea')) return;\n\n props.onMouseDown?.(event);\n // prevent text selection when double clicking label\n if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n }}\n />\n );\n});\n\nLabel.displayName = NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Label;\n\nexport {\n Label,\n //\n Root,\n};\nexport type { LabelProps };\n"],"names":["Promise","resolve","then","__webpack_require__","bind","Files","createLucideIcon","d","key","PackageMinus","points","x1","x2","y1","y2","PlusSquare","width","height","x","y","rx","ItemsSelectionModal","data","onConfirm","param","loading","error","useContexts","context","setContext","useState","undefined","open","setOpen","jsx_runtime","jsxs","Dialog","onOpenChange","value","jsx","DialogTrigger","asChild","Button","className","variant","PlusSquareIcon","DialogContent","DialogHeader","DialogTitle","DialogDescription","Command","CommandInput","placeholder","CommandList","CommandEmpty","CommandGroup","heading","contexts","items","map","CommandItem","onSelect","name","id","ItemsList","console","log","item","__items","_","search","setSearch","refetch","previousData","prev","useQuery","GET_ITEMS","fetchPolicy","nextFetchPolicy","skip","variables","page","limit","sort","field","direction","filters","archived","ne","contains","concat","onValueChange","Loading","PAGINATION_POSTFIX","length","_this","ProjectDetails","project","sessionsData","agentsData","isEditing","setIsEditing","isDeleteDialogOpen","setIsDeleteDialogOpen","isAgentSelectionOpen","setIsAgentSelectionOpen","agentSearch","setAgentSearch","activeView","setActiveView","user","useContext","UserContext","router","useRouter","deleteOptions","setDeleteOptions","deleteItems","deleteSessions","formData","setFormData","description","custom_instructions","toast","useToast","rbac","setRbac","rights_mode","users","RBAC","roles","projects","projectItems","setProjectItems","project_items","updateProject","isSaving","useMutation","UPDATE_PROJECT","deleteProject","DELETE_PROJECT","deletingProject","setDeletingProject","sessionsLoading","refetchSessions","GET_AGENT_SESSIONS","eq","agentsLoading","GET_AGENTS","apolloClient","useApolloClient","createAgentSession","isCreatingSession","CREATE_AGENT_SESSION","updateAgentSession","isUpdatingSession","UPDATE_AGENT_SESSION_PROJECT","deleteSession","isDeletingSession","REMOVE_AGENT_SESSION_BY_ID","chatSessions","agent_sessionsPagination","agents","agentsPagination","filteredAgents","React","filter","agent","toLowerCase","includes","handleSave","trim","title","input","message","handleAgentSelect","result","rights","sessionId","agent_sessionsCreateOne","push","handleDeleteProject","all","split","mutate","mutation","DELETE_ITEM","s3key","files","delete","session","div","Card","CardContent","h3","p","onClick","Settings2","MessageSquare","Shield","CardHeader","CardTitle","CardDescription","Label","htmlFor","Input","onChange","e","target","Textarea","rows","CardFooter","Fragment","span","Pencil","update","ProjectItem","gid","onRemove","g","Plus","writeAccess","checkChatSessionWriteAccess","Link","href","Tooltip","TooltipTrigger","disabled","size","TooltipContent","Trash2","RBACControl","allowedModes","initialRightsMode","initialUsers","initialRoles","initialProjects","AlertTriangle","h4","Checkbox","checked","onCheckedChange","label","DialogFooter","Search","Array","i","Skeleton","image","img","src","alt","Bot","type","Badge","active","GET_ITEM_BY_ID","fields","values","file","FileItem","s3Key","ProjectPage","params","useParams","projectId","GET_PROJECT_BY_ID","Alert","ExclamationTriangleIcon","AlertTitle","AlertDescription","projectById","alertVariants","cva","variants","default","destructive","info","defaultVariants","ref","props","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","role","cn","displayName","h5","CheckboxPrimitive","Check","initializeUppy","options","localStorage","backend","callbacks","maxNumberOfFiles","uppyOptions","uploadSuccess","allowedFileTypes","token","getToken","uppy","Uppy","autoProceed","debug","restrictions","use","AwsS3","endpoint","headers","Authorization","Session","getItem","on","removeFile","response","uploadURL","pop","url","use_uppy","deps","configContext","ConfigContext","setUppy","useEffect","initUppy","destroy","FileDataCard","children","isLoading","useTanstackQuery","queryKey","queryFn","object","enabled","ContentType","ContentLength","toFixed","Date","LastModified","toLocaleDateString","year","month","day","hour","minute","download","res","json","downloadUrl","window","Download","UppyDashboard","dependencies","selectionLimit","buttonText","FilePlus","FileGalleryAndUpload","previousContinuationToken","setPreviousContinuationToken","currentContinuationToken","setCurrentContinuationToken","selected","setSelected","addSelected","s","deleteFile","useTanstackMutation","mutationFn","staleTime","list","continuationToken","theme","useTheme","useUppy","join","ScrollArea","Contents","FileWarning","Key","some","endsWith","DoubleArrowLeftIcon","ChevronLeftIcon","NextContinuationToken","ChevronRightIcon","Dashboard","addToContext","SecureImageRenderComponent","fileKey","ImageIcon","File","FileText","PlusIcon","stopPropagation","X","signedUrlCache","getPresignedUrl","expiresAt","now","query","LoaderIcon","GET_CONTEXTS","isPrivate","isPublic","byUsers","byRoles","isAdmin","super_admin","isCreator","created_by","toString","find","u","r","ChevronsUpDown","Folder","Globe","cx","cy","Loader2","Lock","ry","CHECKBOX_NAME","createCheckboxContext","createCheckboxScope","createContextScope","CheckboxProviderImpl","useCheckboxContext","CheckboxProvider","__scopeCheckbox","checkedProp","defaultChecked","form","required","internal_do_not_use_render","setChecked","useControllableState","prop","defaultProp","caller","control","setControl","bubbleInput","setBubbleInput","hasConsumerStoppedPropagationRef","isFormControl","closest","isIndeterminate","scope","isFunction","TRIGGER_NAME","CheckboxTrigger","forwardedRef","onKeyDown","checkboxProps","composedRefs","useComposedRefs","initialCheckedStateRef","reset","current","addEventListener","removeEventListener","Primitive","button","getState","composeEventHandlers","event","preventDefault","prevChecked","isPropagationStopped","CheckboxBubbleInput","INDICATOR_NAME","CheckboxIndicator","forceMount","indicatorProps","Presence","present","style","pointerEvents","BUBBLE_INPUT_NAME","usePrevious","controlSize","useSize","descriptor","getOwnPropertyDescriptor","HTMLInputElement","prototype","set","bubbles","Event","indeterminate","call","dispatchEvent","defaultCheckedRef","tabIndex","position","opacity","margin","transform","onMouseDown","defaultPrevented","detail","Root"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"static/chunks/app/(application)/projects/layout-3ef4b8519966eee7.js","mappings":"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","sources":["webpack://_N_E/?1505","webpack://_N_E/./components/create-project-dialog.tsx","webpack://_N_E/./components/project-nav.tsx","webpack://_N_E/./app/(application)/projects/layout.tsx","webpack://_N_E/./components/truncated-text.tsx","webpack://_N_E/./components/ui/dialog.tsx","webpack://_N_E/./components/ui/label.tsx","webpack://_N_E/./components/ui/textarea.tsx","webpack://_N_E/./components/ui/use-toast.ts","webpack://_N_E/../../../src/icons/loader-2.ts","webpack://_N_E/../../../src/icons/plus.ts","webpack://_N_E/../../../src/icons/search.ts","webpack://_N_E/../../../src/icons/star.ts","webpack://_N_E/./node_modules/@apollo/client/react/hooks/internal/useIsomorphicLayoutEffect.js","webpack://_N_E/./node_modules/@apollo/client/react/hooks/useMutation.js","webpack://_N_E/../src/label.tsx"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/Users/daniel.claessen/Desktop/Projects/exulu/frontend/app/(application)/projects/layout.tsx\");\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { useMutation } from \"@apollo/client\";\nimport { CREATE_PROJECT, GET_PROJECTS } from \"@/queries/queries\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { Textarea } from \"@/components/ui/textarea\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\";\nimport { Loader2 } from \"lucide-react\";\nimport { useRouter } from \"next/navigation\";\nimport { useToast } from \"./ui/use-toast\";\n\ninterface CreateProjectDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n refetchProjects: () => void;\n}\n\nexport function CreateProjectDialog({ open, onOpenChange, refetchProjects }: CreateProjectDialogProps) {\n const [formData, setFormData] = useState({\n name: \"\",\n description: \"\",\n custom_instructions: \"\",\n });\n const [isSubmitting, setIsSubmitting] = useState(false);\n \n const { toast } = useToast();\n const router = useRouter();\n \n const [createProject] = useMutation(CREATE_PROJECT, {\n refetchQueries: [\n {\n query: GET_PROJECTS,\n variables: {\n page: 1,\n limit: 200,\n },\n },\n ],\n });\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n \n if (!formData.name.trim()) {\n toast({\n title: \"Validation Error\",\n description: \"Project name is required.\",\n variant: \"destructive\",\n });\n return;\n }\n\n setIsSubmitting(true);\n\n try {\n const result = await createProject({\n variables: {\n input: {\n name: formData.name.trim(),\n description: formData.description.trim() || null,\n custom_instructions: formData.custom_instructions.trim() || null,\n rights_mode: \"private\",\n },\n },\n });\n\n console.log(result);\n\n const newProject = result.data?.projectsCreateOne?.item;\n \n if (newProject) {\n toast({\n title: \"Success\",\n description: \"Project created successfully!\",\n });\n \n // Reset form\n setFormData({\n name: \"\",\n description: \"\",\n custom_instructions: \"\",\n });\n \n // Close dialog\n onOpenChange(false);\n \n // Navigate to the new project\n router.push(`/projects/${newProject.id}`);\n refetchProjects();\n }\n } catch (error: any) {\n console.error(\"Error creating project:\", error);\n toast({\n title: \"Error\",\n description: error.message || \"Failed to create project. Please try again.\",\n variant: \"destructive\",\n });\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const handleCancel = () => {\n setFormData({\n name: \"\",\n description: \"\",\n custom_instructions: \"\",\n });\n onOpenChange(false);\n };\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"sm:max-w-[500px]\">\n <DialogHeader>\n <DialogTitle>Create New Project</DialogTitle>\n <DialogDescription>\n Create a new project to organize your chat sessions and documents.\n </DialogDescription>\n </DialogHeader>\n \n <form onSubmit={handleSubmit} className=\"space-y-4\">\n <div className=\"space-y-2\">\n <Label htmlFor=\"project-name\">Project Name *</Label>\n <Input\n id=\"project-name\"\n value={formData.name}\n onChange={(e) => setFormData({ ...formData, name: e.target.value })}\n placeholder=\"Enter project name\"\n required\n disabled={isSubmitting}\n />\n </div>\n\n <div className=\"space-y-2\">\n <Label htmlFor=\"project-description\">Description</Label>\n <Textarea\n id=\"project-description\"\n value={formData.description}\n onChange={(e) => setFormData({ ...formData, description: e.target.value })}\n placeholder=\"Describe what this project is about...\"\n rows={3}\n disabled={isSubmitting}\n />\n </div>\n\n <div className=\"space-y-2\">\n <Label htmlFor=\"custom-instructions\">Custom Instructions</Label>\n <Textarea\n id=\"custom-instructions\"\n value={formData.custom_instructions}\n onChange={(e) => setFormData({ ...formData, custom_instructions: e.target.value })}\n placeholder=\"Enter custom instructions for chat sessions in this project...\"\n rows={3}\n disabled={isSubmitting}\n />\n </div>\n\n <DialogFooter>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={handleCancel}\n disabled={isSubmitting}\n >\n Cancel\n </Button>\n <Button type=\"submit\" disabled={isSubmitting}>\n {isSubmitting ? (\n <>\n <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n Creating...\n </>\n ) : (\n \"Create Project\"\n )}\n </Button>\n </DialogFooter>\n </form>\n </DialogContent>\n </Dialog>\n );\n}","import Link from \"next/link\"\nimport { Search, Star, Plus } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport { GET_PROJECTS, GET_PROJECTS_BY_IDS, UPDATE_USER_FAVOURITE_PROJECTS } from \"@/queries/queries\";\nimport { useEffect, useState, useContext } from \"react\";\nimport { TruncatedText } from \"./truncated-text\";\nimport { useParams, usePathname } from \"next/navigation\";\nimport { Skeleton } from \"./ui/skeleton\";\nimport { UserContext } from \"@/app/(application)/authenticated\";\nimport { User } from \"@/types/models/user\";\nimport { CreateProjectDialog } from \"./create-project-dialog\";\nimport { useRouter } from \"next/router\";\n\n// Project interface based on our schema\ninterface Project {\n id: string;\n name: string;\n description?: string;\n image?: string;\n custom_instructions?: string;\n rights_mode?: string;\n created_by?: number;\n createdAt?: string;\n updatedAt?: string;\n RBAC?: any;\n}\n\nexport function ProjectNav() {\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [createDialogOpen, setCreateDialogOpen] = useState(false);\n const pathname = usePathname();\n const { user: init } = useContext(UserContext);\n const [user, setUser] = useState<User>(init);\n\n // Fetch favourite projects using GET_PROJECTS_BY_IDS\n const favouriteProjects = useQuery(GET_PROJECTS_BY_IDS, {\n fetchPolicy: \"no-cache\",\n nextFetchPolicy: \"network-only\",\n variables: {\n ids: user?.favourite_projects || []\n },\n skip: !user?.favourite_projects?.length,\n });\n\n // Fetch regular projects (excluding favourites when not searching)\n const projects = useQuery(GET_PROJECTS, {\n fetchPolicy: \"no-cache\",\n nextFetchPolicy: \"network-only\",\n variables: {\n page: 1,\n limit: 200,\n filters: searchQuery ? [\n {\n name: {\n contains: searchQuery\n }\n }\n ] : undefined,\n },\n });\n\n useEffect(() => {\n projects.refetch();\n }, [pathname]);\n\n const [updateUserFavouriteProjects] = useMutation(UPDATE_USER_FAVOURITE_PROJECTS);\n\n const renderProjectImage = (project: Project) => {\n if (project.image) {\n return (\n <img\n src={project.image}\n alt={`${project.name} thumbnail`}\n className=\"h-4 w-4 rounded-full object-cover\"\n />\n );\n } else {\n return (\n <div className=\"h-4 w-4 rounded-full bg-gradient-to-br from-green-500 to-blue-600 flex items-center justify-center text-white text-xs font-medium\">\n {project.name?.charAt(0).toUpperCase() || 'P'}\n </div>\n );\n }\n };\n\n const handleFavouriteToggle = async (projectId: string, e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n try {\n const currentFavorites = user?.favourite_projects || [];\n const isFavorite = currentFavorites.includes(projectId);\n\n let newFavorites: string[];\n if (isFavorite) {\n newFavorites = currentFavorites.filter(id => id !== projectId);\n } else {\n newFavorites = [...currentFavorites, projectId];\n }\n\n await updateUserFavouriteProjects({\n variables: {\n id: user?.id,\n favourite_projects: newFavorites\n }\n });\n\n setUser(prev => ({ ...prev, favourite_projects: newFavorites }));\n } catch (error) {\n console.error(\"Error updating favourite projects:\", error);\n }\n };\n\n const handleCreateProject = () => {\n setCreateDialogOpen(true);\n };\n\n const allProjects = (projects?.data?.projectsPagination?.items || projects?.previousData?.projectsPagination?.items) || [];\n const favoriteProjectsList = (favouriteProjects?.data?.projectByIds || favouriteProjects?.previousData?.projectByIds) || [];\n\n return (\n <div className=\"h-full w-[250px] flex-col gap-2 p-2\">\n <div className=\"flex items-center gap-2\">\n <div className=\"relative flex-1\">\n <Search className=\"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground\" />\n <Input\n type=\"search\"\n placeholder=\"Search projects...\"\n className=\"pl-8\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n />\n </div>\n <Button\n variant=\"outline\"\n size=\"lg\"\n className=\"h-10 w-10 p-0\"\n onClick={handleCreateProject}\n title=\"Create new project\"\n >\n <Plus className=\"h-3 w-3\" />\n </Button>\n </div>\n\n <div className=\"flex-1 overflow-auto space-y-1\">\n\n <>\n {user?.favourite_projects && favoriteProjectsList.length > 0 && !searchQuery && (\n <>\n <div className=\"text-xs font-medium text-muted-foreground px-2 py-1\">\n Favorites\n </div>\n {favouriteProjects.loading && (\n <>\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n </>\n )}\n {!favouriteProjects.loading && (() => {\n return (\n <>\n {favoriteProjectsList.map((project: Project) => (\n <div key={project.id} className=\"flex items-center gap-1\">\n <Link href={`/projects/${project.id}`} className=\"flex-1\">\n <Button\n variant={pathname.includes(project.id) ? \"secondary\" : \"ghost\"}\n className=\"w-full justify-start gap-2 pr-1\"\n >\n {renderProjectImage(project)}\n <span className=\"flex-1 text-left\">\n <TruncatedText text={project.name} length={10} />\n </span>\n </Button>\n </Link>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 flex-shrink-0\"\n onClick={(e) => handleFavouriteToggle(project.id, e)}\n >\n <Star className=\"h-3 w-3 fill-yellow-400 text-yellow-400\" />\n </Button>\n </div>\n ))}\n </>\n );\n })()}\n </>\n )}\n\n <div className=\"text-xs font-medium text-muted-foreground px-2 py-1 mt-2\">\n All projects:\n </div>\n\n {projects.loading && (\n <>\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n <Skeleton className=\"w-[100%] h-[32px] rounded-lg\" />\n </>\n )}\n\n {!projects.loading && allProjects.map((project: Project) => (\n <div key={project.id} className=\"flex items-center gap-1\">\n <Link href={`/projects/${project.id}`} className=\"flex-1\">\n <Button\n variant={pathname.includes(project.id) ? \"secondary\" : \"ghost\"}\n className=\"w-full justify-start gap-2 pr-1\"\n >\n {renderProjectImage(project)}\n <span className=\"flex-1 text-left\">\n <TruncatedText text={project.name} length={14} />\n </span>\n </Button>\n </Link>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-8 w-8 p-0 flex-shrink-0\"\n onClick={(e) => handleFavouriteToggle(project.id, e)}\n >\n <Star className={`h-3 w-3 ${user?.favourite_projects?.includes(project.id) ? 'fill-yellow-400 text-yellow-400' : ''}`} />\n </Button>\n </div>\n ))}\n </>\n </div>\n\n <CreateProjectDialog\n open={createDialogOpen}\n onOpenChange={setCreateDialogOpen}\n refetchProjects={projects.refetch}\n />\n </div>\n );\n}","\"use client\";\n\nimport { ProjectNav } from \"@/components/project-nav\";\nimport * as React from \"react\";\n\nexport default function ProjectsLayout({ children }: { children: React.ReactNode }) {\n return (\n <div className=\"flex h-full\">\n <div className=\"border-r bg-muted/10\">\n <ProjectNav />\n </div>\n {children}\n </div>\n );\n}","export function TruncatedText({ text, length }: { text: string, length: number }) {\n if (text.length > length) {\n return <>{text.slice(0, length)}...</>\n } else {\n return <>{text}</>;\n }\n}","\"use client\";\n\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className,\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className,\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","\"use client\";\n\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n);\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\n","\"use client\";\n\n// Inspired by react-hot-toast library\nimport * as React from \"react\";\n\nimport type { ToastActionElement, ToastProps } from \"@/components/ui/toast\";\n\nconst TOAST_LIMIT = 1;\nconst TOAST_REMOVE_DELAY = 1000000;\n\ntype ToasterToast = ToastProps & {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: ToastActionElement;\n};\n\nconst actionTypes = {\n ADD_TOAST: \"ADD_TOAST\",\n UPDATE_TOAST: \"UPDATE_TOAST\",\n DISMISS_TOAST: \"DISMISS_TOAST\",\n REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const;\n\nlet count = 0;\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n}\n\ntype ActionType = typeof actionTypes;\n\ntype Action =\n | {\n type: ActionType[\"ADD_TOAST\"];\n toast: ToasterToast;\n }\n | {\n type: ActionType[\"UPDATE_TOAST\"];\n toast: Partial<ToasterToast>;\n }\n | {\n type: ActionType[\"DISMISS_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n }\n | {\n type: ActionType[\"REMOVE_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n };\n\ninterface State {\n toasts: ToasterToast[];\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t,\n ),\n };\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t,\n ),\n };\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit<ToasterToast, \"id\">;\n\nfunction toast({ ...props }: Toast) {\n const id = genId();\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n };\n}\n\nexport { useToast, toast };\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Loader2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTJhOSA5IDAgMSAxLTYuMjE5LTguNTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/loader-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Loader2 = createLucideIcon('Loader2', [\n ['path', { d: 'M21 12a9 9 0 1 1-6.219-8.56', key: '13zald' }],\n]);\n\nexport default Loader2;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Plus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJNMTIgNXYxNCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Plus = createLucideIcon('Plus', [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'M12 5v14', key: 's699le' }],\n]);\n\nexport default Plus;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Search\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMSIgY3k9IjExIiByPSI4IiAvPgogIDxwYXRoIGQ9Im0yMSAyMS00LjMtNC4zIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/search\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Search = createLucideIcon('Search', [\n ['circle', { cx: '11', cy: '11', r: '8', key: '4ej97u' }],\n ['path', { d: 'm21 21-4.3-4.3', key: '1qie3q' }],\n]);\n\nexport default Search;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Star\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cG9seWdvbiBwb2ludHM9IjEyIDIgMTUuMDkgOC4yNiAyMiA5LjI3IDE3IDE0LjE0IDE4LjE4IDIxLjAyIDEyIDE3Ljc3IDUuODIgMjEuMDIgNyAxNC4xNCAyIDkuMjcgOC45MSA4LjI2IDEyIDIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/star\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Star = createLucideIcon('Star', [\n [\n 'polygon',\n {\n points:\n '12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2',\n key: '8f66p6',\n },\n ],\n]);\n\nexport default Star;\n","import * as React from \"rehackt\";\nimport { canUseDOM } from \"../../../utilities/index.js\";\n// use canUseDOM here instead of canUseLayoutEffect because we want to be able\n// to use useLayoutEffect in our jest tests. useLayoutEffect seems to work fine\n// in useSuspenseQuery tests, but to honor the original comment about the\n// warnings for useSyncExternalStore implementation, canUseLayoutEffect is left\n// alone.\nexport var useIsomorphicLayoutEffect = canUseDOM ? React.useLayoutEffect : React.useEffect;\n//# sourceMappingURL=useIsomorphicLayoutEffect.js.map","import { __assign } from \"tslib\";\nimport * as React from \"rehackt\";\nimport { mergeOptions } from \"../../utilities/index.js\";\nimport { equal } from \"@wry/equality\";\nimport { DocumentType, verifyDocumentType } from \"../parser/index.js\";\nimport { ApolloError } from \"../../errors/index.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\nimport { useIsomorphicLayoutEffect } from \"./internal/useIsomorphicLayoutEffect.js\";\n/**\n *\n *\n * > Refer to the [Mutations](https://www.apollographql.com/docs/react/data/mutations/) section for a more in-depth overview of `useMutation`.\n *\n * @example\n * ```jsx\n * import { gql, useMutation } from '@apollo/client';\n *\n * const ADD_TODO = gql`\n * mutation AddTodo($type: String!) {\n * addTodo(type: $type) {\n * id\n * type\n * }\n * }\n * `;\n *\n * function AddTodo() {\n * let input;\n * const [addTodo, { data }] = useMutation(ADD_TODO);\n *\n * return (\n * <div>\n * <form\n * onSubmit={e => {\n * e.preventDefault();\n * addTodo({ variables: { type: input.value } });\n * input.value = '';\n * }}\n * >\n * <input\n * ref={node => {\n * input = node;\n * }}\n * />\n * <button type=\"submit\">Add Todo</button>\n * </form>\n * </div>\n * );\n * }\n * ```\n * @since 3.0.0\n * @param mutation - A GraphQL mutation document parsed into an AST by `gql`.\n * @param options - Options to control how the mutation is executed.\n * @returns A tuple in the form of `[mutate, result]`\n */\nexport function useMutation(mutation, options) {\n var client = useApolloClient(options === null || options === void 0 ? void 0 : options.client);\n verifyDocumentType(mutation, DocumentType.Mutation);\n var _a = React.useState({\n called: false,\n loading: false,\n client: client,\n }), result = _a[0], setResult = _a[1];\n var ref = React.useRef({\n result: result,\n mutationId: 0,\n isMounted: true,\n client: client,\n mutation: mutation,\n options: options,\n });\n useIsomorphicLayoutEffect(function () {\n Object.assign(ref.current, { client: client, options: options, mutation: mutation });\n });\n var execute = React.useCallback(function (executeOptions) {\n if (executeOptions === void 0) { executeOptions = {}; }\n var _a = ref.current, options = _a.options, mutation = _a.mutation;\n var baseOptions = __assign(__assign({}, options), { mutation: mutation });\n var client = executeOptions.client || ref.current.client;\n if (!ref.current.result.loading &&\n !baseOptions.ignoreResults &&\n ref.current.isMounted) {\n setResult((ref.current.result = {\n loading: true,\n error: void 0,\n data: void 0,\n called: true,\n client: client,\n }));\n }\n var mutationId = ++ref.current.mutationId;\n var clientOptions = mergeOptions(baseOptions, executeOptions);\n return client\n .mutate(clientOptions)\n .then(function (response) {\n var _a, _b;\n var data = response.data, errors = response.errors;\n var error = errors && errors.length > 0 ?\n new ApolloError({ graphQLErrors: errors })\n : void 0;\n var onError = executeOptions.onError || ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError);\n if (error && onError) {\n onError(error, clientOptions);\n }\n if (mutationId === ref.current.mutationId &&\n !clientOptions.ignoreResults) {\n var result_1 = {\n called: true,\n loading: false,\n data: data,\n error: error,\n client: client,\n };\n if (ref.current.isMounted && !equal(ref.current.result, result_1)) {\n setResult((ref.current.result = result_1));\n }\n }\n var onCompleted = executeOptions.onCompleted || ((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.onCompleted);\n if (!error) {\n onCompleted === null || onCompleted === void 0 ? void 0 : onCompleted(response.data, clientOptions);\n }\n return response;\n }, function (error) {\n var _a;\n if (mutationId === ref.current.mutationId &&\n ref.current.isMounted) {\n var result_2 = {\n loading: false,\n error: error,\n data: void 0,\n called: true,\n client: client,\n };\n if (!equal(ref.current.result, result_2)) {\n setResult((ref.current.result = result_2));\n }\n }\n var onError = executeOptions.onError || ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError);\n if (onError) {\n onError(error, clientOptions);\n // TODO(brian): why are we returning this here???\n return { data: void 0, errors: error };\n }\n throw error;\n });\n }, []);\n var reset = React.useCallback(function () {\n if (ref.current.isMounted) {\n var result_3 = {\n called: false,\n loading: false,\n client: ref.current.client,\n };\n Object.assign(ref.current, { mutationId: 0, result: result_3 });\n setResult(result_3);\n }\n }, []);\n React.useEffect(function () {\n var current = ref.current;\n // eslint-disable-next-line react-compiler/react-compiler\n current.isMounted = true;\n return function () {\n current.isMounted = false;\n };\n }, []);\n return [execute, __assign({ reset: reset }, result)];\n}\n//# sourceMappingURL=useMutation.js.map","import * as React from 'react';\nimport { Primitive } from '@radix-ui/react-primitive';\n\n/* -------------------------------------------------------------------------------------------------\n * Label\n * -----------------------------------------------------------------------------------------------*/\n\nconst NAME = 'Label';\n\ntype LabelElement = React.ComponentRef<typeof Primitive.label>;\ntype PrimitiveLabelProps = React.ComponentPropsWithoutRef<typeof Primitive.label>;\ninterface LabelProps extends PrimitiveLabelProps {}\n\nconst Label = React.forwardRef<LabelElement, LabelProps>((props, forwardedRef) => {\n return (\n <Primitive.label\n {...props}\n ref={forwardedRef}\n onMouseDown={(event) => {\n // only prevent text selection if clicking inside the label itself\n const target = event.target as HTMLElement;\n if (target.closest('button, input, select, textarea')) return;\n\n props.onMouseDown?.(event);\n // prevent text selection when double clicking label\n if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n }}\n />\n );\n});\n\nLabel.displayName = NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Label;\n\nexport {\n Label,\n //\n Root,\n};\nexport type { LabelProps };\n"],"names":["Promise","resolve","then","__webpack_require__","bind","CreateProjectDialog","param","open","onOpenChange","refetchProjects","formData","setFormData","useState","name","description","custom_instructions","isSubmitting","setIsSubmitting","toast","useToast","router","useRouter","createProject","useMutation","CREATE_PROJECT","refetchQueries","query","GET_PROJECTS","variables","page","limit","handleSubmit","e","preventDefault","trim","title","variant","result","input","rights_mode","console","log","newProject","data","projectsCreateOne","item","push","concat","id","error","message","jsx_runtime","jsx","Dialog","jsxs","DialogContent","className","DialogHeader","DialogTitle","DialogDescription","form","onSubmit","div","Label","htmlFor","Input","value","onChange","target","placeholder","required","disabled","Textarea","rows","DialogFooter","Button","type","onClick","Fragment","Loader2","ProjectNav","user","projects","favouriteProjects","searchQuery","setSearchQuery","createDialogOpen","setCreateDialogOpen","pathname","usePathname","init","useContext","UserContext","setUser","useQuery","GET_PROJECTS_BY_IDS","fetchPolicy","nextFetchPolicy","ids","favourite_projects","skip","length","filters","contains","undefined","useEffect","refetch","updateUserFavouriteProjects","UPDATE_USER_FAVOURITE_PROJECTS","renderProjectImage","project","image","img","src","alt","charAt","toUpperCase","handleFavouriteToggle","projectId","stopPropagation","newFavorites","currentFavorites","includes","filter","prev","allProjects","projectsPagination","items","previousData","favoriteProjectsList","projectByIds","Search","size","Plus","loading","Skeleton","map","Link","href","span","TruncatedText","text","Star","ProjectsLayout","children","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","slice","DialogPrimitive","DialogTrigger","DialogPortal","DialogOverlay","React","ref","props","cn","displayName","X","labelVariants","cva","LabelPrimitive","textarea","count","toastTimeouts","Map","addToRemoveQueue","has","toastId","timeout","setTimeout","delete","dispatch","set","reducer","state","action","toasts","t","forEach","listeners","memoryState","listener","Number","MAX_SAFE_INTEGER","toString","dismiss","update","setState","index","indexOf","splice","createLucideIcon","d","key","cx","cy","r","points","useIsomorphicLayoutEffect","canUse","Nq","rehackt","useLayoutEffect","mutation","options","client","useApolloClient","x","parser","Vp","n_","Mutation","_a","called","setResult","useRef","mutationId","isMounted","Object","assign","current","execute","useCallback","executeOptions","baseOptions","tslib_es6","pi","ignoreResults","clientOptions","mergeOptions","J","mutate","response","_b","errors","client_errors","cA","graphQLErrors","onError","result_1","lib","D","onCompleted","result_2","reset","result_3","forwardedRef","Primitive","label","onMouseDown","closest","event","defaultPrevented","detail","Root"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"static/chunks/app/(application)/projects/page-6a38fd92beb3b45a.js","mappings":"qFAAAA,QAAAC,OAAA,GAAAC,IAAA,CAAAC,EAAAC,IAAA,CAAAD,EAAA,wGCIe,SAASE,IACpB,MACI,GAAAC,EAAAC,GAAA,EAACC,MAAAA,CAAIC,UAAU,uDACX,GAAAH,EAAAI,IAAA,EAACF,MAAAA,CAAIC,UAAU,wBACX,GAAAH,EAAAC,GAAA,EAACI,KAAAA,CAAGF,UAAU,uCAA8B,qBAC5C,GAAAH,EAAAC,GAAA,EAACK,IAAAA,CAAEH,UAAU,iCAAwB,oFAIrD","sources":["webpack://_N_E/?80fd","webpack://_N_E/./app/(application)/projects/page.tsx"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/Users/daniel.claessen/Desktop/Projects/exulu/frontend/app/(application)/projects/page.tsx\");\n","\"use client\";\n\nimport * as React from \"react\";\n\nexport default function ProjectsPage() {\n return (\n <div className=\"flex-1 flex items-center justify-center p-8\">\n <div className=\"text-center\">\n <h2 className=\"text-2xl font-semibold mb-2\">Select a Project</h2>\n <p className=\"text-muted-foreground\">Choose a project from the sidebar to view its details, or create a new one.</p>\n </div>\n </div>\n );\n}"],"names":["Promise","resolve","then","__webpack_require__","bind","ProjectsPage","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","div","className","jsxs","h2","p"],"sourceRoot":""}