diff --git a/.github/workflows/login-quality.yml b/.github/workflows/login-quality.yml
index 81383941c6..f5fb46c6c4 100644
--- a/.github/workflows/login-quality.yml
+++ b/.github/workflows/login-quality.yml
@@ -52,7 +52,7 @@ jobs:
- name: Install dependencies
run: pnpm install
- name: Run login quality checks with Turbo
- run: pnpm turbo lint test:unit --filter=./login
+ run: pnpm turbo test:unit --filter=@zitadel/login
env:
# latest if branch is main, otherwise image version which is the pull request number
LOGIN_BAKE_CLI: depot bake
diff --git a/login/apps/login/.eslintrc.cjs b/login/apps/login/.eslintrc.cjs
index da3473042a..76ad0c10d8 100644
--- a/login/apps/login/.eslintrc.cjs
+++ b/login/apps/login/.eslintrc.cjs
@@ -7,8 +7,8 @@ module.exports = {
"@next/next/no-img-element": "off",
"react/no-unescaped-entities": "off",
"no-unused-vars": "off",
- "@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }],
- "no-undef": "off"
+ "@typescript-eslint/no-unused-vars": ["error", { argsIgnorePattern: "^_" }],
+ "no-undef": "off",
},
parserOptions: {
ecmaVersion: "latest",
diff --git a/login/apps/login/package.json b/login/apps/login/package.json
index 68d29b1e83..f205d93cfc 100644
--- a/login/apps/login/package.json
+++ b/login/apps/login/package.json
@@ -5,7 +5,7 @@
"scripts": {
"dev": "next dev",
"dev:turbo": "next dev --turbopack",
- "test:unit": "pnpm vitest",
+ "test:unit": "pnpm vitest --run",
"test:unit:standalone": "pnpm test:unit",
"test:unit:watch": "pnpm test:unit --watch",
"lint": "pnpm exec next lint && pnpm exec prettier --check .",
diff --git a/login/apps/login/prettier.config.mjs b/login/apps/login/prettier.config.mjs
index 58866d827d..5e0f9b2584 100644
--- a/login/apps/login/prettier.config.mjs
+++ b/login/apps/login/prettier.config.mjs
@@ -4,8 +4,8 @@ export default {
useTabs: false,
semi: true,
singleQuote: false,
- trailingComma: 'all',
+ trailingComma: "all",
bracketSpacing: true,
- arrowParens: 'always',
- plugins: ["prettier-plugin-organize-imports", "prettier-plugin-tailwindcss"]
+ arrowParens: "always",
+ plugins: ["prettier-plugin-organize-imports", "prettier-plugin-tailwindcss"],
};
diff --git a/login/apps/login/scripts/prepare-standalone.js b/login/apps/login/scripts/prepare-standalone.js
index d40cebc206..666e116edb 100644
--- a/login/apps/login/scripts/prepare-standalone.js
+++ b/login/apps/login/scripts/prepare-standalone.js
@@ -5,80 +5,89 @@
* This script converts the monorepo version to a standalone version
*/
-import fs from 'fs/promises';
-import { execSync } from 'child_process';
+import { execSync } from "child_process";
+import fs from "fs/promises";
const FILES_TO_REMOVE = [
- // Turbo is not needed for standalone builds since there are no workspace dependencies
- { file: 'turbo.json', backup: 'turbo.monorepo.backup.json' }
+ // Turbo is not needed for standalone builds since there are no workspace dependencies
+ { file: "turbo.json", backup: "turbo.monorepo.backup.json" },
];
async function prepareStandalone() {
- console.log('š§ Preparing standalone version...\n');
+ console.log("š§ Preparing standalone version...\n");
- const args = process.argv.slice(2);
- const shouldInstall = args.includes('--install');
+ const args = process.argv.slice(2);
+ const shouldInstall = args.includes("--install");
- try {
- // Step 1: Copy package.standalone.json to package.json
- console.log('š¦ Setting up package.json...');
- const packageStandaloneExists = await fs.access('package.standalone.json').then(() => true).catch(() => false);
+ try {
+ // Step 1: Copy package.standalone.json to package.json
+ console.log("š¦ Setting up package.json...");
+ const packageStandaloneExists = await fs
+ .access("package.standalone.json")
+ .then(() => true)
+ .catch(() => false);
- if (packageStandaloneExists) {
- // Backup current package.json
- await fs.copyFile('package.json', 'package.monorepo.backup.json');
- console.log(' š¾ Backed up package.json ā package.monorepo.backup.json');
+ if (packageStandaloneExists) {
+ // Backup current package.json
+ await fs.copyFile("package.json", "package.monorepo.backup.json");
+ console.log(
+ " š¾ Backed up package.json ā package.monorepo.backup.json",
+ );
- // Copy standalone version
- await fs.copyFile('package.standalone.json', 'package.json');
- console.log(' ā
package.standalone.json ā package.json');
- } else {
- throw new Error('package.standalone.json not found!');
- }
-
- // Step 2: Remove unnecessary files for standalone
- console.log('šļø Removing monorepo-specific files...');
- for (const item of FILES_TO_REMOVE) {
- const fileExists = await fs.access(item.file).then(() => true).catch(() => false);
-
- if (fileExists) {
- // Backup current file
- await fs.copyFile(item.file, item.backup);
- console.log(` š¾ Backed up ${item.file} ā ${item.backup}`);
-
- // Remove the file
- await fs.unlink(item.file);
- console.log(` šļø Removed ${item.file} (not needed in standalone)`);
- } else {
- console.log(` ā¹ļø ${item.file} not found, skipping`);
- }
- }
-
- // Step 3: Install dependencies if requested
- if (shouldInstall) {
- console.log('\nš„ Installing dependencies...');
- try {
- execSync('pnpm install', { stdio: 'inherit' });
- console.log(' ā
Dependencies installed successfully');
- } catch (error) {
- console.warn(' ā ļø pnpm install failed, you may need to run it manually');
- }
- }
-
- console.log('\nš Standalone preparation complete!');
- console.log(' ⨠Turbo removed - using standard npm scripts');
- console.log('\nš Next steps:');
- if (!shouldInstall) {
- console.log(' 1. Run: pnpm install');
- }
- console.log(' 2. Run: pnpm run dev');
- console.log(' 3. Start developing!\n');
-
- } catch (error) {
- console.error('\nā Failed to prepare standalone version:', error.message);
- console.error('Please check the error above and try again.\n');
- process.exit(1);
+ // Copy standalone version
+ await fs.copyFile("package.standalone.json", "package.json");
+ console.log(" ā
package.standalone.json ā package.json");
+ } else {
+ throw new Error("package.standalone.json not found!");
}
+
+ // Step 2: Remove unnecessary files for standalone
+ console.log("šļø Removing monorepo-specific files...");
+ for (const item of FILES_TO_REMOVE) {
+ const fileExists = await fs
+ .access(item.file)
+ .then(() => true)
+ .catch(() => false);
+
+ if (fileExists) {
+ // Backup current file
+ await fs.copyFile(item.file, item.backup);
+ console.log(` š¾ Backed up ${item.file} ā ${item.backup}`);
+
+ // Remove the file
+ await fs.unlink(item.file);
+ console.log(` šļø Removed ${item.file} (not needed in standalone)`);
+ } else {
+ console.log(` ā¹ļø ${item.file} not found, skipping`);
+ }
+ }
+
+ // Step 3: Install dependencies if requested
+ if (shouldInstall) {
+ console.log("\nš„ Installing dependencies...");
+ try {
+ execSync("pnpm install", { stdio: "inherit" });
+ console.log(" ā
Dependencies installed successfully");
+ } catch (error) {
+ console.warn(
+ " ā ļø pnpm install failed, you may need to run it manually",
+ );
+ }
+ }
+
+ console.log("\nš Standalone preparation complete!");
+ console.log(" ⨠Turbo removed - using standard npm scripts");
+ console.log("\nš Next steps:");
+ if (!shouldInstall) {
+ console.log(" 1. Run: pnpm install");
+ }
+ console.log(" 2. Run: pnpm run dev");
+ console.log(" 3. Start developing!\n");
+ } catch (error) {
+ console.error("\nā Failed to prepare standalone version:", error.message);
+ console.error("Please check the error above and try again.\n");
+ process.exit(1);
+ }
}
prepareStandalone();
diff --git a/login/apps/login/src/app/(login)/accounts/page.tsx b/login/apps/login/src/app/(login)/accounts/page.tsx
index a1e99401e2..5af25c1d0b 100644
--- a/login/apps/login/src/app/(login)/accounts/page.tsx
+++ b/login/apps/login/src/app/(login)/accounts/page.tsx
@@ -10,7 +10,7 @@ import {
} from "@/lib/zitadel";
import { UserPlusIcon } from "@heroicons/react/24/outline";
import { Organization } from "@zitadel/proto/zitadel/org/v2/org_pb";
-import { getLocale } from "next-intl/server";
+// import { getLocale } from "next-intl/server";
import { headers } from "next/headers";
import Link from "next/link";
@@ -33,7 +33,7 @@ export default async function Page(props: {
searchParams: Promise