diff --git a/deploy.yml b/.github/workflows/deploy.yml similarity index 100% rename from deploy.yml rename to .github/workflows/deploy.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9451024 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules/ +dist/ +.DS_Store +*.log diff --git a/package-lock.json b/package-lock.json index 5d15f44..08512d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ }, "node_modules/@emnapi/core": { "version": "1.10.0", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/@emnapi/core/-/core-1.10.0.tgz", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", "dev": true, "license": "MIT", @@ -26,7 +26,7 @@ }, "node_modules/@emnapi/runtime": { "version": "1.10.0", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/@emnapi/runtime/-/runtime-1.10.0.tgz", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", "dev": true, "license": "MIT", @@ -37,7 +37,7 @@ }, "node_modules/@emnapi/wasi-threads": { "version": "1.2.1", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", "dev": true, "license": "MIT", @@ -48,7 +48,7 @@ }, "node_modules/@napi-rs/wasm-runtime": { "version": "1.1.4", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", "dev": true, "license": "MIT", @@ -67,7 +67,7 @@ }, "node_modules/@oxc-project/types": { "version": "0.128.0", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/@oxc-project/types/-/types-0.128.0.tgz", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.128.0.tgz", "integrity": "sha512-huv1Y/LzBJkBVHt3OlC7u0zHBW9qXf1FdD7sGmc1rXc2P1mTwHssYv7jyGx5KAACSCH+9B3Bhn6Z9luHRvf7pQ==", "dev": true, "license": "MIT", @@ -77,7 +77,7 @@ }, "node_modules/@rolldown/binding-android-arm64": { "version": "1.0.0-rc.18", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.18.tgz", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.18.tgz", "integrity": "sha512-lIDyUAfD7U3+BWKzdxMbJcsYHuqXqmGz40aeRqvuAm3y5TkJSYTBW2RDrn65DJFPQqVjUAUqq5uz8urzQ8aBdQ==", "cpu": [ "arm64" @@ -94,7 +94,7 @@ }, "node_modules/@rolldown/binding-darwin-arm64": { "version": "1.0.0-rc.18", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.18.tgz", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.18.tgz", "integrity": "sha512-apJq2ktnGp27nSInMR5Vcj8kY6xJzDAvfdIFlpDcAK/w4cDO58qVoi1YQsES/SKiFNge/6e4CUzgjfHduYqWpQ==", "cpu": [ "arm64" @@ -111,7 +111,7 @@ }, "node_modules/@rolldown/binding-darwin-x64": { "version": "1.0.0-rc.18", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.18.tgz", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.18.tgz", "integrity": "sha512-5Ofot8xbs+pxRHJqm9/9N/4sTQOvdrwEsmPE9pdLEEoAbdZtG6F2LMDfO1sp6ZAtXJuJV/21ew2srq3W8NXB5g==", "cpu": [ "x64" @@ -128,7 +128,7 @@ }, "node_modules/@rolldown/binding-freebsd-x64": { "version": "1.0.0-rc.18", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.18.tgz", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.18.tgz", "integrity": "sha512-7h8eeOTT1eyqJyx64BFCnWZpNm486hGWt2sqeLLgDxA0xI1oGZ9H7gK1S85uNGmBhkdPwa/6reTxfFFKvIsebw==", "cpu": [ "x64" @@ -145,7 +145,7 @@ }, "node_modules/@rolldown/binding-linux-arm-gnueabihf": { "version": "1.0.0-rc.18", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.18.tgz", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.18.tgz", "integrity": "sha512-eRcm/HVt9U/JFu5RKAEKwGQYtDCKWLiaH6wOnsSEp6NMBb/3Os8LgHZlNyzMpFVNmiiMFlfb2zEnebfzJrHFmg==", "cpu": [ "arm" @@ -162,7 +162,7 @@ }, "node_modules/@rolldown/binding-linux-arm64-gnu": { "version": "1.0.0-rc.18", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.18.tgz", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.18.tgz", "integrity": "sha512-SOrT/cT4ukTmgnrEz/Hg3m7LBnuCLW9psDeMKrimRWY4I8DmnO7Lco8W2vtqPmMkbVu8iJ+g4GFLVLLOVjJ9DQ==", "cpu": [ "arm64" @@ -179,7 +179,7 @@ }, "node_modules/@rolldown/binding-linux-arm64-musl": { "version": "1.0.0-rc.18", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.18.tgz", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.18.tgz", "integrity": "sha512-QWjdxN1HJCpBTAcZ5N5F7wju3gVPzRzSpmGzx7na0c/1qpN9CFil+xt+l9lV/1M6/gqHSNXCiqPfwhVJPeLnug==", "cpu": [ "arm64" @@ -196,7 +196,7 @@ }, "node_modules/@rolldown/binding-linux-ppc64-gnu": { "version": "1.0.0-rc.18", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.18.tgz", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.18.tgz", "integrity": "sha512-ugCOyj7a4d9h3q9B+wXmf6g3a68UsjGh6dob5DHevHGMwDUbhsYNbSPxJsENcIttJZ9jv7qGM2UesLw5jqIhdg==", "cpu": [ "ppc64" @@ -213,7 +213,7 @@ }, "node_modules/@rolldown/binding-linux-s390x-gnu": { "version": "1.0.0-rc.18", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.18.tgz", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.18.tgz", "integrity": "sha512-kKWRhbsotpXkGbcd5dllUWg5gEXcDAa8u5YnP9AV5DYNbvJHGzzuwv7dpmhc8NqKMJldl0a+x76IHbspEpEmdA==", "cpu": [ "s390x" @@ -230,7 +230,7 @@ }, "node_modules/@rolldown/binding-linux-x64-gnu": { "version": "1.0.0-rc.18", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.18.tgz", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.18.tgz", "integrity": "sha512-uCo8ElcCIAMyYAZyuIZ81oFkhTSIllNvUCHCAlbhlN4ji3uC28h7IIdlXyIvGO7HsuqnV9p3rD/bpH7XhIyhRw==", "cpu": [ "x64" @@ -247,7 +247,7 @@ }, "node_modules/@rolldown/binding-linux-x64-musl": { "version": "1.0.0-rc.18", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.18.tgz", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.18.tgz", "integrity": "sha512-XNOQZtuE6yUIvx4rwGemwh8kpL1xvU41FXy/s9K7T/3JVcqGzo3NfKM2HrbrGgfPYGFW42f07Wk++aOC6B9NWA==", "cpu": [ "x64" @@ -264,7 +264,7 @@ }, "node_modules/@rolldown/binding-openharmony-arm64": { "version": "1.0.0-rc.18", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.18.tgz", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.18.tgz", "integrity": "sha512-tSn/kzrfa7tNOXr7sEacDBN4YsIqTyLqh45IO0nHDwtpKIDNDJr+VFojt+4klSpChxB29JLyduSsE0MKEwa65A==", "cpu": [ "arm64" @@ -281,7 +281,7 @@ }, "node_modules/@rolldown/binding-wasm32-wasi": { "version": "1.0.0-rc.18", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.18.tgz", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.18.tgz", "integrity": "sha512-+J9YGmc+czgqlhYmwun3S3O0FIZhsH8ep2456xwjAdIOmuJxM7xz4P4PtrxU+Bz17a/5bqPA8o3HAAoX0teUdg==", "cpu": [ "wasm32" @@ -300,7 +300,7 @@ }, "node_modules/@rolldown/binding-win32-arm64-msvc": { "version": "1.0.0-rc.18", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.18.tgz", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.18.tgz", "integrity": "sha512-zsu47DgU0FQzSwi6sU9dZoEdUv7pc1AptSEz/Z8HBg54sV0Pbs3N0+CrIbTsgiu6EyoaNN9CHboqbLaz9lhOyQ==", "cpu": [ "arm64" @@ -317,7 +317,7 @@ }, "node_modules/@rolldown/binding-win32-x64-msvc": { "version": "1.0.0-rc.18", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.18.tgz", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.18.tgz", "integrity": "sha512-7H+3yqGgmnlDTRRhw/xpYY9J1kf4GC681nVc4GqKhExZTDrVVrV2tsOR9kso0fvgBdcTCcQShx4SLLoHgaLwhg==", "cpu": [ "x64" @@ -334,7 +334,7 @@ }, "node_modules/@tybys/wasm-util": { "version": "0.10.2", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==", "dev": true, "license": "MIT", @@ -345,7 +345,7 @@ }, "node_modules/detect-libc": { "version": "2.1.2", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/detect-libc/-/detect-libc-2.1.2.tgz", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "dev": true, "license": "Apache-2.0", @@ -355,7 +355,7 @@ }, "node_modules/fdir": { "version": "6.5.0", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/fdir/-/fdir-6.5.0.tgz", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, "license": "MIT", @@ -373,7 +373,7 @@ }, "node_modules/fsevents": { "version": "2.3.3", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/fsevents/-/fsevents-2.3.3.tgz", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, @@ -388,7 +388,7 @@ }, "node_modules/lightningcss": { "version": "1.32.0", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/lightningcss/-/lightningcss-1.32.0.tgz", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", "dev": true, "license": "MPL-2.0", @@ -418,7 +418,7 @@ }, "node_modules/lightningcss-android-arm64": { "version": "1.32.0", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", "cpu": [ "arm64" @@ -439,7 +439,7 @@ }, "node_modules/lightningcss-darwin-arm64": { "version": "1.32.0", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", "cpu": [ "arm64" @@ -460,7 +460,7 @@ }, "node_modules/lightningcss-darwin-x64": { "version": "1.32.0", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", "cpu": [ "x64" @@ -481,7 +481,7 @@ }, "node_modules/lightningcss-freebsd-x64": { "version": "1.32.0", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", "cpu": [ "x64" @@ -502,7 +502,7 @@ }, "node_modules/lightningcss-linux-arm-gnueabihf": { "version": "1.32.0", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", "cpu": [ "arm" @@ -523,7 +523,7 @@ }, "node_modules/lightningcss-linux-arm64-gnu": { "version": "1.32.0", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", "cpu": [ "arm64" @@ -544,7 +544,7 @@ }, "node_modules/lightningcss-linux-arm64-musl": { "version": "1.32.0", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", "cpu": [ "arm64" @@ -565,7 +565,7 @@ }, "node_modules/lightningcss-linux-x64-gnu": { "version": "1.32.0", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", "cpu": [ "x64" @@ -586,7 +586,7 @@ }, "node_modules/lightningcss-linux-x64-musl": { "version": "1.32.0", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", "cpu": [ "x64" @@ -607,7 +607,7 @@ }, "node_modules/lightningcss-win32-arm64-msvc": { "version": "1.32.0", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", "cpu": [ "arm64" @@ -628,7 +628,7 @@ }, "node_modules/lightningcss-win32-x64-msvc": { "version": "1.32.0", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", "cpu": [ "x64" @@ -649,7 +649,7 @@ }, "node_modules/nanoid": { "version": "3.3.12", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/nanoid/-/nanoid-3.3.12.tgz", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", "dev": true, "funding": [ @@ -668,14 +668,14 @@ }, "node_modules/picocolors": { "version": "1.1.1", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/picocolors/-/picocolors-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, "license": "ISC" }, "node_modules/picomatch": { "version": "4.0.4", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/picomatch/-/picomatch-4.0.4.tgz", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "engines": { @@ -687,7 +687,7 @@ }, "node_modules/postcss": { "version": "8.5.14", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/postcss/-/postcss-8.5.14.tgz", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", "dev": true, "funding": [ @@ -716,7 +716,7 @@ }, "node_modules/rolldown": { "version": "1.0.0-rc.18", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/rolldown/-/rolldown-1.0.0-rc.18.tgz", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.18.tgz", "integrity": "sha512-phmyKBpuBdRYDf4hgyynGAYn/rDDe+iZXKVJ7WX5b1zQzpLkP5oJRPGsfJuHdzPMlyyEO/4sPW6yfSx2gf7lVg==", "dev": true, "license": "MIT", @@ -750,14 +750,14 @@ }, "node_modules/rolldown/node_modules/@rolldown/pluginutils": { "version": "1.0.0-rc.18", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.18.tgz", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.18.tgz", "integrity": "sha512-CUY5Mnhe64xQBGZEEXQ5WyZwsc1JU3vAZLIxtrsBt3LO6UOb+C8GunVKqe9sT8NeWb4lqSaoJtp2xo6GxT1MNw==", "dev": true, "license": "MIT" }, "node_modules/source-map-js": { "version": "1.2.1", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/source-map-js/-/source-map-js-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "license": "BSD-3-Clause", @@ -767,7 +767,7 @@ }, "node_modules/tinyglobby": { "version": "0.2.16", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/tinyglobby/-/tinyglobby-0.2.16.tgz", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", "dev": true, "license": "MIT", @@ -784,7 +784,7 @@ }, "node_modules/tslib": { "version": "2.8.1", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/tslib/-/tslib-2.8.1.tgz", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, "license": "0BSD", @@ -792,7 +792,7 @@ }, "node_modules/vite": { "version": "8.0.11", - "resolved": "https://packages.applied-caas-gateway1.internal.api.openai.org/artifactory/api/npm/npm-public/vite/-/vite-8.0.11.tgz", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.11.tgz", "integrity": "sha512-Jz1mxtUBR5xTT65VOdJZUUeoyLtqljmFkiUXhPTLZka3RDc9vpi/xXkyrnsdRcm2lIi3l3GPMnAidTsEGIj3Ow==", "dev": true, "dependencies": { diff --git a/src/main.js b/src/main.js index 83d82f7..420fd33 100644 --- a/src/main.js +++ b/src/main.js @@ -1,4 +1,6 @@ import './styles.css'; +import './mobile-fix.css'; +import './mobile-header-fix.css'; import appHtml from './app.html?raw'; const root = document.getElementById('root'); diff --git a/src/mobile-fix.css b/src/mobile-fix.css new file mode 100644 index 0000000..cb763f2 --- /dev/null +++ b/src/mobile-fix.css @@ -0,0 +1,288 @@ +/* Real-device mobile override loaded after the main stylesheet. + Keeps desktop/tablet styles untouched while forcing phones and coarse-pointer + devices into a true single-column layout for older iOS Safari and Android. */ +@media screen and (max-width: 767px), + screen and (hover: none) and (pointer: coarse) and (max-width: 932px) { + html, + body, + #root { + width: 100% !important; + max-width: 100% !important; + min-height: 100dvh !important; + margin: 0 !important; + overflow-x: hidden !important; + } + + body { + -webkit-text-size-adjust: 100% !important; + position: relative !important; + } + + #root { + display: block !important; + } + + #root *, + #root *::before, + #root *::after { + box-sizing: border-box; + min-width: 0 !important; + max-width: 100%; + } + + body > #root > .app, + #root .app, + .app { + display: block !important; + grid-template-columns: none !important; + grid-template-rows: none !important; + width: 100% !important; + max-width: 100% !important; + min-width: 0 !important; + min-height: 100dvh !important; + overflow-x: hidden !important; + } + + body > #root .sidebar, + #root .app > .sidebar, + .app > .sidebar, + .sidebar { + display: none !important; + visibility: hidden !important; + width: 0 !important; + max-width: 0 !important; + min-width: 0 !important; + height: 0 !important; + max-height: 0 !important; + padding: 0 !important; + margin: 0 !important; + border: 0 !important; + overflow: hidden !important; + pointer-events: none !important; + } + + body > #root .topbar, + #root .app > .topbar, + .app > .topbar, + .topbar { + display: flex !important; + flex-wrap: wrap !important; + align-items: center !important; + justify-content: flex-start !important; + grid-column: auto !important; + grid-row: auto !important; + width: 100% !important; + max-width: 100% !important; + min-width: 0 !important; + height: auto !important; + min-height: 64px !important; + padding: 10px 12px !important; + gap: 8px !important; + overflow: hidden !important; + } + + #root .brand, + .topbar .brand { + order: 1 !important; + flex: 1 1 auto !important; + width: auto !important; + max-width: calc(100% - 104px) !important; + min-width: 0 !important; + } + + #root .brand-text, + #root .brand-title, + #root .brand-subtitle { + min-width: 0 !important; + max-width: 100% !important; + overflow: hidden !important; + text-overflow: ellipsis !important; + white-space: nowrap !important; + } + + #root .menu-btn, + .topbar .menu-btn { + order: 3 !important; + display: inline-flex !important; + visibility: visible !important; + flex: 0 0 42px !important; + width: 42px !important; + max-width: 42px !important; + height: 42px !important; + align-items: center !important; + justify-content: center !important; + margin-left: 0 !important; + opacity: 1 !important; + pointer-events: auto !important; + } + + #root .search, + .topbar .search { + order: 4 !important; + flex: 0 0 100% !important; + width: 100% !important; + max-width: 100% !important; + min-width: 0 !important; + height: 38px !important; + } + + #root .search input, + .topbar .search input { + width: 100% !important; + max-width: 100% !important; + min-width: 0 !important; + padding-right: 14px !important; + } + + #root .search .shortcut, + #root .topbar-spacer, + #root .topbar .status-pill, + #root .topbar .secondary-btn, + #root .topbar .primary-btn { + display: none !important; + } + + #root .status-pill, + #root .secondary-btn, + #root .primary-btn, + #root .icon-button { + max-width: 100% !important; + min-width: 0 !important; + } + + #root .topbar .icon-button { + order: 2 !important; + flex: 0 0 40px !important; + width: 40px !important; + max-width: 40px !important; + height: 40px !important; + } + + body > #root .workspace, + #root .app > .workspace, + .app > .workspace, + .workspace { + display: block !important; + grid-column: auto !important; + grid-row: auto !important; + width: 100% !important; + max-width: 100% !important; + min-width: 0 !important; + margin: 0 !important; + padding: 12px !important; + overflow-x: hidden !important; + } + + #root .page-panel, + #root .page-panel.active { + width: 100% !important; + max-width: 100% !important; + min-width: 0 !important; + } + + body > #root .bento, + #root .workspace .bento, + .workspace .bento, + .bento { + display: flex !important; + flex-direction: column !important; + grid-template-columns: none !important; + width: 100% !important; + max-width: 100% !important; + min-width: 0 !important; + gap: 12px !important; + overflow-x: hidden !important; + } + + #root .bento > *, + #root .card, + #root [class*="card"], + #root .kpi, + #root .workflow-card, + #root .inbox-card, + #root .viewer-card, + #root .fields-card, + #root .review-card, + #root .validation-card, + #root .governance-card { + flex: 0 0 auto !important; + grid-column: auto !important; + grid-row: auto !important; + width: 100% !important; + max-width: 100% !important; + min-width: 0 !important; + min-height: auto !important; + margin-left: 0 !important; + margin-right: 0 !important; + } + + #root .workflow-top, + #root .workflow-actions, + #root .steps, + #root .step, + #root .viewer, + #root .paper, + #root .table-wrap, + #root .doc-list, + #root .validation-body, + #root .governance-body { + width: 100% !important; + max-width: 100% !important; + min-width: 0 !important; + } + + #root .workflow-top, + #root .workflow-actions, + #root .steps { + display: flex !important; + flex-direction: column !important; + } + + #root .workflow-actions > *, + #root .primary-btn, + #root .secondary-btn { + max-width: 100% !important; + white-space: normal !important; + } + + #root .drawer-overlay, + #root .utility-overlay { + position: fixed !important; + inset: 0 !important; + width: 100% !important; + max-width: 100% !important; + } + + #root .drawer { + position: fixed !important; + top: 0 !important; + left: 0 !important; + bottom: 0 !important; + display: flex !important; + width: min(320px, 88vw) !important; + max-width: 88vw !important; + height: 100dvh !important; + max-height: 100dvh !important; + overflow: hidden !important; + transform: translateX(-102%) !important; + } + + #root .drawer.open { + transform: translateX(0) !important; + } + + #root .drawer-body { + overflow-x: hidden !important; + overflow-y: auto !important; + -webkit-overflow-scrolling: touch !important; + } + + #root .utility-sheet { + width: auto !important; + max-width: calc(100vw - 20px) !important; + left: 10px !important; + right: 10px !important; + overflow: hidden !important; + } +} +/* mobile-fix-v2-clean */ diff --git a/src/mobile-header-fix.css b/src/mobile-header-fix.css new file mode 100644 index 0000000..c1b64e1 --- /dev/null +++ b/src/mobile-header-fix.css @@ -0,0 +1,239 @@ +/* Mobile header and drawer refinement. + Loaded after mobile-fix.css so the proven single-column layout remains intact. */ +@media screen and (max-width: 767px), + screen and (hover: none) and (pointer: coarse) and (max-width: 932px) { + body #root .topbar, + body #root .app > .topbar, + body .topbar { + display: grid !important; + grid-template-columns: 44px 44px minmax(0, 1fr) 44px !important; + grid-template-areas: "brand searchIcon spacer menu" !important; + align-items: center !important; + width: 100% !important; + max-width: 100% !important; + height: 74px !important; + min-height: 74px !important; + max-height: 78px !important; + padding: 13px 14px !important; + gap: 10px !important; + overflow: hidden !important; + } + + body #root .topbar .brand, + body .topbar .brand { + grid-area: brand !important; + width: 44px !important; + min-width: 44px !important; + max-width: 44px !important; + height: 44px !important; + overflow: visible !important; + } + + body #root .topbar .brand-mark, + body .topbar .brand-mark { + display: grid !important; + place-items: center !important; + width: 44px !important; + min-width: 44px !important; + max-width: 44px !important; + height: 44px !important; + border-radius: 14px !important; + opacity: 1 !important; + visibility: visible !important; + } + + body #root .topbar .brand-text, + body .topbar .brand-text, + body #root .topbar .brand-subtitle, + body .topbar .brand-subtitle { + display: none !important; + } + + body #root .topbar .search, + body .topbar .search { + grid-area: searchIcon !important; + display: grid !important; + place-items: center !important; + position: relative !important; + width: 42px !important; + height: 42px !important; + min-width: 42px !important; + max-width: 42px !important; + margin: 0 !important; + padding: 0 !important; + border-radius: 14px !important; + background: rgba(255, 255, 255, .72) !important; + border: 1px solid rgba(15, 23, 42, .06) !important; + box-shadow: 0 10px 22px rgba(15, 23, 42, .045) !important; + color: var(--ink-700) !important; + overflow: hidden !important; + } + + body #root .topbar .search svg, + body .topbar .search svg { + position: static !important; + transform: none !important; + width: 20px !important; + height: 20px !important; + color: currentColor !important; + } + + body #root .topbar .search input, + body #root .topbar .search .shortcut, + body .topbar .search input, + body .topbar .search .shortcut { + display: none !important; + } + + body #root .topbar::after, + body .topbar::after { + content: "" !important; + grid-area: spacer !important; + display: block !important; + min-width: 0 !important; + } + + body #root .topbar .menu-btn, + body .topbar .menu-btn, + body #menuBtn { + grid-area: menu !important; + display: inline-flex !important; + justify-self: end !important; + align-items: center !important; + justify-content: center !important; + width: 44px !important; + min-width: 44px !important; + max-width: 44px !important; + height: 44px !important; + margin: 0 !important; + border-radius: 14px !important; + color: #fff !important; + background: linear-gradient(135deg, #6D28D9 0%, #7C3AED 58%, #A78BFA 130%) !important; + box-shadow: 0 14px 28px rgba(109, 40, 217, .22) !important; + border: 1px solid rgba(255, 255, 255, .24) !important; + } + + body #root .topbar .icon-button, + body #root .topbar-spacer, + body #root .topbar .status-pill, + body #root .topbar .secondary-btn, + body #root .topbar .primary-btn, + body .topbar .icon-button, + body .topbar-spacer, + body .topbar .status-pill, + body .topbar .secondary-btn, + body .topbar .primary-btn { + display: none !important; + } + + body #root .drawer, + body .drawer { + width: min(320px, 86vw) !important; + max-width: 86vw !important; + flex-direction: column !important; + overflow-x: hidden !important; + } + + body #root .drawer .drawer-head, + body .drawer .drawer-head { + display: flex !important; + align-items: center !important; + justify-content: space-between !important; + width: 100% !important; + max-width: 100% !important; + min-height: 72px !important; + padding: 15px 14px !important; + gap: 12px !important; + border-bottom: 1px solid rgba(15, 23, 42, .06) !important; + } + + body #root .drawer .brand, + body .drawer .brand { + display: flex !important; + align-items: center !important; + justify-content: flex-start !important; + width: auto !important; + max-width: calc(100% - 54px) !important; + min-width: 0 !important; + flex: 1 1 auto !important; + gap: 10px !important; + overflow: hidden !important; + } + + body #root .drawer .brand-mark, + body .drawer .brand-mark { + display: grid !important; + place-items: center !important; + width: 38px !important; + min-width: 38px !important; + max-width: 38px !important; + height: 38px !important; + border-radius: 12px !important; + opacity: 1 !important; + visibility: visible !important; + } + + body #root .drawer .brand-mark svg, + body .drawer .brand-mark svg { + width: 21px !important; + height: 21px !important; + opacity: 1 !important; + visibility: visible !important; + } + + body #root .drawer .brand-text, + body .drawer .brand-text { + display: block !important; + min-width: 0 !important; + overflow: hidden !important; + } + + body #root .drawer .brand-title, + body .drawer .brand-title { + display: block !important; + max-width: 170px !important; + font-size: 17px !important; + line-height: 1 !important; + white-space: nowrap !important; + overflow: hidden !important; + text-overflow: ellipsis !important; + } + + body #root .drawer .brand-subtitle, + body .drawer .brand-subtitle { + display: block !important; + max-width: 170px !important; + margin-top: 4px !important; + font-size: 10px !important; + white-space: nowrap !important; + overflow: hidden !important; + text-overflow: ellipsis !important; + } + + body #root .drawer .close-btn, + body .drawer .close-btn, + body #drawerClose { + display: inline-grid !important; + place-items: center !important; + width: 38px !important; + min-width: 38px !important; + max-width: 38px !important; + height: 38px !important; + margin-left: auto !important; + border-radius: 12px !important; + background: rgba(255, 255, 255, .78) !important; + border: 1px solid rgba(15, 23, 42, .08) !important; + color: var(--ink-700) !important; + opacity: 1 !important; + visibility: visible !important; + } + + body #root .drawer .drawer-body, + body .drawer .drawer-body { + width: 100% !important; + max-width: 100% !important; + padding: 8px 14px 16px !important; + overflow-x: hidden !important; + } +} +/* mobile-header-drawer-fix */ diff --git a/src/styles.css b/src/styles.css index e56ba92..51d3b5a 100644 --- a/src/styles.css +++ b/src/styles.css @@ -1963,3 +1963,409 @@ text-overflow:ellipsis; } } + +/* Real-device mobile viewport override + Keeps desktop/tablet composition intact while forcing phones into a true + single-column layout on iOS Safari and Android Chrome. */ +@media (max-width: 767px) { + html, + body, + #root { + width: 100%; + max-width: 100%; + min-height: 100dvh; + margin: 0; + overflow-x: hidden; + } + + body { + position: relative; + -webkit-text-size-adjust: 100%; + } + + #root, + .app, + .app * { + min-width: 0; + } + + .app { + display: block; + width: 100%; + max-width: 100%; + min-height: 100dvh; + overflow-x: hidden; + } + + .topbar { + position: sticky; + top: 0; + width: 100%; + max-width: 100%; + height: auto; + min-height: 64px; + padding: 10px 12px; + gap: 8px; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: flex-start; + overflow: hidden; + } + + .brand { + order: 1; + width: auto; + max-width: calc(100% - 104px); + flex: 1 1 auto; + gap: 9px; + } + + .brand-mark { + width: 36px; + height: 36px; + border-radius: 12px; + } + + .brand-text { + min-width: 0; + } + + .brand-title, + .brand-subtitle { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + .brand-title { + font-size: 17px; + } + + .brand-subtitle { + max-width: 170px; + font-size: 10px; + } + + .menu-btn { + order: 3; + display: inline-flex !important; + flex: 0 0 42px; + width: 42px; + height: 42px; + margin-left: 0; + align-items: center; + justify-content: center; + } + + .topbar .icon-button { + order: 2; + flex: 0 0 40px; + width: 40px; + height: 40px; + } + + .search { + order: 4; + flex: 0 0 100%; + width: 100%; + max-width: 100%; + min-width: 0; + height: 38px; + } + + .search input { + width: 100%; + max-width: 100%; + min-width: 0; + padding-right: 14px; + overflow: hidden; + text-overflow: ellipsis; + } + + .search .shortcut { + display: none; + } + + .topbar-spacer, + .topbar .status-pill, + .topbar .secondary-btn, + .topbar .primary-btn { + display: none !important; + } + + .status-pill, + .secondary-btn, + .primary-btn, + .icon-button { + max-width: 100%; + min-width: 0; + } + + .primary-btn, + .secondary-btn { + white-space: normal; + text-align: center; + justify-content: center; + } + + .sidebar { + display: none !important; + } + + .workspace { + width: 100%; + max-width: 100%; + min-width: 0; + padding: 12px; + overflow-x: hidden; + } + + .bento { + display: grid; + grid-template-columns: minmax(0, 1fr); + gap: 12px; + width: 100%; + max-width: 100%; + } + + .bento > *, + .card, + .workflow-card, + .kpi, + .inbox-card, + .viewer-card, + .fields-card, + .review-card, + .validation-card, + .governance-card, + .wide-card, + .mid-card, + .half-card, + .third-card, + .analytics-hero, + .analytics-chart-card, + .analytics-side-card, + .analytics-wide-card, + .analytics-small-card, + .analytics-half-card { + grid-column: 1 / -1 !important; + width: 100%; + max-width: 100%; + min-width: 0; + min-height: auto; + } + + .card { + overflow: hidden; + } + + .card-head { + padding: 15px 14px 10px; + gap: 10px; + } + + .card-title, + .card-subtitle { + min-width: 0; + } + + .workflow-top { + display: grid; + grid-template-columns: minmax(0, 1fr); + gap: 12px; + margin-bottom: 14px; + } + + .workflow-actions { + width: 100%; + max-width: 100%; + display: grid; + grid-template-columns: minmax(0, 1fr); + gap: 8px; + justify-content: stretch; + } + + .workflow-actions .primary-btn, + .workflow-actions .secondary-btn, + .workflow-actions button { + width: 100%; + } + + .steps { + grid-template-columns: minmax(0, 1fr); + gap: 8px; + } + + .step { + width: 100%; + min-width: 0; + min-height: auto; + } + + .step::after { + display: none; + } + + .kpi { + display: flex; + min-height: 118px; + padding: 16px; + } + + .doc-tabs, + .source-chips, + .viewer-toolbar, + .utility-meta, + .metric-band, + .savings-grid, + .sla-grid, + .chart-kpi-grid, + .connector-summary { + max-width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + + .doc-row, + .field-row, + .check-row, + .rule-row, + .signal-row, + .readiness-row, + .queue-row, + .utility-item-top, + .utility-item-actions { + max-width: 100%; + min-width: 0; + } + + .viewer { + width: 100%; + max-width: 100%; + padding: 8px 12px 14px; + overflow: hidden; + } + + .paper { + width: 100%; + max-width: 100%; + padding: 18px 14px 16px; + } + + .invoice-top, + .invoice-details { + gap: 10px; + } + + .table-wrap { + width: 100%; + max-width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + + .fields-table, + .systems-table, + .analytics-table, + .invoice-table { + max-width: 100%; + } + + .drawer-overlay { + position: fixed; + inset: 0; + width: 100%; + max-width: 100%; + z-index: 70; + } + + .drawer { + position: fixed; + top: 0; + left: 0; + bottom: 0; + width: min(320px, 88vw); + max-width: 88vw; + height: 100dvh; + display: flex; + transform: translateX(-102%); + overflow: hidden; + z-index: 80; + } + + .drawer.open { + transform: translateX(0); + } + + .drawer-head, + .drawer-body { + max-width: 100%; + min-width: 0; + } + + .drawer-body { + overflow-y: auto; + overflow-x: hidden; + -webkit-overflow-scrolling: touch; + } + + .utility-overlay { + position: fixed; + inset: 0; + width: 100%; + max-width: 100%; + } + + .utility-sheet { + position: fixed; + left: 10px; + right: 10px; + bottom: 10px; + top: auto; + width: auto; + max-width: calc(100vw - 20px); + max-height: calc(100dvh - 20px); + border-radius: 22px; + overflow: hidden; + } + + .utility-body, + .utility-grid, + .utility-card, + .utility-list, + .utility-item { + max-width: 100%; + min-width: 0; + } + + .utility-grid, + .metric-band, + .savings-grid, + .sla-grid, + .chart-kpi-grid, + #page-integrations .connected-systems-card .connector-summary { + grid-template-columns: minmax(0, 1fr) !important; + } +} + +@media (max-width: 390px) { + .workspace { + padding: 10px; + } + + .topbar { + padding: 9px 10px; + } + + .brand-subtitle { + max-width: 145px; + } + + .menu-btn, + .topbar .icon-button { + flex-basis: 40px; + width: 40px; + height: 40px; + } +} diff --git a/vite.config.js b/vite.config.js index c5257bb..8506858 100644 --- a/vite.config.js +++ b/vite.config.js @@ -2,4 +2,8 @@ import { defineConfig } from 'vite'; export default defineConfig({ base: './', + build: { + // Keep classic max-width media queries intact for older real-device Safari. + cssMinify: false, + }, });