diff --git a/eslint.config.js b/eslint.config.js
index 052448c..9627bf0 100644
--- a/eslint.config.js
+++ b/eslint.config.js
@@ -1,5 +1,6 @@
import { includeIgnoreFile } from "@eslint/compat";
import js from "@eslint/js";
+import vitest from "@vitest/eslint-plugin";
import prettier from "eslint-config-prettier";
import svelte from "eslint-plugin-svelte";
import { defineConfig } from "eslint/config";
@@ -26,6 +27,14 @@ export default defineConfig(
"no-undef": "off",
"no-unused-vars": "off",
"no-console": ["error", { allow: ["warn", "error"] }],
+ "@typescript-eslint/no-magic-numbers": [
+ "error",
+ {
+ enforceConst: true,
+ ignoreDefaultValues: true,
+ ignore: [0, 1, 2],
+ },
+ ],
"@typescript-eslint/no-unused-vars": [
"error",
{
@@ -47,4 +56,45 @@ export default defineConfig(
},
},
},
+ {
+ files: ["**/constants.ts", "**/constants/*.ts"],
+ rules: {
+ "no-magic-numbers": "off",
+ "@typescript-eslint/no-magic-numbers": "off",
+ },
+ },
+ {
+ files: ["**/constants.ts", "**/constants/*.ts"],
+ rules: {
+ "no-magic-numbers": "off",
+ "@typescript-eslint/no-magic-numbers": "off",
+ },
+ },
+ {
+ files: ["scripts/**"],
+ rules: {
+ "no-magic-numbers": "off",
+ "@typescript-eslint/no-magic-numbers": "off",
+ "no-console": "off",
+ },
+ },
+ {
+ files: ["**/*.test.ts", "**/*.spec.ts", "tests/**/*"],
+ plugins: { vitest },
+ rules: {
+ ...vitest.configs.recommended.rules,
+
+ "vitest/no-focused-tests": "error",
+ "vitest/no-disabled-tests": "warn",
+ "vitest/expect-expect": "error",
+ "vitest/no-conditional-expect": "error",
+ "vitest/require-hook": "warn",
+ "vitest/consistent-test-it": ["error", { fn: "it", withinDescribe: "it" }],
+ "vitest/require-top-level-describe": "error",
+ "vitest/no-identical-title": "error",
+
+ "no-magic-numbers": "off",
+ "@typescript-eslint/no-magic-numbers": "off",
+ },
+ },
);
diff --git a/package-lock.json b/package-lock.json
index ee1a9e6..0daff94 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -31,6 +31,7 @@
"@types/file-saver": "^2.0.7",
"@types/node": "^20",
"@vitest/coverage-istanbul": "^4.0.18",
+ "@vitest/eslint-plugin": "^1.6.9",
"@vitest/ui": "^4.0.18",
"eslint": "^9.39.2",
"eslint-config-prettier": "^10.1.8",
@@ -2632,6 +2633,33 @@
"vitest": "4.0.18"
}
},
+ "node_modules/@vitest/eslint-plugin": {
+ "version": "1.6.9",
+ "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.6.9.tgz",
+ "integrity": "sha512-9WfPx1OwJ19QLCSRLkqVO7//1WcWnK3fE/3fJhKMAmDe8+9G4rB47xCNIIeCq3FdEzkIoLTfDlwDlPBaUTMhow==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "^8.55.0",
+ "@typescript-eslint/utils": "^8.55.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "eslint": ">=8.57.0",
+ "typescript": ">=5.0.0",
+ "vitest": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ },
+ "vitest": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@vitest/expect": {
"version": "4.0.18",
"resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz",
diff --git a/package.json b/package.json
index b545312..0903ddd 100644
--- a/package.json
+++ b/package.json
@@ -38,6 +38,7 @@
"@types/file-saver": "^2.0.7",
"@types/node": "^20",
"@vitest/coverage-istanbul": "^4.0.18",
+ "@vitest/eslint-plugin": "^1.6.9",
"@vitest/ui": "^4.0.18",
"eslint": "^9.39.2",
"eslint-config-prettier": "^10.1.8",
diff --git a/src/components/panel/Preview.svelte b/src/components/panel/Preview.svelte
index f3a3308..5584ef2 100644
--- a/src/components/panel/Preview.svelte
+++ b/src/components/panel/Preview.svelte
@@ -1,6 +1,6 @@
-
+
-
+
-
+
@@ -24,10 +30,20 @@
-
+
-
+
diff --git a/src/components/ui/ColorPicker.svelte b/src/components/ui/ColorPicker.svelte
index ad9e731..eb8b869 100644
--- a/src/components/ui/ColorPicker.svelte
+++ b/src/components/ui/ColorPicker.svelte
@@ -8,7 +8,7 @@
let { value = $bindable() }: Props = $props();
-
+
{value}