From 35ff65a871c9cc538eea18217e9c4ad7249e0354 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20T=C3=B8n=20L=C3=B8vhaug?= Date: Mon, 8 Jul 2024 10:16:26 +0200 Subject: [PATCH 01/15] Fix spelling --- .../application/advanced/traefik/show-traefik-config.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/dashboard/application/advanced/traefik/show-traefik-config.tsx b/components/dashboard/application/advanced/traefik/show-traefik-config.tsx index 6b5415044..a3fb4f302 100644 --- a/components/dashboard/application/advanced/traefik/show-traefik-config.tsx +++ b/components/dashboard/application/advanced/traefik/show-traefik-config.tsx @@ -29,7 +29,7 @@ export const ShowTraefikConfig = ({ applicationId }: Props) => { Traefik Modify the traefik config, in rare cases you may need to add - specific config, becarefull because modifying incorrectly can break + specific config, be careful because modifying incorrectly can break traefik and your application From eabe14e4c38e2c3d6d8361c2779455a32ad8993f Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Wed, 10 Jul 2024 22:40:13 -0600 Subject: [PATCH 02/15] refactor(setup): add constraints to dokploy services --- server/setup/postgres-setup.ts | 3 +++ server/setup/redis-setup.ts | 3 +++ server/setup/registry-setup.ts | 3 +++ server/setup/traefik-setup.ts | 3 +++ 4 files changed, 12 insertions(+) diff --git a/server/setup/postgres-setup.ts b/server/setup/postgres-setup.ts index ce5bfccc2..d292f877e 100644 --- a/server/setup/postgres-setup.ts +++ b/server/setup/postgres-setup.ts @@ -26,6 +26,9 @@ export const initializePostgres = async () => { RestartPolicy: { Condition: "on-failure", }, + Placement: { + Constraints: ["node.role==manager"], + }, }, Mode: { Replicated: { diff --git a/server/setup/redis-setup.ts b/server/setup/redis-setup.ts index 40886bd09..82f568e46 100644 --- a/server/setup/redis-setup.ts +++ b/server/setup/redis-setup.ts @@ -23,6 +23,9 @@ export const initializeRedis = async () => { RestartPolicy: { Condition: "on-failure", }, + Placement: { + Constraints: ["node.role==manager"], + }, }, Mode: { Replicated: { diff --git a/server/setup/registry-setup.ts b/server/setup/registry-setup.ts index 94d592f7f..085ed365d 100644 --- a/server/setup/registry-setup.ts +++ b/server/setup/registry-setup.ts @@ -43,6 +43,9 @@ export const initializeRegistry = async ( RestartPolicy: { Condition: "on-failure", }, + Placement: { + Constraints: ["node.role==manager"], + }, }, Mode: { Replicated: { diff --git a/server/setup/traefik-setup.ts b/server/setup/traefik-setup.ts index 889988d66..4cd011cd4 100644 --- a/server/setup/traefik-setup.ts +++ b/server/setup/traefik-setup.ts @@ -41,6 +41,9 @@ export const initializeTraefik = async () => { RestartPolicy: { Condition: "on-failure", }, + Placement: { + Constraints: ["node.role==manager"], + }, }, Mode: { Replicated: { From 86bb119052e26e668ecc0433344e9f4c96194500 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Thu, 11 Jul 2024 21:24:36 -0600 Subject: [PATCH 03/15] chore(version): bump version --- package.json | 314 +++++++++++++++++++++++++-------------------------- 1 file changed, 157 insertions(+), 157 deletions(-) diff --git a/package.json b/package.json index 5883df66e..502ff347c 100644 --- a/package.json +++ b/package.json @@ -1,159 +1,159 @@ { - "name": "dokploy", - "version": "v0.3.1", - "private": true, - "license": "Apache-2.0", - "type": "module", - "scripts": { - "build": "npm run build-server && npm run build-next", - "start": "node dist/server.mjs", - "build-server": "tsx esbuild.config.ts", - "build-next": "next build", - "setup": "tsx -r dotenv/config setup.ts && sleep 5 && pnpm run migration:run", - "reset-password": "node dist/reset-password.mjs", - "dev": "tsx watch -r dotenv/config ./server/server.ts --project tsconfig.server.json ", - "studio": "drizzle-kit studio --config ./server/db/drizzle.config.ts", - "migration:generate": "drizzle-kit generate --config ./server/db/drizzle.config.ts", - "migration:run": "tsx -r dotenv/config migration.ts", - "migration:up": "drizzle-kit up --config ./server/db/drizzle.config.ts", - "migration:drop": "drizzle-kit drop --config ./server/db/drizzle.config.ts", - "db:push": "drizzle-kit --config ./server/db/drizzle.config.ts", - "db:truncate": "tsx -r dotenv/config ./server/db/reset.ts", - "db:studio": "drizzle-kit studio --config ./server/db/drizzle.config.ts", - "lint": "biome lint", - "db:seed": "tsx -r dotenv/config ./server/db/seed.ts", - "db:clean": "tsx -r dotenv/config ./server/db/reset.ts", - "docker:build": "./docker/build.sh", - "docker:push": "./docker/push.sh", - "docker:build:canary": "./docker/build.sh canary", - "docker:push:canary": "./docker/push.sh canary", - "version": "echo $(node -p \"require('./package.json').version\")", - "test": "vitest --config __test__/vitest.config.ts" - }, - "dependencies": { - "@aws-sdk/client-s3": "3.515.0", - "@codemirror/lang-json": "^6.0.1", - "@codemirror/lang-yaml": "^6.1.1", - "@codemirror/language": "^6.10.1", - "@codemirror/legacy-modes": "6.4.0", - "@dokploy/trpc-openapi": "0.0.4", - "@faker-js/faker": "^8.4.1", - "@hookform/resolvers": "^3.3.4", - "@lucia-auth/adapter-drizzle": "1.0.7", - "@octokit/auth-app": "^6.0.4", - "@octokit/webhooks": "^13.2.7", - "@radix-ui/react-accordion": "1.1.2", - "@radix-ui/react-alert-dialog": "^1.0.5", - "@radix-ui/react-avatar": "^1.0.4", - "@radix-ui/react-checkbox": "^1.0.4", - "@radix-ui/react-dialog": "^1.0.5", - "@radix-ui/react-dropdown-menu": "^2.0.6", - "@radix-ui/react-label": "^2.0.2", - "@radix-ui/react-popover": "^1.0.7", - "@radix-ui/react-progress": "^1.0.3", - "@radix-ui/react-radio-group": "^1.1.3", - "@radix-ui/react-scroll-area": "^1.0.5", - "@radix-ui/react-select": "^2.0.0", - "@radix-ui/react-separator": "^1.0.3", - "@radix-ui/react-slot": "^1.0.2", - "@radix-ui/react-switch": "^1.0.3", - "@radix-ui/react-tabs": "^1.0.4", - "@radix-ui/react-toggle": "^1.0.3", - "@radix-ui/react-tooltip": "^1.0.7", - "@tanstack/react-query": "^4.36.1", - "@tanstack/react-table": "^8.16.0", - "@trpc/client": "^10.43.6", - "@trpc/next": "^10.43.6", - "@trpc/react-query": "^10.43.6", - "@trpc/server": "^10.43.6", - "@uiw/codemirror-theme-github": "^4.22.1", - "@uiw/react-codemirror": "^4.22.1", - "@xterm/addon-attach": "0.10.0", - "@xterm/xterm": "^5.4.0", - "bcrypt": "5.1.1", - "bl": "6.0.11", - "boxen": "^7.1.1", - "bullmq": "5.4.2", - "class-variance-authority": "^0.7.0", - "clsx": "^2.1.0", - "cmdk": "^0.2.0", - "copy-to-clipboard": "^3.3.3", - "copy-webpack-plugin": "^12.0.2", - "date-fns": "3.6.0", - "dockerode": "4.0.2", - "dockerode-compose": "^1.4.0", - "dockerstats": "2.4.2", - "dotenv": "16.4.5", - "drizzle-orm": "^0.30.8", - "drizzle-zod": "0.5.1", - "hi-base32": "^0.5.1", - "input-otp": "^1.2.4", - "js-yaml": "4.1.0", - "k6": "^0.0.0", - "lodash": "4.17.21", - "lucia": "^3.0.1", - "lucide-react": "^0.312.0", - "nanoid": "3", - "next": "^14.1.3", - "next-themes": "^0.2.1", - "node-os-utils": "1.3.7", - "node-pty": "1.0.0", - "node-schedule": "2.1.1", - "octokit": "3.1.2", - "otpauth": "^9.2.3", - "postgres": "3.4.4", - "public-ip": "6.0.2", - "qrcode": "^1.5.3", - "react": "18.2.0", - "react-dom": "18.2.0", - "react-hook-form": "^7.49.3", - "recharts": "^2.12.3", - "slugify": "^1.6.6", - "sonner": "^1.4.0", - "superjson": "^2.2.1", - "swagger-ui-react": "^5.17.14", - "tailwind-merge": "^2.2.0", - "tailwindcss-animate": "^1.0.7", - "tar-fs": "3.0.5", - "use-resize-observer": "9.1.0", - "ws": "8.16.0", - "xterm-addon-fit": "^0.8.0", - "zod": "^3.23.4" - }, - "devDependencies": { - "@biomejs/biome": "1.7.1", - "@types/bcrypt": "5.0.2", - "@types/dockerode": "3.3.23", - "@types/js-yaml": "4.0.9", - "@types/lodash": "4.17.4", - "@types/node": "^18.17.0", - "@types/node-os-utils": "1.3.4", - "@types/node-schedule": "2.1.6", - "@types/qrcode": "^1.5.5", - "@types/react": "^18.2.37", - "@types/react-dom": "^18.2.15", - "@types/swagger-ui-react": "^4.18.3", - "@types/tar-fs": "2.0.4", - "@types/ws": "8.5.10", - "autoprefixer": "^10.4.14", - "drizzle-kit": "^0.21.1", - "esbuild": "0.20.2", - "localtunnel": "2.0.2", - "postcss": "^8.4.31", - "prettier": "^3.2.4", - "prettier-plugin-tailwindcss": "^0.5.11", - "tailwindcss": "^3.4.1", - "tsx": "^4.7.0", - "typescript": "^5.4.2", - "vite-tsconfig-paths": "4.3.2", - "vitest": "^1.6.0", - "xterm-readline": "1.1.1" - }, - "ct3aMetadata": { - "initVersion": "7.25.2" - }, - "engines": { - "node": "^18.18.0", - "pnpm": ">=8.15.4" - } + "name": "dokploy", + "version": "v0.3.2", + "private": true, + "license": "Apache-2.0", + "type": "module", + "scripts": { + "build": "npm run build-server && npm run build-next", + "start": "node dist/server.mjs", + "build-server": "tsx esbuild.config.ts", + "build-next": "next build", + "setup": "tsx -r dotenv/config setup.ts && sleep 5 && pnpm run migration:run", + "reset-password": "node dist/reset-password.mjs", + "dev": "tsx watch -r dotenv/config ./server/server.ts --project tsconfig.server.json ", + "studio": "drizzle-kit studio --config ./server/db/drizzle.config.ts", + "migration:generate": "drizzle-kit generate --config ./server/db/drizzle.config.ts", + "migration:run": "tsx -r dotenv/config migration.ts", + "migration:up": "drizzle-kit up --config ./server/db/drizzle.config.ts", + "migration:drop": "drizzle-kit drop --config ./server/db/drizzle.config.ts", + "db:push": "drizzle-kit --config ./server/db/drizzle.config.ts", + "db:truncate": "tsx -r dotenv/config ./server/db/reset.ts", + "db:studio": "drizzle-kit studio --config ./server/db/drizzle.config.ts", + "lint": "biome lint", + "db:seed": "tsx -r dotenv/config ./server/db/seed.ts", + "db:clean": "tsx -r dotenv/config ./server/db/reset.ts", + "docker:build": "./docker/build.sh", + "docker:push": "./docker/push.sh", + "docker:build:canary": "./docker/build.sh canary", + "docker:push:canary": "./docker/push.sh canary", + "version": "echo $(node -p \"require('./package.json').version\")", + "test": "vitest --config __test__/vitest.config.ts" + }, + "dependencies": { + "@aws-sdk/client-s3": "3.515.0", + "@codemirror/lang-json": "^6.0.1", + "@codemirror/lang-yaml": "^6.1.1", + "@codemirror/language": "^6.10.1", + "@codemirror/legacy-modes": "6.4.0", + "@dokploy/trpc-openapi": "0.0.4", + "@faker-js/faker": "^8.4.1", + "@hookform/resolvers": "^3.3.4", + "@lucia-auth/adapter-drizzle": "1.0.7", + "@octokit/auth-app": "^6.0.4", + "@octokit/webhooks": "^13.2.7", + "@radix-ui/react-accordion": "1.1.2", + "@radix-ui/react-alert-dialog": "^1.0.5", + "@radix-ui/react-avatar": "^1.0.4", + "@radix-ui/react-checkbox": "^1.0.4", + "@radix-ui/react-dialog": "^1.0.5", + "@radix-ui/react-dropdown-menu": "^2.0.6", + "@radix-ui/react-label": "^2.0.2", + "@radix-ui/react-popover": "^1.0.7", + "@radix-ui/react-progress": "^1.0.3", + "@radix-ui/react-radio-group": "^1.1.3", + "@radix-ui/react-scroll-area": "^1.0.5", + "@radix-ui/react-select": "^2.0.0", + "@radix-ui/react-separator": "^1.0.3", + "@radix-ui/react-slot": "^1.0.2", + "@radix-ui/react-switch": "^1.0.3", + "@radix-ui/react-tabs": "^1.0.4", + "@radix-ui/react-toggle": "^1.0.3", + "@radix-ui/react-tooltip": "^1.0.7", + "@tanstack/react-query": "^4.36.1", + "@tanstack/react-table": "^8.16.0", + "@trpc/client": "^10.43.6", + "@trpc/next": "^10.43.6", + "@trpc/react-query": "^10.43.6", + "@trpc/server": "^10.43.6", + "@uiw/codemirror-theme-github": "^4.22.1", + "@uiw/react-codemirror": "^4.22.1", + "@xterm/addon-attach": "0.10.0", + "@xterm/xterm": "^5.4.0", + "bcrypt": "5.1.1", + "bl": "6.0.11", + "boxen": "^7.1.1", + "bullmq": "5.4.2", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.0", + "cmdk": "^0.2.0", + "copy-to-clipboard": "^3.3.3", + "copy-webpack-plugin": "^12.0.2", + "date-fns": "3.6.0", + "dockerode": "4.0.2", + "dockerode-compose": "^1.4.0", + "dockerstats": "2.4.2", + "dotenv": "16.4.5", + "drizzle-orm": "^0.30.8", + "drizzle-zod": "0.5.1", + "hi-base32": "^0.5.1", + "input-otp": "^1.2.4", + "js-yaml": "4.1.0", + "k6": "^0.0.0", + "lodash": "4.17.21", + "lucia": "^3.0.1", + "lucide-react": "^0.312.0", + "nanoid": "3", + "next": "^14.1.3", + "next-themes": "^0.2.1", + "node-os-utils": "1.3.7", + "node-pty": "1.0.0", + "node-schedule": "2.1.1", + "octokit": "3.1.2", + "otpauth": "^9.2.3", + "postgres": "3.4.4", + "public-ip": "6.0.2", + "qrcode": "^1.5.3", + "react": "18.2.0", + "react-dom": "18.2.0", + "react-hook-form": "^7.49.3", + "recharts": "^2.12.3", + "slugify": "^1.6.6", + "sonner": "^1.4.0", + "superjson": "^2.2.1", + "swagger-ui-react": "^5.17.14", + "tailwind-merge": "^2.2.0", + "tailwindcss-animate": "^1.0.7", + "tar-fs": "3.0.5", + "use-resize-observer": "9.1.0", + "ws": "8.16.0", + "xterm-addon-fit": "^0.8.0", + "zod": "^3.23.4" + }, + "devDependencies": { + "@biomejs/biome": "1.7.1", + "@types/bcrypt": "5.0.2", + "@types/dockerode": "3.3.23", + "@types/js-yaml": "4.0.9", + "@types/lodash": "4.17.4", + "@types/node": "^18.17.0", + "@types/node-os-utils": "1.3.4", + "@types/node-schedule": "2.1.6", + "@types/qrcode": "^1.5.5", + "@types/react": "^18.2.37", + "@types/react-dom": "^18.2.15", + "@types/swagger-ui-react": "^4.18.3", + "@types/tar-fs": "2.0.4", + "@types/ws": "8.5.10", + "autoprefixer": "^10.4.14", + "drizzle-kit": "^0.21.1", + "esbuild": "0.20.2", + "localtunnel": "2.0.2", + "postcss": "^8.4.31", + "prettier": "^3.2.4", + "prettier-plugin-tailwindcss": "^0.5.11", + "tailwindcss": "^3.4.1", + "tsx": "^4.7.0", + "typescript": "^5.4.2", + "vite-tsconfig-paths": "4.3.2", + "vitest": "^1.6.0", + "xterm-readline": "1.1.1" + }, + "ct3aMetadata": { + "initVersion": "7.25.2" + }, + "engines": { + "node": "^18.18.0", + "pnpm": ">=8.15.4" + } } From 363ba1d20e2f1b9d47214eb785f3ad11ddeec869 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Fri, 12 Jul 2024 23:35:51 -0600 Subject: [PATCH 04/15] fix(#210): remove restartpolicy in order to automatically restart the services in any case --- server/setup/postgres-setup.ts | 3 --- server/setup/redis-setup.ts | 3 --- server/setup/registry-setup.ts | 3 --- server/setup/traefik-setup.ts | 3 --- 4 files changed, 12 deletions(-) diff --git a/server/setup/postgres-setup.ts b/server/setup/postgres-setup.ts index d292f877e..b201ad727 100644 --- a/server/setup/postgres-setup.ts +++ b/server/setup/postgres-setup.ts @@ -23,9 +23,6 @@ export const initializePostgres = async () => { ], }, Networks: [{ Target: "dokploy-network" }], - RestartPolicy: { - Condition: "on-failure", - }, Placement: { Constraints: ["node.role==manager"], }, diff --git a/server/setup/redis-setup.ts b/server/setup/redis-setup.ts index 82f568e46..0f9719a98 100644 --- a/server/setup/redis-setup.ts +++ b/server/setup/redis-setup.ts @@ -20,9 +20,6 @@ export const initializeRedis = async () => { ], }, Networks: [{ Target: "dokploy-network" }], - RestartPolicy: { - Condition: "on-failure", - }, Placement: { Constraints: ["node.role==manager"], }, diff --git a/server/setup/registry-setup.ts b/server/setup/registry-setup.ts index 085ed365d..823f161d4 100644 --- a/server/setup/registry-setup.ts +++ b/server/setup/registry-setup.ts @@ -40,9 +40,6 @@ export const initializeRegistry = async ( ], }, Networks: [{ Target: "dokploy-network" }], - RestartPolicy: { - Condition: "on-failure", - }, Placement: { Constraints: ["node.role==manager"], }, diff --git a/server/setup/traefik-setup.ts b/server/setup/traefik-setup.ts index 4cd011cd4..84933cf82 100644 --- a/server/setup/traefik-setup.ts +++ b/server/setup/traefik-setup.ts @@ -38,9 +38,6 @@ export const initializeTraefik = async () => { ], }, Networks: [{ Target: "dokploy-network" }], - RestartPolicy: { - Condition: "on-failure", - }, Placement: { Constraints: ["node.role==manager"], }, From 84c10eec66fc591f6bf8ae5671997719eec79114 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sat, 13 Jul 2024 00:48:49 -0600 Subject: [PATCH 05/15] chore: add open collective organizations --- README.md | 53 +++++++++++++++++++++-------------------------------- 1 file changed, 21 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index ade68e822..9353e9de3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,3 @@ -

Dokploy

@@ -11,74 +10,67 @@
Dokploy is a free self-hostable Platform as a Service (PaaS) that simplifies the deployment and management of applications and databases. - ### Features Dokploy include multiples features to make your life easier. - -* **Applications**: Deploy any type of application (Node.js, PHP, Python, Go, Ruby, etc.). -* **Databases**: Create and manage databases with support for MySQL, PostgreSQL, MongoDB, MariaDB, Redis. -* **Backups**: Automate backups for databases to a external storage destination. -* **Docker Compose**: Native support for Docker Compose to manage complex applications. -* **Multi Node**: Scale applications to multiples nodes using docker swarm to manage the cluster. -* **Templates**: Deploy in a single click open source templates (Plausible, Pocketbase, Calcom, etc.). -* **Traefik Integration**: Automatically integrates with Traefik for routing and load balancing. -* **Real-time Monitoring**: Monitor CPU, memory, storage, and network usage, for every resource. -* **Docker Management**: Easily deploy and manage Docker containers. -* **CLI/API**: Manage your applications and databases using the command line or trought the API. -* **Self-Hosted**: Self-host Dokploy on your VPS. - - - +- **Applications**: Deploy any type of application (Node.js, PHP, Python, Go, Ruby, etc.). +- **Databases**: Create and manage databases with support for MySQL, PostgreSQL, MongoDB, MariaDB, Redis. +- **Backups**: Automate backups for databases to a external storage destination. +- **Docker Compose**: Native support for Docker Compose to manage complex applications. +- **Multi Node**: Scale applications to multiples nodes using docker swarm to manage the cluster. +- **Templates**: Deploy in a single click open source templates (Plausible, Pocketbase, Calcom, etc.). +- **Traefik Integration**: Automatically integrates with Traefik for routing and load balancing. +- **Real-time Monitoring**: Monitor CPU, memory, storage, and network usage, for every resource. +- **Docker Management**: Easily deploy and manage Docker containers. +- **CLI/API**: Manage your applications and databases using the command line or trought the API. +- **Self-Hosted**: Self-host Dokploy on your VPS. ## 🚀 Getting Started To get started run the following command in a VPS: - ```bash curl -sSL https://dokploy.com/install.sh | sh ``` - ## 📄 Documentation For detailed documentation, visit [docs.dokploy.com](https://docs.dokploy.com). - ## Video Tutorial + Watch the video - ## Donations If you like dokploy, and want to support the project to cover the costs of hosting, testing and development new features, you can donate to the project using the following link: Thanks to all the supporters! -https://opencollective.com/dokploy +[Dokploy Open Collective](https://opencollective.com/dokploy) +Organizations: + + +Individuals: - ## Contributors - - ## Support OS -- Ubuntu 24.04 LTS +- Ubuntu 24.04 LTS - Ubuntu 23.10 -- Ubuntu 22.04 LTS -- Ubuntu 20.04 LTS +- Ubuntu 22.04 LTS +- Ubuntu 20.04 LTS - Ubuntu 18.04 LTS - Debian 12 - Debian 11 @@ -86,9 +78,6 @@ https://opencollective.com/dokploy - Centos 9 - Centos 8 - - ## Explanation + [English](README.md) | [中文](README-zh.md) | [Deutsch](README-de.md) | [Русский Язык](README-ru.md) - - From 2eb5c331a168b55b0f08a1399bd609bcf87d589e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ere=20M=C3=A4nnist=C3=B6?= Date: Sun, 14 Jul 2024 15:23:54 +0300 Subject: [PATCH 06/15] Clarify error message for naming validation --- components/dashboard/project/add-application.tsx | 2 +- components/dashboard/project/add-compose.tsx | 2 +- components/dashboard/project/add-database.tsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/components/dashboard/project/add-application.tsx b/components/dashboard/project/add-application.tsx index ecf2a1afb..aacce06fb 100644 --- a/components/dashboard/project/add-application.tsx +++ b/components/dashboard/project/add-application.tsx @@ -40,7 +40,7 @@ const AddTemplateSchema = z.object({ }) .regex(/^[a-z](?!.*--)([a-z0-9-]*[a-z])?$/, { message: - "App name supports letters, numbers, '-' and can only start and end letters, and does not support continuous '-'", + "App name supports lowercase letters, numbers, '-' and can only start and end letters, and does not support continuous '-'", }), description: z.string().optional(), }); diff --git a/components/dashboard/project/add-compose.tsx b/components/dashboard/project/add-compose.tsx index fd769c911..6daa15394 100644 --- a/components/dashboard/project/add-compose.tsx +++ b/components/dashboard/project/add-compose.tsx @@ -48,7 +48,7 @@ const AddComposeSchema = z.object({ }) .regex(/^[a-z](?!.*--)([a-z0-9-]*[a-z])?$/, { message: - "App name supports letters, numbers, '-' and can only start and end letters, and does not support continuous '-'", + "App name supports lowercase letters, numbers, '-' and can only start and end letters, and does not support continuous '-'", }), description: z.string().optional(), }); diff --git a/components/dashboard/project/add-database.tsx b/components/dashboard/project/add-database.tsx index 7ab901071..c573ed09e 100644 --- a/components/dashboard/project/add-database.tsx +++ b/components/dashboard/project/add-database.tsx @@ -66,7 +66,7 @@ const baseDatabaseSchema = z.object({ }) .regex(/^[a-z](?!.*--)([a-z0-9-]*[a-z])?$/, { message: - "App name supports letters, numbers, '-' and can only start and end letters, and does not support continuous '-'", + "App name supports lowercase letters, numbers, '-' and can only start and end letters, and does not support continuous '-'", }), databasePassword: z.string(), dockerImage: z.string(), From 4ff178ea34059cfaadba155f1725e355a0c6fef3 Mon Sep 17 00:00:00 2001 From: Krzysztof Durek <21038648+kdurek@users.noreply.github.com> Date: Sun, 14 Jul 2024 20:28:37 +0200 Subject: [PATCH 07/15] feat: add umami template --- public/templates/umami.png | Bin 0 -> 4179 bytes templates/templates.ts | 14 +++++++++ templates/umami/docker-compose.yml | 46 +++++++++++++++++++++++++++++ templates/umami/index.ts | 24 +++++++++++++++ 4 files changed, 84 insertions(+) create mode 100644 public/templates/umami.png create mode 100644 templates/umami/docker-compose.yml create mode 100644 templates/umami/index.ts diff --git a/public/templates/umami.png b/public/templates/umami.png new file mode 100644 index 0000000000000000000000000000000000000000..de2f7615bd66089c2bcf814f3f46ffee1a124f4d GIT binary patch literal 4179 zcmds)`8yO|*#Bq23?WSRoe#;9oe?sY$Sz9O#%@$HC`=<`EFnAD_hqtANG8g@i;#UM z`<5ly%QOA*{r(5f56=(xxzBc;bDjIXuKWEu5hg}DbTk|^004ka_pX*H+1LCtD2Uuv zzmIn&JD|6zjs}4EjcbEE&~moWbulyqh?4tI05HrAK=E%2**M4s0DyCW05I7D|IOus z{@-d%F8KfV|7|oMO~wEKR~vM-)bINNcd{@~SvokoBvQBp!ondUZvt6s->`a#+|3W~ zJ%peQg^f9$rby?=7y z|I1ntTeB-ItE{{`td@>BPR&|V&dK_fHkr_L`S%=t3Zu-whGKnT5)%QsG(#*f&^s_Q zz#RzjFi@BjLs?)mqgZq%13Uz8K}iu~;kF#o%um}c%7<>(6TD7AZ_j5A#0#2pDDk7A z;3^s@SJn4!YP=>}_yfd3c#^gel&cj{4g%?v%Xw)mFi`z39L=o-G6s5JYZ4NecI~7g zZ|LcvaKAk}Z|`5k%S(BA`HwX<=)L24+~uzUwds#f#;Y8=h_;`PwkJOr=iDyJe!00( zloK%JR>b&ot^s>~v=a$Q$q!t5-}E==wfl7KtD{NR9Nb@wre@o>Eal^$v)J{)Jjbq> zkJ*!hgLU4n2w;3mFeD`@iH=iY`+|JM%3HHr&(SswOz*|rZ42bGLnAsnJ7d-Uo@DvX zogNMw|I5Lj^JCU$9w|3%zrmNH^d%b(r=Gm$R(*Ncj0fLv`(A9E;pPL2nGZPMNi@D~ z+3@oB=iSCDFxC944MTYcZ(wyf;Zg; zvQ^2!Sn{2J1@W$NqHZ(TqDujSshYb+O3dsDhJ{ZX`DW2^p}P&ob6+sO6rRnnjaTwD zVUK?rN-k}dy>HwsE%Pe^25AV4+vFiNQy_Y%=|*x$$%#G;U9wotBM=C&x6edg7?PgN zdc8`P82`moco_S0y)R7``+Jl5y3k7d-eOx0W;LxpL(%n-?}KF1p{KL;zX>Ui>i?c? zVGq|CQvhepBQnT{CyGI0%dd`TX>%PU5`*-+aB1Gfc<)u z=`tR|vp)VF>7)mTqXu(3B3aFJJMK8_>>swMv+t1u_IqbqQAQSpFi4XLwR)X0ow_~( zm-7|rL=9@ad!x{=c~!Lrd;H8%*YqIwZHu}*?()yEPAwbUZz)>QG@ncL<^2e`I&BS1 zCv>~UZCF5zgGOmH_w4M;5yKN+d+GNSIE;ZkU+t`qYm-87pVM^&ADClruChw^+1wbLXQ( zkBp6JC$y-$jIg;?n%gjS4o(^>&R!!rG`}1zeV|a3Su;rw2~LQ55Q4nT;amGa$Wy7G zZR>DjxJ{PinvGeV_GsevO`+?mcpbdK#0QO24?aAa_Hd=>qdKiN0K??u)Y)KHCW4Sq zScs*z!(SQfB4V(&w>L07u0@J!Hy=Zw@fQfT8yy{`ouU$N66qE| z^?H!#>9yI)N=rdgzjx>7HFgfZMeR(JkeHPuAZJ%JXBe;loag4Jpc;)jBR^+x~CV^>dtYY}MecQ2? zuxwH1CFFl1-%2g#)!UDY2HSJwozzx|wtfg5GBuxXR~p8qq(Pkq;v2;_3M&ssJS3h> zyJyFnicvNaQjh_4^ZqJMp7!_7->Nu#$Y0JKjtwRvxvecDyc0L+T|BXB~{Jg z%XLrL#IWE47>U)K@1>O#)cnz-pOS73W<;uIji)Z=3#S#1J`tc%T)RIU17C0XzISLH z^IoLi?~-w?4W4Xjan|3S6cG)&(CG^!pCd11EjfnnNIb( zRpwPPSHV3DrWI{cv;fhw?)eZgrks)QrxtlVQ2%Le+8w;!lAt;zt-DRgFM2T;cx#yb zMp0j`pCfHhVZ!ZggXyAlo-Cf!SA6LF9@u9cH|k zCe^|@mUD(IBLl@!Z8-dMGcPIQ9c0-zb9QkzS{rj(wVoF?_`Rb&&d4s9{tfUh^#_`o z9v;kcJmPX5SCEe8nVrvkW>2wKzeO}lG>_;g0(|S?4LGqk!o+WNOkJPL_CM%p)+!r7 zP_q;^pX@Jr_wQyB$LVz@R!aC(mtAr|hZ|nK+cuJ8bJo-(S^qKJNM&4khaWm6srBb2%RO4DMUoUy^^nsV}q4d7e@-IfGjtCh|`kUyOOT5HF62Th^C zVUlqs5F0H|XT>~758)I&d+3Cce>Wj8{-=s}2fgrIlADElzN)1CYkJF zm`n(OKNgM4`J%Pmel=|^K99;%V*P8m#I=Adb%l+~%@Nt@1P12ixx17TwmGbl2X9M* zr}XJB)=#e$lrHP3WP{2pMpX^S?~bzPPx)yHFs}YVo%=Y9{^fXKTHsQCe*04K zRc{acCMxagD-?iTWS-!jKq5#FzI7Qt3BFpmr7%pvwM}9?rMx*?tHh<&L6yO~p)g3n zHG%GzA79Vb7^!%xx-WYn@3U<&OGm#gPXW;n7*JZ{!X6sF&=Zk8IV%LhXj|~Aj-64` zcE-{wK|)7(cO`jCcPPD{Mk7=_MlEzrAQ<$NfiMjbPc+g*?@5{8Cld=Z(I~#FIZlap zUP>@X3BG4Qy$kl}yql8k)kdetmJuTbfhe_SqdIB5si6Zbw>|q)q@z!}*g}Kzq)zq> zk`P3i%A`jpVAneBgg?Kv7Xg^s&C#8i3UdFqy1`D@!MhtQ(bMMMI+ z(sp8|&YR%n78*;Ij?{r`>@KZXn*?+mRFpLh9T5yJip~i*>-j4B3m>xByl{5*((*II zYH%#0$3$g|3d7&)!dD?BWDTWzlG6%e-eKfIo*Y)HjhJ(l2%Do56j zUA(vpGQdRu7IDSQ=s3RHgR0)E29vh*k9Ql-pQSteHP91%dWCBuR)CqAxigb_TU0@Yl-}2sh(6sQwnUmcqBpMwj-dJR1X=zCtT=WI}$;jn)5=Ve9UuJG35 zrfk0-)TEU9=i3vWn}IVQ&@EkaHw9Ak%EdT%@wuY*^h`FKCl7QFf3(q9c@tSl}q&F3+=r^*yq9WqbD zX|q}YViYb*zC0(r*fRHO_2;-SF06LE60MskJk-EJrk~O*2GgrL!j1_4aiT354v}?U zD>}TdMrLNV2c%@}6$D+`ffj>i+){RkH|biQXK+xME02-pKR&B}u>~Lyi8q(zm$F6~ z?Q#<()Gf>40T+Hg%sv}1MqS+2eOg;Rs7RR`g2U`w=HG{2_l}Vk JQNu3ie*m&@+GYR% literal 0 HcmV?d00001 diff --git a/templates/templates.ts b/templates/templates.ts index b41a2028b..1d4ac7d70 100644 --- a/templates/templates.ts +++ b/templates/templates.ts @@ -359,5 +359,19 @@ export const templates: TemplateData[] = [ }, tags: ['email'], load: () => import('./doublezero/index').then((m) => m.generate), + }, + { + id: 'umami', + name: 'Umami', + version: 'v2.12.1', + description: 'Umami is a simple, fast, privacy-focused alternative to Google Analytics.', + logo: 'umami.png', + links: { + github: 'https://github.com/umami-software/umami', + website: 'https://umami.is', + docs: 'https://umami.is/docs', + }, + tags: ['analytics'], + load: () => import('./umami/index').then((m) => m.generate), } ]; diff --git a/templates/umami/docker-compose.yml b/templates/umami/docker-compose.yml new file mode 100644 index 000000000..17e05bf53 --- /dev/null +++ b/templates/umami/docker-compose.yml @@ -0,0 +1,46 @@ +services: + umami: + image: ghcr.io/umami-software/umami:postgresql-latest + restart: always + healthcheck: + test: ["CMD-SHELL", "curl http://localhost:3000/api/heartbeat"] + interval: 5s + timeout: 5s + retries: 5 + depends_on: + db: + condition: service_healthy + ports: + - ${UMAMI_PORT} + networks: + - dokploy-network + environment: + DATABASE_URL: postgresql://umami:umami@db:5432/umami + DATABASE_TYPE: postgresql + APP_SECRET: ${APP_SECRET} + labels: + - "traefik.enable=true" + - "traefik.http.routers.${HASH}.rule=Host(`${UMAMI_HOST}`)" + - "traefik.http.services.${HASH}.loadbalancer.server.port=${UMAMI_PORT}" + db: + image: postgres:15-alpine + restart: always + healthcheck: + test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] + interval: 5s + timeout: 5s + retries: 5 + networks: + - dokploy-network + volumes: + - db-data:/var/lib/postgresql/data + environment: + POSTGRES_DB: umami + POSTGRES_USER: umami + POSTGRES_PASSWORD: umami + +networks: + dokploy-network: + external: true +volumes: + db-data: diff --git a/templates/umami/index.ts b/templates/umami/index.ts new file mode 100644 index 000000000..38ada2702 --- /dev/null +++ b/templates/umami/index.ts @@ -0,0 +1,24 @@ +import { + generateHash, + generateRandomDomain, + type Template, + type Schema, + generateBase64, +} from "../utils"; + +export function generate(schema: Schema): Template { + const mainServiceHash = generateHash(schema.projectName); + const randomDomain = generateRandomDomain(schema); + const randomSecret = generateBase64(); + + const envs = [ + `UMAMI_HOST=${randomDomain}`, + "UMAMI_PORT=3000", + `APP_SECRET=${randomSecret}`, + `HASH=${mainServiceHash}`, + ]; + + return { + envs, + }; +} From f684ba7b1f5b976ad9e9cee7abc85e0eec436c2e Mon Sep 17 00:00:00 2001 From: Krzysztof Durek <21038648+kdurek@users.noreply.github.com> Date: Sun, 14 Jul 2024 20:42:26 +0200 Subject: [PATCH 08/15] fix: change umami version --- templates/umami/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/umami/docker-compose.yml b/templates/umami/docker-compose.yml index 17e05bf53..43d843af1 100644 --- a/templates/umami/docker-compose.yml +++ b/templates/umami/docker-compose.yml @@ -1,6 +1,6 @@ services: umami: - image: ghcr.io/umami-software/umami:postgresql-latest + image: ghcr.io/umami-software/umami:postgresql-v2.12.1 restart: always healthcheck: test: ["CMD-SHELL", "curl http://localhost:3000/api/heartbeat"] From 7a5c71cda3d19b3893895f9e3b92cef4aef38c68 Mon Sep 17 00:00:00 2001 From: Krzysztof Durek <21038648+kdurek@users.noreply.github.com> Date: Mon, 15 Jul 2024 01:02:18 +0200 Subject: [PATCH 09/15] feat: update configs --- .husky/pre-commit | 1 + biome.json | 49 ++++++--- package.json | 14 ++- pnpm-lock.yaml | 268 ++++++++++++++++++++++++++++++++++++++++------ 4 files changed, 280 insertions(+), 52 deletions(-) create mode 100644 .husky/pre-commit diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 000000000..cb2c84d5c --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +pnpm lint-staged diff --git a/biome.json b/biome.json index dd7c1eb71..fe6fb6595 100644 --- a/biome.json +++ b/biome.json @@ -1,17 +1,34 @@ { - "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", - "linter":{ - "rules": { - "correctness":{ - "useExhaustiveDependencies": "off" - }, - "suspicious":{ - "noArrayIndexKey": "off" - }, - "a11y":{ - "noSvgWithoutTitle":"off" - } - } - } - -} \ No newline at end of file + "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", + "files": { + "ignore": ["node_modules/**", ".next/**", "drizzle/**"] + }, + "organizeImports": { + "enabled": true + }, + "linter": { + "rules": { + "complexity": { + "noUselessCatch": "off", + "noBannedTypes": "off" + }, + "correctness": { + "useExhaustiveDependencies": "off", + "noUnsafeOptionalChaining": "off" + }, + "style": { + "noNonNullAssertion": "off" + }, + "suspicious": { + "noArrayIndexKey": "off", + "noExplicitAny": "off", + "noRedeclare": "off" + }, + "a11y": { + "noSvgWithoutTitle": "off", + "useKeyWithClickEvents": "off", + "useAriaPropsForRole": "off" + } + } + } +} diff --git a/package.json b/package.json index 502ff347c..112c0e61a 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,8 @@ "db:push": "drizzle-kit --config ./server/db/drizzle.config.ts", "db:truncate": "tsx -r dotenv/config ./server/db/reset.ts", "db:studio": "drizzle-kit studio --config ./server/db/drizzle.config.ts", + "check": "biome check", + "format": "biome format", "lint": "biome lint", "db:seed": "tsx -r dotenv/config ./server/db/seed.ts", "db:clean": "tsx -r dotenv/config ./server/db/reset.ts", @@ -28,7 +30,8 @@ "docker:build:canary": "./docker/build.sh canary", "docker:push:canary": "./docker/push.sh canary", "version": "echo $(node -p \"require('./package.json').version\")", - "test": "vitest --config __test__/vitest.config.ts" + "test": "vitest --config __test__/vitest.config.ts", + "prepare": "husky" }, "dependencies": { "@aws-sdk/client-s3": "3.515.0", @@ -121,7 +124,7 @@ "zod": "^3.23.4" }, "devDependencies": { - "@biomejs/biome": "1.7.1", + "@biomejs/biome": "^1.8.3", "@types/bcrypt": "5.0.2", "@types/dockerode": "3.3.23", "@types/js-yaml": "4.0.9", @@ -138,6 +141,8 @@ "autoprefixer": "^10.4.14", "drizzle-kit": "^0.21.1", "esbuild": "0.20.2", + "husky": "^9.0.11", + "lint-staged": "^15.2.7", "localtunnel": "2.0.2", "postcss": "^8.4.31", "prettier": "^3.2.4", @@ -155,5 +160,10 @@ "engines": { "node": "^18.18.0", "pnpm": ">=8.15.4" + }, + "lint-staged": { + "*": [ + "biome check --write --no-errors-on-unmatched --files-ignore-unknown=true" + ] } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 821ec3f65..7c47af8c4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -272,8 +272,8 @@ dependencies: devDependencies: '@biomejs/biome': - specifier: 1.7.1 - version: 1.7.1 + specifier: ^1.8.3 + version: 1.8.3 '@types/bcrypt': specifier: 5.0.2 version: 5.0.2 @@ -322,6 +322,12 @@ devDependencies: esbuild: specifier: 0.20.2 version: 0.20.2 + husky: + specifier: ^9.0.11 + version: 9.0.11 + lint-staged: + specifier: ^15.2.7 + version: 15.2.7 localtunnel: specifier: 2.0.2 version: 2.0.2 @@ -1009,24 +1015,24 @@ packages: resolution: {integrity: sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==} dev: false - /@biomejs/biome@1.7.1: - resolution: {integrity: sha512-wb2UNoFXcgaMdKXKT5ytsYntaogl2FSTjDt20CZynF3v7OXQUcIpTrr+be3XoOGpoZRj3Ytq9TSpmplUREXmeA==} + /@biomejs/biome@1.8.3: + resolution: {integrity: sha512-/uUV3MV+vyAczO+vKrPdOW0Iaet7UnJMU4bNMinggGJTAnBPjCoLEYcyYtYHNnUNYlv4xZMH6hVIQCAozq8d5w==} engines: {node: '>=14.21.3'} hasBin: true requiresBuild: true optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.7.1 - '@biomejs/cli-darwin-x64': 1.7.1 - '@biomejs/cli-linux-arm64': 1.7.1 - '@biomejs/cli-linux-arm64-musl': 1.7.1 - '@biomejs/cli-linux-x64': 1.7.1 - '@biomejs/cli-linux-x64-musl': 1.7.1 - '@biomejs/cli-win32-arm64': 1.7.1 - '@biomejs/cli-win32-x64': 1.7.1 + '@biomejs/cli-darwin-arm64': 1.8.3 + '@biomejs/cli-darwin-x64': 1.8.3 + '@biomejs/cli-linux-arm64': 1.8.3 + '@biomejs/cli-linux-arm64-musl': 1.8.3 + '@biomejs/cli-linux-x64': 1.8.3 + '@biomejs/cli-linux-x64-musl': 1.8.3 + '@biomejs/cli-win32-arm64': 1.8.3 + '@biomejs/cli-win32-x64': 1.8.3 dev: true - /@biomejs/cli-darwin-arm64@1.7.1: - resolution: {integrity: sha512-qfLrIIB58dkgiY/1tgG6fSCBK22PZaSIf6blweZBsG6iMij05mEuJt50ne+zPnNFNUmt8t43NC/qOXT3iFHQBA==} + /@biomejs/cli-darwin-arm64@1.8.3: + resolution: {integrity: sha512-9DYOjclFpKrH/m1Oz75SSExR8VKvNSSsLnVIqdnKexj6NwmiMlKk94Wa1kZEdv6MCOHGHgyyoV57Cw8WzL5n3A==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] @@ -1034,8 +1040,8 @@ packages: dev: true optional: true - /@biomejs/cli-darwin-x64@1.7.1: - resolution: {integrity: sha512-OGeyNsEcp5VnKbF9/TBjPCTHNEOm7oHegEve07U3KZmzqfpw2Oe3i9DVW8t6vvj1TYbrwWYCld25H34kBDY7Vg==} + /@biomejs/cli-darwin-x64@1.8.3: + resolution: {integrity: sha512-UeW44L/AtbmOF7KXLCoM+9PSgPo0IDcyEUfIoOXYeANaNXXf9mLUwV1GeF2OWjyic5zj6CnAJ9uzk2LT3v/wAw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] @@ -1043,48 +1049,44 @@ packages: dev: true optional: true - /@biomejs/cli-linux-arm64-musl@1.7.1: - resolution: {integrity: sha512-giH0/CzLOJ+wbxLxd5Shnr5xQf5fGnTRWLDe3lzjaF7IplVydNCEeZJtncB01SvyA6DAFJsvQ4LNxzAOQfEVCg==} + /@biomejs/cli-linux-arm64-musl@1.8.3: + resolution: {integrity: sha512-9yjUfOFN7wrYsXt/T/gEWfvVxKlnh3yBpnScw98IF+oOeCYb5/b/+K7YNqKROV2i1DlMjg9g/EcN9wvj+NkMuQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - libc: [musl] requiresBuild: true dev: true optional: true - /@biomejs/cli-linux-arm64@1.7.1: - resolution: {integrity: sha512-MQDf5wErj1iBvlcxCyOa0XqZYN8WJrupVgbNnqhntO3yVATg8GxduVUn1fDSaolznkDRsj7Pz3Xu1esBFwvfmg==} + /@biomejs/cli-linux-arm64@1.8.3: + resolution: {integrity: sha512-fed2ji8s+I/m8upWpTJGanqiJ0rnlHOK3DdxsyVLZQ8ClY6qLuPc9uehCREBifRJLl/iJyQpHIRufLDeotsPtw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - libc: [glibc] requiresBuild: true dev: true optional: true - /@biomejs/cli-linux-x64-musl@1.7.1: - resolution: {integrity: sha512-ySNDtPhsLxU125IFHHAxfpoHBpkM56s4mEXeO70GZtgZay/o1h8IUPWCWf5Z7gKgc4jwgYN1U1U9xabI3hZVAg==} + /@biomejs/cli-linux-x64-musl@1.8.3: + resolution: {integrity: sha512-UHrGJX7PrKMKzPGoEsooKC9jXJMa28TUSMjcIlbDnIO4EAavCoVmNQaIuUSH0Ls2mpGMwUIf+aZJv657zfWWjA==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - libc: [musl] requiresBuild: true dev: true optional: true - /@biomejs/cli-linux-x64@1.7.1: - resolution: {integrity: sha512-3wmCsGcC3KZ4pfTknXHfyMMlXPMhgfXVAcG5GlrR+Tq2JGiAw0EUydaLpsSBEbcG7IxH6OiUZEJZ95kAycCHBA==} + /@biomejs/cli-linux-x64@1.8.3: + resolution: {integrity: sha512-I8G2QmuE1teISyT8ie1HXsjFRz9L1m5n83U1O6m30Kw+kPMPSKjag6QGUn+sXT8V+XWIZxFFBoTDEDZW2KPDDw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - libc: [glibc] requiresBuild: true dev: true optional: true - /@biomejs/cli-win32-arm64@1.7.1: - resolution: {integrity: sha512-8hIDakEqZn0i6+388noYKdZ0ZrovTwnvMU/Qp/oJou0G7EPVdXupOe0oxiQSdRN0W7f6CS/yjPCYuVGzDG6r0g==} + /@biomejs/cli-win32-arm64@1.8.3: + resolution: {integrity: sha512-J+Hu9WvrBevfy06eU1Na0lpc7uR9tibm9maHynLIoAjLZpQU3IW+OKHUtyL8p6/3pT2Ju5t5emReeIS2SAxhkQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] @@ -1092,8 +1094,8 @@ packages: dev: true optional: true - /@biomejs/cli-win32-x64@1.7.1: - resolution: {integrity: sha512-3W9k3uH6Ea6VOpAS9xkkAlS0LTfnGQjmIUCegZ8SDtK2NgJ1gO+qdEkGJb0ltahusFTN1QxJ107dM7ASA9IUEg==} + /@biomejs/cli-win32-x64@1.8.3: + resolution: {integrity: sha512-/PJ59vA1pnQeKahemaQf4Nyj7IKUvGQSc3Ze1uIGi+Wvr1xF7rGobSrAAG01T/gUDG21vkDsZYM03NAmPiVkqg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] @@ -4587,6 +4589,7 @@ packages: /@swagger-api/apidom-ns-json-schema-draft-4@1.0.0-alpha.5: resolution: {integrity: sha512-aDmcpGikL5JZmDTg7J6EJfLFjtUmX/MfduS4hQeopFCkw91dZsqxO10j7KEiRVVuJBuGStbYoHI5aIsQTlebzA==} + requiresBuild: true dependencies: '@babel/runtime-corejs3': 7.24.7 '@swagger-api/apidom-ast': 1.0.0-alpha.5 @@ -5665,6 +5668,11 @@ packages: string-width: 4.2.3 dev: false + /ansi-escapes@6.2.1: + resolution: {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==} + engines: {node: '>=14.16'} + dev: true + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -5913,6 +5921,13 @@ packages: dependencies: fill-range: 7.0.1 + /braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.1.1 + dev: true + /browserslist@4.23.0: resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -6049,7 +6064,6 @@ packages: /chalk@5.3.0: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: false /character-entities-legacy@1.1.4: resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} @@ -6142,6 +6156,21 @@ packages: timers-ext: 0.1.7 dev: true + /cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + restore-cursor: 4.0.0 + dev: true + + /cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} + dependencies: + slice-ansi: 5.0.0 + string-width: 7.2.0 + dev: true + /client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} dev: false @@ -6229,6 +6258,10 @@ packages: hasBin: true dev: false + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: true + /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -6240,6 +6273,11 @@ packages: resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} dev: false + /commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + dev: true + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: false @@ -6791,6 +6829,10 @@ packages: /electron-to-chromium@1.4.708: resolution: {integrity: sha512-iWgEEvREL4GTXXHKohhh33+6Y8XkPI5eHihDmm8zUk5Zo7HICEW+wI/j5kJ2tbuNUCXJ/sNXa03ajW635DiJXA==} + /emoji-regex@10.3.0: + resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} + dev: true + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -7040,6 +7082,10 @@ packages: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} dev: false + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: true + /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -7128,6 +7174,13 @@ packages: dependencies: to-regex-range: 5.0.1 + /fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -7225,6 +7278,11 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + /get-east-asian-width@1.2.0: + resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} + engines: {node: '>=18'} + dev: true + /get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} dev: true @@ -7478,6 +7536,12 @@ packages: engines: {node: '>=16.17.0'} dev: true + /husky@9.0.11: + resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==} + engines: {node: '>=18'} + hasBin: true + dev: true + /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -7610,6 +7674,18 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + /is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + dev: true + + /is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} + dependencies: + get-east-asian-width: 1.2.0 + dev: true + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -7769,6 +7845,37 @@ packages: /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + /lint-staged@15.2.7: + resolution: {integrity: sha512-+FdVbbCZ+yoh7E/RosSdqKJyUM2OEjTciH0TFNkawKgvFp1zbGlEC39RADg+xKBG1R4mhoH2j85myBQZ5wR+lw==} + engines: {node: '>=18.12.0'} + hasBin: true + dependencies: + chalk: 5.3.0 + commander: 12.1.0 + debug: 4.3.4 + execa: 8.0.1 + lilconfig: 3.1.1 + listr2: 8.2.3 + micromatch: 4.0.7 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.4.5 + transitivePeerDependencies: + - supports-color + dev: true + + /listr2@8.2.3: + resolution: {integrity: sha512-Lllokma2mtoniUOS94CcOErHWAug5iu7HOmDrvWgpw8jyQH2fomgB+7lZS4HWZxytUuQwkGOwe49FvwVaA85Xw==} + engines: {node: '>=18.0.0'} + dependencies: + cli-truncate: 4.0.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 6.0.0 + rfdc: 1.4.1 + wrap-ansi: 9.0.0 + dev: true + /loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} @@ -7854,6 +7961,17 @@ packages: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: false + /log-update@6.0.0: + resolution: {integrity: sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==} + engines: {node: '>=18'} + dependencies: + ansi-escapes: 6.2.1 + cli-cursor: 4.0.0 + slice-ansi: 7.1.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 + dev: true + /long-timeout@0.1.1: resolution: {integrity: sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==} dev: false @@ -7973,6 +8091,14 @@ packages: braces: 3.0.2 picomatch: 2.3.1 + /micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + dev: true + /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -7997,6 +8123,11 @@ packages: hasBin: true dev: false + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -8382,6 +8513,13 @@ packages: dependencies: wrappy: 1.0.2 + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + /onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} @@ -8519,6 +8657,12 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + /pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + dev: true + /pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} @@ -9228,6 +9372,14 @@ packages: lowercase-keys: 3.0.0 dev: false + /restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + /ret@0.2.2: resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} engines: {node: '>=4'} @@ -9237,6 +9389,10 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + /rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + dev: true + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true @@ -9397,7 +9553,6 @@ packages: /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: false /signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} @@ -9428,6 +9583,22 @@ packages: engines: {node: '>=14.16'} dev: false + /slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + dev: true + + /slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + dev: true + /slugify@1.6.6: resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} engines: {node: '>=8.0.0'} @@ -9520,6 +9691,11 @@ packages: bare-events: 2.2.1 dev: false + /string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + dev: true + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -9536,6 +9712,15 @@ packages: emoji-regex: 9.2.2 strip-ansi: 7.1.0 + /string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + dependencies: + emoji-regex: 10.3.0 + get-east-asian-width: 1.2.0 + strip-ansi: 7.1.0 + dev: true + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: @@ -10443,6 +10628,15 @@ packages: string-width: 5.1.2 strip-ansi: 7.1.0 + /wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} + dependencies: + ansi-styles: 6.2.1 + string-width: 7.2.0 + strip-ansi: 7.1.0 + dev: true + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -10513,6 +10707,12 @@ packages: engines: {node: '>= 14'} hasBin: true + /yaml@2.4.5: + resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} + engines: {node: '>= 14'} + hasBin: true + dev: true + /yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} From 906e8de13b04dbef1e650d8c12472d1fbda01b5f Mon Sep 17 00:00:00 2001 From: Krzysztof Durek <21038648+kdurek@users.noreply.github.com> Date: Mon, 15 Jul 2024 01:08:18 +0200 Subject: [PATCH 10/15] chore: format whole repository with new configs --- __test__/compose/compose.test.ts | 4 +- __test__/compose/secrets/secret-root.test.ts | 6 +- __test__/compose/volume/volume-2.test.ts | 2 +- __test__/vitest.config.ts | 2 +- components.json | 32 +- components/auth/login-2fa.tsx | 14 +- .../cluster/modify-swarm-settings.tsx | 18 +- .../cluster/show-cluster-settings.tsx | 20 +- .../advanced/general/add-command.tsx | 16 +- .../application/advanced/ports/add-port.tsx | 14 +- .../application/advanced/ports/show-port.tsx | 4 +- .../advanced/ports/update-port.tsx | 16 +- .../advanced/redirects/add-redirect.tsx | 8 +- .../advanced/redirects/show-redirects.tsx | 2 +- .../advanced/redirects/update-redirect.tsx | 6 +- .../advanced/security/add-security.tsx | 4 +- .../advanced/security/show-security.tsx | 2 +- .../advanced/security/update-security.tsx | 2 +- .../show-application-advanced-settings.tsx | 2 +- .../advanced/traefik/show-traefik-config.tsx | 4 +- .../traefik/update-traefik-config.tsx | 21 +- .../advanced/volumes/add-volumes.tsx | 18 +- .../advanced/volumes/delete-volume.tsx | 2 +- .../advanced/volumes/show-volumes.tsx | 4 +- .../advanced/volumes/update-volume.tsx | 4 +- .../dashboard/application/build/show.tsx | 376 +++++++++--------- .../application/deployments/refresh-token.tsx | 2 +- .../deployments/show-deployments.tsx | 6 +- .../application/domains/add-domain.tsx | 2 +- .../application/domains/delete-domain.tsx | 2 +- .../application/domains/generate-domain.tsx | 4 +- .../domains/generate-traefikme.tsx | 2 +- .../application/domains/generate-wildcard.tsx | 2 +- .../application/domains/show-domains.tsx | 12 +- .../application/domains/update-domain.tsx | 2 +- .../application/environment/show.tsx | 16 +- .../general/generic/save-docker-provider.tsx | 10 +- .../dashboard/application/general/show.tsx | 4 +- .../dashboard/application/logs/show.tsx | 4 +- .../application/update-application.tsx | 16 +- .../compose/advanced/add-command.tsx | 16 +- .../compose/advanced/show-volumes.tsx | 6 +- .../deployments/refresh-token-compose.tsx | 2 +- .../deployments/show-deployments-compose.tsx | 8 +- .../dashboard/compose/enviroment/show.tsx | 16 +- .../dashboard/compose/general/actions.tsx | 16 +- .../compose/general/compose-file-editor.tsx | 10 +- .../compose/general/generic/show.tsx | 2 +- .../compose/general/randomize-compose.tsx | 4 +- components/dashboard/compose/general/show.tsx | 8 +- components/dashboard/compose/logs/show.tsx | 4 +- .../dashboard/compose/monitoring/show.tsx | 6 +- .../dashboard/compose/update-compose.tsx | 16 +- .../dashboard/database/backups/add-backup.tsx | 36 +- .../database/backups/update-backup.tsx | 32 +- .../dashboard/docker/logs/docker-logs-id.tsx | 2 +- .../docker/logs/show-docker-modal-logs.tsx | 4 +- components/dashboard/docker/show/colums.tsx | 2 +- .../dashboard/docker/show/show-containers.tsx | 4 +- .../docker/terminal/docker-terminal-modal.tsx | 2 +- .../docker/terminal/docker-terminal.tsx | 4 +- .../file-system/show-traefik-file.tsx | 4 +- .../file-system/show-traefik-system.tsx | 4 +- .../show-mariadb-advanced-settings.tsx | 16 +- .../advanced/show-mariadb-resources.tsx | 2 +- .../mariadb/backups/show-backup-mariadb.tsx | 18 +- .../environment/show-mariadb-environment.tsx | 12 +- .../show-external-mariadb-credentials.tsx | 2 +- .../mariadb/general/show-general-mariadb.tsx | 10 +- .../show-internal-mariadb-credentials.tsx | 4 +- .../mariadb/general/stop-mariadb.tsx | 106 ++--- .../dashboard/mariadb/start-mariadb.tsx | 106 ++--- .../dashboard/mariadb/update-mariadb.tsx | 16 +- .../mariadb/volumes/show-volumes.tsx | 6 +- .../advanced/show-mongo-advanced-settings.tsx | 16 +- .../mongo/advanced/show-mongo-resources.tsx | 2 +- .../mongo/backups/show-backup-mongo.tsx | 18 +- .../mongo/general/show-general-mongo.tsx | 10 +- .../show-internal-mongo-credentials.tsx | 4 +- .../dashboard/mongo/general/stop-mongo.tsx | 106 ++--- components/dashboard/mongo/start-mongo.tsx | 106 ++--- components/dashboard/mongo/update-mongo.tsx | 16 +- .../dashboard/mongo/volumes/show-volumes.tsx | 6 +- .../monitoring/docker/docker-block-chart.tsx | 10 +- .../monitoring/docker/docker-cpu-chart.tsx | 10 +- .../monitoring/docker/docker-disk-chart.tsx | 10 +- .../monitoring/docker/docker-memory-chart.tsx | 10 +- .../docker/docker-network-chart.tsx | 10 +- .../dashboard/monitoring/docker/show.tsx | 16 +- .../advanced/show-mysql-advanced-settings.tsx | 2 +- .../mysql/advanced/show-mysql-resources.tsx | 2 +- .../mysql/backups/show-backup-mysql.tsx | 18 +- .../environment/show-mysql-environment.tsx | 12 +- .../mysql/general/show-general-mysql.tsx | 10 +- .../show-internal-mysql-credentials.tsx | 4 +- .../dashboard/mysql/general/stop-mysql.tsx | 106 ++--- components/dashboard/mysql/start-mysql.tsx | 106 ++--- components/dashboard/mysql/update-mysql.tsx | 16 +- .../dashboard/mysql/volumes/show-volumes.tsx | 6 +- .../show-postgres-advanced-settings.tsx | 16 +- .../advanced/show-postgres-resources.tsx | 2 +- .../postgres/backups/show-backup-postgres.tsx | 18 +- .../environment/show-postgres-environment.tsx | 12 +- .../general/show-general-postgres.tsx | 10 +- .../show-internal-postgres-credentials.tsx | 4 +- .../postgres/general/stop-postgres.tsx | 106 ++--- .../dashboard/postgres/start-postgres.tsx | 106 ++--- .../dashboard/postgres/update-postgres.tsx | 16 +- .../postgres/volumes/show-volumes.tsx | 4 +- .../dashboard/project/add-application.tsx | 6 +- components/dashboard/project/add-compose.tsx | 18 +- components/dashboard/project/add-database.tsx | 2 +- components/dashboard/project/add-template.tsx | 32 +- components/dashboard/projects/add.tsx | 2 +- components/dashboard/projects/show.tsx | 2 +- components/dashboard/projects/update.tsx | 18 +- .../advanced/show-redis-advanced-settings.tsx | 16 +- .../redis/advanced/show-redis-resources.tsx | 2 +- .../environment/show-redis-environment.tsx | 12 +- .../redis/general/show-general-redis.tsx | 10 +- .../show-internal-redis-credentials.tsx | 4 +- .../dashboard/redis/general/stop-redis.tsx | 106 ++--- components/dashboard/redis/start-redis.tsx | 106 ++--- components/dashboard/redis/update-redis.tsx | 16 +- .../dashboard/redis/volumes/show-volumes.tsx | 4 +- .../dashboard/settings/appearance-form.tsx | 16 +- .../settings/certificates/add-certificate.tsx | 5 +- .../certificates/delete-certificate.tsx | 2 +- .../settings/cluster/nodes/add-node.tsx | 6 +- .../cluster/nodes/manager/add-manager.tsx | 4 +- .../settings/cluster/nodes/show-nodes.tsx | 30 +- .../cluster/nodes/workers/delete-worker.tsx | 4 +- .../cluster/registry/delete-registry.tsx | 2 +- .../settings/destination/add-destination.tsx | 2 +- .../destination/delete-destination.tsx | 2 +- .../destination/show-destinations.tsx | 2 +- .../destination/update-destination.tsx | 2 +- .../settings/github/remove-github-app.tsx | 8 +- .../dashboard/settings/profile/enable-2fa.tsx | 10 +- .../settings/profile/generate-token.tsx | 8 +- .../settings/profile/profile-form.tsx | 16 +- components/dashboard/settings/show.tsx | 12 +- .../settings/users/add-permissions.tsx | 4 +- .../dashboard/settings/users/add-user.tsx | 4 +- .../dashboard/settings/users/delete-user.tsx | 4 +- .../dashboard/settings/users/show-users.tsx | 36 +- .../dashboard/settings/users/update-user.tsx | 16 +- components/dashboard/settings/web-server.tsx | 12 +- .../web-server/docker-terminal-modal.tsx | 10 +- .../web-server/show-main-traefik-config.tsx | 4 +- .../settings/web-server/show-modal-logs.tsx | 7 +- .../show-server-middleware-config.tsx | 4 +- .../web-server/show-server-traefik-config.tsx | 4 +- .../settings/web-server/terminal-modal.tsx | 24 +- .../settings/web-server/terminal.tsx | 4 +- .../settings/web-server/update-server.tsx | 4 +- components/icons/data-tools-icons.tsx | 278 ++++++------- components/layouts/navbar.tsx | 6 +- components/layouts/navigation-tabs.tsx | 8 +- components/layouts/settings-layout.tsx | 6 +- components/shared/alert-block.tsx | 2 +- components/shared/code-editor.tsx | 10 +- components/shared/status-tooltip.tsx | 7 +- components/shared/toggle-visibility-input.tsx | 4 +- components/support/show-support.tsx | 2 +- components/ui/accordion.tsx | 86 ++-- components/ui/alert-dialog.tsx | 174 ++++---- components/ui/alert.tsx | 92 ++--- components/ui/avatar.tsx | 56 +-- components/ui/badge.tsx | 48 +-- components/ui/breadcrumb.tsx | 224 +++++------ components/ui/button.tsx | 128 +++--- components/ui/card.tsx | 100 ++--- components/ui/checkbox.tsx | 34 +- components/ui/command.tsx | 192 ++++----- components/ui/dialog.tsx | 152 ++++--- components/ui/dropdown-menu.tsx | 268 ++++++------- components/ui/file-tree.tsx | 8 +- components/ui/form.tsx | 4 +- components/ui/input-otp.tsx | 2 +- components/ui/input.tsx | 46 +-- components/ui/label.tsx | 22 +- components/ui/popover.tsx | 30 +- components/ui/progress.tsx | 42 +- components/ui/radio-group.tsx | 52 +-- components/ui/scroll-area.tsx | 2 +- components/ui/select.tsx | 218 +++++----- components/ui/separator.tsx | 38 +- components/ui/sheet.tsx | 176 ++++---- components/ui/sonner.tsx | 38 +- components/ui/switch.tsx | 34 +- components/ui/table.tsx | 142 +++---- components/ui/tabs.tsx | 2 +- components/ui/textarea.tsx | 26 +- components/ui/toggle.tsx | 58 +-- components/ui/tooltip.tsx | 24 +- lib/utils.ts | 6 +- next.config.mjs | 72 ++-- pages/api/[...trpc].ts | 6 +- pages/api/deploy/github.ts | 10 +- pages/api/redirect.ts | 6 +- pages/dashboard/docker.tsx | 2 +- .../[projectId]/services/mysql/[mysqlId].tsx | 10 +- .../services/postgres/[postgresId].tsx | 10 +- .../[projectId]/services/redis/[redisId].tsx | 10 +- pages/dashboard/settings/cluster.tsx | 2 +- pages/dashboard/traefik.tsx | 2 +- pages/index.tsx | 38 +- pages/swagger.tsx | 2 +- postcss.config.cjs | 8 +- server/api/root.ts | 44 +- server/api/routers/admin.ts | 12 +- server/api/routers/application.ts | 8 +- server/api/routers/auth.ts | 20 +- server/api/routers/backup.ts | 8 +- server/api/routers/certificate.ts | 2 +- server/api/routers/cluster.ts | 10 +- server/api/routers/compose.ts | 58 +-- server/api/routers/destination.ts | 2 +- server/api/routers/docker.ts | 4 +- server/api/routers/mariadb.ts | 2 +- server/api/routers/mongo.ts | 2 +- server/api/routers/mysql.ts | 4 +- server/api/routers/port.ts | 2 +- server/api/routers/postgres.ts | 2 +- server/api/routers/project.ts | 20 +- server/api/routers/redirects.ts | 2 +- server/api/routers/redis.ts | 2 +- server/api/routers/registry.ts | 8 +- server/api/routers/security.ts | 2 +- server/api/routers/settings.ts | 48 +-- server/api/services/admin.ts | 4 +- server/api/services/application.ts | 12 +- server/api/services/auth.ts | 4 +- server/api/services/certificate.ts | 4 +- server/api/services/compose.ts | 18 +- server/api/services/domain.ts | 6 +- server/api/services/mariadb.ts | 4 +- server/api/services/mongo.ts | 4 +- server/api/services/mount.ts | 4 +- server/api/services/mysql.ts | 4 +- server/api/services/postgres.ts | 4 +- server/api/services/redis.ts | 4 +- server/api/services/registry.ts | 14 +- server/api/services/security.ts | 8 +- server/api/services/settings.ts | 4 +- server/api/trpc.ts | 4 +- server/auth/auth.ts | 10 +- server/auth/token.ts | 4 +- server/constants/index.ts | 2 +- server/db/index.ts | 4 +- server/db/reset.ts | 2 +- server/db/schema/admin.ts | 8 +- server/db/schema/application.ts | 26 +- server/db/schema/auth.ts | 14 +- server/db/schema/backups.ts | 16 +- server/db/schema/certificate.ts | 6 +- server/db/schema/compose.ts | 20 +- server/db/schema/deployment.ts | 8 +- server/db/schema/destination.ts | 6 +- server/db/schema/domain.ts | 2 +- server/db/schema/mariadb.ts | 12 +- server/db/schema/mongo.ts | 12 +- server/db/schema/mount.ts | 12 +- server/db/schema/mysql.ts | 12 +- server/db/schema/port.ts | 6 +- server/db/schema/postgres.ts | 12 +- server/db/schema/project.ts | 16 +- server/db/schema/redirects.ts | 2 +- server/db/schema/redis.ts | 10 +- server/db/schema/registry.ts | 8 +- server/db/schema/security.ts | 2 +- server/db/schema/session.ts | 2 +- server/db/schema/source.ts | 6 +- server/db/schema/user.ts | 8 +- server/db/seed.ts | 2 +- server/monitoring/utilts.ts | 2 +- server/queues/deployments-queue.ts | 2 +- server/queues/queueSetup.ts | 2 +- server/server.ts | 20 +- server/setup/config-paths.ts | 4 +- server/setup/postgres-setup.ts | 2 +- server/setup/registry-setup.ts | 4 +- server/setup/traefik-setup.ts | 12 +- server/types/with.ts | 32 +- server/utils/backups/index.ts | 10 +- server/utils/backups/mariadb.ts | 4 +- server/utils/backups/mongo.ts | 4 +- server/utils/backups/mysql.ts | 6 +- server/utils/backups/postgres.ts | 6 +- server/utils/backups/utils.ts | 10 +- server/utils/builders/compose.ts | 8 +- server/utils/builders/docker-file.ts | 60 +-- server/utils/builders/heroku.ts | 2 +- server/utils/builders/index.ts | 2 +- server/utils/builders/nixpacks.ts | 2 +- server/utils/builders/paketo.ts | 4 +- server/utils/cluster/upload.ts | 2 +- server/utils/databases/mariadb.ts | 2 +- server/utils/databases/mongo.ts | 4 +- server/utils/databases/mysql.ts | 6 +- server/utils/databases/postgres.ts | 6 +- server/utils/databases/redis.ts | 6 +- server/utils/docker/compose.ts | 4 +- server/utils/docker/utils.ts | 2 +- server/utils/filesystem/ssh.ts | 94 ++--- server/utils/providers/github.ts | 2 +- server/utils/providers/raw.ts | 6 +- server/utils/traefik/domain.ts | 4 +- server/utils/traefik/middleware.ts | 4 +- server/utils/traefik/redirect.ts | 2 +- server/utils/traefik/registry.ts | 8 +- server/utils/traefik/security.ts | 12 +- server/utils/traefik/web-server.ts | 12 +- server/wss/docker-container-logs.ts | 2 +- server/wss/docker-container-terminal.ts | 2 +- server/wss/docker-stats.ts | 2 +- server/wss/listen-deployment.ts | 2 +- server/wss/terminal.ts | 8 +- server/wss/utils.ts | 16 +- setup.ts | 8 +- templates/appsmith/index.ts | 4 +- templates/baserow/index.ts | 4 +- templates/calcom/index.ts | 14 +- templates/directus/index.ts | 4 +- templates/documenso/index.ts | 8 +- templates/doublezero/index.ts | 6 +- templates/excalidraw/index.ts | 4 +- templates/ghost/index.ts | 4 +- templates/glitchtip/index.ts | 6 +- templates/grafana/index.ts | 4 +- templates/listmonk/index.ts | 10 +- templates/meilisearch/index.ts | 6 +- templates/metabase/index.ts | 4 +- templates/minio/index.ts | 4 +- templates/n8n/index.ts | 4 +- templates/nocodb/index.ts | 10 +- templates/odoo/index.ts | 4 +- templates/open-webui/index.ts | 8 +- templates/phpmyadmin/index.ts | 6 +- templates/plausible/index.ts | 6 +- templates/pocketbase/index.ts | 4 +- templates/rocketchat/index.ts | 4 +- templates/templates.ts | 67 ++-- templates/uptime-kuma/index.ts | 4 +- templates/utils/index.ts | 4 +- templates/wordpress/index.ts | 4 +- tsconfig.json | 83 ++-- tsconfig.server.json | 28 +- 349 files changed, 3565 insertions(+), 3549 deletions(-) diff --git a/__test__/compose/compose.test.ts b/__test__/compose/compose.test.ts index 675cb7729..1e728b997 100644 --- a/__test__/compose/compose.test.ts +++ b/__test__/compose/compose.test.ts @@ -1,7 +1,7 @@ -import { expect, test } from "vitest"; -import { load } from "js-yaml"; import { addPrefixToAllProperties } from "@/server/utils/docker/compose"; import type { ComposeSpecification } from "@/server/utils/docker/types"; +import { load } from "js-yaml"; +import { expect, test } from "vitest"; const composeFile1 = ` version: "3.8" diff --git a/__test__/compose/secrets/secret-root.test.ts b/__test__/compose/secrets/secret-root.test.ts index 861343a26..61f9f818d 100644 --- a/__test__/compose/secrets/secret-root.test.ts +++ b/__test__/compose/secrets/secret-root.test.ts @@ -1,8 +1,8 @@ -import { expect, test } from "vitest"; -import { load, dump } from "js-yaml"; import { generateRandomHash } from "@/server/utils/docker/compose"; -import type { ComposeSpecification } from "@/server/utils/docker/types"; import { addPrefixToSecretsRoot } from "@/server/utils/docker/compose/secrets"; +import type { ComposeSpecification } from "@/server/utils/docker/types"; +import { dump, load } from "js-yaml"; +import { expect, test } from "vitest"; test("Generate random hash with 8 characters", () => { const hash = generateRandomHash(); diff --git a/__test__/compose/volume/volume-2.test.ts b/__test__/compose/volume/volume-2.test.ts index 41581844e..57bfb7618 100644 --- a/__test__/compose/volume/volume-2.test.ts +++ b/__test__/compose/volume/volume-2.test.ts @@ -1,7 +1,7 @@ import { generateRandomHash } from "@/server/utils/docker/compose"; import { - addPrefixToVolumesRoot, addPrefixToAllVolumes, + addPrefixToVolumesRoot, } from "@/server/utils/docker/compose/volume"; import type { ComposeSpecification } from "@/server/utils/docker/types"; import { load } from "js-yaml"; diff --git a/__test__/vitest.config.ts b/__test__/vitest.config.ts index 4127903f8..71749b6c2 100644 --- a/__test__/vitest.config.ts +++ b/__test__/vitest.config.ts @@ -1,5 +1,5 @@ -import { defineConfig } from "vitest/config"; import tsconfigPaths from "vite-tsconfig-paths"; +import { defineConfig } from "vitest/config"; export default defineConfig({ plugins: [ diff --git a/components.json b/components.json index b4baac4f4..81104c1e9 100644 --- a/components.json +++ b/components.json @@ -1,17 +1,17 @@ { - "$schema": "https://ui.shadcn.com/schema.json", - "style": "default", - "rsc": false, - "tsx": true, - "tailwind": { - "config": "tailwind.config.ts", - "css": "styles/globals.css", - "baseColor": "zinc", - "cssVariables": true, - "prefix": "" - }, - "aliases": { - "components": "@/components", - "utils": "@/lib/utils" - } -} \ No newline at end of file + "$schema": "https://ui.shadcn.com/schema.json", + "style": "default", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "tailwind.config.ts", + "css": "styles/globals.css", + "baseColor": "zinc", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils" + } +} diff --git a/components/auth/login-2fa.tsx b/components/auth/login-2fa.tsx index 6bf03d0c3..7c4915fa6 100644 --- a/components/auth/login-2fa.tsx +++ b/components/auth/login-2fa.tsx @@ -10,19 +10,19 @@ import { } from "@/components/ui/form"; import { CardTitle } from "@/components/ui/card"; -import { api } from "@/utils/api"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { AlertTriangle } from "lucide-react"; -import { useEffect } from "react"; -import { useForm } from "react-hook-form"; -import { toast } from "sonner"; -import { z } from "zod"; import { InputOTP, InputOTPGroup, InputOTPSlot, } from "@/components/ui/input-otp"; +import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { AlertTriangle } from "lucide-react"; import { useRouter } from "next/router"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; const Login2FASchema = z.object({ pin: z.string().min(6, { diff --git a/components/dashboard/application/advanced/cluster/modify-swarm-settings.tsx b/components/dashboard/application/advanced/cluster/modify-swarm-settings.tsx index 3e2730c9f..fd91703b2 100644 --- a/components/dashboard/application/advanced/cluster/modify-swarm-settings.tsx +++ b/components/dashboard/application/advanced/cluster/modify-swarm-settings.tsx @@ -1,3 +1,5 @@ +import { AlertBlock } from "@/components/shared/alert-block"; +import { CodeEditor } from "@/components/shared/code-editor"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -17,21 +19,19 @@ import { FormLabel, FormMessage, } from "@/components/ui/form"; -import { api } from "@/utils/api"; -import { AlertBlock } from "@/components/shared/alert-block"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { useEffect } from "react"; -import { useForm } from "react-hook-form"; -import { toast } from "sonner"; -import { z } from "zod"; -import { HelpCircle, Settings } from "lucide-react"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; -import { CodeEditor } from "@/components/shared/code-editor"; +import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { HelpCircle, Settings } from "lucide-react"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; const HealthCheckSwarmSchema = z .object({ diff --git a/components/dashboard/application/advanced/cluster/show-cluster-settings.tsx b/components/dashboard/application/advanced/cluster/show-cluster-settings.tsx index da69aedb8..4078ae4c1 100644 --- a/components/dashboard/application/advanced/cluster/show-cluster-settings.tsx +++ b/components/dashboard/application/advanced/cluster/show-cluster-settings.tsx @@ -1,4 +1,5 @@ -import React from "react"; +import { AlertBlock } from "@/components/shared/alert-block"; +import { Button } from "@/components/ui/button"; import { Card, CardContent, @@ -6,8 +7,6 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import { api } from "@/utils/api"; -import { z } from "zod"; import { Form, FormControl, @@ -16,11 +15,6 @@ import { FormLabel, FormMessage, } from "@/components/ui/form"; -import { toast } from "sonner"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { useForm } from "react-hook-form"; -import { useEffect } from "react"; -import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Select, @@ -31,10 +25,16 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; -import Link from "next/link"; +import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; import { Server } from "lucide-react"; +import Link from "next/link"; +import React from "react"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; import { AddSwarmSettings } from "./modify-swarm-settings"; -import { AlertBlock } from "@/components/shared/alert-block"; interface Props { applicationId: string; diff --git a/components/dashboard/application/advanced/general/add-command.tsx b/components/dashboard/application/advanced/general/add-command.tsx index a898607d7..979660bcc 100644 --- a/components/dashboard/application/advanced/general/add-command.tsx +++ b/components/dashboard/application/advanced/general/add-command.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { Button } from "@/components/ui/button"; import { Card, CardContent, @@ -6,8 +6,6 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import { api } from "@/utils/api"; -import { z } from "zod"; import { Form, FormControl, @@ -16,12 +14,14 @@ import { FormLabel, FormMessage, } from "@/components/ui/form"; -import { toast } from "sonner"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { useForm } from "react-hook-form"; -import { useEffect } from "react"; -import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; +import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import React from "react"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; interface Props { applicationId: string; } diff --git a/components/dashboard/application/advanced/ports/add-port.tsx b/components/dashboard/application/advanced/ports/add-port.tsx index 76939d821..873baa679 100644 --- a/components/dashboard/application/advanced/ports/add-port.tsx +++ b/components/dashboard/application/advanced/ports/add-port.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -17,13 +18,6 @@ import { FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; -import { api } from "@/utils/api"; -import { AlertBlock } from "@/components/shared/alert-block"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { useEffect } from "react"; -import { useForm } from "react-hook-form"; -import { toast } from "sonner"; -import { PlusIcon } from "lucide-react"; import { Select, SelectContent, @@ -31,6 +25,12 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; +import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { PlusIcon } from "lucide-react"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; import { z } from "zod"; const AddPortSchema = z.object({ diff --git a/components/dashboard/application/advanced/ports/show-port.tsx b/components/dashboard/application/advanced/ports/show-port.tsx index ab5f40970..1ab804fb4 100644 --- a/components/dashboard/application/advanced/ports/show-port.tsx +++ b/components/dashboard/application/advanced/ports/show-port.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { AlertBlock } from "@/components/shared/alert-block"; import { Card, CardContent, @@ -8,10 +8,10 @@ import { } from "@/components/ui/card"; import { api } from "@/utils/api"; import { Rss } from "lucide-react"; +import React from "react"; import { AddPort } from "./add-port"; import { DeletePort } from "./delete-port"; import { UpdatePort } from "./update-port"; -import { AlertBlock } from "@/components/shared/alert-block"; interface Props { applicationId: string; } diff --git a/components/dashboard/application/advanced/ports/update-port.tsx b/components/dashboard/application/advanced/ports/update-port.tsx index 9742964e2..8f9d9cd7f 100644 --- a/components/dashboard/application/advanced/ports/update-port.tsx +++ b/components/dashboard/application/advanced/ports/update-port.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -17,14 +18,6 @@ import { FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; -import { api } from "@/utils/api"; -import { AlertBlock } from "@/components/shared/alert-block"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { PenBoxIcon, Pencil } from "lucide-react"; -import { useEffect } from "react"; -import { useForm } from "react-hook-form"; -import { toast } from "sonner"; -import { z } from "zod"; import { Select, SelectContent, @@ -32,6 +25,13 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; +import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { PenBoxIcon, Pencil } from "lucide-react"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; const UpdatePortSchema = z.object({ publishedPort: z.number().int().min(1).max(65535), diff --git a/components/dashboard/application/advanced/redirects/add-redirect.tsx b/components/dashboard/application/advanced/redirects/add-redirect.tsx index 4bcf2c567..661990a97 100644 --- a/components/dashboard/application/advanced/redirects/add-redirect.tsx +++ b/components/dashboard/application/advanced/redirects/add-redirect.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -11,22 +12,21 @@ import { import { Form, FormControl, + FormDescription, FormField, FormItem, FormLabel, - FormDescription, FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; +import { Switch } from "@/components/ui/switch"; import { api } from "@/utils/api"; -import { AlertBlock } from "@/components/shared/alert-block"; import { zodResolver } from "@hookform/resolvers/zod"; +import { PlusIcon } from "lucide-react"; import { useEffect } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; -import { PlusIcon } from "lucide-react"; import { z } from "zod"; -import { Switch } from "@/components/ui/switch"; const AddRedirectchema = z.object({ regex: z.string().min(1, "Regex required"), diff --git a/components/dashboard/application/advanced/redirects/show-redirects.tsx b/components/dashboard/application/advanced/redirects/show-redirects.tsx index 2a6e80a22..9a8325fc8 100644 --- a/components/dashboard/application/advanced/redirects/show-redirects.tsx +++ b/components/dashboard/application/advanced/redirects/show-redirects.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { Card, CardContent, @@ -8,6 +7,7 @@ import { } from "@/components/ui/card"; import { api } from "@/utils/api"; import { Split } from "lucide-react"; +import React from "react"; import { AddRedirect } from "./add-redirect"; import { DeleteRedirect } from "./delete-redirect"; import { UpdateRedirect } from "./update-redirect"; diff --git a/components/dashboard/application/advanced/redirects/update-redirect.tsx b/components/dashboard/application/advanced/redirects/update-redirect.tsx index 9643938bd..855f5c8c0 100644 --- a/components/dashboard/application/advanced/redirects/update-redirect.tsx +++ b/components/dashboard/application/advanced/redirects/update-redirect.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -11,22 +12,21 @@ import { import { Form, FormControl, + FormDescription, FormField, FormItem, FormLabel, - FormDescription, FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; +import { Switch } from "@/components/ui/switch"; import { api } from "@/utils/api"; -import { AlertBlock } from "@/components/shared/alert-block"; import { zodResolver } from "@hookform/resolvers/zod"; import { PenBoxIcon, Pencil } from "lucide-react"; import { useEffect } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; -import { Switch } from "@/components/ui/switch"; const UpdateRedirectSchema = z.object({ regex: z.string().min(1, "Regex required"), permanent: z.boolean().default(false), diff --git a/components/dashboard/application/advanced/security/add-security.tsx b/components/dashboard/application/advanced/security/add-security.tsx index 1f7c0d392..64dfd57ab 100644 --- a/components/dashboard/application/advanced/security/add-security.tsx +++ b/components/dashboard/application/advanced/security/add-security.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -18,12 +19,11 @@ import { } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { api } from "@/utils/api"; -import { AlertBlock } from "@/components/shared/alert-block"; import { zodResolver } from "@hookform/resolvers/zod"; +import { PlusIcon } from "lucide-react"; import { useEffect } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; -import { PlusIcon } from "lucide-react"; import { z } from "zod"; const AddSecuritychema = z.object({ diff --git a/components/dashboard/application/advanced/security/show-security.tsx b/components/dashboard/application/advanced/security/show-security.tsx index ef51e2c90..5c02bf76d 100644 --- a/components/dashboard/application/advanced/security/show-security.tsx +++ b/components/dashboard/application/advanced/security/show-security.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { Card, CardContent, @@ -8,6 +7,7 @@ import { } from "@/components/ui/card"; import { api } from "@/utils/api"; import { LockKeyhole } from "lucide-react"; +import React from "react"; import { AddSecurity } from "./add-security"; import { DeleteSecurity } from "./delete-security"; import { UpdateSecurity } from "./update-security"; diff --git a/components/dashboard/application/advanced/security/update-security.tsx b/components/dashboard/application/advanced/security/update-security.tsx index 9ff53c2e0..bb6e59aeb 100644 --- a/components/dashboard/application/advanced/security/update-security.tsx +++ b/components/dashboard/application/advanced/security/update-security.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -18,7 +19,6 @@ import { } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { api } from "@/utils/api"; -import { AlertBlock } from "@/components/shared/alert-block"; import { zodResolver } from "@hookform/resolvers/zod"; import { PenBoxIcon, Pencil } from "lucide-react"; import { useEffect } from "react"; diff --git a/components/dashboard/application/advanced/show-application-advanced-settings.tsx b/components/dashboard/application/advanced/show-application-advanced-settings.tsx index d01773319..56513465f 100644 --- a/components/dashboard/application/advanced/show-application-advanced-settings.tsx +++ b/components/dashboard/application/advanced/show-application-advanced-settings.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Card, @@ -21,7 +22,6 @@ import React, { useEffect } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; -import { AlertBlock } from "@/components/shared/alert-block"; const addResourcesApplication = z.object({ memoryReservation: z.number().nullable().optional(), diff --git a/components/dashboard/application/advanced/traefik/show-traefik-config.tsx b/components/dashboard/application/advanced/traefik/show-traefik-config.tsx index a3fb4f302..28d442648 100644 --- a/components/dashboard/application/advanced/traefik/show-traefik-config.tsx +++ b/components/dashboard/application/advanced/traefik/show-traefik-config.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { CodeEditor } from "@/components/shared/code-editor"; import { Card, CardContent, @@ -8,8 +8,8 @@ import { } from "@/components/ui/card"; import { api } from "@/utils/api"; import { File } from "lucide-react"; +import React from "react"; import { UpdateTraefikConfig } from "./update-traefik-config"; -import { CodeEditor } from "@/components/shared/code-editor"; interface Props { applicationId: string; } diff --git a/components/dashboard/application/advanced/traefik/update-traefik-config.tsx b/components/dashboard/application/advanced/traefik/update-traefik-config.tsx index 659353ec0..a185082be 100644 --- a/components/dashboard/application/advanced/traefik/update-traefik-config.tsx +++ b/components/dashboard/application/advanced/traefik/update-traefik-config.tsx @@ -1,3 +1,5 @@ +import { AlertBlock } from "@/components/shared/alert-block"; +import { CodeEditor } from "@/components/shared/code-editor"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -17,14 +19,12 @@ import { FormMessage, } from "@/components/ui/form"; import { api } from "@/utils/api"; -import { AlertBlock } from "@/components/shared/alert-block"; import { zodResolver } from "@hookform/resolvers/zod"; +import jsyaml from "js-yaml"; import { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; -import jsyaml from "js-yaml"; -import { CodeEditor } from "@/components/shared/code-editor"; const UpdateTraefikConfigSchema = z.object({ traefikConfig: z.string(), @@ -110,12 +110,15 @@ export const UpdateTraefikConfig = ({ applicationId }: Props) => { }; return ( - { - setOpen(open) - if (!open) { - form.reset(); - } - }}> + { + setOpen(open); + if (!open) { + form.reset(); + } + }} + > diff --git a/components/dashboard/application/advanced/volumes/add-volumes.tsx b/components/dashboard/application/advanced/volumes/add-volumes.tsx index 6b29bd7ef..6b882b7c1 100644 --- a/components/dashboard/application/advanced/volumes/add-volumes.tsx +++ b/components/dashboard/application/advanced/volumes/add-volumes.tsx @@ -1,8 +1,4 @@ -import { zodResolver } from "@hookform/resolvers/zod"; -import type React from "react"; -import { useEffect } from "react"; -import { useForm } from "react-hook-form"; -import { z } from "zod"; +import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, @@ -22,12 +18,16 @@ import { import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; -import { Button } from "@/components/ui/button"; -import { PlusIcon } from "lucide-react"; import { Textarea } from "@/components/ui/textarea"; -import { api } from "@/utils/api"; -import { toast } from "sonner"; import { cn } from "@/lib/utils"; +import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { PlusIcon } from "lucide-react"; +import type React from "react"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; interface Props { serviceId: string; serviceType: diff --git a/components/dashboard/application/advanced/volumes/delete-volume.tsx b/components/dashboard/application/advanced/volumes/delete-volume.tsx index 89e81f930..020a6c36a 100644 --- a/components/dashboard/application/advanced/volumes/delete-volume.tsx +++ b/components/dashboard/application/advanced/volumes/delete-volume.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { AlertDialog, AlertDialogAction, @@ -13,6 +12,7 @@ import { import { Button } from "@/components/ui/button"; import { api } from "@/utils/api"; import { TrashIcon } from "lucide-react"; +import React from "react"; import { toast } from "sonner"; interface Props { diff --git a/components/dashboard/application/advanced/volumes/show-volumes.tsx b/components/dashboard/application/advanced/volumes/show-volumes.tsx index 2d419e9ef..6c9b53980 100644 --- a/components/dashboard/application/advanced/volumes/show-volumes.tsx +++ b/components/dashboard/application/advanced/volumes/show-volumes.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { AlertBlock } from "@/components/shared/alert-block"; import { Card, CardContent, @@ -8,10 +8,10 @@ import { } from "@/components/ui/card"; import { api } from "@/utils/api"; import { AlertTriangle, Package } from "lucide-react"; +import React from "react"; import { AddVolumes } from "./add-volumes"; import { DeleteVolume } from "./delete-volume"; import { UpdateVolume } from "./update-volume"; -import { AlertBlock } from "@/components/shared/alert-block"; interface Props { applicationId: string; } diff --git a/components/dashboard/application/advanced/volumes/update-volume.tsx b/components/dashboard/application/advanced/volumes/update-volume.tsx index d11ee1422..34c17128b 100644 --- a/components/dashboard/application/advanced/volumes/update-volume.tsx +++ b/components/dashboard/application/advanced/volumes/update-volume.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -17,15 +18,14 @@ import { FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; +import { Textarea } from "@/components/ui/textarea"; import { api } from "@/utils/api"; -import { AlertBlock } from "@/components/shared/alert-block"; import { zodResolver } from "@hookform/resolvers/zod"; import { Pencil } from "lucide-react"; import { useEffect } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; -import { Textarea } from "@/components/ui/textarea"; const mountSchema = z.object({ mountPath: z.string().min(1, "Mount path required"), diff --git a/components/dashboard/application/build/show.tsx b/components/dashboard/application/build/show.tsx index d5c41a1be..aab78871a 100644 --- a/components/dashboard/application/build/show.tsx +++ b/components/dashboard/application/build/show.tsx @@ -1,213 +1,213 @@ -import { - Form, - FormControl, - FormField, - FormItem, - FormLabel, - FormMessage, -} from "@/components/ui/form"; +import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage, +} from "@/components/ui/form"; +import { Input } from "@/components/ui/input"; +import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; import { api } from "@/utils/api"; import { zodResolver } from "@hookform/resolvers/zod"; import { Cog } from "lucide-react"; import { useEffect } from "react"; import { useForm } from "react-hook-form"; -import { z } from "zod"; -import { Button } from "@/components/ui/button"; -import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; import { toast } from "sonner"; -import { Input } from "@/components/ui/input"; +import { z } from "zod"; enum BuildType { - dockerfile = "dockerfile", - heroku_buildpacks = "heroku_buildpacks", - paketo_buildpacks = "paketo_buildpacks", - nixpacks = "nixpacks", + dockerfile = "dockerfile", + heroku_buildpacks = "heroku_buildpacks", + paketo_buildpacks = "paketo_buildpacks", + nixpacks = "nixpacks", } const mySchema = z.discriminatedUnion("buildType", [ - z.object({ - buildType: z.literal("dockerfile"), - dockerfile: z - .string({ - required_error: "Dockerfile path is required", - invalid_type_error: "Dockerfile path is required", - }) - .min(1, "Dockerfile required"), - }), - z.object({ - buildType: z.literal("heroku_buildpacks"), - }), - z.object({ - buildType: z.literal("paketo_buildpacks"), - }), - z.object({ - buildType: z.literal("nixpacks"), - }), + z.object({ + buildType: z.literal("dockerfile"), + dockerfile: z + .string({ + required_error: "Dockerfile path is required", + invalid_type_error: "Dockerfile path is required", + }) + .min(1, "Dockerfile required"), + }), + z.object({ + buildType: z.literal("heroku_buildpacks"), + }), + z.object({ + buildType: z.literal("paketo_buildpacks"), + }), + z.object({ + buildType: z.literal("nixpacks"), + }), ]); type AddTemplate = z.infer; interface Props { - applicationId: string; + applicationId: string; } export const ShowBuildChooseForm = ({ applicationId }: Props) => { - const { mutateAsync, isLoading } = - api.application.saveBuildType.useMutation(); - const { data, refetch } = api.application.one.useQuery( - { - applicationId, - }, - { - enabled: !!applicationId, - }, - ); + const { mutateAsync, isLoading } = + api.application.saveBuildType.useMutation(); + const { data, refetch } = api.application.one.useQuery( + { + applicationId, + }, + { + enabled: !!applicationId, + }, + ); - const form = useForm({ - defaultValues: { - buildType: BuildType.nixpacks, - }, - resolver: zodResolver(mySchema), - }); + const form = useForm({ + defaultValues: { + buildType: BuildType.nixpacks, + }, + resolver: zodResolver(mySchema), + }); - const buildType = form.watch("buildType"); - useEffect(() => { - if (data) { - // TODO: refactor this - if (data.buildType === "dockerfile") { - form.reset({ - buildType: data.buildType, - ...(data.buildType && { - dockerfile: data.dockerfile || "", - }), - }); - } else { - form.reset({ - buildType: data.buildType, - }); - } - } - }, [form.formState.isSubmitSuccessful, form.reset, data, form]); + const buildType = form.watch("buildType"); + useEffect(() => { + if (data) { + // TODO: refactor this + if (data.buildType === "dockerfile") { + form.reset({ + buildType: data.buildType, + ...(data.buildType && { + dockerfile: data.dockerfile || "", + }), + }); + } else { + form.reset({ + buildType: data.buildType, + }); + } + } + }, [form.formState.isSubmitSuccessful, form.reset, data, form]); - const onSubmit = async (data: AddTemplate) => { - await mutateAsync({ - applicationId, - buildType: data.buildType, - dockerfile: data.buildType === "dockerfile" ? data.dockerfile : null, - }) - .then(async () => { - toast.success("Build type saved"); - await refetch(); - }) - .catch(() => { - toast.error("Error to save the build type"); - }); - }; + const onSubmit = async (data: AddTemplate) => { + await mutateAsync({ + applicationId, + buildType: data.buildType, + dockerfile: data.buildType === "dockerfile" ? data.dockerfile : null, + }) + .then(async () => { + toast.success("Build type saved"); + await refetch(); + }) + .catch(() => { + toast.error("Error to save the build type"); + }); + }; - return ( - - - -
- Build Type -

- Select the way of building your code -

-
-
- -
-
-
- -
- - { - return ( - - Build Type - - - - - - - - Dockerfile - - - - - - - - Nixpacks - - - - - - - - Heroku Buildpacks - - - - - - - - Paketo Buildpacks - - - - - - - ); - }} - /> - {buildType === "dockerfile" && ( - { - return ( - - Docker File - - - + return ( + + + +
+ Build Type +

+ Select the way of building your code +

+
+
+ +
+
+
+ + + + { + return ( + + Build Type + + + + + + + + Dockerfile + + + + + + + + Nixpacks + + + + + + + + Heroku Buildpacks + + + + + + + + Paketo Buildpacks + + + + + + + ); + }} + /> + {buildType === "dockerfile" && ( + { + return ( + + Docker File + + + - - - ); - }} - /> - )} -
- -
- - -
-
- ); + +
+ ); + }} + /> + )} +
+ +
+ + +
+
+ ); }; diff --git a/components/dashboard/application/deployments/refresh-token.tsx b/components/dashboard/application/deployments/refresh-token.tsx index c0d32db91..e633a9f4e 100644 --- a/components/dashboard/application/deployments/refresh-token.tsx +++ b/components/dashboard/application/deployments/refresh-token.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { AlertDialog, AlertDialogAction, @@ -12,6 +11,7 @@ import { } from "@/components/ui/alert-dialog"; import { api } from "@/utils/api"; import { RefreshCcw } from "lucide-react"; +import React from "react"; import { toast } from "sonner"; interface Props { diff --git a/components/dashboard/application/deployments/show-deployments.tsx b/components/dashboard/application/deployments/show-deployments.tsx index ff26dc849..31ed4e2b4 100644 --- a/components/dashboard/application/deployments/show-deployments.tsx +++ b/components/dashboard/application/deployments/show-deployments.tsx @@ -1,3 +1,5 @@ +import { DateTooltip } from "@/components/shared/date-tooltip"; +import { StatusTooltip } from "@/components/shared/status-tooltip"; import { Button } from "@/components/ui/button"; import { Card, @@ -10,10 +12,8 @@ import { api } from "@/utils/api"; import { RocketIcon } from "lucide-react"; import React, { useEffect, useState } from "react"; import { CancelQueues } from "./cancel-queues"; -import { ShowDeployment } from "./show-deployment"; -import { StatusTooltip } from "@/components/shared/status-tooltip"; -import { DateTooltip } from "@/components/shared/date-tooltip"; import { RefreshToken } from "./refresh-token"; +import { ShowDeployment } from "./show-deployment"; interface Props { applicationId: string; diff --git a/components/dashboard/application/domains/add-domain.tsx b/components/dashboard/application/domains/add-domain.tsx index 0cdc64865..17adf2755 100644 --- a/components/dashboard/application/domains/add-domain.tsx +++ b/components/dashboard/application/domains/add-domain.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -27,7 +28,6 @@ import { } from "@/components/ui/select"; import { Switch } from "@/components/ui/switch"; import { api } from "@/utils/api"; -import { AlertBlock } from "@/components/shared/alert-block"; import { zodResolver } from "@hookform/resolvers/zod"; import { PlusIcon } from "lucide-react"; import { useEffect } from "react"; diff --git a/components/dashboard/application/domains/delete-domain.tsx b/components/dashboard/application/domains/delete-domain.tsx index 80c2f194b..63bd3f305 100644 --- a/components/dashboard/application/domains/delete-domain.tsx +++ b/components/dashboard/application/domains/delete-domain.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { AlertDialog, AlertDialogAction, @@ -13,6 +12,7 @@ import { import { Button } from "@/components/ui/button"; import { api } from "@/utils/api"; import { TrashIcon } from "lucide-react"; +import React from "react"; import { toast } from "sonner"; interface Props { diff --git a/components/dashboard/application/domains/generate-domain.tsx b/components/dashboard/application/domains/generate-domain.tsx index 92ca19bd2..9ebe8e30c 100644 --- a/components/dashboard/application/domains/generate-domain.tsx +++ b/components/dashboard/application/domains/generate-domain.tsx @@ -7,11 +7,11 @@ import { DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; +import { api } from "@/utils/api"; import { RefreshCcw } from "lucide-react"; +import Link from "next/link"; import { GenerateTraefikMe } from "./generate-traefikme"; import { GenerateWildCard } from "./generate-wildcard"; -import Link from "next/link"; -import { api } from "@/utils/api"; interface Props { applicationId: string; diff --git a/components/dashboard/application/domains/generate-traefikme.tsx b/components/dashboard/application/domains/generate-traefikme.tsx index 264a626f1..3085b3a88 100644 --- a/components/dashboard/application/domains/generate-traefikme.tsx +++ b/components/dashboard/application/domains/generate-traefikme.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { AlertDialog, AlertDialogAction, @@ -13,6 +12,7 @@ import { import { Button } from "@/components/ui/button"; import { api } from "@/utils/api"; import { RefreshCcw } from "lucide-react"; +import React from "react"; import { toast } from "sonner"; interface Props { diff --git a/components/dashboard/application/domains/generate-wildcard.tsx b/components/dashboard/application/domains/generate-wildcard.tsx index 11babebdb..da4445527 100644 --- a/components/dashboard/application/domains/generate-wildcard.tsx +++ b/components/dashboard/application/domains/generate-wildcard.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { AlertDialog, AlertDialogAction, @@ -13,6 +12,7 @@ import { import { Button } from "@/components/ui/button"; import { api } from "@/utils/api"; import { SquareAsterisk } from "lucide-react"; +import React from "react"; import { toast } from "sonner"; interface Props { diff --git a/components/dashboard/application/domains/show-domains.tsx b/components/dashboard/application/domains/show-domains.tsx index d4df0366a..5aed35243 100644 --- a/components/dashboard/application/domains/show-domains.tsx +++ b/components/dashboard/application/domains/show-domains.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { Button } from "@/components/ui/button"; import { Card, CardContent, @@ -6,15 +6,15 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import { ExternalLink, GlobeIcon, RefreshCcw } from "lucide-react"; -import { Button } from "@/components/ui/button"; -import { api } from "@/utils/api"; import { Input } from "@/components/ui/input"; -import { DeleteDomain } from "./delete-domain"; +import { api } from "@/utils/api"; +import { ExternalLink, GlobeIcon, RefreshCcw } from "lucide-react"; import Link from "next/link"; +import React from "react"; import { AddDomain } from "./add-domain"; -import { UpdateDomain } from "./update-domain"; +import { DeleteDomain } from "./delete-domain"; import { GenerateDomain } from "./generate-domain"; +import { UpdateDomain } from "./update-domain"; interface Props { applicationId: string; diff --git a/components/dashboard/application/domains/update-domain.tsx b/components/dashboard/application/domains/update-domain.tsx index 7262c35ba..6614a4803 100644 --- a/components/dashboard/application/domains/update-domain.tsx +++ b/components/dashboard/application/domains/update-domain.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -27,7 +28,6 @@ import { } from "@/components/ui/select"; import { Switch } from "@/components/ui/switch"; import { api } from "@/utils/api"; -import { AlertBlock } from "@/components/shared/alert-block"; import { zodResolver } from "@hookform/resolvers/zod"; import { PenBoxIcon } from "lucide-react"; import { useEffect } from "react"; diff --git a/components/dashboard/application/environment/show.tsx b/components/dashboard/application/environment/show.tsx index 1e91e491e..359142c53 100644 --- a/components/dashboard/application/environment/show.tsx +++ b/components/dashboard/application/environment/show.tsx @@ -1,4 +1,5 @@ -import React, { useEffect, useState } from "react"; +import { CodeEditor } from "@/components/shared/code-editor"; +import { Button } from "@/components/ui/button"; import { Card, CardContent, @@ -6,10 +7,6 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import { Button } from "@/components/ui/button"; -import { z } from "zod"; -import { useForm } from "react-hook-form"; -import { zodResolver } from "@hookform/resolvers/zod"; import { Form, FormControl, @@ -17,11 +14,14 @@ import { FormItem, FormMessage, } from "@/components/ui/form"; -import { api } from "@/utils/api"; -import { toast } from "sonner"; import { Toggle } from "@/components/ui/toggle"; -import { CodeEditor } from "@/components/shared/code-editor"; +import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; import { EyeIcon, EyeOffIcon } from "lucide-react"; +import React, { useEffect, useState } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; const addEnvironmentSchema = z.object({ environment: z.string(), diff --git a/components/dashboard/application/general/generic/save-docker-provider.tsx b/components/dashboard/application/general/generic/save-docker-provider.tsx index ed129a4d7..d2a39e19f 100644 --- a/components/dashboard/application/general/generic/save-docker-provider.tsx +++ b/components/dashboard/application/general/generic/save-docker-provider.tsx @@ -1,8 +1,4 @@ import { Button } from "@/components/ui/button"; -import { Input } from "@/components/ui/input"; -import { z } from "zod"; -import { useForm } from "react-hook-form"; -import { zodResolver } from "@hookform/resolvers/zod"; import { Form, FormControl, @@ -11,9 +7,13 @@ import { FormLabel, FormMessage, } from "@/components/ui/form"; -import { useEffect } from "react"; +import { Input } from "@/components/ui/input"; import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; import { toast } from "sonner"; +import { z } from "zod"; const DockerProviderSchema = z.object({ dockerImage: z.string().min(1, { diff --git a/components/dashboard/application/general/show.tsx b/components/dashboard/application/general/show.tsx index b880edede..870f5d544 100644 --- a/components/dashboard/application/general/show.tsx +++ b/components/dashboard/application/general/show.tsx @@ -4,13 +4,13 @@ import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Toggle } from "@/components/ui/toggle"; import { api } from "@/utils/api"; +import { CheckCircle2, Terminal } from "lucide-react"; import React from "react"; import { toast } from "sonner"; +import { DockerTerminalModal } from "../../settings/web-server/docker-terminal-modal"; import { RedbuildApplication } from "../rebuild-application"; import { StartApplication } from "../start-application"; import { StopApplication } from "../stop-application"; -import { DockerTerminalModal } from "../../settings/web-server/docker-terminal-modal"; -import { CheckCircle2, Terminal } from "lucide-react"; import { DeployApplication } from "./deploy-application"; import { ResetApplication } from "./reset-application"; interface Props { diff --git a/components/dashboard/application/logs/show.tsx b/components/dashboard/application/logs/show.tsx index 94288f240..780eac401 100644 --- a/components/dashboard/application/logs/show.tsx +++ b/components/dashboard/application/logs/show.tsx @@ -1,4 +1,3 @@ -import dynamic from "next/dynamic"; import { Card, CardContent, @@ -6,6 +5,7 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; +import { Label } from "@/components/ui/label"; import { Select, SelectContent, @@ -16,8 +16,8 @@ import { SelectValue, } from "@/components/ui/select"; import { api } from "@/utils/api"; +import dynamic from "next/dynamic"; import { useEffect, useState } from "react"; -import { Label } from "@/components/ui/label"; export const DockerLogs = dynamic( () => import("@/components/dashboard/docker/logs/docker-logs-id").then( diff --git a/components/dashboard/application/update-application.tsx b/components/dashboard/application/update-application.tsx index 5dd58df0b..a769804da 100644 --- a/components/dashboard/application/update-application.tsx +++ b/components/dashboard/application/update-application.tsx @@ -1,3 +1,5 @@ +import { AlertBlock } from "@/components/shared/alert-block"; +import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, @@ -7,7 +9,6 @@ import { DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; -import { Button } from "@/components/ui/button"; import { Form, FormControl, @@ -16,16 +17,15 @@ import { FormLabel, FormMessage, } from "@/components/ui/form"; -import { useForm } from "react-hook-form"; -import { z } from "zod"; -import { AlertBlock } from "@/components/shared/alert-block"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { useEffect } from "react"; -import { toast } from "sonner"; import { Input } from "@/components/ui/input"; -import { AlertTriangle, SquarePen } from "lucide-react"; import { Textarea } from "@/components/ui/textarea"; import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { AlertTriangle, SquarePen } from "lucide-react"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; const updateApplicationSchema = z.object({ name: z.string().min(1, { diff --git a/components/dashboard/compose/advanced/add-command.tsx b/components/dashboard/compose/advanced/add-command.tsx index a16ed1730..44ce15c04 100644 --- a/components/dashboard/compose/advanced/add-command.tsx +++ b/components/dashboard/compose/advanced/add-command.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { Button } from "@/components/ui/button"; import { Card, CardContent, @@ -6,8 +6,6 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import { api } from "@/utils/api"; -import { z } from "zod"; import { Form, FormControl, @@ -17,12 +15,14 @@ import { FormLabel, FormMessage, } from "@/components/ui/form"; -import { toast } from "sonner"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { useForm } from "react-hook-form"; -import { useEffect } from "react"; -import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; +import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import React from "react"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; interface Props { composeId: string; } diff --git a/components/dashboard/compose/advanced/show-volumes.tsx b/components/dashboard/compose/advanced/show-volumes.tsx index 4756bb2ad..57b5ec576 100644 --- a/components/dashboard/compose/advanced/show-volumes.tsx +++ b/components/dashboard/compose/advanced/show-volumes.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { AlertBlock } from "@/components/shared/alert-block"; import { Card, CardContent, @@ -8,10 +8,10 @@ import { } from "@/components/ui/card"; import { api } from "@/utils/api"; import { Package } from "lucide-react"; -import { DeleteVolume } from "../../application/advanced/volumes/delete-volume"; +import React from "react"; import { AddVolumes } from "../../application/advanced/volumes/add-volumes"; +import { DeleteVolume } from "../../application/advanced/volumes/delete-volume"; import { UpdateVolume } from "../../application/advanced/volumes/update-volume"; -import { AlertBlock } from "@/components/shared/alert-block"; interface Props { composeId: string; } diff --git a/components/dashboard/compose/deployments/refresh-token-compose.tsx b/components/dashboard/compose/deployments/refresh-token-compose.tsx index 57a11d712..66d690e7a 100644 --- a/components/dashboard/compose/deployments/refresh-token-compose.tsx +++ b/components/dashboard/compose/deployments/refresh-token-compose.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { AlertDialog, AlertDialogAction, @@ -12,6 +11,7 @@ import { } from "@/components/ui/alert-dialog"; import { api } from "@/utils/api"; import { RefreshCcw } from "lucide-react"; +import React from "react"; import { toast } from "sonner"; interface Props { diff --git a/components/dashboard/compose/deployments/show-deployments-compose.tsx b/components/dashboard/compose/deployments/show-deployments-compose.tsx index b4de30b67..cb4210b36 100644 --- a/components/dashboard/compose/deployments/show-deployments-compose.tsx +++ b/components/dashboard/compose/deployments/show-deployments-compose.tsx @@ -1,3 +1,5 @@ +import { DateTooltip } from "@/components/shared/date-tooltip"; +import { StatusTooltip } from "@/components/shared/status-tooltip"; import { Button } from "@/components/ui/button"; import { Card, @@ -9,11 +11,9 @@ import { import { api } from "@/utils/api"; import { RocketIcon } from "lucide-react"; import React, { useEffect, useState } from "react"; -import { StatusTooltip } from "@/components/shared/status-tooltip"; -import { DateTooltip } from "@/components/shared/date-tooltip"; -import { ShowDeploymentCompose } from "./show-deployment-compose"; -import { RefreshTokenCompose } from "./refresh-token-compose"; import { CancelQueuesCompose } from "./cancel-queues-compose"; +import { RefreshTokenCompose } from "./refresh-token-compose"; +import { ShowDeploymentCompose } from "./show-deployment-compose"; interface Props { composeId: string; diff --git a/components/dashboard/compose/enviroment/show.tsx b/components/dashboard/compose/enviroment/show.tsx index 956443efe..4e9b2dfd5 100644 --- a/components/dashboard/compose/enviroment/show.tsx +++ b/components/dashboard/compose/enviroment/show.tsx @@ -1,4 +1,5 @@ -import React, { useEffect, useState } from "react"; +import { CodeEditor } from "@/components/shared/code-editor"; +import { Button } from "@/components/ui/button"; import { Card, CardContent, @@ -6,10 +7,6 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import { Button } from "@/components/ui/button"; -import { z } from "zod"; -import { useForm } from "react-hook-form"; -import { zodResolver } from "@hookform/resolvers/zod"; import { Form, FormControl, @@ -17,11 +14,14 @@ import { FormItem, FormMessage, } from "@/components/ui/form"; -import { api } from "@/utils/api"; -import { toast } from "sonner"; -import { CodeEditor } from "@/components/shared/code-editor"; import { Toggle } from "@/components/ui/toggle"; +import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; import { EyeIcon, EyeOffIcon } from "lucide-react"; +import React, { useEffect, useState } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; const addEnvironmentSchema = z.object({ environment: z.string(), diff --git a/components/dashboard/compose/general/actions.tsx b/components/dashboard/compose/general/actions.tsx index 0df188075..85ad45060 100644 --- a/components/dashboard/compose/general/actions.tsx +++ b/components/dashboard/compose/general/actions.tsx @@ -1,12 +1,4 @@ import { Button } from "@/components/ui/button"; -import { ExternalLink, Globe, Terminal } from "lucide-react"; -import { api } from "@/utils/api"; -import { toast } from "sonner"; -import { Toggle } from "@/components/ui/toggle"; -import { RedbuildCompose } from "./rebuild-compose"; -import { DeployCompose } from "./deploy-compose"; -import { StopCompose } from "./stop-compose"; -import { DockerTerminalModal } from "../../settings/web-server/docker-terminal-modal"; import { DropdownMenu, DropdownMenuContent, @@ -16,7 +8,15 @@ import { DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; +import { Toggle } from "@/components/ui/toggle"; +import { api } from "@/utils/api"; +import { ExternalLink, Globe, Terminal } from "lucide-react"; import Link from "next/link"; +import { toast } from "sonner"; +import { DockerTerminalModal } from "../../settings/web-server/docker-terminal-modal"; +import { DeployCompose } from "./deploy-compose"; +import { RedbuildCompose } from "./rebuild-compose"; +import { StopCompose } from "./stop-compose"; interface Props { composeId: string; diff --git a/components/dashboard/compose/general/compose-file-editor.tsx b/components/dashboard/compose/general/compose-file-editor.tsx index b78152690..035d6c417 100644 --- a/components/dashboard/compose/general/compose-file-editor.tsx +++ b/components/dashboard/compose/general/compose-file-editor.tsx @@ -1,5 +1,5 @@ -import { api } from "@/utils/api"; -import { useEffect } from "react"; +import { CodeEditor } from "@/components/shared/code-editor"; +import { Button } from "@/components/ui/button"; import { Form, FormControl, @@ -7,14 +7,14 @@ import { FormItem, FormMessage, } from "@/components/ui/form"; +import { api } from "@/utils/api"; import { zodResolver } from "@hookform/resolvers/zod"; +import { useEffect } from "react"; import { useForm } from "react-hook-form"; +import { toast } from "sonner"; import { z } from "zod"; import { validateAndFormatYAML } from "../../application/advanced/traefik/update-traefik-config"; -import { toast } from "sonner"; -import { Button } from "@/components/ui/button"; import { RandomizeCompose } from "./randomize-compose"; -import { CodeEditor } from "@/components/shared/code-editor"; interface Props { composeId: string; diff --git a/components/dashboard/compose/general/generic/show.tsx b/components/dashboard/compose/general/generic/show.tsx index 660a994cc..2db4248d5 100644 --- a/components/dashboard/compose/general/generic/show.tsx +++ b/components/dashboard/compose/general/generic/show.tsx @@ -4,9 +4,9 @@ import { api } from "@/utils/api"; import { GitBranch, LockIcon } from "lucide-react"; import Link from "next/link"; import { useState } from "react"; -import { SaveGithubProviderCompose } from "./save-github-provider-compose"; import { ComposeFileEditor } from "../compose-file-editor"; import { SaveGitProviderCompose } from "./save-git-provider-compose"; +import { SaveGithubProviderCompose } from "./save-github-provider-compose"; type TabState = "github" | "git" | "raw"; interface Props { diff --git a/components/dashboard/compose/general/randomize-compose.tsx b/components/dashboard/compose/general/randomize-compose.tsx index 76a9fd331..977dd2f6f 100644 --- a/components/dashboard/compose/general/randomize-compose.tsx +++ b/components/dashboard/compose/general/randomize-compose.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -7,12 +8,11 @@ import { DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; +import { Input } from "@/components/ui/input"; import { api } from "@/utils/api"; -import { AlertBlock } from "@/components/shared/alert-block"; import { Dices } from "lucide-react"; import { useState } from "react"; import { toast } from "sonner"; -import { Input } from "@/components/ui/input"; interface Props { composeId: string; diff --git a/components/dashboard/compose/general/show.tsx b/components/dashboard/compose/general/show.tsx index 39ea5ae92..d002b409c 100644 --- a/components/dashboard/compose/general/show.tsx +++ b/components/dashboard/compose/general/show.tsx @@ -1,3 +1,4 @@ +import { Badge } from "@/components/ui/badge"; import { Card, CardContent, @@ -5,11 +6,10 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import React from "react"; -import { ShowProviderFormCompose } from "./generic/show"; -import { ComposeActions } from "./actions"; -import { Badge } from "@/components/ui/badge"; import { api } from "@/utils/api"; +import React from "react"; +import { ComposeActions } from "./actions"; +import { ShowProviderFormCompose } from "./generic/show"; interface Props { composeId: string; } diff --git a/components/dashboard/compose/logs/show.tsx b/components/dashboard/compose/logs/show.tsx index f8b0d80a4..546b7cc70 100644 --- a/components/dashboard/compose/logs/show.tsx +++ b/components/dashboard/compose/logs/show.tsx @@ -1,4 +1,3 @@ -import dynamic from "next/dynamic"; import { Card, CardContent, @@ -6,6 +5,7 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; +import { Label } from "@/components/ui/label"; import { Select, SelectContent, @@ -16,8 +16,8 @@ import { SelectValue, } from "@/components/ui/select"; import { api } from "@/utils/api"; +import dynamic from "next/dynamic"; import { useEffect, useState } from "react"; -import { Label } from "@/components/ui/label"; export const DockerLogs = dynamic( () => import("@/components/dashboard/docker/logs/docker-logs-id").then( diff --git a/components/dashboard/compose/monitoring/show.tsx b/components/dashboard/compose/monitoring/show.tsx index 15c824f9b..0bb959c11 100644 --- a/components/dashboard/compose/monitoring/show.tsx +++ b/components/dashboard/compose/monitoring/show.tsx @@ -5,8 +5,7 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import { api } from "@/utils/api"; -import { useEffect, useState } from "react"; +import { Label } from "@/components/ui/label"; import { Select, SelectContent, @@ -16,7 +15,8 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; -import { Label } from "@/components/ui/label"; +import { api } from "@/utils/api"; +import { useEffect, useState } from "react"; import { DockerMonitoring } from "../../monitoring/docker/show"; interface Props { diff --git a/components/dashboard/compose/update-compose.tsx b/components/dashboard/compose/update-compose.tsx index e2651c28b..391801792 100644 --- a/components/dashboard/compose/update-compose.tsx +++ b/components/dashboard/compose/update-compose.tsx @@ -1,3 +1,5 @@ +import { AlertBlock } from "@/components/shared/alert-block"; +import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, @@ -7,7 +9,6 @@ import { DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; -import { Button } from "@/components/ui/button"; import { Form, FormControl, @@ -16,16 +17,15 @@ import { FormLabel, FormMessage, } from "@/components/ui/form"; -import { useForm } from "react-hook-form"; -import { z } from "zod"; -import { AlertBlock } from "@/components/shared/alert-block"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { useEffect } from "react"; -import { toast } from "sonner"; import { Input } from "@/components/ui/input"; -import { SquarePen } from "lucide-react"; import { Textarea } from "@/components/ui/textarea"; import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { SquarePen } from "lucide-react"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; const updateComposeSchema = z.object({ name: z.string().min(1, { diff --git a/components/dashboard/database/backups/add-backup.tsx b/components/dashboard/database/backups/add-backup.tsx index bfed02fd5..21f87fd55 100644 --- a/components/dashboard/database/backups/add-backup.tsx +++ b/components/dashboard/database/backups/add-backup.tsx @@ -1,4 +1,11 @@ import { Button } from "@/components/ui/button"; +import { + Command, + CommandEmpty, + CommandGroup, + CommandInput, + CommandItem, +} from "@/components/ui/command"; import { Dialog, DialogContent, @@ -11,36 +18,29 @@ import { import { Form, FormControl, + FormDescription, FormField, FormItem, FormLabel, - FormDescription, FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; -import { api } from "@/utils/api"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { PlusIcon } from "lucide-react"; -import { useEffect } from "react"; -import { useForm } from "react-hook-form"; -import { toast } from "sonner"; -import { CheckIcon, ChevronsUpDown } from "lucide-react"; -import { ScrollArea } from "@/components/ui/scroll-area"; -import { - Command, - CommandEmpty, - CommandGroup, - CommandInput, - CommandItem, -} from "@/components/ui/command"; import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; -import { z } from "zod"; -import { cn } from "@/lib/utils"; +import { ScrollArea } from "@/components/ui/scroll-area"; import { Switch } from "@/components/ui/switch"; +import { cn } from "@/lib/utils"; +import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { PlusIcon } from "lucide-react"; +import { CheckIcon, ChevronsUpDown } from "lucide-react"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; const AddPostgresBackup1Schema = z.object({ destinationId: z.string().min(1, "Destination required"), diff --git a/components/dashboard/database/backups/update-backup.tsx b/components/dashboard/database/backups/update-backup.tsx index 64b878efd..b18a663de 100644 --- a/components/dashboard/database/backups/update-backup.tsx +++ b/components/dashboard/database/backups/update-backup.tsx @@ -1,4 +1,11 @@ import { Button } from "@/components/ui/button"; +import { + Command, + CommandEmpty, + CommandGroup, + CommandInput, + CommandItem, +} from "@/components/ui/command"; import { Dialog, DialogContent, @@ -18,28 +25,21 @@ import { FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; -import { api } from "@/utils/api"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { Pencil, CheckIcon, ChevronsUpDown, PenBoxIcon } from "lucide-react"; -import { useEffect } from "react"; -import { useForm } from "react-hook-form"; -import { toast } from "sonner"; -import { ScrollArea } from "@/components/ui/scroll-area"; -import { z } from "zod"; -import { Switch } from "@/components/ui/switch"; -import { - Command, - CommandEmpty, - CommandGroup, - CommandInput, - CommandItem, -} from "@/components/ui/command"; import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; +import { ScrollArea } from "@/components/ui/scroll-area"; +import { Switch } from "@/components/ui/switch"; import { cn } from "@/lib/utils"; +import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { CheckIcon, ChevronsUpDown, PenBoxIcon, Pencil } from "lucide-react"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; const UpdateBackupSchema = z.object({ destinationId: z.string().min(1, "Destination required"), diff --git a/components/dashboard/docker/logs/docker-logs-id.tsx b/components/dashboard/docker/logs/docker-logs-id.tsx index d819e1a4c..be27aeda3 100644 --- a/components/dashboard/docker/logs/docker-logs-id.tsx +++ b/components/dashboard/docker/logs/docker-logs-id.tsx @@ -1,7 +1,7 @@ import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; -import React, { useEffect } from "react"; import { Terminal } from "@xterm/xterm"; +import React, { useEffect } from "react"; import { FitAddon } from "xterm-addon-fit"; import "@xterm/xterm/css/xterm.css"; diff --git a/components/dashboard/docker/logs/show-docker-modal-logs.tsx b/components/dashboard/docker/logs/show-docker-modal-logs.tsx index f8d52aa41..07678b6fd 100644 --- a/components/dashboard/docker/logs/show-docker-modal-logs.tsx +++ b/components/dashboard/docker/logs/show-docker-modal-logs.tsx @@ -1,5 +1,3 @@ -import dynamic from "next/dynamic"; -import React from "react"; import { Dialog, DialogContent, @@ -9,6 +7,8 @@ import { DialogTrigger, } from "@/components/ui/dialog"; import { DropdownMenuItem } from "@/components/ui/dropdown-menu"; +import dynamic from "next/dynamic"; +import type React from "react"; export const DockerLogsId = dynamic( () => import("@/components/dashboard/docker/logs/docker-logs-id").then( diff --git a/components/dashboard/docker/show/colums.tsx b/components/dashboard/docker/show/colums.tsx index 538dd685a..243ea4b3f 100644 --- a/components/dashboard/docker/show/colums.tsx +++ b/components/dashboard/docker/show/colums.tsx @@ -1,6 +1,6 @@ -import * as React from "react"; import type { ColumnDef } from "@tanstack/react-table"; import { ArrowUpDown, MoreHorizontal } from "lucide-react"; +import * as React from "react"; import { Button } from "@/components/ui/button"; import { diff --git a/components/dashboard/docker/show/show-containers.tsx b/components/dashboard/docker/show/show-containers.tsx index e8531de56..e8b56daee 100644 --- a/components/dashboard/docker/show/show-containers.tsx +++ b/components/dashboard/docker/show/show-containers.tsx @@ -1,4 +1,3 @@ -import * as React from "react"; import { type ColumnFiltersState, type SortingState, @@ -11,6 +10,7 @@ import { useReactTable, } from "@tanstack/react-table"; import { ChevronDown } from "lucide-react"; +import * as React from "react"; import { Button } from "@/components/ui/button"; import { @@ -28,7 +28,7 @@ import { TableHeader, TableRow, } from "@/components/ui/table"; -import { api, type RouterOutputs } from "@/utils/api"; +import { type RouterOutputs, api } from "@/utils/api"; import { columns } from "./colums"; export type Container = NonNullable< RouterOutputs["docker"]["getContainers"] diff --git a/components/dashboard/docker/terminal/docker-terminal-modal.tsx b/components/dashboard/docker/terminal/docker-terminal-modal.tsx index c4b6deef8..d8f87f393 100644 --- a/components/dashboard/docker/terminal/docker-terminal-modal.tsx +++ b/components/dashboard/docker/terminal/docker-terminal-modal.tsx @@ -6,8 +6,8 @@ import { DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; -import dynamic from "next/dynamic"; import { DropdownMenuItem } from "@/components/ui/dropdown-menu"; +import dynamic from "next/dynamic"; const Terminal = dynamic( () => import("./docker-terminal").then((e) => e.DockerTerminal), diff --git a/components/dashboard/docker/terminal/docker-terminal.tsx b/components/dashboard/docker/terminal/docker-terminal.tsx index 06244940b..03001af70 100644 --- a/components/dashboard/docker/terminal/docker-terminal.tsx +++ b/components/dashboard/docker/terminal/docker-terminal.tsx @@ -1,9 +1,9 @@ -import React, { useEffect, useRef } from "react"; import { Terminal } from "@xterm/xterm"; +import React, { useEffect, useRef } from "react"; import { FitAddon } from "xterm-addon-fit"; import "@xterm/xterm/css/xterm.css"; -import { AttachAddon } from "@xterm/addon-attach"; import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs"; +import { AttachAddon } from "@xterm/addon-attach"; interface Props { id: string; diff --git a/components/dashboard/file-system/show-traefik-file.tsx b/components/dashboard/file-system/show-traefik-file.tsx index a739ff4a5..34d94e626 100644 --- a/components/dashboard/file-system/show-traefik-file.tsx +++ b/components/dashboard/file-system/show-traefik-file.tsx @@ -1,5 +1,7 @@ import { Button } from "@/components/ui/button"; +import { AlertBlock } from "@/components/shared/alert-block"; +import { CodeEditor } from "@/components/shared/code-editor"; import { Form, FormControl, @@ -10,14 +12,12 @@ import { FormMessage, } from "@/components/ui/form"; import { api } from "@/utils/api"; -import { AlertBlock } from "@/components/shared/alert-block"; import { zodResolver } from "@hookform/resolvers/zod"; import { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; import { validateAndFormatYAML } from "../application/advanced/traefik/update-traefik-config"; -import { CodeEditor } from "@/components/shared/code-editor"; const UpdateServerMiddlewareConfigSchema = z.object({ traefikConfig: z.string(), diff --git a/components/dashboard/file-system/show-traefik-system.tsx b/components/dashboard/file-system/show-traefik-system.tsx index 0c153b4cf..e3e874c5a 100644 --- a/components/dashboard/file-system/show-traefik-system.tsx +++ b/components/dashboard/file-system/show-traefik-system.tsx @@ -1,8 +1,8 @@ import React from "react"; -import { api } from "@/utils/api"; -import { Workflow, Folder, FileIcon } from "lucide-react"; import { Tree } from "@/components/ui/file-tree"; +import { api } from "@/utils/api"; +import { FileIcon, Folder, Workflow } from "lucide-react"; import { cn } from "@/lib/utils"; import { ShowTraefikFile } from "./show-traefik-file"; diff --git a/components/dashboard/mariadb/advanced/show-mariadb-advanced-settings.tsx b/components/dashboard/mariadb/advanced/show-mariadb-advanced-settings.tsx index ae80d3302..062fffcdc 100644 --- a/components/dashboard/mariadb/advanced/show-mariadb-advanced-settings.tsx +++ b/components/dashboard/mariadb/advanced/show-mariadb-advanced-settings.tsx @@ -1,12 +1,5 @@ -import React, { useEffect } from "react"; -import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; -import { api } from "@/utils/api"; -import { z } from "zod"; -import { Input } from "@/components/ui/input"; -import { ShowMariadbResources } from "./show-mariadb-resources"; -import { toast } from "sonner"; -import { zodResolver } from "@hookform/resolvers/zod"; +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Form, FormControl, @@ -15,8 +8,15 @@ import { FormLabel, FormMessage, } from "@/components/ui/form"; +import { Input } from "@/components/ui/input"; +import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import React, { useEffect } from "react"; import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; import { ShowVolumes } from "../volumes/show-volumes"; +import { ShowMariadbResources } from "./show-mariadb-resources"; const addDockerImage = z.object({ dockerImage: z.string().min(1, "Docker image is required"), diff --git a/components/dashboard/mariadb/advanced/show-mariadb-resources.tsx b/components/dashboard/mariadb/advanced/show-mariadb-resources.tsx index e63927608..bbc5d2f5f 100644 --- a/components/dashboard/mariadb/advanced/show-mariadb-resources.tsx +++ b/components/dashboard/mariadb/advanced/show-mariadb-resources.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Card, @@ -21,7 +22,6 @@ import React, { useEffect } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; -import { AlertBlock } from "@/components/shared/alert-block"; const addResourcesMariadb = z.object({ memoryReservation: z.number().nullable().optional(), diff --git a/components/dashboard/mariadb/backups/show-backup-mariadb.tsx b/components/dashboard/mariadb/backups/show-backup-mariadb.tsx index c35922279..85353e8b0 100644 --- a/components/dashboard/mariadb/backups/show-backup-mariadb.tsx +++ b/components/dashboard/mariadb/backups/show-backup-mariadb.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { Button } from "@/components/ui/button"; import { Card, CardContent, @@ -6,20 +6,20 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import { Button } from "@/components/ui/button"; -import { api } from "@/utils/api"; -import { DatabaseBackup, Play } from "lucide-react"; -import Link from "next/link"; -import { AddBackup } from "../../database/backups/add-backup"; -import { DeleteBackup } from "../../database/backups/delete-backup"; -import { UpdateBackup } from "../../database/backups/update-backup"; -import { toast } from "sonner"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; +import { api } from "@/utils/api"; +import { DatabaseBackup, Play } from "lucide-react"; +import Link from "next/link"; +import React from "react"; +import { toast } from "sonner"; +import { AddBackup } from "../../database/backups/add-backup"; +import { DeleteBackup } from "../../database/backups/delete-backup"; +import { UpdateBackup } from "../../database/backups/update-backup"; interface Props { mariadbId: string; } diff --git a/components/dashboard/mariadb/environment/show-mariadb-environment.tsx b/components/dashboard/mariadb/environment/show-mariadb-environment.tsx index 2bb2fb2fa..807dcae07 100644 --- a/components/dashboard/mariadb/environment/show-mariadb-environment.tsx +++ b/components/dashboard/mariadb/environment/show-mariadb-environment.tsx @@ -1,4 +1,5 @@ -import React, { useEffect } from "react"; +import { CodeEditor } from "@/components/shared/code-editor"; +import { Button } from "@/components/ui/button"; import { Card, CardContent, @@ -6,10 +7,6 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import { Button } from "@/components/ui/button"; -import { z } from "zod"; -import { useForm } from "react-hook-form"; -import { zodResolver } from "@hookform/resolvers/zod"; import { Form, FormControl, @@ -18,8 +15,11 @@ import { FormMessage, } from "@/components/ui/form"; import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import React, { useEffect } from "react"; +import { useForm } from "react-hook-form"; import { toast } from "sonner"; -import { CodeEditor } from "@/components/shared/code-editor"; +import { z } from "zod"; const addEnvironmentSchema = z.object({ environment: z.string(), diff --git a/components/dashboard/mariadb/general/show-external-mariadb-credentials.tsx b/components/dashboard/mariadb/general/show-external-mariadb-credentials.tsx index 2f19d78bd..176ab7d06 100644 --- a/components/dashboard/mariadb/general/show-external-mariadb-credentials.tsx +++ b/components/dashboard/mariadb/general/show-external-mariadb-credentials.tsx @@ -1,3 +1,4 @@ +import { ToggleVisibilityInput } from "@/components/shared/toggle-visibility-input"; import { Button } from "@/components/ui/button"; import { Card, @@ -22,7 +23,6 @@ import React, { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; -import { ToggleVisibilityInput } from "@/components/shared/toggle-visibility-input"; const DockerProviderSchema = z.object({ externalPort: z.preprocess((a) => { diff --git a/components/dashboard/mariadb/general/show-general-mariadb.tsx b/components/dashboard/mariadb/general/show-general-mariadb.tsx index 77bc95ca1..44b6e39cb 100644 --- a/components/dashboard/mariadb/general/show-general-mariadb.tsx +++ b/components/dashboard/mariadb/general/show-general-mariadb.tsx @@ -1,13 +1,13 @@ -import React from "react"; -import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { api } from "@/utils/api"; -import { StopMariadb } from "./stop-mariadb"; -import { StartMariadb } from "../start-mariadb"; -import { DockerTerminalModal } from "../../settings/web-server/docker-terminal-modal"; import { Terminal } from "lucide-react"; +import React from "react"; +import { DockerTerminalModal } from "../../settings/web-server/docker-terminal-modal"; +import { StartMariadb } from "../start-mariadb"; import { DeployMariadb } from "./deploy-mariadb"; import { ResetMariadb } from "./reset-mariadb"; +import { StopMariadb } from "./stop-mariadb"; interface Props { mariadbId: string; diff --git a/components/dashboard/mariadb/general/show-internal-mariadb-credentials.tsx b/components/dashboard/mariadb/general/show-internal-mariadb-credentials.tsx index 869409d59..b409ac4d8 100644 --- a/components/dashboard/mariadb/general/show-internal-mariadb-credentials.tsx +++ b/components/dashboard/mariadb/general/show-internal-mariadb-credentials.tsx @@ -1,9 +1,9 @@ -import React from "react"; +import { ToggleVisibilityInput } from "@/components/shared/toggle-visibility-input"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { api } from "@/utils/api"; -import { ToggleVisibilityInput } from "@/components/shared/toggle-visibility-input"; +import React from "react"; interface Props { mariadbId: string; diff --git a/components/dashboard/mariadb/general/stop-mariadb.tsx b/components/dashboard/mariadb/general/stop-mariadb.tsx index 3dcc3cf38..17eb4bcdc 100644 --- a/components/dashboard/mariadb/general/stop-mariadb.tsx +++ b/components/dashboard/mariadb/general/stop-mariadb.tsx @@ -1,13 +1,13 @@ import { - AlertDialog, - AlertDialogAction, - AlertDialogCancel, - AlertDialogContent, - AlertDialogDescription, - AlertDialogFooter, - AlertDialogHeader, - AlertDialogTitle, - AlertDialogTrigger, + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, + AlertDialogTrigger, } from "@/components/ui/alert-dialog"; import { Button } from "@/components/ui/button"; import { api } from "@/utils/api"; @@ -15,51 +15,51 @@ import { Ban } from "lucide-react"; import { toast } from "sonner"; interface Props { - mariadbId: string; + mariadbId: string; } export const StopMariadb = ({ mariadbId }: Props) => { - const { mutateAsync, isLoading } = api.mariadb.stop.useMutation(); - const utils = api.useUtils(); - return ( - - - - - - - - Are you absolutely sure to stop the database? - - - This will stop the database - - - - Cancel - { - await mutateAsync({ - mariadbId, - }) - .then(async () => { - await utils.mariadb.one.invalidate({ - mariadbId, - }); - toast.success("Application stopped succesfully"); - }) - .catch(() => { - toast.error("Error to stop the Application"); - }); - }} - > - Confirm - - - - - ); + const { mutateAsync, isLoading } = api.mariadb.stop.useMutation(); + const utils = api.useUtils(); + return ( + + + + + + + + Are you absolutely sure to stop the database? + + + This will stop the database + + + + Cancel + { + await mutateAsync({ + mariadbId, + }) + .then(async () => { + await utils.mariadb.one.invalidate({ + mariadbId, + }); + toast.success("Application stopped succesfully"); + }) + .catch(() => { + toast.error("Error to stop the Application"); + }); + }} + > + Confirm + + + + + ); }; diff --git a/components/dashboard/mariadb/start-mariadb.tsx b/components/dashboard/mariadb/start-mariadb.tsx index 156322e4d..dff62cec3 100644 --- a/components/dashboard/mariadb/start-mariadb.tsx +++ b/components/dashboard/mariadb/start-mariadb.tsx @@ -1,13 +1,13 @@ import { - AlertDialog, - AlertDialogAction, - AlertDialogCancel, - AlertDialogContent, - AlertDialogDescription, - AlertDialogFooter, - AlertDialogHeader, - AlertDialogTitle, - AlertDialogTrigger, + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, + AlertDialogTrigger, } from "@/components/ui/alert-dialog"; import { Button } from "@/components/ui/button"; import { api } from "@/utils/api"; @@ -15,51 +15,51 @@ import { CheckCircle2 } from "lucide-react"; import { toast } from "sonner"; interface Props { - mariadbId: string; + mariadbId: string; } export const StartMariadb = ({ mariadbId }: Props) => { - const { mutateAsync, isLoading } = api.mariadb.start.useMutation(); - const utils = api.useUtils(); - return ( - - - - - - - - Are you sure to start the database? - - - This will start the database - - - - Cancel - { - await mutateAsync({ - mariadbId, - }) - .then(async () => { - await utils.mariadb.one.invalidate({ - mariadbId, - }); - toast.success("Database started succesfully"); - }) - .catch(() => { - toast.error("Error to start the Database"); - }); - }} - > - Confirm - - - - - ); + const { mutateAsync, isLoading } = api.mariadb.start.useMutation(); + const utils = api.useUtils(); + return ( + + + + + + + + Are you sure to start the database? + + + This will start the database + + + + Cancel + { + await mutateAsync({ + mariadbId, + }) + .then(async () => { + await utils.mariadb.one.invalidate({ + mariadbId, + }); + toast.success("Database started succesfully"); + }) + .catch(() => { + toast.error("Error to start the Database"); + }); + }} + > + Confirm + + + + + ); }; diff --git a/components/dashboard/mariadb/update-mariadb.tsx b/components/dashboard/mariadb/update-mariadb.tsx index 46ca19bd3..55b7e7e65 100644 --- a/components/dashboard/mariadb/update-mariadb.tsx +++ b/components/dashboard/mariadb/update-mariadb.tsx @@ -1,3 +1,5 @@ +import { AlertBlock } from "@/components/shared/alert-block"; +import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, @@ -7,7 +9,6 @@ import { DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; -import { Button } from "@/components/ui/button"; import { Form, FormControl, @@ -16,16 +17,15 @@ import { FormLabel, FormMessage, } from "@/components/ui/form"; -import { useForm } from "react-hook-form"; -import { z } from "zod"; -import { AlertBlock } from "@/components/shared/alert-block"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { useEffect } from "react"; -import { toast } from "sonner"; import { Input } from "@/components/ui/input"; -import { AlertTriangle, SquarePen } from "lucide-react"; import { Textarea } from "@/components/ui/textarea"; import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { AlertTriangle, SquarePen } from "lucide-react"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; const updateMariadbSchema = z.object({ name: z.string().min(1, { diff --git a/components/dashboard/mariadb/volumes/show-volumes.tsx b/components/dashboard/mariadb/volumes/show-volumes.tsx index cc7fb393f..1f1b909ba 100644 --- a/components/dashboard/mariadb/volumes/show-volumes.tsx +++ b/components/dashboard/mariadb/volumes/show-volumes.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { AlertBlock } from "@/components/shared/alert-block"; import { Card, CardContent, @@ -8,10 +8,10 @@ import { } from "@/components/ui/card"; import { api } from "@/utils/api"; import { AlertTriangle, Package } from "lucide-react"; -import { DeleteVolume } from "../../application/advanced/volumes/delete-volume"; +import React from "react"; import { AddVolumes } from "../../application/advanced/volumes/add-volumes"; +import { DeleteVolume } from "../../application/advanced/volumes/delete-volume"; import { UpdateVolume } from "../../application/advanced/volumes/update-volume"; -import { AlertBlock } from "@/components/shared/alert-block"; interface Props { mariadbId: string; } diff --git a/components/dashboard/mongo/advanced/show-mongo-advanced-settings.tsx b/components/dashboard/mongo/advanced/show-mongo-advanced-settings.tsx index 616634d02..cbb178f3e 100644 --- a/components/dashboard/mongo/advanced/show-mongo-advanced-settings.tsx +++ b/components/dashboard/mongo/advanced/show-mongo-advanced-settings.tsx @@ -1,11 +1,5 @@ -import React, { useEffect } from "react"; -import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; -import { api } from "@/utils/api"; -import { z } from "zod"; -import { Input } from "@/components/ui/input"; -import { toast } from "sonner"; -import { zodResolver } from "@hookform/resolvers/zod"; +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Form, FormControl, @@ -14,9 +8,15 @@ import { FormLabel, FormMessage, } from "@/components/ui/form"; +import { Input } from "@/components/ui/input"; +import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import React, { useEffect } from "react"; import { useForm } from "react-hook-form"; -import { ShowMongoResources } from "./show-mongo-resources"; +import { toast } from "sonner"; +import { z } from "zod"; import { ShowVolumes } from "../volumes/show-volumes"; +import { ShowMongoResources } from "./show-mongo-resources"; const addDockerImage = z.object({ dockerImage: z.string().min(1, "Docker image is required"), diff --git a/components/dashboard/mongo/advanced/show-mongo-resources.tsx b/components/dashboard/mongo/advanced/show-mongo-resources.tsx index 4036bf76f..85fbc5e19 100644 --- a/components/dashboard/mongo/advanced/show-mongo-resources.tsx +++ b/components/dashboard/mongo/advanced/show-mongo-resources.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Card, @@ -21,7 +22,6 @@ import React, { useEffect } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; -import { AlertBlock } from "@/components/shared/alert-block"; const addResourcesMongo = z.object({ memoryReservation: z.number().nullable().optional(), diff --git a/components/dashboard/mongo/backups/show-backup-mongo.tsx b/components/dashboard/mongo/backups/show-backup-mongo.tsx index 266105628..e54fe70d5 100644 --- a/components/dashboard/mongo/backups/show-backup-mongo.tsx +++ b/components/dashboard/mongo/backups/show-backup-mongo.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { Button } from "@/components/ui/button"; import { Card, CardContent, @@ -6,20 +6,20 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import { Button } from "@/components/ui/button"; -import { api } from "@/utils/api"; -import { DatabaseBackup, Play } from "lucide-react"; -import Link from "next/link"; -import { AddBackup } from "../../database/backups/add-backup"; -import { DeleteBackup } from "../../database/backups/delete-backup"; -import { UpdateBackup } from "../../database/backups/update-backup"; -import { toast } from "sonner"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; +import { api } from "@/utils/api"; +import { DatabaseBackup, Play } from "lucide-react"; +import Link from "next/link"; +import React from "react"; +import { toast } from "sonner"; +import { AddBackup } from "../../database/backups/add-backup"; +import { DeleteBackup } from "../../database/backups/delete-backup"; +import { UpdateBackup } from "../../database/backups/update-backup"; interface Props { mongoId: string; } diff --git a/components/dashboard/mongo/general/show-general-mongo.tsx b/components/dashboard/mongo/general/show-general-mongo.tsx index c6fcbc1ba..2e181c5fa 100644 --- a/components/dashboard/mongo/general/show-general-mongo.tsx +++ b/components/dashboard/mongo/general/show-general-mongo.tsx @@ -1,13 +1,13 @@ -import React from "react"; -import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { api } from "@/utils/api"; -import { StopMongo } from "./stop-mongo"; -import { StartMongo } from "../start-mongo"; -import { DockerTerminalModal } from "../../settings/web-server/docker-terminal-modal"; import { Terminal } from "lucide-react"; +import React from "react"; +import { DockerTerminalModal } from "../../settings/web-server/docker-terminal-modal"; +import { StartMongo } from "../start-mongo"; import { DeployMongo } from "./deploy-mongo"; import { ResetMongo } from "./reset-mongo"; +import { StopMongo } from "./stop-mongo"; interface Props { mongoId: string; } diff --git a/components/dashboard/mongo/general/show-internal-mongo-credentials.tsx b/components/dashboard/mongo/general/show-internal-mongo-credentials.tsx index 9fab4a8a8..6636688d9 100644 --- a/components/dashboard/mongo/general/show-internal-mongo-credentials.tsx +++ b/components/dashboard/mongo/general/show-internal-mongo-credentials.tsx @@ -1,9 +1,9 @@ -import React from "react"; +import { ToggleVisibilityInput } from "@/components/shared/toggle-visibility-input"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { api } from "@/utils/api"; -import { ToggleVisibilityInput } from "@/components/shared/toggle-visibility-input"; +import React from "react"; interface Props { mongoId: string; diff --git a/components/dashboard/mongo/general/stop-mongo.tsx b/components/dashboard/mongo/general/stop-mongo.tsx index b234a7019..09d2c372d 100644 --- a/components/dashboard/mongo/general/stop-mongo.tsx +++ b/components/dashboard/mongo/general/stop-mongo.tsx @@ -1,13 +1,13 @@ import { - AlertDialog, - AlertDialogAction, - AlertDialogCancel, - AlertDialogContent, - AlertDialogDescription, - AlertDialogFooter, - AlertDialogHeader, - AlertDialogTitle, - AlertDialogTrigger, + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, + AlertDialogTrigger, } from "@/components/ui/alert-dialog"; import { Button } from "@/components/ui/button"; import { api } from "@/utils/api"; @@ -15,51 +15,51 @@ import { Ban } from "lucide-react"; import { toast } from "sonner"; interface Props { - mongoId: string; + mongoId: string; } export const StopMongo = ({ mongoId }: Props) => { - const { mutateAsync, isLoading } = api.mongo.stop.useMutation(); - const utils = api.useUtils(); - return ( - - - - - - - - Are you absolutely sure to stop the database? - - - This will stop the database - - - - Cancel - { - await mutateAsync({ - mongoId, - }) - .then(async () => { - await utils.mongo.one.invalidate({ - mongoId, - }); - toast.success("Application stopped succesfully"); - }) - .catch(() => { - toast.error("Error to stop the Application"); - }); - }} - > - Confirm - - - - - ); + const { mutateAsync, isLoading } = api.mongo.stop.useMutation(); + const utils = api.useUtils(); + return ( + + + + + + + + Are you absolutely sure to stop the database? + + + This will stop the database + + + + Cancel + { + await mutateAsync({ + mongoId, + }) + .then(async () => { + await utils.mongo.one.invalidate({ + mongoId, + }); + toast.success("Application stopped succesfully"); + }) + .catch(() => { + toast.error("Error to stop the Application"); + }); + }} + > + Confirm + + + + + ); }; diff --git a/components/dashboard/mongo/start-mongo.tsx b/components/dashboard/mongo/start-mongo.tsx index 74c5c6011..3bc30862a 100644 --- a/components/dashboard/mongo/start-mongo.tsx +++ b/components/dashboard/mongo/start-mongo.tsx @@ -1,13 +1,13 @@ import { - AlertDialog, - AlertDialogAction, - AlertDialogCancel, - AlertDialogContent, - AlertDialogDescription, - AlertDialogFooter, - AlertDialogHeader, - AlertDialogTitle, - AlertDialogTrigger, + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, + AlertDialogTrigger, } from "@/components/ui/alert-dialog"; import { Button } from "@/components/ui/button"; import { api } from "@/utils/api"; @@ -15,51 +15,51 @@ import { CheckCircle2 } from "lucide-react"; import { toast } from "sonner"; interface Props { - mongoId: string; + mongoId: string; } export const StartMongo = ({ mongoId }: Props) => { - const { mutateAsync, isLoading } = api.mongo.start.useMutation(); - const utils = api.useUtils(); - return ( - - - - - - - - Are you sure to start the database? - - - This will start the database - - - - Cancel - { - await mutateAsync({ - mongoId, - }) - .then(async () => { - await utils.mongo.one.invalidate({ - mongoId, - }); - toast.success("Database started succesfully"); - }) - .catch(() => { - toast.error("Error to start the Database"); - }); - }} - > - Confirm - - - - - ); + const { mutateAsync, isLoading } = api.mongo.start.useMutation(); + const utils = api.useUtils(); + return ( + + + + + + + + Are you sure to start the database? + + + This will start the database + + + + Cancel + { + await mutateAsync({ + mongoId, + }) + .then(async () => { + await utils.mongo.one.invalidate({ + mongoId, + }); + toast.success("Database started succesfully"); + }) + .catch(() => { + toast.error("Error to start the Database"); + }); + }} + > + Confirm + + + + + ); }; diff --git a/components/dashboard/mongo/update-mongo.tsx b/components/dashboard/mongo/update-mongo.tsx index fa7a52839..3b7ec5a70 100644 --- a/components/dashboard/mongo/update-mongo.tsx +++ b/components/dashboard/mongo/update-mongo.tsx @@ -1,3 +1,5 @@ +import { AlertBlock } from "@/components/shared/alert-block"; +import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, @@ -7,7 +9,6 @@ import { DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; -import { Button } from "@/components/ui/button"; import { Form, FormControl, @@ -16,16 +17,15 @@ import { FormLabel, FormMessage, } from "@/components/ui/form"; -import { useForm } from "react-hook-form"; -import { z } from "zod"; -import { AlertBlock } from "@/components/shared/alert-block"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { useEffect } from "react"; -import { toast } from "sonner"; import { Input } from "@/components/ui/input"; -import { AlertTriangle, SquarePen } from "lucide-react"; import { Textarea } from "@/components/ui/textarea"; import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { AlertTriangle, SquarePen } from "lucide-react"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; const updateMongoSchema = z.object({ name: z.string().min(1, { diff --git a/components/dashboard/mongo/volumes/show-volumes.tsx b/components/dashboard/mongo/volumes/show-volumes.tsx index 29d0035aa..48cada9f2 100644 --- a/components/dashboard/mongo/volumes/show-volumes.tsx +++ b/components/dashboard/mongo/volumes/show-volumes.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { AlertBlock } from "@/components/shared/alert-block"; import { Card, CardContent, @@ -8,10 +8,10 @@ import { } from "@/components/ui/card"; import { api } from "@/utils/api"; import { AlertTriangle, Package } from "lucide-react"; -import { DeleteVolume } from "../../application/advanced/volumes/delete-volume"; +import React from "react"; import { AddVolumes } from "../../application/advanced/volumes/add-volumes"; +import { DeleteVolume } from "../../application/advanced/volumes/delete-volume"; import { UpdateVolume } from "../../application/advanced/volumes/update-volume"; -import { AlertBlock } from "@/components/shared/alert-block"; interface Props { mongoId: string; } diff --git a/components/dashboard/monitoring/docker/docker-block-chart.tsx b/components/dashboard/monitoring/docker/docker-block-chart.tsx index d5b28c2fc..57a3cbe22 100644 --- a/components/dashboard/monitoring/docker/docker-block-chart.tsx +++ b/components/dashboard/monitoring/docker/docker-block-chart.tsx @@ -1,14 +1,14 @@ +import { format } from "date-fns"; import { - AreaChart, Area, - YAxis, + AreaChart, CartesianGrid, - Tooltip, - ResponsiveContainer, Legend, + ResponsiveContainer, + Tooltip, + YAxis, } from "recharts"; import type { DockerStatsJSON } from "./show"; -import { format } from "date-fns"; interface Props { acummulativeData: DockerStatsJSON["block"]; diff --git a/components/dashboard/monitoring/docker/docker-cpu-chart.tsx b/components/dashboard/monitoring/docker/docker-cpu-chart.tsx index fd46a182e..41f20f8f1 100644 --- a/components/dashboard/monitoring/docker/docker-cpu-chart.tsx +++ b/components/dashboard/monitoring/docker/docker-cpu-chart.tsx @@ -1,14 +1,14 @@ +import { format } from "date-fns"; import { - AreaChart, Area, - YAxis, + AreaChart, CartesianGrid, - Tooltip, - ResponsiveContainer, Legend, + ResponsiveContainer, + Tooltip, + YAxis, } from "recharts"; import type { DockerStatsJSON } from "./show"; -import { format } from "date-fns"; interface Props { acummulativeData: DockerStatsJSON["cpu"]; diff --git a/components/dashboard/monitoring/docker/docker-disk-chart.tsx b/components/dashboard/monitoring/docker/docker-disk-chart.tsx index fdfa52ea8..a97fcfedd 100644 --- a/components/dashboard/monitoring/docker/docker-disk-chart.tsx +++ b/components/dashboard/monitoring/docker/docker-disk-chart.tsx @@ -1,14 +1,14 @@ +import { format } from "date-fns"; import { - AreaChart, Area, - YAxis, + AreaChart, CartesianGrid, - Tooltip, - ResponsiveContainer, Legend, + ResponsiveContainer, + Tooltip, + YAxis, } from "recharts"; import type { DockerStatsJSON } from "./show"; -import { format } from "date-fns"; interface Props { acummulativeData: DockerStatsJSON["disk"]; diff --git a/components/dashboard/monitoring/docker/docker-memory-chart.tsx b/components/dashboard/monitoring/docker/docker-memory-chart.tsx index 51dc80cf7..78791ce1d 100644 --- a/components/dashboard/monitoring/docker/docker-memory-chart.tsx +++ b/components/dashboard/monitoring/docker/docker-memory-chart.tsx @@ -1,14 +1,14 @@ +import { format } from "date-fns"; import { - AreaChart, Area, - YAxis, + AreaChart, CartesianGrid, - Tooltip, - ResponsiveContainer, Legend, + ResponsiveContainer, + Tooltip, + YAxis, } from "recharts"; import type { DockerStatsJSON } from "./show"; -import { format } from "date-fns"; interface Props { acummulativeData: DockerStatsJSON["memory"]; diff --git a/components/dashboard/monitoring/docker/docker-network-chart.tsx b/components/dashboard/monitoring/docker/docker-network-chart.tsx index 9720ae5df..b522603d8 100644 --- a/components/dashboard/monitoring/docker/docker-network-chart.tsx +++ b/components/dashboard/monitoring/docker/docker-network-chart.tsx @@ -1,14 +1,14 @@ +import { format } from "date-fns"; import { - AreaChart, Area, - YAxis, + AreaChart, CartesianGrid, - Tooltip, - ResponsiveContainer, Legend, + ResponsiveContainer, + Tooltip, + YAxis, } from "recharts"; import type { DockerStatsJSON } from "./show"; -import { format } from "date-fns"; 1; interface Props { acummulativeData: DockerStatsJSON["network"]; diff --git a/components/dashboard/monitoring/docker/show.tsx b/components/dashboard/monitoring/docker/show.tsx index ea7556b58..c54e7c0ca 100644 --- a/components/dashboard/monitoring/docker/show.tsx +++ b/components/dashboard/monitoring/docker/show.tsx @@ -6,13 +6,13 @@ import { CardTitle, } from "@/components/ui/card"; import { Progress } from "@/components/ui/progress"; -import React, { useEffect, useState } from "react"; -import { DockerCpuChart } from "./docker-cpu-chart"; -import { DockerMemoryChart } from "./docker-memory-chart"; -import { DockerBlockChart } from "./docker-block-chart"; -import { DockerNetworkChart } from "./docker-network-chart"; -import { DockerDiskChart } from "./docker-disk-chart"; import { api } from "@/utils/api"; +import React, { useEffect, useState } from "react"; +import { DockerBlockChart } from "./docker-block-chart"; +import { DockerCpuChart } from "./docker-cpu-chart"; +import { DockerDiskChart } from "./docker-disk-chart"; +import { DockerMemoryChart } from "./docker-memory-chart"; +import { DockerNetworkChart } from "./docker-network-chart"; const defaultData = { cpu: { @@ -210,9 +210,7 @@ export const DockerMonitoring = ({ {`Used: ${(currentData.memory.value.used / 1024).toFixed( 2, - )} GB / Limit: ${( - currentData.memory.value.total / 1024 - ).toFixed(2)} GB`} + )} GB / Limit: ${(currentData.memory.value.total / 1024).toFixed(2)} GB`} { - const { mutateAsync, isLoading } = api.mysql.stop.useMutation(); - const utils = api.useUtils(); - return ( - - - - - - - - Are you absolutely sure to stop the database? - - - This will stop the database - - - - Cancel - { - await mutateAsync({ - mysqlId, - }) - .then(async () => { - await utils.mysql.one.invalidate({ - mysqlId, - }); - toast.success("Application stopped succesfully"); - }) - .catch(() => { - toast.error("Error to stop the Application"); - }); - }} - > - Confirm - - - - - ); + const { mutateAsync, isLoading } = api.mysql.stop.useMutation(); + const utils = api.useUtils(); + return ( + + + + + + + + Are you absolutely sure to stop the database? + + + This will stop the database + + + + Cancel + { + await mutateAsync({ + mysqlId, + }) + .then(async () => { + await utils.mysql.one.invalidate({ + mysqlId, + }); + toast.success("Application stopped succesfully"); + }) + .catch(() => { + toast.error("Error to stop the Application"); + }); + }} + > + Confirm + + + + + ); }; diff --git a/components/dashboard/mysql/start-mysql.tsx b/components/dashboard/mysql/start-mysql.tsx index 336076747..60ebc08ba 100644 --- a/components/dashboard/mysql/start-mysql.tsx +++ b/components/dashboard/mysql/start-mysql.tsx @@ -1,13 +1,13 @@ import { - AlertDialog, - AlertDialogAction, - AlertDialogCancel, - AlertDialogContent, - AlertDialogDescription, - AlertDialogFooter, - AlertDialogHeader, - AlertDialogTitle, - AlertDialogTrigger, + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, + AlertDialogTrigger, } from "@/components/ui/alert-dialog"; import { Button } from "@/components/ui/button"; import { api } from "@/utils/api"; @@ -15,51 +15,51 @@ import { CheckCircle2 } from "lucide-react"; import { toast } from "sonner"; interface Props { - mysqlId: string; + mysqlId: string; } export const StartMysql = ({ mysqlId }: Props) => { - const { mutateAsync, isLoading } = api.mysql.start.useMutation(); - const utils = api.useUtils(); - return ( - - - - - - - - Are you sure to start the database? - - - This will start the database - - - - Cancel - { - await mutateAsync({ - mysqlId, - }) - .then(async () => { - await utils.mysql.one.invalidate({ - mysqlId, - }); - toast.success("Database started succesfully"); - }) - .catch(() => { - toast.error("Error to start the Database"); - }); - }} - > - Confirm - - - - - ); + const { mutateAsync, isLoading } = api.mysql.start.useMutation(); + const utils = api.useUtils(); + return ( + + + + + + + + Are you sure to start the database? + + + This will start the database + + + + Cancel + { + await mutateAsync({ + mysqlId, + }) + .then(async () => { + await utils.mysql.one.invalidate({ + mysqlId, + }); + toast.success("Database started succesfully"); + }) + .catch(() => { + toast.error("Error to start the Database"); + }); + }} + > + Confirm + + + + + ); }; diff --git a/components/dashboard/mysql/update-mysql.tsx b/components/dashboard/mysql/update-mysql.tsx index cd281281a..37b71b6cc 100644 --- a/components/dashboard/mysql/update-mysql.tsx +++ b/components/dashboard/mysql/update-mysql.tsx @@ -1,3 +1,5 @@ +import { AlertBlock } from "@/components/shared/alert-block"; +import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, @@ -7,7 +9,6 @@ import { DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; -import { Button } from "@/components/ui/button"; import { Form, FormControl, @@ -16,16 +17,15 @@ import { FormLabel, FormMessage, } from "@/components/ui/form"; -import { useForm } from "react-hook-form"; -import { z } from "zod"; -import { AlertBlock } from "@/components/shared/alert-block"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { useEffect } from "react"; -import { toast } from "sonner"; import { Input } from "@/components/ui/input"; -import { AlertTriangle, SquarePen } from "lucide-react"; import { Textarea } from "@/components/ui/textarea"; import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { AlertTriangle, SquarePen } from "lucide-react"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; const updateMysqlSchema = z.object({ name: z.string().min(1, { diff --git a/components/dashboard/mysql/volumes/show-volumes.tsx b/components/dashboard/mysql/volumes/show-volumes.tsx index 98ee13427..9e39360be 100644 --- a/components/dashboard/mysql/volumes/show-volumes.tsx +++ b/components/dashboard/mysql/volumes/show-volumes.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { AlertBlock } from "@/components/shared/alert-block"; import { Card, CardContent, @@ -8,10 +8,10 @@ import { } from "@/components/ui/card"; import { api } from "@/utils/api"; import { AlertTriangle, Package } from "lucide-react"; -import { DeleteVolume } from "../../application/advanced/volumes/delete-volume"; +import React from "react"; import { AddVolumes } from "../../application/advanced/volumes/add-volumes"; +import { DeleteVolume } from "../../application/advanced/volumes/delete-volume"; import { UpdateVolume } from "../../application/advanced/volumes/update-volume"; -import { AlertBlock } from "@/components/shared/alert-block"; interface Props { mysqlId: string; } diff --git a/components/dashboard/postgres/advanced/show-postgres-advanced-settings.tsx b/components/dashboard/postgres/advanced/show-postgres-advanced-settings.tsx index 7cd34aefc..c8002fa26 100644 --- a/components/dashboard/postgres/advanced/show-postgres-advanced-settings.tsx +++ b/components/dashboard/postgres/advanced/show-postgres-advanced-settings.tsx @@ -1,12 +1,5 @@ -import React, { useEffect } from "react"; -import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; -import { api } from "@/utils/api"; -import { z } from "zod"; -import { Input } from "@/components/ui/input"; -import { ShowPostgresResources } from "./show-postgres-resources"; -import { toast } from "sonner"; -import { zodResolver } from "@hookform/resolvers/zod"; +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Form, FormControl, @@ -15,8 +8,15 @@ import { FormLabel, FormMessage, } from "@/components/ui/form"; +import { Input } from "@/components/ui/input"; +import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import React, { useEffect } from "react"; import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; import { ShowVolumes } from "../volumes/show-volumes"; +import { ShowPostgresResources } from "./show-postgres-resources"; const addDockerImage = z.object({ dockerImage: z.string().min(1, "Docker image is required"), diff --git a/components/dashboard/postgres/advanced/show-postgres-resources.tsx b/components/dashboard/postgres/advanced/show-postgres-resources.tsx index a86a2e254..442d4f656 100644 --- a/components/dashboard/postgres/advanced/show-postgres-resources.tsx +++ b/components/dashboard/postgres/advanced/show-postgres-resources.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Card, @@ -21,7 +22,6 @@ import React, { useEffect } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; -import { AlertBlock } from "@/components/shared/alert-block"; const addResourcesPostgres = z.object({ memoryReservation: z.number().nullable().optional(), diff --git a/components/dashboard/postgres/backups/show-backup-postgres.tsx b/components/dashboard/postgres/backups/show-backup-postgres.tsx index eeb3cce23..877769b7f 100644 --- a/components/dashboard/postgres/backups/show-backup-postgres.tsx +++ b/components/dashboard/postgres/backups/show-backup-postgres.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { Button } from "@/components/ui/button"; import { Card, CardContent, @@ -6,20 +6,20 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import { Button } from "@/components/ui/button"; -import { api } from "@/utils/api"; -import { DatabaseBackup, Play } from "lucide-react"; -import Link from "next/link"; -import { AddBackup } from "../../database/backups/add-backup"; -import { DeleteBackup } from "../../database/backups/delete-backup"; -import { UpdateBackup } from "../../database/backups/update-backup"; -import { toast } from "sonner"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; +import { api } from "@/utils/api"; +import { DatabaseBackup, Play } from "lucide-react"; +import Link from "next/link"; +import React from "react"; +import { toast } from "sonner"; +import { AddBackup } from "../../database/backups/add-backup"; +import { DeleteBackup } from "../../database/backups/delete-backup"; +import { UpdateBackup } from "../../database/backups/update-backup"; interface Props { postgresId: string; } diff --git a/components/dashboard/postgres/environment/show-postgres-environment.tsx b/components/dashboard/postgres/environment/show-postgres-environment.tsx index 42133df87..2ab783976 100644 --- a/components/dashboard/postgres/environment/show-postgres-environment.tsx +++ b/components/dashboard/postgres/environment/show-postgres-environment.tsx @@ -1,4 +1,5 @@ -import React, { useEffect } from "react"; +import { CodeEditor } from "@/components/shared/code-editor"; +import { Button } from "@/components/ui/button"; import { Card, CardContent, @@ -6,10 +7,6 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import { Button } from "@/components/ui/button"; -import { z } from "zod"; -import { useForm } from "react-hook-form"; -import { zodResolver } from "@hookform/resolvers/zod"; import { Form, FormControl, @@ -18,8 +15,11 @@ import { FormMessage, } from "@/components/ui/form"; import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import React, { useEffect } from "react"; +import { useForm } from "react-hook-form"; import { toast } from "sonner"; -import { CodeEditor } from "@/components/shared/code-editor"; +import { z } from "zod"; const addEnvironmentSchema = z.object({ environment: z.string(), diff --git a/components/dashboard/postgres/general/show-general-postgres.tsx b/components/dashboard/postgres/general/show-general-postgres.tsx index 68db3f671..a2aa17cbc 100644 --- a/components/dashboard/postgres/general/show-general-postgres.tsx +++ b/components/dashboard/postgres/general/show-general-postgres.tsx @@ -1,13 +1,13 @@ -import React from "react"; -import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { api } from "@/utils/api"; -import { StopPostgres } from "./stop-postgres"; -import { StartPostgres } from "../start-postgres"; -import { DockerTerminalModal } from "../../settings/web-server/docker-terminal-modal"; import { Terminal } from "lucide-react"; +import React from "react"; +import { DockerTerminalModal } from "../../settings/web-server/docker-terminal-modal"; +import { StartPostgres } from "../start-postgres"; import { DeployPostgres } from "./deploy-postgres"; import { ResetPostgres } from "./reset-postgres"; +import { StopPostgres } from "./stop-postgres"; interface Props { postgresId: string; } diff --git a/components/dashboard/postgres/general/show-internal-postgres-credentials.tsx b/components/dashboard/postgres/general/show-internal-postgres-credentials.tsx index a8b5270d1..e01226101 100644 --- a/components/dashboard/postgres/general/show-internal-postgres-credentials.tsx +++ b/components/dashboard/postgres/general/show-internal-postgres-credentials.tsx @@ -1,9 +1,9 @@ -import React from "react"; +import { ToggleVisibilityInput } from "@/components/shared/toggle-visibility-input"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { api } from "@/utils/api"; -import { ToggleVisibilityInput } from "@/components/shared/toggle-visibility-input"; +import React from "react"; interface Props { postgresId: string; diff --git a/components/dashboard/postgres/general/stop-postgres.tsx b/components/dashboard/postgres/general/stop-postgres.tsx index bf3bb7762..9bf1738f0 100644 --- a/components/dashboard/postgres/general/stop-postgres.tsx +++ b/components/dashboard/postgres/general/stop-postgres.tsx @@ -1,13 +1,13 @@ import { - AlertDialog, - AlertDialogAction, - AlertDialogCancel, - AlertDialogContent, - AlertDialogDescription, - AlertDialogFooter, - AlertDialogHeader, - AlertDialogTitle, - AlertDialogTrigger, + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, + AlertDialogTrigger, } from "@/components/ui/alert-dialog"; import { Button } from "@/components/ui/button"; import { api } from "@/utils/api"; @@ -15,51 +15,51 @@ import { Ban } from "lucide-react"; import { toast } from "sonner"; interface Props { - postgresId: string; + postgresId: string; } export const StopPostgres = ({ postgresId }: Props) => { - const { mutateAsync, isLoading } = api.postgres.stop.useMutation(); - const utils = api.useUtils(); - return ( - - - - - - - - Are you absolutely sure to stop the database? - - - This will stop the database - - - - Cancel - { - await mutateAsync({ - postgresId, - }) - .then(async () => { - await utils.postgres.one.invalidate({ - postgresId, - }); - toast.success("Application stopped succesfully"); - }) - .catch(() => { - toast.error("Error to stop the Application"); - }); - }} - > - Confirm - - - - - ); + const { mutateAsync, isLoading } = api.postgres.stop.useMutation(); + const utils = api.useUtils(); + return ( + + + + + + + + Are you absolutely sure to stop the database? + + + This will stop the database + + + + Cancel + { + await mutateAsync({ + postgresId, + }) + .then(async () => { + await utils.postgres.one.invalidate({ + postgresId, + }); + toast.success("Application stopped succesfully"); + }) + .catch(() => { + toast.error("Error to stop the Application"); + }); + }} + > + Confirm + + + + + ); }; diff --git a/components/dashboard/postgres/start-postgres.tsx b/components/dashboard/postgres/start-postgres.tsx index 17f9faacd..8d9450826 100644 --- a/components/dashboard/postgres/start-postgres.tsx +++ b/components/dashboard/postgres/start-postgres.tsx @@ -1,13 +1,13 @@ import { - AlertDialog, - AlertDialogAction, - AlertDialogCancel, - AlertDialogContent, - AlertDialogDescription, - AlertDialogFooter, - AlertDialogHeader, - AlertDialogTitle, - AlertDialogTrigger, + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, + AlertDialogTrigger, } from "@/components/ui/alert-dialog"; import { Button } from "@/components/ui/button"; import { api } from "@/utils/api"; @@ -15,51 +15,51 @@ import { CheckCircle2 } from "lucide-react"; import { toast } from "sonner"; interface Props { - postgresId: string; + postgresId: string; } export const StartPostgres = ({ postgresId }: Props) => { - const { mutateAsync, isLoading } = api.postgres.start.useMutation(); - const utils = api.useUtils(); - return ( - - - - - - - - Are you sure to start the database? - - - This will start the database - - - - Cancel - { - await mutateAsync({ - postgresId, - }) - .then(async () => { - await utils.postgres.one.invalidate({ - postgresId, - }); - toast.success("Database started succesfully"); - }) - .catch(() => { - toast.error("Error to start the Database"); - }); - }} - > - Confirm - - - - - ); + const { mutateAsync, isLoading } = api.postgres.start.useMutation(); + const utils = api.useUtils(); + return ( + + + + + + + + Are you sure to start the database? + + + This will start the database + + + + Cancel + { + await mutateAsync({ + postgresId, + }) + .then(async () => { + await utils.postgres.one.invalidate({ + postgresId, + }); + toast.success("Database started succesfully"); + }) + .catch(() => { + toast.error("Error to start the Database"); + }); + }} + > + Confirm + + + + + ); }; diff --git a/components/dashboard/postgres/update-postgres.tsx b/components/dashboard/postgres/update-postgres.tsx index 45f0aa89c..95bfed6ad 100644 --- a/components/dashboard/postgres/update-postgres.tsx +++ b/components/dashboard/postgres/update-postgres.tsx @@ -1,3 +1,5 @@ +import { AlertBlock } from "@/components/shared/alert-block"; +import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, @@ -7,7 +9,6 @@ import { DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; -import { Button } from "@/components/ui/button"; import { Form, FormControl, @@ -16,16 +17,15 @@ import { FormLabel, FormMessage, } from "@/components/ui/form"; -import { useForm } from "react-hook-form"; -import { z } from "zod"; -import { AlertBlock } from "@/components/shared/alert-block"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { useEffect } from "react"; -import { toast } from "sonner"; import { Input } from "@/components/ui/input"; -import { AlertTriangle, SquarePen } from "lucide-react"; import { Textarea } from "@/components/ui/textarea"; import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { AlertTriangle, SquarePen } from "lucide-react"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; const updatePostgresSchema = z.object({ name: z.string().min(1, { diff --git a/components/dashboard/postgres/volumes/show-volumes.tsx b/components/dashboard/postgres/volumes/show-volumes.tsx index 4ba957d5a..4c449c949 100644 --- a/components/dashboard/postgres/volumes/show-volumes.tsx +++ b/components/dashboard/postgres/volumes/show-volumes.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { AlertBlock } from "@/components/shared/alert-block"; import { Card, CardContent, @@ -8,10 +8,10 @@ import { } from "@/components/ui/card"; import { api } from "@/utils/api"; import { AlertTriangle, Package } from "lucide-react"; +import React from "react"; import { AddVolumes } from "../../application/advanced/volumes/add-volumes"; import { DeleteVolume } from "../../application/advanced/volumes/delete-volume"; import { UpdateVolume } from "../../application/advanced/volumes/update-volume"; -import { AlertBlock } from "@/components/shared/alert-block"; interface Props { postgresId: string; } diff --git a/components/dashboard/project/add-application.tsx b/components/dashboard/project/add-application.tsx index ecf2a1afb..9d1019f97 100644 --- a/components/dashboard/project/add-application.tsx +++ b/components/dashboard/project/add-application.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -18,7 +19,8 @@ import { FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; -import { AlertBlock } from "@/components/shared/alert-block"; +import { Textarea } from "@/components/ui/textarea"; +import { slugify } from "@/lib/slug"; import { api } from "@/utils/api"; import { zodResolver } from "@hookform/resolvers/zod"; import { Folder } from "lucide-react"; @@ -26,8 +28,6 @@ import { useState } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; -import { Textarea } from "@/components/ui/textarea"; -import { slugify } from "@/lib/slug"; const AddTemplateSchema = z.object({ name: z.string().min(1, { diff --git a/components/dashboard/project/add-compose.tsx b/components/dashboard/project/add-compose.tsx index fd769c911..bea9a30e0 100644 --- a/components/dashboard/project/add-compose.tsx +++ b/components/dashboard/project/add-compose.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -18,15 +19,6 @@ import { FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; -import { AlertBlock } from "@/components/shared/alert-block"; -import { api } from "@/utils/api"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { CircuitBoard, Folder } from "lucide-react"; -import { useEffect } from "react"; -import { useForm } from "react-hook-form"; -import { toast } from "sonner"; -import { z } from "zod"; -import { Textarea } from "@/components/ui/textarea"; import { Select, SelectContent, @@ -34,7 +26,15 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; +import { Textarea } from "@/components/ui/textarea"; import { slugify } from "@/lib/slug"; +import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { CircuitBoard, Folder } from "lucide-react"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; const AddComposeSchema = z.object({ composeType: z.enum(["docker-compose", "stack"]).optional(), diff --git a/components/dashboard/project/add-database.tsx b/components/dashboard/project/add-database.tsx index 7ab901071..1e83dc323 100644 --- a/components/dashboard/project/add-database.tsx +++ b/components/dashboard/project/add-database.tsx @@ -30,7 +30,7 @@ import { Textarea } from "@/components/ui/textarea"; import { slugify } from "@/lib/slug"; import { api } from "@/utils/api"; import { zodResolver } from "@hookform/resolvers/zod"; -import { Database, AlertTriangle } from "lucide-react"; +import { AlertTriangle, Database } from "lucide-react"; import { useState } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; diff --git a/components/dashboard/project/add-template.tsx b/components/dashboard/project/add-template.tsx index 80774207e..87ae6d292 100644 --- a/components/dashboard/project/add-template.tsx +++ b/components/dashboard/project/add-template.tsx @@ -1,20 +1,4 @@ -import { - Dialog, - DialogContent, - DialogDescription, - DialogHeader, - DialogTitle, - DialogTrigger, -} from "@/components/ui/dialog"; -import { DropdownMenuItem } from "@/components/ui/dropdown-menu"; import { AlertBlock } from "@/components/shared/alert-block"; -import { api } from "@/utils/api"; -import { Code, Github, Globe, PuzzleIcon } from "lucide-react"; -import Link from "next/link"; -import { Input } from "@/components/ui/input"; -import { useState } from "react"; -import { Badge } from "@/components/ui/badge"; -import { Button } from "@/components/ui/button"; import { AlertDialog, AlertDialogAction, @@ -26,6 +10,22 @@ import { AlertDialogTitle, AlertDialogTrigger, } from "@/components/ui/alert-dialog"; +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; +import { + Dialog, + DialogContent, + DialogDescription, + DialogHeader, + DialogTitle, + DialogTrigger, +} from "@/components/ui/dialog"; +import { DropdownMenuItem } from "@/components/ui/dropdown-menu"; +import { Input } from "@/components/ui/input"; +import { api } from "@/utils/api"; +import { Code, Github, Globe, PuzzleIcon } from "lucide-react"; +import Link from "next/link"; +import { useState } from "react"; import { toast } from "sonner"; interface Props { projectId: string; diff --git a/components/dashboard/projects/add.tsx b/components/dashboard/projects/add.tsx index 8778a79d0..1b9f37f8d 100644 --- a/components/dashboard/projects/add.tsx +++ b/components/dashboard/projects/add.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -19,7 +20,6 @@ import { import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { api } from "@/utils/api"; -import { AlertBlock } from "@/components/shared/alert-block"; import { zodResolver } from "@hookform/resolvers/zod"; import { PlusIcon } from "lucide-react"; import { useRouter } from "next/router"; diff --git a/components/dashboard/projects/show.tsx b/components/dashboard/projects/show.tsx index 8df235833..f80a24fbc 100644 --- a/components/dashboard/projects/show.tsx +++ b/components/dashboard/projects/show.tsx @@ -1,3 +1,4 @@ +import { DateTooltip } from "@/components/shared/date-tooltip"; import { AlertDialog, AlertDialogAction, @@ -30,7 +31,6 @@ import { import Link from "next/link"; import { toast } from "sonner"; import { UpdateProject } from "./update"; -import { DateTooltip } from "@/components/shared/date-tooltip"; export const ShowProjects = () => { const utils = api.useUtils(); diff --git a/components/dashboard/projects/update.tsx b/components/dashboard/projects/update.tsx index 13442d1f9..a7fe22c10 100644 --- a/components/dashboard/projects/update.tsx +++ b/components/dashboard/projects/update.tsx @@ -1,3 +1,5 @@ +import { AlertBlock } from "@/components/shared/alert-block"; +import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, @@ -7,7 +9,7 @@ import { DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; -import { Button } from "@/components/ui/button"; +import { DropdownMenuItem } from "@/components/ui/dropdown-menu"; import { Form, FormControl, @@ -16,17 +18,15 @@ import { FormLabel, FormMessage, } from "@/components/ui/form"; -import { useForm } from "react-hook-form"; -import { z } from "zod"; -import { AlertBlock } from "@/components/shared/alert-block"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { useEffect } from "react"; -import { toast } from "sonner"; import { Input } from "@/components/ui/input"; -import { AlertTriangle, SquarePen } from "lucide-react"; import { Textarea } from "@/components/ui/textarea"; -import { DropdownMenuItem } from "@/components/ui/dropdown-menu"; import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { AlertTriangle, SquarePen } from "lucide-react"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; const updateProjectSchema = z.object({ name: z.string().min(1, { diff --git a/components/dashboard/redis/advanced/show-redis-advanced-settings.tsx b/components/dashboard/redis/advanced/show-redis-advanced-settings.tsx index f3836bb89..8b5954806 100644 --- a/components/dashboard/redis/advanced/show-redis-advanced-settings.tsx +++ b/components/dashboard/redis/advanced/show-redis-advanced-settings.tsx @@ -1,12 +1,5 @@ -import React, { useEffect } from "react"; -import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; -import { api } from "@/utils/api"; -import { z } from "zod"; -import { Input } from "@/components/ui/input"; -import { ShowRedisResources } from "./show-redis-resources"; -import { toast } from "sonner"; -import { zodResolver } from "@hookform/resolvers/zod"; +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Form, FormControl, @@ -15,8 +8,15 @@ import { FormLabel, FormMessage, } from "@/components/ui/form"; +import { Input } from "@/components/ui/input"; +import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import React, { useEffect } from "react"; import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; import { ShowVolumes } from "../volumes/show-volumes"; +import { ShowRedisResources } from "./show-redis-resources"; const addDockerImage = z.object({ dockerImage: z.string().min(1, "Docker image is required"), diff --git a/components/dashboard/redis/advanced/show-redis-resources.tsx b/components/dashboard/redis/advanced/show-redis-resources.tsx index ad3f545e0..cac15e0b6 100644 --- a/components/dashboard/redis/advanced/show-redis-resources.tsx +++ b/components/dashboard/redis/advanced/show-redis-resources.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Card, @@ -21,7 +22,6 @@ import React, { useEffect } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; -import { AlertBlock } from "@/components/shared/alert-block"; const addResourcesRedis = z.object({ memoryReservation: z.number().nullable().optional(), diff --git a/components/dashboard/redis/environment/show-redis-environment.tsx b/components/dashboard/redis/environment/show-redis-environment.tsx index 24c40649b..06a634c31 100644 --- a/components/dashboard/redis/environment/show-redis-environment.tsx +++ b/components/dashboard/redis/environment/show-redis-environment.tsx @@ -1,4 +1,5 @@ -import React, { useEffect } from "react"; +import { CodeEditor } from "@/components/shared/code-editor"; +import { Button } from "@/components/ui/button"; import { Card, CardContent, @@ -6,10 +7,6 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import { Button } from "@/components/ui/button"; -import { z } from "zod"; -import { useForm } from "react-hook-form"; -import { zodResolver } from "@hookform/resolvers/zod"; import { Form, FormControl, @@ -18,8 +15,11 @@ import { FormMessage, } from "@/components/ui/form"; import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import React, { useEffect } from "react"; +import { useForm } from "react-hook-form"; import { toast } from "sonner"; -import { CodeEditor } from "@/components/shared/code-editor"; +import { z } from "zod"; const addEnvironmentSchema = z.object({ environment: z.string(), diff --git a/components/dashboard/redis/general/show-general-redis.tsx b/components/dashboard/redis/general/show-general-redis.tsx index fef753e7d..555451d9d 100644 --- a/components/dashboard/redis/general/show-general-redis.tsx +++ b/components/dashboard/redis/general/show-general-redis.tsx @@ -1,14 +1,14 @@ -import React from "react"; -import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { api } from "@/utils/api"; +import React from "react"; -import { StopRedis } from "./stop-redis"; -import { StartRedis } from "../start-redis"; -import { DockerTerminalModal } from "../../settings/web-server/docker-terminal-modal"; import { Terminal } from "lucide-react"; +import { DockerTerminalModal } from "../../settings/web-server/docker-terminal-modal"; +import { StartRedis } from "../start-redis"; import { DeployRedis } from "./deploy-redis"; import { ResetRedis } from "./reset-redis"; +import { StopRedis } from "./stop-redis"; interface Props { redisId: string; } diff --git a/components/dashboard/redis/general/show-internal-redis-credentials.tsx b/components/dashboard/redis/general/show-internal-redis-credentials.tsx index 1f798144f..092006748 100644 --- a/components/dashboard/redis/general/show-internal-redis-credentials.tsx +++ b/components/dashboard/redis/general/show-internal-redis-credentials.tsx @@ -1,9 +1,9 @@ -import React from "react"; +import { ToggleVisibilityInput } from "@/components/shared/toggle-visibility-input"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { api } from "@/utils/api"; -import { ToggleVisibilityInput } from "@/components/shared/toggle-visibility-input"; +import React from "react"; interface Props { redisId: string; diff --git a/components/dashboard/redis/general/stop-redis.tsx b/components/dashboard/redis/general/stop-redis.tsx index 929845510..67cc5e35a 100644 --- a/components/dashboard/redis/general/stop-redis.tsx +++ b/components/dashboard/redis/general/stop-redis.tsx @@ -1,13 +1,13 @@ import { - AlertDialog, - AlertDialogAction, - AlertDialogCancel, - AlertDialogContent, - AlertDialogDescription, - AlertDialogFooter, - AlertDialogHeader, - AlertDialogTitle, - AlertDialogTrigger, + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, + AlertDialogTrigger, } from "@/components/ui/alert-dialog"; import { Button } from "@/components/ui/button"; import { api } from "@/utils/api"; @@ -15,51 +15,51 @@ import { Ban } from "lucide-react"; import { toast } from "sonner"; interface Props { - redisId: string; + redisId: string; } export const StopRedis = ({ redisId }: Props) => { - const { mutateAsync, isLoading } = api.redis.stop.useMutation(); - const utils = api.useUtils(); - return ( - - - - - - - - Are you absolutely sure to stop the database? - - - This will stop the database - - - - Cancel - { - await mutateAsync({ - redisId, - }) - .then(async () => { - await utils.redis.one.invalidate({ - redisId, - }); - toast.success("Application stopped succesfully"); - }) - .catch(() => { - toast.error("Error to stop the Application"); - }); - }} - > - Confirm - - - - - ); + const { mutateAsync, isLoading } = api.redis.stop.useMutation(); + const utils = api.useUtils(); + return ( + + + + + + + + Are you absolutely sure to stop the database? + + + This will stop the database + + + + Cancel + { + await mutateAsync({ + redisId, + }) + .then(async () => { + await utils.redis.one.invalidate({ + redisId, + }); + toast.success("Application stopped succesfully"); + }) + .catch(() => { + toast.error("Error to stop the Application"); + }); + }} + > + Confirm + + + + + ); }; diff --git a/components/dashboard/redis/start-redis.tsx b/components/dashboard/redis/start-redis.tsx index 2e81f6292..e0a4aa970 100644 --- a/components/dashboard/redis/start-redis.tsx +++ b/components/dashboard/redis/start-redis.tsx @@ -1,13 +1,13 @@ import { - AlertDialog, - AlertDialogAction, - AlertDialogCancel, - AlertDialogContent, - AlertDialogDescription, - AlertDialogFooter, - AlertDialogHeader, - AlertDialogTitle, - AlertDialogTrigger, + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, + AlertDialogTrigger, } from "@/components/ui/alert-dialog"; import { Button } from "@/components/ui/button"; import { api } from "@/utils/api"; @@ -15,51 +15,51 @@ import { CheckCircle2 } from "lucide-react"; import { toast } from "sonner"; interface Props { - redisId: string; + redisId: string; } export const StartRedis = ({ redisId }: Props) => { - const { mutateAsync, isLoading } = api.redis.start.useMutation(); - const utils = api.useUtils(); - return ( - - - - - - - - Are you sure to start the database? - - - This will start the database - - - - Cancel - { - await mutateAsync({ - redisId, - }) - .then(async () => { - await utils.redis.one.invalidate({ - redisId, - }); - toast.success("Database started succesfully"); - }) - .catch(() => { - toast.error("Error to start the Database"); - }); - }} - > - Confirm - - - - - ); + const { mutateAsync, isLoading } = api.redis.start.useMutation(); + const utils = api.useUtils(); + return ( + + + + + + + + Are you sure to start the database? + + + This will start the database + + + + Cancel + { + await mutateAsync({ + redisId, + }) + .then(async () => { + await utils.redis.one.invalidate({ + redisId, + }); + toast.success("Database started succesfully"); + }) + .catch(() => { + toast.error("Error to start the Database"); + }); + }} + > + Confirm + + + + + ); }; diff --git a/components/dashboard/redis/update-redis.tsx b/components/dashboard/redis/update-redis.tsx index 8ac239b39..fdc08a736 100644 --- a/components/dashboard/redis/update-redis.tsx +++ b/components/dashboard/redis/update-redis.tsx @@ -1,3 +1,5 @@ +import { AlertBlock } from "@/components/shared/alert-block"; +import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, @@ -7,7 +9,6 @@ import { DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; -import { Button } from "@/components/ui/button"; import { Form, FormControl, @@ -16,16 +17,15 @@ import { FormLabel, FormMessage, } from "@/components/ui/form"; -import { useForm } from "react-hook-form"; -import { z } from "zod"; -import { AlertBlock } from "@/components/shared/alert-block"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { useEffect } from "react"; -import { toast } from "sonner"; import { Input } from "@/components/ui/input"; -import { AlertTriangle, SquarePen } from "lucide-react"; import { Textarea } from "@/components/ui/textarea"; import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { AlertTriangle, SquarePen } from "lucide-react"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; const updateRedisSchema = z.object({ name: z.string().min(1, { diff --git a/components/dashboard/redis/volumes/show-volumes.tsx b/components/dashboard/redis/volumes/show-volumes.tsx index f891e0961..55f11c17e 100644 --- a/components/dashboard/redis/volumes/show-volumes.tsx +++ b/components/dashboard/redis/volumes/show-volumes.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { Card, CardContent, @@ -8,8 +7,9 @@ import { } from "@/components/ui/card"; import { api } from "@/utils/api"; import { AlertTriangle, Package } from "lucide-react"; -import { DeleteVolume } from "../../application/advanced/volumes/delete-volume"; +import React from "react"; import { AddVolumes } from "../../application/advanced/volumes/add-volumes"; +import { DeleteVolume } from "../../application/advanced/volumes/delete-volume"; import { UpdateVolume } from "../../application/advanced/volumes/update-volume"; interface Props { redisId: string; diff --git a/components/dashboard/settings/appearance-form.tsx b/components/dashboard/settings/appearance-form.tsx index 75b5d0d99..52142fcd6 100644 --- a/components/dashboard/settings/appearance-form.tsx +++ b/components/dashboard/settings/appearance-form.tsx @@ -2,6 +2,14 @@ import { zodResolver } from "@hookform/resolvers/zod"; import { useForm } from "react-hook-form"; import * as z from "zod"; +import { Button } from "@/components/ui/button"; +import { + Card, + CardContent, + CardDescription, + CardHeader, + CardTitle, +} from "@/components/ui/card"; import { Form, FormControl, @@ -15,14 +23,6 @@ import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; import { useTheme } from "next-themes"; import { useEffect } from "react"; import { toast } from "sonner"; -import { Button } from "@/components/ui/button"; -import { - Card, - CardContent, - CardDescription, - CardHeader, - CardTitle, -} from "@/components/ui/card"; const appearanceFormSchema = z.object({ theme: z.enum(["light", "dark", "system"], { diff --git a/components/dashboard/settings/certificates/add-certificate.tsx b/components/dashboard/settings/certificates/add-certificate.tsx index d0460e53b..6572e3bae 100644 --- a/components/dashboard/settings/certificates/add-certificate.tsx +++ b/components/dashboard/settings/certificates/add-certificate.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -19,7 +20,6 @@ import { import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { api } from "@/utils/api"; -import { AlertBlock } from "@/components/shared/alert-block"; import { zodResolver } from "@hookform/resolvers/zod"; import { AlertTriangle } from "lucide-react"; import { useEffect } from "react"; @@ -27,7 +27,8 @@ import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; -const certificateDataHolder = `-----BEGIN CERTIFICATE-----\nMIIFRDCCAyygAwIBAgIUEPOR47ys6VDwMVB9tYoeEka83uQwDQYJKoZIhvcNAQELBQAwGTEXMBUGA1UEAwwObWktZG9taW5pby5jb20wHhcNMjQwMzExMDQyNzU3WhcN\n------END CERTIFICATE-----`; +const certificateDataHolder = + "-----BEGIN CERTIFICATE-----\nMIIFRDCCAyygAwIBAgIUEPOR47ys6VDwMVB9tYoeEka83uQwDQYJKoZIhvcNAQELBQAwGTEXMBUGA1UEAwwObWktZG9taW5pby5jb20wHhcNMjQwMzExMDQyNzU3WhcN\n------END CERTIFICATE-----"; const addCertificate = z.object({ name: z.string().min(1, "Name is required"), diff --git a/components/dashboard/settings/certificates/delete-certificate.tsx b/components/dashboard/settings/certificates/delete-certificate.tsx index 54af315b5..907b1dc0b 100644 --- a/components/dashboard/settings/certificates/delete-certificate.tsx +++ b/components/dashboard/settings/certificates/delete-certificate.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { AlertDialog, AlertDialogAction, @@ -13,6 +12,7 @@ import { import { Button } from "@/components/ui/button"; import { api } from "@/utils/api"; import { TrashIcon } from "lucide-react"; +import React from "react"; import { toast } from "sonner"; interface Props { diff --git a/components/dashboard/settings/cluster/nodes/add-node.tsx b/components/dashboard/settings/cluster/nodes/add-node.tsx index fd923057d..99c7a385e 100644 --- a/components/dashboard/settings/cluster/nodes/add-node.tsx +++ b/components/dashboard/settings/cluster/nodes/add-node.tsx @@ -1,3 +1,4 @@ +import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, @@ -7,11 +8,10 @@ import { DialogTrigger, } from "@/components/ui/dialog"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; -import { Button } from "@/components/ui/button"; import { ExternalLink, PlusIcon } from "lucide-react"; -import { AddWorker } from "./workers/add-worker"; -import { AddManager } from "./manager/add-manager"; import Link from "next/link"; +import { AddManager } from "./manager/add-manager"; +import { AddWorker } from "./workers/add-worker"; export const AddNode = () => { return ( diff --git a/components/dashboard/settings/cluster/nodes/manager/add-manager.tsx b/components/dashboard/settings/cluster/nodes/manager/add-manager.tsx index ebb4c7f30..f0b9a7736 100644 --- a/components/dashboard/settings/cluster/nodes/manager/add-manager.tsx +++ b/components/dashboard/settings/cluster/nodes/manager/add-manager.tsx @@ -1,12 +1,12 @@ +import { CardContent } from "@/components/ui/card"; import { DialogDescription, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { api } from "@/utils/api"; -import { CardContent } from "@/components/ui/card"; -import { CopyIcon } from "lucide-react"; import copy from "copy-to-clipboard"; +import { CopyIcon } from "lucide-react"; import { toast } from "sonner"; export const AddManager = () => { diff --git a/components/dashboard/settings/cluster/nodes/show-nodes.tsx b/components/dashboard/settings/cluster/nodes/show-nodes.tsx index 95d105aba..e7ff2f7e0 100644 --- a/components/dashboard/settings/cluster/nodes/show-nodes.tsx +++ b/components/dashboard/settings/cluster/nodes/show-nodes.tsx @@ -1,4 +1,6 @@ -import React from "react"; +import { DateTooltip } from "@/components/shared/date-tooltip"; +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; import { Card, CardContent, @@ -6,10 +8,12 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import { api } from "@/utils/api"; -import { DateTooltip } from "@/components/shared/date-tooltip"; -import { Badge } from "@/components/ui/badge"; -import { DeleteWorker } from "./workers/delete-worker"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuLabel, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu"; import { Table, TableBody, @@ -19,22 +23,18 @@ import { TableHeader, TableRow, } from "@/components/ui/table"; -import { HelpCircle, LockIcon, MoreHorizontal } from "lucide-react"; -import { Button } from "@/components/ui/button"; -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuLabel, - DropdownMenuTrigger, -} from "@/components/ui/dropdown-menu"; -import { ShowNodeData } from "./show-node-data"; -import { AddNode } from "./add-node"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; +import { api } from "@/utils/api"; +import { HelpCircle, LockIcon, MoreHorizontal } from "lucide-react"; +import React from "react"; +import { AddNode } from "./add-node"; +import { ShowNodeData } from "./show-node-data"; +import { DeleteWorker } from "./workers/delete-worker"; export const ShowNodes = () => { const { data, isLoading } = api.cluster.getNodes.useQuery(); diff --git a/components/dashboard/settings/cluster/nodes/workers/delete-worker.tsx b/components/dashboard/settings/cluster/nodes/workers/delete-worker.tsx index 2d3810ca8..ab2d4d77c 100644 --- a/components/dashboard/settings/cluster/nodes/workers/delete-worker.tsx +++ b/components/dashboard/settings/cluster/nodes/workers/delete-worker.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { AlertDialog, AlertDialogAction, @@ -11,10 +10,11 @@ import { AlertDialogTrigger, } from "@/components/ui/alert-dialog"; import { Button } from "@/components/ui/button"; +import { DropdownMenuItem } from "@/components/ui/dropdown-menu"; import { api } from "@/utils/api"; import { TrashIcon } from "lucide-react"; +import React from "react"; import { toast } from "sonner"; -import { DropdownMenuItem } from "@/components/ui/dropdown-menu"; interface Props { nodeId: string; diff --git a/components/dashboard/settings/cluster/registry/delete-registry.tsx b/components/dashboard/settings/cluster/registry/delete-registry.tsx index a87f2e4e4..952a18312 100644 --- a/components/dashboard/settings/cluster/registry/delete-registry.tsx +++ b/components/dashboard/settings/cluster/registry/delete-registry.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { AlertDialog, AlertDialogAction, @@ -13,6 +12,7 @@ import { import { Button } from "@/components/ui/button"; import { api } from "@/utils/api"; import { TrashIcon } from "lucide-react"; +import React from "react"; import { toast } from "sonner"; interface Props { diff --git a/components/dashboard/settings/destination/add-destination.tsx b/components/dashboard/settings/destination/add-destination.tsx index 0612afbd1..e8b42daf4 100644 --- a/components/dashboard/settings/destination/add-destination.tsx +++ b/components/dashboard/settings/destination/add-destination.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -18,7 +19,6 @@ import { } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { api } from "@/utils/api"; -import { AlertBlock } from "@/components/shared/alert-block"; import { zodResolver } from "@hookform/resolvers/zod"; import { useEffect } from "react"; import { useForm } from "react-hook-form"; diff --git a/components/dashboard/settings/destination/delete-destination.tsx b/components/dashboard/settings/destination/delete-destination.tsx index c5a3bdfee..7069bde71 100644 --- a/components/dashboard/settings/destination/delete-destination.tsx +++ b/components/dashboard/settings/destination/delete-destination.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { AlertDialog, AlertDialogAction, @@ -13,6 +12,7 @@ import { import { Button } from "@/components/ui/button"; import { api } from "@/utils/api"; import { TrashIcon } from "lucide-react"; +import React from "react"; import { toast } from "sonner"; interface Props { diff --git a/components/dashboard/settings/destination/show-destinations.tsx b/components/dashboard/settings/destination/show-destinations.tsx index b5c0448f4..d05d824b1 100644 --- a/components/dashboard/settings/destination/show-destinations.tsx +++ b/components/dashboard/settings/destination/show-destinations.tsx @@ -8,8 +8,8 @@ import { import { api } from "@/utils/api"; import { FolderUp } from "lucide-react"; import { AddDestination } from "./add-destination"; -import { UpdateDestination } from "./update-destination"; import { DeleteDestination } from "./delete-destination"; +import { UpdateDestination } from "./update-destination"; export const ShowDestinations = () => { const { data } = api.destination.all.useQuery(); diff --git a/components/dashboard/settings/destination/update-destination.tsx b/components/dashboard/settings/destination/update-destination.tsx index 1aa9fce2b..4b8bf19af 100644 --- a/components/dashboard/settings/destination/update-destination.tsx +++ b/components/dashboard/settings/destination/update-destination.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -18,7 +19,6 @@ import { } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { api } from "@/utils/api"; -import { AlertBlock } from "@/components/shared/alert-block"; import { zodResolver } from "@hookform/resolvers/zod"; import { PenBoxIcon } from "lucide-react"; import { useEffect } from "react"; diff --git a/components/dashboard/settings/github/remove-github-app.tsx b/components/dashboard/settings/github/remove-github-app.tsx index 8ab7ea790..783e68d84 100644 --- a/components/dashboard/settings/github/remove-github-app.tsx +++ b/components/dashboard/settings/github/remove-github-app.tsx @@ -1,5 +1,3 @@ -import { api } from "@/utils/api"; -import React from "react"; import { AlertDialog, AlertDialogAction, @@ -12,14 +10,16 @@ import { AlertDialogTrigger, } from "@/components/ui/alert-dialog"; import { Button } from "@/components/ui/button"; -import { toast } from "sonner"; import { Tooltip, TooltipContent, - TooltipTrigger, TooltipProvider, + TooltipTrigger, } from "@/components/ui/tooltip"; +import { api } from "@/utils/api"; import { InfoIcon } from "lucide-react"; +import React from "react"; +import { toast } from "sonner"; export const RemoveGithubApp = () => { const { refetch } = api.auth.get.useQuery(); diff --git a/components/dashboard/settings/profile/enable-2fa.tsx b/components/dashboard/settings/profile/enable-2fa.tsx index f6e14337f..8c2a369f3 100644 --- a/components/dashboard/settings/profile/enable-2fa.tsx +++ b/components/dashboard/settings/profile/enable-2fa.tsx @@ -17,6 +17,11 @@ import { FormLabel, FormMessage, } from "@/components/ui/form"; +import { + InputOTP, + InputOTPGroup, + InputOTPSlot, +} from "@/components/ui/input-otp"; import { api } from "@/utils/api"; import { zodResolver } from "@hookform/resolvers/zod"; import { AlertTriangle, Fingerprint } from "lucide-react"; @@ -24,11 +29,6 @@ import { useEffect } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; -import { - InputOTP, - InputOTPGroup, - InputOTPSlot, -} from "@/components/ui/input-otp"; const Enable2FASchema = z.object({ pin: z.string().min(6, { diff --git a/components/dashboard/settings/profile/generate-token.tsx b/components/dashboard/settings/profile/generate-token.tsx index f79e8eb17..55b28ec02 100644 --- a/components/dashboard/settings/profile/generate-token.tsx +++ b/components/dashboard/settings/profile/generate-token.tsx @@ -1,3 +1,4 @@ +import { ToggleVisibilityInput } from "@/components/shared/toggle-visibility-input"; import { Button } from "@/components/ui/button"; import { Card, @@ -6,12 +7,11 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import { api } from "@/utils/api"; -import { toast } from "sonner"; -import { ToggleVisibilityInput } from "@/components/shared/toggle-visibility-input"; import { Label } from "@/components/ui/label"; -import Link from "next/link"; +import { api } from "@/utils/api"; import { ExternalLinkIcon } from "lucide-react"; +import Link from "next/link"; +import { toast } from "sonner"; export const GenerateToken = () => { const { data, refetch } = api.auth.get.useQuery(); diff --git a/components/dashboard/settings/profile/profile-form.tsx b/components/dashboard/settings/profile/profile-form.tsx index 319c1b3b1..1aa25903b 100644 --- a/components/dashboard/settings/profile/profile-form.tsx +++ b/components/dashboard/settings/profile/profile-form.tsx @@ -6,10 +6,6 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import { Input } from "@/components/ui/input"; -import { z } from "zod"; -import { useForm } from "react-hook-form"; -import { zodResolver } from "@hookform/resolvers/zod"; import { Form, FormControl, @@ -18,12 +14,16 @@ import { FormLabel, FormMessage, } from "@/components/ui/form"; -import { useEffect } from "react"; -import { api } from "@/utils/api"; -import { toast } from "sonner"; +import { Input } from "@/components/ui/input"; import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; -import { Enable2FA } from "./enable-2fa"; +import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; import { Disable2FA } from "./disable-2fa"; +import { Enable2FA } from "./enable-2fa"; const profileSchema = z.object({ email: z.string(), diff --git a/components/dashboard/settings/show.tsx b/components/dashboard/settings/show.tsx index c792861b5..f193ab2b6 100644 --- a/components/dashboard/settings/show.tsx +++ b/components/dashboard/settings/show.tsx @@ -1,14 +1,14 @@ +import { cn } from "@/lib/utils"; +import { api } from "@/utils/api"; import React from "react"; -import { ProfileForm } from "./profile/profile-form"; -import { GithubSetup } from "./github/github-setup"; import { AppearanceForm } from "./appearance-form"; -import { ShowDestinations } from "./destination/show-destinations"; import { ShowCertificates } from "./certificates/show-certificates"; +import { ShowDestinations } from "./destination/show-destinations"; +import { GithubSetup } from "./github/github-setup"; +import { ProfileForm } from "./profile/profile-form"; +import { ShowUsers } from "./users/show-users"; import { WebDomain } from "./web-domain"; import { WebServer } from "./web-server"; -import { api } from "@/utils/api"; -import { ShowUsers } from "./users/show-users"; -import { cn } from "@/lib/utils"; export const ShowSettings = () => { const { data } = api.auth.get.useQuery(); diff --git a/components/dashboard/settings/users/add-permissions.tsx b/components/dashboard/settings/users/add-permissions.tsx index b17f2004c..c05918b07 100644 --- a/components/dashboard/settings/users/add-permissions.tsx +++ b/components/dashboard/settings/users/add-permissions.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Checkbox } from "@/components/ui/checkbox"; import { @@ -9,6 +10,7 @@ import { DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; +import { DropdownMenuItem } from "@/components/ui/dropdown-menu"; import { Form, FormControl, @@ -21,13 +23,11 @@ import { import { Switch } from "@/components/ui/switch"; import { extractServices } from "@/pages/dashboard/project/[projectId]"; import { api } from "@/utils/api"; -import { AlertBlock } from "@/components/shared/alert-block"; import { zodResolver } from "@hookform/resolvers/zod"; import { useEffect } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; -import { DropdownMenuItem } from "@/components/ui/dropdown-menu"; const addPermissions = z.object({ accesedProjects: z.array(z.string()).optional(), diff --git a/components/dashboard/settings/users/add-user.tsx b/components/dashboard/settings/users/add-user.tsx index ee8edfead..16af8787f 100644 --- a/components/dashboard/settings/users/add-user.tsx +++ b/components/dashboard/settings/users/add-user.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -19,13 +20,12 @@ import { } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { api } from "@/utils/api"; -import { AlertBlock } from "@/components/shared/alert-block"; import { zodResolver } from "@hookform/resolvers/zod"; +import { PlusIcon } from "lucide-react"; import { useEffect } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; -import { PlusIcon } from "lucide-react"; const addUser = z.object({ email: z diff --git a/components/dashboard/settings/users/delete-user.tsx b/components/dashboard/settings/users/delete-user.tsx index 36f5de2c1..e8f708dae 100644 --- a/components/dashboard/settings/users/delete-user.tsx +++ b/components/dashboard/settings/users/delete-user.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { AlertDialog, AlertDialogAction, @@ -11,10 +10,11 @@ import { AlertDialogTrigger, } from "@/components/ui/alert-dialog"; import { Button } from "@/components/ui/button"; +import { DropdownMenuItem } from "@/components/ui/dropdown-menu"; import { api } from "@/utils/api"; import { TrashIcon } from "lucide-react"; +import React from "react"; import { toast } from "sonner"; -import { DropdownMenuItem } from "@/components/ui/dropdown-menu"; interface Props { authId: string; diff --git a/components/dashboard/settings/users/show-users.tsx b/components/dashboard/settings/users/show-users.tsx index 55c304110..cad28487c 100644 --- a/components/dashboard/settings/users/show-users.tsx +++ b/components/dashboard/settings/users/show-users.tsx @@ -1,3 +1,5 @@ +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; import { Card, CardContent, @@ -5,15 +7,13 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import { api } from "@/utils/api"; -import { MoreHorizontal, Users } from "lucide-react"; -import { AddUser } from "./add-user"; -import { DeleteUser } from "./delete-user"; -import { format } from "date-fns"; -import { useEffect, useState } from "react"; -import { AddUserPermissions } from "./add-permissions"; -import copy from "copy-to-clipboard"; -import { toast } from "sonner"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuLabel, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu"; import { Table, TableBody, @@ -23,15 +23,15 @@ import { TableHeader, TableRow, } from "@/components/ui/table"; -import { Badge } from "@/components/ui/badge"; -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuLabel, - DropdownMenuTrigger, -} from "@/components/ui/dropdown-menu"; -import { Button } from "@/components/ui/button"; +import { api } from "@/utils/api"; +import copy from "copy-to-clipboard"; +import { format } from "date-fns"; +import { MoreHorizontal, Users } from "lucide-react"; +import { useEffect, useState } from "react"; +import { toast } from "sonner"; +import { AddUserPermissions } from "./add-permissions"; +import { AddUser } from "./add-user"; +import { DeleteUser } from "./delete-user"; export const ShowUsers = () => { const { data } = api.user.all.useQuery(); diff --git a/components/dashboard/settings/users/update-user.tsx b/components/dashboard/settings/users/update-user.tsx index 843f572c0..78ad2c1a3 100644 --- a/components/dashboard/settings/users/update-user.tsx +++ b/components/dashboard/settings/users/update-user.tsx @@ -1,3 +1,5 @@ +import { AlertBlock } from "@/components/shared/alert-block"; +import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, @@ -7,7 +9,6 @@ import { DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; -import { Button } from "@/components/ui/button"; import { Form, FormControl, @@ -16,15 +17,14 @@ import { FormLabel, FormMessage, } from "@/components/ui/form"; -import { useForm } from "react-hook-form"; -import { z } from "zod"; -import { AlertBlock } from "@/components/shared/alert-block"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { useEffect } from "react"; -import { toast } from "sonner"; import { Input } from "@/components/ui/input"; -import { SquarePen } from "lucide-react"; import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { SquarePen } from "lucide-react"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; const updateUserSchema = z.object({ email: z diff --git a/components/dashboard/settings/web-server.tsx b/components/dashboard/settings/web-server.tsx index b2c0a6cb2..61c4917f6 100644 --- a/components/dashboard/settings/web-server.tsx +++ b/components/dashboard/settings/web-server.tsx @@ -1,7 +1,4 @@ -import React, { useEffect, useState } from "react"; import { Button } from "@/components/ui/button"; -import { Switch } from "@/components/ui/switch"; -import { Label } from "@/components/ui/label"; import { Card, CardContent, @@ -9,6 +6,9 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; +import { Label } from "@/components/ui/label"; +import { Switch } from "@/components/ui/switch"; +import React, { useEffect, useState } from "react"; import { DropdownMenu, @@ -21,12 +21,12 @@ import { } from "@/components/ui/dropdown-menu"; import { api } from "@/utils/api"; import { toast } from "sonner"; -import { ShowModalLogs } from "./web-server/show-modal-logs"; -import { TerminalModal } from "./web-server/terminal-modal"; import { DockerTerminalModal } from "./web-server/docker-terminal-modal"; import { ShowMainTraefikConfig } from "./web-server/show-main-traefik-config"; -import { ShowServerTraefikConfig } from "./web-server/show-server-traefik-config"; +import { ShowModalLogs } from "./web-server/show-modal-logs"; import { ShowServerMiddlewareConfig } from "./web-server/show-server-middleware-config"; +import { ShowServerTraefikConfig } from "./web-server/show-server-traefik-config"; +import { TerminalModal } from "./web-server/terminal-modal"; import { UpdateServer } from "./web-server/update-server"; export const WebServer = () => { diff --git a/components/dashboard/settings/web-server/docker-terminal-modal.tsx b/components/dashboard/settings/web-server/docker-terminal-modal.tsx index 0c3c98544..2fc217284 100644 --- a/components/dashboard/settings/web-server/docker-terminal-modal.tsx +++ b/components/dashboard/settings/web-server/docker-terminal-modal.tsx @@ -1,5 +1,3 @@ -import type React from "react"; -import { useEffect, useState } from "react"; import { Dialog, DialogContent, @@ -8,8 +6,7 @@ import { DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; -import dynamic from "next/dynamic"; -import { api } from "@/utils/api"; +import { Label } from "@/components/ui/label"; import { Select, SelectContent, @@ -19,7 +16,10 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; -import { Label } from "@/components/ui/label"; +import { api } from "@/utils/api"; +import dynamic from "next/dynamic"; +import type React from "react"; +import { useEffect, useState } from "react"; const Terminal = dynamic( () => diff --git a/components/dashboard/settings/web-server/show-main-traefik-config.tsx b/components/dashboard/settings/web-server/show-main-traefik-config.tsx index 16f69b773..e6e4866e9 100644 --- a/components/dashboard/settings/web-server/show-main-traefik-config.tsx +++ b/components/dashboard/settings/web-server/show-main-traefik-config.tsx @@ -1,3 +1,5 @@ +import { AlertBlock } from "@/components/shared/alert-block"; +import { CodeEditor } from "@/components/shared/code-editor"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -17,13 +19,11 @@ import { FormMessage, } from "@/components/ui/form"; import { api } from "@/utils/api"; -import { AlertBlock } from "@/components/shared/alert-block"; import { zodResolver } from "@hookform/resolvers/zod"; import { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; -import { CodeEditor } from "@/components/shared/code-editor"; import { validateAndFormatYAML } from "../../application/advanced/traefik/update-traefik-config"; const UpdateMainTraefikConfigSchema = z.object({ diff --git a/components/dashboard/settings/web-server/show-modal-logs.tsx b/components/dashboard/settings/web-server/show-modal-logs.tsx index 575ebfb86..2a9cc0fa3 100644 --- a/components/dashboard/settings/web-server/show-modal-logs.tsx +++ b/components/dashboard/settings/web-server/show-modal-logs.tsx @@ -1,4 +1,3 @@ -import React, { useEffect, useState } from "react"; import { Dialog, DialogContent, @@ -7,6 +6,8 @@ import { DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; +import { DropdownMenuItem } from "@/components/ui/dropdown-menu"; +import { Label } from "@/components/ui/label"; import { Select, SelectContent, @@ -16,10 +17,10 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; -import { DropdownMenuItem } from "@/components/ui/dropdown-menu"; -import { Label } from "@/components/ui/label"; import { api } from "@/utils/api"; import dynamic from "next/dynamic"; +import type React from "react"; +import { useEffect, useState } from "react"; export const DockerLogsId = dynamic( () => diff --git a/components/dashboard/settings/web-server/show-server-middleware-config.tsx b/components/dashboard/settings/web-server/show-server-middleware-config.tsx index 4facdce29..d65291e46 100644 --- a/components/dashboard/settings/web-server/show-server-middleware-config.tsx +++ b/components/dashboard/settings/web-server/show-server-middleware-config.tsx @@ -1,3 +1,5 @@ +import { AlertBlock } from "@/components/shared/alert-block"; +import { CodeEditor } from "@/components/shared/code-editor"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -17,13 +19,11 @@ import { FormMessage, } from "@/components/ui/form"; import { api } from "@/utils/api"; -import { AlertBlock } from "@/components/shared/alert-block"; import { zodResolver } from "@hookform/resolvers/zod"; import { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; -import { CodeEditor } from "@/components/shared/code-editor"; import { validateAndFormatYAML } from "../../application/advanced/traefik/update-traefik-config"; const UpdateServerMiddlewareConfigSchema = z.object({ diff --git a/components/dashboard/settings/web-server/show-server-traefik-config.tsx b/components/dashboard/settings/web-server/show-server-traefik-config.tsx index 71a808997..9f102a542 100644 --- a/components/dashboard/settings/web-server/show-server-traefik-config.tsx +++ b/components/dashboard/settings/web-server/show-server-traefik-config.tsx @@ -1,3 +1,5 @@ +import { AlertBlock } from "@/components/shared/alert-block"; +import { CodeEditor } from "@/components/shared/code-editor"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -17,13 +19,11 @@ import { FormMessage, } from "@/components/ui/form"; import { api } from "@/utils/api"; -import { AlertBlock } from "@/components/shared/alert-block"; import { zodResolver } from "@hookform/resolvers/zod"; import { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; -import { CodeEditor } from "@/components/shared/code-editor"; import { validateAndFormatYAML } from "../../application/advanced/traefik/update-traefik-config"; const UpdateServerTraefikConfigSchema = z.object({ diff --git a/components/dashboard/settings/web-server/terminal-modal.tsx b/components/dashboard/settings/web-server/terminal-modal.tsx index b2ecc1926..d9485ee53 100644 --- a/components/dashboard/settings/web-server/terminal-modal.tsx +++ b/components/dashboard/settings/web-server/terminal-modal.tsx @@ -1,4 +1,4 @@ -import type React from "react"; +import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, @@ -7,7 +7,7 @@ import { DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; -import { Button } from "@/components/ui/button"; +import { DropdownMenuItem } from "@/components/ui/dropdown-menu"; import { Form, FormControl, @@ -17,18 +17,18 @@ import { FormLabel, FormMessage, } from "@/components/ui/form"; -import { useForm } from "react-hook-form"; -import { zodResolver } from "@hookform/resolvers/zod"; -import dynamic from "next/dynamic"; -import { DropdownMenuItem } from "@/components/ui/dropdown-menu"; -import { api } from "@/utils/api"; -import { toast } from "sonner"; -import { z } from "zod"; -import { useEffect, useState } from "react"; -import { Textarea } from "@/components/ui/textarea"; -import { RemoveSSHPrivateKey } from "./remove-ssh-private-key"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; +import { Textarea } from "@/components/ui/textarea"; +import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import dynamic from "next/dynamic"; +import type React from "react"; +import { useEffect, useState } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; +import { RemoveSSHPrivateKey } from "./remove-ssh-private-key"; const Terminal = dynamic(() => import("./terminal").then((e) => e.Terminal), { ssr: false, diff --git a/components/dashboard/settings/web-server/terminal.tsx b/components/dashboard/settings/web-server/terminal.tsx index cdc5a907d..c225be9ce 100644 --- a/components/dashboard/settings/web-server/terminal.tsx +++ b/components/dashboard/settings/web-server/terminal.tsx @@ -1,6 +1,6 @@ -import React from "react"; -import { useEffect, useRef } from "react"; import { Terminal as XTerm } from "@xterm/xterm"; +import type React from "react"; +import { useEffect, useRef } from "react"; import { FitAddon } from "xterm-addon-fit"; import "@xterm/xterm/css/xterm.css"; import { AttachAddon } from "@xterm/addon-attach"; diff --git a/components/dashboard/settings/web-server/update-server.tsx b/components/dashboard/settings/web-server/update-server.tsx index bbca5eceb..165918652 100644 --- a/components/dashboard/settings/web-server/update-server.tsx +++ b/components/dashboard/settings/web-server/update-server.tsx @@ -1,3 +1,4 @@ +import { AlertBlock } from "@/components/shared/alert-block"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -8,11 +9,10 @@ import { DialogTrigger, } from "@/components/ui/dialog"; import { api } from "@/utils/api"; -import { AlertBlock } from "@/components/shared/alert-block"; import { RefreshCcw } from "lucide-react"; +import Link from "next/link"; import { useState } from "react"; import { toast } from "sonner"; -import Link from "next/link"; import { UpdateWebServer } from "./update-webserver"; export const UpdateServer = () => { diff --git a/components/icons/data-tools-icons.tsx b/components/icons/data-tools-icons.tsx index 8ecee7efa..c361b975f 100644 --- a/components/icons/data-tools-icons.tsx +++ b/components/icons/data-tools-icons.tsx @@ -3,155 +3,155 @@ import React from "react"; // https://worldvectorlogo.com/downloaded/redis Ref interface Props { - className?: string; + className?: string; } export const PostgresqlIcon = ({ className }: Props) => { - return ( - - - - - - - - ); + return ( + + + + + + + + ); }; export const MysqlIcon = ({ className }: Props) => { - return ( - - - - - ); + return ( + + + + + ); }; export const MariadbIcon = ({ className }: Props) => { - return ( - - - - ); + return ( + + + + ); }; export const MongodbIcon = ({ className }: Props) => { - return ( - - - - - - ); + return ( + + + + + + ); }; export const RedisIcon = ({ className }: Props) => { - return ( - - - - - - - - - - - - ); + return ( + + + + + + + + + + + + ); }; diff --git a/components/layouts/navbar.tsx b/components/layouts/navbar.tsx index 847932da8..0b0e38ffa 100644 --- a/components/layouts/navbar.tsx +++ b/components/layouts/navbar.tsx @@ -8,13 +8,13 @@ import { DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { cn } from "@/lib/utils"; +import { api } from "@/utils/api"; +import { HeartIcon } from "lucide-react"; import Link from "next/link"; +import { useRouter } from "next/router"; import { Logo } from "../shared/logo"; import { Avatar, AvatarFallback, AvatarImage } from "../ui/avatar"; -import { useRouter } from "next/router"; -import { api } from "@/utils/api"; import { buttonVariants } from "../ui/button"; -import { HeartIcon } from "lucide-react"; export const Navbar = () => { const router = useRouter(); diff --git a/components/layouts/navigation-tabs.tsx b/components/layouts/navigation-tabs.tsx index fdd121883..b251a2793 100644 --- a/components/layouts/navigation-tabs.tsx +++ b/components/layouts/navigation-tabs.tsx @@ -1,10 +1,10 @@ import { AddProject } from "@/components/dashboard/projects/add"; -import { Tabs, TabsContent, TabsList, TabsTrigger } from "../ui/tabs"; -import { useEffect, useMemo, useState } from "react"; -import { useRouter } from "next/router"; -import { api } from "@/utils/api"; import type { Auth } from "@/server/api/services/auth"; import type { User } from "@/server/api/services/user"; +import { api } from "@/utils/api"; +import { useRouter } from "next/router"; +import { useEffect, useMemo, useState } from "react"; +import { Tabs, TabsContent, TabsList, TabsTrigger } from "../ui/tabs"; interface TabInfo { label: string; diff --git a/components/layouts/settings-layout.tsx b/components/layouts/settings-layout.tsx index b3bf93417..7ef34baa3 100644 --- a/components/layouts/settings-layout.tsx +++ b/components/layouts/settings-layout.tsx @@ -76,22 +76,22 @@ export const SettingsLayout = ({ children }: Props) => { ); }; -import Link from "next/link"; import { Activity, Database, + type LucideIcon, Route, Server, ShieldCheck, User2, Users, - type LucideIcon, } from "lucide-react"; +import Link from "next/link"; import { buttonVariants } from "@/components/ui/button"; -import { useRouter } from "next/router"; import { cn } from "@/lib/utils"; import { api } from "@/utils/api"; +import { useRouter } from "next/router"; interface NavProps { links: { diff --git a/components/shared/alert-block.tsx b/components/shared/alert-block.tsx index b0fec201d..0295ca8b9 100644 --- a/components/shared/alert-block.tsx +++ b/components/shared/alert-block.tsx @@ -4,7 +4,7 @@ interface Props extends React.ComponentPropsWithoutRef<"div"> { } import { cn } from "@/lib/utils"; -import { AlertTriangle, AlertCircle, CheckCircle2, Info } from "lucide-react"; +import { AlertCircle, AlertTriangle, CheckCircle2, Info } from "lucide-react"; const iconMap = { info: { diff --git a/components/shared/code-editor.tsx b/components/shared/code-editor.tsx index 6db8e50e3..b20ef60a3 100644 --- a/components/shared/code-editor.tsx +++ b/components/shared/code-editor.tsx @@ -1,11 +1,11 @@ -import CodeMirror, { type ReactCodeMirrorProps } from "@uiw/react-codemirror"; -import { yaml } from "@codemirror/lang-yaml"; -import { json } from "@codemirror/lang-json"; -import { githubLight, githubDark } from "@uiw/codemirror-theme-github"; import { cn } from "@/lib/utils"; -import { useTheme } from "next-themes"; +import { json } from "@codemirror/lang-json"; +import { yaml } from "@codemirror/lang-yaml"; import { StreamLanguage } from "@codemirror/language"; import { properties } from "@codemirror/legacy-modes/mode/properties"; +import { githubDark, githubLight } from "@uiw/codemirror-theme-github"; +import CodeMirror, { type ReactCodeMirrorProps } from "@uiw/react-codemirror"; +import { useTheme } from "next-themes"; interface Props extends ReactCodeMirrorProps { wrapperClassName?: string; disabled?: boolean; diff --git a/components/shared/status-tooltip.tsx b/components/shared/status-tooltip.tsx index e330affee..d5e9fcf19 100644 --- a/components/shared/status-tooltip.tsx +++ b/components/shared/status-tooltip.tsx @@ -17,7 +17,12 @@ export const StatusTooltip = ({ status, className }: Props) => { {status === "idle" && ( -
+
)} {status === "error" && (
{ const [isPasswordVisible, setIsPasswordVisible] = useState(false); diff --git a/components/support/show-support.tsx b/components/support/show-support.tsx index 8d6ab5469..b43a14446 100644 --- a/components/support/show-support.tsx +++ b/components/support/show-support.tsx @@ -1,3 +1,4 @@ +import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, @@ -7,7 +8,6 @@ import { DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; -import { Button } from "@/components/ui/button"; import { HeartIcon } from "lucide-react"; export const ShowSupport = () => { diff --git a/components/ui/accordion.tsx b/components/ui/accordion.tsx index e6a723d06..45a318193 100644 --- a/components/ui/accordion.tsx +++ b/components/ui/accordion.tsx @@ -1,56 +1,56 @@ -import * as React from "react" -import * as AccordionPrimitive from "@radix-ui/react-accordion" -import { ChevronDown } from "lucide-react" +import * as AccordionPrimitive from "@radix-ui/react-accordion"; +import { ChevronDown } from "lucide-react"; +import * as React from "react"; -import { cn } from "@/lib/utils" +import { cn } from "@/lib/utils"; -const Accordion = AccordionPrimitive.Root +const Accordion = AccordionPrimitive.Root; const AccordionItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - -)) -AccordionItem.displayName = "AccordionItem" + +)); +AccordionItem.displayName = "AccordionItem"; const AccordionTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, children, ...props }, ref) => ( - - svg]:rotate-180", - className - )} - {...props} - > - {children} - - - -)) -AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName + + svg]:rotate-180", + className, + )} + {...props} + > + {children} + + + +)); +AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName; const AccordionContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, children, ...props }, ref) => ( - -
{children}
-
-)) + +
{children}
+
+)); -AccordionContent.displayName = AccordionPrimitive.Content.displayName +AccordionContent.displayName = AccordionPrimitive.Content.displayName; -export { Accordion, AccordionItem, AccordionTrigger, AccordionContent } +export { Accordion, AccordionItem, AccordionTrigger, AccordionContent }; diff --git a/components/ui/alert-dialog.tsx b/components/ui/alert-dialog.tsx index 235001462..371471418 100644 --- a/components/ui/alert-dialog.tsx +++ b/components/ui/alert-dialog.tsx @@ -1,8 +1,8 @@ -import * as React from "react"; import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog"; +import * as React from "react"; -import { cn } from "@/lib/utils"; import { buttonVariants } from "@/components/ui/button"; +import { cn } from "@/lib/utils"; const AlertDialog = AlertDialogPrimitive.Root; @@ -11,129 +11,129 @@ const AlertDialogTrigger = AlertDialogPrimitive.Trigger; const AlertDialogPortal = AlertDialogPrimitive.Portal; const AlertDialogOverlay = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - + )); AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName; const AlertDialogContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - - - - + + + + )); AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName; const AlertDialogHeader = ({ - className, - ...props + className, + ...props }: React.HTMLAttributes) => ( -
+
); AlertDialogHeader.displayName = "AlertDialogHeader"; const AlertDialogFooter = ({ - className, - ...props + className, + ...props }: React.HTMLAttributes) => ( -
+
); AlertDialogFooter.displayName = "AlertDialogFooter"; const AlertDialogTitle = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - + )); AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName; const AlertDialogDescription = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - + )); AlertDialogDescription.displayName = - AlertDialogPrimitive.Description.displayName; + AlertDialogPrimitive.Description.displayName; const AlertDialogAction = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - + )); AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName; const AlertDialogCancel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - + )); AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName; export { - AlertDialog, - AlertDialogPortal, - AlertDialogOverlay, - AlertDialogTrigger, - AlertDialogContent, - AlertDialogHeader, - AlertDialogFooter, - AlertDialogTitle, - AlertDialogDescription, - AlertDialogAction, - AlertDialogCancel, + AlertDialog, + AlertDialogPortal, + AlertDialogOverlay, + AlertDialogTrigger, + AlertDialogContent, + AlertDialogHeader, + AlertDialogFooter, + AlertDialogTitle, + AlertDialogDescription, + AlertDialogAction, + AlertDialogCancel, }; diff --git a/components/ui/alert.tsx b/components/ui/alert.tsx index 41fa7e056..a9a84afdb 100644 --- a/components/ui/alert.tsx +++ b/components/ui/alert.tsx @@ -1,59 +1,59 @@ -import * as React from "react" -import { cva, type VariantProps } from "class-variance-authority" +import { type VariantProps, cva } from "class-variance-authority"; +import * as React from "react"; -import { cn } from "@/lib/utils" +import { cn } from "@/lib/utils"; const alertVariants = cva( - "relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground", - { - variants: { - variant: { - default: "bg-background text-foreground", - destructive: - "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive", - }, - }, - defaultVariants: { - variant: "default", - }, - } -) + "relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground", + { + variants: { + variant: { + default: "bg-background text-foreground", + destructive: + "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive", + }, + }, + defaultVariants: { + variant: "default", + }, + }, +); const Alert = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes & VariantProps + HTMLDivElement, + React.HTMLAttributes & VariantProps >(({ className, variant, ...props }, ref) => ( -
-)) -Alert.displayName = "Alert" +
+)); +Alert.displayName = "Alert"; const AlertTitle = React.forwardRef< - HTMLParagraphElement, - React.HTMLAttributes + HTMLParagraphElement, + React.HTMLAttributes >(({ className, ...props }, ref) => ( -
-)) -AlertTitle.displayName = "AlertTitle" +
+)); +AlertTitle.displayName = "AlertTitle"; const AlertDescription = React.forwardRef< - HTMLParagraphElement, - React.HTMLAttributes + HTMLParagraphElement, + React.HTMLAttributes >(({ className, ...props }, ref) => ( -
-)) -AlertDescription.displayName = "AlertDescription" +
+)); +AlertDescription.displayName = "AlertDescription"; -export { Alert, AlertTitle, AlertDescription } +export { Alert, AlertTitle, AlertDescription }; diff --git a/components/ui/avatar.tsx b/components/ui/avatar.tsx index 444b1dbaa..13b276cd3 100644 --- a/components/ui/avatar.tsx +++ b/components/ui/avatar.tsx @@ -1,47 +1,47 @@ -import * as React from "react"; import * as AvatarPrimitive from "@radix-ui/react-avatar"; +import * as React from "react"; import { cn } from "@/lib/utils"; const Avatar = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - + )); Avatar.displayName = AvatarPrimitive.Root.displayName; const AvatarImage = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - + )); AvatarImage.displayName = AvatarPrimitive.Image.displayName; const AvatarFallback = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - + )); AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName; diff --git a/components/ui/badge.tsx b/components/ui/badge.tsx index d3d5d6040..f38976c08 100644 --- a/components/ui/badge.tsx +++ b/components/ui/badge.tsx @@ -1,36 +1,36 @@ -import * as React from "react"; -import { cva, type VariantProps } from "class-variance-authority"; +import { type VariantProps, cva } from "class-variance-authority"; +import type * as React from "react"; import { cn } from "@/lib/utils"; const badgeVariants = cva( - "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", - { - variants: { - variant: { - default: - "border-transparent bg-primary text-primary-foreground hover:bg-primary/80", - secondary: - "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", - destructive: - "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80", - outline: "text-foreground", - }, - }, - defaultVariants: { - variant: "default", - }, - }, + "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground hover:bg-primary/80", + secondary: + "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", + destructive: + "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80", + outline: "text-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + }, ); export interface BadgeProps - extends React.HTMLAttributes, - VariantProps {} + extends React.HTMLAttributes, + VariantProps {} function Badge({ className, variant, ...props }: BadgeProps) { - return ( -
- ); + return ( +
+ ); } export { Badge, badgeVariants }; diff --git a/components/ui/breadcrumb.tsx b/components/ui/breadcrumb.tsx index 459bd87f8..92288ab9f 100644 --- a/components/ui/breadcrumb.tsx +++ b/components/ui/breadcrumb.tsx @@ -1,153 +1,153 @@ -import * as React from "react"; import { ChevronRight } from "lucide-react"; +import * as React from "react"; import { cn } from "@/lib/utils"; export function getValidChildren(children: React.ReactNode) { - return React.Children.toArray(children).filter((child) => - React.isValidElement(child), - ) as React.ReactElement[]; + return React.Children.toArray(children).filter((child) => + React.isValidElement(child), + ) as React.ReactElement[]; } export interface BreadcrumbProps extends React.ComponentPropsWithoutRef<"nav"> { - /* The visual separator between each breadcrumb item */ - separator?: React.ReactNode; - /** - * If `true`, adds a separator between each breadcrumb item. - * @default true - */ - addSeparator?: boolean; + /* The visual separator between each breadcrumb item */ + separator?: React.ReactNode; + /** + * If `true`, adds a separator between each breadcrumb item. + * @default true + */ + addSeparator?: boolean; } export const Breadcrumb = React.forwardRef( - ( - { - children, - className, - separator = , - addSeparator = true, - ...props - }, - forwardedRef, - ) => { - const validChildren = getValidChildren(children); - const clones = validChildren.map((child, index) => { - return React.cloneElement(child, { - addSeparator, - separator, - isLastChild: validChildren.length === index + 1, - }); - }); + ( + { + children, + className, + separator = , + addSeparator = true, + ...props + }, + forwardedRef, + ) => { + const validChildren = getValidChildren(children); + const clones = validChildren.map((child, index) => { + return React.cloneElement(child, { + addSeparator, + separator, + isLastChild: validChildren.length === index + 1, + }); + }); - return ( - - ); - }, + return ( + + ); + }, ); Breadcrumb.displayName = "Breadcrumb"; export interface BreadcrumbItemProps extends BreadcrumbProps { - /** - * If `true`, indicates that the breadcrumb item is active, adds - * `aria-current=page` and renders a `span` - */ - isCurrentPage?: boolean; - isLastChild?: boolean; + /** + * If `true`, indicates that the breadcrumb item is active, adds + * `aria-current=page` and renders a `span` + */ + isCurrentPage?: boolean; + isLastChild?: boolean; } export const BreadcrumbItem = React.forwardRef< - HTMLLIElement, - BreadcrumbItemProps + HTMLLIElement, + BreadcrumbItemProps >( - ( - { - children, - className, - isCurrentPage, - isLastChild, - separator, - addSeparator, - ...props - }, - forwardedRef, - ) => { - const validChildren = getValidChildren(children); - const clones = validChildren.map((child) => { - if (child.type === BreadcrumbLink) { - return React.cloneElement(child, { isCurrentPage }); - } + ( + { + children, + className, + isCurrentPage, + isLastChild, + separator, + addSeparator, + ...props + }, + forwardedRef, + ) => { + const validChildren = getValidChildren(children); + const clones = validChildren.map((child) => { + if (child.type === BreadcrumbLink) { + return React.cloneElement(child, { isCurrentPage }); + } - if (child.type === BreadcrumbSeparator) { - return React.cloneElement(child, { - children: separator || child.props.children, - }); - } + if (child.type === BreadcrumbSeparator) { + return React.cloneElement(child, { + children: separator || child.props.children, + }); + } - return child; - }); + return child; + }); - return ( -
  • - {clones} - {!isLastChild && addSeparator && ( - {separator} - )} -
  • - ); - }, + return ( +
  • + {clones} + {!isLastChild && addSeparator && ( + {separator} + )} +
  • + ); + }, ); BreadcrumbItem.displayName = "BreadcrumbItem"; export interface BreadcrumbLinkProps - extends React.ComponentPropsWithoutRef<"a">, - Pick { - as?: React.ElementType; + extends React.ComponentPropsWithoutRef<"a">, + Pick { + as?: React.ElementType; } export const BreadcrumbLink = React.forwardRef< - HTMLAnchorElement, - BreadcrumbLinkProps + HTMLAnchorElement, + BreadcrumbLinkProps >(({ className, as: asComp, isCurrentPage, ...props }, forwardedRef) => { - const Comp = (isCurrentPage ? "span" : asComp || "a") as "a"; + const Comp = (isCurrentPage ? "span" : asComp || "a") as "a"; - return ( - - ); + return ( + + ); }); BreadcrumbLink.displayName = "BreadcrumbLink"; export type BreadcrumbSeparatorProps = React.ComponentPropsWithoutRef<"span">; export const BreadcrumbSeparator = React.forwardRef< - HTMLSpanElement, - BreadcrumbSeparatorProps + HTMLSpanElement, + BreadcrumbSeparatorProps >(({ className, ...props }, forwardedRef) => { - return ( - - ); + return ( + + ); }); BreadcrumbSeparator.displayName = "BreadcrumbSeparator"; diff --git a/components/ui/button.tsx b/components/ui/button.tsx index f4a456efc..d0a65f6f2 100644 --- a/components/ui/button.tsx +++ b/components/ui/button.tsx @@ -1,78 +1,78 @@ -import * as React from "react"; import { Slot } from "@radix-ui/react-slot"; -import { cva, type VariantProps } from "class-variance-authority"; +import { type VariantProps, cva } from "class-variance-authority"; +import * as React from "react"; -import { Loader2 } from "lucide-react"; import { cn } from "@/lib/utils"; +import { Loader2 } from "lucide-react"; const buttonVariants = cva( - "inline-flex items-center justify-center whitespace-nowrap select-none rounded-lg transition-all will-change-transform active:hover:scale-[0.98] active:hover:transform text-sm font-medium ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", - { - variants: { - variant: { - default: "bg-primary text-primary-foreground hover:bg-primary/90", - destructive: - "bg-destructive text-destructive-foreground hover:bg-destructive/90", - outline: - "border border-input bg-background hover:bg-accent hover:text-accent-foreground", - secondary: - "bg-secondary text-secondary-foreground hover:bg-secondary/80", - ghost: "hover:bg-accent hover:text-accent-foreground", - link: "text-primary underline-offset-4 hover:underline", - }, - size: { - default: "h-10 px-4 py-2", - sm: "h-9 rounded-md px-3", - lg: "h-11 rounded-md px-8", - icon: "h-10 w-10", - }, - }, - defaultVariants: { - variant: "default", - size: "default", - }, - }, + "inline-flex items-center justify-center whitespace-nowrap select-none rounded-lg transition-all will-change-transform active:hover:scale-[0.98] active:hover:transform text-sm font-medium ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground hover:bg-primary/90", + destructive: + "bg-destructive text-destructive-foreground hover:bg-destructive/90", + outline: + "border border-input bg-background hover:bg-accent hover:text-accent-foreground", + secondary: + "bg-secondary text-secondary-foreground hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-10 px-4 py-2", + sm: "h-9 rounded-md px-3", + lg: "h-11 rounded-md px-8", + icon: "h-10 w-10", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + }, ); export interface ButtonProps - extends React.ButtonHTMLAttributes, - VariantProps { - asChild?: boolean; - isLoading?: boolean; - children?: React.ReactNode; + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean; + isLoading?: boolean; + children?: React.ReactNode; } const Button = React.forwardRef( - ( - { - className, - variant, - size, - children, - isLoading = false, - asChild = false, - ...props - }, - ref, - ) => { - const Comp = asChild ? Slot : "button"; - return ( - <> - - {isLoading && } - {children} - - - ); - }, + ( + { + className, + variant, + size, + children, + isLoading = false, + asChild = false, + ...props + }, + ref, + ) => { + const Comp = asChild ? Slot : "button"; + return ( + <> + + {isLoading && } + {children} + + + ); + }, ); Button.displayName = "Button"; diff --git a/components/ui/card.tsx b/components/ui/card.tsx index dc3b01de1..9ebb4023f 100644 --- a/components/ui/card.tsx +++ b/components/ui/card.tsx @@ -3,84 +3,84 @@ import * as React from "react"; import { cn } from "@/lib/utils"; const Card = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes + HTMLDivElement, + React.HTMLAttributes >(({ className, ...props }, ref) => ( -
    +
    )); Card.displayName = "Card"; const CardHeader = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes + HTMLDivElement, + React.HTMLAttributes >(({ className, ...props }, ref) => ( -
    +
    )); CardHeader.displayName = "CardHeader"; const CardTitle = React.forwardRef< - HTMLParagraphElement, - React.HTMLAttributes + HTMLParagraphElement, + React.HTMLAttributes >(({ className, ...props }, ref) => ( -

    +

    )); CardTitle.displayName = "CardTitle"; const CardDescription = React.forwardRef< - HTMLParagraphElement, - React.HTMLAttributes + HTMLParagraphElement, + React.HTMLAttributes >(({ className, ...props }, ref) => ( -

    +

    )); CardDescription.displayName = "CardDescription"; const CardContent = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes + HTMLDivElement, + React.HTMLAttributes >(({ className, ...props }, ref) => ( -

    +
    )); CardContent.displayName = "CardContent"; const CardFooter = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes + HTMLDivElement, + React.HTMLAttributes >(({ className, ...props }, ref) => ( -
    +
    )); CardFooter.displayName = "CardFooter"; export { - Card, - CardHeader, - CardFooter, - CardTitle, - CardDescription, - CardContent, + Card, + CardHeader, + CardFooter, + CardTitle, + CardDescription, + CardContent, }; diff --git a/components/ui/checkbox.tsx b/components/ui/checkbox.tsx index 58d176812..54cdffe7a 100644 --- a/components/ui/checkbox.tsx +++ b/components/ui/checkbox.tsx @@ -1,27 +1,27 @@ -import * as React from "react"; import * as CheckboxPrimitive from "@radix-ui/react-checkbox"; import { Check } from "lucide-react"; +import * as React from "react"; import { cn } from "@/lib/utils"; const Checkbox = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - - - - - + + + + + )); Checkbox.displayName = CheckboxPrimitive.Root.displayName; diff --git a/components/ui/command.tsx b/components/ui/command.tsx index c3581a305..ffaff8685 100644 --- a/components/ui/command.tsx +++ b/components/ui/command.tsx @@ -1,153 +1,153 @@ -import * as React from "react"; -import { type DialogProps } from "@radix-ui/react-dialog"; +import type { DialogProps } from "@radix-ui/react-dialog"; import { Command as CommandPrimitive } from "cmdk"; import { Search } from "lucide-react"; +import * as React from "react"; -import { cn } from "@/lib/utils"; import { Dialog, DialogContent } from "@/components/ui/dialog"; +import { cn } from "@/lib/utils"; const Command = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - + )); Command.displayName = CommandPrimitive.displayName; interface CommandDialogProps extends DialogProps {} const CommandDialog = ({ children, ...props }: CommandDialogProps) => { - return ( - - - - {children} - - - - ); + return ( + + + + {children} + + + + ); }; const CommandInput = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( -
    - - -
    +
    + + +
    )); CommandInput.displayName = CommandPrimitive.Input.displayName; const CommandList = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - + )); CommandList.displayName = CommandPrimitive.List.displayName; const CommandEmpty = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >((props, ref) => ( - + )); CommandEmpty.displayName = CommandPrimitive.Empty.displayName; const CommandGroup = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - + )); CommandGroup.displayName = CommandPrimitive.Group.displayName; const CommandSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - + )); CommandSeparator.displayName = CommandPrimitive.Separator.displayName; const CommandItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - + )); CommandItem.displayName = CommandPrimitive.Item.displayName; const CommandShortcut = ({ - className, - ...props + className, + ...props }: React.HTMLAttributes) => { - return ( - - ); + return ( + + ); }; CommandShortcut.displayName = "CommandShortcut"; export { - Command, - CommandDialog, - CommandInput, - CommandList, - CommandEmpty, - CommandGroup, - CommandItem, - CommandShortcut, - CommandSeparator, + Command, + CommandDialog, + CommandInput, + CommandList, + CommandEmpty, + CommandGroup, + CommandItem, + CommandShortcut, + CommandSeparator, }; diff --git a/components/ui/dialog.tsx b/components/ui/dialog.tsx index 3c9ec7412..37e8f685f 100644 --- a/components/ui/dialog.tsx +++ b/components/ui/dialog.tsx @@ -1,6 +1,6 @@ -import * as React from "react"; import * as DialogPrimitive from "@radix-ui/react-dialog"; import { X } from "lucide-react"; +import * as React from "react"; import { cn } from "@/lib/utils"; @@ -13,110 +13,108 @@ const DialogPortal = DialogPrimitive.Portal; const DialogClose = DialogPrimitive.Close; const DialogOverlay = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - + )); DialogOverlay.displayName = DialogPrimitive.Overlay.displayName; const DialogContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, children, ...props }, ref) => ( - - - -
    - {children} -
    - - - Close - -
    -
    + + + +
    {children}
    + + + Close + +
    +
    )); DialogContent.displayName = DialogPrimitive.Content.displayName; const DialogHeader = ({ - className, - ...props + className, + ...props }: React.HTMLAttributes) => ( -
    +
    ); DialogHeader.displayName = "DialogHeader"; const DialogFooter = ({ - className, - ...props + className, + ...props }: React.HTMLAttributes) => ( -
    +
    ); DialogFooter.displayName = "DialogFooter"; const DialogTitle = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - + )); DialogTitle.displayName = DialogPrimitive.Title.displayName; const DialogDescription = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - + )); DialogDescription.displayName = DialogPrimitive.Description.displayName; export { - Dialog, - DialogPortal, - DialogOverlay, - DialogClose, - DialogTrigger, - DialogContent, - DialogHeader, - DialogFooter, - DialogTitle, - DialogDescription, + Dialog, + DialogPortal, + DialogOverlay, + DialogClose, + DialogTrigger, + DialogContent, + DialogHeader, + DialogFooter, + DialogTitle, + DialogDescription, }; diff --git a/components/ui/dropdown-menu.tsx b/components/ui/dropdown-menu.tsx index 9af40e194..f71d5cb30 100644 --- a/components/ui/dropdown-menu.tsx +++ b/components/ui/dropdown-menu.tsx @@ -1,6 +1,6 @@ -import * as React from "react"; import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"; import { Check, ChevronRight, Circle } from "lucide-react"; +import * as React from "react"; import { cn } from "@/lib/utils"; @@ -17,182 +17,182 @@ const DropdownMenuSub = DropdownMenuPrimitive.Sub; const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup; const DropdownMenuSubTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean; + } >(({ className, inset, children, ...props }, ref) => ( - - {children} - - + + {children} + + )); DropdownMenuSubTrigger.displayName = - DropdownMenuPrimitive.SubTrigger.displayName; + DropdownMenuPrimitive.SubTrigger.displayName; const DropdownMenuSubContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - + )); DropdownMenuSubContent.displayName = - DropdownMenuPrimitive.SubContent.displayName; + DropdownMenuPrimitive.SubContent.displayName; const DropdownMenuContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, sideOffset = 4, ...props }, ref) => ( - - - + + + )); DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName; const DropdownMenuItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean; + } >(({ className, inset, ...props }, ref) => ( - + )); DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName; const DropdownMenuCheckboxItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, children, checked, ...props }, ref) => ( - - - - - - - {children} - + + + + + + + {children} + )); DropdownMenuCheckboxItem.displayName = - DropdownMenuPrimitive.CheckboxItem.displayName; + DropdownMenuPrimitive.CheckboxItem.displayName; const DropdownMenuRadioItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, children, ...props }, ref) => ( - - - - - - - {children} - + + + + + + + {children} + )); DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName; const DropdownMenuLabel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean; + } >(({ className, inset, ...props }, ref) => ( - + )); DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName; const DropdownMenuSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - + )); DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName; const DropdownMenuShortcut = ({ - className, - ...props + className, + ...props }: React.HTMLAttributes) => { - return ( - - ); + return ( + + ); }; DropdownMenuShortcut.displayName = "DropdownMenuShortcut"; export { - DropdownMenu, - DropdownMenuTrigger, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuCheckboxItem, - DropdownMenuRadioItem, - DropdownMenuLabel, - DropdownMenuSeparator, - DropdownMenuShortcut, - DropdownMenuGroup, - DropdownMenuPortal, - DropdownMenuSub, - DropdownMenuSubContent, - DropdownMenuSubTrigger, - DropdownMenuRadioGroup, + DropdownMenu, + DropdownMenuTrigger, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuCheckboxItem, + DropdownMenuRadioItem, + DropdownMenuLabel, + DropdownMenuSeparator, + DropdownMenuShortcut, + DropdownMenuGroup, + DropdownMenuPortal, + DropdownMenuSub, + DropdownMenuSubContent, + DropdownMenuSubTrigger, + DropdownMenuRadioGroup, }; diff --git a/components/ui/file-tree.tsx b/components/ui/file-tree.tsx index 02e7ebec7..a72ba8cde 100644 --- a/components/ui/file-tree.tsx +++ b/components/ui/file-tree.tsx @@ -1,13 +1,13 @@ "use client"; -import React from "react"; +import { cn } from "@/lib/utils"; import * as AccordionPrimitive from "@radix-ui/react-accordion"; // import { ScrollArea } from "@acme/components/ui/scroll-area"; // import { cn } from "@acme/components/lib/utils"; import { ChevronRight, type LucideIcon } from "lucide-react"; +import React from "react"; import useResizeObserver from "use-resize-observer"; import { ScrollArea } from "./scroll-area"; -import { cn } from "@/lib/utils"; interface TreeDataItem { id: string; @@ -164,7 +164,9 @@ const TreeItem = React.forwardRef( aria-hidden="true" /> )} - {item.name} + + {item.name} + {item.children.length === 0 && ( diff --git a/components/ui/form.tsx b/components/ui/form.tsx index bc3072b43..842f1c312 100644 --- a/components/ui/form.tsx +++ b/components/ui/form.tsx @@ -1,6 +1,6 @@ -import * as React from "react"; import type * as LabelPrimitive from "@radix-ui/react-label"; import { Slot } from "@radix-ui/react-slot"; +import * as React from "react"; import { Controller, type ControllerProps, @@ -10,8 +10,8 @@ import { useFormContext, } from "react-hook-form"; -import { cn } from "@/lib/utils"; import { Label } from "@/components/ui/label"; +import { cn } from "@/lib/utils"; const Form = FormProvider; diff --git a/components/ui/input-otp.tsx b/components/ui/input-otp.tsx index 5c62edd2b..665a6a4f9 100644 --- a/components/ui/input-otp.tsx +++ b/components/ui/input-otp.tsx @@ -1,6 +1,6 @@ -import * as React from "react"; import { OTPInput, OTPInputContext } from "input-otp"; import { Dot } from "lucide-react"; +import * as React from "react"; import { cn } from "@/lib/utils"; diff --git a/components/ui/input.tsx b/components/ui/input.tsx index d865f67a5..55b46e6de 100644 --- a/components/ui/input.tsx +++ b/components/ui/input.tsx @@ -2,32 +2,32 @@ import { cn } from "@/lib/utils"; import * as React from "react"; export interface InputProps - extends React.InputHTMLAttributes { - errorMessage?: string; + extends React.InputHTMLAttributes { + errorMessage?: string; } const Input = React.forwardRef( - ({ className, errorMessage, type, ...props }, ref) => { - return ( - <> - - {errorMessage && ( - - {errorMessage} - - )} - - ); - }, + ({ className, errorMessage, type, ...props }, ref) => { + return ( + <> + + {errorMessage && ( + + {errorMessage} + + )} + + ); + }, ); Input.displayName = "Input"; diff --git a/components/ui/label.tsx b/components/ui/label.tsx index 44912aff5..6e126e940 100644 --- a/components/ui/label.tsx +++ b/components/ui/label.tsx @@ -1,23 +1,23 @@ -import * as React from "react"; import * as LabelPrimitive from "@radix-ui/react-label"; -import { cva, type VariantProps } from "class-variance-authority"; +import { type VariantProps, cva } from "class-variance-authority"; +import * as React from "react"; import { cn } from "@/lib/utils"; const labelVariants = cva( - "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", + "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", ); const Label = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & - VariantProps + React.ElementRef, + React.ComponentPropsWithoutRef & + VariantProps >(({ className, ...props }, ref) => ( - + )); Label.displayName = LabelPrimitive.Root.displayName; diff --git a/components/ui/popover.tsx b/components/ui/popover.tsx index 59dd5252e..b4dac1f3e 100644 --- a/components/ui/popover.tsx +++ b/components/ui/popover.tsx @@ -1,5 +1,5 @@ -import * as React from "react"; import * as PopoverPrimitive from "@radix-ui/react-popover"; +import * as React from "react"; import { cn } from "@/lib/utils"; @@ -8,21 +8,21 @@ const Popover = PopoverPrimitive.Root; const PopoverTrigger = PopoverPrimitive.Trigger; const PopoverContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, align = "center", sideOffset = 4, ...props }, ref) => ( - - - + + + )); PopoverContent.displayName = PopoverPrimitive.Content.displayName; diff --git a/components/ui/progress.tsx b/components/ui/progress.tsx index 105fb6500..1010596f3 100644 --- a/components/ui/progress.tsx +++ b/components/ui/progress.tsx @@ -1,26 +1,26 @@ -import * as React from "react" -import * as ProgressPrimitive from "@radix-ui/react-progress" +import * as ProgressPrimitive from "@radix-ui/react-progress"; +import * as React from "react"; -import { cn } from "@/lib/utils" +import { cn } from "@/lib/utils"; const Progress = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, value, ...props }, ref) => ( - - - -)) -Progress.displayName = ProgressPrimitive.Root.displayName + + + +)); +Progress.displayName = ProgressPrimitive.Root.displayName; -export { Progress } +export { Progress }; diff --git a/components/ui/radio-group.tsx b/components/ui/radio-group.tsx index e41130505..4e8d82f11 100644 --- a/components/ui/radio-group.tsx +++ b/components/ui/radio-group.tsx @@ -1,41 +1,41 @@ -import * as React from "react"; import * as RadioGroupPrimitive from "@radix-ui/react-radio-group"; import { Circle } from "lucide-react"; +import * as React from "react"; import { cn } from "@/lib/utils"; const RadioGroup = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => { - return ( - - ); + return ( + + ); }); RadioGroup.displayName = RadioGroupPrimitive.Root.displayName; const RadioGroupItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => { - return ( - - - - - - ); + return ( + + + + + + ); }); RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName; diff --git a/components/ui/scroll-area.tsx b/components/ui/scroll-area.tsx index e8b03cb0f..5711db962 100644 --- a/components/ui/scroll-area.tsx +++ b/components/ui/scroll-area.tsx @@ -1,5 +1,5 @@ -import * as React from "react"; import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area"; +import * as React from "react"; import { cn } from "@/lib/utils"; diff --git a/components/ui/select.tsx b/components/ui/select.tsx index ee8014082..e9e5b35b5 100644 --- a/components/ui/select.tsx +++ b/components/ui/select.tsx @@ -1,6 +1,6 @@ -import * as React from "react"; import * as SelectPrimitive from "@radix-ui/react-select"; import { Check, ChevronDown, ChevronUp } from "lucide-react"; +import * as React from "react"; import { cn } from "@/lib/utils"; @@ -11,148 +11,148 @@ const SelectGroup = SelectPrimitive.Group; const SelectValue = SelectPrimitive.Value; const SelectTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, children, ...props }, ref) => ( - span]:line-clamp-1", - className, - )} - {...props} - > - {children} - - - - + span]:line-clamp-1", + className, + )} + {...props} + > + {children} + + + + )); SelectTrigger.displayName = SelectPrimitive.Trigger.displayName; const SelectScrollUpButton = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - - - + + + )); SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName; const SelectScrollDownButton = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - - - + + + )); SelectScrollDownButton.displayName = - SelectPrimitive.ScrollDownButton.displayName; + SelectPrimitive.ScrollDownButton.displayName; const SelectContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, children, position = "popper", ...props }, ref) => ( - - - - - {children} - - - - + + + + + {children} + + + + )); SelectContent.displayName = SelectPrimitive.Content.displayName; const SelectLabel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - + )); SelectLabel.displayName = SelectPrimitive.Label.displayName; const SelectItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, children, ...props }, ref) => ( - - - - - - + + + + + + - {children} - + {children} + )); SelectItem.displayName = SelectPrimitive.Item.displayName; const SelectSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - + )); SelectSeparator.displayName = SelectPrimitive.Separator.displayName; export { - Select, - SelectGroup, - SelectValue, - SelectTrigger, - SelectContent, - SelectLabel, - SelectItem, - SelectSeparator, - SelectScrollUpButton, - SelectScrollDownButton, + Select, + SelectGroup, + SelectValue, + SelectTrigger, + SelectContent, + SelectLabel, + SelectItem, + SelectSeparator, + SelectScrollUpButton, + SelectScrollDownButton, }; diff --git a/components/ui/separator.tsx b/components/ui/separator.tsx index 4407ae5f1..a84ec004c 100644 --- a/components/ui/separator.tsx +++ b/components/ui/separator.tsx @@ -1,28 +1,28 @@ -import * as React from "react"; import * as SeparatorPrimitive from "@radix-ui/react-separator"; +import * as React from "react"; import { cn } from "@/lib/utils"; const Separator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >( - ( - { className, orientation = "horizontal", decorative = true, ...props }, - ref, - ) => ( - - ), + ( + { className, orientation = "horizontal", decorative = true, ...props }, + ref, + ) => ( + + ), ); Separator.displayName = SeparatorPrimitive.Root.displayName; diff --git a/components/ui/sheet.tsx b/components/ui/sheet.tsx index 774f5ea35..7ee0badab 100644 --- a/components/ui/sheet.tsx +++ b/components/ui/sheet.tsx @@ -1,7 +1,7 @@ -import * as React from "react"; import * as SheetPrimitive from "@radix-ui/react-dialog"; -import { cva, type VariantProps } from "class-variance-authority"; +import { type VariantProps, cva } from "class-variance-authority"; import { X } from "lucide-react"; +import * as React from "react"; import { cn } from "@/lib/utils"; @@ -14,125 +14,125 @@ const SheetClose = SheetPrimitive.Close; const SheetPortal = SheetPrimitive.Portal; const SheetOverlay = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - + )); SheetOverlay.displayName = SheetPrimitive.Overlay.displayName; const sheetVariants = cva( - "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500", - { - variants: { - side: { - top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top", - bottom: - "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom", - left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm", - right: - "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm", - }, - }, - defaultVariants: { - side: "right", - }, - }, + "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500", + { + variants: { + side: { + top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top", + bottom: + "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom", + left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm", + right: + "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm", + }, + }, + defaultVariants: { + side: "right", + }, + }, ); interface SheetContentProps - extends React.ComponentPropsWithoutRef, - VariantProps {} + extends React.ComponentPropsWithoutRef, + VariantProps {} const SheetContent = React.forwardRef< - React.ElementRef, - SheetContentProps + React.ElementRef, + SheetContentProps >(({ side = "right", className, children, ...props }, ref) => ( - - - - {children} - - - Close - - - + + + + {children} + + + Close + + + )); SheetContent.displayName = SheetPrimitive.Content.displayName; const SheetHeader = ({ - className, - ...props + className, + ...props }: React.HTMLAttributes) => ( -
    +
    ); SheetHeader.displayName = "SheetHeader"; const SheetFooter = ({ - className, - ...props + className, + ...props }: React.HTMLAttributes) => ( -
    +
    ); SheetFooter.displayName = "SheetFooter"; const SheetTitle = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - + )); SheetTitle.displayName = SheetPrimitive.Title.displayName; const SheetDescription = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - + )); SheetDescription.displayName = SheetPrimitive.Description.displayName; export { - Sheet, - SheetPortal, - SheetOverlay, - SheetTrigger, - SheetClose, - SheetContent, - SheetHeader, - SheetFooter, - SheetTitle, - SheetDescription, + Sheet, + SheetPortal, + SheetOverlay, + SheetTrigger, + SheetClose, + SheetContent, + SheetHeader, + SheetFooter, + SheetTitle, + SheetDescription, }; diff --git a/components/ui/sonner.tsx b/components/ui/sonner.tsx index b3000f0be..852502e12 100644 --- a/components/ui/sonner.tsx +++ b/components/ui/sonner.tsx @@ -4,25 +4,25 @@ import { Toaster as Sonner } from "sonner"; type ToasterProps = React.ComponentProps; const Toaster = ({ ...props }: ToasterProps) => { - const { theme = "system" } = useTheme(); - return ( - - ); + const { theme = "system" } = useTheme(); + return ( + + ); }; export { Toaster }; diff --git a/components/ui/switch.tsx b/components/ui/switch.tsx index 6be019d8a..96809024e 100644 --- a/components/ui/switch.tsx +++ b/components/ui/switch.tsx @@ -1,26 +1,26 @@ -import * as React from "react"; import * as SwitchPrimitives from "@radix-ui/react-switch"; +import * as React from "react"; import { cn } from "@/lib/utils"; const Switch = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + React.ElementRef, + React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( - - - + + + )); Switch.displayName = SwitchPrimitives.Root.displayName; diff --git a/components/ui/table.tsx b/components/ui/table.tsx index 73cf6b4ad..8f0f4089f 100644 --- a/components/ui/table.tsx +++ b/components/ui/table.tsx @@ -3,115 +3,115 @@ import * as React from "react"; import { cn } from "@/lib/utils"; const Table = React.forwardRef< - HTMLTableElement, - React.HTMLAttributes + HTMLTableElement, + React.HTMLAttributes >(({ className, ...props }, ref) => ( -
    - - +
    +
    + )); Table.displayName = "Table"; const TableHeader = React.forwardRef< - HTMLTableSectionElement, - React.HTMLAttributes + HTMLTableSectionElement, + React.HTMLAttributes >(({ className, ...props }, ref) => ( - + )); TableHeader.displayName = "TableHeader"; const TableBody = React.forwardRef< - HTMLTableSectionElement, - React.HTMLAttributes + HTMLTableSectionElement, + React.HTMLAttributes >(({ className, ...props }, ref) => ( - + )); TableBody.displayName = "TableBody"; const TableFooter = React.forwardRef< - HTMLTableSectionElement, - React.HTMLAttributes + HTMLTableSectionElement, + React.HTMLAttributes >(({ className, ...props }, ref) => ( - tr]:last:border-b-0", - className, - )} - {...props} - /> + tr]:last:border-b-0", + className, + )} + {...props} + /> )); TableFooter.displayName = "TableFooter"; const TableRow = React.forwardRef< - HTMLTableRowElement, - React.HTMLAttributes + HTMLTableRowElement, + React.HTMLAttributes >(({ className, ...props }, ref) => ( - + )); TableRow.displayName = "TableRow"; const TableHead = React.forwardRef< - HTMLTableCellElement, - React.ThHTMLAttributes + HTMLTableCellElement, + React.ThHTMLAttributes >(({ className, ...props }, ref) => ( -
    + )); TableHead.displayName = "TableHead"; const TableCell = React.forwardRef< - HTMLTableCellElement, - React.TdHTMLAttributes + HTMLTableCellElement, + React.TdHTMLAttributes >(({ className, ...props }, ref) => ( - + )); TableCell.displayName = "TableCell"; const TableCaption = React.forwardRef< - HTMLTableCaptionElement, - React.HTMLAttributes + HTMLTableCaptionElement, + React.HTMLAttributes >(({ className, ...props }, ref) => ( -
    + )); TableCaption.displayName = "TableCaption"; export { - Table, - TableHeader, - TableBody, - TableFooter, - TableHead, - TableRow, - TableCell, - TableCaption, + Table, + TableHeader, + TableBody, + TableFooter, + TableHead, + TableRow, + TableCell, + TableCaption, }; diff --git a/components/ui/tabs.tsx b/components/ui/tabs.tsx index 023b203d7..e54c215ab 100644 --- a/components/ui/tabs.tsx +++ b/components/ui/tabs.tsx @@ -1,5 +1,5 @@ -import * as React from "react"; import * as TabsPrimitive from "@radix-ui/react-tabs"; +import * as React from "react"; import { cn } from "@/lib/utils"; diff --git a/components/ui/textarea.tsx b/components/ui/textarea.tsx index e894f81e0..5b434e4ae 100644 --- a/components/ui/textarea.tsx +++ b/components/ui/textarea.tsx @@ -3,21 +3,21 @@ import * as React from "react"; import { cn } from "@/lib/utils"; export interface TextareaProps - extends React.TextareaHTMLAttributes {} + extends React.TextareaHTMLAttributes {} const Textarea = React.forwardRef( - ({ className, ...props }, ref) => { - return ( -