From 221838a7507e2600ee790ea7c84561aefd870204 Mon Sep 17 00:00:00 2001 From: 9qeklajc <9qeklajc> Date: Sat, 25 Oct 2025 23:44:34 +0200 Subject: [PATCH] fix out --- compose.yml | 15 ++------- scripts/build-ui.sh | 3 +- ui/Dockerfile.build | 12 ++++++-- ui_out/404.html | 1 - ui_out/404/index.html | 1 - .../UEmzYNZb207mpxXHDgTmm/_buildManifest.js | 1 - .../UEmzYNZb207mpxXHDgTmm/_ssgManifest.js | 1 - .../static/chunks/222-23a547ab56ff9638.js | 1 - .../static/chunks/226-b955dd578f372adc.js | 1 - .../static/chunks/29-2e340e48c1ca61fb.js | 1 - .../static/chunks/363-c1e2b04767a3c84b.js | 1 - .../static/chunks/375-7943a6dae9b88f03.js | 1 - .../static/chunks/481-7440db9fd9bb94b2.js | 1 - .../static/chunks/497-cf9737613a43115a.js | 1 - .../static/chunks/601-3f92835872ce1c3b.js | 1 - .../static/chunks/651-7f1a745b0e3db11d.js | 1 - .../chunks/65b78783-daf30cffc34759e7.js | 1 - .../static/chunks/730-eb609e4385533b6b.js | 1 - .../static/chunks/826-03658aa28a2a895d.js | 1 - .../static/chunks/900-326dcea1c8c632bd.js | 1 - .../static/chunks/978-960e423dcb2d179d.js | 1 - .../static/chunks/982-dc9d2de6dd23b183.js | 1 - .../app/_not-found/page-67d68e30910d9cb7.js | 1 - .../chunks/app/layout-0a365473079ed328.js | 1 - .../chunks/app/login/page-d1019d7482daf05e.js | 1 - .../chunks/app/model/page-862224df2a15ab65.js | 1 - .../chunks/app/page-3876b4fb2023557a.js | 1 - .../app/providers/page-d7c9b193573b160c.js | 1 - .../app/settings/page-36e251683a0d492c.js | 1 - .../app/transactions/page-b9cef669e0e237ee.js | 1 - .../app/unauthorized/page-96bd6a23715af694.js | 1 - .../chunks/framework-8c3b2116d10b4580.js | 1 - .../static/chunks/main-0a7596aef9908400.js | 1 - .../chunks/main-app-17707ee50e50ea2f.js | 1 - .../chunks/pages/_app-061aa32ebf2d84a0.js | 1 - .../chunks/pages/_error-37aa057e76496f5c.js | 1 - .../chunks/polyfills-42372ed130431b0a.js | 1 - .../static/chunks/webpack-a88517f6dce11b25.js | 1 - ui_out/_next/static/css/a2fcfb52b8f42d80.css | 1 - ui_out/_next/static/css/de70bee13400563f.css | 1 - .../static/media/4cf2300e9c8272f7-s.p.woff2 | Bin 28388 -> 0 bytes .../static/media/747892c23ea88013-s.woff2 | Bin 13036 -> 0 bytes .../static/media/8d697b304b401681-s.woff2 | Bin 14676 -> 0 bytes .../static/media/93f479601ee12b01-s.p.woff2 | Bin 31288 -> 0 bytes .../static/media/9610d9e46709d722-s.woff2 | Bin 12608 -> 0 bytes .../static/media/ba015fad6dcf6784-s.woff2 | Bin 15292 -> 0 bytes ui_out/favicon.ico | Bin 15406 -> 0 bytes ui_out/file.svg | 1 - ui_out/globe.svg | 1 - ui_out/icon.ico | Bin 15406 -> 0 bytes ui_out/index.html | 1 - ui_out/index.txt | 29 ------------------ ui_out/login/index.html | 1 - ui_out/login/index.txt | 27 ---------------- ui_out/model/index.html | 1 - ui_out/model/index.txt | 27 ---------------- ui_out/next.svg | 1 - ui_out/out/404.html | 1 - ui_out/out/404/index.html | 1 - .../static/chunks/222-23a547ab56ff9638.js | 1 - .../static/chunks/226-b955dd578f372adc.js | 1 - .../static/chunks/29-2e340e48c1ca61fb.js | 1 - .../static/chunks/363-c1e2b04767a3c84b.js | 1 - .../static/chunks/375-7943a6dae9b88f03.js | 1 - .../static/chunks/481-7440db9fd9bb94b2.js | 1 - .../static/chunks/497-cf9737613a43115a.js | 1 - .../static/chunks/601-3f92835872ce1c3b.js | 1 - .../static/chunks/651-7f1a745b0e3db11d.js | 1 - .../chunks/65b78783-daf30cffc34759e7.js | 1 - .../static/chunks/730-eb609e4385533b6b.js | 1 - .../static/chunks/826-03658aa28a2a895d.js | 1 - .../static/chunks/900-4f9edbec4bd4635d.js | 1 - .../static/chunks/978-960e423dcb2d179d.js | 1 - .../static/chunks/982-dc9d2de6dd23b183.js | 1 - .../app/_not-found/page-67d68e30910d9cb7.js | 1 - .../chunks/app/layout-a57cd317a374e9c8.js | 1 - .../chunks/app/login/page-ff1377de4625f77a.js | 1 - .../chunks/app/model/page-862224df2a15ab65.js | 1 - .../chunks/app/page-3876b4fb2023557a.js | 1 - .../app/providers/page-d7c9b193573b160c.js | 1 - .../app/settings/page-36e251683a0d492c.js | 1 - .../app/transactions/page-b9cef669e0e237ee.js | 1 - .../app/unauthorized/page-96bd6a23715af694.js | 1 - .../chunks/framework-8c3b2116d10b4580.js | 1 - .../static/chunks/main-0a7596aef9908400.js | 1 - .../chunks/main-app-17707ee50e50ea2f.js | 1 - .../chunks/pages/_app-061aa32ebf2d84a0.js | 1 - .../chunks/pages/_error-37aa057e76496f5c.js | 1 - .../chunks/polyfills-42372ed130431b0a.js | 1 - .../static/chunks/webpack-a88517f6dce11b25.js | 1 - .../out/_next/static/css/a2fcfb52b8f42d80.css | 1 - .../out/_next/static/css/de70bee13400563f.css | 1 - .../static/media/4cf2300e9c8272f7-s.p.woff2 | Bin 28388 -> 0 bytes .../static/media/747892c23ea88013-s.woff2 | Bin 13036 -> 0 bytes .../static/media/8d697b304b401681-s.woff2 | Bin 14676 -> 0 bytes .../static/media/93f479601ee12b01-s.p.woff2 | Bin 31288 -> 0 bytes .../static/media/9610d9e46709d722-s.woff2 | Bin 12608 -> 0 bytes .../static/media/ba015fad6dcf6784-s.woff2 | Bin 15292 -> 0 bytes .../tHqKC6PJ35XBg8LRDCWKS/_buildManifest.js | 1 - .../tHqKC6PJ35XBg8LRDCWKS/_ssgManifest.js | 1 - ui_out/out/favicon.ico | Bin 15406 -> 0 bytes ui_out/out/file.svg | 1 - ui_out/out/globe.svg | 1 - ui_out/out/icon.ico | Bin 15406 -> 0 bytes ui_out/out/index.html | 1 - ui_out/out/index.txt | 29 ------------------ ui_out/out/login/index.html | 1 - ui_out/out/login/index.txt | 27 ---------------- ui_out/out/model/index.html | 1 - ui_out/out/model/index.txt | 27 ---------------- ui_out/out/next.svg | 1 - ui_out/out/providers/index.html | 1 - ui_out/out/providers/index.txt | 27 ---------------- ui_out/out/settings/index.html | 1 - ui_out/out/settings/index.txt | 27 ---------------- ui_out/out/transactions/index.html | 1 - ui_out/out/transactions/index.txt | 27 ---------------- ui_out/out/unauthorized/index.html | 1 - ui_out/out/unauthorized/index.txt | 27 ---------------- ui_out/out/vercel.svg | 1 - ui_out/out/window.svg | 1 - ui_out/providers/index.html | 1 - ui_out/providers/index.txt | 27 ---------------- ui_out/settings/index.html | 1 - ui_out/settings/index.txt | 27 ---------------- ui_out/transactions/index.html | 1 - ui_out/transactions/index.txt | 27 ---------------- ui_out/unauthorized/index.html | 1 - ui_out/unauthorized/index.txt | 27 ---------------- ui_out/vercel.svg | 1 - ui_out/window.svg | 1 - 131 files changed, 13 insertions(+), 497 deletions(-) delete mode 100644 ui_out/404.html delete mode 100644 ui_out/404/index.html delete mode 100644 ui_out/_next/static/UEmzYNZb207mpxXHDgTmm/_buildManifest.js delete mode 100644 ui_out/_next/static/UEmzYNZb207mpxXHDgTmm/_ssgManifest.js delete mode 100644 ui_out/_next/static/chunks/222-23a547ab56ff9638.js delete mode 100644 ui_out/_next/static/chunks/226-b955dd578f372adc.js delete mode 100644 ui_out/_next/static/chunks/29-2e340e48c1ca61fb.js delete mode 100644 ui_out/_next/static/chunks/363-c1e2b04767a3c84b.js delete mode 100644 ui_out/_next/static/chunks/375-7943a6dae9b88f03.js delete mode 100644 ui_out/_next/static/chunks/481-7440db9fd9bb94b2.js delete mode 100644 ui_out/_next/static/chunks/497-cf9737613a43115a.js delete mode 100644 ui_out/_next/static/chunks/601-3f92835872ce1c3b.js delete mode 100644 ui_out/_next/static/chunks/651-7f1a745b0e3db11d.js delete mode 100644 ui_out/_next/static/chunks/65b78783-daf30cffc34759e7.js delete mode 100644 ui_out/_next/static/chunks/730-eb609e4385533b6b.js delete mode 100644 ui_out/_next/static/chunks/826-03658aa28a2a895d.js delete mode 100644 ui_out/_next/static/chunks/900-326dcea1c8c632bd.js delete mode 100644 ui_out/_next/static/chunks/978-960e423dcb2d179d.js delete mode 100644 ui_out/_next/static/chunks/982-dc9d2de6dd23b183.js delete mode 100644 ui_out/_next/static/chunks/app/_not-found/page-67d68e30910d9cb7.js delete mode 100644 ui_out/_next/static/chunks/app/layout-0a365473079ed328.js delete mode 100644 ui_out/_next/static/chunks/app/login/page-d1019d7482daf05e.js delete mode 100644 ui_out/_next/static/chunks/app/model/page-862224df2a15ab65.js delete mode 100644 ui_out/_next/static/chunks/app/page-3876b4fb2023557a.js delete mode 100644 ui_out/_next/static/chunks/app/providers/page-d7c9b193573b160c.js delete mode 100644 ui_out/_next/static/chunks/app/settings/page-36e251683a0d492c.js delete mode 100644 ui_out/_next/static/chunks/app/transactions/page-b9cef669e0e237ee.js delete mode 100644 ui_out/_next/static/chunks/app/unauthorized/page-96bd6a23715af694.js delete mode 100644 ui_out/_next/static/chunks/framework-8c3b2116d10b4580.js delete mode 100644 ui_out/_next/static/chunks/main-0a7596aef9908400.js delete mode 100644 ui_out/_next/static/chunks/main-app-17707ee50e50ea2f.js delete mode 100644 ui_out/_next/static/chunks/pages/_app-061aa32ebf2d84a0.js delete mode 100644 ui_out/_next/static/chunks/pages/_error-37aa057e76496f5c.js delete mode 100644 ui_out/_next/static/chunks/polyfills-42372ed130431b0a.js delete mode 100644 ui_out/_next/static/chunks/webpack-a88517f6dce11b25.js delete mode 100644 ui_out/_next/static/css/a2fcfb52b8f42d80.css delete mode 100644 ui_out/_next/static/css/de70bee13400563f.css delete mode 100644 ui_out/_next/static/media/4cf2300e9c8272f7-s.p.woff2 delete mode 100644 ui_out/_next/static/media/747892c23ea88013-s.woff2 delete mode 100644 ui_out/_next/static/media/8d697b304b401681-s.woff2 delete mode 100644 ui_out/_next/static/media/93f479601ee12b01-s.p.woff2 delete mode 100644 ui_out/_next/static/media/9610d9e46709d722-s.woff2 delete mode 100644 ui_out/_next/static/media/ba015fad6dcf6784-s.woff2 delete mode 100644 ui_out/favicon.ico delete mode 100644 ui_out/file.svg delete mode 100644 ui_out/globe.svg delete mode 100644 ui_out/icon.ico delete mode 100644 ui_out/index.html delete mode 100644 ui_out/index.txt delete mode 100644 ui_out/login/index.html delete mode 100644 ui_out/login/index.txt delete mode 100644 ui_out/model/index.html delete mode 100644 ui_out/model/index.txt delete mode 100644 ui_out/next.svg delete mode 100644 ui_out/out/404.html delete mode 100644 ui_out/out/404/index.html delete mode 100644 ui_out/out/_next/static/chunks/222-23a547ab56ff9638.js delete mode 100644 ui_out/out/_next/static/chunks/226-b955dd578f372adc.js delete mode 100644 ui_out/out/_next/static/chunks/29-2e340e48c1ca61fb.js delete mode 100644 ui_out/out/_next/static/chunks/363-c1e2b04767a3c84b.js delete mode 100644 ui_out/out/_next/static/chunks/375-7943a6dae9b88f03.js delete mode 100644 ui_out/out/_next/static/chunks/481-7440db9fd9bb94b2.js delete mode 100644 ui_out/out/_next/static/chunks/497-cf9737613a43115a.js delete mode 100644 ui_out/out/_next/static/chunks/601-3f92835872ce1c3b.js delete mode 100644 ui_out/out/_next/static/chunks/651-7f1a745b0e3db11d.js delete mode 100644 ui_out/out/_next/static/chunks/65b78783-daf30cffc34759e7.js delete mode 100644 ui_out/out/_next/static/chunks/730-eb609e4385533b6b.js delete mode 100644 ui_out/out/_next/static/chunks/826-03658aa28a2a895d.js delete mode 100644 ui_out/out/_next/static/chunks/900-4f9edbec4bd4635d.js delete mode 100644 ui_out/out/_next/static/chunks/978-960e423dcb2d179d.js delete mode 100644 ui_out/out/_next/static/chunks/982-dc9d2de6dd23b183.js delete mode 100644 ui_out/out/_next/static/chunks/app/_not-found/page-67d68e30910d9cb7.js delete mode 100644 ui_out/out/_next/static/chunks/app/layout-a57cd317a374e9c8.js delete mode 100644 ui_out/out/_next/static/chunks/app/login/page-ff1377de4625f77a.js delete mode 100644 ui_out/out/_next/static/chunks/app/model/page-862224df2a15ab65.js delete mode 100644 ui_out/out/_next/static/chunks/app/page-3876b4fb2023557a.js delete mode 100644 ui_out/out/_next/static/chunks/app/providers/page-d7c9b193573b160c.js delete mode 100644 ui_out/out/_next/static/chunks/app/settings/page-36e251683a0d492c.js delete mode 100644 ui_out/out/_next/static/chunks/app/transactions/page-b9cef669e0e237ee.js delete mode 100644 ui_out/out/_next/static/chunks/app/unauthorized/page-96bd6a23715af694.js delete mode 100644 ui_out/out/_next/static/chunks/framework-8c3b2116d10b4580.js delete mode 100644 ui_out/out/_next/static/chunks/main-0a7596aef9908400.js delete mode 100644 ui_out/out/_next/static/chunks/main-app-17707ee50e50ea2f.js delete mode 100644 ui_out/out/_next/static/chunks/pages/_app-061aa32ebf2d84a0.js delete mode 100644 ui_out/out/_next/static/chunks/pages/_error-37aa057e76496f5c.js delete mode 100644 ui_out/out/_next/static/chunks/polyfills-42372ed130431b0a.js delete mode 100644 ui_out/out/_next/static/chunks/webpack-a88517f6dce11b25.js delete mode 100644 ui_out/out/_next/static/css/a2fcfb52b8f42d80.css delete mode 100644 ui_out/out/_next/static/css/de70bee13400563f.css delete mode 100644 ui_out/out/_next/static/media/4cf2300e9c8272f7-s.p.woff2 delete mode 100644 ui_out/out/_next/static/media/747892c23ea88013-s.woff2 delete mode 100644 ui_out/out/_next/static/media/8d697b304b401681-s.woff2 delete mode 100644 ui_out/out/_next/static/media/93f479601ee12b01-s.p.woff2 delete mode 100644 ui_out/out/_next/static/media/9610d9e46709d722-s.woff2 delete mode 100644 ui_out/out/_next/static/media/ba015fad6dcf6784-s.woff2 delete mode 100644 ui_out/out/_next/static/tHqKC6PJ35XBg8LRDCWKS/_buildManifest.js delete mode 100644 ui_out/out/_next/static/tHqKC6PJ35XBg8LRDCWKS/_ssgManifest.js delete mode 100644 ui_out/out/favicon.ico delete mode 100644 ui_out/out/file.svg delete mode 100644 ui_out/out/globe.svg delete mode 100644 ui_out/out/icon.ico delete mode 100644 ui_out/out/index.html delete mode 100644 ui_out/out/index.txt delete mode 100644 ui_out/out/login/index.html delete mode 100644 ui_out/out/login/index.txt delete mode 100644 ui_out/out/model/index.html delete mode 100644 ui_out/out/model/index.txt delete mode 100644 ui_out/out/next.svg delete mode 100644 ui_out/out/providers/index.html delete mode 100644 ui_out/out/providers/index.txt delete mode 100644 ui_out/out/settings/index.html delete mode 100644 ui_out/out/settings/index.txt delete mode 100644 ui_out/out/transactions/index.html delete mode 100644 ui_out/out/transactions/index.txt delete mode 100644 ui_out/out/unauthorized/index.html delete mode 100644 ui_out/out/unauthorized/index.txt delete mode 100644 ui_out/out/vercel.svg delete mode 100644 ui_out/out/window.svg delete mode 100644 ui_out/providers/index.html delete mode 100644 ui_out/providers/index.txt delete mode 100644 ui_out/settings/index.html delete mode 100644 ui_out/settings/index.txt delete mode 100644 ui_out/transactions/index.html delete mode 100644 ui_out/transactions/index.txt delete mode 100644 ui_out/unauthorized/index.html delete mode 100644 ui_out/unauthorized/index.txt delete mode 100644 ui_out/vercel.svg delete mode 100644 ui_out/window.svg diff --git a/compose.yml b/compose.yml index 13fabcdf..526e14d6 100644 --- a/compose.yml +++ b/compose.yml @@ -1,5 +1,5 @@ services: - ui-builder: + ui: env_file: - .env build: @@ -10,19 +10,8 @@ services: NEXT_PUBLIC_ADMIN_API_KEY: ${NEXT_PUBLIC_ADMIN_API_KEY:-} volumes: - ./ui_out:/output - profiles: - - ui-build - - ui: - image: alpine:latest - volumes: - - ./ui_out:/output:ro command: - [ - "sh", - "-c", - 'echo ''UI service - build with "docker compose --profile ui-build up ui-builder"'' && tail -f /dev/null', - ] + ["sh", "-c", "echo 'UI built and ready' && tail -f /dev/null"] routstr: build: . diff --git a/scripts/build-ui.sh b/scripts/build-ui.sh index 5231d5e0..9429100e 100755 --- a/scripts/build-ui.sh +++ b/scripts/build-ui.sh @@ -49,7 +49,8 @@ else npm run build fi -mv out ../ui_out +mkdir ../ui_out +mv out/* ../ui_out # Clean up the temporary .env.local file if [ -f "$UI_ENV_FILE" ]; then diff --git a/ui/Dockerfile.build b/ui/Dockerfile.build index 9058f795..11a5f6ab 100644 --- a/ui/Dockerfile.build +++ b/ui/Dockerfile.build @@ -30,6 +30,12 @@ ENV NEXT_TELEMETRY_DISABLED=1 RUN npm run build && \ echo "UI build completed at $(date)" -# Output stage - just copy the built files -FROM scratch AS output -COPY --from=builder /app/out /ui_out \ No newline at end of file +# Copy built files to the output directory +RUN mkdir -p /output && \ + cp -r /app/out/* /output/ + +# Use the builder stage as the final stage +FROM node:23-alpine +WORKDIR /app +COPY --from=builder /output /output +CMD ["sh", "-c", "echo 'UI built and ready' && tail -f /dev/null"] \ No newline at end of file diff --git a/ui_out/404.html b/ui_out/404.html deleted file mode 100644 index b80798e6..00000000 --- a/ui_out/404.html +++ /dev/null @@ -1 +0,0 @@ -
\ No newline at end of file diff --git a/ui_out/404/index.html b/ui_out/404/index.html deleted file mode 100644 index b80798e6..00000000 --- a/ui_out/404/index.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/ui_out/_next/static/UEmzYNZb207mpxXHDgTmm/_buildManifest.js b/ui_out/_next/static/UEmzYNZb207mpxXHDgTmm/_buildManifest.js deleted file mode 100644 index ed39a09d..00000000 --- a/ui_out/_next/static/UEmzYNZb207mpxXHDgTmm/_buildManifest.js +++ /dev/null @@ -1 +0,0 @@ -self.__BUILD_MANIFEST=function(e,r,t){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:9,errorRate:1e-4,numBits:173,numHashes:14,bitArray:[0,1,0,1,r,r,r,e,r,r,r,r,r,e,e,r,r,r,r,e,r,r,r,r,r,e,r,r,e,r,e,e,e,e,e,e,r,r,e,r,e,r,r,r,e,e,r,r,e,e,e,e,e,r,e,e,e,e,r,e,e,e,r,e,e,r,e,r,r,r,r,r,r,r,e,e,e,e,r,r,e,e,e,e,r,r,r,r,e,r,r,e,e,r,e,e,e,r,r,e,r,e,e,e,r,e,e,r,e,r,r,r,r,r,e,e,r,e,e,e,e,e,r,r,e,r,r,e,r,e,r,e,r,e,e,e,e,e,r,e,e,r,r,e,e,e,e,e,e,r,r,r,r,r,e,r,r,e,r,e,r,r,e,e,r,e,e,r,r,r,r,e,e]},__routerFilterDynamic:{numItems:e,errorRate:1e-4,numBits:e,numHashes:null,bitArray:[]},"/_error":["static/chunks/pages/_error-37aa057e76496f5c.js"],sortedPages:["/_app","/_error"]}}(0,1,1e-4),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file diff --git a/ui_out/_next/static/UEmzYNZb207mpxXHDgTmm/_ssgManifest.js b/ui_out/_next/static/UEmzYNZb207mpxXHDgTmm/_ssgManifest.js deleted file mode 100644 index 5b3ff592..00000000 --- a/ui_out/_next/static/UEmzYNZb207mpxXHDgTmm/_ssgManifest.js +++ /dev/null @@ -1 +0,0 @@ -self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB() \ No newline at end of file diff --git a/ui_out/_next/static/chunks/222-23a547ab56ff9638.js b/ui_out/_next/static/chunks/222-23a547ab56ff9638.js deleted file mode 100644 index 096ff085..00000000 --- a/ui_out/_next/static/chunks/222-23a547ab56ff9638.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[222],{2050:(e,r,o)=>{o.d(r,{s:()=>l,t:()=>a});var t=o(4398);function n(e,r){if("function"==typeof e)return e(r);null!=e&&(e.current=r)}function a(...e){return r=>{let o=!1,t=e.map(e=>{let t=n(e,r);return o||"function"!=typeof t||(o=!0),t});if(o)return()=>{for(let r=0;r{"use strict";s.d(t,{E:()=>l});var a=s(3422);s(4398);var r=s(4676),n=s(9183);let i=(0,r.F)("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground",success:"border-transparent bg-green-500 text-white hover:bg-green-500/80",warning:"border-transparent bg-yellow-500 text-white hover:bg-yellow-500/80",error:"border-transparent bg-red-500 text-white hover:bg-red-500/80"}},defaultVariants:{variant:"default"}});function l(e){let{className:t,variant:s,...r}=e;return(0,a.jsx)("div",{className:(0,n.cn)(i({variant:s}),t),...r})}},9442:(e,t,s)=>{"use strict";s.d(t,{Fc:()=>l,TN:()=>c});var a=s(3422);s(4398);var r=s(4676),n=s(9183);let i=(0,r.F)("relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90"}},defaultVariants:{variant:"default"}});function l(e){let{className:t,variant:s,...r}=e;return(0,a.jsx)("div",{"data-slot":"alert",role:"alert",className:(0,n.cn)(i({variant:s}),t),...r})}function c(e){let{className:t,...s}=e;return(0,a.jsx)("div",{"data-slot":"alert-description",className:(0,n.cn)("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",t),...s})}}},e=>{var t=t=>e(e.s=t);e.O(0,[363,222,226,29,730,900,945,497,358],()=>t(2127)),_N_E=e.O()}]);
\ No newline at end of file
diff --git a/ui_out/_next/static/chunks/app/unauthorized/page-96bd6a23715af694.js b/ui_out/_next/static/chunks/app/unauthorized/page-96bd6a23715af694.js
deleted file mode 100644
index ee3a0fd6..00000000
--- a/ui_out/_next/static/chunks/app/unauthorized/page-96bd6a23715af694.js
+++ /dev/null
@@ -1 +0,0 @@
-(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[305],{1064:(e,r,t)=>{"use strict";var s=t(8);t.o(s,"usePathname")&&t.d(r,{usePathname:function(){return s.usePathname}}),t.o(s,"useRouter")&&t.d(r,{useRouter:function(){return s.useRouter}})},2818:(e,r,t)=>{"use strict";t.r(r),t.d(r,{default:()=>o});var s=t(3422),a=t(3648),i=t(1064);let n=(0,t(3929).A)("shield-alert",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]]);function o(){let e=(0,i.useRouter)();return(0,s.jsx)("div",{className:"bg-background flex min-h-screen flex-col items-center justify-center p-4",children:(0,s.jsxs)("div",{className:"flex max-w-md flex-col items-center space-y-6 text-center",children:[(0,s.jsx)(n,{className:"text-destructive h-24 w-24"}),(0,s.jsx)("h1",{className:"text-4xl font-bold",children:"Access Denied"}),(0,s.jsx)("p",{className:"text-muted-foreground text-lg",children:"You don't have permission to access this page. Please contact your administrator if you believe this is an error."}),(0,s.jsxs)("div",{className:"flex gap-4",children:[(0,s.jsx)(a.$,{onClick:()=>e.push("/"),children:"Go to Dashboard"}),(0,s.jsx)(a.$,{variant:"outline",onClick:()=>e.back(),children:"Go Back"})]})]})})}},3648:(e,r,t)=>{"use strict";t.d(r,{$:()=>d,r:()=>o});var s=t(3422);t(4398);var a=t(6950),i=t(4676),n=t(9183);let o=(0,i.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function d(e){let{className:r,variant:t,size:i,asChild:d=!1,...c}=e,l=d?a.DX:"button";return(0,s.jsx)(l,{"data-slot":"button",className:(0,n.cn)(o({variant:t,size:i,className:r})),...c})}},3929:(e,r,t)=>{"use strict";t.d(r,{A:()=>u});var s=t(4398);let a=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),i=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,r,t)=>t?t.toUpperCase():r.toLowerCase()),n=e=>{let r=i(e);return r.charAt(0).toUpperCase()+r.slice(1)},o=function(){for(var e=arguments.length,r=Array(e),t=0;t