diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index e892cd5..71e4354 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -127,10 +127,12 @@ repos:
name: prettier
entry: prettier --write
language: node
- types_or: [ts, css, html, markdown]
+ types_or: [javascript, jsx, ts, css, html, markdown]
additional_dependencies:
- 'prettier@^3.3.3'
- 'prettier-plugin-tailwindcss@^0.6.6'
+ - 'prettier-plugin-classnames@^0.7.2'
+ - 'prettier-plugin-merge@^0.7.1'
- 'tailwind-scrollbar@^3.1.0'
- repo: https://github.com/pre-commit/mirrors-eslint
rev: v9.10.0
@@ -147,3 +149,6 @@ repos:
- 'eslint-plugin-react@^7.34.1'
- 'eslint-plugin-react-hooks@^4.6.2'
- 'eslint-plugin-react-refresh@^0.4.5'
+ args: ['--fix']
+ types: []
+ files: '^frontend/.*\.(js|jsx)$'
diff --git a/frontend/.eslintrc.cjs b/frontend/.eslintrc.cjs
index 71ff1a6..b7db9aa 100644
--- a/frontend/.eslintrc.cjs
+++ b/frontend/.eslintrc.cjs
@@ -22,6 +22,7 @@ module.exports = {
'warn',
{ allowConstantExport: true }
],
- 'max-len': ['error', { code: 79 }]
+ 'max-len': ['error', { code: 100 }],
+ 'react/no-unescaped-entities': 'off'
}
};
diff --git a/frontend/.prettierrc.js b/frontend/.prettierrc.js
index d17e3d4..9585637 100644
--- a/frontend/.prettierrc.js
+++ b/frontend/.prettierrc.js
@@ -4,11 +4,16 @@
*/
module.exports = {
- plugins: [require.resolve('prettier-plugin-tailwindcss')],
+ plugins: [
+ require.resolve('prettier-plugin-tailwindcss'),
+ require.resolve('prettier-plugin-classnames'),
+ require.resolve('prettier-plugin-merge')
+ ],
semi: true,
tabWidth: 2,
printWidth: 79,
singleQuote: true,
trailingComma: 'none',
- bracketSameLine: true
+ bracketSameLine: true,
+ endingPosition: 'absolute-with-indent'
};
diff --git a/frontend/.storybook/main.js b/frontend/.storybook/main.js
index b11f63a..14e108f 100644
--- a/frontend/.storybook/main.js
+++ b/frontend/.storybook/main.js
@@ -3,14 +3,14 @@
/** @type { import('@storybook/react-vite').StorybookConfig } */
const config = {
- stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"],
+ stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'],
addons: [
- "@storybook/addon-links",
- "@storybook/addon-essentials",
- "@storybook/addon-onboarding",
- "@storybook/addon-interactions",
+ '@storybook/addon-links',
+ '@storybook/addon-essentials',
+ '@storybook/addon-onboarding',
+ '@storybook/addon-interactions',
{
- name: "@storybook/addon-postcss",
+ name: '@storybook/addon-postcss',
options: {
postcssLoaderOptions: {
implementation: require('postcss')
@@ -19,11 +19,11 @@ const config = {
}
],
framework: {
- name: "@storybook/react-vite",
- options: {},
+ name: '@storybook/react-vite',
+ options: {}
},
docs: {
- autodocs: "tag",
- },
+ autodocs: 'tag'
+ }
};
export default config;
diff --git a/frontend/.storybook/preview.js b/frontend/.storybook/preview.js
index b27ad0f..8c248a6 100644
--- a/frontend/.storybook/preview.js
+++ b/frontend/.storybook/preview.js
@@ -1,19 +1,19 @@
// Copyright DB InfraGO AG and contributors
// SPDX-License-Identifier: Apache-2.0
-import '../src/index.css'
+import '../src/index.css';
/** @type { import('@storybook/react').Preview } */
const preview = {
parameters: {
- actions: { argTypesRegex: "^on[A-Z].*" },
+ actions: { argTypesRegex: '^on[A-Z].*' },
controls: {
matchers: {
color: /(background|color)$/i,
- date: /Date$/i,
- },
- },
- },
+ date: /Date$/i
+ }
+ }
+ }
};
export default preview;
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index f3f0d70..10c3bdb 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -42,6 +42,8 @@
"globals": "^15.9.0",
"postcss": "^8.4.45",
"prettier": "^3.3.3",
+ "prettier-plugin-classnames": "^0.7.2",
+ "prettier-plugin-merge": "^0.7.1",
"prettier-plugin-tailwindcss": "^0.6.6",
"prop-types": "^15.8.1",
"react-router-dom": "^6.26.2",
@@ -6039,6 +6041,15 @@
"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
"integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="
},
+ "node_modules/diff": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz",
+ "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
"node_modules/diff-sequences": {
"version": "29.6.3",
"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
@@ -10299,6 +10310,43 @@
"node": ">=6.0.0"
}
},
+ "node_modules/prettier-plugin-classnames": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/prettier-plugin-classnames/-/prettier-plugin-classnames-0.7.2.tgz",
+ "integrity": "sha512-rocYqVSWV/YSJE+TA7b1IgYY9/I4bx0lxJjE5Iwv/kavNNEYhKh7Gl1+MQARQYgPisGMd5DU8Uj6ZEVX0KmTTA==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "prettier": "^2 || ^3",
+ "prettier-plugin-astro": "*",
+ "prettier-plugin-svelte": "*"
+ },
+ "peerDependenciesMeta": {
+ "prettier-plugin-astro": {
+ "optional": true
+ },
+ "prettier-plugin-svelte": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/prettier-plugin-merge": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/prettier-plugin-merge/-/prettier-plugin-merge-0.7.1.tgz",
+ "integrity": "sha512-R3dSlv3kAlScjd/liWjTkGHcUrE4MBhPKKBxVOvHK7+FY2P5SEmLarZiD11VUEuaMRK0L7zqIurX6JcRYS9Y5Q==",
+ "dev": true,
+ "dependencies": {
+ "diff": "5.1.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "prettier": "^2 || ^3"
+ }
+ },
"node_modules/prettier-plugin-tailwindcss": {
"version": "0.6.6",
"resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.6.tgz",
diff --git a/frontend/package.json b/frontend/package.json
index 1609fed..091dd43 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -47,6 +47,8 @@
"globals": "^15.9.0",
"postcss": "^8.4.45",
"prettier": "^3.3.3",
+ "prettier-plugin-classnames": "^0.7.2",
+ "prettier-plugin-merge": "^0.7.1",
"prettier-plugin-tailwindcss": "^0.6.6",
"prop-types": "^15.8.1",
"react-router-dom": "^6.26.2",
diff --git a/frontend/postcss.config.js b/frontend/postcss.config.js
index f139503..61dd434 100644
--- a/frontend/postcss.config.js
+++ b/frontend/postcss.config.js
@@ -6,6 +6,6 @@
module.exports = {
plugins: {
tailwindcss: {},
- autoprefixer: {},
- },
-}
+ autoprefixer: {}
+ }
+};
diff --git a/frontend/public/static/env.js b/frontend/public/static/env.js
index 83ba5c4..1f83af3 100644
--- a/frontend/public/static/env.js
+++ b/frontend/public/static/env.js
@@ -4,6 +4,6 @@
*/
window.env = {
- ROUTE_PREFIX: "__ROUTE_PREFIX__",
- API_BASE_URL: "__ROUTE_PREFIX__/api",
+ ROUTE_PREFIX: '__ROUTE_PREFIX__',
+ API_BASE_URL: '__ROUTE_PREFIX__/api'
};
diff --git a/frontend/src/APIConfig.js b/frontend/src/APIConfig.js
index b0b75f1..422211d 100644
--- a/frontend/src/APIConfig.js
+++ b/frontend/src/APIConfig.js
@@ -5,8 +5,8 @@
var API_BASE_URL = window.env.API_BASE_URL;
var ROUTE_PREFIX = window.env.ROUTE_PREFIX;
-if (!process.env.NODE_ENV || process.env.NODE_ENV === "development") {
- ROUTE_PREFIX = "";
+if (!process.env.NODE_ENV || process.env.NODE_ENV === 'development') {
+ ROUTE_PREFIX = '';
API_BASE_URL = `http://localhost:8000${ROUTE_PREFIX}/api`;
}
export { API_BASE_URL, ROUTE_PREFIX };
diff --git a/frontend/src/components/Badge.jsx b/frontend/src/components/Badge.jsx
index a24b443..dd6b12c 100644
--- a/frontend/src/components/Badge.jsx
+++ b/frontend/src/components/Badge.jsx
@@ -1,18 +1,22 @@
-
// Copyright DB InfraGO AG and contributors
// SPDX-License-Identifier: Apache-2.0
const color_classes = {
- "default": "bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-300",
- "danger": "bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-300",
- "success": "bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-300",
- "warning": "bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-300"
-}
+ default: 'bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-300',
+ danger: 'bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-300',
+ success: 'bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-300',
+ warning:
+ 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-300'
+};
/*
-* provides a badge that may have different colors
-*/
-export const Badge = ({ children, color="default" }) => (
-
- {children}
-
+ * provides a badge that may have different colors
+ */
+export const Badge = ({ children, color = 'default' }) => (
+
+ {children}
+
);
diff --git a/frontend/src/components/Breadcrumbs.jsx b/frontend/src/components/Breadcrumbs.jsx
index dafe0f8..d2805a6 100644
--- a/frontend/src/components/Breadcrumbs.jsx
+++ b/frontend/src/components/Breadcrumbs.jsx
@@ -67,9 +67,7 @@ export const Breadcrumbs = () => {
return (