diff --git a/bun.lock b/bun.lock index d38fa57..cb2d948 100644 --- a/bun.lock +++ b/bun.lock @@ -9,16 +9,14 @@ "name": "dare-client", "version": "2.0.0", "dependencies": { - "@tailwindcss/vite": "^4.2.4", "sigpro": "git+http://gitea:3000/natxocc/sigpro", - "sigpro-grid": "git+http://gitea:3000/natxocc/sigpro-grid", - "sigpro-ui": "git+http://gitea:3000/natxocc/sigpro-ui", }, "devDependencies": { - "@iconify/json": "^2.2.470", + "@iconify/json": "^2.2.473", "@iconify/tailwind4": "^1.2.3", - "tailwindcss": "^4.2.4", - "vite": "^8.0.11", + "@tailwindcss/vite": "^4.3.0", + "tailwindcss": "^4.3.0", + "vite": "^8.0.13", }, }, "server": { @@ -44,7 +42,7 @@ "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w=="], - "@iconify/json": ["@iconify/json@2.2.470", "", { "dependencies": { "@iconify/types": "*", "pathe": "^2.0.3" } }, "sha512-8VgSitlCUvHL1vrFvwvM3L1sHakYHFM8txGDmnTQXQ3rYtkpvdyY3L/5ew/LWPOa2/a4Fvh3O43jhi5qajySrw=="], + "@iconify/json": ["@iconify/json@2.2.473", "", { "dependencies": { "@iconify/types": "*", "pathe": "^2.0.3" } }, "sha512-flWzgAFyF1VX83xmkd6VVHKOA22iYfjbJmPcre13ISuL+RsBooEUE6rkAuOqODylkF9mxY9XZr2kFOsq0ZpMTQ=="], "@iconify/tailwind4": ["@iconify/tailwind4@1.2.3", "", { "dependencies": { "@iconify/tools": "^5.0.5", "@iconify/types": "^2.0.0", "@iconify/utils": "^3.1.0" }, "peerDependencies": { "tailwindcss": ">= 4.0.0" } }, "sha512-z8SKiMHRASJKF/IY//87MF88lcB7ulxh8vlhQXXLWsBkNtOh6ese9R41MyGpQeqXdRvQVt+/fX2glQtHFjQ+MA=="], @@ -118,69 +116,69 @@ "@nodable/entities": ["@nodable/entities@2.1.0", "", {}, "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA=="], - "@oxc-project/types": ["@oxc-project/types@0.128.0", "", {}, "sha512-huv1Y/LzBJkBVHt3OlC7u0zHBW9qXf1FdD7sGmc1rXc2P1mTwHssYv7jyGx5KAACSCH+9B3Bhn6Z9luHRvf7pQ=="], + "@oxc-project/types": ["@oxc-project/types@0.130.0", "", {}, "sha512-ibD2usx9JRu7f5pu2tMKMI4cpA4NgXJQoYRP4pQ7Pxmn1l6k/53qWtQWZayhYy3X4QZkt90Ot+mJEaeXouio6Q=="], - "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.0-rc.18", "", { "os": "android", "cpu": "arm64" }, "sha512-lIDyUAfD7U3+BWKzdxMbJcsYHuqXqmGz40aeRqvuAm3y5TkJSYTBW2RDrn65DJFPQqVjUAUqq5uz8urzQ8aBdQ=="], + "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.1", "", { "os": "android", "cpu": "arm64" }, "sha512-fJI3I0r3C3Oj/zdBCpaCmBRZYf07xpaq4yCfDDoSFm+beWNzbIl26puW8RraUdugoJw/95zerNOn6jasAhzSmg=="], - "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.0.0-rc.18", "", { "os": "darwin", "cpu": "arm64" }, "sha512-apJq2ktnGp27nSInMR5Vcj8kY6xJzDAvfdIFlpDcAK/w4cDO58qVoi1YQsES/SKiFNge/6e4CUzgjfHduYqWpQ=="], + "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.0.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-cKnAhWEsV7TPcA/5EAteDp6KcJZBQ2G+BqE7zayMMi7kMvwRsbv7WT9aOnn0WNl4SKEIf43vjS31iUPu80nzXg=="], - "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.0.0-rc.18", "", { "os": "darwin", "cpu": "x64" }, "sha512-5Ofot8xbs+pxRHJqm9/9N/4sTQOvdrwEsmPE9pdLEEoAbdZtG6F2LMDfO1sp6ZAtXJuJV/21ew2srq3W8NXB5g=="], + "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.0.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-YKrVwQjIRBPo+5G/u03wGjbdy4q7pyzCe93DK9VJ7zkVmeg8LJ7GbgsiHWdR4xSoe4CAXRD7Bcjgbtr64bkXNg=="], - "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.0.0-rc.18", "", { "os": "freebsd", "cpu": "x64" }, "sha512-7h8eeOTT1eyqJyx64BFCnWZpNm486hGWt2sqeLLgDxA0xI1oGZ9H7gK1S85uNGmBhkdPwa/6reTxfFFKvIsebw=="], + "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.0.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-z/oBsREo46SsFqBwYtFe0kpJeBijAT48O/WXLI4suiCLBkr03RTtTJMCzSdDd2znlh8VJizL09XVkQgk8IZonw=="], - "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.18", "", { "os": "linux", "cpu": "arm" }, "sha512-eRcm/HVt9U/JFu5RKAEKwGQYtDCKWLiaH6wOnsSEp6NMBb/3Os8LgHZlNyzMpFVNmiiMFlfb2zEnebfzJrHFmg=="], + "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.0.1", "", { "os": "linux", "cpu": "arm" }, "sha512-ik8q7GM11zxvYxFc2PeDcT6TBvhCQMaUxfph/M5l9sKuTs/Sjg3L+Byw0F7w0ZVLBZmx30P+gG0ECzzN+MFcmQ=="], - "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.0.0-rc.18", "", { "os": "linux", "cpu": "arm64" }, "sha512-SOrT/cT4ukTmgnrEz/Hg3m7LBnuCLW9psDeMKrimRWY4I8DmnO7Lco8W2vtqPmMkbVu8iJ+g4GFLVLLOVjJ9DQ=="], + "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.0.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-QoSx2EkyrrdZ6kcyE8stqZ62t0Yra8Fs5ia9lOxJrh6TMQJK7gQKmscdTHf7pOXKREKrVwOtJcQG3qVSfc866A=="], - "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.0.0-rc.18", "", { "os": "linux", "cpu": "arm64" }, "sha512-QWjdxN1HJCpBTAcZ5N5F7wju3gVPzRzSpmGzx7na0c/1qpN9CFil+xt+l9lV/1M6/gqHSNXCiqPfwhVJPeLnug=="], + "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.0.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-uwNwFpwKeNiZawfAWBgg0VIztPTV3ihhh1vV334h9ivnNLorxnQMU6Fz8wG1Zb4Qh9LC1/MkcyT3YlDXG3Rsgg=="], - "@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.18", "", { "os": "linux", "cpu": "ppc64" }, "sha512-ugCOyj7a4d9h3q9B+wXmf6g3a68UsjGh6dob5DHevHGMwDUbhsYNbSPxJsENcIttJZ9jv7qGM2UesLw5jqIhdg=="], + "@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.0.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-zY1bul7OWr7DFBiJ++wofXvnr8B45ce3QsQUhKrIhXsygAh7bTkwyeM1bi1a2g5C/yC/N8TZyGDEoMfm/l9mpg=="], - "@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.0.0-rc.18", "", { "os": "linux", "cpu": "s390x" }, "sha512-kKWRhbsotpXkGbcd5dllUWg5gEXcDAa8u5YnP9AV5DYNbvJHGzzuwv7dpmhc8NqKMJldl0a+x76IHbspEpEmdA=="], + "@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.0.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-0frlsT/f4Ft6I7SMESTKnF3cZsdicQn1dCMkF/jT9wDLE+gGoiQfv1nmT9e+s7s/fekvvy6tZM2jHvI2tkbJDQ=="], - "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.0.0-rc.18", "", { "os": "linux", "cpu": "x64" }, "sha512-uCo8ElcCIAMyYAZyuIZ81oFkhTSIllNvUCHCAlbhlN4ji3uC28h7IIdlXyIvGO7HsuqnV9p3rD/bpH7XhIyhRw=="], + "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.0.1", "", { "os": "linux", "cpu": "x64" }, "sha512-XABVmGp9Tg0WspTVvwduTc4fpqy6JnAUrSQe6OuyqD/03nI7r0O9OWUkMIwFrjKAIqolvqoA4ZrJppgwE0Gxmw=="], - "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.0.0-rc.18", "", { "os": "linux", "cpu": "x64" }, "sha512-XNOQZtuE6yUIvx4rwGemwh8kpL1xvU41FXy/s9K7T/3JVcqGzo3NfKM2HrbrGgfPYGFW42f07Wk++aOC6B9NWA=="], + "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.0.1", "", { "os": "linux", "cpu": "x64" }, "sha512-bV4fzswuzVcKD90o/VM6QqKxnxlDq0g2BISDLNVmxrnhpv1DDbyPhCIjYfvzYLV+MvkKKnQt2Q6AO86SEBULUQ=="], - "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.0.0-rc.18", "", { "os": "none", "cpu": "arm64" }, "sha512-tSn/kzrfa7tNOXr7sEacDBN4YsIqTyLqh45IO0nHDwtpKIDNDJr+VFojt+4klSpChxB29JLyduSsE0MKEwa65A=="], + "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.0.1", "", { "os": "none", "cpu": "arm64" }, "sha512-/Mh0Zhq3OP7fVs0kcQHZP6lZEthMGTaSf8UBQYSFEZDWGXXlEC+nJ6EqenaK2t4LBXMe3A+K/G2BVXXdtOr4PQ=="], - "@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.0.0-rc.18", "", { "dependencies": { "@emnapi/core": "1.10.0", "@emnapi/runtime": "1.10.0", "@napi-rs/wasm-runtime": "^1.1.4" }, "cpu": "none" }, "sha512-+J9YGmc+czgqlhYmwun3S3O0FIZhsH8ep2456xwjAdIOmuJxM7xz4P4PtrxU+Bz17a/5bqPA8o3HAAoX0teUdg=="], + "@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.0.1", "", { "dependencies": { "@emnapi/core": "1.10.0", "@emnapi/runtime": "1.10.0", "@napi-rs/wasm-runtime": "^1.1.4" }, "cpu": "none" }, "sha512-+1xc9X45l8ufsBAm6Gjvx2qDRIY9lTVt0cgWNcJ+1gdhXvkbxePA60yRTwSTuXL09CMhyJmjpV7E3NoyxbqFQQ=="], - "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.0.0-rc.18", "", { "os": "win32", "cpu": "arm64" }, "sha512-zsu47DgU0FQzSwi6sU9dZoEdUv7pc1AptSEz/Z8HBg54sV0Pbs3N0+CrIbTsgiu6EyoaNN9CHboqbLaz9lhOyQ=="], + "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.0.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-1D+UqZdfnuR+Jy1GgMJwi85bD40H21uNmOPRWQhw4oRSuolZ/B5rixZ45DK2KXOTCvmVCecauWgEhbw8bI7tOw=="], - "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.0.0-rc.18", "", { "os": "win32", "cpu": "x64" }, "sha512-7H+3yqGgmnlDTRRhw/xpYY9J1kf4GC681nVc4GqKhExZTDrVVrV2tsOR9kso0fvgBdcTCcQShx4SLLoHgaLwhg=="], + "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.0.1", "", { "os": "win32", "cpu": "x64" }, "sha512-INAycaWuhlOK3wk4mRHGsdgwYWmd9cChdPdE9bwWmy6rn9VqVNYNFGhOdXrofXUxwHIncSiPNb8tNm8knDVIeQ=="], - "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.18", "", {}, "sha512-CUY5Mnhe64xQBGZEEXQ5WyZwsc1JU3vAZLIxtrsBt3LO6UOb+C8GunVKqe9sT8NeWb4lqSaoJtp2xo6GxT1MNw=="], + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.1", "", {}, "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw=="], - "@tailwindcss/node": ["@tailwindcss/node@4.2.4", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.19.0", "jiti": "^2.6.1", "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.2.4" } }, "sha512-Ai7+yQPxz3ddrDQzFfBKdHEVBg0w3Zl83jnjuwxnZOsnH9pGn93QHQtpU0p/8rYWxvbFZHneni6p1BSLK4DkGA=="], + "@tailwindcss/node": ["@tailwindcss/node@4.3.0", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.21.0", "jiti": "^2.6.1", "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.3.0" } }, "sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g=="], - "@tailwindcss/oxide": ["@tailwindcss/oxide@4.2.4", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.2.4", "@tailwindcss/oxide-darwin-arm64": "4.2.4", "@tailwindcss/oxide-darwin-x64": "4.2.4", "@tailwindcss/oxide-freebsd-x64": "4.2.4", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.4", "@tailwindcss/oxide-linux-arm64-gnu": "4.2.4", "@tailwindcss/oxide-linux-arm64-musl": "4.2.4", "@tailwindcss/oxide-linux-x64-gnu": "4.2.4", "@tailwindcss/oxide-linux-x64-musl": "4.2.4", "@tailwindcss/oxide-wasm32-wasi": "4.2.4", "@tailwindcss/oxide-win32-arm64-msvc": "4.2.4", "@tailwindcss/oxide-win32-x64-msvc": "4.2.4" } }, "sha512-9El/iI069DKDSXwTvB9J4BwdO5JhRrOweGaK25taBAvBXyXqJAX+Jqdvs8r8gKpsI/1m0LeJLyQYTf/WLrBT1Q=="], + "@tailwindcss/oxide": ["@tailwindcss/oxide@4.3.0", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.3.0", "@tailwindcss/oxide-darwin-arm64": "4.3.0", "@tailwindcss/oxide-darwin-x64": "4.3.0", "@tailwindcss/oxide-freebsd-x64": "4.3.0", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.0", "@tailwindcss/oxide-linux-arm64-gnu": "4.3.0", "@tailwindcss/oxide-linux-arm64-musl": "4.3.0", "@tailwindcss/oxide-linux-x64-gnu": "4.3.0", "@tailwindcss/oxide-linux-x64-musl": "4.3.0", "@tailwindcss/oxide-wasm32-wasi": "4.3.0", "@tailwindcss/oxide-win32-arm64-msvc": "4.3.0", "@tailwindcss/oxide-win32-x64-msvc": "4.3.0" } }, "sha512-F7HZGBeN9I0/AuuJS5PwcD8xayx5ri5GhjYUDBEVYUkexyA/giwbDNjRVrxSezE3T250OU2K/wp/ltWx3UOefg=="], - "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.2.4", "", { "os": "android", "cpu": "arm64" }, "sha512-e7MOr1SAn9U8KlZzPi1ZXGZHeC5anY36qjNwmZv9pOJ8E4Q6jmD1vyEHkQFmNOIN7twGPEMXRHmitN4zCMN03g=="], + "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.3.0", "", { "os": "android", "cpu": "arm64" }, "sha512-TJPiq67tKlLuObP6RkwvVGDoxCMBVtDgKkLfa/uyj7/FyxvQwHS+UOnVrXXgbEsfUaMgiVvC4KbJnRr26ho4Ng=="], - "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-tSC/Kbqpz/5/o/C2sG7QvOxAKqyd10bq+ypZNf+9Fi2TvbVbv1zNpcEptcsU7DPROaSbVgUXmrzKhurFvo5eDg=="], + "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.3.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-oMN/WZRb+SO37BmUElEgeEWuU8E/HXRkiODxJxLe1UTHVXLrdVSgfaJV7pSlhRGMSOiXLuxTIjfsF3wYvz8cgQ=="], - "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-yPyUXn3yO/ufR6+Kzv0t4fCg2qNr90jxXc5QqBpjlPNd0NqyDXcmQb/6weunH/MEDXW5dhyEi+agTDiqa3WsGg=="], + "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.3.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-N6CUmu4a6bKVADfw77p+iw6Yd9Q3OBhe0veaDX+QazfuVYlQsHfDgxBrsjQ/IW+zywL8mTrNd0SdJT/zgtvMdA=="], - "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.2.4", "", { "os": "freebsd", "cpu": "x64" }, "sha512-BoMIB4vMQtZsXdGLVc2z+P9DbETkiopogfWZKbWwM8b/1Vinbs4YcUwo+kM/KeLkX3Ygrf4/PsRndKaYhS8Eiw=="], + "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.3.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-zDL5hBkQdH5C6MpqbK3gQAgP80tsMwSI26vjOzjJtNCMUo0lFgOItzHKBIupOZNQxt3ouPH7RPhvNhiTfCe5CQ=="], - "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-7pIHBLTHYRAlS7V22JNuTh33yLH4VElwKtB3bwchK/UaKUPpQ0lPQiOWcbm4V3WP2I6fNIJ23vABIvoy2izdwA=="], + "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.3.0", "", { "os": "linux", "cpu": "arm" }, "sha512-R06HdNi7A7OEoMsf6d4tjZ71RCWnZQPHj2mnotSFURjNLdBC+cIgXQ7l81CqeoiQftjf6OOblxXMInMgN2VzMA=="], - "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-+E4wxJ0ZGOzSH325reXTWB48l42i93kQqMvDyz5gqfRzRZ7faNhnmvlV4EPGJU3QJM/3Ab5jhJ5pCRUsKn6OQw=="], + "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.3.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-qTJHELX8jetjhRQHCLilkVLmybpzNQAtaI/gaoVoidn/ufbNDbAo8KlK2J+yPoc8wQxvDxCmh/5lr8nC1+lTbg=="], - "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-bBADEGAbo4ASnppIziaQJelekCxdMaxisrk+fB7Thit72IBnALp9K6ffA2G4ruj90G9XRS2VQ6q2bCKbfFV82g=="], + "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.3.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ=="], - "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-7Mx25E4WTfnht0TVRTyC00j3i0M+EeFe7wguMDTlX4mRxafznw0CA8WJkFjWYH5BlgELd1kSjuU2JiPnNZbJDA=="], + "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.3.0", "", { "os": "linux", "cpu": "x64" }, "sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ=="], - "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-2wwJRF7nyhOR0hhHoChc04xngV3iS+akccHTGtz965FwF0up4b2lOdo6kI1EbDaEXKgvcrFBYcYQQ/rrnWFVfA=="], + "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.3.0", "", { "os": "linux", "cpu": "x64" }, "sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg=="], - "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.2.4", "", { "dependencies": { "@emnapi/core": "^1.8.1", "@emnapi/runtime": "^1.8.1", "@emnapi/wasi-threads": "^1.1.0", "@napi-rs/wasm-runtime": "^1.1.1", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.8.1" }, "cpu": "none" }, "sha512-FQsqApeor8Fo6gUEklzmaa9994orJZZDBAlQpK2Mq+DslRKFJeD6AjHpBQ0kZFQohVr8o85PPh8eOy86VlSCmw=="], + "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.3.0", "", { "dependencies": { "@emnapi/core": "^1.10.0", "@emnapi/runtime": "^1.10.0", "@emnapi/wasi-threads": "^1.2.1", "@napi-rs/wasm-runtime": "^1.1.4", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.8.1" }, "cpu": "none" }, "sha512-HNZGOUxEmElksYR7S6sC5jTeNGpobAsy9u7Gu0AskJ8/20FR9GqebUyB+HBcU/ax6BHuiuJi+Oda4B+YX6H1yA=="], - "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.2.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-L9BXqxC4ToVgwMFqj3pmZRqyHEztulpUJzCxUtLjobMCzTPsGt1Fa9enKbOpY2iIyVtaHNeNvAK8ERP/64sqGQ=="], + "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.3.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-Pe+RPVTi1T+qymuuRpcdvwSVZjnll/f7n8gBxMMh3xLTctMDKqpdfGimbMyioqtLhUYZxdJ9wGNhV7MKHvgZsQ=="], - "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.2.4", "", { "os": "win32", "cpu": "x64" }, "sha512-ESlKG0EpVJQwRjXDDa9rLvhEAh0mhP1sF7sap9dNZT0yyl9SAG6T7gdP09EH0vIv0UNTlo6jPWyujD6559fZvw=="], + "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.3.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Mvrf2kXW/yeW/OTezZlCGOirXRcUuLIBx/5Y12BaPM7wJoryG6dfS/NJL8aBPqtTEx/Vm4T4vKzFUcKDT+TKUA=="], - "@tailwindcss/vite": ["@tailwindcss/vite@4.2.4", "", { "dependencies": { "@tailwindcss/node": "4.2.4", "@tailwindcss/oxide": "4.2.4", "tailwindcss": "4.2.4" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7 || ^8" } }, "sha512-pCvohwOCspk3ZFn6eJzrrX3g4n2JY73H6MmYC87XfGPyTty4YsCjYTMArRZm/zOI8dIt3+EcrLHAFPe5A4bgtw=="], + "@tailwindcss/vite": ["@tailwindcss/vite@4.3.0", "", { "dependencies": { "@tailwindcss/node": "4.3.0", "@tailwindcss/oxide": "4.3.0", "tailwindcss": "4.3.0" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7 || ^8" } }, "sha512-t6J3OrB5Fc0ExuhohouH0fWUGMYL6PTLhW+E7zIk/pdbnJARZDCwjBznFnkh5ynRnIRSI4YjtTH0t6USjJISrw=="], "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], @@ -190,20 +188,6 @@ "acorn": ["acorn@8.16.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw=="], - "ag-charts-community": ["ag-charts-community@13.2.1", "", { "dependencies": { "ag-charts-core": "13.2.1", "ag-charts-locale": "13.2.1", "ag-charts-types": "13.2.1" } }, "sha512-A+DCiesRp6WQ5R5e3x9bLh50IWCachVF6gkz6Dz4icMcq6WL5JNKL+xZEzrKYl+kuD8Y8728xmVm/H53o9Nayw=="], - - "ag-charts-core": ["ag-charts-core@13.2.1", "", { "dependencies": { "ag-charts-types": "13.2.1" } }, "sha512-Y7rk3kF+fA6bUMjU+vIzG5rRBd+8EKjyIjzNR2uV1+HyrlnOn6b7Eb9HPkDUoosWHhz+UNCOW/lYDzPP6mivHQ=="], - - "ag-charts-enterprise": ["ag-charts-enterprise@13.2.1", "", { "dependencies": { "ag-charts-community": "13.2.1", "ag-charts-core": "13.2.1" } }, "sha512-QiNuNUu3o5qWUz9cPLuKr9r9k2YsO8Nwp4qJGR0s76WT6AeCmqKa12cSJrvIpwvPdjZ3PVlwsMA8s8EZ4dqrXA=="], - - "ag-charts-locale": ["ag-charts-locale@13.2.1", "", {}, "sha512-lwwV/l/O187R4DYUfjm6p8LijITe46IlDz8nOxNQNJAOpkzs+cWmjSxfNiM1BMVCWTcMdah/AKN+6iihbDa8IA=="], - - "ag-charts-types": ["ag-charts-types@13.2.1", "", {}, "sha512-r7veb3QqJtIKlXmeUsLR4/oDPwmHxFI2tmbZra/203mdaz3uwQUrrgYNg628nrK+7L2YxXnwGc6L05tWjLLjNQ=="], - - "ag-grid-community": ["ag-grid-community@35.2.1", "", { "dependencies": { "ag-charts-types": "13.2.1" } }, "sha512-ycmGI+1EbUT7i3eg/Kgi1owwnkdHXRufo10Xm6cfSsVPM3TMpvlbLgi28KIPt9DGHZWHq9fOBn7nxMNdv1Yaow=="], - - "ag-grid-enterprise": ["ag-grid-enterprise@35.2.1", "", { "dependencies": { "ag-grid-community": "35.2.1" }, "optionalDependencies": { "ag-charts-community": "13.2.1", "ag-charts-enterprise": "13.2.1" } }, "sha512-nLl06cc7/THzf7mGZt7PotdeaBN74X3K9g2looyvJEymrOOJfjrLePrV4aNNhz/WZnATkbyblm5DM/qv3BeHKA=="], - "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="], "commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="], @@ -234,7 +218,7 @@ "domutils": ["domutils@3.2.2", "", { "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="], - "enhanced-resolve": ["enhanced-resolve@5.21.0", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.3" } }, "sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA=="], + "enhanced-resolve": ["enhanced-resolve@5.21.3", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.3" } }, "sha512-QyL119InA+XXEkNLNTPCXPugSvOfhwv0JOlGNzvxs0hZaiHLNvXSpudUWsOlsXGWJh8G6ckCScEkVHfX3kw/2Q=="], "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], @@ -254,7 +238,7 @@ "iconv-lite": ["iconv-lite@0.7.2", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw=="], - "jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], + "jiti": ["jiti@2.7.0", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ=="], "lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="], @@ -312,7 +296,7 @@ "postcss": ["postcss@8.5.14", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg=="], - "rolldown": ["rolldown@1.0.0-rc.18", "", { "dependencies": { "@oxc-project/types": "=0.128.0", "@rolldown/pluginutils": "1.0.0-rc.18" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-rc.18", "@rolldown/binding-darwin-arm64": "1.0.0-rc.18", "@rolldown/binding-darwin-x64": "1.0.0-rc.18", "@rolldown/binding-freebsd-x64": "1.0.0-rc.18", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.18", "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.18", "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.18", "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.18", "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.18", "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.18", "@rolldown/binding-linux-x64-musl": "1.0.0-rc.18", "@rolldown/binding-openharmony-arm64": "1.0.0-rc.18", "@rolldown/binding-wasm32-wasi": "1.0.0-rc.18", "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.18", "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.18" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-phmyKBpuBdRYDf4hgyynGAYn/rDDe+iZXKVJ7WX5b1zQzpLkP5oJRPGsfJuHdzPMlyyEO/4sPW6yfSx2gf7lVg=="], + "rolldown": ["rolldown@1.0.1", "", { "dependencies": { "@oxc-project/types": "=0.130.0", "@rolldown/pluginutils": "^1.0.0" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.1", "@rolldown/binding-darwin-arm64": "1.0.1", "@rolldown/binding-darwin-x64": "1.0.1", "@rolldown/binding-freebsd-x64": "1.0.1", "@rolldown/binding-linux-arm-gnueabihf": "1.0.1", "@rolldown/binding-linux-arm64-gnu": "1.0.1", "@rolldown/binding-linux-arm64-musl": "1.0.1", "@rolldown/binding-linux-ppc64-gnu": "1.0.1", "@rolldown/binding-linux-s390x-gnu": "1.0.1", "@rolldown/binding-linux-x64-gnu": "1.0.1", "@rolldown/binding-linux-x64-musl": "1.0.1", "@rolldown/binding-openharmony-arm64": "1.0.1", "@rolldown/binding-wasm32-wasi": "1.0.1", "@rolldown/binding-win32-arm64-msvc": "1.0.1", "@rolldown/binding-win32-x64-msvc": "1.0.1" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-X0KQHljNnEkWNqqiz9zJrGunh1B0HgOxLXvnFpCOcadzcy5qohZ3tqMEUg00vncoRovXuK3ZqCT9KnnKzoInFQ=="], "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], @@ -322,11 +306,7 @@ "sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="], - "sigpro": ["sigpro@git+http://gitea:3000/natxocc/sigpro#610c9a95869842fb61e6b9df73231e89fd6a042c", {}, "610c9a95869842fb61e6b9df73231e89fd6a042c"], - - "sigpro-grid": ["sigpro-grid@git+http://gitea:3000/natxocc/sigpro-grid#8415907bf198ab875d60bc90af89d512f48a031c", { "dependencies": { "ag-grid-community": "^35.2.0", "ag-grid-enterprise": "^35.2.0", "sigpro": "git+http://gitea:3000/natxocc/sigpro" } }, "8415907bf198ab875d60bc90af89d512f48a031c"], - - "sigpro-ui": ["sigpro-ui@git+http://gitea:3000/natxocc/sigpro-ui#5de23788994e9000a4b2a122196f243ffee91e99", { "dependencies": { "sigpro": "git+http://gitea:3000/natxocc/sigpro" } }, "5de23788994e9000a4b2a122196f243ffee91e99"], + "sigpro": ["sigpro@git+http://gitea:3000/natxocc/sigpro#0b3eb0159fa77908ef8fdaf039737135ddda0802", {}, "0b3eb0159fa77908ef8fdaf039737135ddda0802"], "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], @@ -334,7 +314,7 @@ "svgo": ["svgo@4.0.1", "", { "dependencies": { "commander": "^11.1.0", "css-select": "^5.1.0", "css-tree": "^3.0.1", "css-what": "^6.1.0", "csso": "^5.0.5", "picocolors": "^1.1.1", "sax": "^1.5.0" }, "bin": "./bin/svgo.js" }, "sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w=="], - "tailwindcss": ["tailwindcss@4.2.4", "", {}, "sha512-HhKppgO81FQof5m6TEnuBWCZGgfRAWbaeOaGT00KOy/Pf/j6oUihdvBpA7ltCeAvZpFhW3j0PTclkxsd4IXYDA=="], + "tailwindcss": ["tailwindcss@4.3.0", "", {}, "sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q=="], "tapable": ["tapable@2.3.3", "", {}, "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A=="], @@ -348,7 +328,7 @@ "undici-types": ["undici-types@7.19.2", "", {}, "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg=="], - "vite": ["vite@8.0.11", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", "postcss": "^8.5.14", "rolldown": "1.0.0-rc.18", "tinyglobby": "^0.2.16" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.1.18", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-Jz1mxtUBR5xTT65VOdJZUUeoyLtqljmFkiUXhPTLZka3RDc9vpi/xXkyrnsdRcm2lIi3l3GPMnAidTsEGIj3Ow=="], + "vite": ["vite@8.0.13", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", "postcss": "^8.5.14", "rolldown": "1.0.1", "tinyglobby": "^0.2.16" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.1.18", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-MFtjBYgzmSxmgA4RAfjIyXWpGe1oALnjgUTzzV7QLx/TKxCzjtMH6Fd9/eVK+5Fg1qNoz5VAwsmMs/NofrmJvw=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.10.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" }, "bundled": true }, "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw=="], diff --git a/client/App.js b/client/App.js index 9411228..46fa65d 100644 --- a/client/App.js +++ b/client/App.js @@ -1,286 +1,300 @@ // App.js import { $, watch, h, when } from "sigpro"; import { - Navbar, - Drawer, - DrawerToggle, - DrawerContent, - DrawerSide, - DrawerOverlay, - Menu, - Tabs, - Swap, - SwapToggle, - SwapOn, - SwapOff, - Icon, - Avatar, - Dropdown, - DropdownButton, - DropdownContent, - Modal, - Fieldset, - Input, - Button + Navbar, + Drawer, + DrawerToggle, + DrawerContent, + DrawerSide, + DrawerOverlay, + Menu, + MenuTitle, + MenuItem, + Tabs, + Tab, + Swap, + SwapToggle, + SwapOn, + SwapOff, + Icon, + Avatar, + Dropdown, + DropdownButton, + DropdownContent, + Modal, + ModalBox, + ModalClose, + ModalAction, + ModalBackdrop, + Fieldset, + Input, + LabelFloating, + Button, + Loading } from "sigpro-ui"; import 'sigpro-ui/css'; import { Desktop } from "./tabs/Desktop.js"; +import { ModalSearch } from "./components/ModalSearch.js"; + export const isDark = $(false, "theme-mode"); - export const App = () => { - // Tema oscuro/claro - + const showSearchModal = $(false); + + // Tema oscuro/claro + watch(isDark, (dark) => { + document.documentElement.setAttribute("data-theme", dark ? "dark" : "light"); + }); + document.documentElement.setAttribute("data-theme", isDark() ? "dark" : "light"); - watch(isDark, (dark) => { - document.documentElement.setAttribute("data-theme", dark ? "dark" : "light"); - }); - - // Activar tema inicial - document.documentElement.setAttribute("data-theme", isDark() ? "dark" : "light"); - - // Estado de login persistente - const logged = $(false, "logged"); - - // Estado para buscador - const searchQuery = $(""); - - // Estado para modal de login - const showLoginModal = $(false); - const loginForm = { - username: $(""), - password: $("") - }; - - // Pestañas: la primera (Escritorio) no es cerrable - const tabs = $([ - { - label: "Escritorio", - content: () => Desktop, - closable: false - } - ]); - const activeTab = $(0); - const openDrawer = $(false); - - // Elementos del menú en el drawer - const menuItems = [ - { - label: "Clientes", - children: [ - { label: "Buscar Cliente", onclick: () => openTab("Clientes") }, - ] - }, - { - label: "Recibos", - children: [ - { label: "Buscar Recibo" }, - { label: "Pendientes" }, - { label: "Extornos" }, - ], - }, - { - label: "Polizas", - children: [ - { label: "Buscar Póliza", onclick: () => openTab("Polizas") }, - { label: "Nueva producción", onclick: () => openTab("Polizas") }, - { label: "Anulaciones", onclick: () => openTab("Polizas") }, - { label: "Renovación Cartera", onclick: () => openTab("Polizas") } - ] - - }, - { - label: "Comercial", - children: [ - { label: "Oportunidades" }, - ], - }, - { - label: "Siniestros", - children: [ - { label: "Nuevo Siniestro" }, - { label: "Buscar Siniestro" }, - ] - }, - { - label: "Soporte", - children: [ - { label: "Tickets" }, - { label: "Reportes" }, - ] - } - ]; - - // Referencia al contenedor de pestañas para manejar el foco - let tabsContainerRef = null; - let drawerToggleRef = null; - - // Abre o crea una pestaña, cierra el drawer - const openTab = (label) => { - const currentTabs = tabs(); - - if (currentTabs.length >= 15) return; - - const newTab = { - label, - content: () => `¡Bienvenido al escritorio!`, - closable: true + // Estado de login persistente + const logged = $(false, "logged"); + const showLoginModal = $(false); + const loginForm = { + username: $(""), + password: $("") }; - tabs([...currentTabs, newTab]); - activeTab(tabs().length - 1); - closeDrawer(); - }; + // Pestañas: la primera (Escritorio) no es cerrable + const tabs = $([ + { + label: "Escritorio", + content: () => Desktop, + closable: false + } + ]); + const activeTab = $(0); + const openDrawer = $(false); - const closeDrawer = () => { - openDrawer(false); - if (drawerToggleRef) drawerToggleRef.checked = false; - }; + // Elementos del menú en el drawer + const menuItems = [ + { + label: "Clientes", + children: [ + { label: "Buscar Cliente", onclick: () => openTab("Clientes") }, + ] + }, + { + label: "Recibos", + children: [ + { label: "Buscar Recibo" }, + { label: "Pendientes" }, + { label: "Extornos" }, + ], + }, + { + label: "Polizas", + children: [ + { label: "Buscar Póliza", onclick: () => openTab("Polizas") }, + { label: "Nueva producción", onclick: () => openTab("Polizas") }, + { label: "Anulaciones", onclick: () => openTab("Polizas") }, + { label: "Renovación Cartera", onclick: () => openTab("Polizas") } + ] + }, + { + label: "Comercial", + children: [ + { label: "Oportunidades" }, + ], + }, + { + label: "Siniestros", + children: [ + { label: "Nuevo Siniestro" }, + { label: "Buscar Siniestro" }, + ] + }, + { + label: "Soporte", + children: [ + { label: "Tickets" }, + { label: "Reportes" }, + ] + } + ]; - // Manejo del login - const handleLogin = () => { - logged(true); - showLoginModal(false); - loginForm.username(""); - loginForm.password(""); - }; + let tabsContainerRef = null; + let drawerToggleRef = null; - const handleLogout = () => { - logged(false); - }; + const openTab = (label) => { + const currentTabs = tabs(); + if (currentTabs.length >= 15) return; + const newTab = { + label, + content: () => `¡Bienvenido a ${label}!`, + closable: true + }; + tabs([...currentTabs, newTab]); + activeTab(tabs().length - 1); + closeDrawer(); + }; - return [ - Drawer({}, [ - // Control oculto del drawer - DrawerToggle({ - id: "app-drawer", - ref: (el) => drawerToggleRef = el, - checked: openDrawer, - onchange: (e) => openDrawer(e.target.checked) - }), + const closeDrawer = () => { + openDrawer(false); + if (drawerToggleRef) drawerToggleRef.checked = false; + }; - // Contenido principal - DrawerContent({}, [ - Navbar({ class: "bg-base-100 shadow-lg align-center" }, [ - // Botón hamburguesa - div({ class: "flex-none" }, [ - label({ for: "app-drawer", class: "btn btn-ghost btn-square" }, [ - Icon({}, "icon-[lucide--menu]") - ]) - ]), + const handleLogin = () => { + if (!loginForm.username() || !loginForm.password()) { + alert('Por favor, complete todos los campos'); + return; + } + logged(true); + showLoginModal(false); + loginForm.username(""); + loginForm.password(""); + }; - // Buscador - div({ class: "flex-1 max-w-md mx-4" }, [ - Input({ - type: "search", - placeholder: "Buscar...", - value: searchQuery, - left: span({ class: "icon-[lucide--search]" }), - oninput: (e) => console.log(e.target.value) - }) - ]), + const handleLogout = () => { + logged(false); + }; - // Espaciador central - div({ class: "flex-1" }, []), + return [ + Drawer({}, [ + DrawerToggle({ + id: "app-drawer", + ref: (el) => drawerToggleRef = el, + checked: openDrawer, + onchange: (e) => openDrawer(e.target.checked) + }), - // Swap para tema claro/oscuro - Swap({ class: "text-xl" }, [ - SwapToggle({ value: isDark, class: "swap-rotate" }), - SwapOn({}, span({ class: "icon-[lucide--moon]" })), - SwapOff({}, span({ class: "icon-[lucide--sun]" })), - ]), + DrawerContent({}, [ + Navbar({ class: "bg-base-100 shadow-lg align-center" }, [ + div({ class: "flex-none" }, [ + label({ for: "app-drawer", class: "btn btn-ghost btn-square" }, [ + Icon({}, "icon-[lucide--menu]") + ]) + ]), + Button({ class: "icon-[lucide--search] btn-ghost", onclick: () => showSearchModal(true) }), + div({ class: "flex-1" }), + Swap({ class: "text-xl" }, [ + SwapToggle({ value: isDark, class: "swap-rotate" }), + SwapOn({}, h('span', { class: "icon-[lucide--moon]" })), + SwapOff({}, h('span', { class: "icon-[lucide--sun]" })), + ]), + when(logged, + () => Dropdown({ class: "flex-none ml-2 dropdown-bottom dropdown-end" }, [ + DropdownButton({ class: "btn-circle btn btn-ghost", tabindex: "0", role: "button" }, [ + Avatar({ class: "placeholder" }, [ + div({ class: "bg-neutral text-neutral-content w-10 rounded-full" }, [ + h('span', { class: "text-xl" }, "U") + ]) + ]) + ]), + DropdownContent( + { class: "menu bg-base-100 rounded-box w-52 p-2 shadow" }, + [ + Menu({ class: "bg-base-100 max-w-xs w-full" }, + [ + MenuItem({ label: "Mi Perfil", onclick: () => openTab("Mi Perfil") }), + MenuItem({ label: "Configuración", onclick: () => openTab("Configuración") }), + MenuItem({ label: "Cerrar Sesión", onclick: handleLogout }), + ] + ), + ], + ), + ]), + () => Button({ + class: "flex-none ml-2 btn btn-ghost btn-circle relative", + onclick: () => showLoginModal(true) + }, [ + Icon({}, "icon-[lucide--user] text-xl"), + ]) + ) + ]), - // Avatar con dropdown o botón de login - when(logged, - () => Dropdown({ class: "flex-none ml-2 dropdown-bottom dropdown-end" }, [ - DropdownButton({ class: "btn-circle btn btn-ghost", tabindex: "0", role: "button" }, [ - div({ class: "w-10 rounded-full flex items-center justify-center" }, [ - Icon({}, "icon-[lucide--user] text-xl") + // Área principal con pestañas + div({ + class: "p-4", + ref: (el) => tabsContainerRef = el + }, [ + h('div', { class: 'tabs tabs-box' }, + () => tabs().map((item, idx) => + Tab({ + name: "app-tabs", + "aria-label": item.label, + checked: activeTab() === idx, + onchange: () => activeTab(idx), + content: item.content, + closable: item.closable, + tabs, + index: idx + }) + ) + ) ]) - ]), - DropdownContent( - { class: "menu bg-base-100 rounded-box w-52 p-2 shadow" }, - [ - Menu({ - class: "bg-base-100 max-w-xs w-full", - items: [ - { label: "Mis mensajes", onclick: () => hide() }, - { label: "Delete", onclick: () => hide() }, - { label: "Cerrar Sesión", onclick: handleLogout }, - ], - }), - ], - ), ]), - () => Button({ - class: "flex-none ml-2 btn btn-ghost btn-circle relative", - onclick: () => showLoginModal(true) - }, [ - Icon({}, "icon-[lucide--user] text-xl"), + + DrawerSide({ class: "z-50" }, [ + DrawerOverlay({ for: "app-drawer" }), + div({ + class: "menu bg-base-200 text-base-content min-h-full w-80 p-4" + }, [ + h('h2', { class: "text-lg font-bold mb-4" }, "Menú"), + Menu({ class: "bg-base-200 max-w-xs w-full" }, + menuItems.flatMap(item => [ + MenuTitle({}, item.label), + ...item.children.map(child => + MenuItem({ label: child.label, onclick: child.onclick }) + ) + ]) + ) + ]) ]) - ) ]), - // Área principal con las pestañas - div({ - class: "p-4", - ref: (el) => tabsContainerRef = el - }, [ - Tabs({ - class: 'tabs-box', - items: tabs, - activeIndex: activeTab - }) - ]) - ]), - // Lateral del drawer - DrawerSide({ class: "z-50" }, [ - DrawerOverlay({ for: "app-drawer" }), - div({ - class: "menu bg-base-200 text-base-content min-h-full w-80 p-4" - }, [ - h2({ class: "text-lg font-bold mb-4" }, ["Menú"]), - Menu({ items: menuItems, class: "bg-base-200 max-w-xs w-full" }) - ]) - ]) - ]), + ModalSearch({ + open: showSearchModal, + onSelect: (item) => { + console.log("Item seleccionado:", item); + showSearchModal(false); + } + }), - // Modal de login - Modal({ - open: showLoginModal, - actions: [ - Button({ - class: "btn btn-ghost", - onclick: () => showLoginModal(false) - }, "Cancelar"), - Button({ - class: "btn btn-primary", - onclick: handleLogin - }, "Entrar") - ] - }, [ - Fieldset({ label: "Iniciar sesión", class: "bg-base-200 border-base-300 rounded-box border gap-3 p-4", }, [ - Input({ - class: "w-full", - type: "text", - label: "Usuario", - float: true, - placeholder: "Nombre de usuario", - value: loginForm.username - }) - , - - Input({ - class: "w-full", - type: "password", - label: "Contraseña", - float: true, - placeholder: "Contraseña", - value: loginForm.password - }) - ]) - - ]) - ]; + // Modal de Login adaptado + when(showLoginModal, () => + Modal({ open: true, class: '' }, [ + ModalBox({}, [ + ModalClose({ onclick: () => showLoginModal(false) }), + h('h3', { class: "text-lg font-bold" }, "Iniciar Sesión"), + Fieldset({ + class: "bg-base-200 border-base-300 rounded-box border gap-3 p-4" + }, [ + LabelFloating({ class: "w-full" }, [ + Input({ + class: "w-full", + type: "text", + placeholder: "Nombre de usuario", + value: loginForm.username, + oninput: (e) => loginForm.username(e.target.value) + }), + h('span', {}, "Usuario") + ]), + LabelFloating({ class: "w-full" }, [ + Input({ + class: "w-full", + type: "password", + placeholder: "Contraseña", + value: loginForm.password, + oninput: (e) => loginForm.password(e.target.value) + }), + h('span', {}, "Contraseña") + ]) + ]), + ModalAction({}, [ + Button({ + class: "btn btn-ghost", + onclick: () => showLoginModal(false) + }, "Cancelar"), + Button({ + class: "btn btn-primary", + onclick: handleLogin + }, "Entrar") + ]) + ]), + ModalBackdrop({ onclick: () => showLoginModal(false) }) + ]) + ) + ]; }; \ No newline at end of file diff --git a/client/components/ModalSearch.js b/client/components/ModalSearch.js new file mode 100644 index 0000000..ca90004 --- /dev/null +++ b/client/components/ModalSearch.js @@ -0,0 +1,175 @@ +// components/ModalSearch.js +import { $, watch, h, each } from "sigpro"; +import { db } from "sigpro/utils"; +import { Modal, Input, Button, Loading, Table } from "sigpro-ui"; + +export const ModalSearch = ({ open, onSelect }) => { + const search = $(''); + const results = $([]); + const loading = $(false); + const error = $(null); + const debounceTimer = $(null); + + // Búsqueda con debounce de 500ms + watch(search, (query) => { + const currentTimer = debounceTimer(); + if (currentTimer) { + clearTimeout(currentTimer); + debounceTimer(null); + } + + if (!query || query.length < 3) { + results([]); + error(null); + return; + } + + loading(true); + error(null); + + const timer = setTimeout(async () => { + try { + const data = await db('/proxy/3000/api/db/search', { q: query }); + console.log(data) + results(data.results || []); + } catch (err) { + error(err.message); + results([]); + } finally { + loading(false); + } + }, 500); + + debounceTimer(timer); + }); + + // Columnas de la tabla + const columns = [ + { label: 'Código', key: 'CodigoPoliza', class: 'font-mono text-xs' }, + { label: 'Mediador', key: 'CodigoMediador', class: 'text-xs' }, + { label: 'Nombre', key: 'Nombre', class: 'font-medium text-xs' }, + { label: 'Apellidos', key: 'Apellidos', class: 'text-xs' }, + { label: 'Documento', key: 'Documento', class: 'text-xs' }, + { label: 'Riesgo', key: 'Riesgo', class: 'text-xs' }, + { label: 'Ramo', key: 'Ramo', class: 'text-xs' }, + { label: 'Localidad', key: 'Localidad', class: 'text-xs' }, + { + label: '', + key: 'action', + class: 'w-0 p-0', + render: (item) => Button({ + class: 'btn btn-ghost btn-xs', + onclick: (e) => { + e.stopPropagation(); + handleSelect(item); + } + }, 'Seleccionar') + } + ]; + + const handleSelect = (item) => { + onSelect?.(item); + closeModal(); + }; + + const closeModal = () => { + open(false); + search(''); + results([]); + error(null); + }; + + return Modal({ + open, + title: 'Buscar Pólizas', + class: 'max-w-1024px max-h-612px', + actions: [ + Button({ + class: 'btn btn-ghost', + onclick: closeModal + }, 'Cerrar') + ] + }, [ + h('div', { class: 'space-y-4' }, [ + // Campo de búsqueda + Input({ + type: "search", + class: "w-full", + placeholder: "Buscar por cualquier campo (mín. 3 caracteres)...", + value: search, + left: h('span', { class: "icon-[lucide--search]" }), + right: () => loading() ? + Loading({ class: "loading-sm" }) : + (search() ? Button({ + class: "btn btn-ghost btn-xs btn-circle -mr-2", + onclick: (e) => { + e.preventDefault(); + e.stopPropagation(); + search(''); + } + }, h('span', { class: "icon-[lucide--x] opacity-50" })) : null), + oninput: (e) => search(e.target.value), + autofocus: true + }), + + // Estado de carga + () => loading() ? h('div', { class: 'flex justify-center items-center py-8' }, [ + Loading({ class: 'loading-md' }), + h('span', { class: 'ml-2 text-sm opacity-70' }, 'Buscando...') + ]) : null, + + // Error + () => !loading() && error() ? h('div', { class: 'alert alert-error py-2 px-3 text-sm' }, [ + h('span', { class: 'icon-[lucide--alert-circle]' }), + h('span', {}, error()) + ]) : null, + + // Contador de resultados + () => !loading() && !error() && results().length > 0 ? + h('div', { class: 'text-xs opacity-60 px-1' }, + `${results().length} resultado${results().length !== 1 ? 's' : ''}` + ) + : null, + + // Tabla de resultados + () => !loading() && !error() && results().length > 0 ? + h('div', { class: 'overflow-x-auto max-h-96' }, [ + h('table', { class: 'table table-xs table-zebra table-pin-rows w-full' }, [ + h('thead', {}, [ + h('tr', {}, columns.map(col => + h('th', { class: col.class || '' }, col.label) + )) + ]), + h('tbody', {}, + each(results, (item) => + h('tr', { + class: 'hover cursor-pointer', + onclick: () => handleSelect(item) + }, columns.map(col => + h('td', { class: col.class || '' }, + col.render ? col.render(item) : (item[col.key] || '') + ) + )) + ) + ) + ]) + ]) + : null, + + // Sin resultados + () => !loading() && !error() && search().length >= 3 && results().length === 0 ? + h('div', { class: 'text-center py-8 text-base-content/50' }, [ + h('span', { class: 'icon-[lucide--search-x] text-2xl mb-2 block' }), + h('span', { class: 'text-sm' }, 'No se encontraron resultados') + ]) + : null, + + // Estado inicial + () => !loading() && !error() && search().length < 3 ? + h('div', { class: 'text-center py-8 text-base-content/40 text-sm' }, + 'Escribe al menos 3 caracteres para buscar' + ) + : null + ]) + ]); +}; \ No newline at end of file diff --git a/client/components/SearchResults.js b/client/components/SearchResults.js new file mode 100644 index 0000000..9074f98 --- /dev/null +++ b/client/components/SearchResults.js @@ -0,0 +1,89 @@ +// components/SearchResults.js +import { h, each } from "../sigpro.js"; +import { Button, Table, Loading } from "sigpro-ui"; + +export const SearchResults = ({ results, loading, error, onSelect }) => { + const columns = [ + { label: 'Código', key: 'CodigoPoliza', class: 'font-mono text-xs' }, + { label: 'Mediador', key: 'CodigoMediador', class: 'text-xs' }, + { label: 'Nombre', key: 'Nombre', class: 'font-medium text-xs' }, + { label: 'Apellidos', key: 'Apellidos', class: 'text-xs' }, + { label: 'Documento', key: 'Documento', class: 'text-xs' }, + { label: 'Riesgo', key: 'Riesgo', class: 'text-xs' }, + { label: 'Ramo', key: 'Ramo', class: 'text-xs' }, + { label: 'Localidad', key: 'Localidad', class: 'text-xs' }, + { + label: '', + key: 'action', + class: 'w-0 p-0', + render: (item) => Button({ + class: 'btn btn-ghost btn-xs', + onclick: (e) => { + e.stopPropagation(); + onSelect?.(item); + } + }, 'Seleccionar') + } + ]; + + return h('div', { class: 'p-3 space-y-2' }, [ + // Estado de carga + () => loading() ? h('div', { class: 'flex justify-center items-center py-6' }, [ + Loading({ class: 'loading-md' }), + h('span', { class: 'ml-2 text-sm opacity-70' }, 'Buscando...') + ]) : null, + + // Error + () => !loading() && error() ? h('div', { class: 'alert alert-error py-2 px-3 text-sm' }, [ + h('span', { class: 'icon-[lucide--alert-circle]' }), + h('span', {}, error()) + ]) : null, + + // Contador de resultados + () => !loading() && !error() && results().length > 0 ? + h('div', { class: 'text-xs opacity-60 px-1' }, + `${results().length} resultado${results().length !== 1 ? 's' : ''} encontrado${results().length !== 1 ? 's' : ''}` + ) + : null, + + // Tabla de resultados + () => !loading() && !error() && results().length > 0 ? + h('div', { class: 'overflow-x-auto w-full' }, [ + h('table', { class: 'table table-xs table-zebra table-pin-rows w-full' }, [ + h('thead', {}, [ + h('tr', {}, columns.map(col => + h('th', { class: col.class || '' }, col.label) + )) + ]), + h('tbody', {}, + each(results, (item) => + h('tr', { + class: 'hover cursor-pointer', + onclick: () => onSelect?.(item) + }, columns.map(col => + h('td', { class: col.class || '' }, + col.render ? col.render(item) : (item[col.key] || '') + ) + )) + ) + ) + ]) + ]) + : null, + + // Sin resultados + () => !loading() && !error() && results().length === 0 ? + h('div', { class: 'text-center py-6 text-base-content/50' }, [ + h('span', { class: 'icon-[lucide--search-x] text-2xl mb-2 block' }), + h('span', { class: 'text-sm' }, 'No se encontraron resultados') + ]) + : null, + + // Estado inicial (menos de 3 caracteres) + () => !loading() && !error() && results().length === 0 ? + h('div', { class: 'text-center py-4 text-base-content/40 text-xs' }, + 'Escribe al menos 3 caracteres para buscar' + ) + : null + ]); +}; \ No newline at end of file diff --git a/client/package.json b/client/package.json index 7bcf990..c0ffc1f 100644 --- a/client/package.json +++ b/client/package.json @@ -10,15 +10,13 @@ "preview": "vite preview" }, "dependencies": { - "@tailwindcss/vite": "^4.2.4", - "sigpro": "git+http://gitea:3000/natxocc/sigpro", - "sigpro-grid": "git+http://gitea:3000/natxocc/sigpro-grid", - "sigpro-ui": "git+http://gitea:3000/natxocc/sigpro-ui" + "sigpro": "git+http://gitea:3000/natxocc/sigpro" }, "devDependencies": { - "@iconify/json": "^2.2.470", + "@iconify/json": "^2.2.473", "@iconify/tailwind4": "^1.2.3", - "tailwindcss": "^4.2.4", - "vite": "^8.0.11" + "@tailwindcss/vite": "^4.3.0", + "tailwindcss": "^4.3.0", + "vite": "^8.0.13" } } \ No newline at end of file diff --git a/client/tabs/Desktop.js b/client/tabs/Desktop.js index cb9b376..45429b3 100644 --- a/client/tabs/Desktop.js +++ b/client/tabs/Desktop.js @@ -1,24 +1,39 @@ import { Alert } from "sigpro-ui"; import { Grid } from "sigpro-grid"; -import { isDark} from "../App.js"; +import { isDark } from "../App.js"; +import { h, $ } from "sigpro"; export const Desktop = () => { + const test = $(55); const rowData = [ { id: 1, nombre: "Juan Pérez", edad: 28, ciudad: "Madrid", activo: true, fecha: "2024-01-15" }, { id: 2, nombre: "María García", edad: 34, ciudad: "Barcelona", activo: true, fecha: "2024-02-20" }, { id: 3, nombre: "Carlos López", edad: 45, ciudad: "Valencia", activo: false, fecha: "2024-03-10" }, { id: 4, nombre: "Ana Martínez", edad: 23, ciudad: "Sevilla", activo: true, fecha: "2024-04-05" } ]; - + const detailCellRendererParams = { + // provide the Grid Options to use on the Detail Grid + detailGridOptions: { + columnDefs: [ + { field: 'callId' }, + { field: 'direction' }, + { field: 'number' } + ] + }, + // get the rows for each Detail Grid + getDetailRowData: params => { + params.successCallback(params.data.callRecords); + } + } const columnDefs = [ - { field: "id", headerName: "ID", width: 80, filter: 'agMultiColumnFilter' }, + { field: "id", headerName: "ID", width: 80, filter: 'agMultiColumnFilter', cellRenderer: "agGroupCellRenderer" }, { field: "nombre", headerName: "Nombre", width: 150, filter: 'agMultiColumnFilter', editable: true }, { field: "edad", headerName: "Edad", width: 100, filter: 'agMultiColumnFilter' }, { field: "ciudad", headerName: "Ciudad", width: 150, filter: 'agMultiColumnFilter' }, - { - field: "activo", - headerName: "Activo", - width: 100, + { + field: "activo", + headerName: "Activo", + width: 100, filter: 'agMultiColumnFilter', cellRenderer: (params) => params.value ? "✅ Sí" : "❌ No" }, @@ -28,6 +43,10 @@ export const Desktop = () => { // ✅ GridOptions completamente actualizado const gridOptions = { columnDefs: columnDefs, + detailCellRendererParams: detailCellRendererParams, + //aggrid enable context menu + contextMenu: true, + masterDetail: true, // 1. CORREGIDO: rowSelection con la sintaxis nueva rowSelection: { mode: "multiRow", // o "singleRow" para selección simple @@ -57,16 +76,19 @@ export const Desktop = () => { console.log("Filas seleccionadas:", selectedRows.length); }; - return Grid({ - data: rowData, - options: gridOptions, - on: { - onGridReady: onGridReady, - onCellClicked: onCellClicked, - onSelectionChanged: onSelectionChanged - }, - class: "my-grid", - style: "height: 800px; width: 100%;", - dark: isDark() - }); + return div([ + button({class: "btn", onclick: () => console.log(test(test()+1))}, ()=>test()), + Grid({ + data: rowData, + options: gridOptions, + on: { + onGridReady: onGridReady, + onCellClicked: onCellClicked, + onSelectionChanged: onSelectionChanged + }, + class: "my-grid", + style: "height: 800px; width: 100%;", + dark: isDark() + }) + ]) }; \ No newline at end of file diff --git a/dare.code-workspace b/dare.code-workspace index 402668a..b4eec93 100644 --- a/dare.code-workspace +++ b/dare.code-workspace @@ -1,17 +1,11 @@ { "folders": [ { - "path": ".", + "path": "." }, { - "path": "../sigpro-ui", - }, - { - "path": "../sigpro-grid", - }, - { - "path": "../sigpro", - }, + "path": "../sigpro" + } ], "settings": { "files.associations": { diff --git a/server/api/db.js b/server/api/db.js index 6dd89aa..b73bcc2 100644 --- a/server/api/db.js +++ b/server/api/db.js @@ -111,8 +111,8 @@ api.get('/download', async (c) => { const contentType = mime.lookup(doc.Extension) || 'application/octet-stream' c.header('Content-Type', contentType) c.header('Content-Disposition', `${download === 'true' ? 'attachment' : 'inline'}; filename="${doc.Nombre}"`) - - return c.body(doc.Archivo) + + return c.body(doc.Archivo) } return c.json(docs.map((doc) => { @@ -129,4 +129,60 @@ api.get('/download', async (c) => { } }) +// --- RUTA DE BÚSQUEDA DE PÓLIZAS --- +api.post('/search', async (c) => { + try { + const body = await c.req.json(); + const q = body.q?.trim() || ''; + + if (!q || q.length < 3) { + return c.json({ success: true, results: [] }); + } + + const searchTerm = `%${q}%`; + + const results = await db.raw(` + SELECT + CodigoPoliza, CodigoMediador, FechaAlta, FechaBaja, + Riesgo, Ramo, Nombre, Apellidos, Documento, + Domicilio, Localidad, CodigoPostal, Provincia + FROM vPolizas + WHERE + CodigoPoliza LIKE :search OR + Nombre LIKE :search OR + Apellidos LIKE :search OR + Documento LIKE :search OR + CodigoMediador LIKE :search + LIMIT 50 + `, { search: searchTerm }); + + // 3. Serialización limpia (Manejo de BigInt y Dates) + const cleanResults = results.map(row => { + const entry = { ...row }; + for (let key in entry) { + if (typeof entry[key] === 'bigint') entry[key] = entry[key].toString(); + // Formatear fechas a YYYY-MM-DD + if (entry[key] instanceof Date) { + entry[key] = entry[key].toISOString().split('T')[0]; + } + } + return entry; + }); + + return c.json({ + success: true, + results: cleanResults, + count: cleanResults.length + }); + + } catch (error) { + console.error('Error en búsqueda:', error); + return c.json({ + success: false, + error: 'Error interno del servidor', + results: [] + }, 500); + } +}); + export default api \ No newline at end of file