From b229dcd81b4855ecc072cd6d84b6689bde6c2c17 Mon Sep 17 00:00:00 2001 From: MAYUR Date: Fri, 1 Aug 2025 00:37:56 +0530 Subject: [PATCH] feat: add dark mode --- package-lock.json | 136 +++++++++++++++--- src/app/dashboard/layout.tsx | 14 +- src/app/i/[id]/page.tsx | 2 +- src/app/invoices/create/page.tsx | 2 +- src/app/layout.tsx | 23 +-- src/components/background-wrapper.tsx | 59 +++++--- src/components/batch-payout.tsx | 70 ++++----- src/components/compliance-status.tsx | 20 +-- .../blocks/create-recurring-payment-form.tsx | 4 +- .../create-recurring-payment.tsx | 32 +++-- .../dashboard/blocks/invoice-row.tsx | 19 ++- .../dashboard/invoices-received.tsx | 22 +-- src/components/dashboard/invoices-sent.tsx | 14 +- src/components/dashboard/subscriptions.tsx | 20 +-- src/components/direct-payout.tsx | 40 +++--- src/components/footer.tsx | 2 +- src/components/header.tsx | 24 ++-- src/components/invoice-form.tsx | 8 +- src/components/invoice-me-link.tsx | 12 +- src/components/invoice-me-links.tsx | 6 +- src/components/invoice-preview.tsx | 54 ++++--- src/components/mode-toggle.tsx | 40 ++++++ src/components/payment-route.tsx | 28 ++-- src/components/payment-section.tsx | 62 ++++---- .../payment-secured-using-request.tsx | 6 +- src/components/short-address.tsx | 2 +- src/components/stat-card.tsx | 4 +- src/components/subscription-plan-preview.tsx | 36 +++-- .../blocks/subscription-plan-link.tsx | 18 +-- src/components/ui/table/empty-state.tsx | 6 +- src/components/ui/table/pagination.tsx | 4 +- src/components/ui/table/table-head-cell.tsx | 2 +- src/components/ui/tooltip.tsx | 4 +- .../blocks/completed-payments.tsx | 2 +- .../blocks/frequency-badge.tsx | 8 +- .../blocks/status-badge.tsx | 10 +- .../view-recurring-payments.tsx | 38 ++--- 37 files changed, 535 insertions(+), 318 deletions(-) create mode 100644 src/components/mode-toggle.tsx diff --git a/package-lock.json b/package-lock.json index a42931ea..202eb068 100644 --- a/package-lock.json +++ b/package-lock.json @@ -82,6 +82,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -1861,6 +1862,7 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, "license": "ISC", "dependencies": { "string-width": "^5.1.2", @@ -1878,12 +1880,14 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", @@ -1901,6 +1905,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", @@ -1918,6 +1923,7 @@ "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -1932,6 +1938,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -1941,6 +1948,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -1950,12 +1958,14 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -2204,6 +2214,7 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", @@ -2217,6 +2228,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -2226,6 +2238,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", @@ -2285,6 +2298,7 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, "license": "MIT", "optional": true, "engines": { @@ -3892,7 +3906,7 @@ "version": "20.17.17", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.17.tgz", "integrity": "sha512-/WndGO4kIfMicEQLTi/mDANUu/iVUhT7KboZPdEqqHQ4aTS+3qT3U5gIqWDFV+XouorjfgGqvKILJeHhuQgFYg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.19.2" @@ -3902,7 +3916,7 @@ "version": "8.11.11", "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.11.11.tgz", "integrity": "sha512-kGT1qKM8wJQ5qlawUrEkXgvMSXoV213KfMGXcwfDwUIfUHXqXYXOfS1nE1LINRJVVVx5wCm70XnFlMHaIcQAfw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -3914,14 +3928,14 @@ "version": "15.7.14", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/@types/react": { "version": "18.3.18", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz", "integrity": "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -3932,7 +3946,7 @@ "version": "18.3.5", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.5.tgz", "integrity": "sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==", - "devOptional": true, + "dev": true, "license": "MIT", "peerDependencies": { "@types/react": "^18.0.0" @@ -4480,6 +4494,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -4492,6 +4507,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -4504,6 +4520,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, "license": "MIT" }, "node_modules/anymatch": { @@ -4534,6 +4551,7 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true, "license": "MIT" }, "node_modules/aria-hidden": { @@ -4584,6 +4602,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, "license": "MIT" }, "node_modules/base-x": { @@ -4635,6 +4654,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4659,6 +4679,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -4668,6 +4689,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, "license": "MIT", "dependencies": { "fill-range": "^7.1.1" @@ -4745,6 +4767,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -4787,6 +4810,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, "license": "MIT", "dependencies": { "anymatch": "~3.1.2", @@ -4811,6 +4835,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -5059,6 +5084,7 @@ "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -5088,6 +5114,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, "license": "MIT", "bin": { "cssesc": "bin/cssesc" @@ -5100,7 +5127,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/date-fns": { @@ -5217,6 +5244,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, "license": "Apache-2.0" }, "node_modules/dijkstrajs": { @@ -5229,6 +5257,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, "license": "MIT" }, "node_modules/dotenv": { @@ -5426,6 +5455,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, "license": "MIT" }, "node_modules/emoji-regex": { @@ -5614,6 +5644,7 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -5630,6 +5661,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -5651,6 +5683,7 @@ "version": "1.19.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.0.tgz", "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==", + "dev": true, "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -5660,6 +5693,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -5714,6 +5748,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", @@ -5744,6 +5779,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -5758,6 +5794,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5823,6 +5860,7 @@ "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", @@ -5843,6 +5881,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.3" @@ -5888,6 +5927,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -6002,6 +6042,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" @@ -6014,6 +6055,7 @@ "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, "license": "MIT", "dependencies": { "hasown": "^2.0.2" @@ -6029,6 +6071,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -6051,6 +6094,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -6063,6 +6107,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -6097,6 +6142,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, "license": "ISC" }, "node_modules/isows": { @@ -6118,6 +6164,7 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" @@ -6133,6 +6180,7 @@ "version": "1.21.7", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, "license": "MIT", "bin": { "jiti": "bin/jiti.js" @@ -6160,6 +6208,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, "license": "MIT", "engines": { "node": ">=14" @@ -6172,6 +6221,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, "license": "MIT" }, "node_modules/lint-staged": { @@ -6366,6 +6416,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -6375,6 +6426,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, "license": "MIT", "dependencies": { "braces": "^3.0.3", @@ -6447,6 +6499,7 @@ "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -6472,6 +6525,7 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" @@ -6493,6 +6547,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, "license": "MIT", "dependencies": { "any-promise": "^1.0.0", @@ -6680,6 +6735,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -6689,6 +6745,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -6698,7 +6755,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/ofetch": { @@ -6828,6 +6885,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, "license": "BlueOak-1.0.0" }, "node_modules/path-exists": { @@ -6843,6 +6901,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -6852,12 +6911,14 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, "license": "MIT" }, "node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", @@ -6923,7 +6984,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/pg-numeric/-/pg-numeric-1.0.2.tgz", "integrity": "sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==", - "devOptional": true, + "dev": true, "license": "ISC", "engines": { "node": ">=4" @@ -6948,7 +7009,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-4.0.2.tgz", "integrity": "sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "pg-int8": "1.0.1", @@ -7062,6 +7123,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -7109,6 +7171,7 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -7127,6 +7190,7 @@ "version": "8.5.2", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz", "integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==", + "dev": true, "funding": [ { "type": "opencollective", @@ -7155,6 +7219,7 @@ "version": "15.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, "license": "MIT", "dependencies": { "postcss-value-parser": "^4.0.0", @@ -7172,6 +7237,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, "license": "MIT", "dependencies": { "camelcase-css": "^2.0.1" @@ -7191,6 +7257,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, "funding": [ { "type": "opencollective", @@ -7226,6 +7293,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, "funding": [ { "type": "opencollective", @@ -7251,6 +7319,7 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -7264,13 +7333,14 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, "license": "MIT" }, "node_modules/postgres-array": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-3.0.2.tgz", "integrity": "sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -7280,7 +7350,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-3.0.0.tgz", "integrity": "sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "obuf": "~1.1.2" @@ -7293,7 +7363,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-2.1.0.tgz", "integrity": "sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -7303,7 +7373,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-3.0.0.tgz", "integrity": "sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -7313,7 +7383,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/postgres-range/-/postgres-range-1.1.4.tgz", "integrity": "sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/preact": { @@ -7385,6 +7455,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, "funding": [ { "type": "github", @@ -7544,6 +7615,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, "license": "MIT", "dependencies": { "pify": "^2.3.0" @@ -7567,6 +7639,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, "license": "MIT", "dependencies": { "picomatch": "^2.2.1" @@ -7624,6 +7697,7 @@ "version": "1.22.10", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, "license": "MIT", "dependencies": { "is-core-module": "^2.16.0", @@ -7686,6 +7760,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -7703,6 +7778,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, "funding": [ { "type": "github", @@ -7788,6 +7864,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" @@ -7800,6 +7877,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -7809,6 +7887,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, "license": "ISC", "engines": { "node": ">=14" @@ -7970,6 +8049,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -7984,6 +8064,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -7993,12 +8074,14 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, "license": "MIT" }, "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -8008,6 +8091,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -8020,6 +8104,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" @@ -8036,6 +8121,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -8048,6 +8134,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -8093,6 +8180,7 @@ "version": "3.35.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", @@ -8115,6 +8203,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -8136,6 +8225,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -8158,6 +8248,7 @@ "version": "3.4.17", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", + "dev": true, "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", @@ -8204,6 +8295,7 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, "license": "MIT", "dependencies": { "any-promise": "^1.0.0" @@ -8213,6 +8305,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, "license": "MIT", "dependencies": { "thenify": ">= 3.1.0 < 4" @@ -8240,6 +8333,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -8258,6 +8352,7 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, "license": "Apache-2.0" }, "node_modules/tslib": { @@ -8270,7 +8365,7 @@ "version": "5.7.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -8314,7 +8409,7 @@ "version": "6.19.8", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/unstorage": { @@ -8637,6 +8732,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -8677,6 +8773,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -8694,6 +8791,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -8703,6 +8801,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -8718,12 +8817,14 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, "license": "MIT" }, "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -8733,6 +8834,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -8747,6 +8849,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -8801,6 +8904,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "dev": true, "license": "ISC", "bin": { "yaml": "bin.mjs" diff --git a/src/app/dashboard/layout.tsx b/src/app/dashboard/layout.tsx index 53825753..aeb5c5a0 100644 --- a/src/app/dashboard/layout.tsx +++ b/src/app/dashboard/layout.tsx @@ -2,6 +2,7 @@ import { BackgroundWrapper } from "@/components/background-wrapper"; import { DashboardNavigation } from "@/components/dashboard-navigation"; import { Footer } from "@/components/footer"; import { Header } from "@/components/header"; +import { Button } from "@/components/ui/button"; import { getCurrentSession } from "@/server/auth"; import { PlusCircle } from "lucide-react"; import Link from "next/link"; @@ -24,13 +25,12 @@ export default async function DashboardLayout({

Dashboard

- - - Create Invoice - +
{children} diff --git a/src/app/i/[id]/page.tsx b/src/app/i/[id]/page.tsx index abaa45c3..764b0a7e 100644 --- a/src/app/i/[id]/page.tsx +++ b/src/app/i/[id]/page.tsx @@ -39,7 +39,7 @@ export default async function InvoiceMePage({
diff --git a/src/app/invoices/create/page.tsx b/src/app/invoices/create/page.tsx index 249388da..bf87bd6c 100644 --- a/src/app/invoices/create/page.tsx +++ b/src/app/invoices/create/page.tsx @@ -27,7 +27,7 @@ export default async function CreateInvoicePage() {
diff --git a/src/app/layout.tsx b/src/app/layout.tsx index fa0736f7..f5fa6c52 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -9,6 +9,7 @@ import type { Metadata } from "next"; import localFont from "next/font/local"; import { cookies } from "next/headers"; import "./globals.css"; +import { ThemeProvider } from "next-themes"; const geistSans = localFont({ src: "./fonts/GeistVF.woff", @@ -32,20 +33,22 @@ export default function RootLayout({ children: React.ReactNode; }>) { return ( - + - - - - {children} - - - - - + + + + + {children} + + + + + + ); diff --git a/src/components/background-wrapper.tsx b/src/components/background-wrapper.tsx index a3642ff7..1e67350e 100644 --- a/src/components/background-wrapper.tsx +++ b/src/components/background-wrapper.tsx @@ -1,3 +1,5 @@ +"use client"; +import { useTheme } from "next-themes"; import type { ReactNode } from "react"; interface BackgroundWrapperProps { @@ -23,6 +25,8 @@ export function BackgroundWrapper({ to: "zinc-200", }, }: BackgroundWrapperProps) { + const { theme } = useTheme(); + // Convert Tailwind color names to CSS variables or hex values const getTailwindColor = (colorName: string): string => { const colors: Record = { @@ -42,38 +46,53 @@ export function BackgroundWrapper({ "zinc-100": "#f4f4f5", "zinc-200": "#e4e4e7", + // Dark mode colors + "zinc-800": "#27272a", + "zinc-900": "#18181b", + "slate-800": "#1e293b", + "slate-900": "#0f172a", + // Add any other colors you need here }; return colors[colorName] || "#f4f4f5"; // Default to zinc-100 if color not found }; + const isDark = theme === "dark"; + return ( -
- {/* Decorative elements */} -
-
-
-
-
-
+
+ {/* Decorative elements - only show in light mode */} + {!isDark && ( + <> +
+
+
+
+
+
+ + )} {/* Dot pattern background */}
diff --git a/src/components/batch-payout.tsx b/src/components/batch-payout.tsx index 7637e4fb..0635e1de 100644 --- a/src/components/batch-payout.tsx +++ b/src/components/batch-payout.tsx @@ -259,8 +259,8 @@ export function BatchPayout() { return (
- - + +
@@ -282,8 +282,10 @@ export function BatchPayout() { {!isAppKitReady ? (
- -

Initializing payment system...

+ +

+ Initializing payment system... +

) : ( @@ -293,13 +295,13 @@ export function BatchPayout() {
= 1 ? "text-black" : "text-zinc-300"}`} + className={`flex items-center ${currentStep >= 1 ? "text-foreground" : "text-muted-foreground"}`} >
= 1 - ? "border-black bg-zinc-50" - : "border-zinc-300" + ? "border-foreground bg-muted" + : "border-border" }`} > @@ -308,17 +310,17 @@ export function BatchPayout() {
= 2 ? "bg-black" : "bg-zinc-300"}`} + className={`w-16 h-0.5 ${currentStep >= 2 ? "bg-foreground" : "bg-border"}`} />
= 2 ? "text-black" : "text-zinc-300"}`} + className={`flex items-center ${currentStep >= 2 ? "text-foreground" : "text-muted-foreground"}`} >
= 2 - ? "border-black bg-zinc-50" - : "border-zinc-300" + ? "border-foreground bg-muted" + : "border-border" }`} > @@ -330,7 +332,7 @@ export function BatchPayout() { {currentStep === 1 ? (
-

+

Connect your wallet to send batch payments to multiple addresses

@@ -345,10 +347,10 @@ export function BatchPayout() { className="space-y-6" > {/* Excel-like table */} -
+
- + # Recipient Address @@ -376,9 +378,9 @@ export function BatchPayout() { return ( - + {index + 1} @@ -386,7 +388,7 @@ export function BatchPayout() { placeholder="0x..." {...form.register(`payouts.${index}.payee`)} disabled={paymentStatus === "processing"} - className="font-mono text-sm border-0 shadow-none focus-visible:ring-1 focus-visible:ring-zinc-300" + className="font-mono text-sm border-0 shadow-none focus-visible:ring-1 focus-visible:ring-border" /> @@ -399,7 +401,7 @@ export function BatchPayout() { valueAsNumber: true, })} disabled={paymentStatus === "processing"} - className="text-sm border-0 shadow-none focus-visible:ring-1 focus-visible:ring-zinc-300" + className="text-sm border-0 shadow-none focus-visible:ring-1 focus-visible:ring-border" /> @@ -410,7 +412,7 @@ export function BatchPayout() { } disabled={paymentStatus === "processing"} > - + @@ -441,7 +443,7 @@ export function BatchPayout() { } disabled={paymentStatus === "processing"} > - + @@ -458,7 +460,7 @@ export function BatchPayout() { ) : ( -
+
{formatCurrencyLabel(invoiceCurrency)}
)} @@ -471,7 +473,7 @@ export function BatchPayout() { size="sm" onClick={() => duplicatePayment(index)} disabled={fields.length >= MAX_PAYMENTS} - className="h-8 w-8 p-0 text-zinc-500 hover:text-zinc-700" + className="h-8 w-8 p-0 text-muted-foreground hover:text-foreground" > @@ -481,7 +483,7 @@ export function BatchPayout() { variant="ghost" size="sm" onClick={() => removePayment(index)} - className="h-8 w-8 p-0 text-red-500 hover:text-red-700 hover:bg-red-50" + className="h-8 w-8 p-0 text-destructive hover:text-destructive-foreground hover:bg-destructive/10" > @@ -504,26 +506,28 @@ export function BatchPayout() { fields.length >= MAX_PAYMENTS || paymentStatus === "processing" } - className="w-full border-dashed border-2 border-zinc-300 text-zinc-600 hover:border-zinc-400 hover:text-zinc-700" + className="w-full border-dashed border-2 border-border text-muted-foreground hover:border-foreground hover:text-foreground" > Add Payment Row ({fields.length}/{MAX_PAYMENTS}) {/* Enhanced Summary */} - + -

+

Batch Summary

- Total Items: + + Total Items: + {fields.length}
- + Ready to Process: @@ -531,7 +535,7 @@ export function BatchPayout() {
- + Unique Addresses: @@ -540,7 +544,7 @@ export function BatchPayout() {
-
+
Totals by Currency:
{Object.keys(totalsByCurrency).length > 0 ? ( @@ -550,7 +554,7 @@ export function BatchPayout() { key={currency} className="flex justify-between" > - + {formatCurrencyLabel(currency)}: {total} @@ -558,7 +562,7 @@ export function BatchPayout() { ), ) ) : ( -
+
No amounts entered
)} @@ -571,7 +575,7 @@ export function BatchPayout() { @@ -216,21 +216,21 @@ export const InvoicesReceived = ({ } + icon={} /> } + icon={} /> } + icon={} />
- +
@@ -241,7 +241,9 @@ export const InvoicesReceived = ({ } + icon={ + + } title="No invoices to pay" subtitle="When someone creates an invoice for you, it will appear here" /> diff --git a/src/components/dashboard/invoices-sent.tsx b/src/components/dashboard/invoices-sent.tsx index 871f5de2..b22bcd84 100644 --- a/src/components/dashboard/invoices-sent.tsx +++ b/src/components/dashboard/invoices-sent.tsx @@ -60,21 +60,21 @@ export const InvoicesSent = ({ initialSentInvoices }: InvoicesSentProps) => { } + icon={} /> } + icon={} /> } + icon={} /> - +
@@ -85,12 +85,14 @@ export const InvoicesSent = ({ initialSentInvoices }: InvoicesSentProps) => { } + icon={ + + } title="No invoices yet" subtitle="Create your first invoice to get paid" callToAction={ - diff --git a/src/components/dashboard/subscriptions.tsx b/src/components/dashboard/subscriptions.tsx index d5854e9e..0d96d9a5 100644 --- a/src/components/dashboard/subscriptions.tsx +++ b/src/components/dashboard/subscriptions.tsx @@ -42,7 +42,7 @@ const ITEMS_PER_PAGE = 10; const ACTIVE_STATUSES = ["pending", "active"]; const SubscriptionTableColumns = () => ( - + Start Date Plan Name Status @@ -95,7 +95,7 @@ const SubscriptionRow = ({ const canCancel = getCanCancelPayment(subscription.status); return ( - + {subscription.createdAt ? format(new Date(subscription.createdAt), "do MMM yyyy") @@ -123,7 +123,7 @@ const SubscriptionRow = ({ {subscription.totalNumberOfPayments} - scheduled + scheduled @@ -131,7 +131,7 @@ const SubscriptionRow = ({ {subscription.currentNumberOfPayments} - completed + completed {subscription.chain || "N/A"} @@ -274,21 +274,21 @@ export const Subscriptions = ({ initialSubscriptions }: SubscriptionProps) => { subscriptions?.filter((sub) => ACTIVE_STATUSES.includes(sub.status)) .length || 0 } - icon={} + icon={} /> } + icon={} values={commitmentValues} /> } + icon={} values={spentValues} /> - +
@@ -299,7 +299,9 @@ export const Subscriptions = ({ initialSubscriptions }: SubscriptionProps) => { } + icon={ + + } title="No active subscriptions" subtitle="You haven't subscribed to any plans yet" /> diff --git a/src/components/direct-payout.tsx b/src/components/direct-payout.tsx index c3c90362..73aa2e86 100644 --- a/src/components/direct-payout.tsx +++ b/src/components/direct-payout.tsx @@ -189,8 +189,8 @@ export function DirectPayment() { return (
- - + + Direct Payout @@ -200,8 +200,10 @@ export function DirectPayment() { {!isAppKitReady ? (
- -

Initializing payment system...

+ +

+ Initializing payment system... +

) : ( @@ -212,14 +214,16 @@ export function DirectPayment() {
= 1 ? "text-black" : "text-zinc-300" + currentStep >= 1 + ? "text-foreground" + : "text-muted-foreground" }`} >
= 1 - ? "border-black bg-zinc-50" - : "border-zinc-300" + ? "border-foreground bg-muted" + : "border-border" }`} > @@ -229,20 +233,22 @@ export function DirectPayment() {
= 2 ? "bg-black" : "bg-zinc-300" + currentStep >= 2 ? "bg-foreground" : "bg-border" }`} />
= 2 ? "text-black" : "text-zinc-300" + currentStep >= 2 + ? "text-foreground" + : "text-muted-foreground" }`} >
= 2 - ? "border-black bg-zinc-50" - : "border-zinc-300" + ? "border-foreground bg-muted" + : "border-border" }`} > @@ -254,7 +260,7 @@ export function DirectPayment() { {currentStep === 1 ? (
-

+

Connect your wallet to send direct payments to any address

)} +
diff --git a/src/components/invoice-form.tsx b/src/components/invoice-form.tsx index c6d8ae93..4669a208 100644 --- a/src/components/invoice-form.tsx +++ b/src/components/invoice-form.tsx @@ -587,12 +587,12 @@ export function InvoiceForm({ Payment Method Pending Approval
-
-

+

+

The payment method you selected is currently pending approval. Please wait until it is approved before creating an invoice.

-

+

You can close this dialog. We'll notify you when approval is complete.

@@ -1036,7 +1036,7 @@ export function InvoiceForm({
diff --git a/src/components/invoice-me-links.tsx b/src/components/invoice-me-links.tsx index 6ae06e4f..ed271420 100644 --- a/src/components/invoice-me-links.tsx +++ b/src/components/invoice-me-links.tsx @@ -57,7 +57,7 @@ export function InvoiceMeLinks({ initialLinks }: InvoiceMeLinksProps) {
@@ -67,7 +67,7 @@ export function InvoiceMeLinks({ initialLinks }: InvoiceMeLinksProps) {
@@ -96,7 +96,7 @@ export function InvoiceMeLinks({ initialLinks }: InvoiceMeLinksProps) { onClick={async () => { await handleCreateInvoiceMeLink(); }} - className="bg-black hover:bg-zinc-800 text-white" + className="bg-primary hover:bg-primary/80 text-primary-foreground" disabled={isCreatingInvoiceMeLink} > {isCreatingInvoiceMeLink ? "Creating..." : "Create"} diff --git a/src/components/invoice-preview.tsx b/src/components/invoice-preview.tsx index 5e07cc67..4344e8ad 100644 --- a/src/components/invoice-preview.tsx +++ b/src/components/invoice-preview.tsx @@ -29,25 +29,27 @@ export function InvoicePreview({ ); return ( - + {/* Header Section */}
-
INVOICE NO
+
+ INVOICE NO +
{data.invoiceNumber || "INV-001"}
-
ISSUED
+
ISSUED
{formatDate(new Date().toISOString())}
-
DUE DATE
+
DUE DATE
{data.dueDate ? formatDate(data.dueDate) : "MM/DD/YY"}
@@ -55,7 +57,9 @@ export function InvoicePreview({
{data.isRecurring && data.frequency && (
-
RECURRING
+
+ RECURRING +
↻ {data.frequency.toLowerCase()} {data.startDate && ( @@ -70,30 +74,32 @@ export function InvoicePreview({
-
FROM
+
FROM
{data.creatorName || "Your name"}
-
+
{data.creatorEmail || "your@email.com"}
-
PAYABLE TO
-
+
+ PAYABLE TO +
+
{data.walletAddress || "Payee address"}
-
TO
+
TO
{data.clientName || "Client name"}
-
+
{data.clientEmail || "client@email.com"}
@@ -105,21 +111,21 @@ export function InvoicePreview({
- - - - - + {( data.items || [ { description: "Description", quantity: 1, price: 0 }, @@ -145,16 +151,16 @@ export function InvoicePreview({
- Subtotal + Subtotal {calculateTotal().toString()}
-
+
Total
{calculateTotal().toString()}
-
+
{formatCurrencyLabel(data.invoiceCurrency || "USD")}
@@ -167,7 +173,9 @@ export function InvoicePreview({
-
PAYABLE IN
+
+ PAYABLE IN +
{!data.paymentCurrency ? "Choose payment currency" @@ -182,7 +190,7 @@ export function InvoicePreview({ {/* Bank Account Details */} {selectedPaymentDetails && (
-
+
BANK ACCOUNT DETAILS
@@ -230,8 +238,8 @@ export function InvoicePreview({
{data.notes && (
-
NOTES
-
+
NOTES
+
{data.notes}
diff --git a/src/components/mode-toggle.tsx b/src/components/mode-toggle.tsx new file mode 100644 index 00000000..1dd4ffb0 --- /dev/null +++ b/src/components/mode-toggle.tsx @@ -0,0 +1,40 @@ +"use client"; +import { Button } from "@/components/ui/button"; +import { Moon, Sun } from "lucide-react"; +import { useTheme } from "next-themes"; + +export function ModeToggle() { + const { theme, setTheme } = useTheme(); + const isDark = theme === "dark"; + + return ( + + ); +} diff --git a/src/components/payment-route.tsx b/src/components/payment-route.tsx index 122e3bf7..f33cec6c 100644 --- a/src/components/payment-route.tsx +++ b/src/components/payment-route.tsx @@ -40,31 +40,31 @@ export function PaymentRoute({ const getBadgeStyles = () => { if (isCryptoToFiat) { return { - bgColor: "bg-amber-100", - textColor: "text-amber-700", + bgColor: "bg-warning/10", + textColor: "text-warning-foreground", icon: , }; } if (isDirectPayment) { return { - bgColor: "bg-blue-100", - textColor: "text-blue-700", + bgColor: "bg-primary/10", + textColor: "text-primary-foreground", icon: , }; } if (isGasFreePayment) { return { - bgColor: "bg-green-100", - textColor: "text-green-700", + bgColor: "bg-success/10", + textColor: "text-success-foreground", icon: , }; } return { - bgColor: "bg-purple-100", - textColor: "text-purple-700", + bgColor: "bg-muted", + textColor: "text-muted-foreground", icon: , }; }; @@ -77,10 +77,10 @@ export function PaymentRoute({ onClick={onClick} className={`w-full p-4 border rounded-lg transition-colors ${ variant === "selected" - ? "border-2 border-black bg-zinc-50" + ? "border-2 border-primary bg-card" : isSelected - ? "bg-zinc-50 border-black" - : "bg-white hover:border-zinc-400" + ? "bg-card border-primary" + : "bg-background hover:border-border" }`} >
@@ -107,7 +107,7 @@ export function PaymentRoute({ (isDirectPayment ? "Direct Payment" : "via Paygrid")}
-
+
{routeType?.description || `via ${route.token}`}
@@ -122,11 +122,11 @@ export function PaymentRoute({ )}
-
+
{typeof route.speed === "number" ? `~${route.speed}s` : "Fast"}
{platformFee?.percentage && platformFee?.percentage > 0 && ( -
+
{platformFee?.percentage}% {route.token} platform fee diff --git a/src/components/payment-section.tsx b/src/components/payment-section.tsx index 1eafd99f..4de3fb60 100644 --- a/src/components/payment-section.tsx +++ b/src/components/payment-section.tsx @@ -401,21 +401,21 @@ export function PaymentSection({ serverInvoice }: PaymentSectionProps) { {/* Secure Payment Section */} -
-

Secure Payment

-

+

+

Secure Payment

+

This payment is secured using Request Network. Your transaction will be processed safely and transparently.

{MAINNET_CURRENCIES.includes(invoice.invoiceCurrency as any) && ( -
-

+
+

Real Cryptocurrency Warning

-

+

This invoice uses{" "} {formatCurrencyLabel(invoice.invoiceCurrency)} @@ -436,10 +436,10 @@ export function PaymentSection({ serverInvoice }: PaymentSectionProps) { {Number(invoice.amount).toString()}

{showCurrencyConversion && ( -
+
Payment will be processed in{" "} {formatCurrencyLabel(invoice.paymentCurrency)} -
+
Note: The final amount in{" "} {formatCurrencyLabel(invoice.paymentCurrency)} will be calculated at the current exchange rate when payment is @@ -452,7 +452,7 @@ export function PaymentSection({ serverInvoice }: PaymentSectionProps) {
-
+
{invoice.payee} {selectedRoute?.isCryptoToFiat && (
@@ -471,15 +471,17 @@ export function PaymentSection({ serverInvoice }: PaymentSectionProps) {
= 1 ? "text-black" : "text-zinc-300" + currentStep >= 1 + ? "text-foreground" + : "text-muted-foreground" }`} >
= 1 - ? "border-black bg-zinc-50" - : "border-zinc-300" + ? "border-foreground bg-muted" + : "border-muted" }`} > @@ -488,20 +490,22 @@ export function PaymentSection({ serverInvoice }: PaymentSectionProps) {
= 2 ? "bg-black" : "bg-zinc-300" + currentStep >= 2 ? "bg-foreground" : "bg-muted" }`} />
= 2 ? "text-black" : "text-zinc-300" + currentStep >= 2 + ? "text-foreground" + : "text-muted-foreground" }`} >
= 2 - ? "border-black bg-zinc-50" - : "border-zinc-300" + ? "border-foreground bg-muted" + : "border-muted" }`} > @@ -515,7 +519,7 @@ export function PaymentSection({ serverInvoice }: PaymentSectionProps) {
{currentStep === 1 && (
-

+

Connect your wallet to proceed with the payment

-
+
{address}
-

+

Please confirm the payment amount and recipient address before proceeding. {showCurrencyConversion && @@ -580,13 +584,13 @@ export function PaymentSection({ serverInvoice }: PaymentSectionProps) { {isLoadingPaymentRoutes ? (

-
- +
+
-

+

Loading Payment Routes

-

+

Finding the best payment routes for your wallet

@@ -594,13 +598,13 @@ export function PaymentSection({ serverInvoice }: PaymentSectionProps) { ) : !paymentRoutes || paymentRoutes.length === 0 ? (
-
- +
+
-

+

No Payment Routes Available

-

+

There are currently no available payment routes for this transaction.

@@ -625,7 +629,7 @@ export function PaymentSection({ serverInvoice }: PaymentSectionProps) { {/* Route Options - Only show if there are multiple routes */} {showRoutes && paymentRoutes.length > 1 && (
-
+
Available Payment Routes
{paymentRoutes.map((route: PaymentRouteType) => ( @@ -647,7 +651,7 @@ export function PaymentSection({ serverInvoice }: PaymentSectionProps) { {/* Payment button should be disabled if there are no routes */} (
-
+
{icon}
-

{title}

-

{subtitle}

+

{title}

+

{subtitle}

{callToAction}
); diff --git a/src/components/ui/table/pagination.tsx b/src/components/ui/table/pagination.tsx index 06010aa4..a90e8193 100644 --- a/src/components/ui/table/pagination.tsx +++ b/src/components/ui/table/pagination.tsx @@ -20,7 +20,7 @@ export const Pagination = ({ } return ( -
+
- + Page {page} of {totalPages}
{payment.chain} @@ -313,7 +319,7 @@ export function ViewRecurringPayments({

+ DESCRIPTION + QTY + PRICE + AMOUNT
{recurringPayments.length > ITEMS_PER_PAGE && ( -
+
- + Page {currentPage} of {totalPages}