diff --git a/README.md b/README.md
index 7cfb6ea5..7972bad7 100644
--- a/README.md
+++ b/README.md
@@ -62,8 +62,6 @@ This readme file is used mostly to document project dependencies and conventions
npm install -D
- tailwindcss
- - postcss
- - autoprefixer
- eslint-plugin-import
- eslint-plugin-react-compiler
- eslint-plugin-simple-import-sort
@@ -73,6 +71,7 @@ This readme file is used mostly to document project dependencies and conventions
- vite
- jest
- ts-jest
+ - @vitejs/plugin-react
- @types/jest
- @lezer/generator
- @playwright/test
diff --git a/rsconcept/frontend/eslint.config.js b/rsconcept/frontend/eslint.config.js
index f48b6d52..7948a5ed 100644
--- a/rsconcept/frontend/eslint.config.js
+++ b/rsconcept/frontend/eslint.config.js
@@ -11,15 +11,7 @@ export default [
...typescriptPlugin.configs.recommendedTypeChecked,
...typescriptPlugin.configs.stylisticTypeChecked,
{
- ignores: [
- '**/parser.ts',
- '**/node_modules/**',
- '**/public/**',
- '**/dist/**',
- 'eslint.config.js',
- 'tailwind.config.js',
- 'postcss.config.js'
- ]
+ ignores: ['**/parser.ts', '**/node_modules/**', '**/public/**', '**/dist/**', 'eslint.config.js']
},
{
languageOptions: {
@@ -43,6 +35,12 @@ export default [
settings: { react: { version: 'detect' } },
rules: {
'react-compiler/react-compiler': 'error',
+ '@typescript-eslint/consistent-type-imports': [
+ 'warn',
+ {
+ fixStyle: 'inline-type-imports'
+ }
+ ],
'@typescript-eslint/no-empty-object-type': ['error', { allowInterfaces: 'with-single-extends' }],
'@typescript-eslint/prefer-nullish-coalescing': 'off',
'@typescript-eslint/no-inferrable-types': 'off',
diff --git a/rsconcept/frontend/package-lock.json b/rsconcept/frontend/package-lock.json
index 86a63c78..7c11478c 100644
--- a/rsconcept/frontend/package-lock.json
+++ b/rsconcept/frontend/package-lock.json
@@ -43,6 +43,7 @@
"devDependencies": {
"@lezer/generator": "^1.7.2",
"@playwright/test": "^1.50.1",
+ "@tailwindcss/vite": "^4.0.7",
"@types/jest": "^29.5.14",
"@types/node": "^22.13.4",
"@types/react": "^19.0.10",
@@ -50,7 +51,6 @@
"@typescript-eslint/eslint-plugin": "^8.0.1",
"@typescript-eslint/parser": "^8.0.1",
"@vitejs/plugin-react": "^4.3.4",
- "autoprefixer": "^10.4.20",
"babel-plugin-react-compiler": "^19.0.0-beta-21e868a-20250216",
"eslint": "^9.20.1",
"eslint-plugin-import": "^2.31.0",
@@ -60,27 +60,13 @@
"eslint-plugin-simple-import-sort": "^12.1.1",
"globals": "^16.0.0",
"jest": "^29.7.0",
- "postcss": "^8.5.3",
- "tailwindcss": "^3.4.17",
+ "tailwindcss": "^4.0.7",
"ts-jest": "^29.2.5",
"typescript": "^5.7.3",
"typescript-eslint": "^8.24.1",
"vite": "^6.1.1"
}
},
- "node_modules/@alloc/quick-lru": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
- "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/@ampproject/remapping": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
@@ -1769,109 +1755,6 @@
"url": "https://github.com/sponsors/nzakas"
}
},
- "node_modules/@isaacs/cliui": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
- "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "string-width": "^5.1.2",
- "string-width-cjs": "npm:string-width@^4.2.0",
- "strip-ansi": "^7.0.1",
- "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
- "wrap-ansi": "^8.1.0",
- "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
- "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-regex?sponsor=1"
- }
- },
- "node_modules/@isaacs/cliui/node_modules/ansi-styles": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
- "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@isaacs/cliui/node_modules/emoji-regex": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@isaacs/cliui/node_modules/string-width": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
- "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "eastasianwidth": "^0.2.0",
- "emoji-regex": "^9.2.2",
- "strip-ansi": "^7.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^6.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
- }
- },
- "node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
- "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^6.1.0",
- "string-width": "^5.0.1",
- "strip-ansi": "^7.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
"node_modules/@istanbuljs/load-nyc-config": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
@@ -2421,17 +2304,6 @@
"react-dom": ">=18"
}
},
- "node_modules/@pkgjs/parseargs": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
- "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">=14"
- }
- },
"node_modules/@playwright/test": {
"version": "1.50.1",
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.50.1.tgz",
@@ -3084,6 +2956,244 @@
"@sinonjs/commons": "^3.0.0"
}
},
+ "node_modules/@tailwindcss/node": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.0.7.tgz",
+ "integrity": "sha512-dkFXufkbRB2mu3FPsW5xLAUWJyexpJA+/VtQj18k3SUiJVLdpgzBd1v1gRRcIpEJj7K5KpxBKfOXlZxT3ZZRuA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "enhanced-resolve": "^5.18.1",
+ "jiti": "^2.4.2",
+ "tailwindcss": "4.0.7"
+ }
+ },
+ "node_modules/@tailwindcss/oxide": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.0.7.tgz",
+ "integrity": "sha512-yr6w5YMgjy+B+zkJiJtIYGXW+HNYOPfRPtSs+aqLnKwdEzNrGv4ZuJh9hYJ3mcA+HMq/K1rtFV+KsEr65S558g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ },
+ "optionalDependencies": {
+ "@tailwindcss/oxide-android-arm64": "4.0.7",
+ "@tailwindcss/oxide-darwin-arm64": "4.0.7",
+ "@tailwindcss/oxide-darwin-x64": "4.0.7",
+ "@tailwindcss/oxide-freebsd-x64": "4.0.7",
+ "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.7",
+ "@tailwindcss/oxide-linux-arm64-gnu": "4.0.7",
+ "@tailwindcss/oxide-linux-arm64-musl": "4.0.7",
+ "@tailwindcss/oxide-linux-x64-gnu": "4.0.7",
+ "@tailwindcss/oxide-linux-x64-musl": "4.0.7",
+ "@tailwindcss/oxide-win32-arm64-msvc": "4.0.7",
+ "@tailwindcss/oxide-win32-x64-msvc": "4.0.7"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-android-arm64": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.0.7.tgz",
+ "integrity": "sha512-5iQXXcAeOHBZy8ASfHFm1k0O/9wR2E3tKh6+P+ilZZbQiMgu+qrnfpBWYPc3FPuQdWiWb73069WT5D+CAfx/tg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-darwin-arm64": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.0.7.tgz",
+ "integrity": "sha512-7yGZtEc5IgVYylqK/2B0yVqoofk4UAbkn1ygNpIJZyrOhbymsfr8uUFCueTu2fUxmAYIfMZ8waWo2dLg/NgLgg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-darwin-x64": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.0.7.tgz",
+ "integrity": "sha512-tPQDV20fBjb26yWbPqT1ZSoDChomMCiXTKn4jupMSoMCFyU7+OJvIY1ryjqBuY622dEBJ8LnCDDWsnj1lX9nNQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-freebsd-x64": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.0.7.tgz",
+ "integrity": "sha512-sZqJpTyTZiknU9LLHuByg5GKTW+u3FqM7q7myequAXxKOpAFiOfXpY710FuMY+gjzSapyRbDXJlsTQtCyiTo5w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.0.7.tgz",
+ "integrity": "sha512-PBgvULgeSswjd8cbZ91gdIcIDMdc3TUHV5XemEpxlqt9M8KoydJzkuB/Dt910jYdofOIaTWRL6adG9nJICvU4A==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm64-gnu": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.0.7.tgz",
+ "integrity": "sha512-By/a2yeh+e9b+C67F88ndSwVJl2A3tcUDb29FbedDi+DZ4Mr07Oqw9Y1DrDrtHIDhIZ3bmmiL1dkH2YxrtV+zw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm64-musl": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.0.7.tgz",
+ "integrity": "sha512-WHYs3cpPEJb/ccyT20NOzopYQkl7JKncNBUbb77YFlwlXMVJLLV3nrXQKhr7DmZxz2ZXqjyUwsj2rdzd9stYdw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-x64-gnu": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.0.7.tgz",
+ "integrity": "sha512-7bP1UyuX9kFxbOwkeIJhBZNevKYPXB6xZI37v09fqi6rqRJR8elybwjMUHm54GVP+UTtJ14ueB1K54Dy1tIO6w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-x64-musl": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.0.7.tgz",
+ "integrity": "sha512-gBQIV8nL/LuhARNGeroqzXymMzzW5wQzqlteVqOVoqwEfpHOP3GMird5pGFbnpY+NP0fOlsZGrxxOPQ4W/84bQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-win32-arm64-msvc": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.0.7.tgz",
+ "integrity": "sha512-aH530NFfx0kpQpvYMfWoeG03zGnRCMVlQG8do/5XeahYydz+6SIBxA1tl/cyITSJyWZHyVt6GVNkXeAD30v0Xg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-win32-x64-msvc": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.0.7.tgz",
+ "integrity": "sha512-8Cva6bbJN7ZJx320k7vxGGdU0ewmpfS5A4PudyzUuofdi8MgeINuiiWiPQ0VZCda/GX88K6qp+6UpDZNVr8HMQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/vite": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.0.7.tgz",
+ "integrity": "sha512-GYx5sxArfIMtdZCsxfya3S/efMmf4RvfqdiLUozkhmSFBNUFnYVodatpoO/en4/BsOIGvq/RB6HwcTLn9prFnQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@tailwindcss/node": "4.0.7",
+ "@tailwindcss/oxide": "4.0.7",
+ "lightningcss": "^1.29.1",
+ "tailwindcss": "4.0.7"
+ },
+ "peerDependencies": {
+ "vite": "^5.2.0 || ^6"
+ }
+ },
"node_modules/@tanstack/query-core": {
"version": "5.66.4",
"resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.66.4.tgz",
@@ -3993,13 +4103,6 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/any-promise": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
- "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/anymatch": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
@@ -4014,13 +4117,6 @@
"node": ">= 8"
}
},
- "node_modules/arg": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
- "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@@ -4208,44 +4304,6 @@
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
"license": "MIT"
},
- "node_modules/autoprefixer": {
- "version": "10.4.20",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz",
- "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/autoprefixer"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.23.3",
- "caniuse-lite": "^1.0.30001646",
- "fraction.js": "^4.3.7",
- "normalize-range": "^0.1.2",
- "picocolors": "^1.0.1",
- "postcss-value-parser": "^4.2.0"
- },
- "bin": {
- "autoprefixer": "bin/autoprefixer"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- },
- "peerDependencies": {
- "postcss": "^8.1.0"
- }
- },
"node_modules/available-typed-arrays": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
@@ -4431,19 +4489,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/binary-extensions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
- "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/bippy": {
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/bippy/-/bippy-0.2.7.tgz",
@@ -4603,16 +4648,6 @@
"node": ">=6"
}
},
- "node_modules/camelcase-css": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
- "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/caniuse-lite": {
"version": "1.0.30001700",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz",
@@ -4660,44 +4695,6 @@
"node": ">=10"
}
},
- "node_modules/chokidar": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
- "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "engines": {
- "node": ">= 8.10.0"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/chokidar/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/ci-info": {
"version": "3.9.0",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
@@ -4822,16 +4819,6 @@
"node": ">= 0.8"
}
},
- "node_modules/commander": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
- "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -4922,19 +4909,6 @@
"node": ">= 8"
}
},
- "node_modules/cssesc": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
- "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "cssesc": "bin/cssesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/csstype": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
@@ -5200,6 +5174,19 @@
"node": ">=0.4.0"
}
},
+ "node_modules/detect-libc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "detect-libc": "bin/detect-libc.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
"node_modules/detect-newline": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
@@ -5210,13 +5197,6 @@
"node": ">=8"
}
},
- "node_modules/didyoumean": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
- "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
- "dev": true,
- "license": "Apache-2.0"
- },
"node_modules/diff-sequences": {
"version": "29.6.3",
"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
@@ -5227,13 +5207,6 @@
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/dlv": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
- "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/doctrine": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
@@ -5276,13 +5249,6 @@
"node": ">= 0.4"
}
},
- "node_modules/eastasianwidth": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/ejs": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
@@ -5325,6 +5291,20 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/enhanced-resolve": {
+ "version": "5.18.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz",
+ "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
"node_modules/error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
@@ -6299,36 +6279,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/foreground-child": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
- "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "cross-spawn": "^7.0.0",
- "signal-exit": "^4.0.1"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/foreground-child/node_modules/signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/form-data": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
@@ -6344,20 +6294,6 @@
"node": ">= 6"
}
},
- "node_modules/fraction.js": {
- "version": "4.3.7",
- "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
- "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "*"
- },
- "funding": {
- "type": "patreon",
- "url": "https://github.com/sponsors/rawify"
- }
- },
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -6961,19 +6897,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/is-boolean-object": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz",
@@ -7433,22 +7356,6 @@
"node": ">= 0.4"
}
},
- "node_modules/jackspeak": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
- "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "@isaacs/cliui": "^8.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- },
- "optionalDependencies": {
- "@pkgjs/parseargs": "^0.11.0"
- }
- },
"node_modules/jake": {
"version": "10.9.2",
"resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz",
@@ -8076,13 +7983,13 @@
}
},
"node_modules/jiti": {
- "version": "1.21.7",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz",
- "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz",
+ "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==",
"dev": true,
"license": "MIT",
"bin": {
- "jiti": "bin/jiti.js"
+ "jiti": "lib/jiti-cli.mjs"
}
},
"node_modules/js-file-download": {
@@ -8221,17 +8128,243 @@
"node": ">= 0.8.0"
}
},
- "node_modules/lilconfig": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
- "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
+ "node_modules/lightningcss": {
+ "version": "1.29.1",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.1.tgz",
+ "integrity": "sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q==",
"dev": true,
- "license": "MIT",
+ "license": "MPL-2.0",
+ "dependencies": {
+ "detect-libc": "^1.0.3"
+ },
"engines": {
- "node": ">=14"
+ "node": ">= 12.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/antonk52"
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "lightningcss-darwin-arm64": "1.29.1",
+ "lightningcss-darwin-x64": "1.29.1",
+ "lightningcss-freebsd-x64": "1.29.1",
+ "lightningcss-linux-arm-gnueabihf": "1.29.1",
+ "lightningcss-linux-arm64-gnu": "1.29.1",
+ "lightningcss-linux-arm64-musl": "1.29.1",
+ "lightningcss-linux-x64-gnu": "1.29.1",
+ "lightningcss-linux-x64-musl": "1.29.1",
+ "lightningcss-win32-arm64-msvc": "1.29.1",
+ "lightningcss-win32-x64-msvc": "1.29.1"
+ }
+ },
+ "node_modules/lightningcss-darwin-arm64": {
+ "version": "1.29.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.1.tgz",
+ "integrity": "sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-darwin-x64": {
+ "version": "1.29.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.1.tgz",
+ "integrity": "sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-freebsd-x64": {
+ "version": "1.29.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.1.tgz",
+ "integrity": "sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm-gnueabihf": {
+ "version": "1.29.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.1.tgz",
+ "integrity": "sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-gnu": {
+ "version": "1.29.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.1.tgz",
+ "integrity": "sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-musl": {
+ "version": "1.29.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.1.tgz",
+ "integrity": "sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-gnu": {
+ "version": "1.29.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.1.tgz",
+ "integrity": "sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-musl": {
+ "version": "1.29.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.1.tgz",
+ "integrity": "sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-arm64-msvc": {
+ "version": "1.29.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.1.tgz",
+ "integrity": "sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-x64-msvc": {
+ "version": "1.29.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.1.tgz",
+ "integrity": "sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
"node_modules/lines-and-columns": {
@@ -8435,16 +8568,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/minipass": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
- "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=16 || 14 >=14.17"
- }
- },
"node_modules/mri": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
@@ -8460,18 +8583,6 @@
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"license": "MIT"
},
- "node_modules/mz": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
- "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "any-promise": "^1.0.0",
- "object-assign": "^4.0.1",
- "thenify-all": "^1.0.0"
- }
- },
"node_modules/nanoid": {
"version": "3.3.8",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
@@ -8521,16 +8632,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/normalize-range": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
- "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/npm-run-path": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
@@ -8553,16 +8654,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/object-hash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
- "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/object-inspect": {
"version": "1.13.4",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
@@ -8779,13 +8870,6 @@
"node": ">=6"
}
},
- "node_modules/package-json-from-dist": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
- "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
- "dev": true,
- "license": "BlueOak-1.0.0"
- },
"node_modules/parent-module": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
@@ -8852,30 +8936,6 @@
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
"license": "MIT"
},
- "node_modules/path-scurry": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
- "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "lru-cache": "^10.2.0",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
- },
- "engines": {
- "node": ">=16 || 14 >=14.18"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/path-scurry/node_modules/lru-cache": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
- "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
- "dev": true,
- "license": "ISC"
- },
"node_modules/path-type": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
@@ -8904,16 +8964,6 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/pirates": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
@@ -9076,127 +9126,6 @@
"node": "^10 || ^12 || >=14"
}
},
- "node_modules/postcss-import": {
- "version": "15.1.0",
- "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
- "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "postcss-value-parser": "^4.0.0",
- "read-cache": "^1.0.0",
- "resolve": "^1.1.7"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "postcss": "^8.0.0"
- }
- },
- "node_modules/postcss-js": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
- "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "camelcase-css": "^2.0.1"
- },
- "engines": {
- "node": "^12 || ^14 || >= 16"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- "peerDependencies": {
- "postcss": "^8.4.21"
- }
- },
- "node_modules/postcss-load-config": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
- "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "lilconfig": "^3.0.0",
- "yaml": "^2.3.4"
- },
- "engines": {
- "node": ">= 14"
- },
- "peerDependencies": {
- "postcss": ">=8.0.9",
- "ts-node": ">=9.0.0"
- },
- "peerDependenciesMeta": {
- "postcss": {
- "optional": true
- },
- "ts-node": {
- "optional": true
- }
- }
- },
- "node_modules/postcss-nested": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz",
- "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "postcss-selector-parser": "^6.1.1"
- },
- "engines": {
- "node": ">=12.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.14"
- }
- },
- "node_modules/postcss-selector-parser": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
- "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cssesc": "^3.0.0",
- "util-deprecate": "^1.0.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/postcss-value-parser": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
- "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/preact": {
"version": "10.26.2",
"resolved": "https://registry.npmjs.org/preact/-/preact-10.26.2.tgz",
@@ -9658,29 +9587,6 @@
"react-dom": ">=17"
}
},
- "node_modules/read-cache": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
- "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "pify": "^2.3.0"
- }
- },
- "node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "picomatch": "^2.2.1"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
"node_modules/reflect.getprototypeof": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz",
@@ -10227,22 +10133,6 @@
"node": ">=8"
}
},
- "node_modules/string-width-cjs": {
- "name": "string-width",
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/string.prototype.matchall": {
"version": "4.0.12",
"resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz",
@@ -10354,20 +10244,6 @@
"node": ">=8"
}
},
- "node_modules/strip-ansi-cjs": {
- "name": "strip-ansi",
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/strip-bom": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
@@ -10413,50 +10289,6 @@
"integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==",
"license": "MIT"
},
- "node_modules/sucrase": {
- "version": "3.35.0",
- "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
- "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.2",
- "commander": "^4.0.0",
- "glob": "^10.3.10",
- "lines-and-columns": "^1.1.6",
- "mz": "^2.7.0",
- "pirates": "^4.0.1",
- "ts-interface-checker": "^0.1.9"
- },
- "bin": {
- "sucrase": "bin/sucrase",
- "sucrase-node": "bin/sucrase-node"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- }
- },
- "node_modules/sucrase/node_modules/glob": {
- "version": "10.4.5",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
- "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^3.1.2",
- "minimatch": "^9.0.4",
- "minipass": "^7.1.2",
- "package-json-from-dist": "^1.0.0",
- "path-scurry": "^1.11.1"
- },
- "bin": {
- "glob": "dist/esm/bin.mjs"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -10483,41 +10315,20 @@
}
},
"node_modules/tailwindcss": {
- "version": "3.4.17",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz",
- "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==",
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.7.tgz",
+ "integrity": "sha512-yH5bPPyapavo7L+547h3c4jcBXcrKwybQRjwdEIVAd9iXRvy/3T1CC6XSQEgZtRySjKfqvo3Cc0ZF1DTheuIdA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "@alloc/quick-lru": "^5.2.0",
- "arg": "^5.0.2",
- "chokidar": "^3.6.0",
- "didyoumean": "^1.2.2",
- "dlv": "^1.1.3",
- "fast-glob": "^3.3.2",
- "glob-parent": "^6.0.2",
- "is-glob": "^4.0.3",
- "jiti": "^1.21.6",
- "lilconfig": "^3.1.3",
- "micromatch": "^4.0.8",
- "normalize-path": "^3.0.0",
- "object-hash": "^3.0.0",
- "picocolors": "^1.1.1",
- "postcss": "^8.4.47",
- "postcss-import": "^15.1.0",
- "postcss-js": "^4.0.1",
- "postcss-load-config": "^4.0.2",
- "postcss-nested": "^6.2.0",
- "postcss-selector-parser": "^6.1.2",
- "resolve": "^1.22.8",
- "sucrase": "^3.35.0"
- },
- "bin": {
- "tailwind": "lib/cli.js",
- "tailwindcss": "lib/cli.js"
- },
"engines": {
- "node": ">=14.0.0"
+ "node": ">=6"
}
},
"node_modules/test-exclude": {
@@ -10559,29 +10370,6 @@
"node": "*"
}
},
- "node_modules/thenify": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
- "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "any-promise": "^1.0.0"
- }
- },
- "node_modules/thenify-all": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
- "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "thenify": ">= 3.1.0 < 4"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
"node_modules/tmpl": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
@@ -10615,13 +10403,6 @@
"typescript": ">=4.8.4"
}
},
- "node_modules/ts-interface-checker": {
- "version": "0.1.13",
- "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
- "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
- "dev": true,
- "license": "Apache-2.0"
- },
"node_modules/ts-jest": {
"version": "29.2.5",
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz",
@@ -11444,13 +11225,6 @@
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
}
},
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/v8-to-istanbul": {
"version": "9.3.0",
"resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz",
@@ -11693,25 +11467,6 @@
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "node_modules/wrap-ansi-cjs": {
- "name": "wrap-ansi",
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
@@ -11755,6 +11510,8 @@
"integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==",
"dev": true,
"license": "ISC",
+ "optional": true,
+ "peer": true,
"bin": {
"yaml": "bin.mjs"
},
diff --git a/rsconcept/frontend/package.json b/rsconcept/frontend/package.json
index 0eea8024..2a3d72a5 100644
--- a/rsconcept/frontend/package.json
+++ b/rsconcept/frontend/package.json
@@ -48,6 +48,7 @@
"devDependencies": {
"@lezer/generator": "^1.7.2",
"@playwright/test": "^1.50.1",
+ "@tailwindcss/vite": "^4.0.7",
"@types/jest": "^29.5.14",
"@types/node": "^22.13.4",
"@types/react": "^19.0.10",
@@ -55,7 +56,6 @@
"@typescript-eslint/eslint-plugin": "^8.0.1",
"@typescript-eslint/parser": "^8.0.1",
"@vitejs/plugin-react": "^4.3.4",
- "autoprefixer": "^10.4.20",
"babel-plugin-react-compiler": "^19.0.0-beta-21e868a-20250216",
"eslint": "^9.20.1",
"eslint-plugin-import": "^2.31.0",
@@ -65,8 +65,7 @@
"eslint-plugin-simple-import-sort": "^12.1.1",
"globals": "^16.0.0",
"jest": "^29.7.0",
- "postcss": "^8.5.3",
- "tailwindcss": "^3.4.17",
+ "tailwindcss": "^4.0.7",
"ts-jest": "^29.2.5",
"typescript": "^5.7.3",
"typescript-eslint": "^8.24.1",
diff --git a/rsconcept/frontend/postcss.config.js b/rsconcept/frontend/postcss.config.js
deleted file mode 100644
index 09c32be6..00000000
--- a/rsconcept/frontend/postcss.config.js
+++ /dev/null
@@ -1,8 +0,0 @@
-export default {
- plugins: {
- 'postcss-import': {},
- 'tailwindcss/nesting': {},
- 'tailwindcss': {},
- 'autoprefixer': {}
- }
-};
diff --git a/rsconcept/frontend/src/app/Navigation/Navigation.tsx b/rsconcept/frontend/src/app/Navigation/Navigation.tsx
index 0bc69660..c0a6abb8 100644
--- a/rsconcept/frontend/src/app/Navigation/Navigation.tsx
+++ b/rsconcept/frontend/src/app/Navigation/Navigation.tsx
@@ -1,7 +1,7 @@
import clsx from 'clsx';
import { IconLibrary2, IconManuals, IconNewItem2 } from '@/components/Icons';
-import { CProps } from '@/components/props';
+import { type EventMouse } from '@/components/props';
import { useWindowSize } from '@/hooks/useWindowSize';
import { useAppLayoutStore } from '@/stores/appLayout';
import { PARAMETER } from '@/utils/constants';
@@ -19,11 +19,10 @@ export function Navigation() {
const size = useWindowSize();
const noNavigationAnimation = useAppLayoutStore(state => state.noNavigationAnimation);
- const navigateHome = (event: CProps.EventMouse) => router.push(urls.home, event.ctrlKey || event.metaKey);
- const navigateLibrary = (event: CProps.EventMouse) => router.push(urls.library, event.ctrlKey || event.metaKey);
- const navigateHelp = (event: CProps.EventMouse) => router.push(urls.manuals, event.ctrlKey || event.metaKey);
- const navigateCreateNew = (event: CProps.EventMouse) =>
- router.push(urls.create_schema, event.ctrlKey || event.metaKey);
+ const navigateHome = (event: EventMouse) => router.push(urls.home, event.ctrlKey || event.metaKey);
+ const navigateLibrary = (event: EventMouse) => router.push(urls.library, event.ctrlKey || event.metaKey);
+ const navigateHelp = (event: EventMouse) => router.push(urls.manuals, event.ctrlKey || event.metaKey);
+ const navigateCreateNew = (event: EventMouse) => router.push(urls.create_schema, event.ctrlKey || event.metaKey);
return (
void;
+ onClick?: (event: EventMouse) => void;
}
export function NavigationButton({
@@ -29,8 +29,9 @@ export function NavigationButton({
data-tooltip-hidden={hideTitle}
onClick={onClick}
className={clsx(
- 'mr-1 h-full', //
+ 'mr-1 h-full',
'flex items-center gap-1',
+ 'cursor-pointer',
'clr-btn-nav cc-animate-color duration-500',
'rounded-xl',
'font-controls whitespace-nowrap',
diff --git a/rsconcept/frontend/src/app/Navigation/UserDropdown.tsx b/rsconcept/frontend/src/app/Navigation/UserDropdown.tsx
index 4983dabb..8a47f7ac 100644
--- a/rsconcept/frontend/src/app/Navigation/UserDropdown.tsx
+++ b/rsconcept/frontend/src/app/Navigation/UserDropdown.tsx
@@ -15,7 +15,7 @@ import {
IconRESTapi,
IconUser
} from '@/components/Icons';
-import { CProps } from '@/components/props';
+import { type EventMouse } from '@/components/props';
import { usePreferencesStore } from '@/stores/preferences';
import { urls } from '../urls';
@@ -39,7 +39,7 @@ export function UserDropdown({ isOpen, hideDropdown }: UserDropdownProps) {
const adminMode = usePreferencesStore(state => state.adminMode);
const toggleAdminMode = usePreferencesStore(state => state.toggleAdminMode);
- function navigateProfile(event: CProps.EventMouse) {
+ function navigateProfile(event: EventMouse) {
hideDropdown();
router.push(urls.profile, event.ctrlKey || event.metaKey);
}
@@ -54,7 +54,7 @@ export function UserDropdown({ isOpen, hideDropdown }: UserDropdownProps) {
void logout().then(() => router.push(urls.admin, true));
}
- function gotoIcons(event: CProps.EventMouse) {
+ function gotoIcons(event: EventMouse) {
hideDropdown();
router.push(urls.icons, event.ctrlKey || event.metaKey);
}
@@ -64,7 +64,7 @@ export function UserDropdown({ isOpen, hideDropdown }: UserDropdownProps) {
router.push(urls.rest_api, true);
}
- function gotoDatabaseSchema(event: CProps.EventMouse) {
+ function gotoDatabaseSchema(event: EventMouse) {
hideDropdown();
router.push(urls.database_schema, event.ctrlKey || event.metaKey);
}
diff --git a/rsconcept/frontend/src/backend/apiTransport.ts b/rsconcept/frontend/src/backend/apiTransport.ts
index 26aea995..c701c069 100644
--- a/rsconcept/frontend/src/backend/apiTransport.ts
+++ b/rsconcept/frontend/src/backend/apiTransport.ts
@@ -2,7 +2,7 @@
* Module: generic API for backend REST communications using axios library.
*/
import { toast } from 'react-toastify';
-import axios, { AxiosError, AxiosRequestConfig } from 'axios';
+import axios, { AxiosError, type AxiosRequestConfig } from 'axios';
import { z, ZodError } from 'zod';
import { buildConstants } from '@/utils/buildConstants';
diff --git a/rsconcept/frontend/src/components/Container/Divider.tsx b/rsconcept/frontend/src/components/Container/Divider.tsx
index 55b5b85d..8c728771 100644
--- a/rsconcept/frontend/src/components/Container/Divider.tsx
+++ b/rsconcept/frontend/src/components/Container/Divider.tsx
@@ -1,8 +1,8 @@
import clsx from 'clsx';
-import { CProps } from '../props';
+import { type Styling } from '../props';
-interface DividerProps extends CProps.Styling {
+interface DividerProps extends Styling {
/** Indicates whether the divider is vertical. */
vertical?: boolean;
diff --git a/rsconcept/frontend/src/components/Container/FlexColumn.tsx b/rsconcept/frontend/src/components/Container/FlexColumn.tsx
index d80c3873..e24abca9 100644
--- a/rsconcept/frontend/src/components/Container/FlexColumn.tsx
+++ b/rsconcept/frontend/src/components/Container/FlexColumn.tsx
@@ -1,12 +1,12 @@
import clsx from 'clsx';
-import { CProps } from '../props';
+import { type Div } from '../props';
/**
* `flex` column container.
* This component is useful for creating vertical layouts with flexbox.
*/
-export function FlexColumn({ className, children, ...restProps }: CProps.Div) {
+export function FlexColumn({ className, children, ...restProps }: Div) {
return (
{children}
diff --git a/rsconcept/frontend/src/components/Container/Overlay.tsx b/rsconcept/frontend/src/components/Container/Overlay.tsx
index 2b919356..2e0083c4 100644
--- a/rsconcept/frontend/src/components/Container/Overlay.tsx
+++ b/rsconcept/frontend/src/components/Container/Overlay.tsx
@@ -1,8 +1,8 @@
import clsx from 'clsx';
-import { CProps } from '../props';
+import { type Styling } from '../props';
-interface OverlayProps extends CProps.Styling {
+interface OverlayProps extends Styling {
/** Id of the overlay. */
id?: string;
diff --git a/rsconcept/frontend/src/components/Container/Tooltip.tsx b/rsconcept/frontend/src/components/Container/Tooltip.tsx
index 4464e7d0..c45988e4 100644
--- a/rsconcept/frontend/src/components/Container/Tooltip.tsx
+++ b/rsconcept/frontend/src/components/Container/Tooltip.tsx
@@ -1,8 +1,8 @@
'use client';
-import { ReactNode } from 'react';
+import { type ReactNode } from 'react';
import { createPortal } from 'react-dom';
-import { ITooltip, Tooltip as TooltipImpl } from 'react-tooltip';
+import { type ITooltip, Tooltip as TooltipImpl } from 'react-tooltip';
import clsx from 'clsx';
import { usePreferencesStore } from '@/stores/preferences';
diff --git a/rsconcept/frontend/src/components/Control/Button.tsx b/rsconcept/frontend/src/components/Control/Button.tsx
index 081e0c33..fc14e8f9 100644
--- a/rsconcept/frontend/src/components/Control/Button.tsx
+++ b/rsconcept/frontend/src/components/Control/Button.tsx
@@ -2,9 +2,9 @@ import clsx from 'clsx';
import { globalIDs } from '@/utils/constants';
-import { CProps } from '../props';
+import { type Button as ButtonStyle, type Colors, type Control } from '../props';
-interface ButtonProps extends CProps.Control, CProps.Colors, CProps.Button {
+interface ButtonProps extends Control, Colors, ButtonStyle {
/** Icon to display first. */
icon?: React.ReactNode;
@@ -45,12 +45,12 @@ export function Button({
'select-none disabled:cursor-auto',
'cc-animate-color',
{
- 'border rounded': !noBorder,
+ 'border rounded-sm': !noBorder,
'px-1': dense,
'px-3 py-1': !dense,
'cursor-progress': loading,
'cursor-pointer': !loading,
- 'outline-none': noOutline,
+ 'outline-hidden': noOutline,
'clr-outline': !noOutline
},
className,
diff --git a/rsconcept/frontend/src/components/Control/MiniButton.tsx b/rsconcept/frontend/src/components/Control/MiniButton.tsx
index c04b4450..a201ba2c 100644
--- a/rsconcept/frontend/src/components/Control/MiniButton.tsx
+++ b/rsconcept/frontend/src/components/Control/MiniButton.tsx
@@ -2,9 +2,9 @@ import clsx from 'clsx';
import { globalIDs } from '@/utils/constants';
-import { CProps } from '../props';
+import { type Button } from '../props';
-interface MiniButtonProps extends CProps.Button {
+interface MiniButtonProps extends Button {
/** Button type. */
type?: 'button' | 'submit';
@@ -43,7 +43,7 @@ export function MiniButton({
'cursor-pointer disabled:cursor-auto',
{
'px-1 py-1': !noPadding,
- 'outline-none': noHover,
+ 'outline-hidden': noHover,
'clr-hover': !noHover
},
className
diff --git a/rsconcept/frontend/src/components/Control/SelectorButton.tsx b/rsconcept/frontend/src/components/Control/SelectorButton.tsx
index 0a4c0501..27176d06 100644
--- a/rsconcept/frontend/src/components/Control/SelectorButton.tsx
+++ b/rsconcept/frontend/src/components/Control/SelectorButton.tsx
@@ -2,9 +2,9 @@ import clsx from 'clsx';
import { globalIDs } from '@/utils/constants';
-import { CProps } from '../props';
+import { type Button } from '../props';
-interface SelectorButtonProps extends CProps.Button {
+interface SelectorButtonProps extends Button {
/** Text to display in the button. */
text?: string;
diff --git a/rsconcept/frontend/src/components/Control/SubmitButton.tsx b/rsconcept/frontend/src/components/Control/SubmitButton.tsx
index 02fac661..ff60953f 100644
--- a/rsconcept/frontend/src/components/Control/SubmitButton.tsx
+++ b/rsconcept/frontend/src/components/Control/SubmitButton.tsx
@@ -1,8 +1,8 @@
import clsx from 'clsx';
-import { CProps } from '../props';
+import { type Button } from '../props';
-interface SubmitButtonProps extends CProps.Button {
+interface SubmitButtonProps extends Button {
/** Text to display in the button. */
text?: string;
diff --git a/rsconcept/frontend/src/components/DataTable/DataTable.tsx b/rsconcept/frontend/src/components/DataTable/DataTable.tsx
index a00127df..a826f641 100644
--- a/rsconcept/frontend/src/components/DataTable/DataTable.tsx
+++ b/rsconcept/frontend/src/components/DataTable/DataTable.tsx
@@ -3,21 +3,21 @@
import { useMemo, useState } from 'react';
import {
- ColumnSort,
+ type ColumnSort,
createColumnHelper,
getCoreRowModel,
getPaginationRowModel,
getSortedRowModel,
- PaginationState,
- RowData,
+ type PaginationState,
+ type RowData,
type RowSelectionState,
- SortingState,
- TableOptions,
+ type SortingState,
+ type TableOptions,
useReactTable,
type VisibilityState
} from '@tanstack/react-table';
-import { CProps } from '../props';
+import { type EventMouse, type Styling } from '../props';
import { DefaultNoData } from './DefaultNoData';
import { PaginationTools } from './PaginationTools';
@@ -37,7 +37,7 @@ export interface IConditionalStyle
{
}
export interface DataTableProps
- extends CProps.Styling,
+ extends Styling,
Pick, 'data' | 'columns' | 'onRowSelectionChange' | 'onColumnVisibilityChange'> {
/** Id of the component. */
id?: string;
@@ -67,10 +67,10 @@ export interface DataTableProps
noDataComponent?: React.ReactNode;
/** Callback to be called when a row is clicked. */
- onRowClicked?: (rowData: TData, event: CProps.EventMouse) => void;
+ onRowClicked?: (rowData: TData, event: EventMouse) => void;
/** Callback to be called when a row is double clicked. */
- onRowDoubleClicked?: (rowData: TData, event: CProps.EventMouse) => void;
+ onRowDoubleClicked?: (rowData: TData, event: EventMouse) => void;
/** Enable row selection. */
enableRowSelection?: boolean;
diff --git a/rsconcept/frontend/src/components/DataTable/PaginationTools.tsx b/rsconcept/frontend/src/components/DataTable/PaginationTools.tsx
index b97b52a2..6566255e 100644
--- a/rsconcept/frontend/src/components/DataTable/PaginationTools.tsx
+++ b/rsconcept/frontend/src/components/DataTable/PaginationTools.tsx
@@ -2,7 +2,7 @@
'use no memo';
import { useCallback } from 'react';
-import { Table } from '@tanstack/react-table';
+import { type Table } from '@tanstack/react-table';
import clsx from 'clsx';
import { prefixes } from '@/utils/constants';
diff --git a/rsconcept/frontend/src/components/DataTable/SelectAll.tsx b/rsconcept/frontend/src/components/DataTable/SelectAll.tsx
index 243490fb..7f47fc58 100644
--- a/rsconcept/frontend/src/components/DataTable/SelectAll.tsx
+++ b/rsconcept/frontend/src/components/DataTable/SelectAll.tsx
@@ -1,6 +1,6 @@
'use no memo';
-import { Table } from '@tanstack/react-table';
+import { type Table } from '@tanstack/react-table';
import { CheckboxTristate } from '../Input';
diff --git a/rsconcept/frontend/src/components/DataTable/SelectRow.tsx b/rsconcept/frontend/src/components/DataTable/SelectRow.tsx
index ec21b558..88f59606 100644
--- a/rsconcept/frontend/src/components/DataTable/SelectRow.tsx
+++ b/rsconcept/frontend/src/components/DataTable/SelectRow.tsx
@@ -1,6 +1,6 @@
'use no memo';
-import { Row } from '@tanstack/react-table';
+import { type Row } from '@tanstack/react-table';
import { Checkbox } from '../Input';
diff --git a/rsconcept/frontend/src/components/DataTable/SortingIcon.tsx b/rsconcept/frontend/src/components/DataTable/SortingIcon.tsx
index 441f2a5b..c931258e 100644
--- a/rsconcept/frontend/src/components/DataTable/SortingIcon.tsx
+++ b/rsconcept/frontend/src/components/DataTable/SortingIcon.tsx
@@ -1,6 +1,6 @@
'use no memo';
-import { Column } from '@tanstack/react-table';
+import { type Column } from '@tanstack/react-table';
import { IconSortAsc, IconSortDesc } from '../Icons';
diff --git a/rsconcept/frontend/src/components/DataTable/TableBody.tsx b/rsconcept/frontend/src/components/DataTable/TableBody.tsx
index a3b53208..9f125476 100644
--- a/rsconcept/frontend/src/components/DataTable/TableBody.tsx
+++ b/rsconcept/frontend/src/components/DataTable/TableBody.tsx
@@ -1,12 +1,12 @@
'use no memo';
-import { Cell, flexRender, Row, Table } from '@tanstack/react-table';
+import { type Cell, flexRender, type Row, type Table } from '@tanstack/react-table';
import clsx from 'clsx';
-import { CProps } from '../props';
+import { type EventMouse } from '../props';
import { SelectRow } from './SelectRow';
-import { IConditionalStyle } from '.';
+import { type IConditionalStyle } from '.';
interface TableBodyProps {
table: Table;
@@ -18,8 +18,8 @@ interface TableBodyProps {
lastSelected: string | null;
onChangeLastSelected: (newValue: string | null) => void;
- onRowClicked?: (rowData: TData, event: CProps.EventMouse) => void;
- onRowDoubleClicked?: (rowData: TData, event: CProps.EventMouse) => void;
+ onRowClicked?: (rowData: TData, event: EventMouse) => void;
+ onRowDoubleClicked?: (rowData: TData, event: EventMouse) => void;
}
export function TableBody({
@@ -33,7 +33,7 @@ export function TableBody({
onRowClicked,
onRowDoubleClicked
}: TableBodyProps) {
- function handleRowClicked(target: Row, event: CProps.EventMouse) {
+ function handleRowClicked(target: Row, event: EventMouse) {
onRowClicked?.(target.original, event);
if (enableRowSelection && target.getCanSelect()) {
if (event.shiftKey && !!lastSelected && lastSelected !== target.id) {
diff --git a/rsconcept/frontend/src/components/DataTable/TableFooter.tsx b/rsconcept/frontend/src/components/DataTable/TableFooter.tsx
index bcd0b7fe..c57e5c1b 100644
--- a/rsconcept/frontend/src/components/DataTable/TableFooter.tsx
+++ b/rsconcept/frontend/src/components/DataTable/TableFooter.tsx
@@ -1,6 +1,6 @@
'use no memo';
-import { flexRender, Header, HeaderGroup, Table } from '@tanstack/react-table';
+import { flexRender, type Header, type HeaderGroup, type Table } from '@tanstack/react-table';
interface TableFooterProps {
table: Table;
diff --git a/rsconcept/frontend/src/components/DataTable/TableHeader.tsx b/rsconcept/frontend/src/components/DataTable/TableHeader.tsx
index edad90bb..4aeaae11 100644
--- a/rsconcept/frontend/src/components/DataTable/TableHeader.tsx
+++ b/rsconcept/frontend/src/components/DataTable/TableHeader.tsx
@@ -1,6 +1,6 @@
'use no memo';
-import { flexRender, Header, HeaderGroup, Table } from '@tanstack/react-table';
+import { flexRender, type Header, type HeaderGroup, type Table } from '@tanstack/react-table';
import { SelectAll } from './SelectAll';
import { SortingIcon } from './SortingIcon';
diff --git a/rsconcept/frontend/src/components/DomainIcons.tsx b/rsconcept/frontend/src/components/DomainIcons.tsx
index b7f5f625..e03a37bd 100644
--- a/rsconcept/frontend/src/components/DomainIcons.tsx
+++ b/rsconcept/frontend/src/components/DomainIcons.tsx
@@ -14,7 +14,7 @@ import {
IconHide,
IconMoveDown,
IconMoveUp,
- IconProps,
+ type IconProps,
IconPublic,
IconSettings,
IconShow,
diff --git a/rsconcept/frontend/src/components/Dropdown/Dropdown.tsx b/rsconcept/frontend/src/components/Dropdown/Dropdown.tsx
index 42d4958a..ad6127a8 100644
--- a/rsconcept/frontend/src/components/Dropdown/Dropdown.tsx
+++ b/rsconcept/frontend/src/components/Dropdown/Dropdown.tsx
@@ -2,9 +2,9 @@ import clsx from 'clsx';
import { PARAMETER } from '@/utils/constants';
-import { CProps } from '../props';
+import { type Styling } from '../props';
-interface DropdownProps extends CProps.Styling {
+interface DropdownProps extends Styling {
/** Indicates whether the dropdown should stretch to the left. */
stretchLeft?: boolean;
diff --git a/rsconcept/frontend/src/components/Dropdown/DropdownButton.tsx b/rsconcept/frontend/src/components/Dropdown/DropdownButton.tsx
index db312c84..71a0b714 100644
--- a/rsconcept/frontend/src/components/Dropdown/DropdownButton.tsx
+++ b/rsconcept/frontend/src/components/Dropdown/DropdownButton.tsx
@@ -1,9 +1,9 @@
import clsx from 'clsx';
-import { CProps } from '@/components/props';
+import { type Button } from '@/components/props';
import { globalIDs } from '@/utils/constants';
-interface DropdownButtonProps extends CProps.Button {
+interface DropdownButtonProps extends Button {
/** Icon to display first (not used if children are provided). */
icon?: React.ReactNode;
@@ -36,7 +36,7 @@ export function DropdownButton({
onClick={onClick}
className={clsx(
'px-3 py-1 inline-flex items-center gap-2',
- 'text-left text-sm overflow-ellipsis whitespace-nowrap',
+ 'text-left text-sm text-ellipsis whitespace-nowrap',
'disabled:clr-text-controls',
'cc-animate-color',
{
diff --git a/rsconcept/frontend/src/components/Dropdown/DropdownCheckbox.tsx b/rsconcept/frontend/src/components/Dropdown/DropdownCheckbox.tsx
index c69f1880..6849d772 100644
--- a/rsconcept/frontend/src/components/Dropdown/DropdownCheckbox.tsx
+++ b/rsconcept/frontend/src/components/Dropdown/DropdownCheckbox.tsx
@@ -1,6 +1,6 @@
import clsx from 'clsx';
-import { Checkbox, CheckboxProps } from '../Input';
+import { Checkbox, type CheckboxProps } from '../Input';
/** Animated {@link Checkbox} inside a {@link Dropdown} item. */
export function DropdownCheckbox({ onChange: setValue, disabled, ...restProps }: CheckboxProps) {
@@ -8,7 +8,7 @@ export function DropdownCheckbox({ onChange: setValue, disabled, ...restProps }:
{
+export interface CheckboxProps extends Omit
{
/** Label to display next to the checkbox. */
label?: string;
@@ -35,7 +35,7 @@ export function Checkbox({
}: CheckboxProps) {
const cursor = disabled ? 'cursor-arrow' : onChange ? 'cursor-pointer' : '';
- function handleClick(event: CProps.EventMouse): void {
+ function handleClick(event: EventMouse): void {
event.preventDefault();
event.stopPropagation();
if (disabled || !onChange) {
@@ -49,7 +49,7 @@ export function Checkbox({
type='button'
className={clsx(
'flex items-center gap-2', //
- 'outline-none',
+ 'outline-hidden',
'focus-frame',
cursor,
className
@@ -66,7 +66,7 @@ export function Checkbox({
className={clsx(
'max-w-[1rem] min-w-[1rem] h-4', //
'pt-[0.05rem] pl-[0.05rem]',
- 'border rounded-sm',
+ 'border rounded-xs',
'cc-animate-color',
{
'bg-sec-600 text-sec-0': value !== false,
diff --git a/rsconcept/frontend/src/components/Input/CheckboxTristate.tsx b/rsconcept/frontend/src/components/Input/CheckboxTristate.tsx
index e5141a5b..a8c15f6d 100644
--- a/rsconcept/frontend/src/components/Input/CheckboxTristate.tsx
+++ b/rsconcept/frontend/src/components/Input/CheckboxTristate.tsx
@@ -3,9 +3,9 @@ import clsx from 'clsx';
import { globalIDs } from '@/utils/constants';
import { CheckboxChecked, CheckboxNull } from '../Icons';
-import { CProps } from '../props';
+import { type EventMouse } from '../props';
-import { CheckboxProps } from './Checkbox';
+import { type CheckboxProps } from './Checkbox';
export interface CheckboxTristateProps extends Omit {
/** Current value - `null`, `true` or `false`. */
@@ -31,7 +31,7 @@ export function CheckboxTristate({
}: CheckboxTristateProps) {
const cursor = disabled ? 'cursor-arrow' : onChange ? 'cursor-pointer' : '';
- function handleClick(event: CProps.EventMouse): void {
+ function handleClick(event: EventMouse): void {
event.preventDefault();
event.stopPropagation();
if (disabled || !onChange) {
@@ -51,7 +51,7 @@ export function CheckboxTristate({
type='button'
className={clsx(
'flex items-center gap-2', //
- 'outline-none',
+ 'outline-hidden',
'focus-frame',
cursor,
className
@@ -68,7 +68,7 @@ export function CheckboxTristate({
className={clsx(
'w-4 h-4', //
'pt-[0.05rem] pl-[0.05rem]',
- 'border rounded-sm',
+ 'border rounded-xs',
'cc-animate-color',
{
'bg-sec-600 text-sec-0': value !== false,
diff --git a/rsconcept/frontend/src/components/Input/ErrorField.tsx b/rsconcept/frontend/src/components/Input/ErrorField.tsx
index bda81dbb..bb0416bb 100644
--- a/rsconcept/frontend/src/components/Input/ErrorField.tsx
+++ b/rsconcept/frontend/src/components/Input/ErrorField.tsx
@@ -1,9 +1,9 @@
-import { FieldError, GlobalError } from 'react-hook-form';
+import { type FieldError, type GlobalError } from 'react-hook-form';
import clsx from 'clsx';
-import { CProps } from '../props';
+import { type Styling } from '../props';
-interface ErrorFieldProps extends CProps.Styling {
+interface ErrorFieldProps extends Styling {
error?: FieldError | GlobalError;
}
diff --git a/rsconcept/frontend/src/components/Input/FileInput.tsx b/rsconcept/frontend/src/components/Input/FileInput.tsx
index abc878a5..476fd44a 100644
--- a/rsconcept/frontend/src/components/Input/FileInput.tsx
+++ b/rsconcept/frontend/src/components/Input/FileInput.tsx
@@ -5,11 +5,11 @@ import clsx from 'clsx';
import { Button } from '../Control';
import { IconUpload } from '../Icons';
-import { CProps } from '../props';
+import { type Input } from '../props';
import { Label } from './Label';
-interface FileInputProps extends Omit {
+interface FileInputProps extends Omit {
/** Label to display in file upload button. */
label: string;
diff --git a/rsconcept/frontend/src/components/Input/Label.tsx b/rsconcept/frontend/src/components/Input/Label.tsx
index a94a8674..ebb52063 100644
--- a/rsconcept/frontend/src/components/Input/Label.tsx
+++ b/rsconcept/frontend/src/components/Input/Label.tsx
@@ -1,8 +1,8 @@
import clsx from 'clsx';
-import { CProps } from '../props';
+import { type Label as LabelStyle } from '../props';
-interface LabelProps extends CProps.Label {
+interface LabelProps extends LabelStyle {
/** Text to display. */
text?: string;
}
diff --git a/rsconcept/frontend/src/components/Input/SearchBar.tsx b/rsconcept/frontend/src/components/Input/SearchBar.tsx
index 8febc7d7..8c8630ca 100644
--- a/rsconcept/frontend/src/components/Input/SearchBar.tsx
+++ b/rsconcept/frontend/src/components/Input/SearchBar.tsx
@@ -2,11 +2,11 @@ import clsx from 'clsx';
import { Overlay } from '@/components/Container';
import { IconSearch } from '@/components/Icons';
-import { CProps } from '@/components/props';
+import { type Styling } from '@/components/props';
import { TextInput } from './TextInput';
-interface SearchBarProps extends CProps.Styling {
+interface SearchBarProps extends Styling {
/** Id of the search bar. */
id?: string;
@@ -50,7 +50,8 @@ export function SearchBar({
noOutline
placeholder={placeholder}
type='search'
- className={clsx('outline-none bg-transparent', !noIcon && 'pl-10')}
+ colors='bg-transparent'
+ className={clsx(!noIcon && 'pl-10')}
noBorder={noBorder}
value={query}
onChange={event => onChangeQuery?.(event.target.value)}
diff --git a/rsconcept/frontend/src/components/Input/SelectMulti.tsx b/rsconcept/frontend/src/components/Input/SelectMulti.tsx
index 4fe0eba6..63d81f60 100644
--- a/rsconcept/frontend/src/components/Input/SelectMulti.tsx
+++ b/rsconcept/frontend/src/components/Input/SelectMulti.tsx
@@ -1,12 +1,12 @@
'use client';
import Select, {
- ClearIndicatorProps,
+ type ClearIndicatorProps,
components,
- DropdownIndicatorProps,
- GroupBase,
- Props,
- StylesConfig
+ type DropdownIndicatorProps,
+ type GroupBase,
+ type Props,
+ type StylesConfig
} from 'react-select';
import { useWindowSize } from '@/hooks/useWindowSize';
diff --git a/rsconcept/frontend/src/components/Input/SelectSingle.tsx b/rsconcept/frontend/src/components/Input/SelectSingle.tsx
index 41576926..159e8e76 100644
--- a/rsconcept/frontend/src/components/Input/SelectSingle.tsx
+++ b/rsconcept/frontend/src/components/Input/SelectSingle.tsx
@@ -1,12 +1,12 @@
'use client';
import Select, {
- ClearIndicatorProps,
+ type ClearIndicatorProps,
components,
- DropdownIndicatorProps,
- GroupBase,
- Props,
- StylesConfig
+ type DropdownIndicatorProps,
+ type GroupBase,
+ type Props,
+ type StylesConfig
} from 'react-select';
import { useWindowSize } from '@/hooks/useWindowSize';
diff --git a/rsconcept/frontend/src/components/Input/SelectTree.tsx b/rsconcept/frontend/src/components/Input/SelectTree.tsx
index 2ae5a036..77e7f8d5 100644
--- a/rsconcept/frontend/src/components/Input/SelectTree.tsx
+++ b/rsconcept/frontend/src/components/Input/SelectTree.tsx
@@ -6,9 +6,9 @@ import { globalIDs, PARAMETER } from '@/utils/constants';
import { Overlay } from '../Container';
import { MiniButton } from '../Control';
import { IconDropArrow, IconPageRight } from '../Icons';
-import { CProps } from '../props';
+import { type EventMouse, type Styling } from '../props';
-interface SelectTreeProps extends CProps.Styling {
+interface SelectTreeProps extends Styling {
/** Current value. */
value: ItemType;
@@ -66,13 +66,13 @@ export function SelectTree({
);
}
- function handleClickFold(event: CProps.EventMouse, target: ItemType, showChildren: boolean) {
+ function handleClickFold(event: EventMouse, target: ItemType, showChildren: boolean) {
event.preventDefault();
event.stopPropagation();
onFoldItem(target, showChildren);
}
- function handleSetValue(event: CProps.EventMouse, target: ItemType) {
+ function handleSetValue(event: EventMouse, target: ItemType) {
event.preventDefault();
event.stopPropagation();
onChange(target);
diff --git a/rsconcept/frontend/src/components/Input/TextArea.tsx b/rsconcept/frontend/src/components/Input/TextArea.tsx
index 5b51d33a..1db5dc25 100644
--- a/rsconcept/frontend/src/components/Input/TextArea.tsx
+++ b/rsconcept/frontend/src/components/Input/TextArea.tsx
@@ -1,11 +1,11 @@
import clsx from 'clsx';
import { Label } from '../Input/Label';
-import { CProps } from '../props';
+import { type Colors, type Editor, type ErrorProcessing, type TextArea as TextAreaStyle } from '../props';
import { ErrorField } from './ErrorField';
-export interface TextAreaProps extends CProps.Editor, CProps.ErrorProcessing, CProps.Colors, CProps.TextArea {
+export interface TextAreaProps extends Editor, ErrorProcessing, Colors, TextAreaStyle {
/** Indicates that padding should be minimal. */
dense?: boolean;
@@ -40,7 +40,7 @@ export function TextArea({
'w-full',
{
'flex flex-col': !dense,
- 'flex flex-grow items-center gap-3': dense
+ 'flex grow items-center gap-3': dense
},
dense && className
)}
@@ -56,7 +56,7 @@ export function TextArea({
'cc-fit-content': fitContent,
'resize-none': noResize,
'border': !noBorder,
- 'flex-grow max-w-full': dense,
+ 'grow max-w-full': dense,
'mt-2': !dense && !!label,
'clr-outline': !noOutline
},
diff --git a/rsconcept/frontend/src/components/Input/TextInput.tsx b/rsconcept/frontend/src/components/Input/TextInput.tsx
index 1130fd13..478b5f28 100644
--- a/rsconcept/frontend/src/components/Input/TextInput.tsx
+++ b/rsconcept/frontend/src/components/Input/TextInput.tsx
@@ -1,11 +1,11 @@
import clsx from 'clsx';
import { Label } from '../Input/Label';
-import { CProps } from '../props';
+import { type Colors, type Editor, type ErrorProcessing, type Input } from '../props';
import { ErrorField } from './ErrorField';
-interface TextInputProps extends CProps.Editor, CProps.ErrorProcessing, CProps.Colors, CProps.Input {
+interface TextInputProps extends Editor, ErrorProcessing, Colors, Input {
/** Indicates that padding should be minimal. */
dense?: boolean;
@@ -54,7 +54,7 @@ export function TextInput({
'leading-tight truncate hover:text-clip',
{
'px-3': !noBorder || !disabled,
- 'flex-grow max-w-full': dense,
+ 'grow max-w-full': dense,
'mt-2': !dense && !!label,
'border': !noBorder,
'clr-outline': !noOutline
diff --git a/rsconcept/frontend/src/components/Modal/ModalForm.tsx b/rsconcept/frontend/src/components/Modal/ModalForm.tsx
index 72c50a39..828f2060 100644
--- a/rsconcept/frontend/src/components/Modal/ModalForm.tsx
+++ b/rsconcept/frontend/src/components/Modal/ModalForm.tsx
@@ -11,11 +11,11 @@ import { prepareTooltip } from '@/utils/utils';
import { Button, MiniButton, SubmitButton } from '../Control';
import { IconClose } from '../Icons';
-import { CProps } from '../props';
+import { type Styling } from '../props';
import { ModalBackdrop } from './ModalBackdrop';
-export interface ModalProps extends CProps.Styling {
+export interface ModalProps extends Styling {
/** Title of the modal window. */
header?: string;
@@ -115,7 +115,7 @@ export function ModalForm({
, CProps.Titled {
+interface TabLabelProps extends Omit
, Titled {
/** Label to display in the tab. */
label?: string;
}
@@ -23,7 +23,7 @@ export function TabLabel({ label, title, titleHtml, hideTitle, className, ...oth
'clr-hover cc-animate-color duration-150',
'text-sm whitespace-nowrap font-controls',
'select-none hover:cursor-pointer',
- 'outline-none',
+ 'outline-hidden',
className
)}
tabIndex='-1'
diff --git a/rsconcept/frontend/src/components/View/Indicator.tsx b/rsconcept/frontend/src/components/View/Indicator.tsx
index 5de814b9..5534d36a 100644
--- a/rsconcept/frontend/src/components/View/Indicator.tsx
+++ b/rsconcept/frontend/src/components/View/Indicator.tsx
@@ -1,9 +1,9 @@
import clsx from 'clsx';
-import { CProps } from '@/components/props';
+import { type Styling, type Titled } from '@/components/props';
import { globalIDs } from '@/utils/constants';
-interface IndicatorProps extends CProps.Titled, CProps.Styling {
+interface IndicatorProps extends Titled, Styling {
/** Icon to display. */
icon: React.ReactNode;
@@ -19,7 +19,7 @@ export function Indicator({ icon, title, titleHtml, hideTitle, noPadding, classN
{children}
diff --git a/rsconcept/frontend/src/components/View/TextContent.tsx b/rsconcept/frontend/src/components/View/TextContent.tsx
index c39d9561..c955631c 100644
--- a/rsconcept/frontend/src/components/View/TextContent.tsx
+++ b/rsconcept/frontend/src/components/View/TextContent.tsx
@@ -1,10 +1,11 @@
import clsx from 'clsx';
-import { CProps } from '@/components/props';
import { globalIDs } from '@/utils/constants';
import { truncateToLastWord } from '@/utils/utils';
-export interface TextContentProps extends CProps.Styling {
+import { type Styling } from '../props';
+
+export interface TextContentProps extends Styling {
/** Text to display. */
text: string;
diff --git a/rsconcept/frontend/src/components/View/ValueIcon.tsx b/rsconcept/frontend/src/components/View/ValueIcon.tsx
index 8296a0c0..a7f2dc18 100644
--- a/rsconcept/frontend/src/components/View/ValueIcon.tsx
+++ b/rsconcept/frontend/src/components/View/ValueIcon.tsx
@@ -1,11 +1,11 @@
import clsx from 'clsx';
-import { CProps } from '@/components/props';
import { globalIDs } from '@/utils/constants';
import { MiniButton } from '../Control';
+import { type EventMouse, type Styling, type Titled } from '../props';
-interface ValueIconProps extends CProps.Styling, CProps.Titled {
+interface ValueIconProps extends Styling, Titled {
/** Id of the component. */
id?: string;
@@ -19,7 +19,7 @@ interface ValueIconProps extends CProps.Styling, CProps.Titled {
textClassName?: string;
/** Callback to be called when the component is clicked. */
- onClick?: (event: CProps.EventMouse) => void;
+ onClick?: (event: EventMouse) => void;
/** Number of symbols to display in a small size. */
smallThreshold?: number;
diff --git a/rsconcept/frontend/src/components/View/ValueLabeled.tsx b/rsconcept/frontend/src/components/View/ValueLabeled.tsx
index f323231f..67c12fa3 100644
--- a/rsconcept/frontend/src/components/View/ValueLabeled.tsx
+++ b/rsconcept/frontend/src/components/View/ValueLabeled.tsx
@@ -1,8 +1,8 @@
import clsx from 'clsx';
-import { CProps } from '@/components/props';
+import { type Styling } from '@/components/props';
-interface ValueLabeledProps extends CProps.Styling {
+interface ValueLabeledProps extends Styling {
/** Id of the component. */
id?: string;
diff --git a/rsconcept/frontend/src/components/View/ValueStats.tsx b/rsconcept/frontend/src/components/View/ValueStats.tsx
index c1271db5..adaf773b 100644
--- a/rsconcept/frontend/src/components/View/ValueStats.tsx
+++ b/rsconcept/frontend/src/components/View/ValueStats.tsx
@@ -1,9 +1,9 @@
-import { CProps } from '@/components/props';
+import { type Styling, type Titled } from '@/components/props';
import { PARAMETER } from '@/utils/constants';
import { ValueIcon } from './ValueIcon';
-interface ValueStatsProps extends CProps.Styling, CProps.Titled {
+interface ValueStatsProps extends Styling, Titled {
/** Id of the component. */
id: string;
diff --git a/rsconcept/frontend/src/components/props.d.ts b/rsconcept/frontend/src/components/props.d.ts
index c6b4e5d8..a31108b0 100644
--- a/rsconcept/frontend/src/components/props.d.ts
+++ b/rsconcept/frontend/src/components/props.d.ts
@@ -2,102 +2,100 @@
import React from 'react';
import { FieldError } from 'react-hook-form';
-export namespace CProps {
- /**
- * Represents an object that can have inline styles and CSS class names for styling.
- */
- export interface Styling {
- /** Optional inline styles for the component. */
- style?: React.CSSProperties;
+/**
+ * Represents an object that can have inline styles and CSS class names for styling.
+ */
+export interface Styling {
+ /** Optional inline styles for the component. */
+ style?: React.CSSProperties;
- /** Optional CSS class name(s) for the component. */
- className?: string;
- }
-
- /**
- * Represents an object that can have a color or set of colors.
- */
- export interface Colors {
- /** Optional color or set of colors applied via classNames. */
- colors?: string;
- }
-
- /**
- * Represents an object that can have a title with optional HTML rendering and a flag to hide the title.
- */
- export interface Titled {
- /** Tooltip: `plain text`. */
- title?: string;
-
- /** Tooltip: `HTML formatted`. */
- titleHtml?: string;
-
- /** Indicates whether the `title` should be hidden. */
- hideTitle?: boolean;
- }
-
- /**
- * Represents an object that can have an error message.
- */
- export interface ErrorProcessing {
- error?: FieldError;
- }
-
- /**
- * Represents `control` component with optional title and configuration options.
- *
- * @remarks
- * This type extends the {@link Titled} interface, adding properties to control the visual and interactive behavior of a component.
- */
- export type Control = Titled & {
- /** Indicates whether the control is disabled. */
- disabled?: boolean;
-
- /** Indicates whether the control should render without a border. */
- noBorder?: boolean;
-
- /** Indicates whether the control should render without an outline. */
- noOutline?: boolean;
- };
-
- /**
- * Represents `editor` component that includes a label, control features, and optional title properties.
- *
- * @remarks
- * This type extends the {@link Control} type, inheriting title-related properties and additional configuration options, while also adding an optional label.
- */
- export type Editor = Control & {
- /** Text label. */
- label?: string;
- };
-
- /**
- * Represents `div` component with all standard HTML attributes and React-specific properties.
- */
- export type Div = React.ComponentProps<'div'>;
-
- /**
- * Represents `button` component with optional title and HTML attributes.
- */
- export type Button = Titled & Omit
, 'children' | 'type'>;
-
- /**
- * Represents `label` component with HTML attributes.
- */
- export type Label = Omit, 'children'>;
-
- /**
- * Represents `textarea` component with optional title and HTML attributes.
- */
- export type TextArea = Titled & React.ComponentProps<'textarea'>;
-
- /**
- * Represents `input` component with optional title and HTML attributes.
- */
- export type Input = Titled & React.ComponentProps<'input'>;
-
- /**
- * Represents `mouse event` in React.
- */
- export type EventMouse = React.MouseEvent;
+ /** Optional CSS class name(s) for the component. */
+ className?: string;
}
+
+/**
+ * Represents an object that can have a color or set of colors.
+ */
+export interface Colors {
+ /** Optional color or set of colors applied via classNames. */
+ colors?: string;
+}
+
+/**
+ * Represents an object that can have a title with optional HTML rendering and a flag to hide the title.
+ */
+export interface Titled {
+ /** Tooltip: `plain text`. */
+ title?: string;
+
+ /** Tooltip: `HTML formatted`. */
+ titleHtml?: string;
+
+ /** Indicates whether the `title` should be hidden. */
+ hideTitle?: boolean;
+}
+
+/**
+ * Represents an object that can have an error message.
+ */
+export interface ErrorProcessing {
+ error?: FieldError;
+}
+
+/**
+ * Represents `control` component with optional title and configuration options.
+ *
+ * @remarks
+ * This type extends the {@link Titled} interface, adding properties to control the visual and interactive behavior of a component.
+ */
+export type Control = Titled & {
+ /** Indicates whether the control is disabled. */
+ disabled?: boolean;
+
+ /** Indicates whether the control should render without a border. */
+ noBorder?: boolean;
+
+ /** Indicates whether the control should render without an outline. */
+ noOutline?: boolean;
+};
+
+/**
+ * Represents `editor` component that includes a label, control features, and optional title properties.
+ *
+ * @remarks
+ * This type extends the {@link Control} type, inheriting title-related properties and additional configuration options, while also adding an optional label.
+ */
+export type Editor = Control & {
+ /** Text label. */
+ label?: string;
+};
+
+/**
+ * Represents `div` component with all standard HTML attributes and React-specific properties.
+ */
+export type Div = React.ComponentProps<'div'>;
+
+/**
+ * Represents `button` component with optional title and HTML attributes.
+ */
+export type Button = Titled & Omit, 'children' | 'type'>;
+
+/**
+ * Represents `label` component with HTML attributes.
+ */
+export type Label = Omit, 'children'>;
+
+/**
+ * Represents `textarea` component with optional title and HTML attributes.
+ */
+export type TextArea = Titled & React.ComponentProps<'textarea'>;
+
+/**
+ * Represents `input` component with optional title and HTML attributes.
+ */
+export type Input = Titled & React.ComponentProps<'input'>;
+
+/**
+ * Represents `mouse event` in React.
+ */
+export type EventMouse = React.MouseEvent;
diff --git a/rsconcept/frontend/src/features/auth/backend/api.ts b/rsconcept/frontend/src/features/auth/backend/api.ts
index 0d9a15d7..74c775c6 100644
--- a/rsconcept/frontend/src/features/auth/backend/api.ts
+++ b/rsconcept/frontend/src/features/auth/backend/api.ts
@@ -5,12 +5,12 @@ import { DELAYS, KEYS } from '@/backend/configuration';
import { infoMsg } from '@/utils/labels';
import {
- IChangePasswordDTO,
- ICurrentUser,
- IPasswordTokenDTO,
- IRequestPasswordDTO,
- IResetPasswordDTO,
- IUserLoginDTO
+ type IChangePasswordDTO,
+ type ICurrentUser,
+ type IPasswordTokenDTO,
+ type IRequestPasswordDTO,
+ type IResetPasswordDTO,
+ type IUserLoginDTO
} from './types';
/**
diff --git a/rsconcept/frontend/src/features/auth/backend/useChangePassword.tsx b/rsconcept/frontend/src/features/auth/backend/useChangePassword.tsx
index 79ba9e9c..31bdd689 100644
--- a/rsconcept/frontend/src/features/auth/backend/useChangePassword.tsx
+++ b/rsconcept/frontend/src/features/auth/backend/useChangePassword.tsx
@@ -3,7 +3,7 @@ import { useMutation, useQueryClient } from '@tanstack/react-query';
import { KEYS } from '@/backend/configuration';
import { authApi } from './api';
-import { IChangePasswordDTO } from './types';
+import { type IChangePasswordDTO } from './types';
export const useChangePassword = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/auth/backend/useLogin.tsx b/rsconcept/frontend/src/features/auth/backend/useLogin.tsx
index 1cdca0e5..782ce582 100644
--- a/rsconcept/frontend/src/features/auth/backend/useLogin.tsx
+++ b/rsconcept/frontend/src/features/auth/backend/useLogin.tsx
@@ -3,7 +3,7 @@ import { useMutation, useQueryClient } from '@tanstack/react-query';
import { KEYS } from '@/backend/configuration';
import { authApi } from './api';
-import { IUserLoginDTO } from './types';
+import { type IUserLoginDTO } from './types';
export const useLogin = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/auth/backend/useRequestPasswordReset.tsx b/rsconcept/frontend/src/features/auth/backend/useRequestPasswordReset.tsx
index ae82976c..98db791a 100644
--- a/rsconcept/frontend/src/features/auth/backend/useRequestPasswordReset.tsx
+++ b/rsconcept/frontend/src/features/auth/backend/useRequestPasswordReset.tsx
@@ -3,7 +3,7 @@ import { useMutation } from '@tanstack/react-query';
import { KEYS } from '@/backend/configuration';
import { authApi } from './api';
-import { IRequestPasswordDTO } from './types';
+import { type IRequestPasswordDTO } from './types';
export const useRequestPasswordReset = () => {
const mutation = useMutation({
diff --git a/rsconcept/frontend/src/features/auth/backend/useResetPassword.tsx b/rsconcept/frontend/src/features/auth/backend/useResetPassword.tsx
index 6485e4af..4b8fd0d6 100644
--- a/rsconcept/frontend/src/features/auth/backend/useResetPassword.tsx
+++ b/rsconcept/frontend/src/features/auth/backend/useResetPassword.tsx
@@ -3,7 +3,7 @@ import { useMutation } from '@tanstack/react-query';
import { KEYS } from '@/backend/configuration';
import { authApi } from './api';
-import { IPasswordTokenDTO, IResetPasswordDTO } from './types';
+import { type IPasswordTokenDTO, type IResetPasswordDTO } from './types';
export const useResetPassword = () => {
const validateMutation = useMutation({
diff --git a/rsconcept/frontend/src/features/auth/pages/LoginPage.tsx b/rsconcept/frontend/src/features/auth/pages/LoginPage.tsx
index 56b75cd8..3cc6d539 100644
--- a/rsconcept/frontend/src/features/auth/pages/LoginPage.tsx
+++ b/rsconcept/frontend/src/features/auth/pages/LoginPage.tsx
@@ -8,12 +8,12 @@ import { urls, useConceptNavigation } from '@/app';
import { isAxiosError } from '@/backend/apiTransport';
import { SubmitButton, TextURL } from '@/components/Control';
-import { ErrorData } from '@/components/InfoError';
+import { type ErrorData } from '@/components/InfoError';
import { TextInput } from '@/components/Input';
import { useQueryStrings } from '@/hooks/useQueryStrings';
import { resources } from '@/utils/constants';
-import { IUserLoginDTO, schemaUserLogin } from '../backend/types';
+import { type IUserLoginDTO, schemaUserLogin } from '../backend/types';
import { useAuthSuspense } from '../backend/useAuth';
import { useLogin } from '../backend/useLogin';
import { ExpectedAnonymous } from '../components/ExpectedAnonymous';
diff --git a/rsconcept/frontend/src/features/auth/pages/PasswordChangePage.tsx b/rsconcept/frontend/src/features/auth/pages/PasswordChangePage.tsx
index a5d09eb8..a1f4923f 100644
--- a/rsconcept/frontend/src/features/auth/pages/PasswordChangePage.tsx
+++ b/rsconcept/frontend/src/features/auth/pages/PasswordChangePage.tsx
@@ -7,7 +7,7 @@ import { urls, useConceptNavigation } from '@/app';
import { isAxiosError } from '@/backend/apiTransport';
import { SubmitButton } from '@/components/Control';
-import { ErrorData, InfoError } from '@/components/InfoError';
+import { type ErrorData, InfoError } from '@/components/InfoError';
import { TextInput } from '@/components/Input';
import { Loader } from '@/components/Loader';
import { useQueryStrings } from '@/hooks/useQueryStrings';
diff --git a/rsconcept/frontend/src/features/auth/pages/RestorePasswordPage.tsx b/rsconcept/frontend/src/features/auth/pages/RestorePasswordPage.tsx
index f163e57f..a80eca9d 100644
--- a/rsconcept/frontend/src/features/auth/pages/RestorePasswordPage.tsx
+++ b/rsconcept/frontend/src/features/auth/pages/RestorePasswordPage.tsx
@@ -5,7 +5,7 @@ import clsx from 'clsx';
import { isAxiosError } from '@/backend/apiTransport';
import { SubmitButton, TextURL } from '@/components/Control';
-import { ErrorData } from '@/components/InfoError';
+import { type ErrorData } from '@/components/InfoError';
import { TextInput } from '@/components/Input';
import { useRequestPasswordReset } from '../backend/useRequestPasswordReset';
diff --git a/rsconcept/frontend/src/features/help/components/BadgeHelp.tsx b/rsconcept/frontend/src/features/help/components/BadgeHelp.tsx
index f3d341ef..eb7e24a0 100644
--- a/rsconcept/frontend/src/features/help/components/BadgeHelp.tsx
+++ b/rsconcept/frontend/src/features/help/components/BadgeHelp.tsx
@@ -1,10 +1,10 @@
import React, { Suspense } from 'react';
-import { PlacesType, Tooltip } from '@/components/Container';
+import { type PlacesType, Tooltip } from '@/components/Container';
import { TextURL } from '@/components/Control';
import { IconHelp } from '@/components/Icons';
import { Loader } from '@/components/Loader';
-import { CProps } from '@/components/props';
+import { type Styling } from '@/components/props';
import { usePreferencesStore } from '@/stores/preferences';
import { HelpTopic } from '../models/helpTopic';
@@ -13,7 +13,7 @@ const TopicPage = React.lazy(() =>
import('@/features/help/pages/ManualsPage/TopicPage').then(module => ({ default: module.TopicPage }))
);
-interface BadgeHelpProps extends CProps.Styling {
+interface BadgeHelpProps extends Styling {
/** Topic to display in a tooltip. */
topic: HelpTopic;
diff --git a/rsconcept/frontend/src/features/library/backend/api.ts b/rsconcept/frontend/src/features/library/backend/api.ts
index a55b214e..35bb6cd7 100644
--- a/rsconcept/frontend/src/features/library/backend/api.ts
+++ b/rsconcept/frontend/src/features/library/backend/api.ts
@@ -1,8 +1,8 @@
import { queryOptions } from '@tanstack/react-query';
import {
- IRSFormDTO,
- IVersionCreatedResponse,
+ type IRSFormDTO,
+ type IVersionCreatedResponse,
schemaRSForm,
schemaVersionCreatedResponse
} from '@/features/rsform/backend/types';
@@ -13,14 +13,14 @@ import { infoMsg } from '@/utils/labels';
import {
AccessPolicy,
- ICloneLibraryItemDTO,
- ICreateLibraryItemDTO,
- ILibraryItem,
- IRenameLocationDTO,
- IUpdateLibraryItemDTO,
- IVersionCreateDTO,
- IVersionInfo,
- IVersionUpdateDTO,
+ type ICloneLibraryItemDTO,
+ type ICreateLibraryItemDTO,
+ type ILibraryItem,
+ type IRenameLocationDTO,
+ type IUpdateLibraryItemDTO,
+ type IVersionCreateDTO,
+ type IVersionInfo,
+ type IVersionUpdateDTO,
schemaLibraryItem,
schemaLibraryItemArray,
schemaVersionInfo
diff --git a/rsconcept/frontend/src/features/library/backend/useApplyLibraryFilter.tsx b/rsconcept/frontend/src/features/library/backend/useApplyLibraryFilter.tsx
index 4e8ba95f..f8d1b0d1 100644
--- a/rsconcept/frontend/src/features/library/backend/useApplyLibraryFilter.tsx
+++ b/rsconcept/frontend/src/features/library/backend/useApplyLibraryFilter.tsx
@@ -1,6 +1,6 @@
import { useAuthSuspense } from '@/features/auth';
-import { ILibraryFilter } from '../models/library';
+import { type ILibraryFilter } from '../models/library';
import { matchLibraryItem, matchLibraryItemLocation } from '../models/libraryAPI';
import { useLibrary } from './useLibrary';
diff --git a/rsconcept/frontend/src/features/library/backend/useCloneItem.tsx b/rsconcept/frontend/src/features/library/backend/useCloneItem.tsx
index bd273659..5510fb1b 100644
--- a/rsconcept/frontend/src/features/library/backend/useCloneItem.tsx
+++ b/rsconcept/frontend/src/features/library/backend/useCloneItem.tsx
@@ -3,7 +3,7 @@ import { useMutation, useQueryClient } from '@tanstack/react-query';
import { KEYS } from '@/backend/configuration';
import { libraryApi } from './api';
-import { ICloneLibraryItemDTO } from './types';
+import { type ICloneLibraryItemDTO } from './types';
export const useCloneItem = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/library/backend/useCreateItem.tsx b/rsconcept/frontend/src/features/library/backend/useCreateItem.tsx
index 3408a805..0a57a317 100644
--- a/rsconcept/frontend/src/features/library/backend/useCreateItem.tsx
+++ b/rsconcept/frontend/src/features/library/backend/useCreateItem.tsx
@@ -3,7 +3,7 @@ import { useMutation, useQueryClient } from '@tanstack/react-query';
import { KEYS } from '@/backend/configuration';
import { libraryApi } from './api';
-import { ICreateLibraryItemDTO } from './types';
+import { type ICreateLibraryItemDTO } from './types';
export const useCreateItem = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/library/backend/useRenameLocation.tsx b/rsconcept/frontend/src/features/library/backend/useRenameLocation.tsx
index 67b5d5d4..7f02f6c6 100644
--- a/rsconcept/frontend/src/features/library/backend/useRenameLocation.tsx
+++ b/rsconcept/frontend/src/features/library/backend/useRenameLocation.tsx
@@ -3,7 +3,7 @@ import { useMutation, useQueryClient } from '@tanstack/react-query';
import { KEYS } from '@/backend/configuration';
import { libraryApi } from './api';
-import { IRenameLocationDTO } from './types';
+import { type IRenameLocationDTO } from './types';
export const useRenameLocation = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/library/backend/useSetAccessPolicy.tsx b/rsconcept/frontend/src/features/library/backend/useSetAccessPolicy.tsx
index bf235806..d67cd3fb 100644
--- a/rsconcept/frontend/src/features/library/backend/useSetAccessPolicy.tsx
+++ b/rsconcept/frontend/src/features/library/backend/useSetAccessPolicy.tsx
@@ -1,12 +1,12 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
-import { IOperationSchemaDTO } from '@/features/oss/backend/types';
-import { IRSFormDTO } from '@/features/rsform/backend/types';
+import { type IOperationSchemaDTO } from '@/features/oss/backend/types';
+import { type IRSFormDTO } from '@/features/rsform/backend/types';
import { KEYS } from '@/backend/configuration';
import { libraryApi } from './api';
-import { AccessPolicy, ILibraryItem } from './types';
+import { AccessPolicy, type ILibraryItem } from './types';
export const useSetAccessPolicy = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/library/backend/useSetEditors.tsx b/rsconcept/frontend/src/features/library/backend/useSetEditors.tsx
index f3069897..eb051c66 100644
--- a/rsconcept/frontend/src/features/library/backend/useSetEditors.tsx
+++ b/rsconcept/frontend/src/features/library/backend/useSetEditors.tsx
@@ -1,7 +1,7 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
-import { IOperationSchemaDTO } from '@/features/oss/backend/types';
-import { IRSFormDTO } from '@/features/rsform/backend/types';
+import { type IOperationSchemaDTO } from '@/features/oss/backend/types';
+import { type IRSFormDTO } from '@/features/rsform/backend/types';
import { KEYS } from '@/backend/configuration';
diff --git a/rsconcept/frontend/src/features/library/backend/useSetLocation.tsx b/rsconcept/frontend/src/features/library/backend/useSetLocation.tsx
index 93fb51f4..465d746e 100644
--- a/rsconcept/frontend/src/features/library/backend/useSetLocation.tsx
+++ b/rsconcept/frontend/src/features/library/backend/useSetLocation.tsx
@@ -1,12 +1,12 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
-import { IOperationSchemaDTO } from '@/features/oss/backend/types';
-import { IRSFormDTO } from '@/features/rsform/backend/types';
+import { type IOperationSchemaDTO } from '@/features/oss/backend/types';
+import { type IRSFormDTO } from '@/features/rsform/backend/types';
import { KEYS } from '@/backend/configuration';
import { libraryApi } from './api';
-import { ILibraryItem } from './types';
+import { type ILibraryItem } from './types';
export const useSetLocation = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/library/backend/useSetOwner.tsx b/rsconcept/frontend/src/features/library/backend/useSetOwner.tsx
index c28af3ad..379efdf0 100644
--- a/rsconcept/frontend/src/features/library/backend/useSetOwner.tsx
+++ b/rsconcept/frontend/src/features/library/backend/useSetOwner.tsx
@@ -1,12 +1,12 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
-import { IOperationSchemaDTO } from '@/features/oss/backend/types';
-import { IRSFormDTO } from '@/features/rsform/backend/types';
+import { type IOperationSchemaDTO } from '@/features/oss/backend/types';
+import { type IRSFormDTO } from '@/features/rsform/backend/types';
import { KEYS } from '@/backend/configuration';
import { libraryApi } from './api';
-import { ILibraryItem } from './types';
+import { type ILibraryItem } from './types';
export const useSetOwner = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/library/backend/useUpdateItem.tsx b/rsconcept/frontend/src/features/library/backend/useUpdateItem.tsx
index 7bcd0f29..fda06dc7 100644
--- a/rsconcept/frontend/src/features/library/backend/useUpdateItem.tsx
+++ b/rsconcept/frontend/src/features/library/backend/useUpdateItem.tsx
@@ -1,12 +1,12 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
-import { IOperationSchemaDTO } from '@/features/oss/backend/types';
-import { IRSFormDTO } from '@/features/rsform/backend/types';
+import { type IOperationSchemaDTO } from '@/features/oss/backend/types';
+import { type IRSFormDTO } from '@/features/rsform/backend/types';
import { KEYS } from '@/backend/configuration';
import { libraryApi } from './api';
-import { ILibraryItem, IUpdateLibraryItemDTO, LibraryItemType } from './types';
+import { type ILibraryItem, type IUpdateLibraryItemDTO, LibraryItemType } from './types';
export const useUpdateItem = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/library/backend/useUpdateTimestamp.tsx b/rsconcept/frontend/src/features/library/backend/useUpdateTimestamp.tsx
index 1eef1423..79254c52 100644
--- a/rsconcept/frontend/src/features/library/backend/useUpdateTimestamp.tsx
+++ b/rsconcept/frontend/src/features/library/backend/useUpdateTimestamp.tsx
@@ -1,7 +1,7 @@
import { useQueryClient } from '@tanstack/react-query';
import { libraryApi } from './api';
-import { ILibraryItem } from './types';
+import { type ILibraryItem } from './types';
export function useUpdateTimestamp() {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/library/backend/useVersionCreate.tsx b/rsconcept/frontend/src/features/library/backend/useVersionCreate.tsx
index 95a92abe..c4cd9ec0 100644
--- a/rsconcept/frontend/src/features/library/backend/useVersionCreate.tsx
+++ b/rsconcept/frontend/src/features/library/backend/useVersionCreate.tsx
@@ -3,7 +3,7 @@ import { useMutation, useQueryClient } from '@tanstack/react-query';
import { KEYS } from '@/backend/configuration';
import { libraryApi } from './api';
-import { IVersionCreateDTO } from './types';
+import { type IVersionCreateDTO } from './types';
import { useUpdateTimestamp } from './useUpdateTimestamp';
export const useVersionCreate = () => {
diff --git a/rsconcept/frontend/src/features/library/backend/useVersionDelete.tsx b/rsconcept/frontend/src/features/library/backend/useVersionDelete.tsx
index d6a625e5..76436761 100644
--- a/rsconcept/frontend/src/features/library/backend/useVersionDelete.tsx
+++ b/rsconcept/frontend/src/features/library/backend/useVersionDelete.tsx
@@ -1,6 +1,6 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
-import { IRSFormDTO } from '@/features/rsform/backend/types';
+import { type IRSFormDTO } from '@/features/rsform/backend/types';
import { KEYS } from '@/backend/configuration';
diff --git a/rsconcept/frontend/src/features/library/backend/useVersionUpdate.tsx b/rsconcept/frontend/src/features/library/backend/useVersionUpdate.tsx
index 944264ad..d303d5e8 100644
--- a/rsconcept/frontend/src/features/library/backend/useVersionUpdate.tsx
+++ b/rsconcept/frontend/src/features/library/backend/useVersionUpdate.tsx
@@ -1,11 +1,11 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
-import { IRSFormDTO } from '@/features/rsform/backend/types';
+import { type IRSFormDTO } from '@/features/rsform/backend/types';
import { KEYS } from '@/backend/configuration';
import { libraryApi } from './api';
-import { IVersionUpdateDTO } from './types';
+import { type IVersionUpdateDTO } from './types';
export const useVersionUpdate = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/library/components/EditorLibraryItem.tsx b/rsconcept/frontend/src/features/library/components/EditorLibraryItem.tsx
index 96adc32d..3b8da45e 100644
--- a/rsconcept/frontend/src/features/library/components/EditorLibraryItem.tsx
+++ b/rsconcept/frontend/src/features/library/components/EditorLibraryItem.tsx
@@ -16,14 +16,14 @@ import {
IconOwner
} from '@/components/Icons';
import { Loader } from '@/components/Loader';
-import { CProps } from '@/components/props';
+import { type EventMouse } from '@/components/props';
import { ValueIcon } from '@/components/View';
import { useDialogsStore } from '@/stores/dialogs';
import { useModificationStore } from '@/stores/modification';
import { prefixes } from '@/utils/constants';
import { promptText } from '@/utils/labels';
-import { ILibraryItemData } from '../backend/types';
+import { type ILibraryItemData } from '../backend/types';
import { useMutatingLibrary } from '../backend/useMutatingLibrary';
import { useSetLocation } from '../backend/useSetLocation';
import { useSetOwner } from '../backend/useSetOwner';
@@ -62,7 +62,7 @@ export function EditorLibraryItem({ schema, isAttachedToOSS }: EditorLibraryItem
void setOwner({ itemID: schema.id, owner: newValue });
};
- function handleOpenLibrary(event: CProps.EventMouse) {
+ function handleOpenLibrary(event: EventMouse) {
setGlobalLocation(schema.location);
router.push(urls.library, event.ctrlKey || event.metaKey);
}
@@ -92,7 +92,7 @@ export function EditorLibraryItem({ schema, isAttachedToOSS }: EditorLibraryItem
onClick={handleOpenLibrary}
/>
}
value={schema.location}
title={isAttachedToOSS ? 'Путь наследуется от ОСС' : 'Путь'}
diff --git a/rsconcept/frontend/src/features/library/components/MiniSelectorOSS.tsx b/rsconcept/frontend/src/features/library/components/MiniSelectorOSS.tsx
index 76f2a17a..befd9c67 100644
--- a/rsconcept/frontend/src/features/library/components/MiniSelectorOSS.tsx
+++ b/rsconcept/frontend/src/features/library/components/MiniSelectorOSS.tsx
@@ -6,20 +6,20 @@ import { MiniButton } from '@/components/Control';
import { Dropdown, DropdownButton, useDropdown } from '@/components/Dropdown';
import { IconOSS } from '@/components/Icons';
import { Label } from '@/components/Input';
-import { CProps } from '@/components/props';
+import { type EventMouse, type Styling } from '@/components/props';
import { prefixes } from '@/utils/constants';
-import { ILibraryItemReference } from '../models/library';
+import { type ILibraryItemReference } from '../models/library';
-interface MiniSelectorOSSProps extends CProps.Styling {
+interface MiniSelectorOSSProps extends Styling {
items: ILibraryItemReference[];
- onSelect: (event: CProps.EventMouse, newValue: ILibraryItemReference) => void;
+ onSelect: (event: EventMouse, newValue: ILibraryItemReference) => void;
}
export function MiniSelectorOSS({ items, onSelect, className, ...restProps }: MiniSelectorOSSProps) {
const ossMenu = useDropdown();
- function onToggle(event: CProps.EventMouse) {
+ function onToggle(event: EventMouse) {
if (items.length > 1) {
ossMenu.toggle();
} else {
diff --git a/rsconcept/frontend/src/features/library/components/PickSchema.tsx b/rsconcept/frontend/src/features/library/components/PickSchema.tsx
index 37b712a1..2886adc1 100644
--- a/rsconcept/frontend/src/features/library/components/PickSchema.tsx
+++ b/rsconcept/frontend/src/features/library/components/PickSchema.tsx
@@ -4,20 +4,20 @@ import clsx from 'clsx';
import { FlexColumn } from '@/components/Container';
import { MiniButton } from '@/components/Control';
-import { createColumnHelper, DataTable, IConditionalStyle } from '@/components/DataTable';
+import { createColumnHelper, DataTable, type IConditionalStyle } from '@/components/DataTable';
import { Dropdown, useDropdown } from '@/components/Dropdown';
import { IconClose, IconFolderTree } from '@/components/Icons';
import { SearchBar } from '@/components/Input';
-import { CProps } from '@/components/props';
+import { type EventMouse, type Styling } from '@/components/props';
import { APP_COLORS } from '@/styling/colors';
import { prefixes } from '@/utils/constants';
-import { ILibraryItem, LibraryItemType } from '../backend/types';
+import { type ILibraryItem, LibraryItemType } from '../backend/types';
import { matchLibraryItem } from '../models/libraryAPI';
import { SelectLocation } from './SelectLocation';
-interface PickSchemaProps extends CProps.Styling {
+interface PickSchemaProps extends Styling {
id?: string;
value: number | null;
onChange: (newValue: number) => void;
@@ -96,7 +96,7 @@ export function PickSchema({
}
];
- function handleLocationClick(event: CProps.EventMouse, newValue: string) {
+ function handleLocationClick(event: EventMouse, newValue: string) {
event.preventDefault();
event.stopPropagation();
locationMenu.hide();
@@ -108,7 +108,7 @@ export function PickSchema({
setFilterText(newValue)}
diff --git a/rsconcept/frontend/src/features/library/components/SelectAccessPolicy.tsx b/rsconcept/frontend/src/features/library/components/SelectAccessPolicy.tsx
index 82b150a1..b6cc7048 100644
--- a/rsconcept/frontend/src/features/library/components/SelectAccessPolicy.tsx
+++ b/rsconcept/frontend/src/features/library/components/SelectAccessPolicy.tsx
@@ -1,16 +1,16 @@
'use client';
import { MiniButton } from '@/components/Control';
-import { DomIconProps } from '@/components/DomainIcons';
+import { type DomIconProps } from '@/components/DomainIcons';
import { Dropdown, DropdownButton, useDropdown } from '@/components/Dropdown';
import { IconPrivate, IconProtected, IconPublic } from '@/components/Icons';
-import { CProps } from '@/components/props';
+import { type Styling } from '@/components/props';
import { prefixes } from '@/utils/constants';
import { AccessPolicy } from '../backend/types';
import { describeAccessPolicy, labelAccessPolicy } from '../labels';
-interface SelectAccessPolicyProps extends CProps.Styling {
+interface SelectAccessPolicyProps extends Styling {
value: AccessPolicy;
onChange: (value: AccessPolicy) => void;
diff --git a/rsconcept/frontend/src/features/library/components/SelectItemType.tsx b/rsconcept/frontend/src/features/library/components/SelectItemType.tsx
index 770dbe1e..daf1f5ea 100644
--- a/rsconcept/frontend/src/features/library/components/SelectItemType.tsx
+++ b/rsconcept/frontend/src/features/library/components/SelectItemType.tsx
@@ -1,16 +1,16 @@
'use client';
import { SelectorButton } from '@/components/Control';
-import { DomIconProps } from '@/components/DomainIcons';
+import { type DomIconProps } from '@/components/DomainIcons';
import { Dropdown, DropdownButton, useDropdown } from '@/components/Dropdown';
import { IconOSS, IconRSForm } from '@/components/Icons';
-import { CProps } from '@/components/props';
+import { type Styling } from '@/components/props';
import { prefixes } from '@/utils/constants';
import { LibraryItemType } from '../backend/types';
import { describeLibraryItemType, labelLibraryItemType } from '../labels';
-interface SelectItemTypeProps extends CProps.Styling {
+interface SelectItemTypeProps extends Styling {
value: LibraryItemType;
onChange: (value: LibraryItemType) => void;
disabled?: boolean;
diff --git a/rsconcept/frontend/src/features/library/components/SelectLibraryItem.tsx b/rsconcept/frontend/src/features/library/components/SelectLibraryItem.tsx
index a7e14a70..03cb0112 100644
--- a/rsconcept/frontend/src/features/library/components/SelectLibraryItem.tsx
+++ b/rsconcept/frontend/src/features/library/components/SelectLibraryItem.tsx
@@ -3,12 +3,12 @@
import clsx from 'clsx';
import { SelectSingle } from '@/components/Input';
-import { CProps } from '@/components/props';
+import { type Styling } from '@/components/props';
-import { ILibraryItem } from '../backend/types';
+import { type ILibraryItem } from '../backend/types';
import { matchLibraryItem } from '../models/libraryAPI';
-interface SelectLibraryItemProps extends CProps.Styling {
+interface SelectLibraryItemProps extends Styling {
value: ILibraryItem | null;
onChange: (newValue: ILibraryItem | null) => void;
diff --git a/rsconcept/frontend/src/features/library/components/SelectLocation.tsx b/rsconcept/frontend/src/features/library/components/SelectLocation.tsx
index eefd1107..08b970fe 100644
--- a/rsconcept/frontend/src/features/library/components/SelectLocation.tsx
+++ b/rsconcept/frontend/src/features/library/components/SelectLocation.tsx
@@ -5,15 +5,15 @@ import clsx from 'clsx';
import { MiniButton } from '@/components/Control';
import { IconFolder, IconFolderClosed, IconFolderEmpty, IconFolderOpened } from '@/components/Icons';
-import { CProps } from '@/components/props';
+import { type EventMouse, type Styling } from '@/components/props';
import { useFolders } from '../backend/useFolders';
import { labelFolderNode } from '../labels';
import { FolderNode } from '../models/FolderTree';
-interface SelectLocationProps extends CProps.Styling {
+interface SelectLocationProps extends Styling {
value: string;
- onClick: (event: CProps.EventMouse, target: FolderNode) => void;
+ onClick: (event: EventMouse, target: FolderNode) => void;
prefix: string;
dense?: boolean;
@@ -44,7 +44,7 @@ export function SelectLocation({ value, dense, prefix, onClick, className, style
);
}
- function handleClickFold(event: CProps.EventMouse, target: FolderNode, showChildren: boolean) {
+ function handleClickFold(event: EventMouse, target: FolderNode, showChildren: boolean) {
event.preventDefault();
event.stopPropagation();
onFoldItem(target, showChildren);
diff --git a/rsconcept/frontend/src/features/library/components/SelectLocationContext.tsx b/rsconcept/frontend/src/features/library/components/SelectLocationContext.tsx
index 81d5c9cd..5e7fdefb 100644
--- a/rsconcept/frontend/src/features/library/components/SelectLocationContext.tsx
+++ b/rsconcept/frontend/src/features/library/components/SelectLocationContext.tsx
@@ -5,12 +5,12 @@ import clsx from 'clsx';
import { MiniButton } from '@/components/Control';
import { Dropdown, useDropdown } from '@/components/Dropdown';
import { IconFolderTree } from '@/components/Icons';
-import { CProps } from '@/components/props';
+import { type EventMouse, type Styling } from '@/components/props';
import { prefixes } from '@/utils/constants';
import { SelectLocation } from './SelectLocation';
-interface SelectLocationContextProps extends CProps.Styling {
+interface SelectLocationContextProps extends Styling {
value: string;
onChange: (newValue: string) => void;
title?: string;
@@ -26,7 +26,7 @@ export function SelectLocationContext({
}: SelectLocationContextProps) {
const menu = useDropdown();
- function handleClick(event: CProps.EventMouse, newValue: string) {
+ function handleClick(event: EventMouse, newValue: string) {
event.preventDefault();
event.stopPropagation();
menu.hide();
diff --git a/rsconcept/frontend/src/features/library/components/SelectLocationHead.tsx b/rsconcept/frontend/src/features/library/components/SelectLocationHead.tsx
index f0dbd213..3594b973 100644
--- a/rsconcept/frontend/src/features/library/components/SelectLocationHead.tsx
+++ b/rsconcept/frontend/src/features/library/components/SelectLocationHead.tsx
@@ -5,13 +5,13 @@ import clsx from 'clsx';
import { SelectorButton } from '@/components/Control';
import { LocationIcon } from '@/components/DomainIcons';
import { Dropdown, DropdownButton, useDropdown } from '@/components/Dropdown';
-import { CProps } from '@/components/props';
+import { type Styling } from '@/components/props';
import { prefixes } from '@/utils/constants';
import { describeLocationHead, labelLocationHead } from '../labels';
import { LocationHead } from '../models/library';
-interface SelectLocationHeadProps extends CProps.Styling {
+interface SelectLocationHeadProps extends Styling {
value: LocationHead;
onChange: (newValue: LocationHead) => void;
excluded?: LocationHead[];
diff --git a/rsconcept/frontend/src/features/library/components/SelectVersion.tsx b/rsconcept/frontend/src/features/library/components/SelectVersion.tsx
index 052107df..dd40582f 100644
--- a/rsconcept/frontend/src/features/library/components/SelectVersion.tsx
+++ b/rsconcept/frontend/src/features/library/components/SelectVersion.tsx
@@ -3,13 +3,13 @@
import clsx from 'clsx';
import { SelectSingle } from '@/components/Input';
-import { CProps } from '@/components/props';
+import { type Styling } from '@/components/props';
import { labelVersion } from '../../rsform/labels';
-import { IVersionInfo } from '../backend/types';
-import { CurrentVersion } from '../models/library';
+import { type IVersionInfo } from '../backend/types';
+import { type CurrentVersion } from '../models/library';
-interface SelectVersionProps extends CProps.Styling {
+interface SelectVersionProps extends Styling {
id?: string;
value: CurrentVersion;
onChange: (newValue: CurrentVersion) => void;
diff --git a/rsconcept/frontend/src/features/library/components/ToolbarItemAccess.tsx b/rsconcept/frontend/src/features/library/components/ToolbarItemAccess.tsx
index 6d39c038..47b46c7f 100644
--- a/rsconcept/frontend/src/features/library/components/ToolbarItemAccess.tsx
+++ b/rsconcept/frontend/src/features/library/components/ToolbarItemAccess.tsx
@@ -8,7 +8,7 @@ import { IconImmutable, IconMutable } from '@/components/Icons';
import { Label } from '@/components/Input';
import { PARAMETER } from '@/utils/constants';
-import { AccessPolicy, ILibraryItem } from '../backend/types';
+import { AccessPolicy, type ILibraryItem } from '../backend/types';
import { useMutatingLibrary } from '../backend/useMutatingLibrary';
import { useSetAccessPolicy } from '../backend/useSetAccessPolicy';
diff --git a/rsconcept/frontend/src/features/library/dialogs/DlgCloneLibraryItem.tsx b/rsconcept/frontend/src/features/library/dialogs/DlgCloneLibraryItem.tsx
index 893bae3a..0ae7a099 100644
--- a/rsconcept/frontend/src/features/library/dialogs/DlgCloneLibraryItem.tsx
+++ b/rsconcept/frontend/src/features/library/dialogs/DlgCloneLibraryItem.tsx
@@ -13,7 +13,7 @@ import { Checkbox, Label, TextArea, TextInput } from '@/components/Input';
import { ModalForm } from '@/components/Modal';
import { useDialogsStore } from '@/stores/dialogs';
-import { AccessPolicy, ICloneLibraryItemDTO, ILibraryItem, schemaCloneLibraryItem } from '../backend/types';
+import { AccessPolicy, type ICloneLibraryItemDTO, type ILibraryItem, schemaCloneLibraryItem } from '../backend/types';
import { useCloneItem } from '../backend/useCloneItem';
import { SelectAccessPolicy } from '../components/SelectAccessPolicy';
import { SelectLocationContext } from '../components/SelectLocationContext';
diff --git a/rsconcept/frontend/src/features/library/dialogs/DlgCreateVersion.tsx b/rsconcept/frontend/src/features/library/dialogs/DlgCreateVersion.tsx
index 42a67bcb..df8e7bba 100644
--- a/rsconcept/frontend/src/features/library/dialogs/DlgCreateVersion.tsx
+++ b/rsconcept/frontend/src/features/library/dialogs/DlgCreateVersion.tsx
@@ -9,7 +9,7 @@ import { ModalForm } from '@/components/Modal';
import { useDialogsStore } from '@/stores/dialogs';
import { errorMsg } from '@/utils/labels';
-import { IVersionCreateDTO, IVersionInfo, schemaVersionCreate } from '../backend/types';
+import { type IVersionCreateDTO, type IVersionInfo, schemaVersionCreate } from '../backend/types';
import { useVersionCreate } from '../backend/useVersionCreate';
import { nextVersion } from '../models/libraryAPI';
diff --git a/rsconcept/frontend/src/features/library/dialogs/DlgEditVersions/DlgEditVersions.tsx b/rsconcept/frontend/src/features/library/dialogs/DlgEditVersions/DlgEditVersions.tsx
index be7d5239..a2d602cc 100644
--- a/rsconcept/frontend/src/features/library/dialogs/DlgEditVersions/DlgEditVersions.tsx
+++ b/rsconcept/frontend/src/features/library/dialogs/DlgEditVersions/DlgEditVersions.tsx
@@ -14,7 +14,7 @@ import { ModalView } from '@/components/Modal';
import { useDialogsStore } from '@/stores/dialogs';
import { errorMsg } from '@/utils/labels';
-import { IVersionUpdateDTO, schemaVersionUpdate } from '../../backend/types';
+import { type IVersionUpdateDTO, schemaVersionUpdate } from '../../backend/types';
import { useMutatingLibrary } from '../../backend/useMutatingLibrary';
import { useVersionDelete } from '../../backend/useVersionDelete';
import { useVersionUpdate } from '../../backend/useVersionUpdate';
diff --git a/rsconcept/frontend/src/features/library/dialogs/DlgEditVersions/TableVersions.tsx b/rsconcept/frontend/src/features/library/dialogs/DlgEditVersions/TableVersions.tsx
index fa0825fe..3a201fd3 100644
--- a/rsconcept/frontend/src/features/library/dialogs/DlgEditVersions/TableVersions.tsx
+++ b/rsconcept/frontend/src/features/library/dialogs/DlgEditVersions/TableVersions.tsx
@@ -4,11 +4,11 @@ import { useIntl } from 'react-intl';
import clsx from 'clsx';
import { MiniButton } from '@/components/Control';
-import { createColumnHelper, DataTable, IConditionalStyle } from '@/components/DataTable';
+import { createColumnHelper, DataTable, type IConditionalStyle } from '@/components/DataTable';
import { IconRemove } from '@/components/Icons';
import { APP_COLORS } from '@/styling/colors';
-import { IVersionInfo } from '../../backend/types';
+import { type IVersionInfo } from '../../backend/types';
interface TableVersionsProps {
processing: boolean;
diff --git a/rsconcept/frontend/src/features/library/models/libraryAPI.test.ts b/rsconcept/frontend/src/features/library/models/libraryAPI.test.ts
index 4671fb09..024a2dde 100644
--- a/rsconcept/frontend/src/features/library/models/libraryAPI.test.ts
+++ b/rsconcept/frontend/src/features/library/models/libraryAPI.test.ts
@@ -1,4 +1,4 @@
-import { AccessPolicy, ILibraryItem, LibraryItemType } from '../backend/types';
+import { AccessPolicy, type ILibraryItem, LibraryItemType } from '../backend/types';
import { LocationHead } from './library';
import { matchLibraryItem, validateLocation } from './libraryAPI';
diff --git a/rsconcept/frontend/src/features/library/models/libraryAPI.ts b/rsconcept/frontend/src/features/library/models/libraryAPI.ts
index 93906ff9..bfa74d9a 100644
--- a/rsconcept/frontend/src/features/library/models/libraryAPI.ts
+++ b/rsconcept/frontend/src/features/library/models/libraryAPI.ts
@@ -5,7 +5,7 @@
import { limits } from '@/utils/constants';
import { TextMatcher } from '@/utils/utils';
-import { ILibraryItem } from '../backend/types';
+import { type ILibraryItem } from '../backend/types';
const LOCATION_REGEXP = /^\/[PLUS]((\/[!\d\p{L}]([!\d\p{L}\- ]*[!\d\p{L}])?)*)?$/u; // cspell:disable-line
diff --git a/rsconcept/frontend/src/features/library/pages/CreateItemPage/FormCreateItem.tsx b/rsconcept/frontend/src/features/library/pages/CreateItemPage/FormCreateItem.tsx
index b8023e13..7ed330e2 100644
--- a/rsconcept/frontend/src/features/library/pages/CreateItemPage/FormCreateItem.tsx
+++ b/rsconcept/frontend/src/features/library/pages/CreateItemPage/FormCreateItem.tsx
@@ -16,7 +16,12 @@ import { InfoError } from '@/components/InfoError';
import { Label, TextArea, TextInput } from '@/components/Input';
import { EXTEOR_TRS_FILE } from '@/utils/constants';
-import { AccessPolicy, ICreateLibraryItemDTO, LibraryItemType, schemaCreateLibraryItem } from '../../backend/types';
+import {
+ AccessPolicy,
+ type ICreateLibraryItemDTO,
+ LibraryItemType,
+ schemaCreateLibraryItem
+} from '../../backend/types';
import { useCreateItem } from '../../backend/useCreateItem';
import { SelectAccessPolicy } from '../../components/SelectAccessPolicy';
import { SelectItemType } from '../../components/SelectItemType';
@@ -200,7 +205,7 @@ export function FormCreateItem() {
error={errors.comment}
/>
-
+
state.libraryPagination);
const setItemsPerPage = usePreferencesStore(state => state.setLibraryPagination);
- function handleOpenItem(item: ILibraryItem, event: CProps.EventMouse) {
+ function handleOpenItem(item: ILibraryItem, event: EventMouse) {
const selection = window.getSelection();
if (!!selection && selection.toString().length > 0) {
return;
@@ -61,7 +61,7 @@ export function TableLibraryItems({ items }: TableLibraryItemsProps) {
});
}, [windowSize]);
- function handleToggleFolder(event: CProps.EventMouse) {
+ function handleToggleFolder(event: EventMouse) {
event.preventDefault();
event.stopPropagation();
toggleFolderMode();
diff --git a/rsconcept/frontend/src/features/library/pages/LibraryPage/ToolbarSearch.tsx b/rsconcept/frontend/src/features/library/pages/LibraryPage/ToolbarSearch.tsx
index 802f5881..414e01ad 100644
--- a/rsconcept/frontend/src/features/library/pages/LibraryPage/ToolbarSearch.tsx
+++ b/rsconcept/frontend/src/features/library/pages/LibraryPage/ToolbarSearch.tsx
@@ -17,7 +17,7 @@ import {
IconUserSearch
} from '@/components/Icons';
import { SearchBar } from '@/components/Input';
-import { CProps } from '@/components/props';
+import { type EventMouse } from '@/components/props';
import { prefixes } from '@/utils/constants';
import { tripleToggleColor } from '@/utils/utils';
@@ -66,7 +66,7 @@ export function ToolbarSearch({ total, filtered }: ToolbarSearchProps) {
toggleFolderMode();
}
- function handleFolderClick(event: CProps.EventMouse) {
+ function handleFolderClick(event: EventMouse) {
if (event.ctrlKey || event.metaKey) {
toggleFolderMode();
} else {
@@ -139,12 +139,12 @@ export function ToolbarSearch({ total, filtered }: ToolbarSearchProps) {
/>
-
+
@@ -203,7 +203,7 @@ export function ToolbarSearch({ total, filtered }: ToolbarSearchProps) {
placeholder='Путь'
noIcon
noBorder
- className='w-[4.5rem] sm:w-[5rem] flex-grow'
+ className='w-[4.5rem] sm:w-[5rem] grow'
query={path}
onChangeQuery={setPath}
/>
diff --git a/rsconcept/frontend/src/features/library/pages/LibraryPage/ViewSideLocation.tsx b/rsconcept/frontend/src/features/library/pages/LibraryPage/ViewSideLocation.tsx
index c64c987c..8b75793f 100644
--- a/rsconcept/frontend/src/features/library/pages/LibraryPage/ViewSideLocation.tsx
+++ b/rsconcept/frontend/src/features/library/pages/LibraryPage/ViewSideLocation.tsx
@@ -7,7 +7,7 @@ import { BadgeHelp, HelpTopic } from '@/features/help';
import { MiniButton } from '@/components/Control';
import { SubfoldersIcon } from '@/components/DomainIcons';
import { IconFolderEdit, IconFolderTree } from '@/components/Icons';
-import { CProps } from '@/components/props';
+import { type EventMouse } from '@/components/props';
import { useWindowSize } from '@/hooks/useWindowSize';
import { useFitHeight } from '@/stores/appLayout';
import { PARAMETER, prefixes } from '@/utils/constants';
@@ -48,7 +48,7 @@ export function ViewSideLocation({ isVisible, onRenameLocation }: ViewSideLocati
const maxHeight = useFitHeight('4.5rem');
- function handleClickFolder(event: CProps.EventMouse, target: FolderNode) {
+ function handleClickFolder(event: EventMouse, target: FolderNode) {
event.preventDefault();
event.stopPropagation();
if (event.ctrlKey || event.metaKey) {
diff --git a/rsconcept/frontend/src/features/library/stores/librarySearch.ts b/rsconcept/frontend/src/features/library/stores/librarySearch.ts
index 75acc3d3..cc693361 100644
--- a/rsconcept/frontend/src/features/library/stores/librarySearch.ts
+++ b/rsconcept/frontend/src/features/library/stores/librarySearch.ts
@@ -3,7 +3,7 @@ import { persist } from 'zustand/middleware';
import { toggleTristateFlag } from '@/utils/utils';
-import { ILibraryFilter, LocationHead } from '../models/library';
+import { type ILibraryFilter, LocationHead } from '../models/library';
interface LibrarySearchStore {
folderMode: boolean;
diff --git a/rsconcept/frontend/src/features/oss/backend/OssLoader.ts b/rsconcept/frontend/src/features/oss/backend/OssLoader.ts
index 82b633ad..8a1d6bb0 100644
--- a/rsconcept/frontend/src/features/oss/backend/OssLoader.ts
+++ b/rsconcept/frontend/src/features/oss/backend/OssLoader.ts
@@ -2,13 +2,13 @@
* Module: OSS data loading and processing.
*/
-import { ILibraryItem } from '@/features/library/backend/types';
+import { type ILibraryItem } from '@/features/library/backend/types';
import { Graph } from '@/models/Graph';
-import { IOperation, IOperationSchema, IOperationSchemaStats } from '../models/oss';
+import { type IOperation, type IOperationSchema, type IOperationSchemaStats } from '../models/oss';
-import { IOperationSchemaDTO, OperationType } from './types';
+import { type IOperationSchemaDTO, OperationType } from './types';
/**
* Loads data into an {@link IOperationSchema} based on {@link IOperationSchemaDTO}.
diff --git a/rsconcept/frontend/src/features/oss/backend/api.ts b/rsconcept/frontend/src/features/oss/backend/api.ts
index 61044634..09824bb9 100644
--- a/rsconcept/frontend/src/features/oss/backend/api.ts
+++ b/rsconcept/frontend/src/features/oss/backend/api.ts
@@ -1,23 +1,23 @@
import { queryOptions } from '@tanstack/react-query';
-import { ITargetCst } from '@/features/rsform/backend/types';
+import { type ITargetCst } from '@/features/rsform/backend/types';
import { axiosGet, axiosPatch, axiosPost } from '@/backend/apiTransport';
import { DELAYS, KEYS } from '@/backend/configuration';
import { infoMsg } from '@/utils/labels';
import {
- IConstituentaReference,
- ICstRelocateDTO,
- IInputCreatedResponse,
- IInputUpdateDTO,
- IOperationCreatedResponse,
- IOperationCreateDTO,
- IOperationDeleteDTO,
- IOperationPosition,
- IOperationSchemaDTO,
- IOperationUpdateDTO,
- ITargetOperation,
+ type IConstituentaReference,
+ type ICstRelocateDTO,
+ type IInputCreatedResponse,
+ type IInputUpdateDTO,
+ type IOperationCreatedResponse,
+ type IOperationCreateDTO,
+ type IOperationDeleteDTO,
+ type IOperationPosition,
+ type IOperationSchemaDTO,
+ type IOperationUpdateDTO,
+ type ITargetOperation,
schemaConstituentaReference,
schemaOperationCreatedResponse,
schemaOperationSchema
diff --git a/rsconcept/frontend/src/features/oss/backend/useInputCreate.tsx b/rsconcept/frontend/src/features/oss/backend/useInputCreate.tsx
index 4ef4f79e..39c7be0d 100644
--- a/rsconcept/frontend/src/features/oss/backend/useInputCreate.tsx
+++ b/rsconcept/frontend/src/features/oss/backend/useInputCreate.tsx
@@ -3,7 +3,7 @@ import { useMutation, useQueryClient } from '@tanstack/react-query';
import { KEYS } from '@/backend/configuration';
import { ossApi } from './api';
-import { ITargetOperation } from './types';
+import { type ITargetOperation } from './types';
export const useInputCreate = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/oss/backend/useInputUpdate.tsx b/rsconcept/frontend/src/features/oss/backend/useInputUpdate.tsx
index d2a8a250..c5e3450a 100644
--- a/rsconcept/frontend/src/features/oss/backend/useInputUpdate.tsx
+++ b/rsconcept/frontend/src/features/oss/backend/useInputUpdate.tsx
@@ -3,7 +3,7 @@ import { useMutation, useQueryClient } from '@tanstack/react-query';
import { KEYS } from '@/backend/configuration';
import { ossApi } from './api';
-import { IInputUpdateDTO } from './types';
+import { type IInputUpdateDTO } from './types';
export const useInputUpdate = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/oss/backend/useOperationCreate.tsx b/rsconcept/frontend/src/features/oss/backend/useOperationCreate.tsx
index 505a281b..ed2903b3 100644
--- a/rsconcept/frontend/src/features/oss/backend/useOperationCreate.tsx
+++ b/rsconcept/frontend/src/features/oss/backend/useOperationCreate.tsx
@@ -5,7 +5,7 @@ import { useUpdateTimestamp } from '@/features/library';
import { KEYS } from '@/backend/configuration';
import { ossApi } from './api';
-import { IOperationCreateDTO } from './types';
+import { type IOperationCreateDTO } from './types';
export const useOperationCreate = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/oss/backend/useOperationDelete.tsx b/rsconcept/frontend/src/features/oss/backend/useOperationDelete.tsx
index e31bb24d..8f1da8d0 100644
--- a/rsconcept/frontend/src/features/oss/backend/useOperationDelete.tsx
+++ b/rsconcept/frontend/src/features/oss/backend/useOperationDelete.tsx
@@ -3,7 +3,7 @@ import { useMutation, useQueryClient } from '@tanstack/react-query';
import { KEYS } from '@/backend/configuration';
import { ossApi } from './api';
-import { IOperationDeleteDTO } from './types';
+import { type IOperationDeleteDTO } from './types';
export const useOperationDelete = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/oss/backend/useOperationExecute.tsx b/rsconcept/frontend/src/features/oss/backend/useOperationExecute.tsx
index dcb4a4cd..41333264 100644
--- a/rsconcept/frontend/src/features/oss/backend/useOperationExecute.tsx
+++ b/rsconcept/frontend/src/features/oss/backend/useOperationExecute.tsx
@@ -3,7 +3,7 @@ import { useMutation, useQueryClient } from '@tanstack/react-query';
import { KEYS } from '@/backend/configuration';
import { ossApi } from './api';
-import { ITargetOperation } from './types';
+import { type ITargetOperation } from './types';
export const useOperationExecute = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/oss/backend/useOperationUpdate.tsx b/rsconcept/frontend/src/features/oss/backend/useOperationUpdate.tsx
index 4f38f416..65c99d91 100644
--- a/rsconcept/frontend/src/features/oss/backend/useOperationUpdate.tsx
+++ b/rsconcept/frontend/src/features/oss/backend/useOperationUpdate.tsx
@@ -1,11 +1,11 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
-import { ILibraryItem } from '@/features/library/backend/types';
+import { type ILibraryItem } from '@/features/library/backend/types';
import { KEYS } from '@/backend/configuration';
import { ossApi } from './api';
-import { IOperationUpdateDTO } from './types';
+import { type IOperationUpdateDTO } from './types';
export const useOperationUpdate = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/oss/backend/useRelocateConstituents.tsx b/rsconcept/frontend/src/features/oss/backend/useRelocateConstituents.tsx
index 8ed5c1f5..fabf5e3d 100644
--- a/rsconcept/frontend/src/features/oss/backend/useRelocateConstituents.tsx
+++ b/rsconcept/frontend/src/features/oss/backend/useRelocateConstituents.tsx
@@ -3,7 +3,7 @@ import { useMutation, useQueryClient } from '@tanstack/react-query';
import { KEYS } from '@/backend/configuration';
import { ossApi } from './api';
-import { ICstRelocateDTO } from './types';
+import { type ICstRelocateDTO } from './types';
export const useRelocateConstituents = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/oss/backend/useUpdatePositions.tsx b/rsconcept/frontend/src/features/oss/backend/useUpdatePositions.tsx
index d6cdba0d..78b27e84 100644
--- a/rsconcept/frontend/src/features/oss/backend/useUpdatePositions.tsx
+++ b/rsconcept/frontend/src/features/oss/backend/useUpdatePositions.tsx
@@ -5,7 +5,7 @@ import { useUpdateTimestamp } from '@/features/library';
import { KEYS } from '@/backend/configuration';
import { ossApi } from './api';
-import { IOperationPosition } from './types';
+import { type IOperationPosition } from './types';
export const useUpdatePositions = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/oss/components/InfoOperation.tsx b/rsconcept/frontend/src/features/oss/components/InfoOperation.tsx
index 3d1cce57..d1865f96 100644
--- a/rsconcept/frontend/src/features/oss/components/InfoOperation.tsx
+++ b/rsconcept/frontend/src/features/oss/components/InfoOperation.tsx
@@ -5,9 +5,9 @@ import { createColumnHelper } from '@tanstack/react-table';
import { DataTable } from '@/components/DataTable';
import { IconPageRight } from '@/components/Icons';
-import { ICstSubstituteInfo, OperationType } from '../backend/types';
+import { type ICstSubstituteInfo, OperationType } from '../backend/types';
import { labelOperationType } from '../labels';
-import { IOperation } from '../models/oss';
+import { type IOperation } from '../models/oss';
interface InfoOperationProps {
operation: IOperation;
diff --git a/rsconcept/frontend/src/features/oss/components/PickMultiOperation.tsx b/rsconcept/frontend/src/features/oss/components/PickMultiOperation.tsx
index 7a19467f..77e1f102 100644
--- a/rsconcept/frontend/src/features/oss/components/PickMultiOperation.tsx
+++ b/rsconcept/frontend/src/features/oss/components/PickMultiOperation.tsx
@@ -6,14 +6,14 @@ import clsx from 'clsx';
import { MiniButton } from '@/components/Control';
import { createColumnHelper, DataTable } from '@/components/DataTable';
import { IconMoveDown, IconMoveUp, IconRemove } from '@/components/Icons';
-import { CProps } from '@/components/props';
+import { type Styling } from '@/components/props';
import { NoData } from '@/components/View';
-import { IOperation } from '../models/oss';
+import { type IOperation } from '../models/oss';
import { SelectOperation } from './SelectOperation';
-interface PickMultiOperationProps extends CProps.Styling {
+interface PickMultiOperationProps extends Styling {
value: number[];
onChange: (newValue: number[]) => void;
items: IOperation[];
diff --git a/rsconcept/frontend/src/features/oss/components/SelectOperation.tsx b/rsconcept/frontend/src/features/oss/components/SelectOperation.tsx
index e6024fb6..2fa458cb 100644
--- a/rsconcept/frontend/src/features/oss/components/SelectOperation.tsx
+++ b/rsconcept/frontend/src/features/oss/components/SelectOperation.tsx
@@ -3,12 +3,12 @@
import clsx from 'clsx';
import { SelectSingle } from '@/components/Input';
-import { CProps } from '@/components/props';
+import { type Styling } from '@/components/props';
-import { IOperation } from '../models/oss';
+import { type IOperation } from '../models/oss';
import { matchOperation } from '../models/ossAPI';
-interface SelectOperationProps extends CProps.Styling {
+interface SelectOperationProps extends Styling {
value: IOperation | null;
onChange: (newValue: IOperation | null) => void;
diff --git a/rsconcept/frontend/src/features/oss/dialogs/DlgChangeInputSchema.tsx b/rsconcept/frontend/src/features/oss/dialogs/DlgChangeInputSchema.tsx
index b914c9c3..77c4dd0f 100644
--- a/rsconcept/frontend/src/features/oss/dialogs/DlgChangeInputSchema.tsx
+++ b/rsconcept/frontend/src/features/oss/dialogs/DlgChangeInputSchema.tsx
@@ -4,7 +4,7 @@ import { Controller, useForm } from 'react-hook-form';
import { zodResolver } from '@hookform/resolvers/zod';
import clsx from 'clsx';
-import { ILibraryItem, LibraryItemType, PickSchema, useLibrary } from '@/features/library';
+import { type ILibraryItem, LibraryItemType, PickSchema, useLibrary } from '@/features/library';
import { MiniButton } from '@/components/Control';
import { IconReset } from '@/components/Icons';
@@ -12,9 +12,9 @@ import { Label } from '@/components/Input';
import { ModalForm } from '@/components/Modal';
import { useDialogsStore } from '@/stores/dialogs';
-import { IInputUpdateDTO, IOperationPosition, schemaInputUpdate } from '../backend/types';
+import { type IInputUpdateDTO, type IOperationPosition, schemaInputUpdate } from '../backend/types';
import { useInputUpdate } from '../backend/useInputUpdate';
-import { IOperation, IOperationSchema } from '../models/oss';
+import { type IOperation, type IOperationSchema } from '../models/oss';
import { sortItemsForOSS } from '../models/ossAPI';
export interface DlgChangeInputSchemaProps {
diff --git a/rsconcept/frontend/src/features/oss/dialogs/DlgCreateOperation/DlgCreateOperation.tsx b/rsconcept/frontend/src/features/oss/dialogs/DlgCreateOperation/DlgCreateOperation.tsx
index ff84943c..8d5c2a77 100644
--- a/rsconcept/frontend/src/features/oss/dialogs/DlgCreateOperation/DlgCreateOperation.tsx
+++ b/rsconcept/frontend/src/features/oss/dialogs/DlgCreateOperation/DlgCreateOperation.tsx
@@ -11,10 +11,15 @@ import { ModalForm } from '@/components/Modal';
import { TabLabel, TabList, TabPanel, Tabs } from '@/components/Tabs';
import { useDialogsStore } from '@/stores/dialogs';
-import { IOperationCreateDTO, IOperationPosition, OperationType, schemaOperationCreate } from '../../backend/types';
+import {
+ type IOperationCreateDTO,
+ type IOperationPosition,
+ OperationType,
+ schemaOperationCreate
+} from '../../backend/types';
import { useOperationCreate } from '../../backend/useOperationCreate';
import { describeOperationType, labelOperationType } from '../../labels';
-import { IOperationSchema } from '../../models/oss';
+import { type IOperationSchema } from '../../models/oss';
import { calculateInsertPosition } from '../../models/ossAPI';
import { TabInputOperation } from './TabInputOperation';
diff --git a/rsconcept/frontend/src/features/oss/dialogs/DlgCreateOperation/TabInputOperation.tsx b/rsconcept/frontend/src/features/oss/dialogs/DlgCreateOperation/TabInputOperation.tsx
index e65f0e02..31860344 100644
--- a/rsconcept/frontend/src/features/oss/dialogs/DlgCreateOperation/TabInputOperation.tsx
+++ b/rsconcept/frontend/src/features/oss/dialogs/DlgCreateOperation/TabInputOperation.tsx
@@ -2,17 +2,17 @@
import { Controller, useFormContext, useWatch } from 'react-hook-form';
-import { ILibraryItem, LibraryItemType, PickSchema, useLibrary } from '@/features/library';
+import { type ILibraryItem, LibraryItemType, PickSchema, useLibrary } from '@/features/library';
import { MiniButton } from '@/components/Control';
import { IconReset } from '@/components/Icons';
import { Checkbox, Label, TextArea, TextInput } from '@/components/Input';
import { useDialogsStore } from '@/stores/dialogs';
-import { IOperationCreateDTO } from '../../backend/types';
+import { type IOperationCreateDTO } from '../../backend/types';
import { sortItemsForOSS } from '../../models/ossAPI';
-import { DlgCreateOperationProps } from './DlgCreateOperation';
+import { type DlgCreateOperationProps } from './DlgCreateOperation';
export function TabInputOperation() {
const { oss } = useDialogsStore(state => state.props as DlgCreateOperationProps);
diff --git a/rsconcept/frontend/src/features/oss/dialogs/DlgCreateOperation/TabSynthesisOperation.tsx b/rsconcept/frontend/src/features/oss/dialogs/DlgCreateOperation/TabSynthesisOperation.tsx
index 69be9ceb..69df52a1 100644
--- a/rsconcept/frontend/src/features/oss/dialogs/DlgCreateOperation/TabSynthesisOperation.tsx
+++ b/rsconcept/frontend/src/features/oss/dialogs/DlgCreateOperation/TabSynthesisOperation.tsx
@@ -4,10 +4,10 @@ import { FlexColumn } from '@/components/Container';
import { Label, TextArea, TextInput } from '@/components/Input';
import { useDialogsStore } from '@/stores/dialogs';
-import { IOperationCreateDTO } from '../../backend/types';
+import { type IOperationCreateDTO } from '../../backend/types';
import { PickMultiOperation } from '../../components/PickMultiOperation';
-import { DlgCreateOperationProps } from './DlgCreateOperation';
+import { type DlgCreateOperationProps } from './DlgCreateOperation';
export function TabSynthesisOperation() {
const { oss } = useDialogsStore(state => state.props as DlgCreateOperationProps);
diff --git a/rsconcept/frontend/src/features/oss/dialogs/DlgDeleteOperation.tsx b/rsconcept/frontend/src/features/oss/dialogs/DlgDeleteOperation.tsx
index dacfc080..8cc40abc 100644
--- a/rsconcept/frontend/src/features/oss/dialogs/DlgDeleteOperation.tsx
+++ b/rsconcept/frontend/src/features/oss/dialogs/DlgDeleteOperation.tsx
@@ -10,9 +10,9 @@ import { Checkbox, TextInput } from '@/components/Input';
import { ModalForm } from '@/components/Modal';
import { useDialogsStore } from '@/stores/dialogs';
-import { IOperationDeleteDTO, IOperationPosition, schemaOperationDelete } from '../backend/types';
+import { type IOperationDeleteDTO, type IOperationPosition, schemaOperationDelete } from '../backend/types';
import { useOperationDelete } from '../backend/useOperationDelete';
-import { IOperation, IOperationSchema } from '../models/oss';
+import { type IOperation, type IOperationSchema } from '../models/oss';
export interface DlgDeleteOperationProps {
oss: IOperationSchema;
diff --git a/rsconcept/frontend/src/features/oss/dialogs/DlgEditOperation/DlgEditOperation.tsx b/rsconcept/frontend/src/features/oss/dialogs/DlgEditOperation/DlgEditOperation.tsx
index dc501c63..94841aab 100644
--- a/rsconcept/frontend/src/features/oss/dialogs/DlgEditOperation/DlgEditOperation.tsx
+++ b/rsconcept/frontend/src/features/oss/dialogs/DlgEditOperation/DlgEditOperation.tsx
@@ -12,9 +12,14 @@ import { ModalForm } from '@/components/Modal';
import { TabLabel, TabList, TabPanel, Tabs } from '@/components/Tabs';
import { useDialogsStore } from '@/stores/dialogs';
-import { IOperationPosition, IOperationUpdateDTO, OperationType, schemaOperationUpdate } from '../../backend/types';
+import {
+ type IOperationPosition,
+ type IOperationUpdateDTO,
+ OperationType,
+ schemaOperationUpdate
+} from '../../backend/types';
import { useOperationUpdate } from '../../backend/useOperationUpdate';
-import { IOperation, IOperationSchema } from '../../models/oss';
+import { type IOperation, type IOperationSchema } from '../../models/oss';
import { TabArguments } from './TabArguments';
import { TabOperation } from './TabOperation';
diff --git a/rsconcept/frontend/src/features/oss/dialogs/DlgEditOperation/TabArguments.tsx b/rsconcept/frontend/src/features/oss/dialogs/DlgEditOperation/TabArguments.tsx
index ef3eedd2..2d1bb3d4 100644
--- a/rsconcept/frontend/src/features/oss/dialogs/DlgEditOperation/TabArguments.tsx
+++ b/rsconcept/frontend/src/features/oss/dialogs/DlgEditOperation/TabArguments.tsx
@@ -5,10 +5,10 @@ import { FlexColumn } from '@/components/Container';
import { Label } from '@/components/Input';
import { useDialogsStore } from '@/stores/dialogs';
-import { IOperationUpdateDTO } from '../../backend/types';
+import { type IOperationUpdateDTO } from '../../backend/types';
import { PickMultiOperation } from '../../components/PickMultiOperation';
-import { DlgEditOperationProps } from './DlgEditOperation';
+import { type DlgEditOperationProps } from './DlgEditOperation';
export function TabArguments() {
const { control, setValue } = useFormContext
();
diff --git a/rsconcept/frontend/src/features/oss/dialogs/DlgEditOperation/TabOperation.tsx b/rsconcept/frontend/src/features/oss/dialogs/DlgEditOperation/TabOperation.tsx
index 53fa09ea..1b850d4f 100644
--- a/rsconcept/frontend/src/features/oss/dialogs/DlgEditOperation/TabOperation.tsx
+++ b/rsconcept/frontend/src/features/oss/dialogs/DlgEditOperation/TabOperation.tsx
@@ -2,7 +2,7 @@ import { useFormContext } from 'react-hook-form';
import { TextArea, TextInput } from '@/components/Input';
-import { IOperationUpdateDTO } from '../../backend/types';
+import { type IOperationUpdateDTO } from '../../backend/types';
export function TabOperation() {
const {
diff --git a/rsconcept/frontend/src/features/oss/dialogs/DlgEditOperation/TabSynthesis.tsx b/rsconcept/frontend/src/features/oss/dialogs/DlgEditOperation/TabSynthesis.tsx
index 61d74ffe..860796a8 100644
--- a/rsconcept/frontend/src/features/oss/dialogs/DlgEditOperation/TabSynthesis.tsx
+++ b/rsconcept/frontend/src/features/oss/dialogs/DlgEditOperation/TabSynthesis.tsx
@@ -8,10 +8,10 @@ import { TextArea } from '@/components/Input';
import { useDialogsStore } from '@/stores/dialogs';
import { APP_COLORS } from '@/styling/colors';
-import { IOperationUpdateDTO } from '../../backend/types';
+import { type IOperationUpdateDTO } from '../../backend/types';
import { SubstitutionValidator } from '../../models/ossAPI';
-import { DlgEditOperationProps } from './DlgEditOperation';
+import { type DlgEditOperationProps } from './DlgEditOperation';
export function TabSynthesis() {
const { oss } = useDialogsStore(state => state.props as DlgEditOperationProps);
diff --git a/rsconcept/frontend/src/features/oss/dialogs/DlgRelocateConstituents.tsx b/rsconcept/frontend/src/features/oss/dialogs/DlgRelocateConstituents.tsx
index a8981585..af8d2bb7 100644
--- a/rsconcept/frontend/src/features/oss/dialogs/DlgRelocateConstituents.tsx
+++ b/rsconcept/frontend/src/features/oss/dialogs/DlgRelocateConstituents.tsx
@@ -6,7 +6,7 @@ import { zodResolver } from '@hookform/resolvers/zod';
import clsx from 'clsx';
import { HelpTopic } from '@/features/help';
-import { ILibraryItem, SelectLibraryItem, useLibrary } from '@/features/library';
+import { type ILibraryItem, SelectLibraryItem, useLibrary } from '@/features/library';
import { PickMultiConstituenta, useRSForm } from '@/features/rsform';
import { MiniButton } from '@/components/Control';
@@ -15,10 +15,10 @@ import { Loader } from '@/components/Loader';
import { ModalForm } from '@/components/Modal';
import { useDialogsStore } from '@/stores/dialogs';
-import { ICstRelocateDTO, IOperationPosition, schemaCstRelocate } from '../backend/types';
+import { type ICstRelocateDTO, type IOperationPosition, schemaCstRelocate } from '../backend/types';
import { useRelocateConstituents } from '../backend/useRelocateConstituents';
import { useUpdatePositions } from '../backend/useUpdatePositions';
-import { IOperation, IOperationSchema } from '../models/oss';
+import { type IOperation, type IOperationSchema } from '../models/oss';
import { getRelocateCandidates } from '../models/ossAPI';
export interface DlgRelocateConstituentsProps {
diff --git a/rsconcept/frontend/src/features/oss/labels.ts b/rsconcept/frontend/src/features/oss/labels.ts
index d1c79cf5..34c8ca36 100644
--- a/rsconcept/frontend/src/features/oss/labels.ts
+++ b/rsconcept/frontend/src/features/oss/labels.ts
@@ -1,5 +1,5 @@
import { OperationType } from './backend/types';
-import { ISubstitutionErrorDescription, SubstitutionErrorType } from './models/oss';
+import { type ISubstitutionErrorDescription, SubstitutionErrorType } from './models/oss';
/**
* Retrieves label for {@link OperationType}.
diff --git a/rsconcept/frontend/src/features/oss/models/oss.ts b/rsconcept/frontend/src/features/oss/models/oss.ts
index 704ac8f4..eb8102de 100644
--- a/rsconcept/frontend/src/features/oss/models/oss.ts
+++ b/rsconcept/frontend/src/features/oss/models/oss.ts
@@ -4,7 +4,7 @@
import { Graph } from '@/models/Graph';
-import { ICstSubstituteInfo, IOperationDTO, IOperationSchemaDTO } from '../backend/types';
+import { type ICstSubstituteInfo, type IOperationDTO, type IOperationSchemaDTO } from '../backend/types';
/**
* Represents Operation.
diff --git a/rsconcept/frontend/src/features/oss/models/ossAPI.ts b/rsconcept/frontend/src/features/oss/models/ossAPI.ts
index de3780f3..aaafdf8d 100644
--- a/rsconcept/frontend/src/features/oss/models/ossAPI.ts
+++ b/rsconcept/frontend/src/features/oss/models/ossAPI.ts
@@ -2,10 +2,10 @@
* Module: API for OperationSystem.
*/
-import { ILibraryItem } from '@/features/library/backend/types';
-import { CstType, ICstSubstitute, ParsingStatus } from '@/features/rsform/backend/types';
-import { CstClass, IConstituenta, IRSForm } from '@/features/rsform/models/rsform';
-import { AliasMapping } from '@/features/rsform/models/rslang';
+import { type ILibraryItem } from '@/features/library/backend/types';
+import { CstType, type ICstSubstitute, ParsingStatus } from '@/features/rsform/backend/types';
+import { CstClass, type IConstituenta, type IRSForm } from '@/features/rsform/models/rsform';
+import { type AliasMapping } from '@/features/rsform/models/rslang';
import {
applyAliasMapping,
applyTypificationMapping,
@@ -18,11 +18,11 @@ import { infoMsg } from '@/utils/labels';
import { TextMatcher } from '@/utils/utils';
import { Graph } from '../../../models/Graph';
-import { IOperationPosition, OperationType } from '../backend/types';
+import { type IOperationPosition, OperationType } from '../backend/types';
import { describeSubstitutionError } from '../labels';
-import { IOperation, IOperationSchema, SubstitutionErrorType } from './oss';
-import { Position2D } from './ossLayout';
+import { type IOperation, type IOperationSchema, SubstitutionErrorType } from './oss';
+import { type Position2D } from './ossLayout';
/**
* Checks if a given target {@link IOperation} matches the specified query using.
diff --git a/rsconcept/frontend/src/features/oss/models/ossLayout.ts b/rsconcept/frontend/src/features/oss/models/ossLayout.ts
index 731244bb..7189fadc 100644
--- a/rsconcept/frontend/src/features/oss/models/ossLayout.ts
+++ b/rsconcept/frontend/src/features/oss/models/ossLayout.ts
@@ -1,9 +1,9 @@
/**
* Module: OSS representation.
*/
-import { Node } from 'reactflow';
+import { type Node } from 'reactflow';
-import { IOperation } from './oss';
+import { type IOperation } from './oss';
/**
* Represents XY Position.
diff --git a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssCard/FormOSS.tsx b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssCard/FormOSS.tsx
index d1d6d387..6cefe41c 100644
--- a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssCard/FormOSS.tsx
+++ b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssCard/FormOSS.tsx
@@ -7,7 +7,7 @@ import { zodResolver } from '@hookform/resolvers/zod';
import clsx from 'clsx';
import { LibraryItemType, ToolbarItemAccess, useUpdateItem } from '@/features/library';
-import { IUpdateLibraryItemDTO, schemaUpdateLibraryItem } from '@/features/library/backend/types';
+import { type IUpdateLibraryItemDTO, schemaUpdateLibraryItem } from '@/features/library/backend/types';
import { SubmitButton } from '@/components/Control';
import { IconSave } from '@/components/Icons';
diff --git a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssCard/OssStats.tsx b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssCard/OssStats.tsx
index fcfb0f7c..47623be0 100644
--- a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssCard/OssStats.tsx
+++ b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssCard/OssStats.tsx
@@ -3,7 +3,7 @@ import clsx from 'clsx';
import { IconDownload, IconRSForm, IconRSFormImported, IconRSFormOwned, IconSynthesis } from '@/components/Icons';
import { ValueStats } from '@/components/View';
-import { IOperationSchemaStats } from '../../../models/oss';
+import { type IOperationSchemaStats } from '../../../models/oss';
interface OssStatsProps {
stats: IOperationSchemaStats;
diff --git a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/NodeContextMenu.tsx b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/NodeContextMenu.tsx
index f59dc44a..6373ce84 100644
--- a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/NodeContextMenu.tsx
+++ b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/NodeContextMenu.tsx
@@ -18,7 +18,7 @@ import { prepareTooltip } from '@/utils/utils';
import { OperationType } from '../../../backend/types';
import { useMutatingOss } from '../../../backend/useMutatingOss';
-import { IOperation } from '../../../models/oss';
+import { type IOperation } from '../../../models/oss';
import { useOssEdit } from '../OssEditContext';
export interface ContextMenuData {
diff --git a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/OssFlow.tsx b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/OssFlow.tsx
index a812859c..4bc62a98 100644
--- a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/OssFlow.tsx
+++ b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/OssFlow.tsx
@@ -6,7 +6,7 @@ import {
Background,
getNodesBounds,
getViewportForBounds,
- Node,
+ type Node,
ReactFlow,
useEdgesState,
useNodesState,
@@ -19,7 +19,7 @@ import { urls, useConceptNavigation } from '@/app';
import { useLibrary } from '@/features/library';
import { Overlay } from '@/components/Container';
-import { CProps } from '@/components/props';
+import { type EventMouse } from '@/components/props';
import { useMainHeight } from '@/stores/appLayout';
import { useTooltipsStore } from '@/stores/tooltips';
import { APP_COLORS } from '@/styling/colors';
@@ -30,12 +30,12 @@ import { useInputCreate } from '../../../backend/useInputCreate';
import { useMutatingOss } from '../../../backend/useMutatingOss';
import { useOperationExecute } from '../../../backend/useOperationExecute';
import { useUpdatePositions } from '../../../backend/useUpdatePositions';
-import { OssNode } from '../../../models/ossLayout';
+import { type OssNode } from '../../../models/ossLayout';
import { useOSSGraphStore } from '../../../stores/ossGraph';
import { useOssEdit } from '../OssEditContext';
import { OssNodeTypes } from './graph/OssNodeTypes';
-import { ContextMenuData, NodeContextMenu } from './NodeContextMenu';
+import { type ContextMenuData, NodeContextMenu } from './NodeContextMenu';
import { ToolbarOssGraph } from './ToolbarOssGraph';
const ZOOM_MAX = 2;
@@ -236,7 +236,7 @@ export function OssFlow() {
});
}
- function handleContextMenu(event: CProps.EventMouse, node: OssNode) {
+ function handleContextMenu(event: EventMouse, node: OssNode) {
event.preventDefault();
event.stopPropagation();
@@ -257,7 +257,7 @@ export function OssFlow() {
handleContextMenuHide();
}
- function handleNodeDoubleClick(event: CProps.EventMouse, node: OssNode) {
+ function handleNodeDoubleClick(event: EventMouse, node: OssNode) {
event.preventDefault();
event.stopPropagation();
if (node.data.operation.result) {
diff --git a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/graph/InputNode.tsx b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/graph/InputNode.tsx
index a2d86c63..8737d8de 100644
--- a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/graph/InputNode.tsx
+++ b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/graph/InputNode.tsx
@@ -1,6 +1,6 @@
import { Handle, Position } from 'reactflow';
-import { OssNodeInternal } from '../../../../models/ossLayout';
+import { type OssNodeInternal } from '../../../../models/ossLayout';
import { NodeCore } from './NodeCore';
diff --git a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/graph/NodeCore.tsx b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/graph/NodeCore.tsx
index 25a518a1..a85a3f42 100644
--- a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/graph/NodeCore.tsx
+++ b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/graph/NodeCore.tsx
@@ -8,7 +8,7 @@ import { globalIDs, PARAMETER } from '@/utils/constants';
import { truncateToLastWord } from '@/utils/utils';
import { OperationType } from '../../../../backend/types';
-import { OssNodeInternal } from '../../../../models/ossLayout';
+import { type OssNodeInternal } from '../../../../models/ossLayout';
interface NodeCoreProps {
node: OssNodeInternal;
diff --git a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/graph/OperationNode.tsx b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/graph/OperationNode.tsx
index f6020c0d..212b61c5 100644
--- a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/graph/OperationNode.tsx
+++ b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/graph/OperationNode.tsx
@@ -2,7 +2,7 @@
import { Handle, Position } from 'reactflow';
-import { OssNodeInternal } from '../../../../models/ossLayout';
+import { type OssNodeInternal } from '../../../../models/ossLayout';
import { NodeCore } from './NodeCore';
diff --git a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/graph/OssNodeTypes.ts b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/graph/OssNodeTypes.ts
index ece97306..82fd6f64 100644
--- a/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/graph/OssNodeTypes.ts
+++ b/rsconcept/frontend/src/features/oss/pages/OssPage/EditorOssGraph/graph/OssNodeTypes.ts
@@ -1,4 +1,4 @@
-import { NodeTypes } from 'reactflow';
+import { type NodeTypes } from 'reactflow';
import { InputNode } from './InputNode';
import { OperationNode } from './OperationNode';
diff --git a/rsconcept/frontend/src/features/oss/pages/OssPage/MenuOssTabs.tsx b/rsconcept/frontend/src/features/oss/pages/OssPage/MenuOssTabs.tsx
index 1670f22f..46b195a8 100644
--- a/rsconcept/frontend/src/features/oss/pages/OssPage/MenuOssTabs.tsx
+++ b/rsconcept/frontend/src/features/oss/pages/OssPage/MenuOssTabs.tsx
@@ -71,7 +71,7 @@ export function MenuOssTabs() {
}
return (
-
+
{
const mutation = useMutation({
diff --git a/rsconcept/frontend/src/features/rsform/backend/useCheckConstituenta.tsx b/rsconcept/frontend/src/features/rsform/backend/useCheckConstituenta.tsx
index 18d8da0b..cd885f90 100644
--- a/rsconcept/frontend/src/features/rsform/backend/useCheckConstituenta.tsx
+++ b/rsconcept/frontend/src/features/rsform/backend/useCheckConstituenta.tsx
@@ -3,7 +3,7 @@ import { useMutation } from '@tanstack/react-query';
import { KEYS } from '@/backend/configuration';
import { rsformsApi } from './api';
-import { ICheckConstituentaDTO } from './types';
+import { type ICheckConstituentaDTO } from './types';
export const useCheckConstituenta = () => {
const mutation = useMutation({
diff --git a/rsconcept/frontend/src/features/rsform/backend/useCstCreate.tsx b/rsconcept/frontend/src/features/rsform/backend/useCstCreate.tsx
index 2988922d..b238f457 100644
--- a/rsconcept/frontend/src/features/rsform/backend/useCstCreate.tsx
+++ b/rsconcept/frontend/src/features/rsform/backend/useCstCreate.tsx
@@ -5,7 +5,7 @@ import { useUpdateTimestamp } from '@/features/library';
import { KEYS } from '@/backend/configuration';
import { rsformsApi } from './api';
-import { ICstCreateDTO } from './types';
+import { type ICstCreateDTO } from './types';
export const useCstCreate = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/rsform/backend/useCstDelete.tsx b/rsconcept/frontend/src/features/rsform/backend/useCstDelete.tsx
index 69e28fc1..b0600859 100644
--- a/rsconcept/frontend/src/features/rsform/backend/useCstDelete.tsx
+++ b/rsconcept/frontend/src/features/rsform/backend/useCstDelete.tsx
@@ -5,7 +5,7 @@ import { useUpdateTimestamp } from '@/features/library';
import { KEYS } from '@/backend/configuration';
import { rsformsApi } from './api';
-import { IConstituentaList } from './types';
+import { type IConstituentaList } from './types';
export const useCstDelete = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/rsform/backend/useCstMove.tsx b/rsconcept/frontend/src/features/rsform/backend/useCstMove.tsx
index 57691183..e4a9fee5 100644
--- a/rsconcept/frontend/src/features/rsform/backend/useCstMove.tsx
+++ b/rsconcept/frontend/src/features/rsform/backend/useCstMove.tsx
@@ -5,7 +5,7 @@ import { useUpdateTimestamp } from '@/features/library';
import { KEYS } from '@/backend/configuration';
import { rsformsApi } from './api';
-import { ICstMoveDTO } from './types';
+import { type ICstMoveDTO } from './types';
export const useCstMove = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/rsform/backend/useCstRename.tsx b/rsconcept/frontend/src/features/rsform/backend/useCstRename.tsx
index f08fb941..eac63c25 100644
--- a/rsconcept/frontend/src/features/rsform/backend/useCstRename.tsx
+++ b/rsconcept/frontend/src/features/rsform/backend/useCstRename.tsx
@@ -5,7 +5,7 @@ import { useUpdateTimestamp } from '@/features/library';
import { KEYS } from '@/backend/configuration';
import { rsformsApi } from './api';
-import { ICstRenameDTO } from './types';
+import { type ICstRenameDTO } from './types';
export const useCstRename = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/rsform/backend/useCstSubstitute.tsx b/rsconcept/frontend/src/features/rsform/backend/useCstSubstitute.tsx
index 41a7404c..2669f576 100644
--- a/rsconcept/frontend/src/features/rsform/backend/useCstSubstitute.tsx
+++ b/rsconcept/frontend/src/features/rsform/backend/useCstSubstitute.tsx
@@ -5,7 +5,7 @@ import { useUpdateTimestamp } from '@/features/library';
import { KEYS } from '@/backend/configuration';
import { rsformsApi } from './api';
-import { ICstSubstitutionsDTO } from './types';
+import { type ICstSubstitutionsDTO } from './types';
export const useCstSubstitute = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/rsform/backend/useCstUpdate.tsx b/rsconcept/frontend/src/features/rsform/backend/useCstUpdate.tsx
index 63443f9e..b77de000 100644
--- a/rsconcept/frontend/src/features/rsform/backend/useCstUpdate.tsx
+++ b/rsconcept/frontend/src/features/rsform/backend/useCstUpdate.tsx
@@ -5,7 +5,7 @@ import { useUpdateTimestamp } from '@/features/library';
import { KEYS } from '@/backend/configuration';
import { rsformsApi } from './api';
-import { ICstUpdateDTO } from './types';
+import { type ICstUpdateDTO } from './types';
export const useCstUpdate = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/rsform/backend/useInlineSynthesis.tsx b/rsconcept/frontend/src/features/rsform/backend/useInlineSynthesis.tsx
index 40b77552..a0d627a4 100644
--- a/rsconcept/frontend/src/features/rsform/backend/useInlineSynthesis.tsx
+++ b/rsconcept/frontend/src/features/rsform/backend/useInlineSynthesis.tsx
@@ -5,7 +5,7 @@ import { useUpdateTimestamp } from '@/features/library';
import { KEYS } from '@/backend/configuration';
import { rsformsApi } from './api';
-import { IInlineSynthesisDTO } from './types';
+import { type IInlineSynthesisDTO } from './types';
export const useInlineSynthesis = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/rsform/backend/useProduceStructure.tsx b/rsconcept/frontend/src/features/rsform/backend/useProduceStructure.tsx
index 41c2d4a5..08534dbb 100644
--- a/rsconcept/frontend/src/features/rsform/backend/useProduceStructure.tsx
+++ b/rsconcept/frontend/src/features/rsform/backend/useProduceStructure.tsx
@@ -5,7 +5,7 @@ import { useUpdateTimestamp } from '@/features/library';
import { KEYS } from '@/backend/configuration';
import { rsformsApi } from './api';
-import { ITargetCst } from './types';
+import { type ITargetCst } from './types';
export const useProduceStructure = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/rsform/backend/useUploadTRS.tsx b/rsconcept/frontend/src/features/rsform/backend/useUploadTRS.tsx
index f8330f51..3c0c6723 100644
--- a/rsconcept/frontend/src/features/rsform/backend/useUploadTRS.tsx
+++ b/rsconcept/frontend/src/features/rsform/backend/useUploadTRS.tsx
@@ -1,11 +1,11 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
-import { ILibraryItem } from '@/features/library/backend/types';
+import { type ILibraryItem } from '@/features/library/backend/types';
import { KEYS } from '@/backend/configuration';
import { rsformsApi } from './api';
-import { IRSFormUploadDTO } from './types';
+import { type IRSFormUploadDTO } from './types';
export const useUploadTRS = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/rsform/colors.ts b/rsconcept/frontend/src/features/rsform/colors.ts
index 89cd2df7..de6d9a01 100644
--- a/rsconcept/frontend/src/features/rsform/colors.ts
+++ b/rsconcept/frontend/src/features/rsform/colors.ts
@@ -2,11 +2,11 @@ import { APP_COLORS } from '@/styling/colors';
import { PARAMETER } from '@/utils/constants';
import { TokenID } from './backend/types';
-import { GramData, Grammeme, NounGrams, PartOfSpeech, VerbGrams } from './models/language';
-import { CstClass, ExpressionStatus, IConstituenta } from './models/rsform';
-import { ISyntaxTreeNode } from './models/rslang';
-import { TMGraphNode } from './models/TMGraph';
-import { GraphColoring } from './stores/termGraph';
+import { type GramData, Grammeme, NounGrams, PartOfSpeech, VerbGrams } from './models/language';
+import { CstClass, ExpressionStatus, type IConstituenta } from './models/rsform';
+import { type ISyntaxTreeNode } from './models/rslang';
+import { type TMGraphNode } from './models/TMGraph';
+import { type GraphColoring } from './stores/termGraph';
/**
* Represents Brackets highlights theme.
diff --git a/rsconcept/frontend/src/features/rsform/components/BadgeConstituenta.tsx b/rsconcept/frontend/src/features/rsform/components/BadgeConstituenta.tsx
index 4dc11666..92a2229c 100644
--- a/rsconcept/frontend/src/features/rsform/components/BadgeConstituenta.tsx
+++ b/rsconcept/frontend/src/features/rsform/components/BadgeConstituenta.tsx
@@ -1,14 +1,14 @@
import clsx from 'clsx';
-import { CProps } from '@/components/props';
+import { type Styling } from '@/components/props';
import { useTooltipsStore } from '@/stores/tooltips';
import { APP_COLORS } from '@/styling/colors';
import { globalIDs } from '@/utils/constants';
import { colorFgCstStatus } from '../colors';
-import { CstClass, IConstituenta } from '../models/rsform';
+import { CstClass, type IConstituenta } from '../models/rsform';
-interface BadgeConstituentaProps extends CProps.Styling {
+interface BadgeConstituentaProps extends Styling {
/** Prefix for tooltip ID. */
prefixID?: string;
diff --git a/rsconcept/frontend/src/features/rsform/components/BadgeGrammeme.tsx b/rsconcept/frontend/src/features/rsform/components/BadgeGrammeme.tsx
index dd09b75c..3cdd3f4f 100644
--- a/rsconcept/frontend/src/features/rsform/components/BadgeGrammeme.tsx
+++ b/rsconcept/frontend/src/features/rsform/components/BadgeGrammeme.tsx
@@ -4,7 +4,7 @@ import { APP_COLORS } from '@/styling/colors';
import { colorFgGrammeme } from '../colors';
import { labelGrammeme } from '../labels';
-import { GramData } from '../models/language';
+import { type GramData } from '../models/language';
interface BadgeGrammemeProps {
/** Grammeme to display. */
diff --git a/rsconcept/frontend/src/features/rsform/components/BadgeWordForm.tsx b/rsconcept/frontend/src/features/rsform/components/BadgeWordForm.tsx
index 755da016..90482181 100644
--- a/rsconcept/frontend/src/features/rsform/components/BadgeWordForm.tsx
+++ b/rsconcept/frontend/src/features/rsform/components/BadgeWordForm.tsx
@@ -1,4 +1,4 @@
-import { IWordForm } from '../models/language';
+import { type IWordForm } from '../models/language';
import { BadgeGrammeme } from './BadgeGrammeme';
diff --git a/rsconcept/frontend/src/features/rsform/components/InfoConstituenta.tsx b/rsconcept/frontend/src/features/rsform/components/InfoConstituenta.tsx
index f7739ae2..3eee4316 100644
--- a/rsconcept/frontend/src/features/rsform/components/InfoConstituenta.tsx
+++ b/rsconcept/frontend/src/features/rsform/components/InfoConstituenta.tsx
@@ -1,13 +1,13 @@
import clsx from 'clsx';
import { IconChild } from '@/components/Icons';
-import { CProps } from '@/components/props';
+import { type Div } from '@/components/props';
import { labelCstTypification } from '../labels';
-import { IConstituenta } from '../models/rsform';
+import { type IConstituenta } from '../models/rsform';
import { isBasicConcept } from '../models/rsformAPI';
-interface InfoConstituentaProps extends CProps.Div {
+interface InfoConstituentaProps extends Div {
data: IConstituenta;
}
diff --git a/rsconcept/frontend/src/features/rsform/components/PickConstituenta.tsx b/rsconcept/frontend/src/features/rsform/components/PickConstituenta.tsx
index 6182ecab..fd5e0b5a 100644
--- a/rsconcept/frontend/src/features/rsform/components/PickConstituenta.tsx
+++ b/rsconcept/frontend/src/features/rsform/components/PickConstituenta.tsx
@@ -3,20 +3,20 @@
import { useState } from 'react';
import clsx from 'clsx';
-import { createColumnHelper, DataTable, IConditionalStyle } from '@/components/DataTable';
+import { createColumnHelper, DataTable, type IConditionalStyle } from '@/components/DataTable';
import { SearchBar } from '@/components/Input';
-import { CProps } from '@/components/props';
+import { type Styling } from '@/components/props';
import { NoData } from '@/components/View';
import { APP_COLORS } from '@/styling/colors';
import { describeConstituenta } from '../labels';
-import { IConstituenta } from '../models/rsform';
+import { type IConstituenta } from '../models/rsform';
import { matchConstituenta } from '../models/rsformAPI';
import { CstMatchMode } from '../stores/cstSearch';
import { BadgeConstituenta } from './BadgeConstituenta';
-interface PickConstituentaProps extends CProps.Styling {
+interface PickConstituentaProps extends Styling {
id?: string;
items: IConstituenta[];
value: IConstituenta | null;
@@ -73,10 +73,10 @@ export function PickConstituenta({
];
return (
-
+
setFilterText(newValue)}
diff --git a/rsconcept/frontend/src/features/rsform/components/PickMultiConstituenta.tsx b/rsconcept/frontend/src/features/rsform/components/PickMultiConstituenta.tsx
index 51249a62..8a583acc 100644
--- a/rsconcept/frontend/src/features/rsform/components/PickMultiConstituenta.tsx
+++ b/rsconcept/frontend/src/features/rsform/components/PickMultiConstituenta.tsx
@@ -3,21 +3,21 @@
import { useState } from 'react';
import clsx from 'clsx';
-import { createColumnHelper, DataTable, RowSelectionState } from '@/components/DataTable';
+import { createColumnHelper, DataTable, type RowSelectionState } from '@/components/DataTable';
import { SearchBar } from '@/components/Input';
-import { CProps } from '@/components/props';
+import { type Styling } from '@/components/props';
import { NoData } from '@/components/View';
import { Graph } from '@/models/Graph';
import { describeConstituenta } from '../labels';
-import { IConstituenta, IRSForm } from '../models/rsform';
+import { type IConstituenta, type IRSForm } from '../models/rsform';
import { isBasicConcept, matchConstituenta } from '../models/rsformAPI';
import { CstMatchMode } from '../stores/cstSearch';
import { BadgeConstituenta } from './BadgeConstituenta';
import { ToolbarGraphSelection } from './ToolbarGraphSelection';
-interface PickMultiConstituentaProps extends CProps.Styling {
+interface PickMultiConstituentaProps extends Styling {
id?: string;
value: number[];
onChange: (newValue: number[]) => void;
@@ -106,7 +106,7 @@ export function PickMultiConstituenta({
diff --git a/rsconcept/frontend/src/features/rsform/components/PickSubstitutions.tsx b/rsconcept/frontend/src/features/rsform/components/PickSubstitutions.tsx
index b8d8ab63..08c3e7ce 100644
--- a/rsconcept/frontend/src/features/rsform/components/PickSubstitutions.tsx
+++ b/rsconcept/frontend/src/features/rsform/components/PickSubstitutions.tsx
@@ -4,18 +4,18 @@ import { useState } from 'react';
import { toast } from 'react-toastify';
import clsx from 'clsx';
-import { ILibraryItem, SelectLibraryItem } from '@/features/library';
+import { type ILibraryItem, SelectLibraryItem } from '@/features/library';
import { MiniButton } from '@/components/Control';
-import { createColumnHelper, DataTable, IConditionalStyle } from '@/components/DataTable';
+import { createColumnHelper, DataTable, type IConditionalStyle } from '@/components/DataTable';
import { IconAccept, IconPageLeft, IconPageRight, IconRemove, IconReplace } from '@/components/Icons';
-import { CProps } from '@/components/props';
+import { type Styling } from '@/components/props';
import { NoData } from '@/components/View';
import { APP_COLORS } from '@/styling/colors';
import { errorMsg } from '@/utils/labels';
-import { ICstSubstitute } from '../backend/types';
-import { IConstituenta, IRSForm } from '../models/rsform';
+import { type ICstSubstitute } from '../backend/types';
+import { type IConstituenta, type IRSForm } from '../models/rsform';
import { BadgeConstituenta } from './BadgeConstituenta';
import { SelectConstituenta } from './SelectConstituenta';
@@ -28,7 +28,7 @@ interface IMultiSubstitution {
is_suggestion: boolean;
}
-interface PickSubstitutionsProps extends CProps.Styling {
+interface PickSubstitutionsProps extends Styling {
value: ICstSubstitute[];
onChange: (newValue: ICstSubstitute[]) => void;
@@ -58,9 +58,19 @@ export function PickSubstitutions({
const [rightArgument, setRightArgument] = useState(
schemas.length === 1 && allowSelfSubstitution ? schemas[0] : null
);
+ const leftItems = !leftArgument
+ ? []
+ : (leftArgument as IRSForm).items.filter(
+ cst => !value.find(item => item.original === cst.id) && (!filterCst || filterCst(cst))
+ );
const [leftCst, setLeftCst] = useState(null);
const [rightCst, setRightCst] = useState(null);
+ const rightItems = !rightArgument
+ ? []
+ : (rightArgument as IRSForm).items.filter(
+ cst => !value.find(item => item.original === cst.id) && (!filterCst || filterCst(cst))
+ );
const [deleteRight, setDeleteRight] = useState(true);
const toggleDelete = () => setDeleteRight(prev => !prev);
@@ -220,7 +230,7 @@ export function PickSubstitutions({
return (
-
+
- !value.find(item => item.original === cst.id) && (!filterCst || filterCst(cst))
- )}
- value={leftCst}
- onChange={setLeftCst}
- />
+
-
+
- !value.find(item => item.original === cst.id) && (!filterCst || filterCst(cst))
- )}
- value={rightCst}
- onChange={setRightCst}
- />
+
diff --git a/rsconcept/frontend/src/features/rsform/components/RSInput/RSInput.tsx b/rsconcept/frontend/src/features/rsform/components/RSInput/RSInput.tsx
index cd065330..8063124c 100644
--- a/rsconcept/frontend/src/features/rsform/components/RSInput/RSInput.tsx
+++ b/rsconcept/frontend/src/features/rsform/components/RSInput/RSInput.tsx
@@ -1,10 +1,14 @@
'use client';
import { forwardRef, useRef } from 'react';
-import { Extension } from '@codemirror/state';
+import { type Extension } from '@codemirror/state';
import { tags } from '@lezer/highlight';
import { createTheme } from '@uiw/codemirror-themes';
-import CodeMirror, { BasicSetupOptions, ReactCodeMirrorProps, ReactCodeMirrorRef } from '@uiw/react-codemirror';
+import CodeMirror, {
+ type BasicSetupOptions,
+ type ReactCodeMirrorProps,
+ type ReactCodeMirrorRef
+} from '@uiw/react-codemirror';
import clsx from 'clsx';
import { EditorView } from 'codemirror';
@@ -12,7 +16,7 @@ import { Label } from '@/components/Input';
import { usePreferencesStore } from '@/stores/preferences';
import { APP_COLORS } from '@/styling/colors';
-import { IRSForm } from '../../models/rsform';
+import { type IRSForm } from '../../models/rsform';
import { generateAlias, getCstTypePrefix, guessCstType } from '../../models/rsformAPI';
import { extractGlobals } from '../../models/rslangAPI';
diff --git a/rsconcept/frontend/src/features/rsform/components/RSInput/bracketMatching.ts b/rsconcept/frontend/src/features/rsform/components/RSInput/bracketMatching.ts
index 0c8d5905..26397106 100644
--- a/rsconcept/frontend/src/features/rsform/components/RSInput/bracketMatching.ts
+++ b/rsconcept/frontend/src/features/rsform/components/RSInput/bracketMatching.ts
@@ -1,4 +1,4 @@
-import { bracketMatching, MatchResult } from '@codemirror/language';
+import { bracketMatching, type MatchResult } from '@codemirror/language';
import { Decoration, EditorView } from '@codemirror/view';
import { BRACKETS_THEME } from '../../colors';
diff --git a/rsconcept/frontend/src/features/rsform/components/RSInput/clickNavigation.ts b/rsconcept/frontend/src/features/rsform/components/RSInput/clickNavigation.ts
index b6ebb9cf..0ba5d386 100644
--- a/rsconcept/frontend/src/features/rsform/components/RSInput/clickNavigation.ts
+++ b/rsconcept/frontend/src/features/rsform/components/RSInput/clickNavigation.ts
@@ -1,7 +1,7 @@
-import { Extension } from '@codemirror/state';
+import { type Extension } from '@codemirror/state';
import { EditorView } from '@uiw/react-codemirror';
-import { IRSForm } from '../../models/rsform';
+import { type IRSForm } from '../../models/rsform';
import { findAliasAt } from './utils';
diff --git a/rsconcept/frontend/src/features/rsform/components/RSInput/textEditing.ts b/rsconcept/frontend/src/features/rsform/components/RSInput/textEditing.ts
index aeb40762..bbc089d0 100644
--- a/rsconcept/frontend/src/features/rsform/components/RSInput/textEditing.ts
+++ b/rsconcept/frontend/src/features/rsform/components/RSInput/textEditing.ts
@@ -1,6 +1,6 @@
// Formatted text editing helpers
-import { ReactCodeMirrorRef } from '@uiw/react-codemirror';
+import { type ReactCodeMirrorRef } from '@uiw/react-codemirror';
import { CodeMirrorWrapper } from '@/utils/codemirror';
diff --git a/rsconcept/frontend/src/features/rsform/components/RSInput/tooltip.ts b/rsconcept/frontend/src/features/rsform/components/RSInput/tooltip.ts
index a50ed917..724c6607 100644
--- a/rsconcept/frontend/src/features/rsform/components/RSInput/tooltip.ts
+++ b/rsconcept/frontend/src/features/rsform/components/RSInput/tooltip.ts
@@ -1,9 +1,9 @@
-import { Extension } from '@codemirror/state';
-import { hoverTooltip, TooltipView } from '@codemirror/view';
+import { type Extension } from '@codemirror/state';
+import { hoverTooltip, type TooltipView } from '@codemirror/view';
import clsx from 'clsx';
import { labelCstTypification } from '../../labels';
-import { IConstituenta, IRSForm } from '../../models/rsform';
+import { type IConstituenta, type IRSForm } from '../../models/rsform';
import { isBasicConcept } from '../../models/rsformAPI';
import { findAliasAt } from './utils';
diff --git a/rsconcept/frontend/src/features/rsform/components/RefsInput/RefsInput.tsx b/rsconcept/frontend/src/features/rsform/components/RefsInput/RefsInput.tsx
index be3b422e..ed54d92d 100644
--- a/rsconcept/frontend/src/features/rsform/components/RefsInput/RefsInput.tsx
+++ b/rsconcept/frontend/src/features/rsform/components/RefsInput/RefsInput.tsx
@@ -1,10 +1,14 @@
'use client';
import { forwardRef, useRef, useState } from 'react';
-import { Extension } from '@codemirror/state';
+import { type Extension } from '@codemirror/state';
import { tags } from '@lezer/highlight';
import { createTheme } from '@uiw/codemirror-themes';
-import CodeMirror, { BasicSetupOptions, ReactCodeMirrorProps, ReactCodeMirrorRef } from '@uiw/react-codemirror';
+import CodeMirror, {
+ type BasicSetupOptions,
+ type ReactCodeMirrorProps,
+ type ReactCodeMirrorRef
+} from '@uiw/react-codemirror';
import clsx from 'clsx';
import { EditorView } from 'codemirror';
@@ -15,10 +19,10 @@ import { APP_COLORS } from '@/styling/colors';
import { CodeMirrorWrapper } from '@/utils/codemirror';
import { PARAMETER } from '@/utils/constants';
-import { IReferenceInputState } from '../../dialogs/DlgEditReference/DlgEditReference';
+import { type IReferenceInputState } from '../../dialogs/DlgEditReference/DlgEditReference';
import { ReferenceType } from '../../models/language';
import { referenceToString } from '../../models/languageAPI';
-import { IRSForm } from '../../models/rsform';
+import { type IRSForm } from '../../models/rsform';
import { RefEntity } from './parse/parser.terms';
import { refsNavigation } from './clickNavigation';
diff --git a/rsconcept/frontend/src/features/rsform/components/RefsInput/clickNavigation.ts b/rsconcept/frontend/src/features/rsform/components/RefsInput/clickNavigation.ts
index 542d555b..bc220961 100644
--- a/rsconcept/frontend/src/features/rsform/components/RefsInput/clickNavigation.ts
+++ b/rsconcept/frontend/src/features/rsform/components/RefsInput/clickNavigation.ts
@@ -1,7 +1,7 @@
-import { Extension } from '@codemirror/state';
+import { type Extension } from '@codemirror/state';
import { EditorView } from '@uiw/react-codemirror';
-import { IRSForm } from '../../models/rsform';
+import { type IRSForm } from '../../models/rsform';
import { findReferenceAt } from './utils';
diff --git a/rsconcept/frontend/src/features/rsform/components/RefsInput/tooltip.ts b/rsconcept/frontend/src/features/rsform/components/RefsInput/tooltip.ts
index 1c39f397..5d2a8afe 100644
--- a/rsconcept/frontend/src/features/rsform/components/RefsInput/tooltip.ts
+++ b/rsconcept/frontend/src/features/rsform/components/RefsInput/tooltip.ts
@@ -1,6 +1,6 @@
import { syntaxTree } from '@codemirror/language';
-import { Extension } from '@codemirror/state';
-import { hoverTooltip, TooltipView } from '@codemirror/view';
+import { type Extension } from '@codemirror/state';
+import { hoverTooltip, type TooltipView } from '@codemirror/view';
import clsx from 'clsx';
import { APP_COLORS } from '@/styling/colors';
@@ -8,9 +8,9 @@ import { findContainedNodes } from '@/utils/codemirror';
import { colorFgGrammeme } from '../../colors';
import { describeConstituentaTerm, labelGrammeme } from '../../labels';
-import { IEntityReference, ISyntacticReference } from '../../models/language';
+import { type IEntityReference, type ISyntacticReference } from '../../models/language';
import { parseGrammemes } from '../../models/languageAPI';
-import { IConstituenta, IRSForm } from '../../models/rsform';
+import { type IConstituenta, type IRSForm } from '../../models/rsform';
import { RefEntity } from './parse/parser.terms';
import { findReferenceAt } from './utils';
diff --git a/rsconcept/frontend/src/features/rsform/components/SelectConstituenta.tsx b/rsconcept/frontend/src/features/rsform/components/SelectConstituenta.tsx
index 67c26c53..fb1ae6be 100644
--- a/rsconcept/frontend/src/features/rsform/components/SelectConstituenta.tsx
+++ b/rsconcept/frontend/src/features/rsform/components/SelectConstituenta.tsx
@@ -3,14 +3,14 @@
import clsx from 'clsx';
import { SelectSingle } from '@/components/Input';
-import { CProps } from '@/components/props';
+import { type Styling } from '@/components/props';
import { describeConstituenta, describeConstituentaTerm } from '../labels';
-import { IConstituenta } from '../models/rsform';
+import { type IConstituenta } from '../models/rsform';
import { matchConstituenta } from '../models/rsformAPI';
import { CstMatchMode } from '../stores/cstSearch';
-interface SelectConstituentaProps extends CProps.Styling {
+interface SelectConstituentaProps extends Styling {
value: IConstituenta | null;
onChange: (newValue: IConstituenta | null) => void;
diff --git a/rsconcept/frontend/src/features/rsform/components/SelectCstType.tsx b/rsconcept/frontend/src/features/rsform/components/SelectCstType.tsx
index 3198ae13..f78900ce 100644
--- a/rsconcept/frontend/src/features/rsform/components/SelectCstType.tsx
+++ b/rsconcept/frontend/src/features/rsform/components/SelectCstType.tsx
@@ -1,5 +1,5 @@
import { SelectSingle } from '@/components/Input';
-import { CProps } from '@/components/props';
+import { type Styling } from '@/components/props';
import { CstType } from '../backend/types';
import { labelCstType } from '../labels';
@@ -9,7 +9,7 @@ const SelectorCstType = Object.values(CstType).map(typeStr => ({
label: labelCstType(typeStr as CstType)
}));
-interface SelectCstTypeProps extends CProps.Styling {
+interface SelectCstTypeProps extends Styling {
id?: string;
disabled?: boolean;
value: CstType;
diff --git a/rsconcept/frontend/src/features/rsform/components/SelectMultiGrammeme.tsx b/rsconcept/frontend/src/features/rsform/components/SelectMultiGrammeme.tsx
index 90dc41f6..9dc77ca8 100644
--- a/rsconcept/frontend/src/features/rsform/components/SelectMultiGrammeme.tsx
+++ b/rsconcept/frontend/src/features/rsform/components/SelectMultiGrammeme.tsx
@@ -1,12 +1,10 @@
-import { SelectMulti, SelectMultiProps } from '@/components/Input';
-import { CProps } from '@/components/props';
+import { SelectMulti, type SelectMultiProps } from '@/components/Input';
+import { type Styling } from '@/components/props';
-import { Grammeme, IGrammemeOption } from '../models/language';
+import { Grammeme, type IGrammemeOption } from '../models/language';
import { getCompatibleGrams, grammemeCompare, supportedGrammeOptions } from '../models/languageAPI';
-interface SelectMultiGrammemeProps
- extends Omit
, 'value' | 'onChange'>,
- CProps.Styling {
+interface SelectMultiGrammemeProps extends Omit, 'value' | 'onChange'>, Styling {
value: IGrammemeOption[];
onChange: (newValue: IGrammemeOption[]) => void;
placeholder?: string;
diff --git a/rsconcept/frontend/src/features/rsform/components/SelectWordForm.tsx b/rsconcept/frontend/src/features/rsform/components/SelectWordForm.tsx
index f2c94d8e..8c142822 100644
--- a/rsconcept/frontend/src/features/rsform/components/SelectWordForm.tsx
+++ b/rsconcept/frontend/src/features/rsform/components/SelectWordForm.tsx
@@ -2,10 +2,10 @@
import clsx from 'clsx';
-import { CProps } from '@/components/props';
+import { type Styling } from '@/components/props';
import { prefixes } from '@/utils/constants';
-import { Grammeme, IGrammemeOption } from '../models/language';
+import { Grammeme, type IGrammemeOption } from '../models/language';
import { supportedGrammeOptions } from '../models/languageAPI';
import { WordformButton } from './WordformButton';
@@ -29,7 +29,7 @@ const DefaultWordForms = [
{ text: 'мн пред', example: 'ручках', grams: [Grammeme.plur, Grammeme.loct] }
] as const;
-interface SelectWordFormProps extends CProps.Styling {
+interface SelectWordFormProps extends Styling {
value: IGrammemeOption[];
onChange: React.Dispatch>;
}
diff --git a/rsconcept/frontend/src/features/rsform/components/ToolbarGraphSelection.tsx b/rsconcept/frontend/src/features/rsform/components/ToolbarGraphSelection.tsx
index 55c6be55..c456a982 100644
--- a/rsconcept/frontend/src/features/rsform/components/ToolbarGraphSelection.tsx
+++ b/rsconcept/frontend/src/features/rsform/components/ToolbarGraphSelection.tsx
@@ -12,10 +12,10 @@ import {
IconPredecessor,
IconReset
} from '@/components/Icons';
-import { CProps } from '@/components/props';
+import { type Styling } from '@/components/props';
import { Graph } from '@/models/Graph';
-interface ToolbarGraphSelectionProps extends CProps.Styling {
+interface ToolbarGraphSelectionProps extends Styling {
value: number[];
onChange: (newSelection: number[]) => void;
graph: Graph;
diff --git a/rsconcept/frontend/src/features/rsform/components/ToolbarRSFormCard.tsx b/rsconcept/frontend/src/features/rsform/components/ToolbarRSFormCard.tsx
index 4abdb355..fa9c79e0 100644
--- a/rsconcept/frontend/src/features/rsform/components/ToolbarRSFormCard.tsx
+++ b/rsconcept/frontend/src/features/rsform/components/ToolbarRSFormCard.tsx
@@ -3,7 +3,7 @@
import { urls, useConceptNavigation } from '@/app';
import { BadgeHelp, HelpTopic } from '@/features/help';
import { AccessPolicy, LibraryItemType, MiniSelectorOSS, useMutatingLibrary } from '@/features/library';
-import { ILibraryItem } from '@/features/library/backend/types';
+import { type ILibraryItem } from '@/features/library/backend/types';
import { useRoleStore, UserRole } from '@/features/users';
import { Overlay } from '@/components/Container';
@@ -14,7 +14,7 @@ import { PARAMETER } from '@/utils/constants';
import { tooltipText } from '@/utils/labels';
import { prepareTooltip, sharePage } from '@/utils/utils';
-import { IRSForm } from '../models/rsform';
+import { type IRSForm } from '../models/rsform';
interface ToolbarRSFormCardProps {
onSubmit: () => void;
diff --git a/rsconcept/frontend/src/features/rsform/components/WordformButton.tsx b/rsconcept/frontend/src/features/rsform/components/WordformButton.tsx
index dd383c99..23191cd9 100644
--- a/rsconcept/frontend/src/features/rsform/components/WordformButton.tsx
+++ b/rsconcept/frontend/src/features/rsform/components/WordformButton.tsx
@@ -1,6 +1,6 @@
import clsx from 'clsx';
-import { Grammeme } from '../models/language';
+import { type Grammeme } from '../models/language';
interface WordformButtonProps {
text: string;
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgCreateCst/DlgCreateCst.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgCreateCst/DlgCreateCst.tsx
index da200e16..bafe1661 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgCreateCst/DlgCreateCst.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgCreateCst/DlgCreateCst.tsx
@@ -7,9 +7,9 @@ import { ModalForm } from '@/components/Modal';
import { useDialogsStore } from '@/stores/dialogs';
import { errorMsg } from '@/utils/labels';
-import { IConstituentaBasicsDTO, ICstCreateDTO, schemaCstCreate } from '../../backend/types';
+import { type IConstituentaBasicsDTO, type ICstCreateDTO, schemaCstCreate } from '../../backend/types';
import { useCstCreate } from '../../backend/useCstCreate';
-import { IRSForm } from '../../models/rsform';
+import { type IRSForm } from '../../models/rsform';
import { validateNewAlias } from '../../models/rsformAPI';
import { FormCreateCst } from './FormCreateCst';
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgCreateCst/FormCreateCst.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgCreateCst/FormCreateCst.tsx
index 9db9eabe..b2423b91 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgCreateCst/FormCreateCst.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgCreateCst/FormCreateCst.tsx
@@ -9,10 +9,10 @@ import { BadgeHelp, HelpTopic } from '@/features/help';
import { TextArea, TextInput } from '@/components/Input';
import { PARAMETER } from '@/utils/constants';
-import { CstType, ICstCreateDTO } from '../../backend/types';
+import { CstType, type ICstCreateDTO } from '../../backend/types';
import { RSInput } from '../../components/RSInput';
import { SelectCstType } from '../../components/SelectCstType';
-import { IRSForm } from '../../models/rsform';
+import { type IRSForm } from '../../models/rsform';
import { generateAlias, isBaseSet, isBasicConcept, isFunctional } from '../../models/rsformAPI';
interface FormCreateCstProps {
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgCstTemplate/DlgCstTemplate.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgCstTemplate/DlgCstTemplate.tsx
index fe10971a..40b715d2 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgCstTemplate/DlgCstTemplate.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgCstTemplate/DlgCstTemplate.tsx
@@ -12,9 +12,9 @@ import { ModalForm } from '@/components/Modal';
import { TabLabel, TabList, TabPanel, Tabs } from '@/components/Tabs';
import { useDialogsStore } from '@/stores/dialogs';
-import { CstType, IConstituentaBasicsDTO, ICstCreateDTO, schemaCstCreate } from '../../backend/types';
+import { CstType, type IConstituentaBasicsDTO, type ICstCreateDTO, schemaCstCreate } from '../../backend/types';
import { useCstCreate } from '../../backend/useCstCreate';
-import { IRSForm } from '../../models/rsform';
+import { type IRSForm } from '../../models/rsform';
import { generateAlias, validateNewAlias } from '../../models/rsformAPI';
import { FormCreateCst } from '../DlgCreateCst/FormCreateCst';
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgCstTemplate/TabArguments.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgCstTemplate/TabArguments.tsx
index 9d374c18..1f45f186 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgCstTemplate/TabArguments.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgCstTemplate/TabArguments.tsx
@@ -6,19 +6,19 @@ import { createColumnHelper } from '@tanstack/react-table';
import clsx from 'clsx';
import { MiniButton } from '@/components/Control';
-import { DataTable, IConditionalStyle } from '@/components/DataTable';
+import { DataTable, type IConditionalStyle } from '@/components/DataTable';
import { IconAccept, IconRemove, IconReset } from '@/components/Icons';
import { NoData } from '@/components/View';
import { useDialogsStore } from '@/stores/dialogs';
import { APP_COLORS } from '@/styling/colors';
-import { ICstCreateDTO } from '../../backend/types';
+import { type ICstCreateDTO } from '../../backend/types';
import { PickConstituenta } from '../../components/PickConstituenta';
import { RSInput } from '../../components/RSInput';
-import { IConstituenta } from '../../models/rsform';
-import { IArgumentValue } from '../../models/rslang';
+import { type IConstituenta } from '../../models/rsform';
+import { type IArgumentValue } from '../../models/rslang';
-import { DlgCstTemplateProps } from './DlgCstTemplate';
+import { type DlgCstTemplateProps } from './DlgCstTemplate';
import { useTemplateContext } from './TemplateContext';
const argumentsHelper = createColumnHelper();
@@ -188,7 +188,7 @@ export function TabArguments() {
noTooltip
id='result'
placeholder='Итоговое определение'
- className='mt-[1.2rem]'
+ className='mt-[1.1rem]'
height='5.1rem'
value={definition}
/>
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgCstTemplate/TabTemplate.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgCstTemplate/TabTemplate.tsx
index a68ad80e..06d207cc 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgCstTemplate/TabTemplate.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgCstTemplate/TabTemplate.tsx
@@ -69,7 +69,7 @@ export function TabTemplate() {
noBorder
isSearchable={false}
placeholder='Выберите категорию'
- className='flex-grow ml-1 border-none'
+ className='grow ml-1 border-none'
options={categorySelector}
value={
filterCategory && templateSchema
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgCstTemplate/TemplateContext.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgCstTemplate/TemplateContext.tsx
index 50fea6e7..e142f8ce 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgCstTemplate/TemplateContext.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgCstTemplate/TemplateContext.tsx
@@ -5,13 +5,13 @@ import { useFormContext } from 'react-hook-form';
import { useDialogsStore } from '@/stores/dialogs';
-import { ICstCreateDTO } from '../../backend/types';
-import { IConstituenta } from '../../models/rsform';
+import { type ICstCreateDTO } from '../../backend/types';
+import { type IConstituenta } from '../../models/rsform';
import { generateAlias } from '../../models/rsformAPI';
-import { IArgumentValue } from '../../models/rslang';
+import { type IArgumentValue } from '../../models/rslang';
import { inferTemplatedType, substituteTemplateArgs } from '../../models/rslangAPI';
-import { DlgCstTemplateProps } from './DlgCstTemplate';
+import { type DlgCstTemplateProps } from './DlgCstTemplate';
export interface ITemplateContext {
args: IArgumentValue[];
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgDeleteCst/DlgDeleteCst.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgDeleteCst/DlgDeleteCst.tsx
index 48909521..678c8104 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgDeleteCst/DlgDeleteCst.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgDeleteCst/DlgDeleteCst.tsx
@@ -9,7 +9,7 @@ import { useDialogsStore } from '@/stores/dialogs';
import { prefixes } from '@/utils/constants';
import { useCstDelete } from '../../backend/useCstDelete';
-import { IRSForm } from '../../models/rsform';
+import { type IRSForm } from '../../models/rsform';
import { ListConstituents } from './ListConstituents';
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgDeleteCst/ListConstituents.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgDeleteCst/ListConstituents.tsx
index 337a9566..390c7112 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgDeleteCst/ListConstituents.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgDeleteCst/ListConstituents.tsx
@@ -1,7 +1,7 @@
import clsx from 'clsx';
import { labelConstituenta } from '../../labels';
-import { IRSForm } from '../../models/rsform';
+import { type IRSForm } from '../../models/rsform';
interface ListConstituentsProps {
list: number[];
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgEditReference/DlgEditReference.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgEditReference/DlgEditReference.tsx
index 80815328..968db4d7 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgEditReference/DlgEditReference.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgEditReference/DlgEditReference.tsx
@@ -13,14 +13,14 @@ import { TabLabel, TabList, TabPanel, Tabs } from '@/components/Tabs';
import { useDialogsStore } from '@/stores/dialogs';
import { labelReferenceType } from '../../labels';
-import { IReference, ReferenceType } from '../../models/language';
+import { type IReference, ReferenceType } from '../../models/language';
import {
parseEntityReference,
parseGrammemes,
parseSyntacticReference,
supportedGrammeOptions
} from '../../models/languageAPI';
-import { IRSForm } from '../../models/rsform';
+import { type IRSForm } from '../../models/rsform';
import { TabEntityReference } from './TabEntityReference';
import { TabSyntacticReference } from './TabSyntacticReference';
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgEditReference/TabEntityReference.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgEditReference/TabEntityReference.tsx
index 3f3993cb..bf34c155 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgEditReference/TabEntityReference.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgEditReference/TabEntityReference.tsx
@@ -8,11 +8,11 @@ import { useDialogsStore } from '@/stores/dialogs';
import { PickConstituenta } from '../../components/PickConstituenta';
import { SelectMultiGrammeme } from '../../components/SelectMultiGrammeme';
import { SelectWordForm } from '../../components/SelectWordForm';
-import { IConstituenta } from '../../models/rsform';
+import { type IConstituenta } from '../../models/rsform';
import { matchConstituenta } from '../../models/rsformAPI';
import { CstMatchMode } from '../../stores/cstSearch';
-import { DlgEditReferenceProps, IEditReferenceState } from './DlgEditReference';
+import { type DlgEditReferenceProps, type IEditReferenceState } from './DlgEditReference';
export function TabEntityReference() {
const { schema, initial } = useDialogsStore(state => state.props as DlgEditReferenceProps);
@@ -55,7 +55,7 @@ export function TabEntityReference() {
dense
noBorder
label='Термин'
- className='flex-grow text-sm'
+ className='grow text-sm'
value={term}
title={term}
/>
@@ -76,7 +76,7 @@ export function TabEntityReference() {
state.props as DlgEditReferenceProps);
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgEditWordForms/DlgEditWordForms.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgEditWordForms/DlgEditWordForms.tsx
index 697694c9..a63d056a 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgEditWordForms/DlgEditWordForms.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgEditWordForms/DlgEditWordForms.tsx
@@ -18,9 +18,9 @@ import { useIsProcessingCctext } from '../../backend/cctext/useIsProcessingCctex
import { useParseText } from '../../backend/cctext/useParseText';
import { useCstUpdate } from '../../backend/useCstUpdate';
import { SelectMultiGrammeme } from '../../components/SelectMultiGrammeme';
-import { Grammeme, IGrammemeOption, IWordForm, supportedGrammemes } from '../../models/language';
+import { Grammeme, type IGrammemeOption, type IWordForm, supportedGrammemes } from '../../models/language';
import { parseGrammemes, supportedGrammeOptions, wordFormEquals } from '../../models/languageAPI';
-import { IConstituenta } from '../../models/rsform';
+import { type IConstituenta } from '../../models/rsform';
import { TableWordForms } from './TableWordForms';
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgEditWordForms/TableWordForms.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgEditWordForms/TableWordForms.tsx
index c1df98e7..abad5c47 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgEditWordForms/TableWordForms.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgEditWordForms/TableWordForms.tsx
@@ -8,7 +8,7 @@ import { IconRemove } from '@/components/Icons';
import { NoData } from '@/components/View';
import { BadgeWordForm } from '../../components/BadgeWordForm';
-import { IWordForm } from '../../models/language';
+import { type IWordForm } from '../../models/language';
interface TableWordFormsProps {
forms: IWordForm[];
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgGraphParams.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgGraphParams.tsx
index 45f80728..325c79b8 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgGraphParams.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgGraphParams.tsx
@@ -7,7 +7,7 @@ import { ModalForm } from '@/components/Modal';
import { CstType } from '../backend/types';
import { labelCstType } from '../labels';
-import { GraphFilterParams, useTermGraphStore } from '../stores/termGraph';
+import { type GraphFilterParams, useTermGraphStore } from '../stores/termGraph';
export function DlgGraphParams() {
const params = useTermGraphStore(state => state.filter);
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgInlineSynthesis/DlgInlineSynthesis.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgInlineSynthesis/DlgInlineSynthesis.tsx
index 6c3dfb79..1546e441 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgInlineSynthesis/DlgInlineSynthesis.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgInlineSynthesis/DlgInlineSynthesis.tsx
@@ -10,9 +10,9 @@ import { ModalForm } from '@/components/Modal';
import { TabLabel, TabList, TabPanel, Tabs } from '@/components/Tabs';
import { useDialogsStore } from '@/stores/dialogs';
-import { IInlineSynthesisDTO, schemaInlineSynthesis } from '../../backend/types';
+import { type IInlineSynthesisDTO, schemaInlineSynthesis } from '../../backend/types';
import { useInlineSynthesis } from '../../backend/useInlineSynthesis';
-import { IRSForm } from '../../models/rsform';
+import { type IRSForm } from '../../models/rsform';
import { TabConstituents } from './TabConstituents';
import { TabSource } from './TabSource';
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgInlineSynthesis/TabConstituents.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgInlineSynthesis/TabConstituents.tsx
index 7a5d1aee..fcf26da1 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgInlineSynthesis/TabConstituents.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgInlineSynthesis/TabConstituents.tsx
@@ -2,7 +2,7 @@
import { Controller, useFormContext, useWatch } from 'react-hook-form';
-import { IInlineSynthesisDTO } from '../../backend/types';
+import { type IInlineSynthesisDTO } from '../../backend/types';
import { useRSFormSuspense } from '../../backend/useRSForm';
import { PickMultiConstituenta } from '../../components/PickMultiConstituenta';
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgInlineSynthesis/TabSource.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgInlineSynthesis/TabSource.tsx
index 5b9fea32..5da218cd 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgInlineSynthesis/TabSource.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgInlineSynthesis/TabSource.tsx
@@ -7,10 +7,10 @@ import { LibraryItemType, PickSchema, useLibrary } from '@/features/library';
import { TextInput } from '@/components/Input';
import { useDialogsStore } from '@/stores/dialogs';
-import { IInlineSynthesisDTO } from '../../backend/types';
+import { type IInlineSynthesisDTO } from '../../backend/types';
import { sortItemsForInlineSynthesis } from '../../models/rsformAPI';
-import { DlgInlineSynthesisProps } from './DlgInlineSynthesis';
+import { type DlgInlineSynthesisProps } from './DlgInlineSynthesis';
export function TabSource() {
const { items: libraryItems } = useLibrary();
@@ -47,7 +47,7 @@ export function TabSource() {
id='dlg_selected_schema_title'
disabled
noBorder
- className='flex-grow'
+ className='grow'
placeholder='Схема не выбрана'
value={selectedInfo?.title ?? ''}
dense
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgInlineSynthesis/TabSubstitutions.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgInlineSynthesis/TabSubstitutions.tsx
index c4683835..17914877 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgInlineSynthesis/TabSubstitutions.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgInlineSynthesis/TabSubstitutions.tsx
@@ -4,11 +4,11 @@ import { Controller, useFormContext, useWatch } from 'react-hook-form';
import { useDialogsStore } from '@/stores/dialogs';
-import { IInlineSynthesisDTO } from '../../backend/types';
+import { type IInlineSynthesisDTO } from '../../backend/types';
import { useRSFormSuspense } from '../../backend/useRSForm';
import { PickSubstitutions } from '../../components/PickSubstitutions';
-import { DlgInlineSynthesisProps } from './DlgInlineSynthesis';
+import { type DlgInlineSynthesisProps } from './DlgInlineSynthesis';
export function TabSubstitutions() {
const { receiver } = useDialogsStore(state => state.props as DlgInlineSynthesisProps);
@@ -30,7 +30,7 @@ export function TabSubstitutions() {
allowSelfSubstitution={selfSubstitution}
rows={10}
schemas={selfSubstitution ? [source] : [source, receiver]}
- filterCst={selected.length === 0 ? undefined : cst => selected.includes(cst.id)}
+ filterCst={selected.length === 0 ? undefined : cst => cst.schema !== source.id || selected.includes(cst.id)}
/>
)}
/>
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgRenameCst.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgRenameCst.tsx
index f57decae..a6c79cbb 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgRenameCst.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgRenameCst.tsx
@@ -10,10 +10,10 @@ import { TextInput } from '@/components/Input';
import { ModalForm } from '@/components/Modal';
import { useDialogsStore } from '@/stores/dialogs';
-import { CstType, ICstRenameDTO, schemaCstRename } from '../backend/types';
+import { CstType, type ICstRenameDTO, schemaCstRename } from '../backend/types';
import { useCstRename } from '../backend/useCstRename';
import { SelectCstType } from '../components/SelectCstType';
-import { IConstituenta, IRSForm } from '../models/rsform';
+import { type IConstituenta, type IRSForm } from '../models/rsform';
import { generateAlias, validateNewAlias } from '../models/rsformAPI';
export interface DlgRenameCstProps {
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/ASTFlow.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/ASTFlow.tsx
index 7987d593..d6d2c531 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/ASTFlow.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/ASTFlow.tsx
@@ -1,9 +1,9 @@
'use client';
import { useEffect } from 'react';
-import { Edge, MarkerType, Node, ReactFlow, useEdgesState, useNodesState } from 'reactflow';
+import { type Edge, MarkerType, type Node, ReactFlow, useEdgesState, useNodesState } from 'reactflow';
-import { SyntaxTree } from '../../models/rslang';
+import { type SyntaxTree } from '../../models/rslang';
import { ASTEdgeTypes } from './graph/ASTEdgeTypes';
import { applyLayout } from './graph/ASTLayout';
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/DlgShowAST.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/DlgShowAST.tsx
index 79dae100..40499e85 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/DlgShowAST.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/DlgShowAST.tsx
@@ -9,7 +9,7 @@ import { Overlay } from '@/components/Container';
import { ModalView } from '@/components/Modal';
import { useDialogsStore } from '@/stores/dialogs';
-import { SyntaxTree } from '../../models/rslang';
+import { type SyntaxTree } from '../../models/rslang';
import { ASTFlow } from './ASTFlow';
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/graph/ASTEdgeTypes.ts b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/graph/ASTEdgeTypes.ts
index 892cd80f..246b8a18 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/graph/ASTEdgeTypes.ts
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/graph/ASTEdgeTypes.ts
@@ -1,4 +1,4 @@
-import { EdgeTypes } from 'reactflow';
+import { type EdgeTypes } from 'reactflow';
import { DynamicEdge } from '@/components/Flow/DynamicEdge';
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/graph/ASTLayout.ts b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/graph/ASTLayout.ts
index 55f8814a..a5b056a6 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/graph/ASTLayout.ts
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/graph/ASTLayout.ts
@@ -1,9 +1,9 @@
-import { Edge, Node } from 'reactflow';
+import { type Edge, type Node } from 'reactflow';
import dagre from '@dagrejs/dagre';
import { PARAMETER } from '@/utils/constants';
-import { ISyntaxTreeNode } from '../../../models/rslang';
+import { type ISyntaxTreeNode } from '../../../models/rslang';
export function applyLayout(nodes: Node[], edges: Edge[]) {
const dagreGraph = new dagre.graphlib.Graph().setDefaultEdgeLabel(() => ({}));
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/graph/ASTNode.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/graph/ASTNode.tsx
index d7b0428b..a0ed941d 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/graph/ASTNode.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/graph/ASTNode.tsx
@@ -6,7 +6,7 @@ import { APP_COLORS } from '@/styling/colors';
import { colorBgSyntaxTree } from '../../../colors';
import { labelSyntaxTree } from '../../../labels';
-import { ISyntaxTreeNode } from '../../../models/rslang';
+import { type ISyntaxTreeNode } from '../../../models/rslang';
const FONT_SIZE_MAX = 14;
const FONT_SIZE_MED = 12;
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/graph/ASTNodeTypes.ts b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/graph/ASTNodeTypes.ts
index 0cc4ff91..a3d1a826 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/graph/ASTNodeTypes.ts
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowAST/graph/ASTNodeTypes.ts
@@ -1,4 +1,4 @@
-import { NodeTypes } from 'reactflow';
+import { type NodeTypes } from 'reactflow';
import { ASTNode } from './ASTNode';
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/DlgShowTypeGraph.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/DlgShowTypeGraph.tsx
index a2d0ce7e..51d40f76 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/DlgShowTypeGraph.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/DlgShowTypeGraph.tsx
@@ -9,7 +9,7 @@ import { ModalView } from '@/components/Modal';
import { useDialogsStore } from '@/stores/dialogs';
import { errorMsg } from '@/utils/labels';
-import { ITypeInfo } from '../../models/rslang';
+import { type ITypeInfo } from '../../models/rslang';
import { TMGraph } from '../../models/TMGraph';
import { MGraphFlow } from './MGraphFlow';
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/MGraphFlow.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/MGraphFlow.tsx
index bbf33161..f95cf204 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/MGraphFlow.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/MGraphFlow.tsx
@@ -1,7 +1,7 @@
'use client';
import { useEffect } from 'react';
-import { Edge, ReactFlow, useEdgesState, useNodesState } from 'reactflow';
+import { type Edge, ReactFlow, useEdgesState, useNodesState } from 'reactflow';
import { TMGraph } from '../../models/TMGraph';
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/BooleanEdge.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/BooleanEdge.tsx
index a46645e4..9ef83c76 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/BooleanEdge.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/BooleanEdge.tsx
@@ -1,6 +1,6 @@
import { StraightEdge } from 'reactflow';
-import { MGraphEdgeProps } from './CartesianEdge';
+import { type MGraphEdgeProps } from './CartesianEdge';
export function BooleanEdge(props: MGraphEdgeProps) {
return (
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/CartesianEdge.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/CartesianEdge.tsx
index 3509cfde..a48bbb1d 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/CartesianEdge.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/CartesianEdge.tsx
@@ -1,4 +1,4 @@
-import { EdgeProps, SimpleBezierEdge } from 'reactflow';
+import { type EdgeProps, SimpleBezierEdge } from 'reactflow';
import { APP_COLORS } from '@/styling/colors';
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/MGraphEdgeTypes.ts b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/MGraphEdgeTypes.ts
index c86646d7..1f1ac744 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/MGraphEdgeTypes.ts
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/MGraphEdgeTypes.ts
@@ -1,4 +1,4 @@
-import { EdgeTypes } from 'reactflow';
+import { type EdgeTypes } from 'reactflow';
import { BooleanEdge } from './BooleanEdge';
import { CartesianEdge } from './CartesianEdge';
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/MGraphLayout.ts b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/MGraphLayout.ts
index 03d48d14..29737528 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/MGraphLayout.ts
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/MGraphLayout.ts
@@ -1,7 +1,7 @@
-import { Edge, Node } from 'reactflow';
+import { type Edge, type Node } from 'reactflow';
import dagre from '@dagrejs/dagre';
-import { TMGraphNode } from '../../../models/TMGraph';
+import { type TMGraphNode } from '../../../models/TMGraph';
const NODE_WIDTH = 44;
const NODE_HEIGHT = 44;
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/MGraphNode.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/MGraphNode.tsx
index c3492c29..7b1191cf 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/MGraphNode.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/MGraphNode.tsx
@@ -6,7 +6,7 @@ import { APP_COLORS } from '@/styling/colors';
import { globalIDs } from '@/utils/constants';
import { colorBgTMGraphNode } from '../../../colors';
-import { TMGraphNode } from '../../../models/TMGraph';
+import { type TMGraphNode } from '../../../models/TMGraph';
/**
* Represents graph TMGraph node internal data.
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/MGraphNodeTypes.ts b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/MGraphNodeTypes.ts
index d9dfc2c2..e260ee05 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/MGraphNodeTypes.ts
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgShowTypeGraph/graph/MGraphNodeTypes.ts
@@ -1,4 +1,4 @@
-import { NodeTypes } from 'reactflow';
+import { type NodeTypes } from 'reactflow';
import { MGraphNode } from './MGraphNode';
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/DlgSubstituteCst.tsx b/rsconcept/frontend/src/features/rsform/dialogs/DlgSubstituteCst.tsx
index 6c8af194..f9003b79 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/DlgSubstituteCst.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/DlgSubstituteCst.tsx
@@ -10,10 +10,10 @@ import { ErrorField } from '@/components/Input';
import { ModalForm } from '@/components/Modal';
import { useDialogsStore } from '@/stores/dialogs';
-import { ICstSubstitutionsDTO, schemaCstSubstitutions } from '../backend/types';
+import { type ICstSubstitutionsDTO, schemaCstSubstitutions } from '../backend/types';
import { useCstSubstitute } from '../backend/useCstSubstitute';
import { PickSubstitutions } from '../components/PickSubstitutions';
-import { IRSForm } from '../models/rsform';
+import { type IRSForm } from '../models/rsform';
export interface DlgSubstituteCstProps {
schema: IRSForm;
diff --git a/rsconcept/frontend/src/features/rsform/labels.ts b/rsconcept/frontend/src/features/rsform/labels.ts
index 236e5df2..516572ca 100644
--- a/rsconcept/frontend/src/features/rsform/labels.ts
+++ b/rsconcept/frontend/src/features/rsform/labels.ts
@@ -5,15 +5,15 @@
import { PARAMETER } from '@/utils/constants';
import { prepareTooltip } from '@/utils/utils';
-import { IVersionInfo } from '../library';
-import { CurrentVersion } from '../library/models/library';
+import { type IVersionInfo } from '../library';
+import { type CurrentVersion } from '../library/models/library';
-import { CstType, IRSErrorDescription, ParsingStatus, RSErrorType, TokenID } from './backend/types';
-import { GramData, Grammeme, ReferenceType } from './models/language';
-import { CstClass, ExpressionStatus, IConstituenta } from './models/rsform';
-import { IArgumentInfo, ISyntaxTreeNode } from './models/rslang';
+import { CstType, type IRSErrorDescription, ParsingStatus, RSErrorType, TokenID } from './backend/types';
+import { type GramData, Grammeme, ReferenceType } from './models/language';
+import { CstClass, ExpressionStatus, type IConstituenta } from './models/rsform';
+import { type IArgumentInfo, type ISyntaxTreeNode } from './models/rslang';
import { CstMatchMode, DependencyMode } from './stores/cstSearch';
-import { GraphColoring } from './stores/termGraph';
+import { type GraphColoring } from './stores/termGraph';
/**
* Generates description for {@link IConstituenta}.
diff --git a/rsconcept/frontend/src/features/rsform/models/TMGraph.ts b/rsconcept/frontend/src/features/rsform/models/TMGraph.ts
index 6e597f09..12a380c1 100644
--- a/rsconcept/frontend/src/features/rsform/models/TMGraph.ts
+++ b/rsconcept/frontend/src/features/rsform/models/TMGraph.ts
@@ -4,7 +4,7 @@
import { PARAMETER } from '@/utils/constants';
-import { IArgumentInfo } from './rslang';
+import { type IArgumentInfo } from './rslang';
/**
* Represents a single node of a {@link TMGraph}.
diff --git a/rsconcept/frontend/src/features/rsform/models/languageAPI.ts b/rsconcept/frontend/src/features/rsform/models/languageAPI.ts
index aaea3b53..3ac7a9db 100644
--- a/rsconcept/frontend/src/features/rsform/models/languageAPI.ts
+++ b/rsconcept/frontend/src/features/rsform/models/languageAPI.ts
@@ -5,14 +5,14 @@
import { labelGrammeme } from '../labels';
import {
- GramData,
+ type GramData,
Grammeme,
GrammemeGroups,
- IEntityReference,
- IGrammemeOption,
- IReference,
- ISyntacticReference,
- IWordForm,
+ type IEntityReference,
+ type IGrammemeOption,
+ type IReference,
+ type ISyntacticReference,
+ type IWordForm,
NounGrams,
ReferenceType,
supportedGrammemes,
diff --git a/rsconcept/frontend/src/features/rsform/models/rsform.ts b/rsconcept/frontend/src/features/rsform/models/rsform.ts
index 7760a240..0398a565 100644
--- a/rsconcept/frontend/src/features/rsform/models/rsform.ts
+++ b/rsconcept/frontend/src/features/rsform/models/rsform.ts
@@ -2,14 +2,14 @@
* Module: Models for formal representation for systems of concepts.
*/
-import { ILibraryItemData, IVersionInfo } from '@/features/library/backend/types';
-import { CurrentVersion, ILibraryItemReference } from '@/features/library/models/library';
+import { type ILibraryItemData, type IVersionInfo } from '@/features/library/backend/types';
+import { type CurrentVersion, type ILibraryItemReference } from '@/features/library/models/library';
import { Graph } from '@/models/Graph';
import { CstType, ParsingStatus, ValueClass } from '../backend/types';
-import { IArgumentInfo } from './rslang';
+import { type IArgumentInfo } from './rslang';
// CstType constant for category dividers in TemplateSchemas
export const CATEGORY_CST_TYPE = CstType.THEOREM;
diff --git a/rsconcept/frontend/src/features/rsform/models/rsformAPI.ts b/rsconcept/frontend/src/features/rsform/models/rsformAPI.ts
index fdf8e1ce..8909bdea 100644
--- a/rsconcept/frontend/src/features/rsform/models/rsformAPI.ts
+++ b/rsconcept/frontend/src/features/rsform/models/rsformAPI.ts
@@ -2,7 +2,7 @@
* Module: API for formal representation for systems of concepts.
*/
-import { ILibraryItem } from '@/features/library/backend/types';
+import { type ILibraryItem } from '@/features/library/backend/types';
import { BASIC_SCHEMAS } from '@/features/library/models/library';
import { TextMatcher } from '@/utils/utils';
@@ -10,7 +10,7 @@ import { TextMatcher } from '@/utils/utils';
import { CstType, ParsingStatus, ValueClass } from '../backend/types';
import { CstMatchMode } from '../stores/cstSearch';
-import { CATEGORY_CST_TYPE, CstClass, ExpressionStatus, IConstituenta, IRSForm } from './rsform';
+import { CATEGORY_CST_TYPE, CstClass, ExpressionStatus, type IConstituenta, type IRSForm } from './rsform';
/**
* Checks if a given target {@link IConstituenta} matches the specified query using the provided matching mode.
diff --git a/rsconcept/frontend/src/features/rsform/models/rslangAPI.ts b/rsconcept/frontend/src/features/rsform/models/rslangAPI.ts
index 77c066e8..f962c112 100644
--- a/rsconcept/frontend/src/features/rsform/models/rslangAPI.ts
+++ b/rsconcept/frontend/src/features/rsform/models/rslangAPI.ts
@@ -7,9 +7,9 @@ import { Tree } from '@lezer/common';
import { cursorNode } from '@/utils/codemirror';
import { PARAMETER } from '@/utils/constants';
-import { CstType, IRSErrorDescription, RSErrorType } from '../backend/types';
+import { CstType, type IRSErrorDescription, RSErrorType } from '../backend/types';
-import { AliasMapping, IArgumentValue, RSErrorClass, SyntaxTree } from './rslang';
+import { type AliasMapping, type IArgumentValue, RSErrorClass, type SyntaxTree } from './rslang';
// cspell:disable
const LOCALS_REGEXP = /[_a-zα-ω][a-zα-ω]*\d*/g;
diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorConstituenta/EditorControls.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorConstituenta/EditorControls.tsx
index 9ea9a540..ff193de3 100644
--- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorConstituenta/EditorControls.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorConstituenta/EditorControls.tsx
@@ -8,7 +8,7 @@ import { useModificationStore } from '@/stores/modification';
import { tooltipText } from '@/utils/labels';
import { useMutatingRSForm } from '../../../backend/useMutatingRSForm';
-import { IConstituenta } from '../../../models/rsform';
+import { type IConstituenta } from '../../../models/rsform';
import { useRSEdit } from '../RSEditContext';
interface EditorControlsProps {
diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorConstituenta/FormConstituenta.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorConstituenta/FormConstituenta.tsx
index 1b947a7f..19d316ae 100644
--- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorConstituenta/FormConstituenta.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorConstituenta/FormConstituenta.tsx
@@ -10,18 +10,24 @@ import { Overlay } from '@/components/Container';
import { SubmitButton } from '@/components/Control';
import { IconChild, IconPredecessor, IconSave } from '@/components/Icons';
import { TextArea } from '@/components/Input';
-import { CProps } from '@/components/props';
+import { type EventMouse } from '@/components/props';
import { Indicator } from '@/components/View';
import { useDialogsStore } from '@/stores/dialogs';
import { useModificationStore } from '@/stores/modification';
import { errorMsg } from '@/utils/labels';
-import { CstType, ICstUpdateDTO, IExpressionParseDTO, ParsingStatus, schemaCstUpdate } from '../../../backend/types';
+import {
+ CstType,
+ type ICstUpdateDTO,
+ type IExpressionParseDTO,
+ ParsingStatus,
+ schemaCstUpdate
+} from '../../../backend/types';
import { useCstUpdate } from '../../../backend/useCstUpdate';
import { useMutatingRSForm } from '../../../backend/useMutatingRSForm';
import { RefsInput } from '../../../components/RefsInput';
import { labelCstTypification, labelTypification } from '../../../labels';
-import { IConstituenta, IRSForm } from '../../../models/rsform';
+import { type IConstituenta, type IRSForm } from '../../../models/rsform';
import { isBaseSet, isBasicConcept, isFunctional } from '../../../models/rsformAPI';
import { EditorRSExpression } from '../EditorRSExpression';
@@ -100,7 +106,7 @@ export function FormConstituenta({ disabled, id, toggleReset, schema, activeCst,
return cstUpdate({ itemID: schema.id, data }).then(() => reset({ ...data }));
}
- function handleTypeGraph(event: CProps.EventMouse) {
+ function handleTypeGraph(event: EventMouse) {
if ((localParse && !localParse.parseResult) || activeCst.parse.status !== ParsingStatus.VERIFIED) {
toast.error(errorMsg.typeStructureFailed);
return;
diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorConstituenta/ToolbarConstituenta.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorConstituenta/ToolbarConstituenta.tsx
index a69c478e..8537c2c8 100644
--- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorConstituenta/ToolbarConstituenta.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorConstituenta/ToolbarConstituenta.tsx
@@ -28,7 +28,7 @@ import { tooltipText } from '@/utils/labels';
import { prepareTooltip } from '@/utils/utils';
import { useMutatingRSForm } from '../../../backend/useMutatingRSForm';
-import { IConstituenta } from '../../../models/rsform';
+import { type IConstituenta } from '../../../models/rsform';
import { RSTabID, useRSEdit } from '../RSEditContext';
interface ToolbarConstituentaProps {
@@ -80,8 +80,8 @@ export function ToolbarConstituenta({
return (
{schema.oss.length > 0 ? (
void;
onOpenEdit: (cstID: number) => void;
- onShowTypeGraph: (event: CProps.EventMouse) => void;
+ onShowTypeGraph: (event: EventMouse) => void;
}
export function EditorRSExpression({
@@ -136,7 +141,7 @@ export function EditorRSExpression({
setIsModified(true);
}
- function handleShowAST(event: CProps.EventMouse) {
+ function handleShowAST(event: EventMouse) {
if (event.ctrlKey) {
const tree = rslangParser.parse(value);
const ast = transformAST(tree);
diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSExpression/ParsingResult.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSExpression/ParsingResult.tsx
index 8da84640..e324667f 100644
--- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSExpression/ParsingResult.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSExpression/ParsingResult.tsx
@@ -1,4 +1,4 @@
-import { IExpressionParseDTO, IRSErrorDescription } from '../../../backend/types';
+import { type IExpressionParseDTO, type IRSErrorDescription } from '../../../backend/types';
import { describeRSError } from '../../../labels';
import { getRSErrorPrefix } from '../../../models/rslangAPI';
diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSExpression/RSLocalButton.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSExpression/RSLocalButton.tsx
index 2b1f3ae0..6c6738c2 100644
--- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSExpression/RSLocalButton.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSExpression/RSLocalButton.tsx
@@ -1,11 +1,11 @@
import clsx from 'clsx';
-import { CProps } from '@/components/props';
+import { type Styling, type Titled } from '@/components/props';
import { globalIDs } from '@/utils/constants';
import { TokenID } from '../../../backend/types';
-interface RSLocalButtonProps extends CProps.Titled, CProps.Styling {
+interface RSLocalButtonProps extends Titled, Styling {
text: string;
disabled?: boolean;
onInsert: (token: TokenID, key?: string) => void;
diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSExpression/RSTokenButton.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSExpression/RSTokenButton.tsx
index f2bfa6d6..01ecaccf 100644
--- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSExpression/RSTokenButton.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSExpression/RSTokenButton.tsx
@@ -22,7 +22,7 @@ export function RSTokenButton({ token, disabled, onInsert }: RSTokenButtonProps)
className={clsx(
'h-5 sm:h-6',
'px-1',
- 'outline-none',
+ 'outline-hidden',
'clr-hover clr-text-controls cc-animate-color',
'font-math',
'cursor-pointer disabled:cursor-default',
diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSExpression/StatusBar.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSExpression/StatusBar.tsx
index 52973364..4e579a5d 100644
--- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSExpression/StatusBar.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSExpression/StatusBar.tsx
@@ -8,10 +8,10 @@ import { APP_COLORS } from '@/styling/colors';
import { globalIDs } from '@/utils/constants';
import { prepareTooltip } from '@/utils/utils';
-import { IExpressionParseDTO, ParsingStatus } from '../../../backend/types';
+import { type IExpressionParseDTO, ParsingStatus } from '../../../backend/types';
import { colorStatusBar } from '../../../colors';
import { labelExpressionStatus } from '../../../labels';
-import { ExpressionStatus, IConstituenta } from '../../../models/rsform';
+import { ExpressionStatus, type IConstituenta } from '../../../models/rsform';
import { inferStatus } from '../../../models/rsformAPI';
interface StatusBarProps {
diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSExpression/ToolbarRSExpression.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSExpression/ToolbarRSExpression.tsx
index 94ff6aed..d01ee280 100644
--- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSExpression/ToolbarRSExpression.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSExpression/ToolbarRSExpression.tsx
@@ -1,15 +1,15 @@
import { Overlay } from '@/components/Container';
import { MiniButton } from '@/components/Control';
import { IconControls, IconTree, IconTypeGraph } from '@/components/Icons';
-import { CProps } from '@/components/props';
+import { type EventMouse } from '@/components/props';
import { usePreferencesStore } from '@/stores/preferences';
import { useMutatingRSForm } from '../../../backend/useMutatingRSForm';
interface ToolbarRSExpressionProps {
disabled?: boolean;
- showAST: (event: CProps.EventMouse) => void;
- showTypeGraph: (event: CProps.EventMouse) => void;
+ showAST: (event: EventMouse) => void;
+ showTypeGraph: (event: EventMouse) => void;
}
export function ToolbarRSExpression({ disabled, showTypeGraph, showAST }: ToolbarRSExpressionProps) {
diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/EditorRSFormCard.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/EditorRSFormCard.tsx
index 62b65428..74501234 100644
--- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/EditorRSFormCard.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/EditorRSFormCard.tsx
@@ -45,7 +45,7 @@ export function EditorRSFormCard() {
'flex flex-row flex-wrap px-6 pt-[1.9rem]'
)}
>
-
+
diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/FormRSForm.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/FormRSForm.tsx
index 55d145cb..04e4c6b0 100644
--- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/FormRSForm.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/FormRSForm.tsx
@@ -8,8 +8,8 @@ import clsx from 'clsx';
import { urls, useConceptNavigation } from '@/app';
import { LibraryItemType, SelectVersion, ToolbarItemAccess, useUpdateItem } from '@/features/library';
-import { IUpdateLibraryItemDTO, schemaUpdateLibraryItem } from '@/features/library/backend/types';
-import { CurrentVersion } from '@/features/library/models/library';
+import { type IUpdateLibraryItemDTO, schemaUpdateLibraryItem } from '@/features/library/backend/types';
+import { type CurrentVersion } from '@/features/library/models/library';
import { SubmitButton } from '@/components/Control';
import { IconSave } from '@/components/Icons';
diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/RSFormStats.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/RSFormStats.tsx
index 3736a235..745a6635 100644
--- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/RSFormStats.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSFormCard/RSFormStats.tsx
@@ -21,7 +21,7 @@ import {
} from '@/components/Icons';
import { ValueStats } from '@/components/View';
-import { IRSFormStats } from '../../../models/rsform';
+import { type IRSFormStats } from '../../../models/rsform';
interface RSFormStatsProps {
isArchive: boolean;
diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSList/TableRSList.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSList/TableRSList.tsx
index 4239b3a5..72fe36e5 100644
--- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSList/TableRSList.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSList/TableRSList.tsx
@@ -4,8 +4,8 @@ import { useLayoutEffect, useState } from 'react';
import clsx from 'clsx';
import { TextURL } from '@/components/Control';
-import { createColumnHelper, DataTable, RowSelectionState, VisibilityState } from '@/components/DataTable';
-import { CProps } from '@/components/props';
+import { createColumnHelper, DataTable, type RowSelectionState, type VisibilityState } from '@/components/DataTable';
+import { type EventMouse } from '@/components/props';
import { NoData, TextContent } from '@/components/View';
import { useWindowSize } from '@/hooks/useWindowSize';
import { PARAMETER, prefixes } from '@/utils/constants';
@@ -13,7 +13,7 @@ import { truncateToSymbol } from '@/utils/utils';
import { BadgeConstituenta } from '../../../components/BadgeConstituenta';
import { labelCstTypification } from '../../../labels';
-import { IConstituenta } from '../../../models/rsform';
+import { type IConstituenta } from '../../../models/rsform';
interface TableRSListProps {
items?: IConstituenta[];
@@ -57,14 +57,14 @@ export function TableRSList({
});
}, [windowSize]);
- function handleRowClicked(cst: IConstituenta, event: CProps.EventMouse) {
+ function handleRowClicked(cst: IConstituenta, event: EventMouse) {
if (event.altKey) {
event.preventDefault();
onEdit(cst.id);
}
}
- function handleRowDoubleClicked(cst: IConstituenta, event: CProps.EventMouse) {
+ function handleRowDoubleClicked(cst: IConstituenta, event: EventMouse) {
event.preventDefault();
onEdit(cst.id);
}
diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSList/ToolbarRSList.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSList/ToolbarRSList.tsx
index def5d3d7..7a229771 100644
--- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSList/ToolbarRSList.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorRSList/ToolbarRSList.tsx
@@ -4,7 +4,7 @@ import { CstType } from '@/features/rsform';
import { Overlay } from '@/components/Container';
import { MiniButton } from '@/components/Control';
-import { DomIconProps } from '@/components/DomainIcons';
+import { type DomIconProps } from '@/components/DomainIcons';
import { Dropdown, DropdownButton, useDropdown } from '@/components/Dropdown';
import {
IconClone,
@@ -49,8 +49,8 @@ export function ToolbarRSList() {
return (
{schema.oss.length > 0 ? (
= PARAMETER.graphHoverXLimit ||
@@ -390,7 +390,7 @@ export function TGFlow() {
-
+
state.setActiveCst);
const hiddenHeight = useFitHeight(windowSize.isSmall ? '10.4rem + 2px' : '12.5rem + 2px');
- function handleClick(cstID: number, event: CProps.EventMouse) {
+ function handleClick(cstID: number, event: EventMouse) {
if (event.ctrlKey || event.metaKey) {
setFocus(cstID);
} else {
diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorTermGraph/graph/TGEdgeTypes.ts b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorTermGraph/graph/TGEdgeTypes.ts
index 53dda5f1..8dcf8d36 100644
--- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorTermGraph/graph/TGEdgeTypes.ts
+++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorTermGraph/graph/TGEdgeTypes.ts
@@ -1,4 +1,4 @@
-import { EdgeTypes } from 'reactflow';
+import { type EdgeTypes } from 'reactflow';
import { DynamicEdge } from '@/components/Flow/DynamicEdge';
diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorTermGraph/graph/TGLayout.ts b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorTermGraph/graph/TGLayout.ts
index 5aad616f..0e7863ba 100644
--- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorTermGraph/graph/TGLayout.ts
+++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorTermGraph/graph/TGLayout.ts
@@ -1,9 +1,9 @@
-import { Edge, Node } from 'reactflow';
+import { type Edge, type Node } from 'reactflow';
import dagre from '@dagrejs/dagre';
import { PARAMETER } from '@/utils/constants';
-import { TGNodeData } from './TGNode';
+import { type TGNodeData } from './TGNode';
export function applyLayout(nodes: Node[], edges: Edge[], subLabels?: boolean) {
const dagreGraph = new dagre.graphlib.Graph().setDefaultEdgeLabel(() => ({}));
diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorTermGraph/graph/TGNodeTypes.ts b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorTermGraph/graph/TGNodeTypes.ts
index 28b19a17..213e1286 100644
--- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorTermGraph/graph/TGNodeTypes.ts
+++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/EditorTermGraph/graph/TGNodeTypes.ts
@@ -1,4 +1,4 @@
-import { NodeTypes } from 'reactflow';
+import { type NodeTypes } from 'reactflow';
import { TGNode } from './TGNode';
diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/MenuRSTabs.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/MenuRSTabs.tsx
index ccfefa7a..a5eda8ed 100644
--- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/MenuRSTabs.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/MenuRSTabs.tsx
@@ -222,7 +222,7 @@ export function MenuRSTabs() {
}
return (
-
+
diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/ViewConstituents/SelectGraphFilter.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/ViewConstituents/SelectGraphFilter.tsx
index 455e3248..24adf41c 100644
--- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/ViewConstituents/SelectGraphFilter.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/ViewConstituents/SelectGraphFilter.tsx
@@ -3,14 +3,14 @@
import { SelectorButton } from '@/components/Control';
import { DependencyIcon } from '@/components/DomainIcons';
import { Dropdown, DropdownButton, useDropdown } from '@/components/Dropdown';
-import { CProps } from '@/components/props';
+import { type Styling } from '@/components/props';
import { useWindowSize } from '@/hooks/useWindowSize';
import { prefixes } from '@/utils/constants';
import { describeCstSource, labelCstSource } from '../../../labels';
import { DependencyMode } from '../../../stores/cstSearch';
-interface SelectGraphFilterProps extends CProps.Styling {
+interface SelectGraphFilterProps extends Styling {
value: DependencyMode;
onChange: (value: DependencyMode) => void;
dense?: boolean;
diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/ViewConstituents/SelectMatchMode.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/ViewConstituents/SelectMatchMode.tsx
index c35a4311..cf58e340 100644
--- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/ViewConstituents/SelectMatchMode.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/ViewConstituents/SelectMatchMode.tsx
@@ -3,14 +3,14 @@
import { SelectorButton } from '@/components/Control';
import { MatchModeIcon } from '@/components/DomainIcons';
import { Dropdown, DropdownButton, useDropdown } from '@/components/Dropdown';
-import { CProps } from '@/components/props';
+import { type Styling } from '@/components/props';
import { useWindowSize } from '@/hooks/useWindowSize';
import { prefixes } from '@/utils/constants';
import { describeCstMatchMode, labelCstMatchMode } from '../../../labels';
import { CstMatchMode } from '../../../stores/cstSearch';
-interface SelectMatchModeProps extends CProps.Styling {
+interface SelectMatchModeProps extends Styling {
value: CstMatchMode;
onChange: (value: CstMatchMode) => void;
dense?: boolean;
diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/ViewConstituents/TableSideConstituents.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/ViewConstituents/TableSideConstituents.tsx
index b4718a61..61323002 100644
--- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/ViewConstituents/TableSideConstituents.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/ViewConstituents/TableSideConstituents.tsx
@@ -2,14 +2,14 @@
import { useEffect } from 'react';
-import { createColumnHelper, DataTable, IConditionalStyle } from '@/components/DataTable';
+import { createColumnHelper, DataTable, type IConditionalStyle } from '@/components/DataTable';
import { NoData, TextContent } from '@/components/View';
import { APP_COLORS } from '@/styling/colors';
import { PARAMETER, prefixes } from '@/utils/constants';
import { BadgeConstituenta } from '../../../components/BadgeConstituenta';
import { describeConstituenta } from '../../../labels';
-import { IConstituenta } from '../../../models/rsform';
+import { type IConstituenta } from '../../../models/rsform';
const DESCRIPTION_MAX_SYMBOLS = 280;
diff --git a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/ViewConstituents/ViewConstituents.tsx b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/ViewConstituents/ViewConstituents.tsx
index cf93ce65..5df5db50 100644
--- a/rsconcept/frontend/src/features/rsform/pages/RSFormPage/ViewConstituents/ViewConstituents.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/RSFormPage/ViewConstituents/ViewConstituents.tsx
@@ -9,7 +9,7 @@ import { useWindowSize } from '@/hooks/useWindowSize';
import { useFitHeight } from '@/stores/appLayout';
import { PARAMETER } from '@/utils/constants';
-import { IConstituenta } from '../../../models/rsform';
+import { type IConstituenta } from '../../../models/rsform';
import { useRSEdit } from '../RSEditContext';
import { ConstituentsSearch } from './ConstituentsSearch';
diff --git a/rsconcept/frontend/src/features/users/backend/api.ts b/rsconcept/frontend/src/features/users/backend/api.ts
index 6f79a9c8..9eb28c23 100644
--- a/rsconcept/frontend/src/features/users/backend/api.ts
+++ b/rsconcept/frontend/src/features/users/backend/api.ts
@@ -4,9 +4,9 @@ import { axiosGet, axiosPatch, axiosPost } from '@/backend/apiTransport';
import { DELAYS, KEYS } from '@/backend/configuration';
import { infoMsg } from '@/utils/labels';
-import { IUserInfo, IUserProfile } from '../models/user';
+import { type IUserInfo, type IUserProfile } from '../models/user';
-import { IUpdateProfileDTO, IUserSignupDTO } from './types';
+import { type IUpdateProfileDTO, type IUserSignupDTO } from './types';
export const usersApi = {
baseKey: KEYS.users,
diff --git a/rsconcept/frontend/src/features/users/backend/useSignup.tsx b/rsconcept/frontend/src/features/users/backend/useSignup.tsx
index f090ecb4..4a73d64a 100644
--- a/rsconcept/frontend/src/features/users/backend/useSignup.tsx
+++ b/rsconcept/frontend/src/features/users/backend/useSignup.tsx
@@ -3,7 +3,7 @@ import { useMutation, useQueryClient } from '@tanstack/react-query';
import { KEYS } from '@/backend/configuration';
import { usersApi } from './api';
-import { IUserSignupDTO } from './types';
+import { type IUserSignupDTO } from './types';
export const useSignup = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/users/backend/useUpdateProfile.tsx b/rsconcept/frontend/src/features/users/backend/useUpdateProfile.tsx
index 2d3892b6..377bacd4 100644
--- a/rsconcept/frontend/src/features/users/backend/useUpdateProfile.tsx
+++ b/rsconcept/frontend/src/features/users/backend/useUpdateProfile.tsx
@@ -3,7 +3,7 @@ import { useMutation, useQueryClient } from '@tanstack/react-query';
import { KEYS } from '@/backend/configuration';
import { usersApi } from './api';
-import { IUpdateProfileDTO } from './types';
+import { type IUpdateProfileDTO } from './types';
export const useUpdateProfile = () => {
const client = useQueryClient();
diff --git a/rsconcept/frontend/src/features/users/components/InfoUsers.tsx b/rsconcept/frontend/src/features/users/components/InfoUsers.tsx
index f3b73c84..82bfd1ae 100644
--- a/rsconcept/frontend/src/features/users/components/InfoUsers.tsx
+++ b/rsconcept/frontend/src/features/users/components/InfoUsers.tsx
@@ -1,10 +1,10 @@
import clsx from 'clsx';
-import { CProps } from '@/components/props';
+import { type Styling } from '@/components/props';
import { useLabelUser } from '../backend/useLabelUser';
-interface InfoUsersProps extends CProps.Styling {
+interface InfoUsersProps extends Styling {
items: number[];
prefix: string;
header?: string;
diff --git a/rsconcept/frontend/src/features/users/components/SelectUser.tsx b/rsconcept/frontend/src/features/users/components/SelectUser.tsx
index a5a7c981..6c2dd956 100644
--- a/rsconcept/frontend/src/features/users/components/SelectUser.tsx
+++ b/rsconcept/frontend/src/features/users/components/SelectUser.tsx
@@ -3,13 +3,13 @@
import clsx from 'clsx';
import { SelectSingle } from '@/components/Input';
-import { CProps } from '@/components/props';
+import { type Styling } from '@/components/props';
import { useLabelUser } from '../backend/useLabelUser';
import { useUsers } from '../backend/useUsers';
import { matchUser } from '../models/userAPI';
-interface SelectUserProps extends CProps.Styling {
+interface SelectUserProps extends Styling {
value: number | null;
onChange: (newValue: number) => void;
filter?: (userID: number) => boolean;
diff --git a/rsconcept/frontend/src/features/users/components/TableUsers.tsx b/rsconcept/frontend/src/features/users/components/TableUsers.tsx
index 293059f6..b70fb816 100644
--- a/rsconcept/frontend/src/features/users/components/TableUsers.tsx
+++ b/rsconcept/frontend/src/features/users/components/TableUsers.tsx
@@ -4,7 +4,7 @@ import { MiniButton } from '@/components/Control';
import { createColumnHelper, DataTable } from '@/components/DataTable';
import { IconRemove } from '@/components/Icons';
-import { IUserInfo } from '../models/user';
+import { type IUserInfo } from '../models/user';
interface TableUsersProps {
items: IUserInfo[];
diff --git a/rsconcept/frontend/src/features/users/models/userAPI.ts b/rsconcept/frontend/src/features/users/models/userAPI.ts
index f0c2aaba..9937e449 100644
--- a/rsconcept/frontend/src/features/users/models/userAPI.ts
+++ b/rsconcept/frontend/src/features/users/models/userAPI.ts
@@ -4,7 +4,7 @@
import { TextMatcher } from '@/utils/utils';
-import { IUserInfo } from './user';
+import { type IUserInfo } from './user';
/**
* Checks if a given target {@link IConstituenta} matches the specified query using the provided matching mode.
diff --git a/rsconcept/frontend/src/features/users/pages/RegisterPage/FormSignup.tsx b/rsconcept/frontend/src/features/users/pages/RegisterPage/FormSignup.tsx
index 17c33041..9f95731e 100644
--- a/rsconcept/frontend/src/features/users/pages/RegisterPage/FormSignup.tsx
+++ b/rsconcept/frontend/src/features/users/pages/RegisterPage/FormSignup.tsx
@@ -12,12 +12,12 @@ import { isAxiosError } from '@/backend/apiTransport';
import { FlexColumn, Overlay, Tooltip } from '@/components/Container';
import { Button, SubmitButton, TextURL } from '@/components/Control';
import { IconHelp } from '@/components/Icons';
-import { ErrorData } from '@/components/InfoError';
+import { type ErrorData } from '@/components/InfoError';
import { Checkbox, TextInput } from '@/components/Input';
import { PrettyJson } from '@/components/View';
import { globalIDs, patterns } from '@/utils/constants';
-import { IUserSignupDTO, schemaUserSignup } from '../../backend/types';
+import { type IUserSignupDTO, schemaUserSignup } from '../../backend/types';
import { useSignup } from '../../backend/useSignup';
export function FormSignup() {
diff --git a/rsconcept/frontend/src/features/users/pages/UserProfilePage/EditorPassword.tsx b/rsconcept/frontend/src/features/users/pages/UserProfilePage/EditorPassword.tsx
index 1aa2a0e6..c650761e 100644
--- a/rsconcept/frontend/src/features/users/pages/UserProfilePage/EditorPassword.tsx
+++ b/rsconcept/frontend/src/features/users/pages/UserProfilePage/EditorPassword.tsx
@@ -6,12 +6,12 @@ import clsx from 'clsx';
import { urls, useConceptNavigation } from '@/app';
import { useChangePassword } from '@/features/auth';
-import { IChangePasswordDTO, schemaChangePassword } from '@/features/auth/backend/types';
+import { type IChangePasswordDTO, schemaChangePassword } from '@/features/auth/backend/types';
import { isAxiosError } from '@/backend/apiTransport';
import { FlexColumn } from '@/components/Container';
import { SubmitButton } from '@/components/Control';
-import { ErrorData } from '@/components/InfoError';
+import { type ErrorData } from '@/components/InfoError';
import { TextInput } from '@/components/Input';
export function EditorPassword() {
diff --git a/rsconcept/frontend/src/features/users/pages/UserProfilePage/EditorProfile.tsx b/rsconcept/frontend/src/features/users/pages/UserProfilePage/EditorProfile.tsx
index a8cea4c2..d2c6154b 100644
--- a/rsconcept/frontend/src/features/users/pages/UserProfilePage/EditorProfile.tsx
+++ b/rsconcept/frontend/src/features/users/pages/UserProfilePage/EditorProfile.tsx
@@ -7,10 +7,10 @@ import { useBlockNavigation } from '@/app';
import { isAxiosError } from '@/backend/apiTransport';
import { SubmitButton } from '@/components/Control';
-import { ErrorData } from '@/components/InfoError';
+import { type ErrorData } from '@/components/InfoError';
import { TextInput } from '@/components/Input';
-import { IUpdateProfileDTO, schemaUpdateProfile } from '../../backend/types';
+import { type IUpdateProfileDTO, schemaUpdateProfile } from '../../backend/types';
import { useProfileSuspense } from '../../backend/useProfile';
import { useUpdateProfile } from '../../backend/useUpdateProfile';
diff --git a/rsconcept/frontend/src/index.css b/rsconcept/frontend/src/index.css
index e2ddba81..d6b8d266 100644
--- a/rsconcept/frontend/src/index.css
+++ b/rsconcept/frontend/src/index.css
@@ -1,3 +1,55 @@
+@import 'tailwindcss';
+
@import './styling/setup.css';
@import './styling/overrides.css';
@import './styling/styles.css';
+
+@custom-variant dark (&:is(.dark *));
+
+@theme {
+ --color-*: initial;
+ --color-transparent: transparent;
+ --color-current: currentColor;
+ --color-inherit: inherit;
+
+ --color-prim-0: var(--clr-prim-0);
+ --color-prim-100: var(--clr-prim-100);
+ --color-prim-200: var(--clr-prim-200);
+ --color-prim-300: var(--clr-prim-300);
+ --color-prim-400: var(--clr-prim-400);
+ --color-prim-600: var(--clr-prim-600);
+ --color-prim-800: var(--clr-prim-800);
+ --color-prim-999: var(--clr-prim-999);
+
+ --color-sec-0: var(--clr-sec-0);
+ --color-sec-100: var(--clr-sec-100);
+ --color-sec-200: var(--clr-sec-200);
+ --color-sec-300: var(--clr-sec-300);
+ --color-sec-400: var(--clr-sec-400);
+ --color-sec-600: var(--clr-sec-600);
+ --color-sec-800: var(--clr-sec-800);
+
+ --color-warn-100: var(--clr-warn-100);
+ --color-warn-600: var(--clr-warn-600);
+
+ --color-ok-600: var(--clr-ok-600);
+
+ --z-index-*: initial;
+ --z-index-bottom: 0;
+ --z-index-topmost: 99;
+ --z-index-pop: 10;
+ --z-index-sticky: 20;
+ --z-index-tooltip: 30;
+ --z-index-navigation: 50;
+ --z-index-modal: 60;
+ --z-index-modal-controls: 70;
+ --z-index-modal-tooltip: 90;
+
+ --breakpoint-*: initial;
+ --breakpoint-xs: 475px;
+ --breakpoint-sm: 640px;
+ --breakpoint-md: 768px;
+ --breakpoint-lg: 1024px;
+ --breakpoint-xl: 1280px;
+ --breakpoint-2xl: 1536px;
+}
diff --git a/rsconcept/frontend/src/stores/dialogs.ts b/rsconcept/frontend/src/stores/dialogs.ts
index efe37bbc..4d9ebacb 100644
--- a/rsconcept/frontend/src/stores/dialogs.ts
+++ b/rsconcept/frontend/src/stores/dialogs.ts
@@ -1,27 +1,27 @@
import { create } from 'zustand';
-import { DlgChangeLocationProps } from '@/features/library/dialogs/DlgChangeLocation';
-import { DlgCloneLibraryItemProps } from '@/features/library/dialogs/DlgCloneLibraryItem';
-import { DlgCreateVersionProps } from '@/features/library/dialogs/DlgCreateVersion';
-import { DlgEditEditorsProps } from '@/features/library/dialogs/DlgEditEditors/DlgEditEditors';
-import { DlgEditVersionsProps } from '@/features/library/dialogs/DlgEditVersions/DlgEditVersions';
-import { DlgChangeInputSchemaProps } from '@/features/oss/dialogs/DlgChangeInputSchema';
-import { DlgCreateOperationProps } from '@/features/oss/dialogs/DlgCreateOperation/DlgCreateOperation';
-import { DlgDeleteOperationProps } from '@/features/oss/dialogs/DlgDeleteOperation';
-import { DlgEditOperationProps } from '@/features/oss/dialogs/DlgEditOperation/DlgEditOperation';
-import { DlgRelocateConstituentsProps } from '@/features/oss/dialogs/DlgRelocateConstituents';
-import { DlgCreateCstProps } from '@/features/rsform/dialogs/DlgCreateCst/DlgCreateCst';
-import { DlgCstTemplateProps } from '@/features/rsform/dialogs/DlgCstTemplate/DlgCstTemplate';
-import { DlgDeleteCstProps } from '@/features/rsform/dialogs/DlgDeleteCst/DlgDeleteCst';
-import { DlgEditReferenceProps } from '@/features/rsform/dialogs/DlgEditReference/DlgEditReference';
-import { DlgEditWordFormsProps } from '@/features/rsform/dialogs/DlgEditWordForms/DlgEditWordForms';
-import { DlgInlineSynthesisProps } from '@/features/rsform/dialogs/DlgInlineSynthesis/DlgInlineSynthesis';
-import { DlgRenameCstProps } from '@/features/rsform/dialogs/DlgRenameCst';
-import { DlgShowASTProps } from '@/features/rsform/dialogs/DlgShowAST/DlgShowAST';
-import { DlgShowQRProps } from '@/features/rsform/dialogs/DlgShowQR';
-import { DlgShowTypeGraphProps } from '@/features/rsform/dialogs/DlgShowTypeGraph/DlgShowTypeGraph';
-import { DlgSubstituteCstProps } from '@/features/rsform/dialogs/DlgSubstituteCst';
-import { DlgUploadRSFormProps } from '@/features/rsform/dialogs/DlgUploadRSForm';
+import { type DlgChangeLocationProps } from '@/features/library/dialogs/DlgChangeLocation';
+import { type DlgCloneLibraryItemProps } from '@/features/library/dialogs/DlgCloneLibraryItem';
+import { type DlgCreateVersionProps } from '@/features/library/dialogs/DlgCreateVersion';
+import { type DlgEditEditorsProps } from '@/features/library/dialogs/DlgEditEditors/DlgEditEditors';
+import { type DlgEditVersionsProps } from '@/features/library/dialogs/DlgEditVersions/DlgEditVersions';
+import { type DlgChangeInputSchemaProps } from '@/features/oss/dialogs/DlgChangeInputSchema';
+import { type DlgCreateOperationProps } from '@/features/oss/dialogs/DlgCreateOperation/DlgCreateOperation';
+import { type DlgDeleteOperationProps } from '@/features/oss/dialogs/DlgDeleteOperation';
+import { type DlgEditOperationProps } from '@/features/oss/dialogs/DlgEditOperation/DlgEditOperation';
+import { type DlgRelocateConstituentsProps } from '@/features/oss/dialogs/DlgRelocateConstituents';
+import { type DlgCreateCstProps } from '@/features/rsform/dialogs/DlgCreateCst/DlgCreateCst';
+import { type DlgCstTemplateProps } from '@/features/rsform/dialogs/DlgCstTemplate/DlgCstTemplate';
+import { type DlgDeleteCstProps } from '@/features/rsform/dialogs/DlgDeleteCst/DlgDeleteCst';
+import { type DlgEditReferenceProps } from '@/features/rsform/dialogs/DlgEditReference/DlgEditReference';
+import { type DlgEditWordFormsProps } from '@/features/rsform/dialogs/DlgEditWordForms/DlgEditWordForms';
+import { type DlgInlineSynthesisProps } from '@/features/rsform/dialogs/DlgInlineSynthesis/DlgInlineSynthesis';
+import { type DlgRenameCstProps } from '@/features/rsform/dialogs/DlgRenameCst';
+import { type DlgShowASTProps } from '@/features/rsform/dialogs/DlgShowAST/DlgShowAST';
+import { type DlgShowQRProps } from '@/features/rsform/dialogs/DlgShowQR';
+import { type DlgShowTypeGraphProps } from '@/features/rsform/dialogs/DlgShowTypeGraph/DlgShowTypeGraph';
+import { type DlgSubstituteCstProps } from '@/features/rsform/dialogs/DlgSubstituteCst';
+import { type DlgUploadRSFormProps } from '@/features/rsform/dialogs/DlgUploadRSForm';
/**
* Represents global dialog.
diff --git a/rsconcept/frontend/src/stores/tooltips.ts b/rsconcept/frontend/src/stores/tooltips.ts
index ac803254..38971aa0 100644
--- a/rsconcept/frontend/src/stores/tooltips.ts
+++ b/rsconcept/frontend/src/stores/tooltips.ts
@@ -1,7 +1,7 @@
import { create } from 'zustand';
-import { IOperation } from '@/features/oss/models/oss';
-import { IConstituenta } from '@/features/rsform/models/rsform';
+import { type IOperation } from '@/features/oss/models/oss';
+import { type IConstituenta } from '@/features/rsform/models/rsform';
interface TooltipsStore {
activeCst: IConstituenta | null;
diff --git a/rsconcept/frontend/src/styling/setup.css b/rsconcept/frontend/src/styling/setup.css
index 8f5d539d..b77541ed 100644
--- a/rsconcept/frontend/src/styling/setup.css
+++ b/rsconcept/frontend/src/styling/setup.css
@@ -2,111 +2,119 @@
* Module: Basic styling setup.
*/
-@import './constants.css';
+@import './constants.css' layer(base);
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
-
-*,
-*::after,
-*::before {
- box-sizing: border-box;
-
- /* Uncomment to debug layering and overflow */
- /* background: hsla(135, 50%, 50%, 0.05); */
- /* outline: 2px solid hotpink; */
-}
-
-html {
- -webkit-text-size-adjust: none;
- -moz-text-size-adjust: none;
- text-size-adjust: none;
-
- hanging-punctuation: first last;
- color-scheme: dark light;
-
- interpolate-size: allow-keywords;
-}
-
-body {
- margin: 0px;
- padding: 0px;
- overflow-x: hidden;
-}
-
-[data-color-scheme='dark'] {
- color-scheme: dark;
-}
-
-[data-color-scheme='light'] {
- color-scheme: light;
-}
-
-/* Default scroll behavior */
-@media (prefers-reduced-motion: no-preference) {
- :has(:target) {
- scroll-behavior: smooth;
- scroll-padding-top: var(--scroll-padding);
+@layer base {
+ *,
+ ::after,
+ ::before,
+ ::backdrop,
+ ::file-selector-button {
+ border-color: var(--clr-prim-400);
}
}
-:root {
- interpolate-size: allow-keywords;
+@layer utilities {
+ *,
+ *::after,
+ *::before {
+ box-sizing: border-box;
- font-size: var(--font-size-base);
- line-height: var(--line-height);
- font-family: var(--font-main);
+ /* Uncomment to debug layering and overflow */
+ /* background: hsla(135, 50%, 50%, 0.05); */
+ /* outline: 2px solid hotpink; */
+ }
- color: var(--clr-prim-999);
- border-color: var(--clr-prim-400);
- background-color: var(--clr-prim-100);
-}
+ html {
+ -webkit-text-size-adjust: none;
+ -moz-text-size-adjust: none;
+ text-size-adjust: none;
+
+ hanging-punctuation: first last;
+ color-scheme: dark light;
+
+ interpolate-size: allow-keywords;
+ }
+
+ body {
+ margin: 0px;
+ padding: 0px;
+ overflow-x: hidden;
+ }
+
+ [data-color-scheme='dark'] {
+ color-scheme: dark;
+ }
+
+ [data-color-scheme='light'] {
+ color-scheme: light;
+ }
+
+ /* Default scroll behavior */
+ @media (prefers-reduced-motion: no-preference) {
+ :has(:target) {
+ scroll-behavior: smooth;
+ scroll-padding-top: var(--scroll-padding);
+ }
+ }
-@media only screen and (max-width: 639px) {
:root {
- font-size: var(--font-size-sm);
+ interpolate-size: allow-keywords;
+
+ font-size: var(--font-size-base);
+ line-height: var(--line-height);
+ font-family: var(--font-main);
+
+ color: var(--clr-prim-999);
+ border-color: var(--clr-prim-400);
+ background-color: var(--clr-prim-100);
}
-}
-:focus,
-:focus-visible,
-:focus-within {
- outline-width: 2px;
- outline-style: solid;
- outline-color: transparent;
-}
-
-::selection {
- background: var(--clr-sec-100);
- tr :hover& {
- background: var(--clr-warn-100);
+ @media only screen and (max-width: 639px) {
+ :root {
+ font-size: var(--font-size-sm);
+ }
}
-}
-::placeholder {
- color: var(--clr-prim-600);
-}
+ :focus,
+ :focus-visible,
+ :focus-within {
+ outline-width: 2px;
+ outline-style: solid;
+ outline-color: transparent;
+ }
-/* Wrapping headers */
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
- text-wrap: balance;
-}
+ ::selection {
+ background: var(--clr-sec-100);
+ tr :hover& {
+ background: var(--clr-warn-100);
+ }
+ }
-/* Limit text lines and setup wrapping */
-p,
-li {
- max-width: var(--text-max-width);
- text-wrap: pretty;
-}
+ ::placeholder {
+ color: var(--clr-prim-600);
+ }
-div:not(.dense) > p:not(:last-child) {
- margin-bottom: 0.5rem;
+ /* Wrapping headers */
+ h1,
+ h2,
+ h3,
+ h4,
+ h5,
+ h6 {
+ text-wrap: balance;
+ }
+
+ /* Limit text lines and setup wrapping */
+ p,
+ li {
+ max-width: var(--text-max-width);
+ text-wrap: pretty;
+ }
+
+ div:not(.dense) > p:not(:last-child) {
+ margin-bottom: 0.5rem;
+ }
}
@layer components {
@@ -147,36 +155,12 @@ div:not(.dense) > p:not(:last-child) {
li::marker {
content: '–\2009';
}
-
- .border {
- border-radius: 0.25rem;
- }
-
- .border,
- .border-x,
- .border-y,
- .border-b,
- .border-t,
- .border-l,
- .border-r,
- .border-2,
- .border-x-2,
- .border-y-2,
- .border-b-2,
- .border-t-2,
- .border-l-2,
- .border-r-2,
- .divide-x,
- .divide-y,
- .divide-x-2,
- .divide-y-2 {
- border-color: var(--clr-prim-400);
- & > :not([hidden]) ~ :not([hidden]) {
- border-color: inherit;
- }
- }
-
- .sticky {
- z-index: 20;
- }
+}
+
+@utility border {
+ border-radius: 0.25rem;
+}
+
+@utility sticky {
+ z-index: 20;
}
diff --git a/rsconcept/frontend/src/styling/styles.css b/rsconcept/frontend/src/styling/styles.css
index e95531fe..46dbfd4c 100644
--- a/rsconcept/frontend/src/styling/styles.css
+++ b/rsconcept/frontend/src/styling/styles.css
@@ -1,228 +1,232 @@
-/**
- * Module: Custom styling.
- */
-@import './constants.css';
+@utility font-main {
+ font-family: var(--font-main);
+}
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@utility font-controls {
+ font-family: var(--font-ui);
+ font-weight: 600;
+}
-@layer utilities {
- .font-main {
- font-family: var(--font-main);
- }
- .font-controls {
- font-family: var(--font-ui);
- font-weight: 600;
- }
- .font-math {
- font-family: var(--font-math);
+@utility font-math {
+ font-family: var(--font-math);
+}
+
+@utility clr-input {
+ background-color: var(--clr-prim-0);
+ &:disabled {
+ background-color: var(--clr-prim-100);
}
}
-@layer components {
- .clr-input {
- background-color: var(--clr-prim-0);
- &:disabled {
- background-color: var(--clr-prim-100);
- }
- }
+@utility clr-selected {
+ color: var(--clr-prim-999);
+ background-color: var(--clr-sec-200);
+}
- .clr-selected {
- color: var(--clr-prim-999);
- background-color: var(--clr-sec-200);
- }
+@utility clr-btn-default {
+ color: var(--clr-prim-999);
+ background-color: var(--clr-prim-200);
- .clr-btn-default {
- color: var(--clr-prim-999);
- background-color: var(--clr-prim-200);
-
- &:disabled {
- color: var(--clr-prim-800);
- background-color: var(--clr-prim-200);
- }
-
- &:hover:not(:disabled) {
- color: var(--clr-prim-999);
- background-color: var(--clr-sec-100);
- }
- }
-
- .clr-btn-primary {
- color: var(--clr-prim-999);
- background-color: var(--clr-sec-200);
-
- &:disabled {
- color: var(--clr-prim-800);
- background-color: var(--clr-prim-200);
- }
-
- &:hover:not(:disabled),
- &:focus-visible {
- color: var(--clr-sec-0);
- background-color: var(--clr-sec-600);
- }
-
- &:focus-visible,
- .focus-frame:has(:focus-visible) {
- outline-width: 2px;
- outline-style: solid;
- outline-color: var(--clr-sec-600);
- }
- }
-
- .clr-btn-nav {
+ &:disabled {
color: var(--clr-prim-800);
-
- &:hover:not(:disabled) {
- background-color: var(--clr-sec-100);
- }
-
- &:disabled {
- color: var(--clr-prim-600);
- }
+ background-color: var(--clr-prim-200);
}
- .clr-hover:hover:not(:disabled) {
+ &:hover:not(:disabled) {
color: var(--clr-prim-999);
background-color: var(--clr-sec-100);
}
+}
- :is(.clr-outline, .focus-frame):focus-visible,
+@utility clr-btn-primary {
+ color: var(--clr-prim-999);
+ background-color: var(--clr-sec-200);
+
+ &:disabled {
+ color: var(--clr-prim-800);
+ background-color: var(--clr-prim-200);
+ }
+
+ &:hover:not(:disabled),
+ &:focus-visible {
+ color: var(--clr-sec-0);
+ background-color: var(--clr-sec-600);
+ }
+
+ &:focus-visible,
.focus-frame:has(:focus-visible) {
outline-width: 2px;
outline-style: solid;
outline-color: var(--clr-sec-600);
}
+}
- .clr-text-default,
- input:disabled:not(::placeholder),
- textarea:disabled:not(::placeholder) {
- opacity: 1;
- -webkit-text-fill-color: var(--clr-prim-999);
- color: var(--clr-prim-999);
+@utility clr-btn-nav {
+ color: var(--clr-prim-800);
+
+ &:hover:not(:disabled) {
+ background-color: var(--clr-sec-100);
}
- .clr-text-controls {
- color: var(--clr-prim-800);
- background-color: transparent;
- &:disabled {
- color: var(--clr-prim-600);
- }
- }
-
- .icon-primary {
- :not([disabled]) > & {
- color: var(--clr-sec-800);
- }
- }
-
- .icon-red {
- :not([disabled]) > & {
- color: var(--clr-warn-600);
- }
- }
-
- .icon-green {
- :not([disabled]) > & {
- color: var(--clr-ok-600);
- }
- }
-
- .inline-icon {
- display: inline-block;
- font-size: 1.25rem;
- margin-left: 0.1rem;
- margin-right: 0.1rem;
- transform: translate(0, -0.2rem);
- color: var(--clr-sec-800);
- }
-
- .cc-tab-tools {
- top: 1.7rem;
- right: 50%;
- padding-top: 0.4rem;
- transform: translate(50%, 0%);
- }
-
- .cc-label {
- font-size: 0.875rem;
- line-height: 1.25rem;
- font-weight: 500;
- cursor: default;
- user-select: text;
- white-space: nowrap;
- }
-
- .cc-column {
- display: flex;
- flex-direction: column;
- gap: 0.75rem;
- }
-
- .cc-icons {
- display: flex;
- gap: 0.25rem;
- }
-
- .cc-fit-content {
- field-sizing: content;
- }
-
- .cc-scroll-row {
- scroll-snap-align: start;
- scroll-snap-stop: always;
- }
-
- .cc-scroll-y {
- overflow-y: auto;
- overscroll-behavior-y: contain;
- scroll-snap-type: y mandatory;
- }
-
- .cc-blur {
- backdrop-filter: blur(3px);
- }
-
- .cc-shadow-border {
- box-shadow: 0 1px 2px 0 var(--clr-prim-400);
- }
-
- .cc-fade-in {
- opacity: 1;
-
- transition-property: opacity;
- transition-timing-function: var(--transition-bezier);
- transition-duration: var(--duration-fade);
-
- @starting-style {
- opacity: 0;
- }
- }
-
- .cc-animate-position {
- transition-property: transform top left bottom right margin padding;
- transition-timing-function: var(--transition-bezier);
- transition-duration: var(--duration-move);
- }
-
- .cc-animate-modal {
- clip-path: inset(0% 0% 0% 0%);
- opacity: 1;
-
- transition-property: clip-path, opacity;
- transition-timing-function: var(--transition-bezier);
- transition-duration: var(--duration-modal);
-
- @starting-style {
- clip-path: inset(50% 50% 50% 50%);
- opacity: 0;
- }
- }
-
- .cc-animate-color {
- transition-property: color, background-color;
- transition-timing-function: var(--transition-bezier);
- transition-duration: var(--duration-select);
+ &:disabled {
+ color: var(--clr-prim-600);
}
}
+
+@utility clr-hover {
+ &:hover:not(:disabled) {
+ color: var(--clr-prim-999);
+ background-color: var(--clr-sec-100);
+ }
+}
+
+@utility clr-outline {
+ :is(&, .focus-frame):focus-visible {
+ outline-width: 2px;
+ outline-style: solid;
+ outline-color: var(--clr-sec-600);
+ }
+}
+
+@utility focus-frame {
+ :is(.clr-outline, &):focus-visible {
+ outline-width: 2px;
+ outline-style: solid;
+ outline-color: var(--clr-sec-600);
+ }
+
+ &:has(:focus-visible) {
+ outline-width: 2px;
+ outline-style: solid;
+ outline-color: var(--clr-sec-600);
+ }
+}
+
+@utility clr-text-default {
+ opacity: 1;
+ -webkit-text-fill-color: var(--clr-prim-999);
+ color: var(--clr-prim-999);
+}
+
+@utility clr-text-controls {
+ color: var(--clr-prim-800);
+ background-color: transparent;
+ &:disabled {
+ color: var(--clr-prim-600);
+ }
+}
+
+@utility icon-primary {
+ :not([disabled]) > & {
+ color: var(--clr-sec-800);
+ }
+}
+
+@utility icon-red {
+ :not([disabled]) > & {
+ color: var(--clr-warn-600);
+ }
+}
+
+@utility icon-green {
+ :not([disabled]) > & {
+ color: var(--clr-ok-600);
+ }
+}
+
+@utility inline-icon {
+ display: inline-block;
+ font-size: 1.25rem;
+ margin-left: 0.1rem;
+ margin-right: 0.1rem;
+ transform: translate(0, -0.2rem);
+ color: var(--clr-sec-800);
+}
+
+@utility cc-tab-tools {
+ top: 1.7rem;
+ right: 50%;
+ padding-top: 0.4rem;
+ transform: translate(50%, 0%);
+}
+
+@utility cc-label {
+ font-size: 0.875rem;
+ line-height: 1.25rem;
+ font-weight: 500;
+ cursor: default;
+ user-select: text;
+ white-space: nowrap;
+}
+
+@utility cc-column {
+ display: flex;
+ flex-direction: column;
+ gap: 0.75rem;
+}
+
+@utility cc-icons {
+ display: flex;
+ gap: 0.25rem;
+}
+
+@utility cc-fit-content {
+ field-sizing: content;
+}
+
+@utility cc-scroll-row {
+ scroll-snap-align: start;
+ scroll-snap-stop: always;
+}
+
+@utility cc-scroll-y {
+ overflow-y: auto;
+ overscroll-behavior-y: contain;
+ scroll-snap-type: y mandatory;
+}
+
+@utility cc-blur {
+ backdrop-filter: blur(3px);
+}
+
+@utility cc-shadow-border {
+ box-shadow: 0 1px 2px 0 var(--clr-prim-400);
+}
+
+@utility cc-fade-in {
+ opacity: 1;
+
+ transition-property: opacity;
+ transition-timing-function: var(--transition-bezier);
+ transition-duration: var(--duration-fade);
+
+ @starting-style {
+ opacity: 0;
+ }
+}
+
+@utility cc-animate-position {
+ transition-property: transform top left bottom right margin padding;
+ transition-timing-function: var(--transition-bezier);
+ transition-duration: var(--duration-move);
+}
+
+@utility cc-animate-modal {
+ clip-path: inset(0% 0% 0% 0%);
+ opacity: 1;
+
+ transition-property: clip-path, opacity;
+ transition-timing-function: var(--transition-bezier);
+ transition-duration: var(--duration-modal);
+
+ @starting-style {
+ clip-path: inset(50% 50% 50% 50%);
+ opacity: 0;
+ }
+}
+
+@utility cc-animate-color {
+ transition-property: color, background-color;
+ transition-timing-function: var(--transition-bezier);
+ transition-duration: var(--duration-select);
+}
\ No newline at end of file
diff --git a/rsconcept/frontend/src/utils/codemirror.ts b/rsconcept/frontend/src/utils/codemirror.ts
index f48efc17..ae09ce16 100644
--- a/rsconcept/frontend/src/utils/codemirror.ts
+++ b/rsconcept/frontend/src/utils/codemirror.ts
@@ -3,7 +3,7 @@
*/
import { syntaxTree } from '@codemirror/language';
import { NodeType, Tree, TreeCursor } from '@lezer/common';
-import { ReactCodeMirrorRef, SelectionRange } from '@uiw/react-codemirror';
+import { type ReactCodeMirrorRef, SelectionRange } from '@uiw/react-codemirror';
/**
* Represents syntax tree node data.
diff --git a/rsconcept/frontend/src/utils/utils.ts b/rsconcept/frontend/src/utils/utils.ts
index df7b787f..c182b595 100644
--- a/rsconcept/frontend/src/utils/utils.ts
+++ b/rsconcept/frontend/src/utils/utils.ts
@@ -3,7 +3,7 @@
*/
import { toast } from 'react-toastify';
-import { AxiosError, AxiosHeaderValue, AxiosResponse, isAxiosError } from 'axios';
+import { AxiosError, type AxiosHeaderValue, type AxiosResponse, isAxiosError } from 'axios';
import { infoMsg, promptText } from './labels';
diff --git a/rsconcept/frontend/tailwind.config.js b/rsconcept/frontend/tailwind.config.js
deleted file mode 100644
index 28a2fd45..00000000
--- a/rsconcept/frontend/tailwind.config.js
+++ /dev/null
@@ -1,64 +0,0 @@
-/** @type {import('tailwindcss').Config} */
-import defaultTheme from 'tailwindcss/defaultTheme';
-
-export default {
- darkMode: 'class',
- content: ['./src/**/*.{js,jsx,ts,tsx}'],
- theme: {
- colors: {
- transparent: 'transparent',
- current: 'currentColor',
- inherit: 'inherit',
- prim: {
- 0: 'var(--clr-prim-0)',
- 100: 'var(--clr-prim-100)',
- 200: 'var(--clr-prim-200)',
- 300: 'var(--clr-prim-300)',
- 400: 'var(--clr-prim-400)',
- 600: 'var(--clr-prim-600)',
- 800: 'var(--clr-prim-800)',
- 999: 'var(--clr-prim-999)'
- },
- sec: {
- 0: 'var(--clr-sec-0)',
- 100: 'var(--clr-sec-100)',
- 200: 'var(--clr-sec-200)',
- 300: 'var(--clr-sec-300)',
- 400: 'var(--clr-sec-400)',
- 600: 'var(--clr-sec-600)',
- 800: 'var(--clr-sec-800)'
- },
- warn: {
- 100: 'var(--clr-warn-100)',
- 600: 'var(--clr-warn-600)'
- },
- ok: {
- 600: 'var(--clr-ok-600)'
- }
- },
- zIndex: {
- bottom: '0',
- topmost: '99',
- pop: '10',
- sticky: '20',
- tooltip: '30',
- navigation: '50',
- modal: '60',
- modalControls: '70',
- modalTooltip: '90'
- },
- screens: {
- xs: '475px',
- ...defaultTheme.screens
- },
- extend: {}
- },
- plugins: [],
- ...(process.env.NODE_ENV === 'production'
- ? {
- experimental: {
- optimizeUniversalDefaults: true
- }
- }
- : {})
-};
diff --git a/rsconcept/frontend/vite.config.ts b/rsconcept/frontend/vite.config.ts
index 5adb4dbb..96fb656f 100644
--- a/rsconcept/frontend/vite.config.ts
+++ b/rsconcept/frontend/vite.config.ts
@@ -1,5 +1,6 @@
import path from 'path';
+import tailwindcss from '@tailwindcss/vite';
import react from '@vitejs/plugin-react';
import { defineConfig, loadEnv, PluginOption } from 'vite';
@@ -26,12 +27,16 @@ export default ({ mode }: { mode: string }) => {
};
return defineConfig({
appType: 'spa',
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
plugins: [
+ tailwindcss(),
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call
react({
babel: {
plugins: [['babel-plugin-react-compiler', reactCompilerConfig]]
}
}),
+ ,
muteWarningsPlugin(warningsToIgnore)
],
server: {