From 31784df55fb68efca1b41dea238c0ee65128fcd0 Mon Sep 17 00:00:00 2001 From: Daniele Pintore Date: Tue, 9 Sep 2025 23:45:25 +0200 Subject: [PATCH 01/39] docs: add instructions on how to use cloudflare origin cert --- .../content/docs/core/domains/cloudflare.mdx | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/apps/docs/content/docs/core/domains/cloudflare.mdx b/apps/docs/content/docs/core/domains/cloudflare.mdx index 61c353a..f553dc6 100644 --- a/apps/docs/content/docs/core/domains/cloudflare.mdx +++ b/apps/docs/content/docs/core/domains/cloudflare.mdx @@ -39,8 +39,41 @@ To switch between modes, follow these steps: Follow the steps in the same order to prevent any issues. -We assume that you have enabled the `Full (Strict)` mode in the previous step, is super important to follow the steps in the same order to prevent any issues. +You can create a certificate for your origin server using two methods: +- Using Cloudflare's Origin CA to generate a certificate for your origin server. +- Using Let's Encrypt to generate a certificate for your origin server. +We assume that you have enabled the `Full (Strict)` mode in the previous step, is super important to follow the steps in the same order to prevent any issues. +### Using Cloudflare's Origin CA +1. Go to cloudflare dashboard and then click on `Account Home` -> Select the Domain. +2. On the left side, click `SSL/TLS`. +3. Click on `Origin Server`. +4. Click on `Create Certificate`. +5. Select `Generate private key and CSR with Cloudflare`. +6. Choose the list of hostnames you want the certificate to cover eg. `api.dokploy.com`. +7. Choose the validity period eg. `15 years`. +8. Click `Create`. +9. Using the PEM format, copy the `Origin Certificate` and `Private Key` in the respective fields in the dokploy new certificate panel (Certificates > Add Certificate). +10. Go to `Domains` section in your application. +11. Click `Create Domain`. +12. In the `Host` field, enter the domain name eg. `api.dokploy.com`. (Make sure that the domain is already pointing to your server IP in Cloudflare DNS settings and the **hostname matches the one in the certificate**). +13. In the `Path` field, enter the path eg. `/`. +14. In the `Container Port` field, enter the port where your application is running eg. `3000`. +15. In the `HTTPS` field enable `ON`. +16. In the `Certificate` field select `None`. +17. Click `Create`. + +Using Cloudflare's Origin CA, you are sure that the certificate will be valid for the next 15 years, or the duration you selected, and you don't have to worry about failed renewals. + + +You can also create a certificate for wildcards domains eg. `*.dokploy.com` and use it for multiple subdomains. + + + +**Important**: With a free Cloudflare account, this methods work only for the main domain and subdomains, not for sub-subdomains. Eg. `api.dokploy.com` works but `staging.api.dokploy.com` does not work. + + +### Using Let's Encrypt 1. Go to cloudflare dashboard and then click on `Account Home` -> Select the Domain. 2. On the left side, click `DNS`. 3. Click on `Records`. From b39757d51290aeb27d62230a706daa374575eb81 Mon Sep 17 00:00:00 2001 From: Nic <1386403+microfauna@users.noreply.github.com> Date: Tue, 7 Oct 2025 17:59:50 -0400 Subject: [PATCH 02/39] Update Railpack Docs These environment variables mismatch what is reported by the official Railpack docs. I tested them out - and the official names work, but not the ones originally listed. --- .../docs/content/docs/core/applications/build-type.mdx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/docs/content/docs/core/applications/build-type.mdx b/apps/docs/content/docs/core/applications/build-type.mdx index cb6e9ce..08f103c 100644 --- a/apps/docs/content/docs/core/applications/build-type.mdx +++ b/apps/docs/content/docs/core/applications/build-type.mdx @@ -50,11 +50,11 @@ Railpack exposes multiple Build Variables, you can define them in the `Environme | Name | Description | | :-------------------- | :--------------------------------------------------------------------------------------------------------- | -| `BUILD_CMD` | Set the command to run for the build step. This overwrites any commands that come from providers | -| `START_CMD` | Set the command to run when the container starts | -| `PACKAGES` | Install additional Mise packages. In the format `pkg@version`. The latest version is used if not provided. | -| `BUILD_APT_PACKAGES` | Install additional Apt packages during build | -| `DEPLOY_APT_PACKAGES` | Install additional Apt packages in the final image | +| `RAILPACK_BUILD_CMD` | Set the command to run for the build step. This overwrites any commands that come from providers | +| `RAILPACK_START_CMD` | Set the command to run when the container starts | +| `RAILPACK_PACKAGES` | Install additional Mise packages. In the format `pkg@version`. The latest version is used if not provided. | +| `RAILPACK_BUILD_APT_PACKAGES` | Install additional Apt packages during build | +| `RAILPACK_DEPLOY_APT_PACKAGES` | Install additional Apt packages in the final image | you can read more about Railpack [here](https://railpack.com/config/environment-variables). From f71cbf04aa2ef41e769805453a473f9e333e3d38 Mon Sep 17 00:00:00 2001 From: Fradd747 Date: Mon, 27 Oct 2025 14:20:43 +0100 Subject: [PATCH 03/39] feat: update file mount configuration image for latest version --- .../assets/file-mount-configuration.webp | Bin 20498 -> 14858 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/docs/public/assets/file-mount-configuration.webp b/apps/docs/public/assets/file-mount-configuration.webp index ad3a4bef1b85bf56352fc9cc8fe2c6cf93be8616..7db65fece0328de3faec8809f6aa7876bc28a40d 100644 GIT binary patch literal 14858 zcma)iV{|3k+U|wQL}2! z=Y6!+C-P8|7TH8PZ$ z^(*d!6~(ea9J5FKlE{Q(sdGyUwK}^+k{_)IC$uI z2t@@9_-x_-zFl?)DRL+*YmtD^Y@ZA6iEwP5=3L#wIwRQ5b!(9Se0BdlB*)_WmG9jP zXFXheL|;?NPr`Dkoli|&dGPM!Kcs-dqO>3N13-J_7dG9I3)4LCEkj4tt7uuWtShm1 z=0x$L)l;fF{=Kac91S37^-wh%9ujv(1T{1{rc=SI-G}I2so2pNhDnz&T8QK>J2X@P zc1M%i_v!=Ym~MV6DQTD4zRL3HJYuDgB}O2@o6QQJ{i0~S?f|jWc3miMtsd}ct(AU8 zR%2u*;k`v;fm7h$AoA#{^Unc6q(G2k`usYp9=b*+d3GFYIHu`~>XZrXb9s(Au+agf zECB(N2mY&Kcd;|Uun#9uv9S;K4!bydEa)XGZCWTWn4>r#BG>4F4l9TDVq5Viz!&II zccu?2DNt#L1TFyKzk!)%TL4Rd<41H&j_v+Ewww6&X)Rz>H#a8*<4mT6{7{K>VVsV>A3PMq)k(DRDiG2QkKrg%nUtRMf*_;nD*hXPh zUifT;pVI;D0NXj8diwzNlYY-#0vwl7Hs>W?!(8}+918%yy-FZi>)T)KAQ8DCKVc@N zruzjSKqD+|^8j{%xZvxyf#2a*vGPy`dr5~1pZLweV_}49&PsZwA|Qt5C@R`OEE2lQk8j?djfNci-ykz~z)z3XmgEqca%zkTd{MAA?;ABI>;C0OZw#Op{werzyu|n^S>no2Krkh={qOfphzTL zU-N_g|MhmVrwH7bOSPx78zNPzb2cJQb*mI!wX|Y5Xz_bAbO}1pKq= z2B!TF052;QzckAHt_vkpB#+Swepm@R=Ox+vk6Vj@|EPHN$A2_8`{aX1);rEd-LV)o zTY3b)*yP0ng4d6UvL<;ry)oe%EkvUdGI~8{OK{pr!3K=mwiExa%O-6Maz1$YUt|84 zhIJG^uFZWeZdW}#qhV33l}bOs49tH=?25Wp-{f8r!A8uB!W+b53CBL7MO_rF+`Rfj z4#c}nlyu+!ahbAtnfu!a{xTy%OizDsPfOZniL(L~HGaq~TBJ(kHVWk=L|}H90E@sQ zBEf&)n6;rq^*^Tk3p42J4`}i~0Q}i7K_SZj@Qhzg{5x15UJtsbogr-R6ROBA8sAPe^U$D z)Nt${^JVp?mj2%d_w}*=&)!d-Qw@WC!npjQIT2pE1Y20x_yK-$VQC;^6rwUck@3SQx#Md*fQUvY>4Y_gi~aV6|CT zVV;u~6?s1PRl@M7{y^{1NS$-_75$^b|C&06GvDDK?;!Bn`6wSv(#nVUYsmjF6+da% z)R^C@ECw$5o#cbJJVtsV{}#w!AyK3d7Vg$NWd$e={t8xA{OU=T!q}zOKQGt`qysghzi`=_9Cx!`8yf$)54UugX4PnfmEU(^tM{+yUIVYLRAmh~Qg z>Q-=KclU@s?X6Guolawh{_Ch1GjL`6*G~bu7QVXo1$?t4zOyiD!q5NZ-G4|YgUH_X zyG&HTa0atgJ1370#Hzvo|NpeT={v@|!v_rvv)_%*dOH*UnEulJTVoPl2b+34q_3&? z>RS4@&Ih+uR%FmcQZKdDI5>k(9q%M%GBAc)`wjmof$9G^=~%?yKDn=w*7<)ZW#C%@+puJ zj!uvpuB-A%1~AGc_b0tGfXJ-V^*@9%0D@}>mDQpkDm086&7fp3TJbJhm?0K$F+dzC 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 OsTU0fm-&Cc+WjAu?!e6e From 40aa760d679b2e162e1171c240d10f179ccd692c Mon Sep 17 00:00:00 2001 From: Jan Korbay <43049427+Fradd747@users.noreply.github.com> Date: Mon, 27 Oct 2025 14:14:22 +0100 Subject: [PATCH 04/39] docs: update applications advanced docs; make file mount more specific --- apps/docs/content/docs/core/applications/advanced.mdx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/docs/content/docs/core/applications/advanced.mdx b/apps/docs/content/docs/core/applications/advanced.mdx index 9847eef..619c22a 100644 --- a/apps/docs/content/docs/core/applications/advanced.mdx +++ b/apps/docs/content/docs/core/applications/advanced.mdx @@ -124,7 +124,8 @@ Configure persistent storage for your application to ensure data remains intact **File Mount**: Specifically for single files, useful for configuration files. 1. **Content**: The content to store in the file. -2. **Mount Path**: Path in the container where the file is placed. +2. **File Path**: The name of the file. +3. **Mount Path**: Path in the container where the file is placed. **The path must also contain the filename.** File mounts are a dokploy features, this create a file in a folder called `files` inside your project, so it recreates every single time you deploy your project. From 6e9e7f20d1b792b7d7da137344ee1bcdd516b6d2 Mon Sep 17 00:00:00 2001 From: Nahidujjaman Hridoy <75487507+nhridoy@users.noreply.github.com> Date: Mon, 10 Nov 2025 16:00:43 +0600 Subject: [PATCH 05/39] chore: Add Dokploy Deploy Action 3 to goodies list --- apps/docs/content/docs/core/goodies.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/docs/content/docs/core/goodies.mdx b/apps/docs/content/docs/core/goodies.mdx index 66c88d0..05c41bf 100644 --- a/apps/docs/content/docs/core/goodies.mdx +++ b/apps/docs/content/docs/core/goodies.mdx @@ -7,6 +7,7 @@ description: "Dokploy has certain goodies that are external that can be used wit 2. **Dokploy Oracle infrastructure**: Deploy Dokploy on Oracle infrastructure [Github](https://github.com/statickidz/dokploy-oci-free) 3. **Dokploy Deploy Action 1**: Automatic Dokploy deployments on Github [Github](https://github.com/benbristow/dokploy-deploy-action) 4. **Dokploy Deploy Action 2**: Automatic Dokploy deployments on Github [Github](https://github.com/jmischler72/dokploy-deploy-action) +5. **Dokploy Deploy Action 3**: Automatic Dokploy deployments on Github (Support both `application` and `compose` deployment) [Github](https://github.com/nhridoy/dokploy-deploy-action) 5. **Dokploy JS Sdk**: Dokploy JS SDK [Github](https://github.com/quiint/dokploy.js) 6. **Templates Collection** : Docker compose collection for Dokploy [Github](https://github.com/benbristow/dokploy-compose-templates) 7. **Dokploy Port Updater**: Dokploy Port Updater [Github](https://github.com/clockradios/dokploy-port-updater) From 49f3061f7faf5a4f99bbfad8aee78c53a2b7a1ab Mon Sep 17 00:00:00 2001 From: nst <49988403+nenas1ya@users.noreply.github.com> Date: Tue, 18 Nov 2025 17:18:59 +0500 Subject: [PATCH 06/39] docs(troubleshooting): correct Traefik recreate instructions to use swarm service --- .../content/docs/core/troubleshooting.mdx | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/apps/docs/content/docs/core/troubleshooting.mdx b/apps/docs/content/docs/core/troubleshooting.mdx index 7c1f01d..5b2cbb7 100644 --- a/apps/docs/content/docs/core/troubleshooting.mdx +++ b/apps/docs/content/docs/core/troubleshooting.mdx @@ -484,16 +484,18 @@ docker network connect dokploy-network dokploy-traefik docker service rm dokploy-traefik # Create a new dokploy-traefik service -docker run -d \ - --name dokploy-traefik \ - --restart always \ - -v /etc/dokploy/traefik/traefik.yml:/etc/traefik/traefik.yml \ - -v /etc/dokploy/traefik/dynamic:/etc/dokploy/traefik/dynamic \ - -v /var/run/docker.sock:/var/run/docker.sock \ - -p 80:80/tcp \ - -p 443:443/tcp \ - -p 443:443/udp \ - traefik:v3.6.1 +docker service create \ + --name dokploy-traefik \ + --constraint 'node.role == manager' \ + --replicas 1 \ + --network dokploy-network \ + --publish published=80,target=80,mode=host \ + --publish published=443,target=443,mode=host \ + --mount type=bind,source=/etc/dokploy/traefik/traefik.yml,target=/etc/traefik/traefik.yml \ + --mount type=bind,source=/etc/dokploy/traefik/dynamic,target=/etc/dokploy/traefik/dynamic \ + --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \ + --label traefik.enable=true \ + traefik:v3.6.1 ``` Remove the dokploy service: From eef3165aecbbe32a98af3205a2fc0ca87d509322 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D1=84=D1=8B=D1=80=D0=B0=D1=82=20=D1=91=D0=B7=D0=B4=D1=8D?= =?UTF-8?q?=D0=BD?= <31664778+fir4tozden@users.noreply.github.com> Date: Wed, 26 Nov 2025 22:14:28 +0300 Subject: [PATCH 07/39] fix: volume name updates --- apps/website/public/install.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/website/public/install.sh b/apps/website/public/install.sh index 0792fde..ac91fc1 100644 --- a/apps/website/public/install.sh +++ b/apps/website/public/install.sh @@ -152,14 +152,14 @@ install_dokploy() { --env POSTGRES_USER=dokploy \ --env POSTGRES_DB=dokploy \ --env POSTGRES_PASSWORD=amukds4wi9001583845717ad2 \ - --mount type=volume,source=dokploy-postgres-database,target=/var/lib/postgresql/data \ + --mount type=volume,source=dokploy-postgres,target=/var/lib/postgresql/data \ postgres:16 docker service create \ --name dokploy-redis \ --constraint 'node.role==manager' \ --network dokploy-network \ - --mount type=volume,source=redis-data-volume,target=/data \ + --mount type=volume,source=dokploy-redis,target=/data \ redis:7 # Installation @@ -169,7 +169,7 @@ install_dokploy() { --network dokploy-network \ --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \ --mount type=bind,source=/etc/dokploy,target=/etc/dokploy \ - --mount type=volume,source=dokploy-docker-config,target=/root/.docker \ + --mount type=volume,source=dokploy-config,target=/root/.docker \ --publish published=3000,target=3000,mode=host \ --update-parallelism 1 \ --update-order stop-first \ From db9be7ec99bd212c2313fee16660146d8c42cd26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D1=84=D1=8B=D1=80=D0=B0=D1=82=20=D1=91=D0=B7=D0=B4=D1=8D?= =?UTF-8?q?=D0=BD?= <31664778+fir4tozden@users.noreply.github.com> Date: Thu, 27 Nov 2025 00:50:41 +0300 Subject: [PATCH 08/39] fix: volume name updates --- apps/website/public/canary.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/website/public/canary.sh b/apps/website/public/canary.sh index 7e1e776..f4820d7 100644 --- a/apps/website/public/canary.sh +++ b/apps/website/public/canary.sh @@ -130,7 +130,7 @@ install_dokploy() { --name dokploy-redis \ --constraint 'node.role==manager' \ --network dokploy-network \ - --mount type=volume,source=redis-data-volume,target=/data \ + --mount type=volume,source=dokploy-redis,target=/data \ redis:7 # Installation @@ -140,7 +140,7 @@ install_dokploy() { --network dokploy-network \ --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \ --mount type=bind,source=/etc/dokploy,target=/etc/dokploy \ - --mount type=volume,source=dokploy-docker-config,target=/root/.docker \ + --mount type=volume,source=dokploy-config,target=/root/.docker \ --publish published=3000,target=3000,mode=host \ --update-parallelism 1 \ --update-order stop-first \ From ca1e3894d16e1e6f06df932f01d5cba2c047fddf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D1=84=D1=8B=D1=80=D0=B0=D1=82=20=D1=91=D0=B7=D0=B4=D1=8D?= =?UTF-8?q?=D0=BD?= <31664778+fir4tozden@users.noreply.github.com> Date: Thu, 27 Nov 2025 00:51:32 +0300 Subject: [PATCH 09/39] fix: volume name updates --- apps/website/public/canary.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/website/public/canary.sh b/apps/website/public/canary.sh index f4820d7..bd7910a 100644 --- a/apps/website/public/canary.sh +++ b/apps/website/public/canary.sh @@ -123,7 +123,7 @@ install_dokploy() { --env POSTGRES_USER=dokploy \ --env POSTGRES_DB=dokploy \ --env POSTGRES_PASSWORD=amukds4wi9001583845717ad2 \ - --mount type=volume,source=dokploy-postgres-database,target=/var/lib/postgresql/data \ + --mount type=volume,source=dokploy-postgres,target=/var/lib/postgresql/data \ postgres:16 docker service create \ From a2e591af0ca58484788a0309d3cd1af8e9527cf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D1=84=D1=8B=D1=80=D0=B0=D1=82=20=D1=91=D0=B7=D0=B4=D1=8D?= =?UTF-8?q?=D0=BD?= <31664778+fir4tozden@users.noreply.github.com> Date: Thu, 27 Nov 2025 00:52:28 +0300 Subject: [PATCH 10/39] fix: volume name updates --- apps/docs/content/docs/core/troubleshooting.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/docs/content/docs/core/troubleshooting.mdx b/apps/docs/content/docs/core/troubleshooting.mdx index 20e888a..899c684 100644 --- a/apps/docs/content/docs/core/troubleshooting.mdx +++ b/apps/docs/content/docs/core/troubleshooting.mdx @@ -439,7 +439,7 @@ docker service rm dokploy-redis --name dokploy-redis \ --constraint 'node.role==manager' \ --network dokploy-network \ - --mount type=volume,source=redis-data-volume,target=/data \ + --mount type=volume,source=dokploy-redis,target=/data \ redis:7 ``` @@ -456,7 +456,7 @@ docker service rm dokploy-postgres --env POSTGRES_USER=dokploy \ --env POSTGRES_DB=dokploy \ --env POSTGRES_PASSWORD=amukds4wi9001583845717ad2 \ - --mount type=volume,source=dokploy-postgres-database,target=/var/lib/postgresql/data \ + --mount type=volume,source=dokploy-postgres,target=/var/lib/postgresql/data \ postgres:16 ``` @@ -517,7 +517,7 @@ docker service create \ --network dokploy-network \ --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \ --mount type=bind,source=/etc/dokploy,target=/etc/dokploy \ - --mount type=volume,source=dokploy-docker-config,target=/root/.docker \ + --mount type=volume,source=dokploy-config,target=/root/.docker \ --publish published=3000,target=3000,mode=host \ --update-parallelism 1 \ --update-order stop-first \ From 59a7613200bbe716bb289844a7951ebb37d34792 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D1=84=D1=8B=D1=80=D0=B0=D1=82=20=D1=91=D0=B7=D0=B4=D1=8D?= =?UTF-8?q?=D0=BD?= <31664778+fir4tozden@users.noreply.github.com> Date: Thu, 27 Nov 2025 00:53:03 +0300 Subject: [PATCH 11/39] fix: volume name updates --- apps/docs/content/docs/core/manual-installation.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/docs/content/docs/core/manual-installation.mdx b/apps/docs/content/docs/core/manual-installation.mdx index a4cd347..8762b69 100644 --- a/apps/docs/content/docs/core/manual-installation.mdx +++ b/apps/docs/content/docs/core/manual-installation.mdx @@ -133,14 +133,14 @@ install_dokploy() { --env POSTGRES_USER=dokploy \ --env POSTGRES_DB=dokploy \ --env POSTGRES_PASSWORD=amukds4wi9001583845717ad2 \ - --mount type=volume,source=dokploy-postgres-database,target=/var/lib/postgresql/data \ + --mount type=volume,source=dokploy-postgres,target=/var/lib/postgresql/data \ postgres:16 docker service create \ --name dokploy-redis \ --constraint 'node.role==manager' \ --network dokploy-network \ - --mount type=volume,source=redis-data-volume,target=/data \ + --mount type=volume,source=dokploy-redis,target=/data \ redis:7 docker pull traefik:v3.6.1 @@ -153,7 +153,7 @@ install_dokploy() { --network dokploy-network \ --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \ --mount type=bind,source=/etc/dokploy,target=/etc/dokploy \ - --mount type=volume,source=dokploy-docker-config,target=/root/.docker \ + --mount type=volume,source=dokploy-config,target=/root/.docker \ --publish published=3000,target=3000,mode=host \ --update-parallelism 1 \ --update-order stop-first \ From 78807c9ba4997a7373acf0654823786c0a6ca334 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D1=84=D1=8B=D1=80=D0=B0=D1=82=20=D1=91=D0=B7=D0=B4=D1=8D?= =?UTF-8?q?=D0=BD?= <31664778+fir4tozden@users.noreply.github.com> Date: Thu, 27 Nov 2025 00:53:41 +0300 Subject: [PATCH 12/39] fix: volume name updates --- apps/website/public/feature.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/website/public/feature.sh b/apps/website/public/feature.sh index 112cb5e..f132b9f 100644 --- a/apps/website/public/feature.sh +++ b/apps/website/public/feature.sh @@ -123,7 +123,7 @@ install_dokploy() { --env POSTGRES_USER=dokploy \ --env POSTGRES_DB=dokploy \ --env POSTGRES_PASSWORD=amukds4wi9001583845717ad2 \ - --mount type=volume,source=dokploy-postgres-database,target=/var/lib/postgresql/data \ + --mount type=volume,source=dokploy-postgres,target=/var/lib/postgresql/data \ postgres:16 @@ -131,7 +131,7 @@ install_dokploy() { --name dokploy-redis \ --constraint 'node.role==manager' \ --network dokploy-network \ - --mount type=volume,source=redis-data-volume,target=/data \ + --mount type=volume,source=dokploy-redis,target=/data \ redis:7 @@ -142,7 +142,7 @@ install_dokploy() { --network dokploy-network \ --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \ --mount type=bind,source=/etc/dokploy,target=/etc/dokploy \ - --mount type=volume,source=dokploy-docker-config,target=/root/.docker \ + --mount type=volume,source=dokploy-config,target=/root/.docker \ --publish published=3000,target=3000,mode=host \ --update-parallelism 1 \ --update-order stop-first \ From a530061459f457e295f61e4845da874e79f43b24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D1=84=D1=8B=D1=80=D0=B0=D1=82=20=D1=91=D0=B7=D0=B4=D1=8D?= =?UTF-8?q?=D0=BD?= <31664778+fir4tozden@users.noreply.github.com> Date: Thu, 27 Nov 2025 03:41:56 +0300 Subject: [PATCH 13/39] fix: volume name updates --- apps/docs/content/docs/core/manual-installation.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/docs/content/docs/core/manual-installation.mdx b/apps/docs/content/docs/core/manual-installation.mdx index 8762b69..ce8f6af 100644 --- a/apps/docs/content/docs/core/manual-installation.mdx +++ b/apps/docs/content/docs/core/manual-installation.mdx @@ -153,7 +153,7 @@ install_dokploy() { --network dokploy-network \ --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \ --mount type=bind,source=/etc/dokploy,target=/etc/dokploy \ - --mount type=volume,source=dokploy-config,target=/root/.docker \ + --mount type=volume,source=dokploy,target=/root/.docker \ --publish published=3000,target=3000,mode=host \ --update-parallelism 1 \ --update-order stop-first \ From 0acdfd2008c6a44296abe3cc15aa02772c1e5f93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D1=84=D1=8B=D1=80=D0=B0=D1=82=20=D1=91=D0=B7=D0=B4=D1=8D?= =?UTF-8?q?=D0=BD?= <31664778+fir4tozden@users.noreply.github.com> Date: Thu, 27 Nov 2025 03:42:21 +0300 Subject: [PATCH 14/39] fix: volume name updates --- apps/docs/content/docs/core/troubleshooting.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/docs/content/docs/core/troubleshooting.mdx b/apps/docs/content/docs/core/troubleshooting.mdx index 899c684..315e7a5 100644 --- a/apps/docs/content/docs/core/troubleshooting.mdx +++ b/apps/docs/content/docs/core/troubleshooting.mdx @@ -517,7 +517,7 @@ docker service create \ --network dokploy-network \ --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \ --mount type=bind,source=/etc/dokploy,target=/etc/dokploy \ - --mount type=volume,source=dokploy-config,target=/root/.docker \ + --mount type=volume,source=dokploy,target=/root/.docker \ --publish published=3000,target=3000,mode=host \ --update-parallelism 1 \ --update-order stop-first \ From 1026401dd89b16e2213fccef95b6d5064ffae3c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D1=84=D1=8B=D1=80=D0=B0=D1=82=20=D1=91=D0=B7=D0=B4=D1=8D?= =?UTF-8?q?=D0=BD?= <31664778+fir4tozden@users.noreply.github.com> Date: Thu, 27 Nov 2025 03:42:53 +0300 Subject: [PATCH 15/39] fix: volume name updates --- apps/website/public/canary.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/website/public/canary.sh b/apps/website/public/canary.sh index bd7910a..2f48dd4 100644 --- a/apps/website/public/canary.sh +++ b/apps/website/public/canary.sh @@ -140,7 +140,7 @@ install_dokploy() { --network dokploy-network \ --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \ --mount type=bind,source=/etc/dokploy,target=/etc/dokploy \ - --mount type=volume,source=dokploy-config,target=/root/.docker \ + --mount type=volume,source=dokploy,target=/root/.docker \ --publish published=3000,target=3000,mode=host \ --update-parallelism 1 \ --update-order stop-first \ From cb7b3829f6bd14a8f8a7e02063f483d84542848b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D1=84=D1=8B=D1=80=D0=B0=D1=82=20=D1=91=D0=B7=D0=B4=D1=8D?= =?UTF-8?q?=D0=BD?= <31664778+fir4tozden@users.noreply.github.com> Date: Thu, 27 Nov 2025 03:43:06 +0300 Subject: [PATCH 16/39] fix: volume name updates --- apps/website/public/feature.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/website/public/feature.sh b/apps/website/public/feature.sh index f132b9f..55b01f1 100644 --- a/apps/website/public/feature.sh +++ b/apps/website/public/feature.sh @@ -142,7 +142,7 @@ install_dokploy() { --network dokploy-network \ --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \ --mount type=bind,source=/etc/dokploy,target=/etc/dokploy \ - --mount type=volume,source=dokploy-config,target=/root/.docker \ + --mount type=volume,source=dokploy,target=/root/.docker \ --publish published=3000,target=3000,mode=host \ --update-parallelism 1 \ --update-order stop-first \ From eab39c68fe0ded318b3186e08375d7bb353a5515 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D1=84=D1=8B=D1=80=D0=B0=D1=82=20=D1=91=D0=B7=D0=B4=D1=8D?= =?UTF-8?q?=D0=BD?= <31664778+fir4tozden@users.noreply.github.com> Date: Thu, 27 Nov 2025 03:43:20 +0300 Subject: [PATCH 17/39] fix: volume name updates --- apps/website/public/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/website/public/install.sh b/apps/website/public/install.sh index ac91fc1..dc6f61d 100644 --- a/apps/website/public/install.sh +++ b/apps/website/public/install.sh @@ -169,7 +169,7 @@ install_dokploy() { --network dokploy-network \ --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \ --mount type=bind,source=/etc/dokploy,target=/etc/dokploy \ - --mount type=volume,source=dokploy-config,target=/root/.docker \ + --mount type=volume,source=dokploy,target=/root/.docker \ --publish published=3000,target=3000,mode=host \ --update-parallelism 1 \ --update-order stop-first \ From 8adf935b3990858a879283963bae28109375fba1 Mon Sep 17 00:00:00 2001 From: Mauricio Siu Date: Fri, 28 Nov 2025 02:27:38 -0600 Subject: [PATCH 18/39] chore: remove pnpm-lock.yaml file to streamline dependency management --- apps/website/pnpm-lock.yaml | 3168 ----------------------------------- 1 file changed, 3168 deletions(-) delete mode 100644 apps/website/pnpm-lock.yaml diff --git a/apps/website/pnpm-lock.yaml b/apps/website/pnpm-lock.yaml deleted file mode 100644 index 6f32f67..0000000 --- a/apps/website/pnpm-lock.yaml +++ /dev/null @@ -1,3168 +0,0 @@ -lockfileVersion: '6.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -dependencies: - '@headlessui/react': - specifier: ^1.7.17 - version: 1.7.18(react-dom@18.2.0)(react@18.2.0) - '@headlessui/tailwindcss': - specifier: ^0.2.0 - version: 0.2.0(tailwindcss@3.4.3) - '@radix-ui/react-slot': - specifier: ^1.0.2 - version: 1.0.2(@types/react@18.2.18)(react@18.2.0) - '@types/node': - specifier: 20.4.6 - version: 20.4.6 - '@types/react': - specifier: 18.2.18 - version: 18.2.18 - '@types/react-dom': - specifier: 18.2.7 - version: 18.2.7 - autoprefixer: - specifier: ^10.4.12 - version: 10.4.19(postcss@8.4.38) - class-variance-authority: - specifier: ^0.7.0 - version: 0.7.0 - clsx: - specifier: ^2.1.0 - version: 2.1.0 - framer-motion: - specifier: ^11.0.24 - version: 11.0.24(react-dom@18.2.0)(react@18.2.0) - lucide-react: - specifier: 0.364.0 - version: 0.364.0(react@18.2.0) - next: - specifier: 14.2.2 - version: 14.2.2(react-dom@18.2.0)(react@18.2.0) - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - react-ga4: - specifier: ^2.1.0 - version: 2.1.0 - tailwind-merge: - specifier: ^2.2.2 - version: 2.2.2 - tailwindcss: - specifier: ^3.3.3 - version: 3.4.3 - tailwindcss-animate: - specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.3) - typescript: - specifier: 5.1.6 - version: 5.1.6 - -devDependencies: - '@biomejs/biome': - specifier: 1.7.0 - version: 1.7.0 - eslint: - specifier: 8.45.0 - version: 8.45.0 - eslint-config-next: - specifier: 13.4.16 - version: 13.4.16(eslint@8.45.0)(typescript@5.1.6) - prettier: - specifier: ^3.0.1 - version: 3.2.5 - prettier-plugin-tailwindcss: - specifier: ^0.5.2 - version: 0.5.13(prettier@3.2.5) - -packages: - - /@aashutoshrathi/word-wrap@1.2.6: - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - dev: true - - /@alloc/quick-lru@5.2.0: - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} - engines: {node: '>=10'} - dev: false - - /@babel/runtime@7.24.4: - resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.1 - - /@biomejs/biome@1.7.0: - resolution: {integrity: sha512-mejiRhnAq6UrXtYvjWJUKdstcT58n0/FfKemFf3d2Ou0HxOdS88HQmWtQ/UgyZvOEPD572YbFTb6IheyROpqkw==} - engines: {node: '>=14.21.3'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.7.0 - '@biomejs/cli-darwin-x64': 1.7.0 - '@biomejs/cli-linux-arm64': 1.7.0 - '@biomejs/cli-linux-arm64-musl': 1.7.0 - '@biomejs/cli-linux-x64': 1.7.0 - '@biomejs/cli-linux-x64-musl': 1.7.0 - '@biomejs/cli-win32-arm64': 1.7.0 - '@biomejs/cli-win32-x64': 1.7.0 - dev: true - - /@biomejs/cli-darwin-arm64@1.7.0: - resolution: {integrity: sha512-12TaeaKHU4SAZt0fQJ2bYk1jUb4foope7LmgDE5p3c0uMxd3mFkg1k7G721T+K6UHYULcSOQDsNNM8DhYi8Irg==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@biomejs/cli-darwin-x64@1.7.0: - resolution: {integrity: sha512-6Qq1BSIB0cpp0cQNqO/+EiUV7FE3jMpF6w7+AgIBXp0oJxUWb2Ff0RDZdO9bfzkimXD58j0vGpNHMGnCcjDV2Q==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@biomejs/cli-linux-arm64-musl@1.7.0: - resolution: {integrity: sha512-pwIY80nU7SAxrVVZ6HD9ah1pruwh9ZqlSR0Nvbg4ZJqQa0POhiB+RJx7+/1Ml2mTZdrl8kb/YiwQpD16uwb5wg==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@biomejs/cli-linux-arm64@1.7.0: - resolution: {integrity: sha512-GwSci7xBJ2j1CrdDXDUVXnUtrvypEz/xmiYPpFeVdlX5p95eXx+7FekPPbJfhGGw5WKSsKZ+V8AAlbN+kUwJWw==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@biomejs/cli-linux-x64-musl@1.7.0: - resolution: {integrity: sha512-KzCA0mW4LSbCd7XZWaEJvTOTTBjfJoVEXkfq1fsXxww1HB+ww5PGMbhbIcbYCsj2CTJUifeD5hOkyuBVppU1xQ==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@biomejs/cli-linux-x64@1.7.0: - resolution: {integrity: sha512-1y+odKQsyHcw0JCGRuqhbx7Y6jxOVSh4lGIVDdJxW1b55yD22DY1kcMEfhUte6f95OIc2uqfkwtiI6xQAiZJdw==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@biomejs/cli-win32-arm64@1.7.0: - resolution: {integrity: sha512-AvLDUYZBpOUFgS/mni4VruIoVV3uSGbKSkZQBPXsHgL0w4KttLll3NBrVanmWxOHsom6C6ocHLyfAY8HUc8TXg==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@biomejs/cli-win32-x64@1.7.0: - resolution: {integrity: sha512-Pylm00BAAuLVb40IH9PC17432BTsY8K4pSUvhvgR1eaalnMaD6ug9SYJTTzKDbT6r24MPAGCTiSZERyhGkGzFQ==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@eslint-community/eslint-utils@4.4.0(eslint@8.45.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.45.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@eslint-community/regexpp@4.10.0: - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - - /@eslint/eslintrc@2.1.4: - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@eslint/js@8.44.0: - resolution: {integrity: sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@headlessui/react@1.7.18(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-4i5DOrzwN4qSgNsL4Si61VMkUcWbcSKueUV7sFhpHzQcSShdlHENE5+QBntMSRvHt8NyoFO2AGG8si9lq+w4zQ==} - engines: {node: '>=10'} - peerDependencies: - react: ^16 || ^17 || ^18 - react-dom: ^16 || ^17 || ^18 - dependencies: - '@tanstack/react-virtual': 3.2.0(react-dom@18.2.0)(react@18.2.0) - client-only: 0.0.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@headlessui/tailwindcss@0.2.0(tailwindcss@3.4.3): - resolution: {integrity: sha512-fpL830Fln1SykOCboExsWr3JIVeQKieLJ3XytLe/tt1A0XzqUthOftDmjcCYLW62w7mQI7wXcoPXr3tZ9QfGxw==} - engines: {node: '>=10'} - peerDependencies: - tailwindcss: ^3.0 - dependencies: - tailwindcss: 3.4.3 - dev: false - - /@humanwhocodes/config-array@0.11.14: - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true - - /@humanwhocodes/object-schema@2.0.3: - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - dev: true - - /@isaacs/cliui@8.0.2: - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 - dev: false - - /@jridgewell/gen-mapping@0.3.5: - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.25 - dev: false - - /@jridgewell/resolve-uri@3.1.2: - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - dev: false - - /@jridgewell/set-array@1.2.1: - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - dev: false - - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: false - - /@jridgewell/trace-mapping@0.3.25: - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - dev: false - - /@next/env@14.2.2: - resolution: {integrity: sha512-sk72qRfM1Q90XZWYRoJKu/UWlTgihrASiYw/scb15u+tyzcze3bOuJ/UV6TBOQEeUaxOkRqGeuGUdiiuxc5oqw==} - dev: false - - /@next/eslint-plugin-next@13.4.16: - resolution: {integrity: sha512-QuFtQl+oSEEQb0HMYBdvBoUaTiMxbY3go/MFkF3zOnfY0t84+IbAX78cw8ZCfr6cA6UcTq3nMIlCrHwDC/moxg==} - dependencies: - glob: 7.1.7 - dev: true - - /@next/swc-darwin-arm64@14.2.2: - resolution: {integrity: sha512-3iPgMhzbalizGwHNFUcGnDhFPSgVBHQ8aqSTAMxB5BvJG0oYrDf1WOJZlbXBgunOEj/8KMVbejEur/FpvFsgFQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@next/swc-darwin-x64@14.2.2: - resolution: {integrity: sha512-x7Afi/jt0ZBRUZHTi49yyej4o8znfIMHO4RvThuoc0P+uli8Jd99y5GKjxoYunPKsXL09xBXEM1+OQy2xEL0Ag==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@next/swc-linux-arm64-gnu@14.2.2: - resolution: {integrity: sha512-zbfPtkk7L41ODMJwSp5VbmPozPmMMQrzAc0HAUomVeVIIwlDGs/UCqLJvLNDt4jpWgc21SjjyIn762lNGrMaUA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@next/swc-linux-arm64-musl@14.2.2: - resolution: {integrity: sha512-wPbS3pI/JU16rm3XdLvvTmlsmm1nd+sBa2ohXgBZcShX4TgOjD4R+RqHKlI1cjo/jDZKXt6OxmcU0Iys0OC/yg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@next/swc-linux-x64-gnu@14.2.2: - resolution: {integrity: sha512-NqWOHqqq8iC9tuHvZxjQ2tX+jWy2X9y8NX2mcB4sj2bIccuCxbIZrU/ThFPZZPauygajZuVQ6zediejQHwZHwQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@next/swc-linux-x64-musl@14.2.2: - resolution: {integrity: sha512-lGepHhwb9sGhCcU7999+iK1ZZT+6rrIoVg40MP7DZski9GIZP80wORSbt5kJzh9v2x2ev2lxC6VgwMQT0PcgTA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@next/swc-win32-arm64-msvc@14.2.2: - resolution: {integrity: sha512-TZSh/48SfcLEQ4rD25VVn2kdIgUWmMflRX3OiyPwGNXn3NiyPqhqei/BaqCYXViIQ+6QsG9R0C8LftMqy8JPMA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@next/swc-win32-ia32-msvc@14.2.2: - resolution: {integrity: sha512-M0tBVNMEBJN2ZNQWlcekMn6pvLria7Sa2Fai5znm7CCJz4pP3lrvlSxhKdkCerk0D9E0bqx5yAo3o2Q7RrD4gA==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@next/swc-win32-x64-msvc@14.2.2: - resolution: {integrity: sha512-a/20E/wtTJZ3Ykv3f/8F0l7TtgQa2LWHU2oNB9bsu0VjqGuGGHmm/q6waoUNQYTVPYrrlxxaHjJcDV6aiSTt/w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - - /@pkgjs/parseargs@0.11.0: - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - requiresBuild: true - dev: false - optional: true - - /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.18)(react@18.2.0): - resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.4 - '@types/react': 18.2.18 - react: 18.2.0 - dev: false - - /@radix-ui/react-slot@1.0.2(@types/react@18.2.18)(react@18.2.0): - resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.18)(react@18.2.0) - '@types/react': 18.2.18 - react: 18.2.0 - dev: false - - /@rushstack/eslint-patch@1.10.1: - resolution: {integrity: sha512-S3Kq8e7LqxkA9s7HKLqXGTGck1uwis5vAXan3FnU5yw1Ec5hsSGnq4s/UCaSqABPOnOTg7zASLyst7+ohgWexg==} - dev: true - - /@swc/counter@0.1.3: - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - dev: false - - /@swc/helpers@0.5.5: - resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} - dependencies: - '@swc/counter': 0.1.3 - tslib: 2.6.2 - dev: false - - /@tanstack/react-virtual@3.2.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-OEdMByf2hEfDa6XDbGlZN8qO6bTjlNKqjM3im9JG+u3mCL8jALy0T/67oDI001raUUPh1Bdmfn4ZvPOV5knpcg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@tanstack/virtual-core': 3.2.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@tanstack/virtual-core@3.2.0: - resolution: {integrity: sha512-P5XgYoAw/vfW65byBbJQCw+cagdXDT/qH6wmABiLt4v4YBT2q2vqCOhihe+D1Nt325F/S/0Tkv6C5z0Lv+VBQQ==} - dev: false - - /@types/json5@0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: true - - /@types/node@20.4.6: - resolution: {integrity: sha512-q0RkvNgMweWWIvSMDiXhflGUKMdIxBo2M2tYM/0kEGDueQByFzK4KZAgu5YHGFNxziTlppNpTIBcqHQAxlfHdA==} - dev: false - - /@types/prop-types@15.7.12: - resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} - dev: false - - /@types/react-dom@18.2.7: - resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} - dependencies: - '@types/react': 18.2.18 - dev: false - - /@types/react@18.2.18: - resolution: {integrity: sha512-da4NTSeBv/P34xoZPhtcLkmZuJ+oYaCxHmyHzwaDQo9RQPBeXV+06gEk2FpqEcsX9XrnNLvRpVh6bdavDSjtiQ==} - dependencies: - '@types/prop-types': 15.7.12 - '@types/scheduler': 0.23.0 - csstype: 3.1.3 - dev: false - - /@types/scheduler@0.23.0: - resolution: {integrity: sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw==} - dev: false - - /@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4 - eslint: 8.45.0 - typescript: 5.1.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/scope-manager@6.21.0: - resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 - dev: true - - /@typescript-eslint/types@6.21.0: - resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} - engines: {node: ^16.0.0 || >=18.0.0} - dev: true - - /@typescript-eslint/typescript-estree@6.21.0(typescript@5.1.6): - resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.3 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.1.6) - typescript: 5.1.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/visitor-keys@6.21.0: - resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.21.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /acorn-jsx@5.3.2(acorn@8.11.3): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.11.3 - dev: true - - /acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - dev: true - - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - /ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - dev: false - - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - - /ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - dev: false - - /any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - dev: false - - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: false - - /arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - dev: false - - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true - - /aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - dependencies: - dequal: 2.0.3 - dev: true - - /array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - is-array-buffer: 3.0.4 - dev: true - - /array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - is-string: 1.0.7 - dev: true - - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: true - - /array.prototype.findlast@1.2.5: - resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-shim-unscopables: 1.0.2 - dev: true - - /array.prototype.findlastindex@1.2.5: - resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-shim-unscopables: 1.0.2 - dev: true - - /array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - dev: true - - /array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - dev: true - - /array.prototype.toreversed@1.1.2: - resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - dev: true - - /array.prototype.tosorted@1.1.3: - resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-shim-unscopables: 1.0.2 - dev: true - - /arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.3 - dev: true - - /ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - dev: true - - /autoprefixer@10.4.19(postcss@8.4.38): - resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001605 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - dev: false - - /available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - dependencies: - possible-typed-array-names: 1.0.0 - dev: true - - /axe-core@4.7.0: - resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} - engines: {node: '>=4'} - dev: true - - /axobject-query@3.2.1: - resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} - dependencies: - dequal: 2.0.3 - dev: true - - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - /binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - dev: false - - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: true - - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - dependencies: - balanced-match: 1.0.2 - - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - - /browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001605 - electron-to-chromium: 1.4.726 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) - dev: false - - /busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - dependencies: - streamsearch: 1.1.0 - dev: false - - /call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.2 - dev: true - - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: true - - /camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - dev: false - - /caniuse-lite@1.0.30001605: - resolution: {integrity: sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ==} - dev: false - - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - - /chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - dev: false - - /class-variance-authority@0.7.0: - resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} - dependencies: - clsx: 2.0.0 - dev: false - - /client-only@0.0.1: - resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - dev: false - - /clsx@2.0.0: - resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} - engines: {node: '>=6'} - dev: false - - /clsx@2.1.0: - resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} - engines: {node: '>=6'} - dev: false - - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - dev: false - - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true - - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - /cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - dev: false - - /csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - dev: false - - /damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - dev: true - - /data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - dev: true - - /data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - dev: true - - /data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - dev: true - - /debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - dev: true - - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: true - - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true - - /define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.0.1 - dev: true - - /define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - dev: true - - /dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - dev: true - - /didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - dev: false - - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - dev: true - - /dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dev: false - - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - dependencies: - esutils: 2.0.3 - dev: true - - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - dev: true - - /eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: false - - /electron-to-chromium@1.4.726: - resolution: {integrity: sha512-xtjfBXn53RORwkbyKvDfTajtnTp0OJoPOIBzXvkNbb7+YYvCHJflba3L7Txyx/6Fov3ov2bGPr/n5MTixmPhdQ==} - dev: false - - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: false - - /emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - /enhanced-resolve@5.16.0: - resolution: {integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==} - engines: {node: '>=10.13.0'} - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - dev: true - - /es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - data-view-buffer: 1.0.1 - data-view-byte-length: 1.0.1 - data-view-byte-offset: 1.0.0 - es-define-property: 1.0.0 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-set-tostringtag: 2.0.3 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 - get-symbol-description: 1.0.2 - globalthis: 1.0.3 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 - is-callable: 1.2.7 - is-data-view: 1.0.1 - is-negative-zero: 2.0.3 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.1 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - safe-array-concat: 1.1.2 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.9 - string.prototype.trimend: 1.0.8 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.6 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.15 - dev: true - - /es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.4 - dev: true - - /es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - dev: true - - /es-iterator-helpers@1.0.18: - resolution: {integrity: sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-set-tostringtag: 2.0.3 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - globalthis: 1.0.3 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - iterator.prototype: 1.1.2 - safe-array-concat: 1.1.2 - dev: true - - /es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - dev: true - - /es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.4 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - dev: true - - /es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} - dependencies: - hasown: 2.0.2 - dev: true - - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - dev: true - - /escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} - dev: false - - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - dev: true - - /eslint-config-next@13.4.16(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-Of73d/FiaGf0GLCxxTGdh4rW8bRDvsqypylefkshE/uDDpQr8ifVQsD4UiB99rhegks7nJGkYtUnR3dC7kfFlw==} - peerDependencies: - eslint: ^7.23.0 || ^8.0.0 - typescript: '>=3.3.1' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@next/eslint-plugin-next': 13.4.16 - '@rushstack/eslint-patch': 1.10.1 - '@typescript-eslint/parser': 6.21.0(eslint@8.45.0)(typescript@5.1.6) - eslint: 8.45.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.45.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.45.0) - eslint-plugin-jsx-a11y: 6.8.0(eslint@8.45.0) - eslint-plugin-react: 7.34.1(eslint@8.45.0) - eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.45.0) - typescript: 5.1.6 - transitivePeerDependencies: - - eslint-import-resolver-webpack - - supports-color - dev: true - - /eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - dependencies: - debug: 3.2.7 - is-core-module: 2.13.1 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.45.0): - resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' - dependencies: - debug: 4.3.4 - enhanced-resolve: 5.16.0 - eslint: 8.45.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.45.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.45.0) - fast-glob: 3.3.2 - get-tsconfig: 4.7.3 - is-core-module: 2.13.1 - is-glob: 4.0.3 - transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-node - - eslint-import-resolver-webpack - - supports-color - dev: true - - /eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.45.0): - resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.45.0)(typescript@5.1.6) - debug: 3.2.7 - eslint: 8.45.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.45.0) - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.45.0): - resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - dependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.45.0)(typescript@5.1.6) - array-includes: 3.1.8 - array.prototype.findlastindex: 1.2.5 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.45.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.45.0) - hasown: 2.0.2 - is-core-module: 2.13.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.0 - semver: 6.3.1 - tsconfig-paths: 3.15.0 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: true - - /eslint-plugin-jsx-a11y@6.8.0(eslint@8.45.0): - resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - '@babel/runtime': 7.24.4 - aria-query: 5.3.0 - array-includes: 3.1.8 - array.prototype.flatmap: 1.3.2 - ast-types-flow: 0.0.8 - axe-core: 4.7.0 - axobject-query: 3.2.1 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.18 - eslint: 8.45.0 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.2 - object.entries: 1.1.8 - object.fromentries: 2.0.8 - dev: true - - /eslint-plugin-react-hooks@5.0.0-canary-7118f5dd7-20230705(eslint@8.45.0): - resolution: {integrity: sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - dependencies: - eslint: 8.45.0 - dev: true - - /eslint-plugin-react@7.34.1(eslint@8.45.0): - resolution: {integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - array-includes: 3.1.8 - array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.2 - array.prototype.toreversed: 1.1.2 - array.prototype.tosorted: 1.1.3 - doctrine: 2.1.0 - es-iterator-helpers: 1.0.18 - eslint: 8.45.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.8 - object.fromentries: 2.0.8 - object.hasown: 1.1.4 - object.values: 1.2.0 - prop-types: 15.8.1 - resolve: 2.0.0-next.5 - semver: 6.3.1 - string.prototype.matchall: 4.0.11 - dev: true - - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: true - - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /eslint@8.45.0: - resolution: {integrity: sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) - '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.44.0 - '@humanwhocodes/config-array': 0.11.14 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 - ignore: 5.3.1 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) - eslint-visitor-keys: 3.4.3 - dev: true - - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - dependencies: - estraverse: 5.3.0 - dev: true - - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - dependencies: - estraverse: 5.3.0 - dev: true - - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: true - - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true - - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true - - /fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true - - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true - - /fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - dependencies: - reusify: 1.0.4 - - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flat-cache: 3.2.0 - dev: true - - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: true - - /flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flatted: 3.3.1 - keyv: 4.5.4 - rimraf: 3.0.2 - dev: true - - /flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - dev: true - - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - dependencies: - is-callable: 1.2.7 - dev: true - - /foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - dev: false - - /fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - dev: false - - /framer-motion@11.0.24(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-l2iM8NR53qtcujgAqYvGPJJGModPNWEVUaATRDLfnaLvUoFpImovBm0AHalSSsY8tW6knP8mfJTW4WYGbnAe4w==} - peerDependencies: - '@emotion/is-prop-valid': '*' - react: ^18.0.0 - react-dom: ^18.0.0 - peerDependenciesMeta: - '@emotion/is-prop-valid': - optional: true - react: - optional: true - react-dom: - optional: true - dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.2 - dev: false - - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true - - /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - /function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - functions-have-names: 1.2.3 - dev: true - - /functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true - - /get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - dev: true - - /get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - dev: true - - /get-tsconfig@4.7.3: - resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} - dependencies: - resolve-pkg-maps: 1.0.0 - dev: true - - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - dependencies: - is-glob: 4.0.3 - - /glob@10.3.12: - resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.4 - minipass: 7.0.4 - path-scurry: 1.10.2 - dev: false - - /glob@7.1.7: - resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - - /globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: true - - /globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} - dependencies: - define-properties: 1.2.1 - dev: true - - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.1 - merge2: 1.4.1 - slash: 3.0.0 - dev: true - - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - dependencies: - get-intrinsic: 1.2.4 - dev: true - - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - /graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true - - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true - - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - dev: true - - /has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - dependencies: - es-define-property: 1.0.0 - dev: true - - /has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - dev: true - - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - dev: true - - /has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: true - - /hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - dependencies: - function-bind: 1.1.2 - - /ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} - dev: true - - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - dev: true - - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: true - - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: true - - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true - - /internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - hasown: 2.0.2 - side-channel: 1.0.6 - dev: true - - /is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - dev: true - - /is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.2 - dev: true - - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - dependencies: - has-bigints: 1.0.2 - dev: true - - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.3.0 - dev: false - - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - dev: true - - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - dev: true - - /is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - dependencies: - hasown: 2.0.2 - - /is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} - engines: {node: '>= 0.4'} - dependencies: - is-typed-array: 1.1.13 - dev: true - - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.2 - dev: true - - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - /is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} - dependencies: - call-bind: 1.0.7 - dev: true - - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: false - - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.2 - dev: true - - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - - /is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - dev: true - - /is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - dev: true - - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.2 - dev: true - - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true - - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - dev: true - - /is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} - dev: true - - /is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - dev: true - - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.2 - dev: true - - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: true - - /is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - dependencies: - which-typed-array: 1.1.15 - dev: true - - /is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} - dev: true - - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - dependencies: - call-bind: 1.0.7 - dev: true - - /is-weakset@2.0.3: - resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - dev: true - - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true - - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - /iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} - dependencies: - define-properties: 1.2.1 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.6 - set-function-name: 2.0.2 - dev: true - - /jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - dev: false - - /jiti@1.21.0: - resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} - hasBin: true - dev: false - - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - dependencies: - argparse: 2.0.1 - dev: true - - /json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true - - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true - - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true - - /json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - dependencies: - minimist: 1.2.8 - dev: true - - /jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} - dependencies: - array-includes: 3.1.8 - array.prototype.flat: 1.3.2 - object.assign: 4.1.5 - object.values: 1.2.0 - dev: true - - /keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - dependencies: - json-buffer: 3.0.1 - dev: true - - /language-subtag-registry@0.3.22: - resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} - dev: true - - /language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} - dependencies: - language-subtag-registry: 0.3.22 - dev: true - - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - - /lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - dev: false - - /lilconfig@3.1.1: - resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} - engines: {node: '>=14'} - dev: false - - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: false - - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - dependencies: - p-locate: 5.0.0 - dev: true - - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true - - /loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - dependencies: - js-tokens: 4.0.0 - - /lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} - engines: {node: 14 || >=16.14} - dev: false - - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: true - - /lucide-react@0.364.0(react@18.2.0): - resolution: {integrity: sha512-eHfdbJExWtTaZ0tBMGtI7PA/MbqV5wt+o4/yitDce17tadH/75Gq3Tq8jSteb3LhLr0eay/j5YUuN4yXjnI3aw==} - peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 - dependencies: - react: 18.2.0 - dev: false - - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - dev: true - - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - dev: true - - /minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - dev: false - - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: true - - /minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} - engines: {node: '>=16 || 14 >=14.17'} - dev: false - - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true - - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true - - /mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - dev: false - - /nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: false - - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true - - /next@14.2.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-oGwUaa2bCs47FbuxWMpOoXtBMPYpvTPgdZr3UAo+pu7Ns00z9otmYpoeV1HEiYL06AlRQQIA/ypK526KjJfaxg==} - engines: {node: '>=18.17.0'} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.41.2 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - '@playwright/test': - optional: true - sass: - optional: true - dependencies: - '@next/env': 14.2.2 - '@swc/helpers': 0.5.5 - busboy: 1.6.0 - caniuse-lite: 1.0.30001605 - graceful-fs: 4.2.11 - postcss: 8.4.31 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(react@18.2.0) - optionalDependencies: - '@next/swc-darwin-arm64': 14.2.2 - '@next/swc-darwin-x64': 14.2.2 - '@next/swc-linux-arm64-gnu': 14.2.2 - '@next/swc-linux-arm64-musl': 14.2.2 - '@next/swc-linux-x64-gnu': 14.2.2 - '@next/swc-linux-x64-musl': 14.2.2 - '@next/swc-win32-arm64-msvc': 14.2.2 - '@next/swc-win32-ia32-msvc': 14.2.2 - '@next/swc-win32-x64-msvc': 14.2.2 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros - dev: false - - /node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - dev: false - - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: false - - /normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - dev: false - - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - /object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - dev: false - - /object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - dev: true - - /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: true - - /object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 - dev: true - - /object.entries@1.1.8: - resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - dev: true - - /object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - dev: true - - /object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - dev: true - - /object.hasown@1.1.4: - resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} - engines: {node: '>= 0.4'} - dependencies: - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - dev: true - - /object.values@1.2.0: - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - dev: true - - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - dev: true - - /optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} - dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - dev: true - - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - dependencies: - p-limit: 3.1.0 - dev: true - - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - dependencies: - callsites: 3.1.0 - dev: true - - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true - - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: true - - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - /path-scurry@1.10.2: - resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - lru-cache: 10.2.0 - minipass: 7.0.4 - dev: false - - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - dev: true - - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: false - - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - /pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - dev: false - - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - dev: false - - /possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - dev: true - - /postcss-import@15.1.0(postcss@8.4.38): - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.8 - dev: false - - /postcss-js@4.0.1(postcss@8.4.38): - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.38 - dev: false - - /postcss-load-config@4.0.2(postcss@8.4.38): - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - dependencies: - lilconfig: 3.1.1 - postcss: 8.4.38 - yaml: 2.4.1 - dev: false - - /postcss-nested@6.0.1(postcss@8.4.38): - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - dependencies: - postcss: 8.4.38 - postcss-selector-parser: 6.0.16 - dev: false - - /postcss-selector-parser@6.0.16: - resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} - engines: {node: '>=4'} - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - dev: false - - /postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - dev: false - - /postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.2.0 - dev: false - - /postcss@8.4.38: - resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.2.0 - dev: false - - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true - - /prettier-plugin-tailwindcss@0.5.13(prettier@3.2.5): - resolution: {integrity: sha512-2tPWHCFNC+WRjAC4SIWQNSOdcL1NNkydXim8w7TDqlZi+/ulZYz2OouAI6qMtkggnPt7lGamboj6LcTMwcCvoQ==} - engines: {node: '>=14.21.3'} - peerDependencies: - '@ianvs/prettier-plugin-sort-imports': '*' - '@prettier/plugin-pug': '*' - '@shopify/prettier-plugin-liquid': '*' - '@trivago/prettier-plugin-sort-imports': '*' - '@zackad/prettier-plugin-twig-melody': '*' - prettier: ^3.0 - prettier-plugin-astro: '*' - prettier-plugin-css-order: '*' - prettier-plugin-import-sort: '*' - prettier-plugin-jsdoc: '*' - prettier-plugin-marko: '*' - prettier-plugin-organize-attributes: '*' - prettier-plugin-organize-imports: '*' - prettier-plugin-sort-imports: '*' - prettier-plugin-style-order: '*' - prettier-plugin-svelte: '*' - peerDependenciesMeta: - '@ianvs/prettier-plugin-sort-imports': - optional: true - '@prettier/plugin-pug': - optional: true - '@shopify/prettier-plugin-liquid': - optional: true - '@trivago/prettier-plugin-sort-imports': - optional: true - '@zackad/prettier-plugin-twig-melody': - optional: true - prettier-plugin-astro: - optional: true - prettier-plugin-css-order: - optional: true - prettier-plugin-import-sort: - optional: true - prettier-plugin-jsdoc: - optional: true - prettier-plugin-marko: - optional: true - prettier-plugin-organize-attributes: - optional: true - prettier-plugin-organize-imports: - optional: true - prettier-plugin-sort-imports: - optional: true - prettier-plugin-style-order: - optional: true - prettier-plugin-svelte: - optional: true - dependencies: - prettier: 3.2.5 - dev: true - - /prettier@3.2.5: - resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} - engines: {node: '>=14'} - hasBin: true - dev: true - - /prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - dev: true - - /punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - dev: true - - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - /react-dom@18.2.0(react@18.2.0): - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - peerDependencies: - react: ^18.2.0 - dependencies: - loose-envify: 1.4.0 - react: 18.2.0 - scheduler: 0.23.0 - dev: false - - /react-ga4@2.1.0: - resolution: {integrity: sha512-ZKS7PGNFqqMd3PJ6+C2Jtz/o1iU9ggiy8Y8nUeksgVuvNISbmrQtJiZNvC/TjDsqD0QlU5Wkgs7i+w9+OjHhhQ==} - dev: false - - /react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - dev: true - - /react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} - dependencies: - loose-envify: 1.4.0 - dev: false - - /read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - dependencies: - pify: 2.3.0 - dev: false - - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: false - - /reflect.getprototypeof@1.0.6: - resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - globalthis: 1.0.3 - which-builtin-type: 1.1.3 - dev: true - - /regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - /regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-errors: 1.3.0 - set-function-name: 2.0.2 - dev: true - - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: true - - /resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - dev: true - - /resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - /resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - dependencies: - glob: 7.2.3 - dev: true - - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - - /safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} - engines: {node: '>=0.4'} - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - isarray: 2.0.5 - dev: true - - /safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-regex: 1.1.4 - dev: true - - /scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} - dependencies: - loose-envify: 1.4.0 - dev: false - - /semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - dev: true - - /semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - - /set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - dev: true - - /set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - dev: true - - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - /side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.1 - dev: true - - /signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - dev: false - - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: true - - /source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} - engines: {node: '>=0.10.0'} - dev: false - - /streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - dev: false - - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: false - - /string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - dev: false - - /string.prototype.matchall@4.0.11: - resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - regexp.prototype.flags: 1.5.2 - set-function-name: 2.0.2 - side-channel: 1.0.6 - dev: true - - /string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - dev: true - - /string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - dev: true - - /string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - dev: true - - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - - /strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - dependencies: - ansi-regex: 6.0.1 - dev: false - - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: true - - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true - - /styled-jsx@5.1.1(react@18.2.0): - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@babel/core': '*' - babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true - dependencies: - client-only: 0.0.1 - react: 18.2.0 - dev: false - - /sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - commander: 4.1.1 - glob: 10.3.12 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - dev: false - - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - dev: true - - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - /tailwind-merge@2.2.2: - resolution: {integrity: sha512-tWANXsnmJzgw6mQ07nE3aCDkCK4QdT3ThPMCzawoYA2Pws7vSTCvz3Vrjg61jVUGfFZPJzxEP+NimbcW+EdaDw==} - dependencies: - '@babel/runtime': 7.24.4 - dev: false - - /tailwindcss-animate@1.0.7(tailwindcss@3.4.3): - resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} - peerDependencies: - tailwindcss: '>=3.0.0 || insiders' - dependencies: - tailwindcss: 3.4.3 - dev: false - - /tailwindcss@3.4.3: - resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} - engines: {node: '>=14.0.0'} - hasBin: true - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.0 - lilconfig: 2.1.0 - micromatch: 4.0.5 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.0 - postcss: 8.4.38 - postcss-import: 15.1.0(postcss@8.4.38) - postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.2(postcss@8.4.38) - postcss-nested: 6.0.1(postcss@8.4.38) - postcss-selector-parser: 6.0.16 - resolve: 1.22.8 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - dev: false - - /tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - dev: true - - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true - - /thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - dependencies: - thenify: 3.3.1 - dev: false - - /thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - dependencies: - any-promise: 1.3.0 - dev: false - - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - - /ts-api-utils@1.3.0(typescript@5.1.6): - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - dependencies: - typescript: 5.1.6 - dev: true - - /ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - dev: false - - /tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - dev: true - - /tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - dev: false - - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - dev: true - - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true - - /typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-typed-array: 1.1.13 - dev: true - - /typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - dev: true - - /typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - dev: true - - /typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - possible-typed-array-names: 1.0.0 - dev: true - - /typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} - engines: {node: '>=14.17'} - hasBin: true - - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - dependencies: - call-bind: 1.0.7 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - dev: true - - /update-browserslist-db@1.0.13(browserslist@4.23.0): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.23.0 - escalade: 3.1.2 - picocolors: 1.0.0 - dev: false - - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - dependencies: - punycode: 2.3.1 - dev: true - - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: false - - /which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - dev: true - - /which-builtin-type@1.1.3: - resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} - engines: {node: '>= 0.4'} - dependencies: - function.prototype.name: 1.1.6 - has-tostringtag: 1.0.2 - is-async-function: 2.0.0 - is-date-object: 1.0.5 - is-finalizationregistry: 1.0.2 - is-generator-function: 1.0.10 - is-regex: 1.1.4 - is-weakref: 1.0.2 - isarray: 2.0.5 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.2 - which-typed-array: 1.1.15 - dev: true - - /which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} - dependencies: - is-map: 2.0.3 - is-set: 2.0.3 - is-weakmap: 2.0.2 - is-weakset: 2.0.3 - dev: true - - /which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - dev: true - - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: false - - /wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - dev: false - - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true - - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true - - /yaml@2.4.1: - resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==} - engines: {node: '>= 14'} - hasBin: true - dev: false - - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: true From a6a8480b0f7a45442766fc8341e16893b5cb19e5 Mon Sep 17 00:00:00 2001 From: Mauricio Siu Date: Fri, 28 Nov 2025 02:47:09 -0600 Subject: [PATCH 19/39] chore: remove unused translation files and dependencies to simplify codebase --- apps/website/app/[locale]/_changelog/page.tsx | 15 +- apps/website/app/[locale]/privacy/page.tsx | 8 + apps/website/app/[locale]/terms/page.tsx | 8 + apps/website/app/blog/[slug]/page.tsx | 8 +- apps/website/app/blog/page.tsx | 32 +-- apps/website/app/blog/tag/[tag]/page.tsx | 24 +- apps/website/app/contact/layout.tsx | 13 + apps/website/app/layout.tsx | 45 +-- apps/website/app/page.tsx | 6 + apps/website/components/CallToAction.tsx | 8 +- apps/website/components/Faqs.tsx | 80 +++--- apps/website/components/Hero.tsx | 62 ++-- apps/website/components/SecondaryFeatures.tsx | 40 ++- apps/website/components/pricing.tsx | 228 ++++++++------- .../website/components/secondary-features.tsx | 54 ++-- apps/website/components/sponsors.tsx | 6 +- apps/website/lib/intl.ts | 22 -- apps/website/locales/en.json | 272 ------------------ apps/website/package.json | 1 - pnpm-lock.yaml | 77 ----- 20 files changed, 331 insertions(+), 678 deletions(-) create mode 100644 apps/website/app/contact/layout.tsx delete mode 100644 apps/website/lib/intl.ts delete mode 100644 apps/website/locales/en.json diff --git a/apps/website/app/[locale]/_changelog/page.tsx b/apps/website/app/[locale]/_changelog/page.tsx index f6b1b6d..7eb23ee 100644 --- a/apps/website/app/[locale]/_changelog/page.tsx +++ b/apps/website/app/[locale]/_changelog/page.tsx @@ -1,4 +1,10 @@ // import { ScrollArea } from "@/components/ui/scroll-area"; +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Changelog", + description: "Stay updated with the latest changes, improvements, and features in Dokploy", +}; // Datos de ejemplo del changelog const changelogEntries = [ @@ -57,7 +63,7 @@ const changelogEntries = [ }, ]; -const Comp = () => { +export default function ChangelogPage() { return (

); -}; +} + +// Unused/old version below +// const Comp = () => { +// ... +// }; // export default function Changelog() { // return ( diff --git a/apps/website/app/[locale]/privacy/page.tsx b/apps/website/app/[locale]/privacy/page.tsx index a87d611..c28c800 100644 --- a/apps/website/app/[locale]/privacy/page.tsx +++ b/apps/website/app/[locale]/privacy/page.tsx @@ -1,3 +1,11 @@ +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Privacy Policy", + description: + "Learn about how Dokploy collects, uses, and safeguards your personal information when you use our website and services.", +}; + export default function Home() { return (
diff --git a/apps/website/app/[locale]/terms/page.tsx b/apps/website/app/[locale]/terms/page.tsx index ddaa103..556c673 100644 --- a/apps/website/app/[locale]/terms/page.tsx +++ b/apps/website/app/[locale]/terms/page.tsx @@ -1,3 +1,11 @@ +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Terms and Conditions", + description: + "Read the terms and conditions for using Dokploy's website and services.", +}; + export default function Home() { return (
diff --git a/apps/website/app/blog/[slug]/page.tsx b/apps/website/app/blog/[slug]/page.tsx index 1907a88..03e63cf 100644 --- a/apps/website/app/blog/[slug]/page.tsx +++ b/apps/website/app/blog/[slug]/page.tsx @@ -17,7 +17,6 @@ import { CodeBlock } from "./components/CodeBlock"; import { H1, H2, H3 } from "./components/Headings"; import { TableOfContents } from "./components/TableOfContents"; import { ZoomableImage } from "./components/ZoomableImage"; -import { useTranslations } from "@/lib/intl"; type Props = { params: { slug: string }; @@ -72,7 +71,6 @@ export async function generateMetadata( export default async function BlogPostPage({ params }: Props) { const { slug } = await params; - const t = useTranslations("blog"); const post = await getPost(slug); const allPosts = await getPosts(); @@ -233,7 +231,7 @@ export default async function BlogPostPage({ params }: Props) { clipRule="evenodd" /> - {t("backToBlog")} + Back to Blog
@@ -313,7 +311,7 @@ export default async function BlogPostPage({ params }: Props) { {post.tags && post.tags.length > 0 && (
-

{t("tags")}

+

Tags

{post.tags.map((tag) => ( 0 && (
-

{t("relatedPosts")}

+

Related Posts

{relatedPosts.map((relatedPost) => { const relatedPostDate = new Date( diff --git a/apps/website/app/blog/page.tsx b/apps/website/app/blog/page.tsx index 195108a..e389b29 100644 --- a/apps/website/app/blog/page.tsx +++ b/apps/website/app/blog/page.tsx @@ -5,7 +5,6 @@ import type { Metadata } from "next"; import Link from "next/link"; import { BlogPostCard } from "./components/BlogPostCard"; import { SearchAndFilter } from "./components/SearchAndFilter"; -import { useTranslations } from "@/lib/intl"; interface Tag { id: string; @@ -14,7 +13,7 @@ interface Tag { } export const metadata: Metadata = { - title: "Blog | Dokploy", + title: "Blog", description: "Latest news, updates, and articles from Dokploy", }; @@ -24,7 +23,6 @@ export default async function BlogPage({ searchParams: { [key: string]: string | string[] | undefined }; }) { const searchParams2 = await searchParams; - const t = useTranslations("blog"); const posts = await getPosts(); const tags = (await getTags()) as Tag[]; const search = @@ -61,21 +59,21 @@ export default async function BlogPage({
- + - {filteredPosts.length === 0 ? ( -
-

- {search || selectedTag ? t("noResults") : t("noPosts")} -

-
- ) : ( + {filteredPosts.length === 0 ? ( +
+

+ {search || selectedTag ? "No posts found matching your criteria" : "No posts available"} +

+
+ ) : (
{filteredPosts.map((post: Post) => ( diff --git a/apps/website/app/blog/tag/[tag]/page.tsx b/apps/website/app/blog/tag/[tag]/page.tsx index a1aeb84..1fd1913 100644 --- a/apps/website/app/blog/tag/[tag]/page.tsx +++ b/apps/website/app/blog/tag/[tag]/page.tsx @@ -4,7 +4,6 @@ import type { Metadata } from "next"; import Image from "next/image"; import Link from "next/link"; import { notFound } from "next/navigation"; -import { useTranslations } from "@/lib/intl"; type Props = { params: { tag: string }; @@ -12,11 +11,21 @@ type Props = { export async function generateMetadata({ params }: Props): Promise { const { tag } = await params; - const t = useTranslations("blog"); + const posts = await getPostsByTag(tag); + + if (!posts || posts.length === 0) { + return { + title: "Tag Not Found", + description: "The requested tag could not be found", + }; + } + + const tagName = + posts[0].tags?.find((t: { slug: string }) => t.slug === tag)?.name || tag; return { - title: `${t("tagTitle", { tag })}`, - description: t("tagDescription", { tag }), + title: `${tagName} Posts`, + description: `Browse all posts tagged with ${tagName}`, }; } @@ -27,7 +36,6 @@ export async function generateStaticParams() { export default async function TagPage({ params }: Props) { const { tag } = await params; - const t = useTranslations("blog"); const posts = await getPostsByTag(tag); if (!posts || posts.length === 0) { @@ -55,16 +63,16 @@ export default async function TagPage({ params }: Props) { clipRule="evenodd" /> - {t("backToBlog")} + Back to Blog

- {t("postsTaggedWith")}{" "} + Posts tagged with{" "} "{tagName}"

- {t("foundPosts", { count: posts.length })} + {posts.length} {posts.length === 1 ? 'post' : 'posts'} found

diff --git a/apps/website/app/contact/layout.tsx b/apps/website/app/contact/layout.tsx new file mode 100644 index 0000000..fab9665 --- /dev/null +++ b/apps/website/app/contact/layout.tsx @@ -0,0 +1,13 @@ +import type { Metadata } from "next"; +import type { ReactNode } from "react"; + +export const metadata: Metadata = { + title: "Contact Us", + description: + "Get in touch with our team. We're here to help with any questions about Dokploy.", +}; + +export default function ContactLayout({ children }: { children: ReactNode }) { + return <>{children}; +} + diff --git a/apps/website/app/layout.tsx b/apps/website/app/layout.tsx index 6ac6010..95991aa 100644 --- a/apps/website/app/layout.tsx +++ b/apps/website/app/layout.tsx @@ -12,27 +12,30 @@ type Props = { children: ReactNode; }; -// export const metadata: Metadata = { -// metadataBase: new URL("https://dokploy.com"), -// title: "Dokploy - Deploy your applications with ease", -// description: "Deploy your applications with ease using Dokploy", -// icons: { -// icon: "icon.svg", -// apple: "apple-touch-icon.png", -// }, -// openGraph: { -// title: "Dokploy - Deploy your applications with ease", -// description: "Deploy your applications with ease using Dokploy", -// images: "favicon.ico", -// type: "website", -// }, -// twitter: { -// card: "summary_large_image", -// title: "Dokploy - Deploy your applications with ease", -// description: "Deploy your applications with ease using Dokploy", -// images: ["/og.png"], -// }, -// }; +export const metadata: Metadata = { + metadataBase: new URL("https://dokploy.com"), + title: { + default: "Dokploy - Deploy your applications with ease", + template: "%s | Dokploy", + }, + description: "Deploy your applications with ease using Dokploy", + icons: { + icon: "icon.svg", + apple: "apple-touch-icon.png", + }, + openGraph: { + title: "Dokploy - Deploy your applications with ease", + description: "Deploy your applications with ease using Dokploy", + images: "/og.png", + type: "website", + }, + twitter: { + card: "summary_large_image", + title: "Dokploy - Deploy your applications with ease", + description: "Deploy your applications with ease using Dokploy", + images: ["/og.png"], + }, +}; const inter = Inter({ subsets: ["latin"], display: "swap", diff --git a/apps/website/app/page.tsx b/apps/website/app/page.tsx index 37c0216..3ed6fad 100644 --- a/apps/website/app/page.tsx +++ b/apps/website/app/page.tsx @@ -7,6 +7,12 @@ import { Pricing } from "@/components/pricing"; import { SecondaryFeaturesSections } from "@/components/secondary-features"; import { Sponsors } from "@/components/sponsors"; import { StatsSection } from "@/components/stats"; +import type { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Dokploy | Deploy your applications with ease", + description: "Open-source self-hostable Platform as a Service (PaaS) that simplifies the deployment and management of applications and databases", +}; export default function Home() { return ( diff --git a/apps/website/components/CallToAction.tsx b/apps/website/components/CallToAction.tsx index 294eff7..f35b917 100644 --- a/apps/website/components/CallToAction.tsx +++ b/apps/website/components/CallToAction.tsx @@ -1,10 +1,8 @@ import { Container } from "@/components/Container"; -import { useTranslations } from "@/lib/intl"; import Link from "next/link"; import { Button } from "./ui/button"; export function CallToAction() { - const t = useTranslations("HomePage"); return (

- {t("callToAction.title")} + Unlock Your Deployment Potential with Dokploy Cloud

- {t("callToAction.des")} + Say goodbye to infrastructure hassles—Dokploy Cloud handles it all. Effortlessly deploy, manage Docker containers, and secure your traffic with Traefik. Focus on building, we'll handle the rest.

diff --git a/apps/website/components/Faqs.tsx b/apps/website/components/Faqs.tsx index 6340ead..d62c30e 100644 --- a/apps/website/components/Faqs.tsx +++ b/apps/website/components/Faqs.tsx @@ -4,82 +4,80 @@ import { AccordionItem, AccordionTrigger, } from "@/components/ui/accordion"; -import { useTranslations } from "@/lib/intl"; import { Container } from "./Container"; const faqs = [ { - question: "faq.q1", - answer: "faq.a1", + question: "What is Dokploy?", + answer: "Dokploy is a stable, easy-to-use deployment solution designed to simplify the application management process. Think of Dokploy as a free alternative self-hostable solution to platforms like Heroku, Vercel, and Netlify.", }, { - question: "faq.q11", - answer: "faq.a11", + question: "How does Dokploy's Open Source plan work?", + answer: "You can host Dokploy UI on your own infrastructure and you will be responsible for the maintenance and updates.", }, { - question: "faq.q12", - answer: "faq.a12", + question: "Do I need to provide my own server for the managed plan?", + answer: "Yes, in the managed plan, you provide your own server e.g. (Hetzner, Hostinger, AWS, ETC.) VPS, and we manage the Dokploy UI infrastructure for you.", }, { - question: "faq.q13", - answer: "faq.a13", + question: "What happens if I need more than one server?", + answer: "The first server costs $4.50/month, if you buy more than one it will be $3.50/month per server.", }, { - question: "faq.q14", - answer: "faq.a14", + question: "Is there a limit on the number of deployments?", + answer: "No, there is no limit on the number of deployments in any of the plans.", }, { - question: "faq.q15", - answer: "faq.a15", + question: "What happens if I exceed my purchased server limit?", + answer: "The most recently added servers will be deactivated. You won't be able to create services on inactive servers until they are reactivated.", }, { - question: "faq.q17", - answer: "faq.a17", + question: "What kind of support do you offer?", + answer: "We offer community support for the open source version and priority support for paid plans (Via Discord or Email at support@dokploy.com).", }, { - question: "faq.q18", - answer: "faq.a18", + question: "What's the catch on the Paid Plan?", + answer: "Nothing, you link your server(VPS) to your account and you can deploy unlimited applications, databases, and users and you get unlimited updates, deployments, backups and more.", }, { - question: "faq.q2", - answer: "faq.a2", + question: "Why Choose Dokploy?", + answer: "Dokploy offers simplicity, flexibility, and speed in application deployment and management.", }, { - question: "faq.q4", - answer: "faq.a4", + question: "Is it open source?", + answer: "Yes, Dokploy is open source and free to use.", }, { - question: "faq.q5", - answer: "faq.a5", + question: "What types of languages can I deploy with Dokploy?", + answer: "Dokploy does not restrict programming languages. You are free to choose your preferred language and framework.", }, { - question: "faq.q6", - answer: "faq.a6", + question: "How do I request a feature or report a bug?", + answer: "To request a feature or report a bug, please create an issue on our GitHub repository or ask in our Discord channel.", }, { - question: "faq.q7", - answer: "faq.a7", + question: "Do you track the usage of Dokploy?", + answer: "No, we don't track any usage data.", }, { - question: "faq.q8", - answer: "faq.a8", + question: "Are there any user forums or communities where I can interact with other users?", + answer: "Yes, we have active GitHub discussions and Discord where you can share ideas, ask for help, and connect with other users.", }, { - question: "faq.q16", - answer: "faq.a16", + question: "Do you offer a refunds?", + answer: "We do not offer refunds. However, you can cancel your subscription at any time. Feel free to try our open-source version for free before making a purchase.", }, { - question: "faq.q9", - answer: "faq.a9", + question: "What types of applications can I deploy with Dokploy?", + answer: "You can deploy any application that can be Dockerized, with no limits. Dokploy supports builds from Git repositories, Dockerfiles, Nixpacks, and Buildpacks like Heroku and Paketo.", }, { - question: "faq.q10", - answer: "faq.a10", + question: "How does Dokploy handle database management?", + answer: "Dokploy supports multiple database systems including Postgres, MySQL, MariaDB, MongoDB, and Redis, providing tools for easy deployment and management and backups directly from the dashboard.", }, ]; export function Faqs() { - const t = useTranslations("HomePage"); return (
- {t("faq.title")} + Frequently asked questions

- {t("faq.des")} + If you can't find what you're looking for, please submit an issue through our GitHub repository or ask questions on our Discord.

@@ -104,12 +102,12 @@ export function Faqs() { collapsible className="w-full max-w-3xl mx-auto" > - {faqs.map((column, columnIndex) => ( + {faqs.map((faq, columnIndex) => ( - {t(column.question)} + {faq.question} - {t(column.answer)} + {faq.answer} ))} diff --git a/apps/website/components/Hero.tsx b/apps/website/components/Hero.tsx index d4abf53..65bb4d1 100644 --- a/apps/website/components/Hero.tsx +++ b/apps/website/components/Hero.tsx @@ -2,7 +2,6 @@ import { cn } from "@/lib/utils"; import { motion } from "framer-motion"; import { Check, ChevronRight, Copy } from "lucide-react"; -import { useTranslations } from "@/lib/intl"; import Link from "next/link"; import { useEffect, useState } from "react"; import AnimatedGradientText from "./ui/animated-gradient-text"; @@ -43,7 +42,6 @@ import HeroVideoDialog from "./ui/hero-video-dialog"; // }; export function Hero() { - const t = useTranslations("HomePage"); const [isCopied, setIsCopied] = useState(false); useEffect(() => { @@ -72,41 +70,41 @@ export function Hero() { "inline animate-gradient bg-gradient-to-r from-[#ffaa40] via-[#9c40ff] to-[#ffaa40] bg-[length:var(--bg-size)_100%] bg-clip-text text-transparent", )} > - {t("hero.cloud")} + Introducing Dokploy Cloud
- - {t("hero.deploy")}{" "} - - - {t("hero.anywhere")} - {" "} - {t("hero.with")} - - - {t("hero.des")} - + + Deploy{" "} + + + Anywhere + {" "} + with Total Freedom and Ease. + + + Streamline your operations with our all-in-one platform — perfect for managing projects, data, and system health with simplicity and efficiency. + - {t("navigation.discord")} + Discord
diff --git a/apps/website/components/SecondaryFeatures.tsx b/apps/website/components/SecondaryFeatures.tsx index 284a54f..944b3eb 100644 --- a/apps/website/components/SecondaryFeatures.tsx +++ b/apps/website/components/SecondaryFeatures.tsx @@ -4,10 +4,9 @@ import { cn } from "@/lib/utils"; import { Tab } from "@headlessui/react"; import { motion } from "framer-motion"; import { Layers, Terminal, Users } from "lucide-react"; -import { useTranslations } from "@/lib/intl"; import { Container } from "./Container"; interface Feature { - name: React.ReactNode; + name: string; summary: string; description: string; image: string; @@ -16,9 +15,9 @@ interface Feature { const features: Array = [ { - name: "secondaryFeatures.templates", - summary: "secondaryFeatures.templatesSummary", - description: "secondaryFeatures.templatesDes", + name: "Open Source Templates", + summary: "One click to deploy open source templates.", + description: "Deploy open source templates with one click, powered by Docker Compose, (Plausible, Calcom, Pocketbase, etc.)", image: "/secondary/templates.png", icon: function ReportingIcon() { return ( @@ -29,9 +28,9 @@ const features: Array = [ }, }, { - name: "secondaryFeatures.traefik", - summary: "secondaryFeatures.traefikSummary", - description: "secondaryFeatures.traefikDes", + name: "Real-Time Traefik Configuration", + summary: "Modify Traefik settings on-the-fly via a graphical interface or API.", + description: "Users can adjust Traefik's configuration, including middleware, forwarding rules, and SSL certificates through an intuitive interface or API. This feature enables seamless traffic routing and security adjustments without the need to restart services", image: "/secondary/traefik.png", icon: function ReportingIcon() { return ( @@ -215,9 +214,9 @@ const features: Array = [ }, }, { - name: "secondaryFeatures.users", - summary: "secondaryFeatures.usersSummary", - description: "secondaryFeatures.usersDes", + name: "User Permission Management", + summary: "Detailed control over user permissions for accessing and managing projects and services.", + description: "Allows administrators to define specific roles and permissions for each user, including the ability to create, modify, or delete applications and databases. This feature ensures secure and efficient management of large and diverse teams.", image: "/secondary/users.png", icon: function InventoryIcon() { return ( @@ -228,9 +227,9 @@ const features: Array = [ }, }, { - name: "secondaryFeatures.terminal", - summary: "secondaryFeatures.terminalSummary", - description: "secondaryFeatures.terminalDes", + name: "Terminal Access", + summary: "Direct access to each container's and server terminal for advanced management.", + description: "Provides an interface to access the command line of any active container, allowing developers to execute commands, manage services, and troubleshoot directly from the dashboard", image: "/secondary/terminal.png", icon: function ContactsIcon() { return ( @@ -251,7 +250,6 @@ function Feature({ feature: Feature; isActive: boolean; }) { - const t = useTranslations("HomePage"); return (

- {t(feature.summary)} + {feature.summary}

- {t(feature.description)} + {feature.description}

); @@ -322,7 +320,6 @@ function FeaturesMobile() { } function FeaturesDesktop() { - const t = useTranslations("HomePage"); return ( {({ selectedIndex }) => ( @@ -336,7 +333,7 @@ function FeaturesDesktop() { name: ( - {t(feature.name)} + {feature.name} ), }} @@ -380,7 +377,6 @@ function FeaturesDesktop() { } export function SecondaryFeatures() { - const t = useTranslations("HomePage"); return (

- {t("secondaryFeatures.title")} + Advanced Management Tools

- {t("secondaryFeatures.des")} + Elevate your infrastructure with tools that offer precise control, detailed monitoring, and enhanced security, ensuring seamless management and robust performance.

diff --git a/apps/website/components/pricing.tsx b/apps/website/components/pricing.tsx index a628543..f7db9bd 100644 --- a/apps/website/components/pricing.tsx +++ b/apps/website/components/pricing.tsx @@ -11,7 +11,6 @@ import { X, XCircleIcon, } from "lucide-react"; -import { useTranslations } from "@/lib/intl"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { useState } from "react"; @@ -85,7 +84,6 @@ export const calculatePrice = (count: number, isAnnual = false) => { export function Pricing() { const router = useRouter(); - const t = useTranslations("Pricing"); const [isAnnual, setIsAnnual] = useState(false); const [serverQuantity, setServerQuantity] = useState(1); const featured = true; @@ -119,12 +117,12 @@ export function Pricing() {

- {t("swirlyDoodleTitle")} + Simple & Affordable, {" "} - {t("restTitle")} + Pricing.

- {t("description")} + Deploy Smarter, Scale Faster – Without Breaking the Bank

@@ -137,10 +135,10 @@ export function Pricing() { > - {t("billingCycle.monthly")} + Monthly - {t("billingCycle.annual")} + Annual @@ -153,69 +151,69 @@ export function Pricing() { : "lg:py-8", )} > -
-

- {t("plan.free.title")} -

- | -

- {t("plan.free.subTitle")} -

-
- -

- {t("plan.free.section.title")} -

-

- {t("plan.free.section.description")} +

+

+ Free

+ | +

+ Open Source +

+
-
    - {[ - t("plan.free.features.f1"), - t("plan.free.features.f2"), - t("plan.free.features.f3"), - t("plan.free.features.f4"), - t("plan.free.features.f5"), - ].map((feature) => ( -
  • - - {feature} -
  • - ))} -
  • - - - Remote Servers Monitoring - +

    + Dokploy Open Source +

    +

    + Manage your own infrastructure, installing Dokploy UI on your own server. +

    + +
      + {[ + "Complete Flexibility: Install Dokploy UI on your own infrastructure", + "Self-hosted Infrastructure", + "Community Support", + "Access to Core Features", + "Access to All Updates", + ].map((feature) => ( +
    • + + {feature}
    • -
    -
    -
    - - {t("plan.free.features.f9")} - - - {t("plan.free.go")}{" "} - - -
    + ))} +
  • + + + Remote Servers Monitoring + +
  • +
+
+
+ + Unlimited Servers + + + Installation{" "} + +
+
- {isAnnual && ( -
- {t("plan.cloud.title")} 🚀 -
- )} + > + {isAnnual && ( +
+ Recommended 🚀 +
+ )} {isAnnual ? (
@@ -251,50 +249,48 @@ export function Pricing() { $ {calculatePrice(serverQuantity, isAnnual).toFixed(2)} USD

)} -

- {t("plan.cloud.section.title")} -

-

- {t("plan.cloud.section.description")} -

+

+ Dokploy Plan +

+

+ to manage Dokploy UI infrastructure, we take care of it for you. +

-
    - {[ - t("plan.cloud.features.f1"), - t("plan.cloud.features.f2"), - t("plan.cloud.features.f3"), - t("plan.cloud.features.f4"), - t("plan.cloud.features.f5"), - t("plan.cloud.features.f6"), - t("plan.cloud.features.f7"), - ].map((feature, index) => ( -
  • - - {feature} -
  • - ))} -
-
-
- - {t("plan.cloud.servers", { - serverQuantity, - })} - +
    + {[ + "Managed Hosting: No need to manage your own servers", + "Unlimited Deployments", + "Unlimited Databases", + "Unlimited Applications", + "Unlimited Users", + "Remote Servers Monitoring", + "Priority Support", + ].map((feature, index) => ( +
  • + + {feature} +
  • + ))} +
+
+
+ + {serverQuantity} Servers (You bring the servers) + setOpenVideo(true)}> @@ -366,7 +362,7 @@ export function Pricing() { className: "w-full", })} > - {t("plan.cloud.go")} + Subscribe
diff --git a/apps/website/components/secondary-features.tsx b/apps/website/components/secondary-features.tsx index 0c83edc..a8c5264 100644 --- a/apps/website/components/secondary-features.tsx +++ b/apps/website/components/secondary-features.tsx @@ -5,53 +5,51 @@ import { AnimatePresence, motion } from "framer-motion"; import { useEffect, useState } from "react"; import { cn } from "@/lib/utils"; -import { useTranslations } from "@/lib/intl"; const features = [ { - title: "primaryFeatures.applications", - description: "primaryFeatures.applicationsDes", + title: "Applications & Databases", + description: "Centralize control over your applications and databases for enhanced security and efficiency, simplifying access and management across your infrastructure.", image: "/dashboard.png", }, { - title: "primaryFeatures.compose", - description: "primaryFeatures.composeDes", + title: "Docker Compose", + description: "Native Docker Compose support for manage complex applications and services with ease.", image: "/compose.png", }, { - title: "primaryFeatures.multiserver", - description: "primaryFeatures.multiserverDes", + title: "Multiserver", + description: "Deploy applications to multiple servers without effort.", image: "/remote.png", }, { - title: "primaryFeatures.logs", - description: "primaryFeatures.logsDes", + title: "Logs", + description: "Monitor and manage your applications' logs with ease, ensuring efficient troubleshooting and optimal performance.", image: "/logs.png", }, { - title: "primaryFeatures.monitoring", - description: "primaryFeatures.monitoringDes", + title: "Monitoring", + description: "Monitor your systems' performance and health in real time, ensuring continuous and uninterrupted operation.", image: "/primary/monitoring.png", }, { - title: "primaryFeatures.backups", - description: "primaryFeatures.backupsDes", + title: "Backups", + description: "Implement automatic and secure backup solutions to protect your critical data and restore it quickly when necessary.", image: "/backups.png", }, { - title: "primaryFeatures.traefik", - description: "primaryFeatures.traefikDes", + title: "Traefik", + description: "Manage traefik via File Editor to configure your own domain names, certificates, and more.", image: "/traefik.png", }, { - title: "primaryFeatures.templates", - description: "primaryFeatures.templatesDes", + title: "Templates", + description: "One click to deploy open source templates.", image: "/templates.png", }, ]; export function SecondaryFeaturesSections() { - const t = useTranslations("HomePage"); const [tabOrientation, setTabOrientation] = useState< "horizontal" | "vertical" >("horizontal"); @@ -84,23 +82,13 @@ export function SecondaryFeaturesSections() { aria-label="Features for running your books" className="relative overflow-hidden bg-black pb-28 pt-20 sm:py-32" > - {/*
*/} - - {/* */}

- {t("primaryFeatures.title")} + Comprehensive Control for Your Digital Ecosystem

- {t("primaryFeatures.des")} + Simplify your project and data management, ensure robust monitoring, and secure your backups—all without the fuss over minute details.

- {t(feature.title)} + {feature.title} ))} @@ -168,7 +156,7 @@ export function SecondaryFeaturesSections() {

- {t(feature.description)} + {feature.description}

diff --git a/apps/website/components/sponsors.tsx b/apps/website/components/sponsors.tsx index b647979..abcbbb4 100644 --- a/apps/website/components/sponsors.tsx +++ b/apps/website/components/sponsors.tsx @@ -1,6 +1,5 @@ "use client"; import { PlusCircleIcon } from "lucide-react"; -import { useTranslations } from "@/lib/intl"; import Link from "next/link"; import { buttonVariants } from "./ui/button"; import Ripple from "./ui/ripple"; @@ -12,15 +11,14 @@ import { } from "./ui/tooltip"; export const Sponsors = () => { - const t = useTranslations("HomePage"); return (

- {t("hero.sponsors.title")} + Sponsors

- {t("hero.sponsors.description")} + Dokploy is an open source project that is maintained by a community of volunteers. We would like to thank our sponsors for their support and contributions to the project, which help us to continue to develop and improve Dokploy.

diff --git a/apps/website/lib/intl.ts b/apps/website/lib/intl.ts deleted file mode 100644 index 6e6ae6f..0000000 --- a/apps/website/lib/intl.ts +++ /dev/null @@ -1,22 +0,0 @@ -import en from "../locales/en.json"; - -type Messages = typeof en; - -function getByPath(obj: any, path: string): any { - return path - .split(".") - .reduce((acc, key) => (acc ? acc[key] : undefined), obj); -} - -export function useTranslations(namespace?: keyof Messages | string) { - return (key: string, params?: Record) => { - const fullKey = namespace ? `${namespace}.${key}` : key; - let value = getByPath(en as any, fullKey); - if (typeof value === "string" && params) { - for (const [k, v] of Object.entries(params)) { - value = value.replaceAll(`{${k}}`, String(v)); - } - } - return value ?? fullKey; - }; -} diff --git a/apps/website/locales/en.json b/apps/website/locales/en.json deleted file mode 100644 index c3e5d8a..0000000 --- a/apps/website/locales/en.json +++ /dev/null @@ -1,272 +0,0 @@ -{ - "HomePage": { - "navigation": { - "features": "Features", - "faqs": "FAQ", - "docs": "Docs", - "pricing": "Pricing", - "support": "Support", - "dashboard": "Sign In", - "discord": "Discord", - "i18nButtonPlaceholder": "Language", - "i18nFr": "Français", - "i18nEn": "English", - "i18nEs": "Español", - "i18nZh-Hans": "简体中文", - "blog": "Blog", - "home": "Home", - "login": "Login", - "register": "Register", - "contact": "Contact" - }, - "hero": { - "cloud": "Introducing Dokploy Cloud", - "deploy": "Deploy", - "anywhere": "Anywhere", - "with": "with Total Freedom and Ease.", - "des": "Streamline your operations with our all-in-one platform — perfect for managing projects, data, and system health with simplicity and efficiency.", - "featuredIn": "Featured in", - "sponsors": { - "title": "Sponsors", - "description": "Dokploy is an open source project that is maintained by a community of volunteers. We would like to thank our sponsors for their support and contributions to the project, which help us to continue to develop and improve Dokploy.", - "level": { - "hero": "Hero Sponsors", - "premium": "Premium Supporters", - "supporting": "Supporting Members", - "community": "Community Backers", - "organizations": "Organizations", - "individuals": "Individuals" - } - } - }, - "primaryFeatures": { - "title": "Comprehensive Control for Your Digital Ecosystem", - "des": "Simplify your project and data management, ensure robust monitoring, and secure your backups—all without the fuss over minute details.", - "projects": "Projects", - "templates": "Templates", - "templatesDes": "One click to deploy open source templates.", - "logs": "Logs", - "logsDes": "Monitor and manage your applications' logs with ease, ensuring efficient troubleshooting and optimal performance.", - "projectsDes": "Manage and organize all your projects in one place, keeping detailed track of progress and resource allocation.", - "applications": "Applications & Databases", - "applicationsDes": "Centralize control over your applications and databases for enhanced security and efficiency, simplifying access and management across your infrastructure.", - "compose": "Docker Compose", - "composeDes": "Native Docker Compose support for manage complex applications and services with ease.", - "multiserver": "Multiserver", - "multiserverDes": "Deploy applications to multiple servers without effort.", - "monitoring": "Monitoring", - "monitoringDes": "Monitor your systems' performance and health in real time, ensuring continuous and uninterrupted operation.", - "backups": "Backups", - "backupsDes": "Implement automatic and secure backup solutions to protect your critical data and restore it quickly when necessary.", - "traefik": "Traefik", - "traefikDes": "Manage traefik via File Editor to configure your own domain names, certificates, and more." - }, - "secondaryFeatures": { - "title": "Advanced Management Tools", - "des": "Elevate your infrastructure with tools that offer precise control, detailed monitoring, and enhanced security, ensuring seamless management and robust performance.", - "templates": "Open Source Templates", - "templatesSummary": "One click to deploy open source templates.", - "templatesDes": "Deploy open source templates with one click, powered by Docker Compose, (Plausible, Calcom, Pocketbase, etc.)", - "traefik": "Real-Time Traefik Configuration", - "traefikSummary": "Modify Traefik settings on-the-fly via a graphical interface or API.", - "traefikDes": "Users can adjust Traefik's configuration, including middleware, forwarding rules, and SSL certificates through an intuitive interface or API. This feature enables seamless traffic routing and security adjustments without the need to restart services", - "users": "User Permission Management", - "usersSummary": "Detailed control over user permissions for accessing and managing projects and services.", - "usersDes": "Allows administrators to define specific roles and permissions for each user, including the ability to create, modify, or delete applications and databases. This feature ensures secure and efficient management of large and diverse teams.", - "terminal": "Terminal Access", - "terminalSummary": "Direct access to each container's and server terminal for advanced management.", - "terminalDes": "Provides an interface to access the command line of any active container, allowing developers to execute commands, manage services, and troubleshoot directly from the dashboard" - }, - "callToAction": { - "title": "Unlock Your Deployment Potential with Dokploy Cloud", - "des": "Say goodbye to infrastructure hassles—Dokploy Cloud handles it all. Effortlessly deploy, manage Docker containers, and secure your traffic with Traefik. Focus on building, we'll handle the rest.", - "button": "Get Started Now" - }, - "faq": { - "title": "Frequently asked questions", - "des": "If you can't find what you're looking for, please submit an issue through our GitHub repository or ask questions on our Discord.", - "q1": "What is Dokploy?", - "a1": "Dokploy is a stable, easy-to-use deployment solution designed to simplify the application management process. Think of Dokploy as a free alternative self-hostable solution to platforms like Heroku, Vercel, and Netlify.", - "q2": "Why Choose Dokploy?", - "a2": "Dokploy offers simplicity, flexibility, and speed in application deployment and management.", - "q4": "Is it open source?", - "a4": "Yes, Dokploy is open source and free to use.", - "q5": "What types of languages can I deploy with Dokploy?", - "a5": "Dokploy does not restrict programming languages. You are free to choose your preferred language and framework.", - "q6": "How do I request a feature or report a bug?", - "a6": "To request a feature or report a bug, please create an issue on our GitHub repository or ask in our Discord channel.", - "q7": "Do you track the usage of Dokploy?", - "a7": "No, we don't track any usage data.", - "q8": "Are there any user forums or communities where I can interact with other users?", - "a8": "Yes, we have active GitHub discussions and Discord where you can share ideas, ask for help, and connect with other users.", - "q9": "What types of applications can I deploy with Dokploy?", - "a9": "You can deploy any application that can be Dockerized, with no limits. Dokploy supports builds from Git repositories, Dockerfiles, Nixpacks, and Buildpacks like Heroku and Paketo.", - "q10": "How does Dokploy handle database management?", - "a10": "Dokploy supports multiple database systems including Postgres, MySQL, MariaDB, MongoDB, and Redis, providing tools for easy deployment and management and backups directly from the dashboard.", - "q11": "How does Dokploy's Open Source plan work?", - "a11": "You can host Dokploy UI on your own infrastructure and you will be responsible for the maintenance and updates.", - "q12": "Do I need to provide my own server for the managed plan?", - "a12": "Yes, in the managed plan, you provide your own server e.g. (Hetzner, Hostinger, AWS, ETC.) VPS, and we manage the Dokploy UI infrastructure for you.", - "q13": "What happens if I need more than one server?", - "a13": "The first server costs $4.50/month, if you buy more than one it will be $3.50/month per server.", - "q14": "Is there a limit on the number of deployments?", - "a14": "No, there is no limit on the number of deployments in any of the plans.", - "q15": "What happens if I exceed my purchased server limit?", - "a15": "The most recently added servers will be deactivated. You won't be able to create services on inactive servers until they are reactivated.", - "q16": "Do you offer a refunds?", - "a16": "We do not offer refunds. However, you can cancel your subscription at any time. Feel free to try our open-source version for free before making a purchase.", - "q17": "What kind of support do you offer?", - "a17": "We offer community support for the open source version and priority support for paid plans (Via Discord or Email at support@dokploy.com).", - "q18": "What's the catch on the Paid Plan?", - "a18": "Nothing, you link your server(VPS) to your account and you can deploy unlimited applications, databases, and users and you get unlimited updates, deployments, backups and more." - }, - "footer": { - "copyright": "Copyright © {year} Dokploy. All rights reserved." - } - }, - "404": { - "title": "Oops! Looks like you're lost.", - "des": "Let's get you back", - "action": "home" - }, - "Link": { - "docs": { - "intro": "https://docs.dokploy.com/docs/core", - "install": "https://docs.dokploy.com/docs/core/installation" - } - }, - "Pricing": { - "swirlyDoodleTitle": "Simple & Affordable,", - "restTitle": "Pricing.", - "description": "Deploy Smarter, Scale Faster – Without Breaking the Bank", - "billingCycle": { - "monthly": "Monthly", - "annual": "Annual" - }, - "plan": { - "free": { - "title": "Free", - "subTitle": "Open Source", - "section": { - "title": "Dokploy Open Source", - "description": "Manage your own infrastructure, installing Dokploy UI on your own server." - }, - "features": { - "f1": "Complete Flexibility: Install Dokploy UI on your own infrastructure", - "f2": "Self-hosted Infrastructure", - "f3": "Community Support", - "f4": "Access to Core Features", - "f5": "Access to All Updates", - "f9": "Unlimited Servers" - }, - "go": "Installation" - }, - "cloud": { - "title": "Recommended", - "section": { - "title": "Dokploy Plan", - "description": " to manage Dokploy UI infrastructure, we take care of it for you." - }, - "servers": "{serverQuantity} Servers (You bring the servers)", - "features": { - "f1": "Managed Hosting: No need to manage your own servers", - "f2": "Unlimited Deployments", - "f3": "Unlimited Databases", - "f4": "Unlimited Applications", - "f5": "Unlimited Users", - "f6": "Remote Servers Monitoring", - "f7": "Priority Support", - "f8": "New Updates" - }, - "go": "Subscribe" - } - }, - "faq": { - "title": "Frequently asked questions", - "description": "If you can't find what you're looking for, please send us an email to", - "q1": "How does Dokploy's Open Source plan work?", - "a1": "You can host Dokploy UI on your own infrastructure and you will be responsible for the maintenance and updates.", - "q2": "Do I need to provide my own server for the managed plan?", - "a2": "Yes, in the managed plan, you provide your own server eg(Hetzner, Hostinger, AWS, ETC.) VPS, and we manage the Dokploy UI infrastructure for you.", - "q3": "What happens if I need more than one server?", - "a3": "The first server costs $4.50/month, if you buy more than one it will be $3.50/month per server.", - "q4": "Is there a limit on the number of deployments?", - "a4": "No, there is no limit on the number of deployments in any of the plans.", - "q5": "What happens if I exceed my purchased server limit?", - "a5": "The most recently added servers will be deactivated. You won't be able to create services on inactive servers until they are reactivated.", - "q6": "Do you offer a refunds?", - "a6": "We do not offer refunds. However, you can cancel your subscription at any time. Feel free to try our open-source version for free before making a purchase.", - "q7": "What kind of support do you offer?", - "a7": "We offer community support for the open source version and priority support for paid plans.", - "q8": "Is Dokploy open-source?", - "a8": "Yes, Dokploy is fully open-source. You can contribute or modify it as needed for your projects." - } - }, - "blog": { - "title": "Blog", - "description": "Latest news, updates, and articles from Dokploy", - "noPosts": "No posts available", - "noResults": "No posts found matching your criteria", - "searchPlaceholder": "Search posts...", - "allTags": "All Tags", - "relatedPosts": "Related Posts", - "tagDescription": "Posts tagged with", - "foundPosts": "{count, plural, =0 {No posts found} one {# post found} other {# posts found}}", - "tagTitle": "Posts tagged with {tag}", - "backToBlog": "Back to Blog", - "tags": "Tags", - "postsTaggedWith": "Posts tagged with" - }, - "Contact": { - "title": "Contact Us", - "description": "Get in touch with our team. We're here to help with any questions about Dokploy.", - "successTitle": "Thank you for contacting us!", - "successMessage": "We've received your message and will get back to you as soon as possible.", - "errorMessage": "There was an error sending your message. Please try again.", - "fields": { - "inquiryType": { - "label": "What can we help you with today?", - "placeholder": "Select an option", - "options": { - "support": "Support", - "sales": "Sales", - "other": "Other" - } - }, - "firstName": { - "label": "First Name", - "placeholder": "Your first name" - }, - "lastName": { - "label": "Last Name", - "placeholder": "Your last name" - }, - "email": { - "label": "Email", - "placeholder": "your.email@company.com" - }, - "company": { - "label": "Company Name", - "placeholder": "Your company name" - }, - "message": { - "label": "How can we help?", - "placeholder": "Tell us more about your inquiry..." - } - }, - "buttons": { - "send": "Send Message", - "sending": "Sending...", - "sendAnother": "Send Another Message" - }, - "errors": { - "inquiryTypeRequired": "Please select what we can help you with", - "firstNameRequired": "First name is required", - "lastNameRequired": "Last name is required", - "emailRequired": "Email is required", - "emailInvalid": "Please enter a valid email address", - "companyRequired": "Company name is required", - "messageRequired": "Message is required" - } - } -} diff --git a/apps/website/package.json b/apps/website/package.json index 75f6f88..ac4ee92 100644 --- a/apps/website/package.json +++ b/apps/website/package.json @@ -36,7 +36,6 @@ "framer-motion": "^11.3.19", "lucide-react": "0.364.0", "next": "15.4.5", - "next-intl": "^3.26.5", "react": "18.2.0", "react-dom": "18.2.0", "react-ga4": "^2.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ab1616a..82611ea 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -163,9 +163,6 @@ importers: next: specifier: 15.4.5 version: 15.4.5(@babel/core@7.26.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - next-intl: - specifier: ^3.26.5 - version: 3.26.5(next@15.4.5(@babel/core@7.26.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) prettier: specifier: ^3.3.3 version: 3.3.3 @@ -847,21 +844,6 @@ packages: '@floating-ui/utils@0.2.9': resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} - '@formatjs/ecma402-abstract@2.0.0': - resolution: {integrity: sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==} - - '@formatjs/fast-memoize@2.2.0': - resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==} - - '@formatjs/icu-messageformat-parser@2.7.8': - resolution: {integrity: sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==} - - '@formatjs/icu-skeleton-parser@1.8.2': - resolution: {integrity: sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==} - - '@formatjs/intl-localematcher@0.5.4': - resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==} - '@formatjs/intl-localematcher@0.5.7': resolution: {integrity: sha512-GGFtfHGQVFe/niOZp24Kal5b2i36eE2bNL0xi9Sg/yd0TR8aLjcteApZdHmismP5QQax1cMnZM9yWySUUjJteA==} @@ -2656,9 +2638,6 @@ packages: inline-style-parser@0.2.3: resolution: {integrity: sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==} - intl-messageformat@10.5.14: - resolution: {integrity: sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==} - invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} @@ -3100,12 +3079,6 @@ packages: resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} engines: {node: '>= 0.6'} - next-intl@3.26.5: - resolution: {integrity: sha512-EQlCIfY0jOhRldiFxwSXG+ImwkQtDEfQeSOEQp6ieAGSLWGlgjdb/Ck/O7wMfC430ZHGeUKVKax8KGusTPKCgg==} - peerDependencies: - next: ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 - next-themes@0.4.3: resolution: {integrity: sha512-nG84VPkTdUHR2YeD89YchvV4I9RbiMAql3GiLEQlPvq1ioaqPaIReK+yMRdg/zgiXws620qS1rU30TiWmmG9lA==} peerDependencies: @@ -3873,11 +3846,6 @@ packages: '@types/react': optional: true - use-intl@3.26.5: - resolution: {integrity: sha512-OdsJnC/znPvHCHLQH/duvQNXnP1w0hPfS+tkSi3mAbfjYBGh4JnyfdwkQBfIVf7t8gs9eSX/CntxUMvtKdG2MQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 - use-sidecar@1.1.2: resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} @@ -4461,30 +4429,6 @@ snapshots: '@floating-ui/utils@0.2.9': {} - '@formatjs/ecma402-abstract@2.0.0': - dependencies: - '@formatjs/intl-localematcher': 0.5.4 - tslib: 2.6.3 - - '@formatjs/fast-memoize@2.2.0': - dependencies: - tslib: 2.6.3 - - '@formatjs/icu-messageformat-parser@2.7.8': - dependencies: - '@formatjs/ecma402-abstract': 2.0.0 - '@formatjs/icu-skeleton-parser': 1.8.2 - tslib: 2.6.3 - - '@formatjs/icu-skeleton-parser@1.8.2': - dependencies: - '@formatjs/ecma402-abstract': 2.0.0 - tslib: 2.6.3 - - '@formatjs/intl-localematcher@0.5.4': - dependencies: - tslib: 2.6.3 - '@formatjs/intl-localematcher@0.5.7': dependencies: tslib: 2.6.3 @@ -6673,13 +6617,6 @@ snapshots: inline-style-parser@0.2.3: {} - intl-messageformat@10.5.14: - dependencies: - '@formatjs/ecma402-abstract': 2.0.0 - '@formatjs/fast-memoize': 2.2.0 - '@formatjs/icu-messageformat-parser': 2.7.8 - tslib: 2.6.3 - invariant@2.2.4: dependencies: loose-envify: 1.4.0 @@ -7354,14 +7291,6 @@ snapshots: negotiator@1.0.0: {} - next-intl@3.26.5(next@15.4.5(@babel/core@7.26.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0): - dependencies: - '@formatjs/intl-localematcher': 0.5.7 - negotiator: 1.0.0 - next: 15.4.5(@babel/core@7.26.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - use-intl: 3.26.5(react@18.2.0) - next-themes@0.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: react: 18.3.1 @@ -8243,12 +8172,6 @@ snapshots: optionalDependencies: '@types/react': 18.3.5 - use-intl@3.26.5(react@18.2.0): - dependencies: - '@formatjs/fast-memoize': 2.2.0 - intl-messageformat: 10.5.14 - react: 18.2.0 - use-sidecar@1.1.2(@types/react@18.3.5)(react@18.2.0): dependencies: detect-node-es: 1.1.0 From 8543d064b24036e2538cf95d4df60db3006f8b1f Mon Sep 17 00:00:00 2001 From: Mauricio Siu Date: Fri, 28 Nov 2025 02:51:09 -0600 Subject: [PATCH 20/39] chore: remove CatchAll page, add Privacy Policy, Terms and Conditions, and Changelog pages --- apps/website/app/[locale]/[...rest]/page.tsx | 5 -- apps/website/app/api/og/route.ts | 3 - .../_changelog => changelog}/page.tsx | 71 +------------------ apps/website/app/page.tsx | 4 +- .../app/{[locale] => }/privacy/page.tsx | 7 +- .../website/app/{[locale] => }/terms/page.tsx | 11 +-- 6 files changed, 16 insertions(+), 85 deletions(-) delete mode 100644 apps/website/app/[locale]/[...rest]/page.tsx rename apps/website/app/{[locale]/_changelog => changelog}/page.tsx (51%) rename apps/website/app/{[locale] => }/privacy/page.tsx (96%) rename apps/website/app/{[locale] => }/terms/page.tsx (96%) diff --git a/apps/website/app/[locale]/[...rest]/page.tsx b/apps/website/app/[locale]/[...rest]/page.tsx deleted file mode 100644 index 4583936..0000000 --- a/apps/website/app/[locale]/[...rest]/page.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { notFound } from "next/navigation"; - -export default function CatchAll() { - notFound(); -} diff --git a/apps/website/app/api/og/route.ts b/apps/website/app/api/og/route.ts index 9883471..53cac07 100644 --- a/apps/website/app/api/og/route.ts +++ b/apps/website/app/api/og/route.ts @@ -21,7 +21,6 @@ export async function GET(request: NextRequest) { return new Response("Post not found", { status: 404 }); } - console.log("Found post:", post.title); const formattedDate = new Date(post.published_at).toLocaleDateString( "en-US", @@ -44,8 +43,6 @@ export async function GET(request: NextRequest) { readingTime: post.reading_time, }); - console.log("Successfully generated OG image"); - return new Response(ogImage, { headers: { "Content-Type": "image/png", diff --git a/apps/website/app/[locale]/_changelog/page.tsx b/apps/website/app/changelog/page.tsx similarity index 51% rename from apps/website/app/[locale]/_changelog/page.tsx rename to apps/website/app/changelog/page.tsx index 7eb23ee..8acfde8 100644 --- a/apps/website/app/[locale]/_changelog/page.tsx +++ b/apps/website/app/changelog/page.tsx @@ -1,12 +1,11 @@ -// import { ScrollArea } from "@/components/ui/scroll-area"; import type { Metadata } from "next"; export const metadata: Metadata = { title: "Changelog", - description: "Stay updated with the latest changes, improvements, and features in Dokploy", + description: + "Stay updated with the latest changes, improvements, and features in Dokploy", }; -// Datos de ejemplo del changelog const changelogEntries = [ { date: "2023-11-01", @@ -83,7 +82,7 @@ export default function ChangelogPage() {
-
+

Changelog

{changelogEntries.map((entry, index) => ( @@ -123,67 +122,3 @@ export default function ChangelogPage() { ); } -// Unused/old version below -// const Comp = () => { -// ... -// }; - -// export default function Changelog() { -// return ( -//
-//
-// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -//
-//
-//

Changelog

-//
-// {changelogEntries.map((entry, index) => ( -//
-//
-// -// {entry.date} -// -//

{entry.title}

-//
-//
-//
-// {`Imagen -//
- -//
    -// {entry.changes.map((change, changeIndex) => ( -//
  • -// {change} -//
  • -// ))} -//
-//
-//
-// ))} -//
-//
-//
-// ); -// } diff --git a/apps/website/app/page.tsx b/apps/website/app/page.tsx index 3ed6fad..7210ade 100644 --- a/apps/website/app/page.tsx +++ b/apps/website/app/page.tsx @@ -10,7 +10,9 @@ import { StatsSection } from "@/components/stats"; import type { Metadata } from "next"; export const metadata: Metadata = { - title: "Dokploy | Deploy your applications with ease", + title: { + absolute: "Dokploy - Deploy your applications with ease", + }, description: "Open-source self-hostable Platform as a Service (PaaS) that simplifies the deployment and management of applications and databases", }; diff --git a/apps/website/app/[locale]/privacy/page.tsx b/apps/website/app/privacy/page.tsx similarity index 96% rename from apps/website/app/[locale]/privacy/page.tsx rename to apps/website/app/privacy/page.tsx index c28c800..6859800 100644 --- a/apps/website/app/[locale]/privacy/page.tsx +++ b/apps/website/app/privacy/page.tsx @@ -6,9 +6,9 @@ export const metadata: Metadata = { "Learn about how Dokploy collects, uses, and safeguards your personal information when you use our website and services.", }; -export default function Home() { +export default function PrivacyPage() { return ( -
+

Privacy

@@ -105,7 +105,7 @@ export default function Home() { please contact us at:

- Email: + Email:{" "} ); } + diff --git a/apps/website/app/[locale]/terms/page.tsx b/apps/website/app/terms/page.tsx similarity index 96% rename from apps/website/app/[locale]/terms/page.tsx rename to apps/website/app/terms/page.tsx index 556c673..e7d53ed 100644 --- a/apps/website/app/[locale]/terms/page.tsx +++ b/apps/website/app/terms/page.tsx @@ -6,9 +6,9 @@ export const metadata: Metadata = { "Read the terms and conditions for using Dokploy's website and services.", }; -export default function Home() { +export default function TermsPage() { return ( -

+

Terms and Conditions

@@ -16,7 +16,7 @@ export default function Home() {

Welcome to Dokploy! These Terms and Conditions outline the rules and - regulations for the use of Dokploy’s website and services. + regulations for the use of Dokploy's website and services.

By accessing or using our services, you agree to be bound by the @@ -188,7 +188,7 @@ export default function Home() { These Terms & Conditions are governed by applicable laws based on the user's location. Any disputes arising under these terms will be resolved in accordance with the legal jurisdiction relevant to the - user’s location, unless otherwise required by applicable law. + user's location, unless otherwise required by applicable law.

@@ -199,7 +199,7 @@ export default function Home() { reach us at:

- Email: + Email:{" "} ); } + From 9fdaa8957bbcdc1152a8d2d5d098f2a685a33859 Mon Sep 17 00:00:00 2001 From: Mauricio Siu Date: Fri, 28 Nov 2025 02:52:57 -0600 Subject: [PATCH 21/39] style: update Header component for improved sticky behavior and visual clarity --- apps/website/components/Header.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/website/components/Header.tsx b/apps/website/components/Header.tsx index ba853dd..1989b12 100644 --- a/apps/website/components/Header.tsx +++ b/apps/website/components/Header.tsx @@ -154,7 +154,7 @@ function MobileNavigation() { export function Header() { return ( -

+
diff --git a/apps/website/components/Faqs.tsx b/apps/website/components/Faqs.tsx index d62c30e..be0bc43 100644 --- a/apps/website/components/Faqs.tsx +++ b/apps/website/components/Faqs.tsx @@ -17,7 +17,7 @@ const faqs = [ }, { question: "Do I need to provide my own server for the managed plan?", - answer: "Yes, in the managed plan, you provide your own server e.g. (Hetzner, Hostinger, AWS, ETC.) VPS, and we manage the Dokploy UI infrastructure for you.", + answer: "Yes, in the managed plan, you provide your own server (e.g., Hetzner, Hostinger, AWS, etc.) VPS, and we manage the Dokploy UI infrastructure for you.", }, { question: "What happens if I need more than one server?", @@ -33,11 +33,11 @@ const faqs = [ }, { question: "What kind of support do you offer?", - answer: "We offer community support for the open source version and priority support for paid plans (Via Discord or Email at support@dokploy.com).", + answer: "We offer community support for the open source version and priority support for paid plans (via Discord or Email at support@dokploy.com).", }, { question: "What's the catch on the Paid Plan?", - answer: "Nothing, you link your server(VPS) to your account and you can deploy unlimited applications, databases, and users and you get unlimited updates, deployments, backups and more.", + answer: "Nothing, once you link your server (VPS) to your account, you can deploy unlimited applications, databases, and users, and you get unlimited updates, deployments, backups, and more.", }, { question: "Why Choose Dokploy?", diff --git a/apps/website/components/Hero.tsx b/apps/website/components/Hero.tsx index 65bb4d1..097faa4 100644 --- a/apps/website/components/Hero.tsx +++ b/apps/website/components/Hero.tsx @@ -77,34 +77,34 @@ export function Hero() {
- - Deploy{" "} - - - Anywhere - {" "} - with Total Freedom and Ease. - - - Streamline your operations with our all-in-one platform — perfect for managing projects, data, and system health with simplicity and efficiency. - + + Simplify{" "} + + + Application and Database + {" "} + Deployments + + + Manage containerized deployments across multiple servers with ease thanks to our all-in-one platform for developers. + , }, { @@ -76,7 +76,7 @@ export function FirstFeaturesSection() { icon: , }, { - title: "Built for developers", + title: "Built for Developers", description: "Designed specifically for engineers and developers seeking control and flexibility.", icon: , @@ -91,7 +91,7 @@ export function FirstFeaturesSection() { return (

- Powerful Deployment, Tailored for You + Powerful Deployment Tailored to You

Unlock seamless multi-server deployments, advanced user control, and diff --git a/apps/website/components/pricing.tsx b/apps/website/components/pricing.tsx index f7db9bd..098cde3 100644 --- a/apps/website/components/pricing.tsx +++ b/apps/website/components/pricing.tsx @@ -117,12 +117,12 @@ export function Pricing() {

- Simple & Affordable, + Simple, Affordable, {" "} Pricing.

- Deploy Smarter, Scale Faster – Without Breaking the Bank + Deploy Smarter and Scale Faster, Without Breaking the Bank

@@ -170,7 +170,7 @@ export function Pricing() { featured ? "text-white" : "text-slate-400", )} > - Manage your own infrastructure, installing Dokploy UI on your own server. + Install and manage Dokploy UI on your own server.

    (
  • @@ -209,7 +210,7 @@ export function Pricing() { target="_blank" className="flex items-start text-sm text-primary" > - Installation{" "} + Start deploying{" "}
@@ -258,7 +259,7 @@ export function Pricing() { featured ? "text-white" : "text-slate-400", )} > - to manage Dokploy UI infrastructure, we take care of it for you. + We manage the Dokploy UI infrastructure, we take care of it for you.