@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
package/dist/.next/static/chunks/{1645-e5fd10236c0183ce.js.map → 1645-570e014100772437.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static/chunks/1645-e5fd10236c0183ce.js","mappings":"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","sources":["webpack://_N_E/./components/rbac.tsx","webpack://_N_E/./components/ui/collapsible.tsx","webpack://_N_E/./components/ui/command.tsx","webpack://_N_E/./components/ui/form.tsx","webpack://_N_E/./components/ui/loading.tsx","webpack://_N_E/./components/ui/popover.tsx","webpack://_N_E/./components/ui/switch.tsx"],"sourcesContent":["\nimport {\n GET_USER_ROLES,\n GET_USERS,\n GET_USER_BY_ID\n} from \"@/queries/queries\";\nimport { useState, useEffect, useCallback } from \"react\";\nimport { useApolloClient, useQuery } from \"@apollo/client\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\";\nimport { User } from \"@/types/models/user\";\nimport { Check, ChevronsUpDown, Users, Lock, Globe, Settings, Trash2, Loader2, Folder } from \"lucide-react\";\nimport { Input } from \"@/components/ui/input\";\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogDescription,\n} from \"@/components/ui/dialog\";\nimport { ScrollArea } from \"@/components/ui/scroll-area\";\nimport { cn } from \"@/lib/utils\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/components/ui/command\";\nimport { Button } from \"@/components/ui/button\";\nimport { Label } from \"./ui/label\";\n\nconst VISIBILITY_OPTIONS = [\n { value: 'private', label: 'Private', description: 'Only you can see this agent', icon: Lock },\n { value: 'users', label: 'Shared with Users', description: 'Share with specific users', icon: Users },\n { value: 'roles', label: 'Shared with Roles', description: 'Share with specific roles', icon: Settings },\n { value: 'public', label: 'Public', description: 'Anyone can see this agent', icon: Globe },\n { value: 'projects', label: 'Projects', description: 'Share with specific projects', icon: Folder }\n]\n\ntype Modes = 'private' | 'users' | 'roles' | 'public' | 'projects'\n\nexport function RBACControl({\n allowedModes,\n initialRightsMode,\n initialUsers,\n initialRoles,\n initialProjects,\n onChange\n}: {\n allowedModes?: Modes[],\n initialRightsMode: 'private' | 'users' | 'roles' | 'public' | 'projects' | undefined,\n initialUsers: { id: number, rights: 'read' | 'write' }[] | undefined,\n initialRoles: { id: string, rights: 'read' | 'write' }[] | undefined,\n initialProjects: { id: string, rights: 'read' | 'write' }[] | undefined,\n onChange: (rights_mode: Modes, users: { id: number, rights: 'read' | 'write' }[], roles: { id: string, rights: 'read' | 'write' }[], projects: { id: string, rights: 'read' | 'write' }[]) => void\n}) {\n const [visibility, setVisibility] = useState<Modes | undefined>(initialRightsMode)\n const [selectedUsers, setSelectedUsers] = useState<{ id: number, rights: 'read' | 'write' }[]>(initialUsers || [])\n const [selectedRoles, setSelectedRoles] = useState<{ id: string, rights: 'read' | 'write' }[]>(initialRoles || [])\n const [hydratedUsers, setHydratedUsers] = useState<User[]>([])\n const [visibilitySelectorOpen, setVisibilitySelectorOpen] = useState(false)\n const [userFilters, setUserFilters] = useState<any[]>([])\n const [userSearchValue, setUserSearchValue] = useState('')\n const [modalOpen, setModalOpen] = useState(false)\n const [modalLoading, setModalLoading] = useState(false)\n const client = useApolloClient()\n\n // GraphQL queries for RBAC\n const { data: usersData, loading: usersLoading, refetch: refetchUsers } = useQuery(GET_USERS, {\n variables: { page: 1, limit: 5, filters: userFilters },\n skip: visibility !== 'users' || !userSearchValue\n })\n\n const roles = useQuery(GET_USER_ROLES, {\n fetchPolicy: \"cache-first\",\n nextFetchPolicy: \"network-only\",\n variables: {\n page: 1,\n limit: 30,\n filters: [\n {\n type: {\n ne: \"api\"\n }\n }\n ]\n },\n });\n\n\n // User search function\n const searchUsers = useCallback((value: string) => {\n setUserSearchValue(value)\n const copy = [...userFilters, {\n type: {\n ne: \"api\"\n }\n }]\n const exists = copy.find((filter) => filter.email)\n if (exists?.email) {\n exists.email.contains = value\n } else {\n copy.push({\n email: {\n contains: value,\n },\n })\n }\n setUserFilters(copy)\n refetchUsers()\n }, [userFilters, refetchUsers])\n\n const hydrateUsers = async (max: number = 5) => {\n setModalLoading(true)\n if (!selectedUsers || selectedUsers.length === 0) {\n setHydratedUsers([])\n setModalLoading(false)\n return\n }\n\n const promises = selectedUsers?.slice(0, max).map(async ({ id, rights }) => {\n const user = await client.query({\n query: GET_USER_BY_ID,\n variables: {\n id\n }\n })\n return {\n ...user.data.userById,\n rights\n };\n })\n const results = await Promise.all(promises)\n setHydratedUsers(results)\n setModalLoading(false)\n }\n\n useEffect(() => {\n hydrateUsers(5)\n }, [])\n\n useEffect(() => {\n console.log(\"selectedUsers\", selectedUsers)\n console.log(\"hydratedUsers\", hydratedUsers)\n onChange(visibility as 'private' | 'users' | 'roles' | 'public', selectedUsers, selectedRoles, [])\n }, [visibility, selectedUsers, selectedRoles])\n\n const filteredUsers = hydratedUsers?.slice(0, 5).filter(user => !!user?.id)\n\n let visibilityOptions = VISIBILITY_OPTIONS\n if (allowedModes?.length) {\n visibilityOptions = VISIBILITY_OPTIONS.filter(option => allowedModes.includes(option.value as Modes))\n }\n\n return (\n <>\n <div className=\"space-y-2\">\n <Label className=\"text-sm font-medium\">Visibility & sharing</Label>\n <Popover open={visibilitySelectorOpen} onOpenChange={setVisibilitySelectorOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={visibilitySelectorOpen}\n className=\"w-full justify-between text-sm capitalize\"\n >\n {visibilityOptions.find(option => option.value === visibility)?.label || \"Select visibility...\"}\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-full p-0\">\n <Command>\n <CommandInput placeholder=\"Search options...\" />\n <CommandList>\n <CommandEmpty>No options found.</CommandEmpty>\n <CommandGroup>\n {visibilityOptions.map((option: any) => (\n <CommandItem\n key={option.value}\n onSelect={() => {\n if (option.value !== \"users\") {\n setSelectedUsers([])\n }\n if (option.value !== \"roles\") {\n setSelectedRoles([])\n }\n setVisibility(option.value)\n setVisibilitySelectorOpen(false)\n }}\n >\n <Check\n className={cn(\n \"mr-2 h-4 w-4\",\n visibility === option.value ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n <div className=\"flex flex-col\">\n <span>{option.label}</span>\n <span className=\"text-xs text-muted-foreground\">{option.description}</span>\n </div>\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n\n {/* Users sharing section */}\n {visibility === 'users' && (\n <div className=\"space-y-3 pt-3\">\n <div>\n <Label className=\"text-sm font-medium\">Share with users</Label>\n {/* Search bar */}\n <div className=\"mt-2\">\n <Input\n placeholder=\"Search users by email...\"\n value={userSearchValue}\n onChange={(e) => searchUsers(e.target.value)}\n className=\"text-sm\"\n />\n </div>\n\n {/* Search results */}\n {usersLoading && (\n <div className=\"mt-2 flex items-center justify-center py-4\">\n <Loader2 className=\"h-4 w-4 animate-spin mr-2\" />\n <span className=\"text-sm text-muted-foreground\">Loading users...</span>\n </div>\n )}\n {!usersLoading && usersData && usersData.usersPagination?.items.length > 0 && (\n <div className=\"mt-2\">\n <div className=\"text-xs text-muted-foreground mb-1\">Search Results:</div>\n <div className=\"max-h-50 overflow-y-auto border rounded-lg\">\n {usersData.usersPagination.items.filter(user => !selectedUsers.some(selected => selected.id === user.id)).map((user: any) => (\n <label key={user.id} className=\"flex items-center space-x-2 p-2 hover:bg-muted/50 cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={selectedUsers.some(selected => selected.id === user.id)}\n onChange={(e) => {\n setSelectedUsers(prev => [...prev, { id: user.id, rights: 'read' }])\n setHydratedUsers(prev => [...prev, {\n ...user,\n rights: 'read'\n }])\n }}\n />\n <span className=\"text-sm\">{user.email}</span>\n </label>\n ))}\n </div>\n <div className=\"text-xs text-muted-foreground mt-2\">\n <span className=\"font-medium\">Note:</span> Only the first 5 users are shown, use the Search bar to find more users.\n </div>\n </div>\n )}\n {!usersLoading && userSearchValue && usersData && usersData.usersPagination.items.length === 0 && (\n <div className=\"mt-2 text-center py-4\">\n <span className=\"text-sm text-muted-foreground\">No users found</span>\n </div>\n )}\n\n {/* Selected users list */}\n {filteredUsers?.length > 0 ? (\n <div className=\"mt-2\">\n <div className=\"text-xs text-muted-foreground mb-1\">Selected Users:</div>\n <div className=\"space-y-1\">\n {filteredUsers.map((user: any) => (\n <div key={user.id} className=\"flex items-center gap-2 border p-2 rounded-lg text-sm\">\n <span className=\"flex-1 pl-2\">{user.email}</span>\n <Select\n value={user.rights}\n onValueChange={(value: 'read' | 'write') => {\n setSelectedUsers(prev =>\n prev.map(selected =>\n selected.id === user.id\n ? { ...selected, rights: value }\n : selected\n )\n )\n setHydratedUsers(prev =>\n prev.map(hydratedUser =>\n hydratedUser.id === user.id\n ? { ...hydratedUser, rights: value }\n : hydratedUser\n )\n )\n }}\n >\n <SelectTrigger className=\"h-6 w-20 text-xs\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"read\">Read</SelectItem>\n <SelectItem value=\"write\">Write</SelectItem>\n </SelectContent>\n </Select>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n className=\"h-5 w-5 p-0 hover:bg-blue-100\"\n onClick={() => {\n setSelectedUsers(prev => prev.filter(selected => selected.id !== user.id))\n setHydratedUsers(prev => prev.filter(hydratedUser => hydratedUser.id !== user.id))\n }}\n >\n <Trash2 className=\"w-3 h-3\" />\n </Button>\n </div>\n ))}\n {selectedUsers && selectedUsers.length > 5 && (\n <Button\n variant=\"link\"\n type=\"button\"\n className=\"h-auto p-0 text-blue-600 hover:text-blue-800 text-xs\"\n onClick={() => {\n hydrateUsers(50)\n setModalOpen(true)\n }}\n >\n + {selectedUsers.length - 5} more users\n </Button>\n )}\n </div>\n </div>\n ) : (\n <div className=\"mt-2 text-center py-4\">\n <span className=\"text-sm text-muted-foreground\">No users selected.</span>\n </div>\n )}\n </div>\n </div>\n )}\n\n {/* Roles sharing section */}\n {visibility === 'roles' && (\n <div className=\"space-y-3\">\n <div>\n <Label className=\"text-sm font-medium\">Share with roles ({selectedRoles?.length || 0})</Label>\n\n {/* Available roles list */}\n <div className=\"mt-2\">\n <div className=\"text-xs text-muted-foreground mb-1\">Available Roles</div>\n {roles.loading && (\n <div className=\"flex items-center justify-center py-4 border rounded-lg\">\n <Loader2 className=\"h-4 w-4 animate-spin mr-2\" />\n <span className=\"text-sm text-muted-foreground\">Loading roles...</span>\n </div>\n )}\n {!roles.loading && roles.data && (\n <div className=\"max-h-24 overflow-y-auto border rounded-lg\">\n {roles.data.rolesPagination.items.map((role: any) => (\n <label key={role.id} className=\"flex items-center space-x-2 p-2 hover:bg-muted/50 cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={selectedRoles.some(selected => selected.id === role.id)}\n onChange={(e) => {\n if (e.target.checked) {\n setSelectedRoles(prev => [...prev, { id: role.id, rights: 'read' }])\n } else {\n setSelectedRoles(prev => prev.filter(selected => selected.id !== role.id))\n }\n }}\n />\n <span className=\"text-sm capitalize\">{role.name}</span>\n </label>\n ))}\n </div>\n )}\n </div>\n\n {/* Selected roles list */}\n {selectedRoles.length > 0 && roles.data && (\n <div className=\"mt-2\">\n <div className=\"text-xs text-muted-foreground mb-1\">Selected Roles:</div>\n <div className=\"space-y-1\">\n {selectedRoles.map((selectedRole: any) => {\n const role = roles.data.rolesPagination.items.find((r: any) => r.id === selectedRole.id)\n return (\n <div key={selectedRole.id} className=\"flex items-center gap-2 border p-2 rounded-lg text-sm\">\n <span className=\"flex-1 pl-2 capitalize\">{role?.name}</span>\n <Select\n value={selectedRole.rights}\n onValueChange={(value: 'read' | 'write') => {\n setSelectedRoles(prev =>\n prev.map(selected =>\n selected.id === selectedRole.id\n ? { ...selected, rights: value }\n : selected\n )\n )\n }}\n >\n <SelectTrigger className=\"h-6 text-xs w-20 border-none\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"read\">\n <span className=\"pr-7\">Read</span>\n </SelectItem>\n <SelectItem value=\"write\">\n <span className=\"pr-7\">Write</span>\n </SelectItem>\n </SelectContent>\n </Select>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n className=\"h-5 w-5 p-0 hover:bg-blue-100\"\n onClick={() => {\n setSelectedRoles(prev => prev.filter(selected => selected.id !== selectedRole.id))\n }}\n >\n <Trash2 className=\"w-3 h-3\" />\n </Button>\n </div>\n )\n })}\n </div>\n </div>\n )}\n </div>\n </div>\n )}\n\n {/* Modal for viewing all selected users */}\n <Dialog open={modalOpen} onOpenChange={setModalOpen} >\n <DialogContent className=\"sm:max-w-2xl max-h-[85vh] flex flex-col\">\n <DialogHeader>\n <DialogTitle>All Selected Users ({selectedUsers?.length || 0})</DialogTitle>\n <DialogDescription>\n View and manage all selected users and their permissions\n </DialogDescription>\n </DialogHeader>\n\n <ScrollArea className=\"flex-1 pr-4\">\n {modalLoading && (\n <div className=\"flex items-center justify-center py-8\">\n <Loader2 className=\"h-6 w-6 animate-spin mr-2\" />\n <span className=\"text-sm text-muted-foreground\">Loading users...</span>\n </div>\n )}\n\n {!modalLoading && hydratedUsers.length > 0 && (\n <div className=\"space-y-2\">\n {hydratedUsers.map((user: any) => (\n <div key={user.id} className=\"flex items-center gap-3 border p-3 rounded-lg\">\n <span className=\"flex-1\">{user.email}</span>\n <Select\n value={user.rights}\n onValueChange={(value: 'read' | 'write') => {\n // Update selectedUsers state\n setSelectedUsers(prev =>\n prev.map(selected =>\n selected.id === user.id\n ? { ...selected, rights: value }\n : selected\n )\n )\n // Update hydratedUsers state if this user is in the first 5\n setHydratedUsers(prev =>\n prev.map(hydratedUser =>\n hydratedUser.id === user.id\n ? { ...hydratedUser, rights: value }\n : hydratedUser\n )\n )\n }}\n >\n <SelectTrigger className=\"w-24\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"read\">Read</SelectItem>\n <SelectItem value=\"write\">Write</SelectItem>\n </SelectContent>\n </Select>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n className=\"h-8 w-8 p-0 hover:bg-destructive/10\"\n onClick={() => {\n setSelectedUsers(prev => prev.filter(selected => selected.id !== user.id))\n setHydratedUsers(prev => prev.filter(hydratedUser => hydratedUser.id !== user.id))\n }}\n >\n <Trash2 className=\"w-4 h-4\" />\n </Button>\n </div>\n ))}\n </div>\n )}\n\n {!modalLoading && hydratedUsers.length === 0 && (\n <div className=\"text-center py-8\">\n <span className=\"text-sm text-muted-foreground\">No users selected</span>\n </div>\n )}\n </ScrollArea>\n </DialogContent>\n </Dialog >\n </>\n )\n}","\"use client\";\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nconst Collapsible = CollapsiblePrimitive.Root;\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n","\"use client\";\n\nimport { type DialogProps } from \"@radix-ui/react-dialog\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { Search } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Dialog, DialogContent } from \"@/components/ui/dialog\";\nimport { cn } from \"@/lib/utils\";\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\ninterface CommandDialogProps extends DialogProps {}\n\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:size-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:size-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"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\",\n className,\n )}\n {...props}\n />\n </div>\n));\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n));\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"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\",\n className,\n )}\n {...props}\n />\n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"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\",\n className,\n )}\n {...props}\n />\n));\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className,\n )}\n {...props}\n />\n );\n};\nCommandShortcut.displayName = \"CommandShortcut\";\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","import * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport * as React from \"react\";\nimport {\n Controller,\n ControllerProps,\n FieldPath,\n FieldValues,\n FormProvider,\n useFormContext,\n} from \"react-hook-form\";\n\nimport { Label } from \"@/components/ui/label\";\nimport { cn } from \"@/lib/utils\";\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState, formState } = useFormContext();\n\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n\nconst FormItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props} />\n </FormItemContext.Provider>\n );\n});\nFormItem.displayName = \"FormItem\";\n\nconst FormLabel = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n ref={ref}\n className={cn(error && \"text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n});\nFormLabel.displayName = \"FormLabel\";\n\nconst FormControl = React.forwardRef<\n React.ElementRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n});\nFormControl.displayName = \"FormControl\";\n\nconst FormDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n );\n});\nFormDescription.displayName = \"FormDescription\";\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message) : children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn(\"text-sm font-medium text-destructive\", className)}\n {...props}\n >\n {body}\n </p>\n );\n});\nFormMessage.displayName = \"FormMessage\";\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n};\n","import { cn } from \"@/lib/utils\";\n\nexport const Loading = ({ className }: { className?: null | string }) => {\n return (\n <svg\n aria-hidden=\"true\"\n role=\"status\"\n className={cn(\"inline w-4 h-4 text-white animate-spin fill-inherit\", className)}\n viewBox=\"0 0 100 101\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n 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\"\n className=\"fill-inherit opacity-20\"\n ></path>\n <path\n 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\"\n className=\"fill-inherit\"\n ></path>\n </svg>\n );\n};\n","\"use client\";\n\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"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\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent };\n","\"use client\";\n\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n className,\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\",\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n"],"names":["VISIBILITY_OPTIONS","value","label","description","icon","Lock","Users","Settings","Globe","Folder","RBACControl","param","visibilityOptions","usersData","allowedModes","initialRightsMode","initialUsers","initialRoles","initialProjects","onChange","visibility","setVisibility","useState","selectedUsers","setSelectedUsers","selectedRoles","setSelectedRoles","hydratedUsers","setHydratedUsers","visibilitySelectorOpen","setVisibilitySelectorOpen","userFilters","setUserFilters","userSearchValue","setUserSearchValue","modalOpen","setModalOpen","modalLoading","setModalLoading","client","useApolloClient","data","loading","usersLoading","refetch","refetchUsers","useQuery","GET_USERS","variables","page","limit","filters","skip","roles","GET_USER_ROLES","fetchPolicy","nextFetchPolicy","type","ne","searchUsers","useCallback","copy","exists","find","filter","email","contains","push","hydrateUsers","max","length","promises","slice","map","id","rights","user","query","GET_USER_BY_ID","userById","Promise","all","useEffect","console","log","filteredUsers","option","includes","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsxs","Fragment","div","className","jsx","Label","Popover","open","onOpenChange","PopoverTrigger","asChild","Button","variant","role","aria-expanded","ChevronsUpDown","PopoverContent","Command","CommandInput","placeholder","CommandList","CommandEmpty","CommandGroup","CommandItem","onSelect","Check","cn","span","Input","e","target","Loader2","usersPagination","items","some","selected","input","checked","prev","Select","onValueChange","hydratedUser","SelectTrigger","SelectValue","SelectContent","SelectItem","size","onClick","Trash2","rolesPagination","name","r","selectedRole","Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","ScrollArea","Collapsible","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent","React","ref","props","CommandPrimitive","displayName","cmdk-input-wrapper","Search","List","Empty","Group","CommandSeparator","Separator","Item","Form","FormProvider","FormFieldContext","FormField","Provider","Controller","useFormField","fieldContext","itemContext","FormItemContext","getFieldState","formState","useFormContext","fieldState","formItemId","concat","formDescriptionId","formMessageId","FormItem","FormLabel","error","htmlFor","FormControl","Slot","aria-describedby","aria-invalid","FormDescription","p","FormMessage","children","body","String","message","Loading","svg","aria-hidden","viewBox","fill","xmlns","path","d","PopoverPrimitive","align","sideOffset","Switch","SwitchPrimitives"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"static/chunks/1645-570e014100772437.js","mappings":"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","sources":["webpack://_N_E/./components/rbac.tsx","webpack://_N_E/./components/ui/collapsible.tsx","webpack://_N_E/./components/ui/command.tsx","webpack://_N_E/./components/ui/form.tsx","webpack://_N_E/./components/ui/loading.tsx","webpack://_N_E/./components/ui/popover.tsx","webpack://_N_E/./components/ui/switch.tsx"],"sourcesContent":["\nimport {\n GET_USER_ROLES,\n GET_USERS,\n GET_USER_BY_ID\n} from \"@/queries/queries\";\nimport { useState, useEffect, useCallback } from \"react\";\nimport { useApolloClient, useQuery } from \"@apollo/client\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\";\nimport { User } from \"@/types/models/user\";\nimport { Check, ChevronsUpDown, Users, Lock, Globe, Settings, Trash2, Loader2, Folder } from \"lucide-react\";\nimport { Input } from \"@/components/ui/input\";\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogDescription,\n} from \"@/components/ui/dialog\";\nimport { ScrollArea } from \"@/components/ui/scroll-area\";\nimport { cn } from \"@/lib/utils\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/components/ui/command\";\nimport { Button } from \"@/components/ui/button\";\nimport { Label } from \"./ui/label\";\n\nconst VISIBILITY_OPTIONS = [\n { value: 'private', label: 'Private', description: 'Only you can see this agent', icon: Lock },\n { value: 'users', label: 'Shared with Users', description: 'Share with specific users', icon: Users },\n { value: 'roles', label: 'Shared with Roles', description: 'Share with specific roles', icon: Settings },\n { value: 'public', label: 'Public', description: 'Anyone can see this agent', icon: Globe },\n { value: 'projects', label: 'Projects', description: 'Share with specific projects', icon: Folder }\n]\n\ntype Modes = 'private' | 'users' | 'roles' | 'public' | 'projects'\n\nexport function RBACControl({\n allowedModes,\n initialRightsMode,\n initialUsers,\n initialRoles,\n initialProjects,\n onChange\n}: {\n allowedModes?: Modes[],\n initialRightsMode: 'private' | 'users' | 'roles' | 'public' | 'projects' | undefined,\n initialUsers: { id: number, rights: 'read' | 'write' }[] | undefined,\n initialRoles: { id: string, rights: 'read' | 'write' }[] | undefined,\n initialProjects: { id: string, rights: 'read' | 'write' }[] | undefined,\n onChange: (rights_mode: Modes, users: { id: number, rights: 'read' | 'write' }[], roles: { id: string, rights: 'read' | 'write' }[], projects: { id: string, rights: 'read' | 'write' }[]) => void\n}) {\n const [visibility, setVisibility] = useState<Modes | undefined>(initialRightsMode)\n const [selectedUsers, setSelectedUsers] = useState<{ id: number, rights: 'read' | 'write' }[]>(initialUsers || [])\n const [selectedRoles, setSelectedRoles] = useState<{ id: string, rights: 'read' | 'write' }[]>(initialRoles || [])\n const [hydratedUsers, setHydratedUsers] = useState<User[]>([])\n const [visibilitySelectorOpen, setVisibilitySelectorOpen] = useState(false)\n const [userFilters, setUserFilters] = useState<any[]>([])\n const [userSearchValue, setUserSearchValue] = useState('')\n const [modalOpen, setModalOpen] = useState(false)\n const [modalLoading, setModalLoading] = useState(false)\n const client = useApolloClient()\n\n // GraphQL queries for RBAC\n const { data: usersData, loading: usersLoading, refetch: refetchUsers } = useQuery(GET_USERS, {\n variables: { page: 1, limit: 5, filters: userFilters },\n skip: visibility !== 'users' || !userSearchValue\n })\n\n const roles = useQuery(GET_USER_ROLES, {\n fetchPolicy: \"cache-first\",\n nextFetchPolicy: \"network-only\",\n variables: {\n page: 1,\n limit: 30,\n filters: [\n {\n type: {\n ne: \"api\"\n }\n }\n ]\n },\n });\n\n\n // User search function\n const searchUsers = useCallback((value: string) => {\n setUserSearchValue(value)\n const copy = [...userFilters, {\n type: {\n ne: \"api\"\n }\n }]\n const exists = copy.find((filter) => filter.email)\n if (exists?.email) {\n exists.email.contains = value\n } else {\n copy.push({\n email: {\n contains: value,\n },\n })\n }\n setUserFilters(copy)\n refetchUsers()\n }, [userFilters, refetchUsers])\n\n const hydrateUsers = async (max: number = 5) => {\n setModalLoading(true)\n if (!selectedUsers || selectedUsers.length === 0) {\n setHydratedUsers([])\n setModalLoading(false)\n return\n }\n\n const promises = selectedUsers?.slice(0, max).map(async ({ id, rights }) => {\n const user = await client.query({\n query: GET_USER_BY_ID,\n variables: {\n id\n }\n })\n return {\n ...user.data.userById,\n rights\n };\n })\n const results = await Promise.all(promises)\n setHydratedUsers(results)\n setModalLoading(false)\n }\n\n useEffect(() => {\n hydrateUsers(5)\n }, [])\n\n useEffect(() => {\n console.log(\"selectedUsers\", selectedUsers)\n console.log(\"hydratedUsers\", hydratedUsers)\n onChange(visibility as 'private' | 'users' | 'roles' | 'public', selectedUsers, selectedRoles, [])\n }, [visibility, selectedUsers, selectedRoles])\n\n const filteredUsers = hydratedUsers?.slice(0, 5).filter(user => !!user?.id)\n\n let visibilityOptions = VISIBILITY_OPTIONS\n if (allowedModes?.length) {\n visibilityOptions = VISIBILITY_OPTIONS.filter(option => allowedModes.includes(option.value as Modes))\n }\n\n return (\n <>\n <div className=\"space-y-2\">\n <Label className=\"text-sm font-medium\">Visibility & sharing</Label>\n <Popover open={visibilitySelectorOpen} onOpenChange={setVisibilitySelectorOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={visibilitySelectorOpen}\n className=\"w-full justify-between text-sm capitalize\"\n >\n {visibilityOptions.find(option => option.value === visibility)?.label || \"Select visibility...\"}\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-full p-0\">\n <Command>\n <CommandInput placeholder=\"Search options...\" />\n <CommandList>\n <CommandEmpty>No options found.</CommandEmpty>\n <CommandGroup>\n {visibilityOptions.map((option: any) => (\n <CommandItem\n key={option.value}\n onSelect={() => {\n if (option.value !== \"users\") {\n setSelectedUsers([])\n }\n if (option.value !== \"roles\") {\n setSelectedRoles([])\n }\n setVisibility(option.value)\n setVisibilitySelectorOpen(false)\n }}\n >\n <Check\n className={cn(\n \"mr-2 h-4 w-4\",\n visibility === option.value ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n <div className=\"flex flex-col\">\n <span>{option.label}</span>\n <span className=\"text-xs text-muted-foreground\">{option.description}</span>\n </div>\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n\n {/* Users sharing section */}\n {visibility === 'users' && (\n <div className=\"space-y-3 pt-3\">\n <div>\n <Label className=\"text-sm font-medium\">Share with users</Label>\n {/* Search bar */}\n <div className=\"mt-2\">\n <Input\n placeholder=\"Search users by email...\"\n value={userSearchValue}\n onChange={(e) => searchUsers(e.target.value)}\n className=\"text-sm\"\n />\n </div>\n\n {/* Search results */}\n {usersLoading && (\n <div className=\"mt-2 flex items-center justify-center py-4\">\n <Loader2 className=\"h-4 w-4 animate-spin mr-2\" />\n <span className=\"text-sm text-muted-foreground\">Loading users...</span>\n </div>\n )}\n {!usersLoading && usersData && usersData.usersPagination?.items.length > 0 && (\n <div className=\"mt-2\">\n <div className=\"text-xs text-muted-foreground mb-1\">Search Results:</div>\n <div className=\"max-h-50 overflow-y-auto border rounded-lg\">\n {usersData.usersPagination.items.filter(user => !selectedUsers.some(selected => selected.id === user.id)).map((user: any) => (\n <label key={user.id} className=\"flex items-center space-x-2 p-2 hover:bg-muted/50 cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={selectedUsers.some(selected => selected.id === user.id)}\n onChange={(e) => {\n setSelectedUsers(prev => [...prev, { id: user.id, rights: 'read' }])\n setHydratedUsers(prev => [...prev, {\n ...user,\n rights: 'read'\n }])\n }}\n />\n <span className=\"text-sm\">{user.email}</span>\n </label>\n ))}\n </div>\n <div className=\"text-xs text-muted-foreground mt-2\">\n <span className=\"font-medium\">Note:</span> Only the first 5 users are shown, use the Search bar to find more users.\n </div>\n </div>\n )}\n {!usersLoading && userSearchValue && usersData && usersData.usersPagination.items.length === 0 && (\n <div className=\"mt-2 text-center py-4\">\n <span className=\"text-sm text-muted-foreground\">No users found</span>\n </div>\n )}\n\n {/* Selected users list */}\n {filteredUsers?.length > 0 ? (\n <div className=\"mt-2\">\n <div className=\"text-xs text-muted-foreground mb-1\">Selected Users:</div>\n <div className=\"space-y-1\">\n {filteredUsers.map((user: any) => (\n <div key={user.id} className=\"flex items-center gap-2 border p-2 rounded-lg text-sm\">\n <span className=\"flex-1 pl-2\">{user.email}</span>\n <Select\n value={user.rights}\n onValueChange={(value: 'read' | 'write') => {\n setSelectedUsers(prev =>\n prev.map(selected =>\n selected.id === user.id\n ? { ...selected, rights: value }\n : selected\n )\n )\n setHydratedUsers(prev =>\n prev.map(hydratedUser =>\n hydratedUser.id === user.id\n ? { ...hydratedUser, rights: value }\n : hydratedUser\n )\n )\n }}\n >\n <SelectTrigger className=\"h-6 w-20 text-xs\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"read\">Read</SelectItem>\n <SelectItem value=\"write\">Write</SelectItem>\n </SelectContent>\n </Select>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n className=\"h-5 w-5 p-0 hover:bg-blue-100\"\n onClick={() => {\n setSelectedUsers(prev => prev.filter(selected => selected.id !== user.id))\n setHydratedUsers(prev => prev.filter(hydratedUser => hydratedUser.id !== user.id))\n }}\n >\n <Trash2 className=\"w-3 h-3\" />\n </Button>\n </div>\n ))}\n {selectedUsers && selectedUsers.length > 5 && (\n <Button\n variant=\"link\"\n type=\"button\"\n className=\"h-auto p-0 text-blue-600 hover:text-blue-800 text-xs\"\n onClick={() => {\n hydrateUsers(50)\n setModalOpen(true)\n }}\n >\n + {selectedUsers.length - 5} more users\n </Button>\n )}\n </div>\n </div>\n ) : (\n <div className=\"mt-2 text-center py-4\">\n <span className=\"text-sm text-muted-foreground\">No users selected.</span>\n </div>\n )}\n </div>\n </div>\n )}\n\n {/* Roles sharing section */}\n {visibility === 'roles' && (\n <div className=\"space-y-3\">\n <div>\n <Label className=\"text-sm font-medium\">Share with roles ({selectedRoles?.length || 0})</Label>\n\n {/* Available roles list */}\n <div className=\"mt-2\">\n <div className=\"text-xs text-muted-foreground mb-1\">Available Roles</div>\n {roles.loading && (\n <div className=\"flex items-center justify-center py-4 border rounded-lg\">\n <Loader2 className=\"h-4 w-4 animate-spin mr-2\" />\n <span className=\"text-sm text-muted-foreground\">Loading roles...</span>\n </div>\n )}\n {!roles.loading && roles.data && (\n <div className=\"max-h-24 overflow-y-auto border rounded-lg\">\n {roles.data.rolesPagination.items.map((role: any) => (\n <label key={role.id} className=\"flex items-center space-x-2 p-2 hover:bg-muted/50 cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={selectedRoles.some(selected => selected.id === role.id)}\n onChange={(e) => {\n if (e.target.checked) {\n setSelectedRoles(prev => [...prev, { id: role.id, rights: 'read' }])\n } else {\n setSelectedRoles(prev => prev.filter(selected => selected.id !== role.id))\n }\n }}\n />\n <span className=\"text-sm capitalize\">{role.name}</span>\n </label>\n ))}\n </div>\n )}\n </div>\n\n {/* Selected roles list */}\n {selectedRoles.length > 0 && roles.data && (\n <div className=\"mt-2\">\n <div className=\"text-xs text-muted-foreground mb-1\">Selected Roles:</div>\n <div className=\"space-y-1\">\n {selectedRoles.map((selectedRole: any) => {\n const role = roles.data.rolesPagination.items.find((r: any) => r.id === selectedRole.id)\n return (\n <div key={selectedRole.id} className=\"flex items-center gap-2 border p-2 rounded-lg text-sm\">\n <span className=\"flex-1 pl-2 capitalize\">{role?.name}</span>\n <Select\n value={selectedRole.rights}\n onValueChange={(value: 'read' | 'write') => {\n setSelectedRoles(prev =>\n prev.map(selected =>\n selected.id === selectedRole.id\n ? { ...selected, rights: value }\n : selected\n )\n )\n }}\n >\n <SelectTrigger className=\"h-6 text-xs w-20 border-none\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"read\">\n <span className=\"pr-7\">Read</span>\n </SelectItem>\n <SelectItem value=\"write\">\n <span className=\"pr-7\">Write</span>\n </SelectItem>\n </SelectContent>\n </Select>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n className=\"h-5 w-5 p-0 hover:bg-blue-100\"\n onClick={() => {\n setSelectedRoles(prev => prev.filter(selected => selected.id !== selectedRole.id))\n }}\n >\n <Trash2 className=\"w-3 h-3\" />\n </Button>\n </div>\n )\n })}\n </div>\n </div>\n )}\n </div>\n </div>\n )}\n\n {/* Modal for viewing all selected users */}\n <Dialog open={modalOpen} onOpenChange={setModalOpen} >\n <DialogContent className=\"sm:max-w-2xl max-h-[85vh] flex flex-col\">\n <DialogHeader>\n <DialogTitle>All Selected Users ({selectedUsers?.length || 0})</DialogTitle>\n <DialogDescription>\n View and manage all selected users and their permissions\n </DialogDescription>\n </DialogHeader>\n\n <ScrollArea className=\"flex-1 pr-4\">\n {modalLoading && (\n <div className=\"flex items-center justify-center py-8\">\n <Loader2 className=\"h-6 w-6 animate-spin mr-2\" />\n <span className=\"text-sm text-muted-foreground\">Loading users...</span>\n </div>\n )}\n\n {!modalLoading && hydratedUsers.length > 0 && (\n <div className=\"space-y-2\">\n {hydratedUsers.map((user: any) => (\n <div key={user.id} className=\"flex items-center gap-3 border p-3 rounded-lg\">\n <span className=\"flex-1\">{user.email}</span>\n <Select\n value={user.rights}\n onValueChange={(value: 'read' | 'write') => {\n // Update selectedUsers state\n setSelectedUsers(prev =>\n prev.map(selected =>\n selected.id === user.id\n ? { ...selected, rights: value }\n : selected\n )\n )\n // Update hydratedUsers state if this user is in the first 5\n setHydratedUsers(prev =>\n prev.map(hydratedUser =>\n hydratedUser.id === user.id\n ? { ...hydratedUser, rights: value }\n : hydratedUser\n )\n )\n }}\n >\n <SelectTrigger className=\"w-24\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"read\">Read</SelectItem>\n <SelectItem value=\"write\">Write</SelectItem>\n </SelectContent>\n </Select>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n className=\"h-8 w-8 p-0 hover:bg-destructive/10\"\n onClick={() => {\n setSelectedUsers(prev => prev.filter(selected => selected.id !== user.id))\n setHydratedUsers(prev => prev.filter(hydratedUser => hydratedUser.id !== user.id))\n }}\n >\n <Trash2 className=\"w-4 h-4\" />\n </Button>\n </div>\n ))}\n </div>\n )}\n\n {!modalLoading && hydratedUsers.length === 0 && (\n <div className=\"text-center py-8\">\n <span className=\"text-sm text-muted-foreground\">No users selected</span>\n </div>\n )}\n </ScrollArea>\n </DialogContent>\n </Dialog >\n </>\n )\n}","\"use client\";\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nconst Collapsible = CollapsiblePrimitive.Root;\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n","\"use client\";\n\nimport { type DialogProps } from \"@radix-ui/react-dialog\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { Search } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Dialog, DialogContent } from \"@/components/ui/dialog\";\nimport { cn } from \"@/lib/utils\";\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\ninterface CommandDialogProps extends DialogProps {}\n\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:size-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:size-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"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\",\n className,\n )}\n {...props}\n />\n </div>\n));\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n));\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"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\",\n className,\n )}\n {...props}\n />\n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"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\",\n className,\n )}\n {...props}\n />\n));\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className,\n )}\n {...props}\n />\n );\n};\nCommandShortcut.displayName = \"CommandShortcut\";\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","import * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport * as React from \"react\";\nimport {\n Controller,\n ControllerProps,\n FieldPath,\n FieldValues,\n FormProvider,\n useFormContext,\n} from \"react-hook-form\";\n\nimport { Label } from \"@/components/ui/label\";\nimport { cn } from \"@/lib/utils\";\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState, formState } = useFormContext();\n\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n\nconst FormItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props} />\n </FormItemContext.Provider>\n );\n});\nFormItem.displayName = \"FormItem\";\n\nconst FormLabel = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n ref={ref}\n className={cn(error && \"text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n});\nFormLabel.displayName = \"FormLabel\";\n\nconst FormControl = React.forwardRef<\n React.ElementRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n});\nFormControl.displayName = \"FormControl\";\n\nconst FormDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n );\n});\nFormDescription.displayName = \"FormDescription\";\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message) : children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn(\"text-sm font-medium text-destructive\", className)}\n {...props}\n >\n {body}\n </p>\n );\n});\nFormMessage.displayName = \"FormMessage\";\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n};\n","import { cn } from \"@/lib/utils\";\n\nexport const Loading = ({ className }: { className?: null | string }) => {\n return (\n <svg\n aria-hidden=\"true\"\n role=\"status\"\n className={cn(\"inline w-4 h-4 text-white animate-spin fill-inherit\", className)}\n viewBox=\"0 0 100 101\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n 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\"\n className=\"fill-inherit opacity-20\"\n ></path>\n <path\n 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\"\n className=\"fill-inherit\"\n ></path>\n </svg>\n );\n};\n","\"use client\";\n\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"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\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent };\n","\"use client\";\n\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n className,\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\",\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n"],"names":["VISIBILITY_OPTIONS","value","label","description","icon","Lock","Users","Settings","Globe","Folder","RBACControl","param","visibilityOptions","usersData","allowedModes","initialRightsMode","initialUsers","initialRoles","initialProjects","onChange","visibility","setVisibility","useState","selectedUsers","setSelectedUsers","selectedRoles","setSelectedRoles","hydratedUsers","setHydratedUsers","visibilitySelectorOpen","setVisibilitySelectorOpen","userFilters","setUserFilters","userSearchValue","setUserSearchValue","modalOpen","setModalOpen","modalLoading","setModalLoading","client","useApolloClient","data","loading","usersLoading","refetch","refetchUsers","useQuery","GET_USERS","variables","page","limit","filters","skip","roles","GET_USER_ROLES","fetchPolicy","nextFetchPolicy","type","ne","searchUsers","useCallback","copy","exists","find","filter","email","contains","push","hydrateUsers","max","length","promises","slice","map","id","rights","user","query","GET_USER_BY_ID","userById","Promise","all","useEffect","console","log","filteredUsers","option","includes","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsxs","Fragment","div","className","jsx","Label","Popover","open","onOpenChange","PopoverTrigger","asChild","Button","variant","role","aria-expanded","ChevronsUpDown","PopoverContent","Command","CommandInput","placeholder","CommandList","CommandEmpty","CommandGroup","CommandItem","onSelect","Check","cn","span","Input","e","target","Loader2","usersPagination","items","some","selected","input","checked","prev","Select","onValueChange","hydratedUser","SelectTrigger","SelectValue","SelectContent","SelectItem","size","onClick","Trash2","rolesPagination","name","r","selectedRole","Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","ScrollArea","Collapsible","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent","React","ref","props","CommandPrimitive","displayName","cmdk-input-wrapper","Search","List","Empty","Group","CommandSeparator","Separator","Item","Form","FormProvider","FormFieldContext","FormField","Provider","Controller","useFormField","fieldContext","itemContext","FormItemContext","getFieldState","formState","useFormContext","fieldState","formItemId","concat","formDescriptionId","formMessageId","FormItem","FormLabel","error","htmlFor","FormControl","Slot","aria-describedby","aria-invalid","FormDescription","p","FormMessage","children","body","String","message","Loading","svg","aria-hidden","viewBox","fill","xmlns","path","d","PopoverPrimitive","align","sideOffset","Switch","SwitchPrimitives"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1957],{8014:function(e,s,a){a.d(s,{P:function(){return _}});var t=a(57437),l=a(27689),r=a(2265),i=a(63251),n=a(7211),d=a(53647),o=a(66337),c=a(95805),m=a(98728),u=a(29202),x=a(14924),h=a(24156),p=a(30401),v=a(15863),f=a(18930),j=a(95186),g=a(26110),N=a(19378),b=a(94508),w=a(57054),y=a(23518),k=a(62869),C=a(26815);let S=[{value:"private",label:"Private",description:"Only you can see this agent",icon:o.Z},{value:"users",label:"Shared with Users",description:"Share with specific users",icon:c.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:u.Z},{value:"projects",label:"Projects",description:"Share with specific projects",icon:x.Z}];function _(e){var s,a;let{allowedModes:o,initialRightsMode:c,initialUsers:m,initialRoles:u,initialProjects:x,onChange:_}=e,[z,Z]=(0,r.useState)(c),[E,R]=(0,r.useState)(m||[]),[A,U]=(0,r.useState)(u||[]),[P,D]=(0,r.useState)([]),[Y,B]=(0,r.useState)(!1),[V,W]=(0,r.useState)([]),[I,M]=(0,r.useState)(""),[F,O]=(0,r.useState)(!1),[q,Q]=(0,r.useState)(!1),L=(0,i.x)(),{data:$,loading:J,refetch:K}=(0,n.aM)(l.fo,{variables:{page:1,limit:5,filters:V},skip:"users"!==z||!I}),G=(0,n.aM)(l.l1,{fetchPolicy:"cache-first",nextFetchPolicy:"network-only",variables:{page:1,limit:30,filters:[{type:{ne:"api"}}]}}),H=(0,r.useCallback)(e=>{M(e);let s=[...V,{type:{ne:"api"}}],a=s.find(e=>e.email);(null==a?void 0:a.email)?a.email.contains=e:s.push({email:{contains:e}}),W(s),K()},[V,K]),T=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:5;if(Q(!0),!E||0===E.length){D([]),Q(!1);return}let s=null==E?void 0:E.slice(0,e).map(async e=>{let{id:s,rights:a}=e;return{...(await L.query({query:l.L5,variables:{id:s}})).data.userById,rights:a}});D(await Promise.all(s)),Q(!1)};(0,r.useEffect)(()=>{T(5)},[]),(0,r.useEffect)(()=>{console.log("selectedUsers",E),console.log("hydratedUsers",P),_(z,E,A,[])},[z,E,A]);let X=null==P?void 0:P.slice(0,5).filter(e=>!!(null==e?void 0:e.id)),ee=S;return(null==o?void 0:o.length)&&(ee=S.filter(e=>o.includes(e.value))),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(C._,{className:"text-sm font-medium",children:"Visibility & sharing"}),(0,t.jsxs)(w.J2,{open:Y,onOpenChange:B,children:[(0,t.jsx)(w.xo,{asChild:!0,children:(0,t.jsxs)(k.z,{variant:"outline",role:"combobox","aria-expanded":Y,className:"w-full justify-between text-sm capitalize",children:[(null===(s=ee.find(e=>e.value===z))||void 0===s?void 0:s.label)||"Select visibility...",(0,t.jsx)(h.Z,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,t.jsx)(w.yk,{className:"w-full p-0",children:(0,t.jsxs)(y.mY,{children:[(0,t.jsx)(y.sZ,{placeholder:"Search options..."}),(0,t.jsxs)(y.e8,{children:[(0,t.jsx)(y.rb,{children:"No options found."}),(0,t.jsx)(y.fu,{children:ee.map(e=>(0,t.jsxs)(y.di,{onSelect:()=>{"users"!==e.value&&R([]),"roles"!==e.value&&U([]),Z(e.value),B(!1)},children:[(0,t.jsx)(p.Z,{className:(0,b.cn)("mr-2 h-4 w-4",z===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"===z&&(0,t.jsx)("div",{className:"space-y-3 pt-3",children:(0,t.jsxs)("div",{children:[(0,t.jsx)(C._,{className:"text-sm font-medium",children:"Share with users"}),(0,t.jsx)("div",{className:"mt-2",children:(0,t.jsx)(j.I,{placeholder:"Search users by email...",value:I,onChange:e=>H(e.target.value),className:"text-sm"})}),J&&(0,t.jsxs)("div",{className:"mt-2 flex items-center justify-center py-4",children:[(0,t.jsx)(v.Z,{className:"h-4 w-4 animate-spin mr-2"}),(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Loading users..."})]}),!J&&$&&(null===(a=$.usersPagination)||void 0===a?void 0:a.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:$.usersPagination.items.filter(e=>!E.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:E.some(s=>s.id===e.id),onChange:s=>{R(s=>[...s,{id:e.id,rights:"read"}]),D(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."]})]}),!J&&I&&$&&0===$.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==X?void 0:X.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:[X.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(a=>a.map(a=>a.id===e.id?{...a,rights:s}:a)),D(a=>a.map(a=>a.id===e.id?{...a,rights:s}:a))},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)(k.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)),D(s=>s.filter(s=>s.id!==e.id))},children:(0,t.jsx)(f.Z,{className:"w-3 h-3"})})]},e.id)),E&&E.length>5&&(0,t.jsxs)(k.z,{variant:"link",type:"button",className:"h-auto p-0 text-blue-600 hover:text-blue-800 text-xs",onClick:()=>{T(50),O(!0)},children:["+ ",E.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"===z&&(0,t.jsx)("div",{className:"space-y-3",children:(0,t.jsxs)("div",{children:[(0,t.jsxs)(C._,{className:"text-sm font-medium",children:["Share with roles (",(null==A?void 0:A.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"}),G.loading&&(0,t.jsxs)("div",{className:"flex items-center justify-center py-4 border rounded-lg",children:[(0,t.jsx)(v.Z,{className:"h-4 w-4 animate-spin mr-2"}),(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Loading roles..."})]}),!G.loading&&G.data&&(0,t.jsx)("div",{className:"max-h-24 overflow-y-auto border rounded-lg",children:G.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:A.some(s=>s.id===e.id),onChange:s=>{s.target.checked?U(s=>[...s,{id:e.id,rights:"read"}]):U(s=>s.filter(s=>s.id!==e.id))}}),(0,t.jsx)("span",{className:"text-sm capitalize",children:e.name})]},e.id))})]}),A.length>0&&G.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:A.map(e=>{let s=G.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=>{U(a=>a.map(a=>a.id===e.id?{...a,rights:s}:a))},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)(k.z,{size:"sm",variant:"ghost",className:"h-5 w-5 p-0 hover:bg-blue-100",onClick:()=>{U(s=>s.filter(s=>s.id!==e.id))},children:(0,t.jsx)(f.Z,{className:"w-3 h-3"})})]},e.id)})})]})]})}),(0,t.jsx)(g.Vq,{open:F,onOpenChange:O,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==E?void 0:E.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)(v.Z,{className:"h-6 w-6 animate-spin mr-2"}),(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Loading users..."})]}),!q&&P.length>0&&(0,t.jsx)("div",{className:"space-y-2",children:P.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(a=>a.map(a=>a.id===e.id?{...a,rights:s}:a)),D(a=>a.map(a=>a.id===e.id?{...a,rights:s}:a))},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)(k.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)),D(s=>s.filter(s=>s.id!==e.id))},children:(0,t.jsx)(f.Z,{className:"w-4 h-4"})})]},e.id))}),!q&&0===P.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"})})]})]})})]})}},27699:function(e,s,a){a.d(s,{x:function(){return b}});var t=a(57437),l=a(2265),r=a(12199),i=a(13832),n=a(27689),d=a(26110),o=a(62869),c=a(95186),m=a(76818),u=a(26815),x=a(40875),h=a(88893),p=a(18930),v=a(77992),f=a(94508),j=a(8014),g=a(12339),N=a(35629);function b(e){var s,a,b,w,y,k;let{isOpen:C,onClose:S,messages:_,sessionTitle:z,existingWorkflow:Z,isReadOnly:E=!1}=e,{user:R}=(0,l.useContext)(i.S),{toast:A}=(0,v.pm)(),[U,P]=(0,l.useState)({rights_mode:(null==Z?void 0:Z.rights_mode)||"private",users:(null==Z?void 0:null===(s=Z.RBAC)||void 0===s?void 0:s.users)||[],roles:(null==Z?void 0:null===(a=Z.RBAC)||void 0===a?void 0:a.roles)||[],projects:(null==Z?void 0:null===(b=Z.RBAC)||void 0===b?void 0:b.projects)||[]}),D=!!Z,[Y,B]=(0,l.useState)((null==Z?void 0:Z.name)||""),[V,W]=(0,l.useState)((null==Z?void 0:Z.description)||""),[I,M]=(0,l.useState)((null==Z?void 0:Z.variables)||[]),[F,O]=(0,l.useState)((null==Z?void 0:Z.steps_json)||[]),[q,Q]=(0,l.useState)(!1),[L,$]=(0,l.useState)("setup"),[J,K]=(0,l.useState)(!1),[G,H]=(0,l.useState)(null),[T,X]=(0,l.useState)(""),[ee]=(0,r.D)(n.B_),[es]=(0,r.D)(n._J);l.useEffect(()=>{if(_.length>0){let e=[];_.forEach((s,a)=>{let t=s.content||(s.parts?s.parts.filter(e=>"text"===e.type).map(e=>e.text).join("\n"):"");"user"===s.role?e.push({id:"step_".concat(a+1),type:"user",content:t,variablesUsed:[]}):"assistant"===s.role?e.push({id:"step_".concat(a+1),type:"assistant",contentExample:t}):"system"===s.role&&s.parts&&s.parts.forEach((s,t)=>{"tool-invocation"===s.type&&s.toolInvocation&&e.push({id:"step_".concat(a+1,"_").concat(t),type:"tool",toolName:s.toolInvocation.toolName})})}),console.log("transformedSteps",e),O(e),B(z||"My Workflow")}},[_,z,F.length]);let ea=(0,l.useCallback)((e,s)=>{if(!e.match(/^[A-Za-z_][A-Za-z0-9_]{1,63}$/))return A({title:"Invalid variable name",description:"Variable name must start with a letter or underscore, contain only letters, numbers, and underscores, and be 2-64 characters long.",variant:"destructive"}),!1;if(I.some(s=>s.name===e))return!0;let a={name:e,type:"string",required:!0,description:s||"Auto-detected variable"};return M(e=>[...e,a]),!0},[I,A]),et=(0,l.useCallback)((e,s)=>{let a=(s.match(/\{([A-Za-z_][A-Za-z0-9_]{1,63})\}/g)||[]).map(e=>e.slice(1,-1));a.forEach(e=>{ea(e)}),O(t=>t.map(t=>t.id===e?{...t,content:s,variablesUsed:a}:t));let t=new Set;F.forEach(a=>{a.id===e?(s.match(/\{([A-Za-z_][A-Za-z0-9_]{1,63})\}/g)||[]).forEach(e=>t.add(e.slice(1,-1))):a.variablesUsed&&a.variablesUsed.forEach(e=>t.add(e))}),M(e=>e.filter(e=>t.has(e.name)))},[F,ea]),el=(0,l.useCallback)(e=>{M(s=>s.filter(s=>s.name!==e)),O(s=>s.map(s=>{var a,t;return{...s,content:null===(a=s.content)||void 0===a?void 0:a.replace(RegExp("\\{".concat(e,"\\}"),"g"),""),variablesUsed:(null===(t=s.variablesUsed)||void 0===t?void 0:t.filter(s=>s!==e))||[]}}))},[]),er=(0,l.useCallback)((e,s)=>s.match(/^[A-Za-z_][A-Za-z0-9_]{1,63}$/)?I.some(a=>a.name===s&&a.name!==e)?(A({title:"Variable name already exists",description:"A variable with this name already exists.",variant:"destructive"}),!1):(M(a=>a.map(a=>a.name===e?{...a,name:s}:a)),O(a=>a.map(a=>{var t,l;return{...a,content:null===(t=a.content)||void 0===t?void 0:t.replace(RegExp("\\{".concat(e,"\\}"),"g"),"{".concat(s,"}")),variablesUsed:(null===(l=a.variablesUsed)||void 0===l?void 0:l.map(a=>a===e?s:a))||[]}})),!0):(A({title:"Invalid variable name",description:"Variable name must start with a letter or underscore and contain only letters, numbers, and underscores.",variant:"destructive"}),!1),[I,A]),ei=(0,l.useMemo)(()=>{var e,s,a;return!!Y.trim()&&0!==F.length&&("users"!==U.rights_mode||(null===(e=U.users)||void 0===e?void 0:e.length)!==0)&&("roles"!==U.rights_mode||(null===(s=U.roles)||void 0===s?void 0:s.length)!==0)&&("projects"!==U.rights_mode||(null===(a=U.projects)||void 0===a?void 0:a.length)!==0)&&F.filter(e=>"user"===e.type).every(e=>(e.content||"").replace(/\{[^}]+\}/g,"").trim().length>0)},[Y,F,U]),en=(0,l.useCallback)(async()=>{if(ei&&(null==R?void 0:R.id)){Q(!0);try{let e=F.map(e=>({id:e.id,type:e.type,..."user"===e.type&&{content:e.content},..."assistant"===e.type&&{contentExample:e.contentExample},..."tool"===e.type&&{toolName:e.toolName}}));D&&Z?(await es({variables:{id:Z.id,name:Y.trim(),description:V.trim()||null,rights_mode:U.rights_mode,RBAC:{users:U.users,roles:U.roles,projects:U.projects},variables:I,steps_json:e}}),A({title:"Workflow updated!",description:'"'.concat(Y,'" has been updated successfully.')})):(await ee({variables:{name:Y.trim(),description:V.trim()||null,owner:R.id,rights_mode:U.rights_mode,RBAC:{users:U.users,roles:U.roles,projects:U.projects},variables:I,steps_json:e}}),A({title:"Workflow created!",description:'"'.concat(Y,'" has been saved as a workflow template.')})),S()}catch(e){console.error("Error saving workflow:",e),A({title:"Error saving workflow",description:"There was an error saving your workflow. Please try again.",variant:"destructive"})}finally{Q(!1)}}},[ei,null==R?void 0:R.id,Y,V,U,I,F,ee,es,A,S,D,Z]);return C?(0,t.jsx)(d.Vq,{open:C,onOpenChange:S,children:(0,t.jsxs)(d.cZ,{className:"max-w-4xl max-h-[92vh] flex flex-col",children:[(0,t.jsxs)(d.fK,{className:"pb-4",children:[(0,t.jsx)(d.$N,{className:"text-lg",children:D?E?"View Workflow":"Edit Workflow":"Save as Workflow"}),(0,t.jsx)(d.Be,{className:"text-sm",children:D?E?"View workflow details and configuration.":"Modify this workflow template. Edit your messages and use {variable_name} syntax to create variables.":"Convert this conversation into a reusable workflow template. Edit your messages and use {variable_name} syntax to create variables."})]}),(0,t.jsx)("div",{className:"flex-1 mt-6",children:(0,t.jsxs)(g.mQ,{value:L,onValueChange:$,className:"h-full flex flex-col",children:[(0,t.jsxs)(g.dr,{className:"grid w-full grid-cols-2 mb-6",children:[(0,t.jsx)(g.SP,{value:"setup",className:"data-[state=active]:bg-background",children:"Setup & Permissions"}),(0,t.jsx)(g.SP,{value:"workflow",className:"data-[state=active]:bg-background",children:"Workflow Steps & Variables"})]}),(0,t.jsxs)("div",{className:"flex-1 pb-6",children:[(0,t.jsx)(g.nU,{value:"setup",className:"mt-0 h-full",children:(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(u._,{htmlFor:"workflow-name",className:"text-base font-semibold",children:"Workflow Name *"}),(0,t.jsx)(c.I,{id:"workflow-name",value:Y,onChange:e=>B(e.target.value),placeholder:"My Workflow",className:"mt-2 h-11",readOnly:E}),!Y.trim()&&(0,t.jsxs)("p",{className:"text-sm text-destructive mt-1 flex items-center",children:[(0,t.jsx)("span",{className:"mr-1",children:"⚠️"}),"Workflow name is required"]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(u._,{htmlFor:"workflow-description",className:"text-base font-semibold",children:"Description"}),(0,t.jsx)(m.g,{id:"workflow-description",value:V,onChange:e=>W(e.target.value),placeholder:"Describe what this workflow does and when to use it...",rows:3,className:"mt-2 resize-none",readOnly:E})]})]}),(0,t.jsxs)("div",{className:"border-t pt-6",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-base font-semibold mb-1",children:"Sharing & Permissions"}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Control who can view and edit this workflow"})]}),(0,t.jsxs)(o.z,{type:"button",variant:"outline",size:"sm",onClick:()=>K(!J),className:"ml-4",children:[J?"Hide Advanced":"Show Advanced",(0,t.jsx)(x.Z,{className:(0,f.cn)("w-4 h-4 ml-1 transition-transform",J&&"rotate-180")})]})]}),J&&(0,t.jsx)(j.P,{initialRightsMode:null==Z?void 0:Z.rights_mode,initialUsers:null==Z?void 0:null===(w=Z.RBAC)||void 0===w?void 0:w.users,initialRoles:null==Z?void 0:null===(y=Z.RBAC)||void 0===y?void 0:y.roles,initialProjects:null==Z?void 0:null===(k=Z.RBAC)||void 0===k?void 0:k.projects,onChange:(e,s,a,t)=>{P({rights_mode:e,users:s,roles:a,projects:t})}}),!J&&(0,t.jsx)("div",{className:"text-sm text-muted-foreground bg-muted/30 p-3 rounded-md",children:"Using default permissions (private to you)"})]})]})}),(0,t.jsx)(g.nU,{value:"workflow",className:"mt-0 h-full",children:(0,t.jsxs)("div",{className:"h-full flex gap-6",children:[(0,t.jsxs)("div",{className:"flex-1",children:[(0,t.jsxs)("div",{className:"mb-4",children:[(0,t.jsx)("h3",{className:"text-base font-semibold mb-2",children:"Conversation Steps"}),(0,t.jsx)("div",{className:"border rounded-lg p-3 mb-4",children:(0,t.jsxs)("p",{className:"text-sm",children:["\uD83D\uDCA1 ",(0,t.jsx)("strong",{children:"Pro tip:"})," Use ","{variable_name}"," syntax in your messages to create reusable variables. For example you can use ","{company_name}"," to create a variable for the company name so you can reuse this flow template with different companies."]})})]}),(0,t.jsx)("div",{className:"space-y-4 max-h-[500px] overflow-y-auto pr-2",children:F.map((e,s)=>(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"border rounded-lg p-4 bg-card",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 mb-3",children:[(0,t.jsx)("span",{className:(0,f.cn)("text-sm font-medium px-3 py-1 rounded-full","user"===e.type?"bg-blue-100 text-blue-700":"assistant"===e.type?"bg-green-100 text-green-700":"bg-purple-100 text-purple-700"),children:"user"===e.type?"\uD83D\uDC64 User":"assistant"===e.type?"\uD83E\uDD16 Assistant":"\uD83D\uDD27 ".concat(e.toolName)}),e.variablesUsed&&e.variablesUsed.length>0&&(0,t.jsx)("div",{className:"flex gap-1 flex-wrap",children:e.variablesUsed.map(e=>(0,t.jsx)("span",{className:"text-xs bg-blue-50 text-blue-600 px-2 py-1 rounded font-mono border border-blue-200",children:"{".concat(e,"}")},e))})]}),"user"===e.type?(0,t.jsx)("div",{children:(0,t.jsx)(m.g,{value:e.content||"",onChange:s=>et(e.id,s.target.value),placeholder:"Enter your message...",className:"min-h-[80px] resize-none",rows:3,readOnly:E})}):(0,t.jsx)("div",{className:"bg-muted/50 p-3 rounded-md",children:"assistant"===e.type?(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-xs font-medium text-muted-foreground mb-2",children:"Example response (will be regenerated):"}),(0,t.jsx)(N.H,{children:e.contentExample})]}):(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"text-xs font-medium text-muted-foreground mb-1",children:["Tool: ",e.toolName]}),(0,t.jsx)("div",{className:"text-sm text-muted-foreground",children:"Parameters will be generated dynamically"})]})})]}),s<F.length-1&&(0,t.jsx)("div",{className:"flex justify-center my-3",children:(0,t.jsx)(x.Z,{className:"w-5 h-5 text-muted-foreground/50"})})]},e.id))})]}),(0,t.jsxs)("div",{className:"w-80",children:[(0,t.jsxs)("div",{className:"mb-4",children:[(0,t.jsxs)("h3",{className:"text-base font-semibold mb-2",children:["Variables (",I.length,")"]}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Auto-detected from your messages"})]}),I.length>0?(0,t.jsx)("div",{className:"space-y-3 max-h-[500px] overflow-y-auto",children:I.map(e=>(0,t.jsxs)("div",{className:"border rounded-lg p-3 bg-card",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between mb-2",children:[(0,t.jsx)("div",{className:"font-mono text-blue-600 font-medium text-sm",children:"{".concat(e.name,"}")}),!E&&(0,t.jsx)("div",{className:"flex gap-1",children:G===e.name?(0,t.jsx)(c.I,{value:T,onChange:e=>X(e.target.value),className:"h-6 text-xs font-mono w-20",placeholder:"variable_name",autoFocus:!0,onKeyDown:s=>{"Enter"===s.key?(T&&T!==e.name&&er(e.name,T),H(null),X("")):"Escape"===s.key&&(H(null),X(""))},onBlur:()=>{T&&T!==e.name&&er(e.name,T),H(null),X("")}}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.z,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:()=>{H(e.name),X(e.name)},children:(0,t.jsx)(h.Z,{className:"w-3 h-3"})}),(0,t.jsx)(o.z,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0 text-destructive hover:bg-destructive/10",onClick:()=>el(e.name),children:(0,t.jsx)(p.Z,{className:"w-3 h-3"})})]})})]}),(0,t.jsx)("div",{className:"text-xs text-muted-foreground mb-2",children:e.description}),(0,t.jsxs)("div",{className:"flex gap-1",children:[(0,t.jsx)("span",{className:"text-xs bg-gray-100 text-gray-700 px-1.5 py-0.5 rounded",children:e.type}),e.required&&(0,t.jsx)("span",{className:"text-xs bg-orange-100 text-orange-700 px-1.5 py-0.5 rounded",children:"required"})]})]},e.name))}):(0,t.jsxs)("div",{className:"text-center py-8 text-muted-foreground border-2 border-dashed rounded-lg",children:[(0,t.jsx)("div",{className:"mb-3",children:(0,t.jsx)("span",{className:"text-3xl",children:"\uD83D\uDCDD"})}),(0,t.jsx)("div",{className:"text-sm mb-1 font-medium",children:"No variables yet"}),(0,t.jsxs)("div",{className:"text-xs",children:["Use ","{variable_name}"," syntax in your messages"]})]})]})]})})]})]})}),(0,t.jsx)("div",{className:"border-t p-4 bg-background",children:(0,t.jsxs)(d.cN,{children:[(0,t.jsx)(o.z,{variant:"outline",onClick:S,children:E?"Close":"Cancel"}),!E&&(0,t.jsx)(t.Fragment,{children:(0,t.jsx)(o.z,{onClick:en,disabled:!ei||q,className:(0,f.cn)("min-w-[140px]",!ei&&"opacity-50 cursor-not-allowed"),children:q?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"animate-spin rounded-full h-4 w-4 border-b-2 border-white mr-2"}),D?"Updating...":"Saving..."]}):D?"Update Workflow":"Save Workflow"})})]})})]})}):null}},23518:function(e,s,a){a.d(s,{di:function(){return h},e8:function(){return c},fu:function(){return u},mY:function(){return d},rb:function(){return m},sZ:function(){return o},zz:function(){return x}});var t=a(57437),l=a(83918),r=a(73247),i=a(2265);a(26110);var n=a(94508);let d=i.forwardRef((e,s)=>{let{className:a,...r}=e;return(0,t.jsx)(l.mY,{ref:s,className:(0,n.cn)("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",a),...r})});d.displayName=l.mY.displayName;let o=i.forwardRef((e,s)=>{let{className:a,...i}=e;return(0,t.jsxs)("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[(0,t.jsx)(r.Z,{className:"mr-2 size-4 shrink-0 opacity-50"}),(0,t.jsx)(l.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",a),...i})]})});o.displayName=l.mY.Input.displayName;let c=i.forwardRef((e,s)=>{let{className:a,...r}=e;return(0,t.jsx)(l.mY.List,{ref:s,className:(0,n.cn)("max-h-[300px] overflow-y-auto overflow-x-hidden",a),...r})});c.displayName=l.mY.List.displayName;let m=i.forwardRef((e,s)=>(0,t.jsx)(l.mY.Empty,{ref:s,className:"py-6 text-center text-sm",...e}));m.displayName=l.mY.Empty.displayName;let u=i.forwardRef((e,s)=>{let{className:a,...r}=e;return(0,t.jsx)(l.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",a),...r})});u.displayName=l.mY.Group.displayName;let x=i.forwardRef((e,s)=>{let{className:a,...r}=e;return(0,t.jsx)(l.mY.Separator,{ref:s,className:(0,n.cn)("-mx-1 h-px bg-border",a),...r})});x.displayName=l.mY.Separator.displayName;let h=i.forwardRef((e,s)=>{let{className:a,...r}=e;return(0,t.jsx)(l.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",a),...r})});h.displayName=l.mY.Item.displayName},10492:function(e,s,a){a.d(s,{g:function(){return r}});var t=a(57437),l=a(94508);let r=e=>{let{className:s}=e;return(0,t.jsxs)("svg",{"aria-hidden":"true",role:"status",className:(0,l.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,a){a.d(s,{J2:function(){return n},xo:function(){return d},yk:function(){return o}});var t=a(57437),l=a(27312),r=a(2265),i=a(94508);let n=l.fC,d=l.xz,o=r.forwardRef((e,s)=>{let{className:a,align:r="center",sideOffset:n=4,...d}=e;return(0,t.jsx)(l.h_,{children:(0,t.jsx)(l.VY,{ref:s,align:r,sideOffset:n,className:(0,i.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",a),...d})})});o.displayName=l.VY.displayName}}]);
|
|
2
|
+
//# sourceMappingURL=1957-5867716304ecd208.js.map
|