@exulu/frontend 1.3.2 → 1.4.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.
- package/dist/.next/BUILD_ID +1 -1
- package/dist/.next/app-build-manifest.json +185 -174
- package/dist/.next/app-path-routes-manifest.json +1 -1
- package/dist/.next/build-manifest.json +2 -2
- package/dist/.next/prerender-manifest.json +1 -1
- package/dist/.next/server/app/(application)/agents/edit/[id]/page.js +1 -1
- package/dist/.next/server/app/(application)/agents/edit/[id]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/agents/edit/[id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/agents/page.js +1 -2
- package/dist/.next/server/app/(application)/agents/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/agents/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/page.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/page.js +1 -1
- package/dist/.next/server/app/(application)/chat/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/chat/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/configuration/page.js +1 -1
- package/dist/.next/server/app/(application)/configuration/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/configuration/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/dashboard/page.js +5 -1
- package/dist/.next/server/app/(application)/dashboard/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/dashboard/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/data/[[...query]]/page.js +5 -1
- package/dist/.next/server/app/(application)/data/[[...query]]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/data/[[...query]]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page.js +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/runs/page.js +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/runs/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/runs/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page.js +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/page.js +1 -1
- package/dist/.next/server/app/(application)/evals/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/evals/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/explorer/page.js +1 -1
- package/dist/.next/server/app/(application)/explorer/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/explorer/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/jobs/page.js +1 -1
- package/dist/.next/server/app/(application)/jobs/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/jobs/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/keys/page.js +1 -1
- package/dist/.next/server/app/(application)/keys/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/keys/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/page.js +1 -1
- package/dist/.next/server/app/(application)/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/projects/[project]/page.js +1 -1
- package/dist/.next/server/app/(application)/projects/[project]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/projects/[project]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/projects/page.js +1 -1
- package/dist/.next/server/app/(application)/projects/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/projects/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/roles/page.js +1 -1
- package/dist/.next/server/app/(application)/roles/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/roles/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/token/page.js +1 -1
- package/dist/.next/server/app/(application)/token/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/token/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/users/page.js +1 -1
- package/dist/.next/server/app/(application)/users/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/users/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/create/page.js +1 -1
- package/dist/.next/server/app/(application)/variables/create/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/variables/create/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/edit/[variable_id]/page.js +1 -1
- package/dist/.next/server/app/(application)/variables/edit/[variable_id]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/variables/edit/[variable_id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/page.js +1 -1
- package/dist/.next/server/app/(application)/variables/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/variables/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/usage/[variable_id]/page.js +1 -1
- package/dist/.next/server/app/(application)/variables/usage/[variable_id]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/variables/usage/[variable_id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/workflows/page.js +1 -1
- package/dist/.next/server/app/(application)/workflows/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/workflows/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(authentication)/login/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found.html +1 -1
- package/dist/.next/server/app/_not-found.rsc +1 -1
- package/dist/.next/server/app/api/auth/[...nextauth]/route.js +9 -9
- package/dist/.next/server/app-paths-manifest.json +5 -5
- package/dist/.next/server/chunks/1051.js +16 -16
- package/dist/.next/server/chunks/2270.js +188 -100
- package/dist/.next/server/chunks/{8838.js → 2875.js} +1 -1
- package/dist/.next/server/chunks/2916.js +1 -1
- package/dist/.next/server/chunks/3503.js +1 -0
- package/dist/.next/server/chunks/{7544.js → 4552.js} +1 -1
- package/dist/.next/server/chunks/{3393.js → 4739.js} +1 -1
- package/dist/.next/server/chunks/5192.js +1 -1
- package/dist/.next/server/chunks/5999.js +2 -0
- package/dist/.next/server/chunks/6282.js +1 -0
- package/dist/.next/server/chunks/6623.js +1 -0
- package/dist/.next/server/chunks/7721.js +1 -0
- package/dist/.next/server/chunks/7944.js +2 -2
- package/dist/.next/server/chunks/8050.js +1 -0
- package/dist/.next/server/chunks/8206.js +1 -0
- package/dist/.next/server/chunks/8679.js +5 -0
- package/dist/.next/server/middleware-manifest.json +5 -5
- package/dist/.next/server/pages/404.html +1 -1
- package/dist/.next/server/pages/500.html +1 -1
- package/dist/.next/server/server-reference-manifest.json +1 -1
- package/dist/.next/static/chunks/1294-368dc8ec59054da4.js +2 -0
- package/dist/.next/static/chunks/1294-368dc8ec59054da4.js.map +1 -0
- package/dist/.next/static/chunks/{1645-e5fd10236c0183ce.js → 1645-570e014100772437.js} +1 -1
- package/dist/.next/static/chunks/{1645-e5fd10236c0183ce.js.map → 1645-570e014100772437.js.map} +1 -1
- package/dist/.next/static/chunks/1957-5867716304ecd208.js +2 -0
- package/dist/.next/static/chunks/1957-5867716304ecd208.js.map +1 -0
- package/dist/.next/static/chunks/{2293-59b4bbce0c5bd2f2.js → 2293-1681cdef5b8c0c0b.js} +1 -1
- package/dist/.next/static/chunks/{2293-59b4bbce0c5bd2f2.js.map → 2293-1681cdef5b8c0c0b.js.map} +1 -1
- package/dist/.next/static/chunks/3475-28ce4fce960656bd.js +2 -0
- package/dist/.next/static/chunks/3475-28ce4fce960656bd.js.map +1 -0
- package/dist/.next/static/chunks/3832-a5e8fc6647e2be65.js +2 -0
- package/dist/.next/static/chunks/3832-a5e8fc6647e2be65.js.map +1 -0
- package/dist/.next/static/chunks/{4386-a36fe9c65884f025.js → 4386-c7690667749bff6a.js} +1 -1
- package/dist/.next/static/chunks/{4386-a36fe9c65884f025.js.map → 4386-c7690667749bff6a.js.map} +1 -1
- package/dist/.next/static/chunks/4750-4d5c13bbc96bc19b.js +2 -0
- package/dist/.next/static/chunks/4750-4d5c13bbc96bc19b.js.map +1 -0
- package/dist/.next/static/chunks/5243-1aaa41b2cd0ea87c.js +2 -0
- package/dist/.next/static/chunks/5243-1aaa41b2cd0ea87c.js.map +1 -0
- package/dist/.next/static/chunks/5978-814d6900645d2fcc.js +2 -0
- package/dist/.next/static/chunks/5978-814d6900645d2fcc.js.map +1 -0
- package/dist/.next/static/chunks/6373-651cb258c9e2b57b.js +2 -0
- package/dist/.next/static/chunks/6373-651cb258c9e2b57b.js.map +1 -0
- package/dist/.next/static/chunks/{7564-44a20b31206685e1.js → 6545-5a1d7cf4d5ca770e.js} +21 -21
- package/dist/.next/static/chunks/6545-5a1d7cf4d5ca770e.js.map +1 -0
- package/dist/.next/static/chunks/6839-0f4cfb48058a5ab6.js +2 -0
- package/dist/.next/static/chunks/6839-0f4cfb48058a5ab6.js.map +1 -0
- package/dist/.next/static/chunks/723-94e596796cbf911d.js +2 -0
- package/dist/.next/static/chunks/723-94e596796cbf911d.js.map +1 -0
- package/dist/.next/static/chunks/8202-db2cc384c66bc1be.js +2 -0
- package/dist/.next/static/chunks/8202-db2cc384c66bc1be.js.map +1 -0
- package/dist/.next/static/chunks/8269-37dd07515eb44201.js +2 -0
- package/dist/.next/static/chunks/8269-37dd07515eb44201.js.map +1 -0
- package/dist/.next/static/chunks/8469-ba31cbd7acab5f94.js +2 -0
- package/dist/.next/static/chunks/8469-ba31cbd7acab5f94.js.map +1 -0
- package/dist/.next/static/chunks/8824-20030459012376a3.js +2 -0
- package/dist/.next/static/chunks/8824-20030459012376a3.js.map +1 -0
- package/dist/.next/static/chunks/9105-3800f721d38e2b9a.js +2 -0
- package/dist/.next/static/chunks/9105-3800f721d38e2b9a.js.map +1 -0
- package/dist/.next/static/chunks/9183-a51605ff26b92fed.js +41 -0
- package/dist/.next/static/chunks/9183-a51605ff26b92fed.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-511f168123f85285.js +2 -0
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-511f168123f85285.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/agents/{page-499ac3bd1044306c.js → page-63643deabdaa6b2c.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/agents/{page-499ac3bd1044306c.js.map → page-63643deabdaa6b2c.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/{page-3807a8bc2ae87548.js → page-62c7321ba26632af.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-62c7321ba26632af.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/chat/{layout-53796525bd3e2443.js → layout-5eb1d22ddcbc0b55.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/chat/{layout-53796525bd3e2443.js.map → layout-5eb1d22ddcbc0b55.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/configuration/{page-2d8a0e2664ab9a94.js → page-8f92af5318feb84f.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/configuration/{page-2d8a0e2664ab9a94.js.map → page-8f92af5318feb84f.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/dashboard/page-00e425d942e0d769.js +2 -0
- package/dist/.next/static/chunks/app/(application)/dashboard/page-00e425d942e0d769.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-a460a56d3efac658.js +2 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-a460a56d3efac658.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-bb06a9553c9ed178.js +2 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-bb06a9553c9ed178.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/[id]/{page-2238f1fb73d93328.js → page-ef82e92ca7d0da6c.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/evals/[id]/{page-2238f1fb73d93328.js.map → page-ef82e92ca7d0da6c.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/evals/[id]/runs/page-6622dd1b22a7885d.js +2 -0
- package/dist/.next/static/chunks/app/(application)/evals/[id]/runs/page-6622dd1b22a7885d.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/cases/{page-ea5faf58b368feae.js → page-6246be9d6592d1d3.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/evals/cases/{page-ea5faf58b368feae.js.map → page-6246be9d6592d1d3.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/evals/{page-f79e1a90384ba618.js → page-b1e1fd7dba1e675f.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/evals/{page-f79e1a90384ba618.js.map → page-b1e1fd7dba1e675f.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/jobs/{page-e6f02a338bec4806.js → page-a96441a0bc654d68.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/jobs/{page-e6f02a338bec4806.js.map → page-a96441a0bc654d68.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/keys/{page-59ee4e0281131cbc.js → page-163aadfe9ad0d794.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/keys/{page-59ee4e0281131cbc.js.map → page-163aadfe9ad0d794.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/{layout-73d93420d0c6661c.js → layout-694c53aca85ef437.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/{layout-73d93420d0c6661c.js.map → layout-694c53aca85ef437.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-e69828fde85c50af.js +2 -0
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-e69828fde85c50af.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/projects/{layout-f73ad7daf4825f1b.js → layout-d7642b25bf6d33b3.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/projects/{layout-f73ad7daf4825f1b.js.map → layout-d7642b25bf6d33b3.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/roles/page-5d5e5142f0997122.js +2 -0
- package/dist/.next/static/chunks/app/(application)/roles/page-5d5e5142f0997122.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/users/{page-e0a04fda52138aa0.js → page-b862cb199fd72525.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/users/{page-e0a04fda52138aa0.js.map → page-b862cb199fd72525.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/create/{page-6c6076f3f253190d.js → page-d79d5c1c1ecabdb5.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/create/{page-6c6076f3f253190d.js.map → page-d79d5c1c1ecabdb5.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/edit/[variable_id]/{page-a3fa477fead5609a.js → page-72cf3aa95776ab96.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/edit/[variable_id]/{page-a3fa477fead5609a.js.map → page-72cf3aa95776ab96.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/{page-ddeff54a8b19bdbe.js → page-67864b471b48c950.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/variables/{page-ddeff54a8b19bdbe.js.map → page-67864b471b48c950.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/usage/[variable_id]/{page-ed6d136e7ee3a591.js → page-208b4c9cc64abf2e.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/usage/[variable_id]/{page-ed6d136e7ee3a591.js.map → page-208b4c9cc64abf2e.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/workflows/page-5b1ffc7c5012fdf6.js +2 -0
- package/dist/.next/static/chunks/app/(application)/workflows/page-5b1ffc7c5012fdf6.js.map +1 -0
- package/dist/.next/static/css/006966ab2edd0ebc.css +4 -0
- package/dist/.next/static/css/006966ab2edd0ebc.css.map +1 -0
- package/dist/.next/static/css/e3f2a16ab7676b05.css.map +1 -1
- package/dist/package.json +4 -1
- package/package.json +1 -1
- package/dist/.next/server/chunks/3743.js +0 -1
- package/dist/.next/server/chunks/4375.js +0 -1
- package/dist/.next/server/chunks/4680.js +0 -1
- package/dist/.next/server/chunks/7203.js +0 -5
- package/dist/.next/server/chunks/7598.js +0 -5
- package/dist/.next/server/chunks/8806.js +0 -1
- package/dist/.next/static/chunks/1957-670ddf66742d95f2.js +0 -2
- package/dist/.next/static/chunks/1957-670ddf66742d95f2.js.map +0 -1
- package/dist/.next/static/chunks/3397-5a704b2e12e9e883.js +0 -2
- package/dist/.next/static/chunks/3397-5a704b2e12e9e883.js.map +0 -1
- package/dist/.next/static/chunks/3832-10b779e2f89f162f.js +0 -2
- package/dist/.next/static/chunks/3832-10b779e2f89f162f.js.map +0 -1
- package/dist/.next/static/chunks/3998-c1c5bec61ce07357.js +0 -2
- package/dist/.next/static/chunks/3998-c1c5bec61ce07357.js.map +0 -1
- package/dist/.next/static/chunks/428-61741966c36f4f72.js +0 -2
- package/dist/.next/static/chunks/428-61741966c36f4f72.js.map +0 -1
- package/dist/.next/static/chunks/5585-4f0c084850210a82.js +0 -2
- package/dist/.next/static/chunks/5585-4f0c084850210a82.js.map +0 -1
- package/dist/.next/static/chunks/5615-042f927b657e6db1.js +0 -41
- package/dist/.next/static/chunks/5615-042f927b657e6db1.js.map +0 -1
- package/dist/.next/static/chunks/5978-f3b8475a2d9f9299.js +0 -2
- package/dist/.next/static/chunks/5978-f3b8475a2d9f9299.js.map +0 -1
- package/dist/.next/static/chunks/6242-c1c2f1479529e9d4.js +0 -2
- package/dist/.next/static/chunks/6242-c1c2f1479529e9d4.js.map +0 -1
- package/dist/.next/static/chunks/6373-fc4799cc7a13474a.js +0 -2
- package/dist/.next/static/chunks/6373-fc4799cc7a13474a.js.map +0 -1
- package/dist/.next/static/chunks/7398-c6de1642586049cd.js +0 -2
- package/dist/.next/static/chunks/7398-c6de1642586049cd.js.map +0 -1
- package/dist/.next/static/chunks/7564-44a20b31206685e1.js.map +0 -1
- package/dist/.next/static/chunks/79-1d568f3c4cd45bd4.js +0 -2
- package/dist/.next/static/chunks/79-1d568f3c4cd45bd4.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-b66390eb4a95ac1a.js +0 -2
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-b66390eb4a95ac1a.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-3807a8bc2ae87548.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/dashboard/page-85d3f8d2bd28ae4b.js +0 -2
- package/dist/.next/static/chunks/app/(application)/dashboard/page-85d3f8d2bd28ae4b.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-822dad4cb57f62e2.js +0 -2
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-822dad4cb57f62e2.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-3efd7701534078ea.js +0 -2
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-3efd7701534078ea.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/evals/[id]/runs/page-b6a3cb8435be3ade.js +0 -2
- package/dist/.next/static/chunks/app/(application)/evals/[id]/runs/page-b6a3cb8435be3ade.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-19382bb263f85fda.js +0 -2
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-19382bb263f85fda.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/roles/page-acd9ef282bc53557.js +0 -2
- package/dist/.next/static/chunks/app/(application)/roles/page-acd9ef282bc53557.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/workflows/page-38488c44d89b32f4.js +0 -2
- package/dist/.next/static/chunks/app/(application)/workflows/page-38488c44d89b32f4.js.map +0 -1
- package/dist/.next/static/css/a7092ddec8ffd4fb.css +0 -4
- package/dist/.next/static/css/a7092ddec8ffd4fb.css.map +0 -1
- /package/dist/.next/static/{HHwzgh0RLIMeodnSs4vIv → soJPoIxCmlpJ75t9n-Q9V}/_buildManifest.js +0 -0
- /package/dist/.next/static/{HHwzgh0RLIMeodnSs4vIv → soJPoIxCmlpJ75t9n-Q9V}/_ssgManifest.js +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[546],{70468:function(){},69585:function(e,r,t){Promise.resolve().then(t.bind(t,63950))},63950:function(e,r,t){"use strict";t.r(r),t.d(r,{default:function(){return w}});var s=t(57437),n=t(2265),a=t(15863),l=t(99397),i=t(54001),o=t(78867),d=t(18930),c=t(62869),u=t(95186),x=t(27107),f=t(66070),m=t(73578),h=t(26110),v=t(65613),g=t(35974),p=t(77992),j=t(84426),y=t(7211),b=t(12199),N=t(27689),k=t(27426);function w(){var e,r,t,w;let[P,A]=(0,n.useState)(""),[C,I]=(0,n.useState)(""),[Z,D]=(0,n.useState)(!1),[S,K]=(0,n.useState)(null),[R,_]=(0,n.useState)(null),{loading:z,error:G,data:M,refetch:O,previousData:U}=(0,y.aM)(N.fo,{fetchPolicy:"cache-first",nextFetchPolicy:"network-only",variables:{page:1,limit:10,filters:[{type:{eq:"api"}}]},pollInterval:3e4});console.log("data",M);let E=async()=>{var e,r,t;if(!P.trim()){(0,p.Am)({title:"Error",description:"Please enter a name for your API key",variant:"destructive"});return}D(!0);let s="sk_".concat(Math.random().toString(36).substring(2,15),"_").concat(Math.random().toString(36).substring(2,15)),n="/".concat(P.toLowerCase().trim().replaceAll(" ","_")),a=await k.ZP.hash(s,12),l=await Y({variables:{firstname:"".concat(P),type:"api",apikey:"".concat(a).concat(n),email:"".concat(a,"@exulu-api-user.com"),role:C||void 0}});console.log("response",l),K({id:"".concat(null===(t=l.data)||void 0===t?void 0:null===(r=t.usersCreateOne)||void 0===r?void 0:null===(e=r.item)||void 0===e?void 0:e.id),name:P,key:"".concat(s).concat(n),createdAt:new Date}),A(""),I(""),D(!1)},[F,T]=(0,b.D)(N.eY,{refetchQueries:[N.fo,"GetUsers"]}),[Y,W]=(0,b.D)(N.ve,{refetchQueries:[N.fo,"GetUsers"]}),[Q,V]=(0,b.D)(N.Pe,{refetchQueries:[N.fo,"GetUsers"]}),q=e=>{navigator.clipboard.writeText(e),(0,p.Am)({title:"Copied!",description:"API key copied to clipboard"})},L=async e=>{await F({variables:{id:e}}),_(null),(0,p.Am)({title:"Deleted",description:"API key has been deleted"})},X=async(e,r)=>{try{await Q({variables:{id:e,role:r||null}}),(0,p.Am)({title:"Updated",description:"API key role has been updated"})}catch(e){(0,p.Am)({title:"Error",description:"Failed to update API key role",variant:"destructive"})}};return(0,s.jsxs)("div",{className:"container mx-auto py-6 space-y-8 max-w-5xl",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,s.jsx)("h1",{className:"text-3xl font-bold tracking-tight",children:"API Keys"}),(0,s.jsx)("p",{className:"text-muted-foreground",children:"Manage your API keys for accessing the Exulu IMP API. Keep your keys secure - they have full access to your account."})]}),(0,s.jsxs)(f.Zb,{children:[(0,s.jsxs)(f.Ol,{children:[(0,s.jsx)(f.ll,{children:"Create API Key"}),(0,s.jsx)(f.SZ,{children:"Generate a new API key for your applications. API keys provide full access to your account."})]}),(0,s.jsx)(f.aY,{children:(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-4 sm:flex-row",children:[(0,s.jsx)(u.I,{placeholder:"API Key Name (e.g. Production, Development)",value:P,onChange:e=>A(e.target.value),className:"flex-1"}),(0,s.jsx)("div",{className:"sm:w-64",children:(0,s.jsx)(j.u,{value:C,onChange:I,placeholder:"Select role"})})]}),(0,s.jsx)(c.z,{onClick:E,disabled:Z||!P.trim(),className:"whitespace-nowrap self-start",children:Z?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(a.Z,{className:"mr-2 h-4 w-4 animate-spin"}),"Generating..."]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(l.Z,{className:"mr-2 h-4 w-4"}),"Generate API Key"]})})]})})]}),S&&(0,s.jsxs)(v.bZ,{className:"border-green-500 bg-green-50 dark:bg-green-950 dark:border-green-900",children:[(0,s.jsx)(i.Z,{className:"h-4 w-4 text-green-600 dark:text-green-400"}),(0,s.jsx)(v.Cd,{className:"text-green-600 dark:text-green-400",children:"New API Key Generated"}),(0,s.jsxs)(v.X,{className:"mt-4",children:[(0,s.jsxs)("div",{className:"mb-2 text-sm text-muted-foreground",children:[(0,s.jsx)("strong",{children:"Important:"})," This key will only be displayed once. Please copy it now and store it securely."]}),(0,s.jsxs)("div",{className:"flex items-center gap-2 mt-2",children:[(0,s.jsx)("code",{className:"relative rounded bg-muted px-[0.5rem] py-[0.3rem] font-mono text-sm font-semibold overflow-x-auto max-w-[calc(100%-40px)]",children:S.key}),(0,s.jsx)(c.z,{variant:"outline",size:"icon",onClick:()=>q(S.key),className:"h-8 w-8 flex-shrink-0",children:(0,s.jsx)(o.Z,{className:"h-4 w-4"})})]}),(0,s.jsx)(c.z,{variant:"link",className:"mt-2 h-auto p-0 text-green-600 dark:text-green-400",onClick:()=>K(null),children:"Dismiss"})]})]}),(0,s.jsxs)(f.Zb,{children:[(0,s.jsxs)(f.Ol,{children:[(0,s.jsx)(f.ll,{children:"Your API Keys"}),(0,s.jsx)(f.SZ,{children:"Manage your existing API keys. For security, API keys are never displayed in full after creation."})]}),(0,s.jsx)(f.aY,{children:(null==M?void 0:null===(r=M.usersPagination)||void 0===r?void 0:null===(e=r.items)||void 0===e?void 0:e.length)===0?(0,s.jsx)("div",{className:"text-center py-6 text-muted-foreground",children:"No API keys found. Generate your first key above."}):(0,s.jsx)("div",{className:"overflow-x-auto",children:(0,s.jsxs)(m.iA,{children:[(0,s.jsx)(m.xD,{children:(0,s.jsxs)(m.SC,{children:[(0,s.jsx)(m.ss,{children:"Name"}),(0,s.jsx)(m.ss,{children:"Key"}),(0,s.jsx)(m.ss,{children:"Role"}),(0,s.jsx)(m.ss,{children:"Created"}),(0,s.jsx)(m.ss,{children:"Last Used"}),(0,s.jsx)(m.ss,{className:"text-right",children:"Actions"})]})}),(0,s.jsx)(m.RM,{children:null==M?void 0:null===(w=M.usersPagination)||void 0===w?void 0:null===(t=w.items)||void 0===t?void 0:t.map(e=>(0,s.jsxs)(m.SC,{children:[(0,s.jsx)(m.pj,{className:"font-medium",children:e.name||e.firstname}),(0,s.jsx)(m.pj,{children:(0,s.jsx)("div",{className:"flex items-center gap-2",children:(0,s.jsx)("code",{className:"bg-muted px-1 py-0.5 rounded text-xs",children:"****************"})})}),(0,s.jsx)(m.pj,{children:(0,s.jsx)("div",{className:"w-48",children:(0,s.jsx)(j.u,{value:e.role,onChange:r=>X(e.id,r),placeholder:"No role assigned"})})}),(0,s.jsx)(m.pj,{children:(0,x.WU)(new Date(e.createdAt),"PP hh:mm")}),(0,s.jsx)(m.pj,{children:e.last_used?(0,x.WU)(new Date(e.last_used),"PP hh:mm"):(0,s.jsx)(g.C,{variant:"outline",className:"text-xs",children:"Never"})}),(0,s.jsx)(m.pj,{className:"text-right",children:(0,s.jsxs)(h.Vq,{open:R===e.id,onOpenChange:r=>{r||_(null),r&&_(e.id)},children:[(0,s.jsx)(h.hg,{asChild:!0,children:(0,s.jsx)(c.z,{variant:"ghost",size:"icon",className:"h-8 w-8 text-red-500 hover:text-red-600 hover:bg-red-50 dark:hover:bg-red-950",children:(0,s.jsx)(d.Z,{className:"h-4 w-4"})})}),(0,s.jsxs)(h.cZ,{children:[(0,s.jsxs)(h.fK,{children:[(0,s.jsx)(h.$N,{children:"Delete API Key"}),(0,s.jsxs)(h.Be,{children:['Are you sure you want to delete the API key "',e.name||e.firstname,'"? This action cannot be undone.']})]}),(0,s.jsxs)(h.cN,{children:[(0,s.jsx)(c.z,{variant:"outline",onClick:()=>_(null),children:"Cancel"}),(0,s.jsx)(c.z,{variant:"destructive",onClick:()=>L(e.id),children:"Delete API Key"})]})]})]})})]},e.id))})]})})}),(0,s.jsx)(f.eW,{className:"text-xs text-muted-foreground border-t pt-4",children:"API keys grant full access to your account. Keep them secure and rotate them regularly."})]})]})}},65613:function(e,r,t){"use strict";t.d(r,{Cd:function(){return d},X:function(){return c},bZ:function(){return o}});var s=t(57437),n=t(90535),a=t(2265),l=t(94508);let i=(0,n.j)("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",{variants:{variant:{default:"bg-background text-foreground",destructive:"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive",info:"border-info/50 text-info dark:border-info [&>svg]:text-info"}},defaultVariants:{variant:"default"}}),o=a.forwardRef((e,r)=>{let{className:t,variant:n,...a}=e;return(0,s.jsx)("div",{ref:r,role:"alert",className:(0,l.cn)(i({variant:n}),t),...a})});o.displayName="Alert";let d=a.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("h5",{ref:r,className:(0,l.cn)("mb-1 font-medium leading-none tracking-tight",t),...n})});d.displayName="AlertTitle";let c=a.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("div",{ref:r,className:(0,l.cn)("text-sm [&_p]:leading-relaxed",t),...n})});c.displayName="AlertDescription"},35974:function(e,r,t){"use strict";t.d(r,{C:function(){return i}});var s=t(57437),n=t(90535);t(2265);var a=t(94508);let l=(0,n.j)("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function i(e){let{className:r,variant:t,...n}=e;return(0,s.jsx)("div",{className:(0,a.cn)(l({variant:t}),r),...n})}},66070:function(e,r,t){"use strict";t.d(r,{Ol:function(){return i},SZ:function(){return d},Zb:function(){return l},aY:function(){return c},eW:function(){return u},ll:function(){return o}});var s=t(57437),n=t(2265),a=t(94508);let l=n.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("div",{ref:r,className:(0,a.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",t),...n})});l.displayName="Card";let i=n.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("div",{ref:r,className:(0,a.cn)("flex flex-col space-y-1.5 p-6",t),...n})});i.displayName="CardHeader";let o=n.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("h3",{ref:r,className:(0,a.cn)("text-2xl font-semibold leading-none tracking-tight",t),...n})});o.displayName="CardTitle";let d=n.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("p",{ref:r,className:(0,a.cn)("text-sm text-muted-foreground",t),...n})});d.displayName="CardDescription";let c=n.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("div",{ref:r,className:(0,a.cn)("p-6 pt-0",t),...n})});c.displayName="CardContent";let u=n.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("div",{ref:r,className:(0,a.cn)("flex items-center p-6 pt-0",t),...n})});u.displayName="CardFooter"},95186:function(e,r,t){"use strict";t.d(r,{I:function(){return l}});var s=t(57437),n=t(2265),a=t(94508);let l=n.forwardRef((e,r)=>{let{className:t,type:n,...l}=e;return(0,s.jsx)("input",{type:n,className:(0,a.cn)("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium 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",t),ref:r,...l})});l.displayName="Input"}},function(e){e.O(0,[9851,7629,7093,6148,847,1942,7823,5799,4567,3825,3702,7107,6399,6373,4386,2971,2117,1744],function(){return e(e.s=69585)}),_N_E=e.O()}]);
|
|
2
|
-
//# sourceMappingURL=page-
|
|
2
|
+
//# sourceMappingURL=page-163aadfe9ad0d794.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static/chunks/app/(application)/keys/page-59ee4e0281131cbc.js","mappings":"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","sources":["webpack://_N_E/ignored|/home/runner/work/exulu-frontend/exulu-frontend/node_modules/bcryptjs|crypto","webpack://_N_E/?ec17","webpack://_N_E/./app/(application)/keys/page.tsx","webpack://_N_E/./components/ui/alert.tsx","webpack://_N_E/./components/ui/badge.tsx","webpack://_N_E/./components/ui/card.tsx","webpack://_N_E/./components/ui/input.tsx"],"sourcesContent":["/* (ignored) */","import(/* webpackMode: \"eager\" */ \"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/keys/page.tsx\");\n","\"use client\"\nimport { useState } from \"react\"\nimport { Copy, Key, Loader2, Plus, Trash2 } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { format } from \"date-fns\"\nimport { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"@/components/ui/table\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/components/ui/dialog\"\nimport { Alert, AlertDescription, AlertTitle } from \"@/components/ui/alert\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { toast } from \"@/components/ui/use-toast\"\nimport { RoleSelector } from \"@/components/ui/role-selector\"\nimport {useMutation, useQuery} from \"@apollo/client\";\nimport {CREATE_API_USER, GET_USERS, REMOVE_USER_BY_ID, UPDATE_USER_BY_ID} from \"@/queries/queries\";\nimport bcrypt from \"bcryptjs\";\nconst SALT_ROUNDS = 12;\n// we dont decrypt, as we only show the key once to the user\n\n// Type for API key\ninterface ApiKey {\n id: string\n name: string\n key: string\n createdAt: Date\n last_used?: Date\n}\n\nexport default function ApiKeyManagement() {\n\n const [newKeyName, setNewKeyName] = useState(\"\")\n const [selectedRole, setSelectedRole] = useState<string>(\"\")\n const [isGenerating, setIsGenerating] = useState(false)\n const [newlyGeneratedKey, setNewlyGeneratedKey] = useState<ApiKey | null>(null)\n const [deleteKeyId, setDeleteKeyId] = useState<string | null>(null)\n\n const { loading, error, data, refetch, previousData } = useQuery(GET_USERS, {\n fetchPolicy: \"cache-first\",\n nextFetchPolicy: \"network-only\",\n variables: {\n page: 1,\n limit: 10,\n filters: [{\n type: { eq: \"api\"}\n }],\n },\n pollInterval: 30000, // polls every 30 seconds for updates on users\n });\n\n console.log(\"data\", data)\n\n // Generate new API key\n const generateApiKey = async () => {\n if (!newKeyName.trim()) {\n toast({\n title: \"Error\",\n description: \"Please enter a name for your API key\",\n variant: \"destructive\",\n })\n return\n }\n\n setIsGenerating(true)\n\n const plainKey = `sk_${Math.random().toString(36).substring(2, 15)}_${Math.random().toString(36).substring(2, 15)}`;\n const postFix = `/${newKeyName.toLowerCase().trim().replaceAll(\" \", \"_\")}`\n const encryptedKey = await bcrypt.hash(plainKey, SALT_ROUNDS);\n const response = await createApiUser({\n variables: {\n firstname: `${newKeyName}`,\n type: \"api\",\n apikey: `${encryptedKey}${postFix}`,\n email: `${encryptedKey}@exulu-api-user.com`,\n role: selectedRole || undefined\n }\n })\n\n console.log(\"response\", response)\n setNewlyGeneratedKey({\n id: `${response.data?.usersCreateOne?.item?.id}`,\n name: newKeyName,\n key: `${plainKey}${postFix}`,\n createdAt: new Date()\n })\n setNewKeyName(\"\")\n setSelectedRole(\"\")\n setIsGenerating(false)\n }\n\n const [removeApiUser, removeApiUserResult] = useMutation(REMOVE_USER_BY_ID, {\n refetchQueries: [\n GET_USERS,\n \"GetUsers\",\n ],\n });\n\n const [ createApiUser, createApiUserResult] = useMutation(CREATE_API_USER, {\n refetchQueries: [\n GET_USERS, \n \"GetUsers\",\n ],\n });\n\n const [ updateUser, updateUserResult] = useMutation(UPDATE_USER_BY_ID, {\n refetchQueries: [\n GET_USERS, \n \"GetUsers\",\n ],\n });\n\n // Copy API key to clipboard\n const copyToClipboard = (text: string) => {\n navigator.clipboard.writeText(text)\n toast({\n title: \"Copied!\",\n description: \"API key copied to clipboard\",\n })\n }\n\n // Delete API key\n const deleteApiKey = async (id: string) => {\n await removeApiUser({\n variables: {\n id\n }\n })\n setDeleteKeyId(null)\n toast({\n title: \"Deleted\",\n description: \"API key has been deleted\",\n })\n }\n\n // Update API key role\n const updateApiKeyRole = async (userId: string, roleId: string) => {\n try {\n await updateUser({\n variables: {\n id: userId,\n role: roleId || null\n }\n })\n toast({\n title: \"Updated\",\n description: \"API key role has been updated\",\n })\n } catch (error) {\n toast({\n title: \"Error\",\n description: \"Failed to update API key role\",\n variant: \"destructive\",\n })\n }\n }\n\n return (\n <div className=\"container mx-auto py-6 space-y-8 max-w-5xl\">\n <div className=\"flex flex-col gap-2\">\n <h1 className=\"text-3xl font-bold tracking-tight\">API Keys</h1>\n <p className=\"text-muted-foreground\">\n Manage your API keys for accessing the Exulu IMP API. Keep your keys secure - they have full access to your account.\n </p>\n </div>\n\n {/* Create new API key */}\n <Card>\n <CardHeader>\n <CardTitle>Create API Key</CardTitle>\n <CardDescription>\n Generate a new API key for your applications. API keys provide full access to your account.\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex flex-col gap-4 sm:flex-row\">\n <Input\n placeholder=\"API Key Name (e.g. Production, Development)\"\n value={newKeyName}\n onChange={(e) => setNewKeyName(e.target.value)}\n className=\"flex-1\"\n />\n <div className=\"sm:w-64\">\n <RoleSelector\n value={selectedRole}\n onChange={setSelectedRole}\n placeholder=\"Select role\"\n />\n </div>\n </div>\n <Button\n onClick={generateApiKey}\n disabled={isGenerating || !newKeyName.trim()}\n className=\"whitespace-nowrap self-start\"\n >\n {isGenerating ? (\n <>\n <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n Generating...\n </>\n ) : (\n <>\n <Plus className=\"mr-2 h-4 w-4\" />\n Generate API Key\n </>\n )}\n </Button>\n </div>\n </CardContent>\n </Card>\n\n {/* Newly generated key alert */}\n {newlyGeneratedKey && (\n <Alert className=\"border-green-500 bg-green-50 dark:bg-green-950 dark:border-green-900\">\n <Key className=\"h-4 w-4 text-green-600 dark:text-green-400\" />\n <AlertTitle className=\"text-green-600 dark:text-green-400\">New API Key Generated</AlertTitle>\n <AlertDescription className=\"mt-4\">\n <div className=\"mb-2 text-sm text-muted-foreground\">\n <strong>Important:</strong> This key will only be displayed once. Please copy it now and store it\n securely.\n </div>\n <div className=\"flex items-center gap-2 mt-2\">\n <code className=\"relative rounded bg-muted px-[0.5rem] py-[0.3rem] font-mono text-sm font-semibold overflow-x-auto max-w-[calc(100%-40px)]\">\n {newlyGeneratedKey.key}\n </code>\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={() => copyToClipboard(newlyGeneratedKey.key)}\n className=\"h-8 w-8 flex-shrink-0\"\n >\n <Copy className=\"h-4 w-4\" />\n </Button>\n </div>\n <Button\n variant=\"link\"\n className=\"mt-2 h-auto p-0 text-green-600 dark:text-green-400\"\n onClick={() => setNewlyGeneratedKey(null)}\n >\n Dismiss\n </Button>\n </AlertDescription>\n </Alert>\n )}\n\n {/* API keys list */}\n <Card>\n <CardHeader>\n <CardTitle>Your API Keys</CardTitle>\n <CardDescription>\n Manage your existing API keys. For security, API keys are never displayed in full after creation.\n </CardDescription>\n </CardHeader>\n <CardContent>\n {data?.usersPagination?.items?.length === 0 ? (\n <div className=\"text-center py-6 text-muted-foreground\">\n No API keys found. Generate your first key above.\n </div>\n ) : (\n <div className=\"overflow-x-auto\">\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>Name</TableHead>\n <TableHead>Key</TableHead>\n <TableHead>Role</TableHead>\n <TableHead>Created</TableHead>\n <TableHead>Last Used</TableHead>\n <TableHead className=\"text-right\">Actions</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {data?.usersPagination?.items?.map((user: any) => (\n <TableRow key={user.id}>\n <TableCell className=\"font-medium\">{user.name || user.firstname}</TableCell>\n <TableCell>\n <div className=\"flex items-center gap-2\">\n <code className=\"bg-muted px-1 py-0.5 rounded text-xs\">****************</code>\n </div>\n </TableCell>\n <TableCell>\n <div className=\"w-48\">\n <RoleSelector\n value={user.role}\n onChange={(roleId) => updateApiKeyRole(user.id, roleId)}\n placeholder=\"No role assigned\"\n />\n </div>\n </TableCell>\n <TableCell>{format(new Date(user.createdAt), \"PP hh:mm\")}</TableCell>\n <TableCell>\n {user.last_used ? (format(new Date(user.last_used), \"PP hh:mm\")) : (\n <Badge variant=\"outline\" className=\"text-xs\">\n Never\n </Badge>\n )}\n </TableCell>\n <TableCell className=\"text-right\">\n <Dialog\n open={deleteKeyId === user.id}\n onOpenChange={(open) => {\n if (!open) setDeleteKeyId(null)\n if (open) setDeleteKeyId(user.id)\n }}>\n <DialogTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 text-red-500 hover:text-red-600 hover:bg-red-50 dark:hover:bg-red-950\"\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </DialogTrigger>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Delete API Key</DialogTitle>\n <DialogDescription>\n Are you sure you want to delete the API key \"{user.name || user.firstname}\"? This action cannot be\n undone.\n </DialogDescription>\n </DialogHeader>\n <DialogFooter>\n <Button variant=\"outline\" onClick={() => setDeleteKeyId(null)}>\n Cancel\n </Button>\n <Button variant=\"destructive\" onClick={() => deleteApiKey(user.id)}>\n Delete API Key\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n )}\n </CardContent>\n <CardFooter className=\"text-xs text-muted-foreground border-t pt-4\">\n API keys grant full access to your account. Keep them secure and rotate them regularly.\n </CardFooter>\n </Card>\n </div>\n )\n}\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","import { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n","import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-lg border bg-card text-card-foreground shadow-sm\",\n className,\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n \"text-2xl font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium 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);\nInput.displayName = \"Input\";\n\nexport { Input };\n"],"names":["Promise","resolve","then","__webpack_require__","bind","ApiKeyManagement","data","newKeyName","setNewKeyName","useState","selectedRole","setSelectedRole","isGenerating","setIsGenerating","newlyGeneratedKey","setNewlyGeneratedKey","deleteKeyId","setDeleteKeyId","loading","error","refetch","previousData","useQuery","GET_USERS","fetchPolicy","nextFetchPolicy","variables","page","limit","filters","type","eq","pollInterval","console","log","generateApiKey","response","trim","toast","title","description","variant","plainKey","Math","random","toString","substring","concat","postFix","toLowerCase","replaceAll","encryptedKey","bcrypt","createApiUser","firstname","apikey","email","role","undefined","id","usersCreateOne","item","name","key","createdAt","Date","removeApiUser","removeApiUserResult","useMutation","REMOVE_USER_BY_ID","refetchQueries","createApiUserResult","CREATE_API_USER","updateUser","updateUserResult","UPDATE_USER_BY_ID","copyToClipboard","navigator","clipboard","writeText","text","deleteApiKey","updateApiKeyRole","userId","roleId","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsxs","div","className","jsx","h1","p","Card","CardHeader","CardTitle","CardDescription","CardContent","Input","placeholder","value","onChange","e","target","RoleSelector","Button","onClick","disabled","Fragment","Loader2","Plus","Alert","Key","AlertTitle","AlertDescription","strong","code","size","Copy","usersPagination","items","length","Table","TableHeader","TableRow","TableHead","TableBody","map","TableCell","user","format","last_used","Badge","Dialog","open","onOpenChange","DialogTrigger","asChild","Trash2","DialogContent","DialogHeader","DialogTitle","DialogDescription","DialogFooter","CardFooter","alertVariants","cva","variants","default","destructive","info","defaultVariants","React","param","ref","props","cn","displayName","h5","badgeVariants","secondary","outline","h3","input"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"static/chunks/app/(application)/keys/page-163aadfe9ad0d794.js","mappings":"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","sources":["webpack://_N_E/ignored|/home/runner/work/exulu-frontend/exulu-frontend/node_modules/bcryptjs|crypto","webpack://_N_E/?ec17","webpack://_N_E/./app/(application)/keys/page.tsx","webpack://_N_E/./components/ui/alert.tsx","webpack://_N_E/./components/ui/badge.tsx","webpack://_N_E/./components/ui/card.tsx","webpack://_N_E/./components/ui/input.tsx"],"sourcesContent":["/* (ignored) */","import(/* webpackMode: \"eager\" */ \"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/keys/page.tsx\");\n","\"use client\"\nimport { useState } from \"react\"\nimport { Copy, Key, Loader2, Plus, Trash2 } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { format } from \"date-fns\"\nimport { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"@/components/ui/table\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/components/ui/dialog\"\nimport { Alert, AlertDescription, AlertTitle } from \"@/components/ui/alert\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { toast } from \"@/components/ui/use-toast\"\nimport { RoleSelector } from \"@/components/ui/role-selector\"\nimport {useMutation, useQuery} from \"@apollo/client\";\nimport {CREATE_API_USER, GET_USERS, REMOVE_USER_BY_ID, UPDATE_USER_BY_ID} from \"@/queries/queries\";\nimport bcrypt from \"bcryptjs\";\nconst SALT_ROUNDS = 12;\n// we dont decrypt, as we only show the key once to the user\n\n// Type for API key\ninterface ApiKey {\n id: string\n name: string\n key: string\n createdAt: Date\n last_used?: Date\n}\n\nexport default function ApiKeyManagement() {\n\n const [newKeyName, setNewKeyName] = useState(\"\")\n const [selectedRole, setSelectedRole] = useState<string>(\"\")\n const [isGenerating, setIsGenerating] = useState(false)\n const [newlyGeneratedKey, setNewlyGeneratedKey] = useState<ApiKey | null>(null)\n const [deleteKeyId, setDeleteKeyId] = useState<string | null>(null)\n\n const { loading, error, data, refetch, previousData } = useQuery(GET_USERS, {\n fetchPolicy: \"cache-first\",\n nextFetchPolicy: \"network-only\",\n variables: {\n page: 1,\n limit: 10,\n filters: [{\n type: { eq: \"api\"}\n }],\n },\n pollInterval: 30000, // polls every 30 seconds for updates on users\n });\n\n console.log(\"data\", data)\n\n // Generate new API key\n const generateApiKey = async () => {\n if (!newKeyName.trim()) {\n toast({\n title: \"Error\",\n description: \"Please enter a name for your API key\",\n variant: \"destructive\",\n })\n return\n }\n\n setIsGenerating(true)\n\n const plainKey = `sk_${Math.random().toString(36).substring(2, 15)}_${Math.random().toString(36).substring(2, 15)}`;\n const postFix = `/${newKeyName.toLowerCase().trim().replaceAll(\" \", \"_\")}`\n const encryptedKey = await bcrypt.hash(plainKey, SALT_ROUNDS);\n const response = await createApiUser({\n variables: {\n firstname: `${newKeyName}`,\n type: \"api\",\n apikey: `${encryptedKey}${postFix}`,\n email: `${encryptedKey}@exulu-api-user.com`,\n role: selectedRole || undefined\n }\n })\n\n console.log(\"response\", response)\n setNewlyGeneratedKey({\n id: `${response.data?.usersCreateOne?.item?.id}`,\n name: newKeyName,\n key: `${plainKey}${postFix}`,\n createdAt: new Date()\n })\n setNewKeyName(\"\")\n setSelectedRole(\"\")\n setIsGenerating(false)\n }\n\n const [removeApiUser, removeApiUserResult] = useMutation(REMOVE_USER_BY_ID, {\n refetchQueries: [\n GET_USERS,\n \"GetUsers\",\n ],\n });\n\n const [ createApiUser, createApiUserResult] = useMutation(CREATE_API_USER, {\n refetchQueries: [\n GET_USERS, \n \"GetUsers\",\n ],\n });\n\n const [ updateUser, updateUserResult] = useMutation(UPDATE_USER_BY_ID, {\n refetchQueries: [\n GET_USERS, \n \"GetUsers\",\n ],\n });\n\n // Copy API key to clipboard\n const copyToClipboard = (text: string) => {\n navigator.clipboard.writeText(text)\n toast({\n title: \"Copied!\",\n description: \"API key copied to clipboard\",\n })\n }\n\n // Delete API key\n const deleteApiKey = async (id: string) => {\n await removeApiUser({\n variables: {\n id\n }\n })\n setDeleteKeyId(null)\n toast({\n title: \"Deleted\",\n description: \"API key has been deleted\",\n })\n }\n\n // Update API key role\n const updateApiKeyRole = async (userId: string, roleId: string) => {\n try {\n await updateUser({\n variables: {\n id: userId,\n role: roleId || null\n }\n })\n toast({\n title: \"Updated\",\n description: \"API key role has been updated\",\n })\n } catch (error) {\n toast({\n title: \"Error\",\n description: \"Failed to update API key role\",\n variant: \"destructive\",\n })\n }\n }\n\n return (\n <div className=\"container mx-auto py-6 space-y-8 max-w-5xl\">\n <div className=\"flex flex-col gap-2\">\n <h1 className=\"text-3xl font-bold tracking-tight\">API Keys</h1>\n <p className=\"text-muted-foreground\">\n Manage your API keys for accessing the Exulu IMP API. Keep your keys secure - they have full access to your account.\n </p>\n </div>\n\n {/* Create new API key */}\n <Card>\n <CardHeader>\n <CardTitle>Create API Key</CardTitle>\n <CardDescription>\n Generate a new API key for your applications. API keys provide full access to your account.\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex flex-col gap-4 sm:flex-row\">\n <Input\n placeholder=\"API Key Name (e.g. Production, Development)\"\n value={newKeyName}\n onChange={(e) => setNewKeyName(e.target.value)}\n className=\"flex-1\"\n />\n <div className=\"sm:w-64\">\n <RoleSelector\n value={selectedRole}\n onChange={setSelectedRole}\n placeholder=\"Select role\"\n />\n </div>\n </div>\n <Button\n onClick={generateApiKey}\n disabled={isGenerating || !newKeyName.trim()}\n className=\"whitespace-nowrap self-start\"\n >\n {isGenerating ? (\n <>\n <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n Generating...\n </>\n ) : (\n <>\n <Plus className=\"mr-2 h-4 w-4\" />\n Generate API Key\n </>\n )}\n </Button>\n </div>\n </CardContent>\n </Card>\n\n {/* Newly generated key alert */}\n {newlyGeneratedKey && (\n <Alert className=\"border-green-500 bg-green-50 dark:bg-green-950 dark:border-green-900\">\n <Key className=\"h-4 w-4 text-green-600 dark:text-green-400\" />\n <AlertTitle className=\"text-green-600 dark:text-green-400\">New API Key Generated</AlertTitle>\n <AlertDescription className=\"mt-4\">\n <div className=\"mb-2 text-sm text-muted-foreground\">\n <strong>Important:</strong> This key will only be displayed once. Please copy it now and store it\n securely.\n </div>\n <div className=\"flex items-center gap-2 mt-2\">\n <code className=\"relative rounded bg-muted px-[0.5rem] py-[0.3rem] font-mono text-sm font-semibold overflow-x-auto max-w-[calc(100%-40px)]\">\n {newlyGeneratedKey.key}\n </code>\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={() => copyToClipboard(newlyGeneratedKey.key)}\n className=\"h-8 w-8 flex-shrink-0\"\n >\n <Copy className=\"h-4 w-4\" />\n </Button>\n </div>\n <Button\n variant=\"link\"\n className=\"mt-2 h-auto p-0 text-green-600 dark:text-green-400\"\n onClick={() => setNewlyGeneratedKey(null)}\n >\n Dismiss\n </Button>\n </AlertDescription>\n </Alert>\n )}\n\n {/* API keys list */}\n <Card>\n <CardHeader>\n <CardTitle>Your API Keys</CardTitle>\n <CardDescription>\n Manage your existing API keys. For security, API keys are never displayed in full after creation.\n </CardDescription>\n </CardHeader>\n <CardContent>\n {data?.usersPagination?.items?.length === 0 ? (\n <div className=\"text-center py-6 text-muted-foreground\">\n No API keys found. Generate your first key above.\n </div>\n ) : (\n <div className=\"overflow-x-auto\">\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>Name</TableHead>\n <TableHead>Key</TableHead>\n <TableHead>Role</TableHead>\n <TableHead>Created</TableHead>\n <TableHead>Last Used</TableHead>\n <TableHead className=\"text-right\">Actions</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {data?.usersPagination?.items?.map((user: any) => (\n <TableRow key={user.id}>\n <TableCell className=\"font-medium\">{user.name || user.firstname}</TableCell>\n <TableCell>\n <div className=\"flex items-center gap-2\">\n <code className=\"bg-muted px-1 py-0.5 rounded text-xs\">****************</code>\n </div>\n </TableCell>\n <TableCell>\n <div className=\"w-48\">\n <RoleSelector\n value={user.role}\n onChange={(roleId) => updateApiKeyRole(user.id, roleId)}\n placeholder=\"No role assigned\"\n />\n </div>\n </TableCell>\n <TableCell>{format(new Date(user.createdAt), \"PP hh:mm\")}</TableCell>\n <TableCell>\n {user.last_used ? (format(new Date(user.last_used), \"PP hh:mm\")) : (\n <Badge variant=\"outline\" className=\"text-xs\">\n Never\n </Badge>\n )}\n </TableCell>\n <TableCell className=\"text-right\">\n <Dialog\n open={deleteKeyId === user.id}\n onOpenChange={(open) => {\n if (!open) setDeleteKeyId(null)\n if (open) setDeleteKeyId(user.id)\n }}>\n <DialogTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 text-red-500 hover:text-red-600 hover:bg-red-50 dark:hover:bg-red-950\"\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </DialogTrigger>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Delete API Key</DialogTitle>\n <DialogDescription>\n Are you sure you want to delete the API key \"{user.name || user.firstname}\"? This action cannot be\n undone.\n </DialogDescription>\n </DialogHeader>\n <DialogFooter>\n <Button variant=\"outline\" onClick={() => setDeleteKeyId(null)}>\n Cancel\n </Button>\n <Button variant=\"destructive\" onClick={() => deleteApiKey(user.id)}>\n Delete API Key\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n )}\n </CardContent>\n <CardFooter className=\"text-xs text-muted-foreground border-t pt-4\">\n API keys grant full access to your account. Keep them secure and rotate them regularly.\n </CardFooter>\n </Card>\n </div>\n )\n}\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","import { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n","import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-lg border bg-card text-card-foreground shadow-sm\",\n className,\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n \"text-2xl font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium 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);\nInput.displayName = \"Input\";\n\nexport { Input };\n"],"names":["Promise","resolve","then","__webpack_require__","bind","ApiKeyManagement","data","newKeyName","setNewKeyName","useState","selectedRole","setSelectedRole","isGenerating","setIsGenerating","newlyGeneratedKey","setNewlyGeneratedKey","deleteKeyId","setDeleteKeyId","loading","error","refetch","previousData","useQuery","GET_USERS","fetchPolicy","nextFetchPolicy","variables","page","limit","filters","type","eq","pollInterval","console","log","generateApiKey","response","trim","toast","title","description","variant","plainKey","Math","random","toString","substring","concat","postFix","toLowerCase","replaceAll","encryptedKey","bcrypt","createApiUser","firstname","apikey","email","role","undefined","id","usersCreateOne","item","name","key","createdAt","Date","removeApiUser","removeApiUserResult","useMutation","REMOVE_USER_BY_ID","refetchQueries","createApiUserResult","CREATE_API_USER","updateUser","updateUserResult","UPDATE_USER_BY_ID","copyToClipboard","navigator","clipboard","writeText","text","deleteApiKey","updateApiKeyRole","userId","roleId","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsxs","div","className","jsx","h1","p","Card","CardHeader","CardTitle","CardDescription","CardContent","Input","placeholder","value","onChange","e","target","RoleSelector","Button","onClick","disabled","Fragment","Loader2","Plus","Alert","Key","AlertTitle","AlertDescription","strong","code","size","Copy","usersPagination","items","length","Table","TableHeader","TableRow","TableHead","TableBody","map","TableCell","user","format","last_used","Badge","Dialog","open","onOpenChange","DialogTrigger","asChild","Trash2","DialogContent","DialogHeader","DialogTitle","DialogDescription","DialogFooter","CardFooter","alertVariants","cva","variants","default","destructive","info","defaultVariants","React","param","ref","props","cn","displayName","h5","badgeVariants","secondary","outline","h3","input"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1049],{5515:function(e,t,r){Promise.resolve().then(r.bind(r,13832)),Promise.resolve().then(r.bind(r,57614)),Promise.resolve().then(r.t.bind(r,47960,23)),Promise.resolve().then(r.bind(r,44045)),Promise.resolve().then(r.bind(r,82798)),Promise.resolve().then(r.bind(r,59556)),Promise.resolve().then(r.t.bind(r,59127,23)),Promise.resolve().then(r.t.bind(r,78985,23)),Promise.resolve().then(r.t.bind(r,38713,23))},57614:function(e,t,r){"use strict";r.d(t,{TanstackQueryClientProvider:function(){return a}});var s=r(57437),n=r(21623),o=r(29827);let i=new n.S,a=e=>{let{children:t}=e;return(0,s.jsx)(o.aH,{client:i,children:t})}},82798:function(e,t,r){"use strict";r.d(t,{ThemeProvider:function(){return o}});var s=r(57437),n=r(78298);function o(e){let{children:t,...r}=e;return(0,s.jsx)(n.f,{...r,defaultTheme:"dark",children:t})}r(2265)},62869:function(e,t,r){"use strict";r.d(t,{d:function(){return d},z:function(){return u}});var s=r(57437),n=r(37053),o=r(90535),i=r(2265),a=r(94508);let d=(0,o.j)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"size-10"}},defaultVariants:{variant:"default",size:"default"}}),u=i.forwardRef((e,t)=>{let{className:r,variant:o,size:i,asChild:u=!1,...c}=e,l=u?n.g7:"button";return(0,s.jsx)(l,{className:(0,a.cn)(d({variant:o,size:i,className:r})),ref:t,...c})});u.displayName="Button"},59556:function(e,t,r){"use strict";r.d(t,{Toaster:function(){return x}});var s=r(57437),n=r(41915),o=r(90535),i=r(32489),a=r(2265),d=r(94508);let u=n.zt,c=a.forwardRef((e,t)=>{let{className:r,...o}=e;return(0,s.jsx)(n.l_,{ref:t,className:(0,d.cn)("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",r),...o})});c.displayName=n.l_.displayName;let l=(0,o.j)("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),f=a.forwardRef((e,t)=>{let{className:r,variant:o,...i}=e;return(0,s.jsx)(n.fC,{ref:t,className:(0,d.cn)(l({variant:o}),r),...i})});f.displayName=n.fC.displayName,a.forwardRef((e,t)=>{let{className:r,...o}=e;return(0,s.jsx)(n.aU,{ref:t,className:(0,d.cn)("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",r),...o})}).displayName=n.aU.displayName;let p=a.forwardRef((e,t)=>{let{className:r,...o}=e;return(0,s.jsx)(n.x8,{ref:t,className:(0,d.cn)("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",r),"toast-close":"",...o,children:(0,s.jsx)(i.Z,{className:"size-4"})})});p.displayName=n.x8.displayName;let m=a.forwardRef((e,t)=>{let{className:r,...o}=e;return(0,s.jsx)(n.Dx,{ref:t,className:(0,d.cn)("text-sm font-semibold",r),...o})});m.displayName=n.Dx.displayName;let v=a.forwardRef((e,t)=>{let{className:r,...o}=e;return(0,s.jsx)(n.dk,{ref:t,className:(0,d.cn)("text-sm opacity-90",r),...o})});v.displayName=n.dk.displayName;var g=r(77992);function x(){let{toasts:e}=(0,g.pm)();return(0,s.jsxs)(u,{children:[e.map(function(e){let{id:t,title:r,description:n,action:o,...i}=e;return(0,s.jsxs)(f,{...i,children:[(0,s.jsxs)("div",{className:"grid gap-1",children:[r&&(0,s.jsx)(m,{children:r}),n&&(0,s.jsx)(v,{children:n})]}),o,(0,s.jsx)(p,{})]},t)}),(0,s.jsx)(c,{})]})}},77992:function(e,t,r){"use strict";r.d(t,{Am:function(){return l},pm:function(){return f}});var s=r(2265);let n=0,o=new Map,i=e=>{if(o.has(e))return;let t=setTimeout(()=>{o.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);o.set(e,t)},a=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:r}=t;return r?i(r):e.toasts.forEach(e=>{i(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===r||void 0===r?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},d=[],u={toasts:[]};function c(e){u=a(u,e),d.forEach(e=>{e(u)})}function l(e){let{...t}=e,r=(n=(n+1)%Number.MAX_SAFE_INTEGER).toString(),s=()=>c({type:"DISMISS_TOAST",toastId:r});return c({type:"ADD_TOAST",toast:{...t,id:r,open:!0,onOpenChange:e=>{e||s()}}}),{id:r,dismiss:s,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:r}})}}function f(){let[e,t]=s.useState(u);return s.useEffect(()=>(d.push(t),()=>{let e=d.indexOf(t);e>-1&&d.splice(e,1)}),[e]),{...e,toast:l,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},94508:function(e,t,r){"use strict";r.d(t,{cn:function(){return o}});var s=r(61994),n=r(53335);function o(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,n.m6)((0,s.W)(t))}},47960:function(){}},function(e){e.O(0,[3587,3277,9851,7629,6148,847,7648,7823,8068,5799,4567,605,85,4957,
|
|
2
|
-
//# sourceMappingURL=layout-
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1049],{5515:function(e,t,r){Promise.resolve().then(r.bind(r,13832)),Promise.resolve().then(r.bind(r,57614)),Promise.resolve().then(r.t.bind(r,47960,23)),Promise.resolve().then(r.bind(r,44045)),Promise.resolve().then(r.bind(r,82798)),Promise.resolve().then(r.bind(r,59556)),Promise.resolve().then(r.t.bind(r,59127,23)),Promise.resolve().then(r.t.bind(r,78985,23)),Promise.resolve().then(r.t.bind(r,38713,23))},57614:function(e,t,r){"use strict";r.d(t,{TanstackQueryClientProvider:function(){return a}});var s=r(57437),n=r(21623),o=r(29827);let i=new n.S,a=e=>{let{children:t}=e;return(0,s.jsx)(o.aH,{client:i,children:t})}},82798:function(e,t,r){"use strict";r.d(t,{ThemeProvider:function(){return o}});var s=r(57437),n=r(78298);function o(e){let{children:t,...r}=e;return(0,s.jsx)(n.f,{...r,defaultTheme:"dark",children:t})}r(2265)},62869:function(e,t,r){"use strict";r.d(t,{d:function(){return d},z:function(){return u}});var s=r(57437),n=r(37053),o=r(90535),i=r(2265),a=r(94508);let d=(0,o.j)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"size-10"}},defaultVariants:{variant:"default",size:"default"}}),u=i.forwardRef((e,t)=>{let{className:r,variant:o,size:i,asChild:u=!1,...c}=e,l=u?n.g7:"button";return(0,s.jsx)(l,{className:(0,a.cn)(d({variant:o,size:i,className:r})),ref:t,...c})});u.displayName="Button"},59556:function(e,t,r){"use strict";r.d(t,{Toaster:function(){return x}});var s=r(57437),n=r(41915),o=r(90535),i=r(32489),a=r(2265),d=r(94508);let u=n.zt,c=a.forwardRef((e,t)=>{let{className:r,...o}=e;return(0,s.jsx)(n.l_,{ref:t,className:(0,d.cn)("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",r),...o})});c.displayName=n.l_.displayName;let l=(0,o.j)("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),f=a.forwardRef((e,t)=>{let{className:r,variant:o,...i}=e;return(0,s.jsx)(n.fC,{ref:t,className:(0,d.cn)(l({variant:o}),r),...i})});f.displayName=n.fC.displayName,a.forwardRef((e,t)=>{let{className:r,...o}=e;return(0,s.jsx)(n.aU,{ref:t,className:(0,d.cn)("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",r),...o})}).displayName=n.aU.displayName;let p=a.forwardRef((e,t)=>{let{className:r,...o}=e;return(0,s.jsx)(n.x8,{ref:t,className:(0,d.cn)("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",r),"toast-close":"",...o,children:(0,s.jsx)(i.Z,{className:"size-4"})})});p.displayName=n.x8.displayName;let m=a.forwardRef((e,t)=>{let{className:r,...o}=e;return(0,s.jsx)(n.Dx,{ref:t,className:(0,d.cn)("text-sm font-semibold",r),...o})});m.displayName=n.Dx.displayName;let v=a.forwardRef((e,t)=>{let{className:r,...o}=e;return(0,s.jsx)(n.dk,{ref:t,className:(0,d.cn)("text-sm opacity-90",r),...o})});v.displayName=n.dk.displayName;var g=r(77992);function x(){let{toasts:e}=(0,g.pm)();return(0,s.jsxs)(u,{children:[e.map(function(e){let{id:t,title:r,description:n,action:o,...i}=e;return(0,s.jsxs)(f,{...i,children:[(0,s.jsxs)("div",{className:"grid gap-1",children:[r&&(0,s.jsx)(m,{children:r}),n&&(0,s.jsx)(v,{children:n})]}),o,(0,s.jsx)(p,{})]},t)}),(0,s.jsx)(c,{})]})}},77992:function(e,t,r){"use strict";r.d(t,{Am:function(){return l},pm:function(){return f}});var s=r(2265);let n=0,o=new Map,i=e=>{if(o.has(e))return;let t=setTimeout(()=>{o.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);o.set(e,t)},a=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:r}=t;return r?i(r):e.toasts.forEach(e=>{i(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===r||void 0===r?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},d=[],u={toasts:[]};function c(e){u=a(u,e),d.forEach(e=>{e(u)})}function l(e){let{...t}=e,r=(n=(n+1)%Number.MAX_SAFE_INTEGER).toString(),s=()=>c({type:"DISMISS_TOAST",toastId:r});return c({type:"ADD_TOAST",toast:{...t,id:r,open:!0,onOpenChange:e=>{e||s()}}}),{id:r,dismiss:s,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:r}})}}function f(){let[e,t]=s.useState(u);return s.useEffect(()=>(d.push(t),()=>{let e=d.indexOf(t);e>-1&&d.splice(e,1)}),[e]),{...e,toast:l,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},94508:function(e,t,r){"use strict";r.d(t,{cn:function(){return o}});var s=r(61994),n=r(53335);function o(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,n.m6)((0,s.W)(t))}},47960:function(){}},function(e){e.O(0,[3587,3277,9851,7629,6148,847,7648,7823,8068,5799,4567,605,85,4957,5243,6111,3832,2971,2117,1744],function(){return e(e.s=5515)}),_N_E=e.O()}]);
|
|
2
|
+
//# sourceMappingURL=layout-694c53aca85ef437.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static/chunks/app/(application)/layout-73d93420d0c6661c.js","mappings":"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","sources":["webpack://_N_E/?140c","webpack://_N_E/./app/(application)/query-client.tsx","webpack://_N_E/./components/theme-provider.tsx","webpack://_N_E/./components/ui/button.tsx","webpack://_N_E/./components/ui/toast.tsx","webpack://_N_E/./components/ui/toaster.tsx","webpack://_N_E/./components/ui/use-toast.ts","webpack://_N_E/./lib/utils.ts","webpack://_N_E/./app/globals.css"],"sourcesContent":["import(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/authenticated.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"TanstackQueryClientProvider\"] */ \"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/query-client.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/runner/work/exulu-frontend/exulu-frontend/app/globals.css\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"ConfigContextProvider\"] */ \"/home/runner/work/exulu-frontend/exulu-frontend/components/config-context.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"ThemeProvider\"] */ \"/home/runner/work/exulu-frontend/exulu-frontend/components/theme-provider.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"Toaster\"] */ \"/home/runner/work/exulu-frontend/exulu-frontend/components/ui/toaster.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/runner/work/exulu-frontend/exulu-frontend/node_modules/next/font/local/target.css?{\\\"path\\\":\\\"lib/fonts.ts\\\",\\\"import\\\":\\\"\\\",\\\"arguments\\\":[{\\\"src\\\":[{\\\"path\\\":\\\"../public/fonts/Inter-Light.woff2\\\",\\\"weight\\\":\\\"300\\\",\\\"style\\\":\\\"normal\\\"},{\\\"path\\\":\\\"../public/fonts/Inter-Regular.woff2\\\",\\\"weight\\\":\\\"400\\\",\\\"style\\\":\\\"normal\\\"},{\\\"path\\\":\\\"../public/fonts/Inter-Bold.woff2\\\",\\\"weight\\\":\\\"700\\\",\\\"style\\\":\\\"normal\\\"}],\\\"variable\\\":\\\"--font-sans\\\",\\\"display\\\":\\\"swap\\\"}],\\\"variableName\\\":\\\"inter\\\"}\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/runner/work/exulu-frontend/exulu-frontend/node_modules/next/font/local/target.css?{\\\"path\\\":\\\"lib/fonts.ts\\\",\\\"import\\\":\\\"\\\",\\\"arguments\\\":[{\\\"src\\\":\\\"../public/fonts/JetBrainsMono-Regular.woff2\\\",\\\"variable\\\":\\\"--font-mono\\\",\\\"display\\\":\\\"swap\\\"}],\\\"variableName\\\":\\\"jetbrainsMono\\\"}\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/runner/work/exulu-frontend/exulu-frontend/node_modules/next/font/local/target.css?{\\\"path\\\":\\\"lib/fonts.ts\\\",\\\"import\\\":\\\"\\\",\\\"arguments\\\":[{\\\"src\\\":\\\"../public/fonts/Merriweather-Regular.woff2\\\",\\\"variable\\\":\\\"--font-serif\\\",\\\"display\\\":\\\"swap\\\"}],\\\"variableName\\\":\\\"merriweather\\\"}\");\n","\"use client\";\n\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\n\nconst queryClient = new QueryClient();\n\nexport const TanstackQueryClientProvider = ({ children }: any) => {\n return (\n <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>\n );\n};\n","\"use client\";\n\nimport { ThemeProvider as NextThemesProvider } from \"next-themes\";\nimport { type ThemeProviderProps } from \"next-themes/dist/types\";\nimport * as React from \"react\";\n\nexport function ThemeProvider({ children, ...props }: ThemeProviderProps) {\n return (\n <NextThemesProvider {...props} defaultTheme={\"dark\"}>\n {children}\n </NextThemesProvider>\n );\n}\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n },\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","\"use client\";\n\nimport * as ToastPrimitives from \"@radix-ui/react-toast\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst ToastProvider = ToastPrimitives.Provider;\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n \"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]\",\n className,\n )}\n {...props}\n />\n));\nToastViewport.displayName = ToastPrimitives.Viewport.displayName;\n\nconst toastVariants = cva(\n \"group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\n {\n variants: {\n variant: {\n default: \"border bg-background text-foreground\",\n destructive:\n \"destructive group border-destructive bg-destructive text-destructive-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nconst Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n VariantProps<typeof toastVariants>\n>(({ className, variant, ...props }, ref) => {\n return (\n <ToastPrimitives.Root\n ref={ref}\n className={cn(toastVariants({ variant }), className)}\n {...props}\n />\n );\n});\nToast.displayName = ToastPrimitives.Root.displayName;\n\nconst ToastAction = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Action\n ref={ref}\n className={cn(\n \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive\",\n className,\n )}\n {...props}\n />\n));\nToastAction.displayName = ToastPrimitives.Action.displayName;\n\nconst ToastClose = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Close\n ref={ref}\n className={cn(\n \"absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600\",\n className,\n )}\n toast-close=\"\"\n {...props}\n >\n <X className=\"size-4\" />\n </ToastPrimitives.Close>\n));\nToastClose.displayName = ToastPrimitives.Close.displayName;\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Title\n ref={ref}\n className={cn(\"text-sm font-semibold\", className)}\n {...props}\n />\n));\nToastTitle.displayName = ToastPrimitives.Title.displayName;\n\nconst ToastDescription = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description\n ref={ref}\n className={cn(\"text-sm opacity-90\", className)}\n {...props}\n />\n));\nToastDescription.displayName = ToastPrimitives.Description.displayName;\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>;\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>;\n\nexport {\n type ToastProps,\n type ToastActionElement,\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastClose,\n ToastAction,\n};\n","\"use client\";\n\nimport {\n Toast,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n} from \"@/components/ui/toast\";\nimport { useToast } from \"@/components/ui/use-toast\";\n\nexport function Toaster() {\n const { toasts } = useToast();\n\n return (\n <ToastProvider>\n {toasts.map(function ({ id, title, description, action, ...props }) {\n return (\n <Toast key={id} {...props}>\n <div className=\"grid gap-1\">\n {title && <ToastTitle>{title}</ToastTitle>}\n {description && (\n <ToastDescription>{description}</ToastDescription>\n )}\n </div>\n {action}\n <ToastClose />\n </Toast>\n );\n })}\n <ToastViewport />\n </ToastProvider>\n );\n}\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 { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport function formatDuration(seconds: number): string {\n if (!seconds) return '0s';\n \n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor((seconds % 3600) / 60);\n const remainingSeconds = Math.round(seconds % 60);\n\n if (hours > 0) {\n return `${hours}h ${minutes}m`;\n } else if (minutes > 0) {\n return `${minutes}m ${remainingSeconds}s`;\n } else {\n return `${remainingSeconds}s`;\n }\n}","// extracted by mini-css-extract-plugin"],"names":["Promise","resolve","then","__webpack_require__","bind","t","queryClient","QueryClient","TanstackQueryClientProvider","children","param","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","QueryClientProvider","client","ThemeProvider","props","NextThemesProvider","defaultTheme","buttonVariants","cva","variants","variant","default","destructive","outline","secondary","ghost","link","size","sm","lg","icon","defaultVariants","Button","React","ref","className","asChild","Comp","Slot","cn","displayName","ToastProvider","ToastPrimitives","ToastViewport","jsx_runtime","toastVariants","Toast","ToastAction","ToastClose","toast-close","X","ToastTitle","ToastDescription","Toaster","toasts","useToast","jsxs","map","id","title","description","action","div","count","toastTimeouts","Map","addToRemoveQueue","has","toastId","timeout","setTimeout","delete","dispatch","type","set","reducer","state","toast","slice","forEach","undefined","open","filter","listeners","memoryState","listener","Number","MAX_SAFE_INTEGER","toString","dismiss","onOpenChange","update","setState","push","index","indexOf","splice","_len","arguments","length","inputs","_key","twMerge","clsx"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"static/chunks/app/(application)/layout-694c53aca85ef437.js","mappings":"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","sources":["webpack://_N_E/?140c","webpack://_N_E/./app/(application)/query-client.tsx","webpack://_N_E/./components/theme-provider.tsx","webpack://_N_E/./components/ui/button.tsx","webpack://_N_E/./components/ui/toast.tsx","webpack://_N_E/./components/ui/toaster.tsx","webpack://_N_E/./components/ui/use-toast.ts","webpack://_N_E/./lib/utils.ts","webpack://_N_E/./app/globals.css"],"sourcesContent":["import(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/authenticated.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"TanstackQueryClientProvider\"] */ \"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/query-client.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/runner/work/exulu-frontend/exulu-frontend/app/globals.css\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"ConfigContextProvider\"] */ \"/home/runner/work/exulu-frontend/exulu-frontend/components/config-context.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"ThemeProvider\"] */ \"/home/runner/work/exulu-frontend/exulu-frontend/components/theme-provider.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"Toaster\"] */ \"/home/runner/work/exulu-frontend/exulu-frontend/components/ui/toaster.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/runner/work/exulu-frontend/exulu-frontend/node_modules/next/font/local/target.css?{\\\"path\\\":\\\"lib/fonts.ts\\\",\\\"import\\\":\\\"\\\",\\\"arguments\\\":[{\\\"src\\\":[{\\\"path\\\":\\\"../public/fonts/Inter-Light.woff2\\\",\\\"weight\\\":\\\"300\\\",\\\"style\\\":\\\"normal\\\"},{\\\"path\\\":\\\"../public/fonts/Inter-Regular.woff2\\\",\\\"weight\\\":\\\"400\\\",\\\"style\\\":\\\"normal\\\"},{\\\"path\\\":\\\"../public/fonts/Inter-Bold.woff2\\\",\\\"weight\\\":\\\"700\\\",\\\"style\\\":\\\"normal\\\"}],\\\"variable\\\":\\\"--font-sans\\\",\\\"display\\\":\\\"swap\\\"}],\\\"variableName\\\":\\\"inter\\\"}\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/runner/work/exulu-frontend/exulu-frontend/node_modules/next/font/local/target.css?{\\\"path\\\":\\\"lib/fonts.ts\\\",\\\"import\\\":\\\"\\\",\\\"arguments\\\":[{\\\"src\\\":\\\"../public/fonts/JetBrainsMono-Regular.woff2\\\",\\\"variable\\\":\\\"--font-mono\\\",\\\"display\\\":\\\"swap\\\"}],\\\"variableName\\\":\\\"jetbrainsMono\\\"}\");\n;\nimport(/* webpackMode: \"eager\" */ \"/home/runner/work/exulu-frontend/exulu-frontend/node_modules/next/font/local/target.css?{\\\"path\\\":\\\"lib/fonts.ts\\\",\\\"import\\\":\\\"\\\",\\\"arguments\\\":[{\\\"src\\\":\\\"../public/fonts/Merriweather-Regular.woff2\\\",\\\"variable\\\":\\\"--font-serif\\\",\\\"display\\\":\\\"swap\\\"}],\\\"variableName\\\":\\\"merriweather\\\"}\");\n","\"use client\";\n\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\n\nconst queryClient = new QueryClient();\n\nexport const TanstackQueryClientProvider = ({ children }: any) => {\n return (\n <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>\n );\n};\n","\"use client\";\n\nimport { ThemeProvider as NextThemesProvider } from \"next-themes\";\nimport { type ThemeProviderProps } from \"next-themes/dist/types\";\nimport * as React from \"react\";\n\nexport function ThemeProvider({ children, ...props }: ThemeProviderProps) {\n return (\n <NextThemesProvider {...props} defaultTheme={\"dark\"}>\n {children}\n </NextThemesProvider>\n );\n}\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n },\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","\"use client\";\n\nimport * as ToastPrimitives from \"@radix-ui/react-toast\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst ToastProvider = ToastPrimitives.Provider;\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n \"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]\",\n className,\n )}\n {...props}\n />\n));\nToastViewport.displayName = ToastPrimitives.Viewport.displayName;\n\nconst toastVariants = cva(\n \"group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\n {\n variants: {\n variant: {\n default: \"border bg-background text-foreground\",\n destructive:\n \"destructive group border-destructive bg-destructive text-destructive-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nconst Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n VariantProps<typeof toastVariants>\n>(({ className, variant, ...props }, ref) => {\n return (\n <ToastPrimitives.Root\n ref={ref}\n className={cn(toastVariants({ variant }), className)}\n {...props}\n />\n );\n});\nToast.displayName = ToastPrimitives.Root.displayName;\n\nconst ToastAction = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Action\n ref={ref}\n className={cn(\n \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive\",\n className,\n )}\n {...props}\n />\n));\nToastAction.displayName = ToastPrimitives.Action.displayName;\n\nconst ToastClose = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Close\n ref={ref}\n className={cn(\n \"absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600\",\n className,\n )}\n toast-close=\"\"\n {...props}\n >\n <X className=\"size-4\" />\n </ToastPrimitives.Close>\n));\nToastClose.displayName = ToastPrimitives.Close.displayName;\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Title\n ref={ref}\n className={cn(\"text-sm font-semibold\", className)}\n {...props}\n />\n));\nToastTitle.displayName = ToastPrimitives.Title.displayName;\n\nconst ToastDescription = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description\n ref={ref}\n className={cn(\"text-sm opacity-90\", className)}\n {...props}\n />\n));\nToastDescription.displayName = ToastPrimitives.Description.displayName;\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>;\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>;\n\nexport {\n type ToastProps,\n type ToastActionElement,\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastClose,\n ToastAction,\n};\n","\"use client\";\n\nimport {\n Toast,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n} from \"@/components/ui/toast\";\nimport { useToast } from \"@/components/ui/use-toast\";\n\nexport function Toaster() {\n const { toasts } = useToast();\n\n return (\n <ToastProvider>\n {toasts.map(function ({ id, title, description, action, ...props }) {\n return (\n <Toast key={id} {...props}>\n <div className=\"grid gap-1\">\n {title && <ToastTitle>{title}</ToastTitle>}\n {description && (\n <ToastDescription>{description}</ToastDescription>\n )}\n </div>\n {action}\n <ToastClose />\n </Toast>\n );\n })}\n <ToastViewport />\n </ToastProvider>\n );\n}\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 { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport function formatDuration(seconds: number): string {\n if (!seconds) return '0s';\n \n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor((seconds % 3600) / 60);\n const remainingSeconds = Math.round(seconds % 60);\n\n if (hours > 0) {\n return `${hours}h ${minutes}m`;\n } else if (minutes > 0) {\n return `${minutes}m ${remainingSeconds}s`;\n } else {\n return `${remainingSeconds}s`;\n }\n}","// extracted by mini-css-extract-plugin"],"names":["Promise","resolve","then","__webpack_require__","bind","t","queryClient","QueryClient","TanstackQueryClientProvider","children","param","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","QueryClientProvider","client","ThemeProvider","props","NextThemesProvider","defaultTheme","buttonVariants","cva","variants","variant","default","destructive","outline","secondary","ghost","link","size","sm","lg","icon","defaultVariants","Button","React","ref","className","asChild","Comp","Slot","cn","displayName","ToastProvider","ToastPrimitives","ToastViewport","jsx_runtime","toastVariants","Toast","ToastAction","ToastClose","toast-close","X","ToastTitle","ToastDescription","Toaster","toasts","useToast","jsxs","map","id","title","description","action","div","count","toastTimeouts","Map","addToRemoveQueue","has","toastId","timeout","setTimeout","delete","dispatch","type","set","reducer","state","toast","slice","forEach","undefined","open","filter","listeners","memoryState","listener","Number","MAX_SAFE_INTEGER","toString","dismiss","onOpenChange","update","setState","push","index","indexOf","splice","_len","arguments","length","inputs","_key","twMerge","clsx"],"sourceRoot":""}
|
package/dist/.next/static/chunks/app/(application)/projects/[project]/page-e69828fde85c50af.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[806],{62839:function(e,s,i){Promise.resolve().then(i.bind(i,56779))},56779:function(e,s,i){"use strict";i.r(s),i.d(s,{default:function(){return K}});var t=i(57437),a=i(2265),l=i(99376),r=i(12199),n=i(7211),d=i(63251),c=i(27689),o=i(62869),m=i(95186),x=i(26815),h=i(76818),u=i(66070),j=i(35974),p=i(26110),v=i(19060),f=i(10866),g=i(68113),N=i(53417),y=i(88906),b=i(45675),w=i(99397),C=i(66412),S=i(18930),k=i(63639),Z=i(73247),_=i(82222),P=i(8014),z=i(93022),R=i(77992),I=i(10492),A=i(87393),B=i(13832),Y=i(27648),E=i(81103),O=i(78361),M=i(36399),D=i(18826),F=i(23518);let L=e=>{var s;let{onConfirm:i}=e,{data:l,loading:r,error:n}=(0,M.t)(),[d,c]=(0,a.useState)(void 0),[m,x]=(0,a.useState)(!1);return(0,t.jsxs)(p.Vq,{open:m,onOpenChange:e=>{x(e),c(void 0)},children:[(0,t.jsx)(p.hg,{asChild:!0,children:(0,t.jsxs)(o.z,{className:"w-full",variant:"outline",children:[(0,t.jsx)(D.Z,{className:"h-4 w-4 mr-2"}),"Select items from knowledge sources to add to the project, or upload files."]})}),(0,t.jsxs)(p.cZ,{className:"sm:max-w-[900px]",children:[(0,t.jsxs)(p.fK,{children:[(0,t.jsx)(p.$N,{children:"Item selection"}),(0,t.jsx)(p.Be,{children:"Browse through contexts and select items."})]}),!d&&(0,t.jsxs)(F.mY,{className:"rounded-lg border shadow-md md:min-w-[450px]",children:[(0,t.jsx)(F.sZ,{placeholder:"Type a command or search..."}),(0,t.jsxs)(F.e8,{children:[(0,t.jsx)(F.rb,{children:"No results found."}),(0,t.jsx)(F.fu,{heading:"Contexts",children:null==l?void 0:null===(s=l.contexts)||void 0===s?void 0:s.items.map(e=>(0,t.jsx)(F.di,{onSelect:()=>{c(e)},children:e.name},e.id))})]})]}),d&&(0,t.jsx)(V,{context:d,onConfirm:e=>{console.log("item",e),i([{item:e,context:d}]),x(!1)}})]})]})},V=e=>{var s,i,l,r,d;let{context:o,onConfirm:m}=e,[x,h]=(0,a.useState)(void 0),{loading:u,data:j,refetch:p,previousData:v,error:f}=(0,n.aM)((0,c.P3)(o.id,[]),{fetchPolicy:"no-cache",nextFetchPolicy:"network-only",skip:!o.id,variables:{context:o.id,page:1,limit:10,sort:{field:"updatedAt",direction:"DESC"},filters:{archived:{ne:!0},...x?{name:{contains:"".concat(x)}}:{}}}});return(0,t.jsxs)(F.mY,{className:"rounded-lg border shadow-md md:min-w-[450px]",children:[(0,t.jsx)(F.sZ,{onValueChange:e=>h(e),placeholder:"Type a command or search..."}),(0,t.jsx)(F.e8,{children:(0,t.jsxs)(F.fu,{heading:"Items",children:[!v&&u&&(0,t.jsx)(F.di,{children:(0,t.jsx)(I.g,{})},"loading"),!u&&!(null==j?void 0:null===(i=j[o.id+c.Md])||void 0===i?void 0:null===(s=i.items)||void 0===s?void 0:s.length)&&(0,t.jsx)(F.rb,{children:"No items found."}),null===(d=j||v)||void 0===d?void 0:null===(r=d[o.id+c.Md])||void 0===r?void 0:null===(l=r.items)||void 0===l?void 0:l.map(e=>(0,t.jsx)(F.di,{onSelect:()=>{m(e)},children:e.name},e.id))]})})]})};var U=i(6374);function q(e){var s,i,O,M,D,F,V,q;let{project:X}=e,[J,K]=(0,a.useState)(!1),[T,W]=(0,a.useState)(!1),[$,G]=(0,a.useState)(!1),[H,ee]=(0,a.useState)(""),[es,ei]=(0,a.useState)("overview"),{user:et}=(0,a.useContext)(B.S),ea=(0,l.useRouter)(),[el,er]=(0,a.useState)({deleteItems:!1,deleteSessions:!1}),[en,ed]=(0,a.useState)({name:X.name||"",description:X.description||"",custom_instructions:X.custom_instructions||""}),{toast:ec}=(0,R.pm)(),[eo,em]=(0,a.useState)({rights_mode:X.rights_mode,users:null===(s=X.RBAC)||void 0===s?void 0:s.users,roles:null===(i=X.RBAC)||void 0===i?void 0:i.roles,projects:null===(O=X.RBAC)||void 0===O?void 0:O.projects}),[ex,eh]=(0,a.useState)(X.project_items||[]),[eu,{loading:ej}]=(0,r.D)(c.b2),[ep]=(0,r.D)(c.Yr),[ev,ef]=(0,a.useState)(!1),{data:eg,loading:eN,refetch:ey}=(0,n.aM)(c.GJ,{variables:{page:1,limit:50,filters:[{project:{eq:X.id}}]}}),{data:eb,loading:ew}=(0,n.aM)(c.ym,{variables:{page:1,limit:100,filters:[],sort:{field:"updatedAt",direction:"DESC"}}}),eC=(0,d.x)(),[eS,{loading:ek}]=(0,r.D)(c.fB),[eZ,{loading:e_}]=(0,r.D)(c.MU),[eP,{loading:ez}]=(0,r.D)(c.S9),eR=(null==eg?void 0:null===(M=eg.agent_sessionsPagination)||void 0===M?void 0:M.items)||[],eI=(null==eb?void 0:null===(D=eb.agentsPagination)||void 0===D?void 0:D.items)||[],eA=a.useMemo(()=>H?eI.filter(e=>e.name.toLowerCase().includes(H.toLowerCase())):eI,[eI,H]),eB=async()=>{if(!en.name.trim()){ec({title:"Validation Error",description:"Project name is required.",variant:"destructive"});return}try{await eu({variables:{id:X.id,input:{name:en.name.trim(),description:en.description.trim()||null,custom_instructions:en.custom_instructions.trim()||null}}}),ec({title:"Success",description:"Project updated successfully!"}),K(!1)}catch(e){console.error("Error updating project:",e),ec({title:"Error",description:e.message||"Failed to update project. Please try again.",variant:"destructive"})}},eY=async e=>{try{var s,i,t;let a=await eS({variables:{title:"New session with ".concat(e.name),agent:e.id,project:X.id,rights_mode:"projects",RBAC:{projects:[{id:X.id,rights:"read"}]}}}),l=null===(t=a.data)||void 0===t?void 0:null===(i=t.agent_sessionsCreateOne)||void 0===i?void 0:null===(s=i.item)||void 0===s?void 0:s.id;l&&(ec({title:"Success",description:"Session created successfully! Sessions started in a project are accessible for viewing by project members."}),G(!1),ee(""),ea.push("/chat/".concat(e.id,"/").concat(l)))}catch(e){console.error("Error creating session:",e),ec({title:"Error",description:e.message||"Failed to create session. Please try again.",variant:"destructive"})}},eE=async()=>{try{ef(!0),el.deleteItems&&await Promise.all(ex.map(async e=>{var s,i;let t=e.split("/")[0],a=e.split("/")[1];if(!t||!a)return;let{data:l}=await eC.mutate({mutation:(0,c.mN)(t,"files_default_context"===t?["s3key"]:[]),variables:{id:a}});if(null===(s=l["".concat(t,"_itemsRemoveOneById")])||void 0===s?void 0:s.s3key)try{await U.QZ.delete(null===(i=l["".concat(t,"_itemsRemoveOneById")])||void 0===i?void 0:i.s3key)}catch(e){console.error("[EXULU] Error deleting file from s3 storage:",e)}})),await Promise.all(eR.map(async e=>{el.deleteSessions?await eP({variables:{id:e.id}}):await eZ({variables:{id:e.id,project:null}})})),await ep({variables:{id:X.id}}),ec({title:"Success",description:'Project "'.concat(X.name,'" has been deleted successfully.')}),W(!1),ef(!1),ea.push("/projects")}catch(e){ef(!1),console.error("Error deleting project:",e),ec({title:"Error",description:e.message||"Failed to delete project. Please try again.",variant:"destructive"})}};return(0,t.jsxs)("div",{className:"flex-1 p-6 mt-20",children:[(0,t.jsx)("div",{className:"max-w-5xl mx-auto space-y-6",children:(0,t.jsxs)("div",{className:"flex gap-6 h-full",children:[(0,t.jsxs)("div",{className:"w-80 space-y-4",children:[(0,t.jsx)(u.Zb,{children:(0,t.jsx)(u.aY,{className:"p-4",children:(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)("h3",{className:"font-semibold text-lg",children:X.name}),(0,t.jsx)("p",{className:"text-muted-foreground text-sm leading-relaxed",children:X.description||"No description provided."})]})})}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)(o.z,{variant:"overview"===es?"default":"ghost",className:"w-full justify-start",onClick:()=>ei("overview"),children:[(0,t.jsx)(f.Z,{className:"h-4 w-4 mr-2"}),"Project information"]}),(0,t.jsxs)(o.z,{variant:"context"===es?"default":"ghost",className:"w-full justify-start",onClick:()=>ei("context"),children:[(0,t.jsx)(g.Z,{className:"h-4 w-4 mr-2"}),"Project files"]}),(0,t.jsxs)(o.z,{variant:"sessions"===es?"default":"ghost",className:"w-full justify-start",onClick:()=>ei("sessions"),children:[(0,t.jsx)(N.Z,{className:"h-4 w-4 mr-2"}),"Project sessions"]}),(0,t.jsxs)(o.z,{variant:"access"===es?"default":"ghost",className:"w-full justify-start",onClick:()=>ei("access"),children:[(0,t.jsx)(y.Z,{className:"h-4 w-4 mr-2"}),"Access control"]}),(0,t.jsxs)(o.z,{variant:"settings"===es?"default":"ghost",className:"w-full justify-start",onClick:()=>ei("settings"),children:[(0,t.jsx)(f.Z,{className:"h-4 w-4 mr-2"}),"Project settings"]})]})]}),(0,t.jsxs)("div",{className:"flex-1",children:["overview"===es&&(0,t.jsx)("div",{className:"space-y-6",children:(0,t.jsxs)(u.Zb,{children:[(0,t.jsxs)(u.Ol,{children:[(0,t.jsx)(u.ll,{children:"Project Information"}),(0,t.jsx)(u.SZ,{children:"Basic information about this project"})]}),(0,t.jsxs)(u.aY,{className:"space-y-4",children:[(0,t.jsx)("div",{className:"grid gap-4",children:(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(x._,{htmlFor:"name",children:"Project Name"}),J?(0,t.jsx)(m.I,{id:"name",value:en.name,onChange:e=>ed({...en,name:e.target.value})}):(0,t.jsx)("p",{className:"text-sm",children:X.name})]})}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(x._,{htmlFor:"description",children:"Description"}),J?(0,t.jsx)(h.g,{id:"description",value:en.description,onChange:e=>ed({...en,description:e.target.value}),rows:3}):(0,t.jsx)("p",{className:"text-sm",children:X.description||"No description provided"})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(x._,{htmlFor:"instructions",children:"Custom Instructions"}),J?(0,t.jsx)(h.g,{id:"instructions",value:en.custom_instructions,onChange:e=>ed({...en,custom_instructions:e.target.value}),rows:4,placeholder:"Enter custom instructions for sessions in this project..."}):(0,t.jsx)("p",{className:"text-sm",children:X.custom_instructions||"No custom instructions set"})]})]}),(0,t.jsx)(u.eW,{children:(0,t.jsx)("div",{className:"flex items-center justify-between",children:(0,t.jsx)("div",{className:"flex gap-2",children:J?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.z,{variant:"outline",onClick:()=>{X&&ed({name:X.name||"",description:X.description||"",custom_instructions:X.custom_instructions||""}),K(!1)},children:"Cancel"}),(0,t.jsxs)(o.z,{onClick:eB,children:[(0,t.jsx)("span",{children:"Save changes"}),ej&&(0,t.jsx)(I.g,{className:"mr-2"})]})]}):(0,t.jsxs)(o.z,{variant:"outline",onClick:()=>K(!0),children:[(0,t.jsx)(b.Z,{className:"h-4 w-4 mr-2"}),"Edit"]})})})})]})}),"context"===es&&(0,t.jsx)("div",{className:"space-y-6 w-full",children:(0,t.jsxs)(u.Zb,{children:[(0,t.jsxs)(u.Ol,{children:[(0,t.jsx)(u.ll,{children:"Project context items"}),(0,t.jsx)(u.SZ,{children:"Items that provide context for sessions in this project (max 15 items). Note that different agents may have different file types supported."})]}),(0,t.jsx)(u.aY,{children:(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(L,{onConfirm:e=>{let s=[...ex,...e.map(e=>"".concat(e.context.id,"/").concat(e.item.id))];console.log("update",s),eh(s),eu({variables:{id:X.id,input:{project_items:s}}})}}),(0,t.jsx)("div",{className:"space-y-2",children:(0,t.jsxs)("div",{className:"space-y-2",children:[(null==ex?void 0:ex.length)===0&&(0,t.jsxs)("div",{className:"text-center py-8 text-muted-foreground",children:[(0,t.jsx)(g.Z,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),(0,t.jsx)("p",{children:"No items added to the project context yet."})]}),(0,t.jsx)("div",{className:"grid grid-cols-3 sm:grid-cols-4 gap-3",children:null==ex?void 0:ex.map(e=>(0,t.jsx)(Q,{gid:e,onRemove:e=>{let s=ex.filter(s=>s!==e);eh(s),eu({variables:{id:X.id,input:{project_items:s}}})}},e))})]})})]})})]})}),"sessions"===es&&(0,t.jsx)("div",{className:"space-y-6",children:(0,t.jsxs)(u.Zb,{children:[(0,t.jsxs)(u.Ol,{children:[(0,t.jsx)(u.ll,{children:"Project sessions"}),(0,t.jsx)(u.SZ,{children:"Sessions associated with this project"})]}),(0,t.jsx)(u.aY,{children:(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)(o.z,{onClick:()=>{G(!0)},className:"w-full",variant:"outline",children:[(0,t.jsx)(w.Z,{className:"h-4 w-4 mr-2"}),"Start new session"]}),(0,t.jsx)("div",{className:"space-y-2",children:eR.map(e=>{let s=(0,A.I)(e,et);return(0,t.jsxs)("div",{className:"flex items-center justify-between p-3 border rounded-lg",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)(N.Z,{className:"h-4 w-4"}),(0,t.jsx)("div",{children:(0,t.jsx)(Y.default,{href:"/chat/".concat(e.agent,"/").concat(e.id),children:(0,t.jsx)("p",{className:"font-medium max-w-[80%] truncate",children:e.title})})})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)(E.u,{children:[(0,t.jsx)(E.aJ,{asChild:!0,children:(0,t.jsx)(o.z,{disabled:!s||e_,variant:"ghost",size:"sm",onClick:()=>{e_||(eZ({variables:{id:e.id,project:null}}),ey())},children:(0,t.jsx)(C.Z,{className:"h-4 w-4"})})}),(0,t.jsx)(E._v,{children:(0,t.jsx)("p",{children:"Remove session from project."})})]}),(0,t.jsxs)(E.u,{children:[(0,t.jsx)(E.aJ,{asChild:!0,children:(0,t.jsx)(o.z,{disabled:!s||ez,variant:"ghost",size:"sm",onClick:()=>{ez||(eP({variables:{id:e.id}}),ey())},children:(0,t.jsx)(S.Z,{className:"h-4 w-4"})})}),(0,t.jsx)(E._v,{children:(0,t.jsx)("p",{children:"Delete session completely."})})]})]})]},e.id)})}),0===eR.length&&!eN&&(0,t.jsxs)("div",{className:"text-center py-8 text-muted-foreground",children:[(0,t.jsx)(N.Z,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),(0,t.jsx)("p",{children:"No sessions found"})]}),eN&&(0,t.jsxs)("div",{className:"text-center py-8 text-muted-foreground",children:[(0,t.jsx)(N.Z,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),(0,t.jsx)("p",{children:"Loading sessions..."})]})]})})]})}),"access"===es&&(0,t.jsx)("div",{className:"space-y-6",children:(0,t.jsxs)(u.Zb,{children:[(0,t.jsxs)(u.Ol,{children:[(0,t.jsx)(u.ll,{children:"Access Control"}),(0,t.jsx)(u.SZ,{children:"Control who can access this project"})]}),(0,t.jsx)(u.aY,{children:(0,t.jsx)(P.P,{allowedModes:["private","users","roles"],initialRightsMode:X.rights_mode||"private",initialUsers:null===(F=X.RBAC)||void 0===F?void 0:F.users,initialRoles:null===(V=X.RBAC)||void 0===V?void 0:V.roles,initialProjects:null===(q=X.RBAC)||void 0===q?void 0:q.projects,onChange:(e,s,i,t)=>{em({rights_mode:e,users:s,roles:i,projects:t})}})}),(0,t.jsx)(u.eW,{children:(0,t.jsxs)(o.z,{onClick:()=>{eu({variables:{id:X.id,input:{rights_mode:eo.rights_mode,RBAC:{users:eo.users,roles:eo.roles,projects:eo.projects}}}})},children:[(0,t.jsx)("span",{children:"Save access rights"}),ej&&(0,t.jsx)(I.g,{className:"ml-2"})]})})]})}),"settings"===es&&(0,t.jsx)("div",{className:"space-y-6",children:(0,t.jsxs)(u.Zb,{children:[(0,t.jsxs)(u.Ol,{children:[(0,t.jsx)(u.ll,{children:"Danger Zone"}),(0,t.jsx)(u.SZ,{children:"Permanently delete this project and all associated data"})]}),(0,t.jsx)(u.aY,{children:(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"flex items-start gap-3 p-4 border border-destructive/20 rounded-lg bg-destructive/5",children:[(0,t.jsx)(k.Z,{className:"h-5 w-5 text-destructive mt-0.5"}),(0,t.jsxs)("div",{className:"flex-1",children:[(0,t.jsx)("h4",{className:"font-medium text-destructive",children:"Delete Project"}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground mt-1",children:"This action cannot be undone. This will permanently delete the project and optionally remove all associated context files and sessions."})]})]}),(0,t.jsxs)(p.Vq,{open:T,onOpenChange:W,children:[(0,t.jsx)(p.hg,{asChild:!0,children:(0,t.jsxs)(o.z,{variant:"destructive",children:[(0,t.jsx)(S.Z,{className:"h-4 w-4 mr-2"}),"Delete Project"]})}),(0,t.jsxs)(p.cZ,{className:"sm:max-w-md",children:[(0,t.jsxs)(p.fK,{children:[(0,t.jsx)(p.$N,{children:"Delete Project"}),(0,t.jsxs)(p.Be,{children:['Are you sure you want to delete "',X.name,'"? This action cannot be undone.']})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,t.jsx)(v.X,{id:"delete-items",checked:el.deleteItems,onCheckedChange:e=>er(s=>({...s,deleteItems:e}))}),(0,t.jsxs)("label",{htmlFor:"delete-items",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:["Also delete all context items (",null==ex?void 0:ex.length," items)"]})]}),(0,t.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,t.jsx)(v.X,{id:"delete-sessions",checked:el.deleteSessions,onCheckedChange:e=>er(s=>({...s,deleteSessions:e}))}),(0,t.jsxs)("label",{htmlFor:"delete-sessions",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:["Also delete all sessions (",eR.length," sessions)"]})]}),(el.deleteItems||el.deleteSessions)&&(0,t.jsxs)("div",{className:"flex items-start gap-2 p-3 border border-amber-200 rounded-lg bg-amber-50",children:[(0,t.jsx)(k.Z,{className:"h-4 w-4 text-amber-600 mt-0.5"}),(0,t.jsx)("p",{className:"text-sm text-amber-800",children:el.deleteItems&&el.deleteSessions?"All context items and sessions will be permanently deleted.":el.deleteItems?"All context items will be permanently deleted.":"All sessions will be permanently deleted."})]})]}),(0,t.jsxs)(p.cN,{className:"sm:justify-start",children:[(0,t.jsx)(o.z,{variant:"outline",onClick:()=>W(!1),children:"Cancel"}),(0,t.jsxs)(o.z,{disabled:ev,variant:"destructive",onClick:eE,children:[ev?(0,t.jsx)(I.g,{className:"mr-2 w-4 h-4"}):(0,t.jsx)(S.Z,{className:"h-4 w-4 mr-2"}),"Delete Project"]})]})]})]})]})})]})})]})]})}),(0,t.jsx)(p.Vq,{open:$,onOpenChange:G,children:(0,t.jsxs)(p.cZ,{className:"sm:max-w-4xl",children:[(0,t.jsxs)(p.fK,{children:[(0,t.jsx)(p.$N,{children:"Select an Agent"}),(0,t.jsx)(p.Be,{children:"Choose an agent to start a new chat session. Sessions started in a project are accessible for viewing by project members."})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)(Z.Z,{className:"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground"}),(0,t.jsx)(m.I,{placeholder:"Search agents...",value:H,onChange:e=>ee(e.target.value),className:"pl-10"})]}),(0,t.jsx)("div",{className:"max-h-96 overflow-y-auto",children:ew?(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[...Array(6)].map((e,s)=>(0,t.jsx)("div",{className:"p-4 border rounded-lg",children:(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)(z.O,{className:"h-12 w-12 rounded-full"}),(0,t.jsxs)("div",{className:"space-y-2 flex-1",children:[(0,t.jsx)(z.O,{className:"h-4 w-3/4"}),(0,t.jsx)(z.O,{className:"h-3 w-1/2"})]})]})},s))}):eA.length>0?(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:eA.map(e=>(0,t.jsx)("div",{className:"p-4 border rounded-lg hover:border-primary cursor-pointer transition-colors",onClick:()=>eY(e),children:(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"h-12 w-12 rounded-full bg-primary/10 flex items-center justify-center",children:e.image?(0,t.jsx)("img",{src:e.image,alt:e.name,className:"h-12 w-12 rounded-full object-cover"}):(0,t.jsx)(_.Z,{className:"h-6 w-6"})}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsx)("p",{className:"font-medium truncate",children:e.name}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground truncate",children:e.description||"".concat(e.type," agent")}),(0,t.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,t.jsx)(j.C,{variant:e.active?"default":"secondary",className:"text-xs",children:e.active?"Active":"Inactive"}),(0,t.jsx)(j.C,{variant:"outline",className:"text-xs",children:e.type})]})]})]})},e.id))}):(0,t.jsxs)("div",{className:"text-center py-8 text-muted-foreground",children:[(0,t.jsx)(_.Z,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),(0,t.jsx)("p",{children:H?"No agents found matching your search":"No agents available"})]})})]}),(0,t.jsx)(p.cN,{children:(0,t.jsx)(o.z,{variant:"outline",onClick:()=>G(!1),children:"Cancel"})})]})})]})}function Q(e){let{gid:s,onRemove:i}=e,a=s.split("/")[0],l=s.split("/")[1];if(!a||!l)return null;let{data:r,loading:d}=(0,n.aM)((0,c.A1)(a,"files_default_context"===a?["s3key"]:[]),{variables:{id:l}});if(console.log("data",r),d)return null;let o=null==r?void 0:r[a+"_itemsById"];if(!o)return null;let m=Object.values(o||{}).filter(e=>"_s3key"===e);return m.length?(0,t.jsx)(t.Fragment,{children:m.map(e=>(0,t.jsx)(O.jU,{s3Key:e,onRemove:()=>{i(s)},active:!1,disabled:!1}))}):null}var X=i(65613),J=i(20653);function K(){let e=(0,l.useParams)(),s=null==e?void 0:e.project,{data:i,loading:a,error:r}=(0,n.aM)(c.jL,{variables:{id:s}});return a?(0,t.jsx)("div",{children:(0,t.jsx)(z.O,{className:"w-full h-full"})}):r?(0,t.jsxs)(X.bZ,{variant:"destructive",children:[(0,t.jsx)(J.LPM,{className:"size-4"}),(0,t.jsx)(X.Cd,{children:"Error"}),(0,t.jsx)(X.X,{children:"Error loading project."})]}):(null==i?void 0:i.projectById)?(0,t.jsx)(q,{project:i.projectById}):(0,t.jsxs)(X.bZ,{variant:"destructive",children:[(0,t.jsx)(J.LPM,{className:"size-4"}),(0,t.jsx)(X.Cd,{children:"Error"}),(0,t.jsx)(X.X,{children:"Project not found."})]})}},8014:function(e,s,i){"use strict";i.d(s,{P:function(){return Z}});var t=i(57437),a=i(27689),l=i(2265),r=i(63251),n=i(7211),d=i(53647),c=i(66337),o=i(95805),m=i(98728),x=i(29202),h=i(14924),u=i(24156),j=i(30401),p=i(15863),v=i(18930),f=i(95186),g=i(26110),N=i(19378),y=i(94508),b=i(57054),w=i(23518),C=i(62869),S=i(26815);let k=[{value:"private",label:"Private",description:"Only you can see this agent",icon:c.Z},{value:"users",label:"Shared with Users",description:"Share with specific users",icon:o.Z},{value:"roles",label:"Shared with Roles",description:"Share with specific roles",icon:m.Z},{value:"public",label:"Public",description:"Anyone can see this agent",icon:x.Z},{value:"projects",label:"Projects",description:"Share with specific projects",icon:h.Z}];function Z(e){var s,i;let{allowedModes:c,initialRightsMode:o,initialUsers:m,initialRoles:x,initialProjects:h,onChange:Z}=e,[_,P]=(0,l.useState)(o),[z,R]=(0,l.useState)(m||[]),[I,A]=(0,l.useState)(x||[]),[B,Y]=(0,l.useState)([]),[E,O]=(0,l.useState)(!1),[M,D]=(0,l.useState)([]),[F,L]=(0,l.useState)(""),[V,U]=(0,l.useState)(!1),[q,Q]=(0,l.useState)(!1),X=(0,r.x)(),{data:J,loading:K,refetch:T}=(0,n.aM)(a.fo,{variables:{page:1,limit:5,filters:M},skip:"users"!==_||!F}),W=(0,n.aM)(a.l1,{fetchPolicy:"cache-first",nextFetchPolicy:"network-only",variables:{page:1,limit:30,filters:[{type:{ne:"api"}}]}}),$=(0,l.useCallback)(e=>{L(e);let s=[...M,{type:{ne:"api"}}],i=s.find(e=>e.email);(null==i?void 0:i.email)?i.email.contains=e:s.push({email:{contains:e}}),D(s),T()},[M,T]),G=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:5;if(Q(!0),!z||0===z.length){Y([]),Q(!1);return}let s=null==z?void 0:z.slice(0,e).map(async e=>{let{id:s,rights:i}=e;return{...(await X.query({query:a.L5,variables:{id:s}})).data.userById,rights:i}});Y(await Promise.all(s)),Q(!1)};(0,l.useEffect)(()=>{G(5)},[]),(0,l.useEffect)(()=>{console.log("selectedUsers",z),console.log("hydratedUsers",B),Z(_,z,I,[])},[_,z,I]);let H=null==B?void 0:B.slice(0,5).filter(e=>!!(null==e?void 0:e.id)),ee=k;return(null==c?void 0:c.length)&&(ee=k.filter(e=>c.includes(e.value))),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(S._,{className:"text-sm font-medium",children:"Visibility & sharing"}),(0,t.jsxs)(b.J2,{open:E,onOpenChange:O,children:[(0,t.jsx)(b.xo,{asChild:!0,children:(0,t.jsxs)(C.z,{variant:"outline",role:"combobox","aria-expanded":E,className:"w-full justify-between text-sm capitalize",children:[(null===(s=ee.find(e=>e.value===_))||void 0===s?void 0:s.label)||"Select visibility...",(0,t.jsx)(u.Z,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,t.jsx)(b.yk,{className:"w-full p-0",children:(0,t.jsxs)(w.mY,{children:[(0,t.jsx)(w.sZ,{placeholder:"Search options..."}),(0,t.jsxs)(w.e8,{children:[(0,t.jsx)(w.rb,{children:"No options found."}),(0,t.jsx)(w.fu,{children:ee.map(e=>(0,t.jsxs)(w.di,{onSelect:()=>{"users"!==e.value&&R([]),"roles"!==e.value&&A([]),P(e.value),O(!1)},children:[(0,t.jsx)(j.Z,{className:(0,y.cn)("mr-2 h-4 w-4",_===e.value?"opacity-100":"opacity-0")}),(0,t.jsxs)("div",{className:"flex flex-col",children:[(0,t.jsx)("span",{children:e.label}),(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:e.description})]})]},e.value))})]})]})})]})]}),"users"===_&&(0,t.jsx)("div",{className:"space-y-3 pt-3",children:(0,t.jsxs)("div",{children:[(0,t.jsx)(S._,{className:"text-sm font-medium",children:"Share with users"}),(0,t.jsx)("div",{className:"mt-2",children:(0,t.jsx)(f.I,{placeholder:"Search users by email...",value:F,onChange:e=>$(e.target.value),className:"text-sm"})}),K&&(0,t.jsxs)("div",{className:"mt-2 flex items-center justify-center py-4",children:[(0,t.jsx)(p.Z,{className:"h-4 w-4 animate-spin mr-2"}),(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Loading users..."})]}),!K&&J&&(null===(i=J.usersPagination)||void 0===i?void 0:i.items.length)>0&&(0,t.jsxs)("div",{className:"mt-2",children:[(0,t.jsx)("div",{className:"text-xs text-muted-foreground mb-1",children:"Search Results:"}),(0,t.jsx)("div",{className:"max-h-50 overflow-y-auto border rounded-lg",children:J.usersPagination.items.filter(e=>!z.some(s=>s.id===e.id)).map(e=>(0,t.jsxs)("label",{className:"flex items-center space-x-2 p-2 hover:bg-muted/50 cursor-pointer",children:[(0,t.jsx)("input",{type:"checkbox",checked:z.some(s=>s.id===e.id),onChange:s=>{R(s=>[...s,{id:e.id,rights:"read"}]),Y(s=>[...s,{...e,rights:"read"}])}}),(0,t.jsx)("span",{className:"text-sm",children:e.email})]},e.id))}),(0,t.jsxs)("div",{className:"text-xs text-muted-foreground mt-2",children:[(0,t.jsx)("span",{className:"font-medium",children:"Note:"})," Only the first 5 users are shown, use the Search bar to find more users."]})]}),!K&&F&&J&&0===J.usersPagination.items.length&&(0,t.jsx)("div",{className:"mt-2 text-center py-4",children:(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"No users found"})}),(null==H?void 0:H.length)>0?(0,t.jsxs)("div",{className:"mt-2",children:[(0,t.jsx)("div",{className:"text-xs text-muted-foreground mb-1",children:"Selected Users:"}),(0,t.jsxs)("div",{className:"space-y-1",children:[H.map(e=>(0,t.jsxs)("div",{className:"flex items-center gap-2 border p-2 rounded-lg text-sm",children:[(0,t.jsx)("span",{className:"flex-1 pl-2",children:e.email}),(0,t.jsxs)(d.Ph,{value:e.rights,onValueChange:s=>{R(i=>i.map(i=>i.id===e.id?{...i,rights:s}:i)),Y(i=>i.map(i=>i.id===e.id?{...i,rights:s}:i))},children:[(0,t.jsx)(d.i4,{className:"h-6 w-20 text-xs",children:(0,t.jsx)(d.ki,{})}),(0,t.jsxs)(d.Bw,{children:[(0,t.jsx)(d.Ql,{value:"read",children:"Read"}),(0,t.jsx)(d.Ql,{value:"write",children:"Write"})]})]}),(0,t.jsx)(C.z,{size:"sm",variant:"ghost",className:"h-5 w-5 p-0 hover:bg-blue-100",onClick:()=>{R(s=>s.filter(s=>s.id!==e.id)),Y(s=>s.filter(s=>s.id!==e.id))},children:(0,t.jsx)(v.Z,{className:"w-3 h-3"})})]},e.id)),z&&z.length>5&&(0,t.jsxs)(C.z,{variant:"link",type:"button",className:"h-auto p-0 text-blue-600 hover:text-blue-800 text-xs",onClick:()=>{G(50),U(!0)},children:["+ ",z.length-5," more users"]})]})]}):(0,t.jsx)("div",{className:"mt-2 text-center py-4",children:(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"No users selected."})})]})}),"roles"===_&&(0,t.jsx)("div",{className:"space-y-3",children:(0,t.jsxs)("div",{children:[(0,t.jsxs)(S._,{className:"text-sm font-medium",children:["Share with roles (",(null==I?void 0:I.length)||0,")"]}),(0,t.jsxs)("div",{className:"mt-2",children:[(0,t.jsx)("div",{className:"text-xs text-muted-foreground mb-1",children:"Available Roles"}),W.loading&&(0,t.jsxs)("div",{className:"flex items-center justify-center py-4 border rounded-lg",children:[(0,t.jsx)(p.Z,{className:"h-4 w-4 animate-spin mr-2"}),(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Loading roles..."})]}),!W.loading&&W.data&&(0,t.jsx)("div",{className:"max-h-24 overflow-y-auto border rounded-lg",children:W.data.rolesPagination.items.map(e=>(0,t.jsxs)("label",{className:"flex items-center space-x-2 p-2 hover:bg-muted/50 cursor-pointer",children:[(0,t.jsx)("input",{type:"checkbox",checked:I.some(s=>s.id===e.id),onChange:s=>{s.target.checked?A(s=>[...s,{id:e.id,rights:"read"}]):A(s=>s.filter(s=>s.id!==e.id))}}),(0,t.jsx)("span",{className:"text-sm capitalize",children:e.name})]},e.id))})]}),I.length>0&&W.data&&(0,t.jsxs)("div",{className:"mt-2",children:[(0,t.jsx)("div",{className:"text-xs text-muted-foreground mb-1",children:"Selected Roles:"}),(0,t.jsx)("div",{className:"space-y-1",children:I.map(e=>{let s=W.data.rolesPagination.items.find(s=>s.id===e.id);return(0,t.jsxs)("div",{className:"flex items-center gap-2 border p-2 rounded-lg text-sm",children:[(0,t.jsx)("span",{className:"flex-1 pl-2 capitalize",children:null==s?void 0:s.name}),(0,t.jsxs)(d.Ph,{value:e.rights,onValueChange:s=>{A(i=>i.map(i=>i.id===e.id?{...i,rights:s}:i))},children:[(0,t.jsx)(d.i4,{className:"h-6 text-xs w-20 border-none",children:(0,t.jsx)(d.ki,{})}),(0,t.jsxs)(d.Bw,{children:[(0,t.jsx)(d.Ql,{value:"read",children:(0,t.jsx)("span",{className:"pr-7",children:"Read"})}),(0,t.jsx)(d.Ql,{value:"write",children:(0,t.jsx)("span",{className:"pr-7",children:"Write"})})]})]}),(0,t.jsx)(C.z,{size:"sm",variant:"ghost",className:"h-5 w-5 p-0 hover:bg-blue-100",onClick:()=>{A(s=>s.filter(s=>s.id!==e.id))},children:(0,t.jsx)(v.Z,{className:"w-3 h-3"})})]},e.id)})})]})]})}),(0,t.jsx)(g.Vq,{open:V,onOpenChange:U,children:(0,t.jsxs)(g.cZ,{className:"sm:max-w-2xl max-h-[85vh] flex flex-col",children:[(0,t.jsxs)(g.fK,{children:[(0,t.jsxs)(g.$N,{children:["All Selected Users (",(null==z?void 0:z.length)||0,")"]}),(0,t.jsx)(g.Be,{children:"View and manage all selected users and their permissions"})]}),(0,t.jsxs)(N.x,{className:"flex-1 pr-4",children:[q&&(0,t.jsxs)("div",{className:"flex items-center justify-center py-8",children:[(0,t.jsx)(p.Z,{className:"h-6 w-6 animate-spin mr-2"}),(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Loading users..."})]}),!q&&B.length>0&&(0,t.jsx)("div",{className:"space-y-2",children:B.map(e=>(0,t.jsxs)("div",{className:"flex items-center gap-3 border p-3 rounded-lg",children:[(0,t.jsx)("span",{className:"flex-1",children:e.email}),(0,t.jsxs)(d.Ph,{value:e.rights,onValueChange:s=>{R(i=>i.map(i=>i.id===e.id?{...i,rights:s}:i)),Y(i=>i.map(i=>i.id===e.id?{...i,rights:s}:i))},children:[(0,t.jsx)(d.i4,{className:"w-24",children:(0,t.jsx)(d.ki,{})}),(0,t.jsxs)(d.Bw,{children:[(0,t.jsx)(d.Ql,{value:"read",children:"Read"}),(0,t.jsx)(d.Ql,{value:"write",children:"Write"})]})]}),(0,t.jsx)(C.z,{size:"sm",variant:"ghost",className:"h-8 w-8 p-0 hover:bg-destructive/10",onClick:()=>{R(s=>s.filter(s=>s.id!==e.id)),Y(s=>s.filter(s=>s.id!==e.id))},children:(0,t.jsx)(v.Z,{className:"w-4 h-4"})})]},e.id))}),!q&&0===B.length&&(0,t.jsx)("div",{className:"text-center py-8",children:(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"No users selected"})})]})]})})]})}},19060:function(e,s,i){"use strict";i.d(s,{X:function(){return d}});var t=i(57437),a=i(9270),l=i(30401),r=i(2265),n=i(94508);let d=r.forwardRef((e,s)=>{let{className:i,...r}=e;return(0,t.jsx)(a.fC,{ref:s,className:(0,n.cn)("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",i),...r,children:(0,t.jsx)(a.z$,{className:(0,n.cn)("flex items-center justify-center text-current"),children:(0,t.jsx)(l.Z,{className:"size-4"})})})});d.displayName=a.fC.displayName},23518:function(e,s,i){"use strict";i.d(s,{di:function(){return u},e8:function(){return o},fu:function(){return x},mY:function(){return d},rb:function(){return m},sZ:function(){return c},zz:function(){return h}});var t=i(57437),a=i(83918),l=i(73247),r=i(2265);i(26110);var n=i(94508);let d=r.forwardRef((e,s)=>{let{className:i,...l}=e;return(0,t.jsx)(a.mY,{ref:s,className:(0,n.cn)("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",i),...l})});d.displayName=a.mY.displayName;let c=r.forwardRef((e,s)=>{let{className:i,...r}=e;return(0,t.jsxs)("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[(0,t.jsx)(l.Z,{className:"mr-2 size-4 shrink-0 opacity-50"}),(0,t.jsx)(a.mY.Input,{ref:s,className:(0,n.cn)("flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",i),...r})]})});c.displayName=a.mY.Input.displayName;let o=r.forwardRef((e,s)=>{let{className:i,...l}=e;return(0,t.jsx)(a.mY.List,{ref:s,className:(0,n.cn)("max-h-[300px] overflow-y-auto overflow-x-hidden",i),...l})});o.displayName=a.mY.List.displayName;let m=r.forwardRef((e,s)=>(0,t.jsx)(a.mY.Empty,{ref:s,className:"py-6 text-center text-sm",...e}));m.displayName=a.mY.Empty.displayName;let x=r.forwardRef((e,s)=>{let{className:i,...l}=e;return(0,t.jsx)(a.mY.Group,{ref:s,className:(0,n.cn)("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",i),...l})});x.displayName=a.mY.Group.displayName;let h=r.forwardRef((e,s)=>{let{className:i,...l}=e;return(0,t.jsx)(a.mY.Separator,{ref:s,className:(0,n.cn)("-mx-1 h-px bg-border",i),...l})});h.displayName=a.mY.Separator.displayName;let u=r.forwardRef((e,s)=>{let{className:i,...l}=e;return(0,t.jsx)(a.mY.Item,{ref:s,className:(0,n.cn)("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",i),...l})});u.displayName=a.mY.Item.displayName},10492:function(e,s,i){"use strict";i.d(s,{g:function(){return l}});var t=i(57437),a=i(94508);let l=e=>{let{className:s}=e;return(0,t.jsxs)("svg",{"aria-hidden":"true",role:"status",className:(0,a.cn)("inline w-4 h-4 text-white animate-spin fill-inherit",s),viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,t.jsx)("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",className:"fill-inherit opacity-20"}),(0,t.jsx)("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",className:"fill-inherit"})]})}},57054:function(e,s,i){"use strict";i.d(s,{J2:function(){return n},xo:function(){return d},yk:function(){return c}});var t=i(57437),a=i(27312),l=i(2265),r=i(94508);let n=a.fC,d=a.xz,c=l.forwardRef((e,s)=>{let{className:i,align:l="center",sideOffset:n=4,...d}=e;return(0,t.jsx)(a.h_,{children:(0,t.jsx)(a.VY,{ref:s,align:l,sideOffset:n,className:(0,r.cn)("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none 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-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",i),...d})})});c.displayName=a.VY.displayName},36399:function(e,s,i){"use strict";i.d(s,{t:function(){return l}});var t=i(27689),a=i(7211);let l=()=>(0,a.aM)(t.uw,{variables:{limit:20}})},87393:function(e,s,i){"use strict";i.d(s,{I:function(){return t}});let t=(e,s)=>{var i,t,a,l,r,n;let d="private"===e.rights_mode,c="public"===e.rights_mode,o="users"===e.rights_mode,m="roles"===e.rights_mode,x=s.super_admin,h=e.created_by===s.id.toString(),u=!1;return d&&h&&(u=!0),c&&(u=!0),o&&(u=(null===(a=e.RBAC)||void 0===a?void 0:null===(t=a.users)||void 0===t?void 0:null===(i=t.find(e=>e.id===s.id))||void 0===i?void 0:i.rights)==="write"),m&&(u=(null===(n=e.RBAC)||void 0===n?void 0:null===(r=n.roles)||void 0===r?void 0:null===(l=r.find(e=>{var i;return e.id===(null===(i=s.role)||void 0===i?void 0:i.id)}))||void 0===l?void 0:l.rights)==="write"),x&&(u=!0),u}}},function(e){e.O(0,[6840,8310,9851,7629,7093,6148,847,1942,7648,7823,8068,5799,4567,605,85,4957,5243,1785,3702,1713,6152,8202,6373,3832,4205,2971,2117,1744],function(){return e(e.s=62839)}),_N_E=e.O()}]);
|
|
2
|
+
//# sourceMappingURL=page-e69828fde85c50af.js.map
|