diff --git a/.gitignore b/.gitignore index 9b99165..af09617 100644 --- a/.gitignore +++ b/.gitignore @@ -16,9 +16,6 @@ dist-ssr # env files (can opt-in for committing if needed) .env* -# turbo -.turbo - # generated i18n build schema .i18n diff --git a/.oxfmtrc.json b/.oxfmtrc.json new file mode 100644 index 0000000..9b44a58 --- /dev/null +++ b/.oxfmtrc.json @@ -0,0 +1,22 @@ +{ + "$schema": "./node_modules/oxfmt/configuration_schema.json", + "endOfLine": "lf", + "ignorePatterns": [ + ".i18n/**", + "**/.output/**", + "**/coverage/**", + "**/dist/**", + "apps/web/src/locales/**/messages.ts", + "apps/web/src/route-tree.gen.ts" + ], + "printWidth": 80, + "semi": false, + "singleQuote": false, + "sortPackageJson": false, + "sortTailwindcss": { + "functions": ["cn", "cva"], + "stylesheet": "./packages/ui/src/styles/globals.css" + }, + "tabWidth": 2, + "trailingComma": "es5" +} diff --git a/.oxlintrc.json b/.oxlintrc.json new file mode 100644 index 0000000..b8e298d --- /dev/null +++ b/.oxlintrc.json @@ -0,0 +1,33 @@ +{ + "$schema": "./node_modules/oxlint/configuration_schema.json", + "categories": { + "correctness": "error", + "perf": "warn", + "suspicious": "warn" + }, + "ignorePatterns": [ + ".i18n/**", + "**/.output/**", + "**/coverage/**", + "**/dist/**", + "apps/web/src/locales/**/messages.ts", + "apps/web/src/route-tree.gen.ts" + ], + "options": { + "reportUnusedDisableDirectives": "warn" + }, + "rules": { + "react/react-in-jsx-scope": "off", + "vitest/expect-expect": "off", + "vitest/require-mock-type-parameters": "off" + }, + "plugins": [ + "eslint", + "typescript", + "unicorn", + "oxc", + "react", + "import", + "vitest" + ] +} diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 209509f..0000000 --- a/.prettierignore +++ /dev/null @@ -1,6 +0,0 @@ -dist/ -node_modules/ -.turbo/ -coverage/ -pnpm-lock.yaml -.pnpm-store/ \ No newline at end of file diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 40ce067..0000000 --- a/.prettierrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "endOfLine": "lf", - "semi": false, - "singleQuote": false, - "tabWidth": 2, - "trailingComma": "es5", - "printWidth": 80, - "plugins": ["prettier-plugin-tailwindcss"], - "tailwindStylesheet": "packages/ui/src/styles/globals.css", - "tailwindFunctions": ["cn", "cva"] -} diff --git a/apps/web/package.json b/apps/web/package.json index 3cc3cc5..bb425ed 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -6,7 +6,6 @@ "scripts": { "dev": "vite dev", "build": "vite build && tsc -b", - "format": "prettier --write \"**/*.{ts,tsx}\"", "i18n": "workspace-i18n", "i18n:compile": "workspace-i18n compile", "i18n:extract": "workspace-i18n extract", diff --git a/bun.lock b/bun.lock index 4a3ad21..8c02acf 100644 --- a/bun.lock +++ b/bun.lock @@ -5,9 +5,8 @@ "": { "name": "simple-react-app-kit", "devDependencies": { - "prettier": "^3.8.3", - "prettier-plugin-tailwindcss": "^0.8.0", - "turbo": "^2.9.18", + "oxfmt": "^0.61.0", + "oxlint": "^1.76.0", "typescript": "~6", }, }, @@ -135,7 +134,6 @@ }, "devDependencies": { "@tailwindcss/vite": "^4", - "@turbo/gen": "^2.9.15", "@types/node": "^24", "@types/react": "^19", "@types/react-dom": "^19", @@ -323,38 +321,6 @@ "@iconify/types": ["@iconify/types@2.0.0", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="], - "@inquirer/ansi": ["@inquirer/ansi@1.0.2", "", {}, "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ=="], - - "@inquirer/checkbox": ["@inquirer/checkbox@4.3.2", "", { "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", "@inquirer/figures": "^1.0.15", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA=="], - - "@inquirer/confirm": ["@inquirer/confirm@5.1.21", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ=="], - - "@inquirer/core": ["@inquirer/core@10.3.2", "", { "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/figures": "^1.0.15", "@inquirer/type": "^3.0.10", "cli-width": "^4.1.0", "mute-stream": "^2.0.0", "signal-exit": "^4.1.0", "wrap-ansi": "^6.2.0", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A=="], - - "@inquirer/editor": ["@inquirer/editor@4.2.23", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/external-editor": "^1.0.3", "@inquirer/type": "^3.0.10" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ=="], - - "@inquirer/expand": ["@inquirer/expand@4.0.23", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew=="], - - "@inquirer/external-editor": ["@inquirer/external-editor@1.0.3", "", { "dependencies": { "chardet": "^2.1.1", "iconv-lite": "^0.7.0" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA=="], - - "@inquirer/figures": ["@inquirer/figures@1.0.15", "", {}, "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g=="], - - "@inquirer/input": ["@inquirer/input@4.3.1", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g=="], - - "@inquirer/number": ["@inquirer/number@3.0.23", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg=="], - - "@inquirer/password": ["@inquirer/password@4.0.23", "", { "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA=="], - - "@inquirer/prompts": ["@inquirer/prompts@7.10.1", "", { "dependencies": { "@inquirer/checkbox": "^4.3.2", "@inquirer/confirm": "^5.1.21", "@inquirer/editor": "^4.2.23", "@inquirer/expand": "^4.0.23", "@inquirer/input": "^4.3.1", "@inquirer/number": "^3.0.23", "@inquirer/password": "^4.0.23", "@inquirer/rawlist": "^4.1.11", "@inquirer/search": "^3.2.2", "@inquirer/select": "^4.4.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg=="], - - "@inquirer/rawlist": ["@inquirer/rawlist@4.1.11", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw=="], - - "@inquirer/search": ["@inquirer/search@3.2.2", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/figures": "^1.0.15", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA=="], - - "@inquirer/select": ["@inquirer/select@4.4.2", "", { "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", "@inquirer/figures": "^1.0.15", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w=="], - - "@inquirer/type": ["@inquirer/type@3.0.10", "", { "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA=="], - "@jest/schemas": ["@jest/schemas@29.6.3", "", { "dependencies": { "@sinclair/typebox": "^0.27.8" } }, "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA=="], "@jest/types": ["@jest/types@29.6.3", "", { "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw=="], @@ -411,6 +377,82 @@ "@oxc-project/types": ["@oxc-project/types@0.139.0", "", {}, "sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw=="], + "@oxfmt/binding-android-arm-eabi": ["@oxfmt/binding-android-arm-eabi@0.61.0", "", { "os": "android", "cpu": "arm" }, "sha512-BaS+1OVvg9sr+Xav0+KdWedQRcAzrdoEcwMZeqoc2F6ieC1s/t5eM35YQoRPQ7vAqkZ+p3tbQb1r9I9mrV5oGA=="], + + "@oxfmt/binding-android-arm64": ["@oxfmt/binding-android-arm64@0.61.0", "", { "os": "android", "cpu": "arm64" }, "sha512-of8atAV0M1egGcVOMbgZCvc10sFOP3ayQBNQV5h5G3fNq8gACdEswfFk9bzGrdbM23rtg0Coxi7np7oPLcueNw=="], + + "@oxfmt/binding-darwin-arm64": ["@oxfmt/binding-darwin-arm64@0.61.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-7l8+5ov4BGwtAcmpzvEik/TG3bciwyw/S3e6j5GKH7pcQqcgCVxD3AuJeP6upto+SOTBKQ4wrrdbMt0gq8fHSQ=="], + + "@oxfmt/binding-darwin-x64": ["@oxfmt/binding-darwin-x64@0.61.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-Fnz4dDDXBb7udk+DmwelNjxbD6yptyxwCqwCH2ebo4RVLxVsRfFsn/AHJC49KIltPrVokamGv4SSOsiV50DTxQ=="], + + "@oxfmt/binding-freebsd-x64": ["@oxfmt/binding-freebsd-x64@0.61.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mddOebKNCP+AucmzfNsk3jgbr681qAUvgMqi865GW5gWLJ/AnzXbvjQRrny0e++NAN8aphav/aRSrfFxNsNjpA=="], + + "@oxfmt/binding-linux-arm-gnueabihf": ["@oxfmt/binding-linux-arm-gnueabihf@0.61.0", "", { "os": "linux", "cpu": "arm" }, "sha512-svx59iYL+DbaZGZUIoice4W0CjRXGExnbz7Re+awIb60rVxBS2KrU7Hnlx+nZYanLGLpjneUEgo/VFEKkSZAyQ=="], + + "@oxfmt/binding-linux-arm-musleabihf": ["@oxfmt/binding-linux-arm-musleabihf@0.61.0", "", { "os": "linux", "cpu": "arm" }, "sha512-BYK9MPJPCf6d+fLKMTruThmEyCtHzQ1zLcsrTlUVkmnoXIaHAbfpeLYQwX1tkjs7W11dyzoi6HFvKcdnvX1zNg=="], + + "@oxfmt/binding-linux-arm64-gnu": ["@oxfmt/binding-linux-arm64-gnu@0.61.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-QUaCNLq2/EC6G5ljOuFanl9Lgw6ZWp4co7rs4+KOMUzbGfA4Lq58FHRjjF9sVIG+93XSbo343MxFATrOU1qctA=="], + + "@oxfmt/binding-linux-arm64-musl": ["@oxfmt/binding-linux-arm64-musl@0.61.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-S6uvJ6MXnRXl+zTs0CARNDvkE+cymj0EVWEKKsyKnlLlqTyQJBjw5s4D2pSIOZc+S46cy4STefzcr/sm0VzVPA=="], + + "@oxfmt/binding-linux-ppc64-gnu": ["@oxfmt/binding-linux-ppc64-gnu@0.61.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-6VDlRcytvZG6UlSIdAFKDLbppo9tvPxrWzle6vHldYFMeuDPQEfMKrkwezp7FaBq1wik9ra554ZZeRPsyIkFpg=="], + + "@oxfmt/binding-linux-riscv64-gnu": ["@oxfmt/binding-linux-riscv64-gnu@0.61.0", "", { "os": "linux", "cpu": "none" }, "sha512-KkBTYbzExpbmn15XjKPLu2fRV2PVlq+KWt+brad5rwIa03vdYoaDRWiS7raHII/dCTR6Ro4UpYUCH4t6lif4WQ=="], + + "@oxfmt/binding-linux-riscv64-musl": ["@oxfmt/binding-linux-riscv64-musl@0.61.0", "", { "os": "linux", "cpu": "none" }, "sha512-69tzIq7sJLVB9dxYYtvMzcSSsnZHSO+U2U19O2RqDqgj6+Q4O7HjSXdaszbcgqzhsUwzSH7z5kWvk8nmf6BHTg=="], + + "@oxfmt/binding-linux-s390x-gnu": ["@oxfmt/binding-linux-s390x-gnu@0.61.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-Oqi/N0OvtOVXsPKAOOhKgGH3msRYF8BLJaNBbWiupRiKoKVyc8JRKPCfarkQJC+RgP9U8raUKLe+bNwd0HUMiA=="], + + "@oxfmt/binding-linux-x64-gnu": ["@oxfmt/binding-linux-x64-gnu@0.61.0", "", { "os": "linux", "cpu": "x64" }, "sha512-3TKwv/ed4uwJSemAA8P9XcoqETpjQI4waquF9UilhA9Mn/dhr1PdUEXWlL74mtc6ZNfmKPA9+NEJm01nRF8CVA=="], + + "@oxfmt/binding-linux-x64-musl": ["@oxfmt/binding-linux-x64-musl@0.61.0", "", { "os": "linux", "cpu": "x64" }, "sha512-uFso4u4nLkVSlMCpgjyvWV60Gt7GvDQHnk1mmRxHIkZTMB0ljpUKwCD9FYGgN9H97x2wYl0UwEjgRZaPIuhEhw=="], + + "@oxfmt/binding-openharmony-arm64": ["@oxfmt/binding-openharmony-arm64@0.61.0", "", { "os": "none", "cpu": "arm64" }, "sha512-keGLkzeOvkMpNmPp4hffXWpfoSsY6e1K8++KXD4mSSfxdvM8q9QUDsYY689TB1k6Co832DZn1MnaaVx6cIBMWQ=="], + + "@oxfmt/binding-win32-arm64-msvc": ["@oxfmt/binding-win32-arm64-msvc@0.61.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-VzsAISkFxmNhJ5LBDEL9VuH6tJsVJMtqYit2LyIUf/HLnsCe4Pg9SMOjjVQzGWt0bnpyfJ94CrqTqcpNZzK+ug=="], + + "@oxfmt/binding-win32-ia32-msvc": ["@oxfmt/binding-win32-ia32-msvc@0.61.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-xv4t7yzwJoYaLB6Zv28B3W+j7brEjsyv50rLTAQgmxJzddce9fAMCxed8dSAkbWES0zz2J29nYK5FaTuD2YBHg=="], + + "@oxfmt/binding-win32-x64-msvc": ["@oxfmt/binding-win32-x64-msvc@0.61.0", "", { "os": "win32", "cpu": "x64" }, "sha512-6EZXFkqOwxdDYjIn3TSNnPk3ST5E5GiYd4FiM6UF/mCL/LZSfr6D6UygTfW3R1PCQP2quCKpCEGRlij8E3VYbg=="], + + "@oxlint/binding-android-arm-eabi": ["@oxlint/binding-android-arm-eabi@1.76.0", "", { "os": "android", "cpu": "arm" }, "sha512-ZHIE5Zt9AsPDcY4nOlofXt0YfneEeo+QrKMPcPzLf2Z6Q8VtV2W73d7SFJ920WUwyik783u/doKCs3KXdwG+7w=="], + + "@oxlint/binding-android-arm64": ["@oxlint/binding-android-arm64@1.76.0", "", { "os": "android", "cpu": "arm64" }, "sha512-shm/ngQilHK6bs+ElJWa4oHfNj5vL1Gl/iVEJldTQjpr0/67oSgr0KUpbmcnLig5Fo0v/l6j2567A7TOL89ONA=="], + + "@oxlint/binding-darwin-arm64": ["@oxlint/binding-darwin-arm64@1.76.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-rvJmrAPKSQ9aWJ6wIS6CK2tJjwzfW0ApQH9qokq6sfDvmHwoyIHxHFMq7z7i7GiV6fdE6s8qvBqWKPTu8RmT6Q=="], + + "@oxlint/binding-darwin-x64": ["@oxlint/binding-darwin-x64@1.76.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-U/zYdb7VYKGY6pA9Vd2rYl9O/HlCylcOlb5PGPvVLtg+oLGsk6H3XGKEMHKyqD3nmmtmlmwb/8SwU2vfSAtvMw=="], + + "@oxlint/binding-freebsd-x64": ["@oxlint/binding-freebsd-x64@1.76.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-WvKG9CAriuo0XNiFzpXjDngUZcRGFNpaK2kLyMUsnJlShxkT96u+BpJQ3KqdQwGOrvI14L6V8bAwXwAYNNY6Jg=="], + + "@oxlint/binding-linux-arm-gnueabihf": ["@oxlint/binding-linux-arm-gnueabihf@1.76.0", "", { "os": "linux", "cpu": "arm" }, "sha512-qJ5+RH99TqFRq3UCDxkW0zJJu9c+OAHFY72vGlxZLEpuO+MpKo3POgqb8sYipL9KYm8XY6ofb0HsOuvY6hQNqQ=="], + + "@oxlint/binding-linux-arm-musleabihf": ["@oxlint/binding-linux-arm-musleabihf@1.76.0", "", { "os": "linux", "cpu": "arm" }, "sha512-PvPCVptkgVARsucgIqFQQcSmJ6xc6GtnVB5bRBekRahTc9eObMtjHfMjy5M+C2tHt5UCMttWM9RuSk/H9NqYeg=="], + + "@oxlint/binding-linux-arm64-gnu": ["@oxlint/binding-linux-arm64-gnu@1.76.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-3KeFDx8Bu4HPAXbuHZOr/oHvN+QT+JQhMw/NYPz7Z071xLSsG27Jfh9PIQVEY7hk1I+jr43ExqRIeJ6VKk2yLw=="], + + "@oxlint/binding-linux-arm64-musl": ["@oxlint/binding-linux-arm64-musl@1.76.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-oPFkkKTgl0K/EIg9fQ8oA3IGcI05/Mq1en04iFa41mmNPT+6KEiByVazTOZZJiHMBBrbsns1YJ2e1Scqwzesjw=="], + + "@oxlint/binding-linux-ppc64-gnu": ["@oxlint/binding-linux-ppc64-gnu@1.76.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-gN7yZ0eqflA5Fhf1wvHxGUltIV3FsvmB1zhNMDEK9vSHhc7E6qg9CuPeBgPZab66Tjzq6w6kHAtNEvnTHf4cyw=="], + + "@oxlint/binding-linux-riscv64-gnu": ["@oxlint/binding-linux-riscv64-gnu@1.76.0", "", { "os": "linux", "cpu": "none" }, "sha512-S/HqMbn22mQrjtErUxEoS/a55u8kIeXvreIxiJu5G7Le3UecEd6SQZxrDIpuhtgaFnsY/nVra3ytP+pRljDilA=="], + + "@oxlint/binding-linux-riscv64-musl": ["@oxlint/binding-linux-riscv64-musl@1.76.0", "", { "os": "linux", "cpu": "none" }, "sha512-ZIga3097VJZolGZk6SrIAUokIGfRkxRlhiHDUznZptGBfwrhD7pNfD1rzEzsCwvk/1DX0A1bLz+liuNh5QKIVQ=="], + + "@oxlint/binding-linux-s390x-gnu": ["@oxlint/binding-linux-s390x-gnu@1.76.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-ZGiiA7pFzMJSyMWYZTVlPgbTsx+Vl8ihLGMIujPwaslUF7kIPPWAbVmAlTc+9lWDV+DCiB8Ikixu+lSHeOIIWQ=="], + + "@oxlint/binding-linux-x64-gnu": ["@oxlint/binding-linux-x64-gnu@1.76.0", "", { "os": "linux", "cpu": "x64" }, "sha512-JLiy5WuvEBFTT6ErIFV35SLzi0R7Iri6MKU6dZbTxfIx8pndbbPs3Mj780nMipBFcPkti+okAPOJ9POKkHFEgg=="], + + "@oxlint/binding-linux-x64-musl": ["@oxlint/binding-linux-x64-musl@1.76.0", "", { "os": "linux", "cpu": "x64" }, "sha512-z7lgKQtbo/I1NIe8G5NHLesxJDv0tRSUWTpXKb9Pm3E9nKFKfO4IOSDtFroKgXtOYb0jQbcdH+0wzTyMXVes+A=="], + + "@oxlint/binding-openharmony-arm64": ["@oxlint/binding-openharmony-arm64@1.76.0", "", { "os": "none", "cpu": "arm64" }, "sha512-JOjKymIpb9QcYfEhZsN6h4V9Ivd474W38cNIBRv6bg2TbIvogbMTH0Mg6YWW9TiRDqfcX+/Hyfsbo5vcSE5guQ=="], + + "@oxlint/binding-win32-arm64-msvc": ["@oxlint/binding-win32-arm64-msvc@1.76.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-pqDWZiwcmByWUEm1NFUBNiT6aentCcaoMWJv0HbXEmuYermJ4sg8ppVrshubYP2MZ6SHccJJcpr6x469PuDFIw=="], + + "@oxlint/binding-win32-ia32-msvc": ["@oxlint/binding-win32-ia32-msvc@1.76.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-Ba0O659kgMv6pwO3z9PdO+K3aMxQRaw9HnG+e6AtOfgwcKFvYilciQYBoUBmxfQvOCKZe1SwjMkuB542NkuDMQ=="], + + "@oxlint/binding-win32-x64-msvc": ["@oxlint/binding-win32-x64-msvc@1.76.0", "", { "os": "win32", "cpu": "x64" }, "sha512-5qcirPHO8nKfkoowEVWtpAoVTcYDy6g0UT0NGic450Qv8J2NrOqg4uQ8QppRP4MDTC7Xx47lbZnmadTH03CGGA=="], + "@radix-ui/primitive": ["@radix-ui/primitive@1.1.7", "", {}, "sha512-rqWnm76nYT8HoNNqEjpgJ7Pw/DrBj5iBTrmEPo6HTX5+VJyBNOqTdv4g89G63HuR5g0AaENoAcH7Is5fF2kZ8Q=="], "@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.5", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-+48PbAAbq3didjJxa+OaWY2ZwgAKsNiRGyeHKszblZMQ+kcpd9pAaT11cMkGEie0vsOi3QdeTE6d5Fe3Gn61kA=="], @@ -577,20 +619,6 @@ "@ts-morph/common": ["@ts-morph/common@0.27.0", "", { "dependencies": { "fast-glob": "^3.3.3", "minimatch": "^10.0.1", "path-browserify": "^1.0.1" } }, "sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ=="], - "@turbo/darwin-64": ["@turbo/darwin-64@2.10.7", "", { "os": "darwin", "cpu": "x64" }, "sha512-/c9cSBRermWDv85oufLhoH6XRLOVbvzJLRd+WLyfJCP+i0HFLQj4PVNDrHcY17/ve5l8X0Oua4bJBqJUgJPnZA=="], - - "@turbo/darwin-arm64": ["@turbo/darwin-arm64@2.10.7", "", { "os": "darwin", "cpu": "arm64" }, "sha512-8lpCCGWZBl9PIF8w8f2iEWrLMbHBWIfJeV6l2UEGqysD6HRIM4ySj/8R7HGEzbECJ4r/gnJcHmxEoG8yjFe64A=="], - - "@turbo/gen": ["@turbo/gen@2.10.7", "", { "dependencies": { "@inquirer/prompts": "^7.10.1", "esbuild": "^0.28.1" }, "bin": { "gen": "dist/cli.js" } }, "sha512-kxLa//A+Q8oe10Pz2MdLKFwS5QUi1uVIp1oqbFraF1OSgSHyNKRWjpn5ITn2c91CzaVEBY4pGFM9ZlKvtnkcGw=="], - - "@turbo/linux-64": ["@turbo/linux-64@2.10.7", "", { "os": "linux", "cpu": "x64" }, "sha512-Midw9Ed00yw9rqkWN82fY3LmLNFQ6yiL1GXB56DJKUEjWaEd27zh7ohCxzzrjfjQVrEeVWd3UPytTAV16XDQlA=="], - - "@turbo/linux-arm64": ["@turbo/linux-arm64@2.10.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-UVEy+MW/xn4BcsiV3v3uv0/oObyaQgVtRT+Jj4WE53rNH05VEYEc1Z13q3zV6276wCZR4Yxc4hiTTcjw7PjSpg=="], - - "@turbo/windows-64": ["@turbo/windows-64@2.10.7", "", { "os": "win32", "cpu": "x64" }, "sha512-l2nH9KGLV46SWjcXvyc2+xo5gdf5J0NVADknQk9OCJhzJBpiNl/byd26yIfwZBjLupdqT6UOdPhPxcpUPxRykQ=="], - - "@turbo/windows-arm64": ["@turbo/windows-arm64@2.10.7", "", { "os": "win32", "cpu": "arm64" }, "sha512-qjE1apG6RThuX49vUJd5ks2dV2ndXC2qktDChQonFMvUzrMrEnZMQzO+IgxBiYq1j+NbXQcRwj84nGnk1TBw1g=="], - "@tybys/wasm-util": ["@tybys/wasm-util@0.10.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg=="], "@types/aria-query": ["@types/aria-query@5.0.4", "", {}, "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw=="], @@ -755,8 +783,6 @@ "chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], - "chardet": ["chardet@2.2.0", "", {}, "sha512-rddelWYNPRrXq6PtNEN2S3f6t9ILzvqaN5pVgi4kqt9jHQaXIial9PznB5iSPVlQSLNaaH22ItWz3EJtQ10+OA=="], - "chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], "citty": ["citty@0.2.2", "", {}, "sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w=="], @@ -769,8 +795,6 @@ "cli-table3": ["cli-table3@0.6.5", "", { "dependencies": { "string-width": "^4.2.0" }, "optionalDependencies": { "@colors/colors": "1.5.0" } }, "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ=="], - "cli-width": ["cli-width@4.1.0", "", {}, "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ=="], - "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], "cmdk": ["cmdk@1.1.1", "", { "dependencies": { "@radix-ui/react-compose-refs": "^1.1.1", "@radix-ui/react-dialog": "^1.1.6", "@radix-ui/react-id": "^1.1.0", "@radix-ui/react-primitive": "^2.0.2" }, "peerDependencies": { "react": "^18 || ^19 || ^19.0.0-rc", "react-dom": "^18 || ^19 || ^19.0.0-rc" } }, "sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg=="], @@ -1191,8 +1215,6 @@ "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], - "mute-stream": ["mute-stream@2.0.0", "", {}, "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA=="], - "nanoid": ["nanoid@3.3.16", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q=="], "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], @@ -1235,6 +1257,10 @@ "ora": ["ora@9.4.1", "", { "dependencies": { "chalk": "^5.6.2", "cli-cursor": "^5.0.0", "cli-spinners": "^3.2.0", "is-interactive": "^2.0.0", "is-unicode-supported": "^2.1.0", "log-symbols": "^7.0.1", "stdin-discarder": "^0.3.2", "string-width": "^8.1.0" } }, "sha512-6VlU9MLXbjVQD04AZCMX28hVtA5bUoadvUqO76MUCVA0ilwJbMiHsITRPfyVm6p/BC0Av/BXMujx39WCe1LEqw=="], + "oxfmt": ["oxfmt@0.61.0", "", { "dependencies": { "tinypool": "2.1.0" }, "optionalDependencies": { "@oxfmt/binding-android-arm-eabi": "0.61.0", "@oxfmt/binding-android-arm64": "0.61.0", "@oxfmt/binding-darwin-arm64": "0.61.0", "@oxfmt/binding-darwin-x64": "0.61.0", "@oxfmt/binding-freebsd-x64": "0.61.0", "@oxfmt/binding-linux-arm-gnueabihf": "0.61.0", "@oxfmt/binding-linux-arm-musleabihf": "0.61.0", "@oxfmt/binding-linux-arm64-gnu": "0.61.0", "@oxfmt/binding-linux-arm64-musl": "0.61.0", "@oxfmt/binding-linux-ppc64-gnu": "0.61.0", "@oxfmt/binding-linux-riscv64-gnu": "0.61.0", "@oxfmt/binding-linux-riscv64-musl": "0.61.0", "@oxfmt/binding-linux-s390x-gnu": "0.61.0", "@oxfmt/binding-linux-x64-gnu": "0.61.0", "@oxfmt/binding-linux-x64-musl": "0.61.0", "@oxfmt/binding-openharmony-arm64": "0.61.0", "@oxfmt/binding-win32-arm64-msvc": "0.61.0", "@oxfmt/binding-win32-ia32-msvc": "0.61.0", "@oxfmt/binding-win32-x64-msvc": "0.61.0" }, "peerDependencies": { "svelte": "^5.0.0", "vite-plus": "*" }, "optionalPeers": ["svelte", "vite-plus"], "bin": { "oxfmt": "bin/oxfmt" } }, "sha512-DxdHBEMYpcEnHoUHjjOigUqV2TYKsvxLwUPXnVYBjgFdqrcQ/91OtwubtZ2PUodCs3sStI8R5Qw3fKNGK4e8wQ=="], + + "oxlint": ["oxlint@1.76.0", "", { "optionalDependencies": { "@oxlint/binding-android-arm-eabi": "1.76.0", "@oxlint/binding-android-arm64": "1.76.0", "@oxlint/binding-darwin-arm64": "1.76.0", "@oxlint/binding-darwin-x64": "1.76.0", "@oxlint/binding-freebsd-x64": "1.76.0", "@oxlint/binding-linux-arm-gnueabihf": "1.76.0", "@oxlint/binding-linux-arm-musleabihf": "1.76.0", "@oxlint/binding-linux-arm64-gnu": "1.76.0", "@oxlint/binding-linux-arm64-musl": "1.76.0", "@oxlint/binding-linux-ppc64-gnu": "1.76.0", "@oxlint/binding-linux-riscv64-gnu": "1.76.0", "@oxlint/binding-linux-riscv64-musl": "1.76.0", "@oxlint/binding-linux-s390x-gnu": "1.76.0", "@oxlint/binding-linux-x64-gnu": "1.76.0", "@oxlint/binding-linux-x64-musl": "1.76.0", "@oxlint/binding-openharmony-arm64": "1.76.0", "@oxlint/binding-win32-arm64-msvc": "1.76.0", "@oxlint/binding-win32-ia32-msvc": "1.76.0", "@oxlint/binding-win32-x64-msvc": "1.76.0" }, "peerDependencies": { "oxlint-tsgolint": ">=7.0.2001", "vite-plus": "*" }, "optionalPeers": ["oxlint-tsgolint", "vite-plus"], "bin": { "oxlint": "bin/oxlint" } }, "sha512-6QoFioEU4fNdiUx/2Eo6TRd6NG7H7njnRCz8rhB66cZmMHDTqcm1Rjvl8Wry+ZTQMBAmyb4Mlf62Mk5X+eHSOw=="], + "p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], "p-locate": ["p-locate@3.0.0", "", { "dependencies": { "p-limit": "^2.0.0" } }, "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ=="], @@ -1283,8 +1309,6 @@ "prettier": ["prettier@3.9.6", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g=="], - "prettier-plugin-tailwindcss": ["prettier-plugin-tailwindcss@0.8.1", "", { "peerDependencies": { "@ianvs/prettier-plugin-sort-imports": "*", "@prettier/plugin-hermes": "*", "@prettier/plugin-oxc": "*", "@prettier/plugin-pug": "*", "@shopify/prettier-plugin-liquid": "*", "@trivago/prettier-plugin-sort-imports": "*", "@zackad/prettier-plugin-twig": "*", "prettier": "^3.0", "prettier-plugin-astro": "*", "prettier-plugin-css-order": "*", "prettier-plugin-jsdoc": "*", "prettier-plugin-marko": "*", "prettier-plugin-multiline-arrays": "*", "prettier-plugin-organize-attributes": "*", "prettier-plugin-organize-imports": "*", "prettier-plugin-sort-imports": "*", "prettier-plugin-svelte": "*" }, "optionalPeers": ["@ianvs/prettier-plugin-sort-imports", "@prettier/plugin-hermes", "@prettier/plugin-oxc", "@prettier/plugin-pug", "@shopify/prettier-plugin-liquid", "@trivago/prettier-plugin-sort-imports", "@zackad/prettier-plugin-twig", "prettier-plugin-astro", "prettier-plugin-css-order", "prettier-plugin-jsdoc", "prettier-plugin-marko", "prettier-plugin-multiline-arrays", "prettier-plugin-organize-attributes", "prettier-plugin-organize-imports", "prettier-plugin-sort-imports", "prettier-plugin-svelte"] }, "sha512-iaFMYqDsE4ffdDkn5qup0j5f2aCEBFZrdrZnvu9QKTlWx/iGPeQ4HHu7b7fCPMxeo9nwQBiOAh2nSypdFYWJkw=="], - "pretty-format": ["pretty-format@27.5.1", "", { "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" } }, "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ=="], "pretty-ms": ["pretty-ms@9.3.0", "", { "dependencies": { "parse-ms": "^4.0.0" } }, "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ=="], @@ -1461,8 +1485,6 @@ "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - "turbo": ["turbo@2.10.7", "", { "optionalDependencies": { "@turbo/darwin-64": "2.10.7", "@turbo/darwin-arm64": "2.10.7", "@turbo/linux-64": "2.10.7", "@turbo/linux-arm64": "2.10.7", "@turbo/windows-64": "2.10.7", "@turbo/windows-arm64": "2.10.7" }, "bin": { "turbo": "bin/turbo" } }, "sha512-GHx6WExIFSKNJ5qMlzDpXBXlu9ApxaMjqxAVrCNcW94xf/+uqgIz41SAuRUMbXva2ExNAaY/h8V0q90SWSzmRw=="], - "tw-animate-css": ["tw-animate-css@1.4.0", "", {}, "sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ=="], "type-is": ["type-is@2.1.0", "", { "dependencies": { "content-type": "^2.0.0", "media-typer": "^1.1.0", "mime-types": "^3.0.0" } }, "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA=="], @@ -1531,8 +1553,6 @@ "why-is-node-running": ["why-is-node-running@2.3.0", "", { "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" }, "bin": { "why-is-node-running": "cli.js" } }, "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w=="], - "wrap-ansi": ["wrap-ansi@6.2.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="], - "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], "wsl-utils": ["wsl-utils@0.3.1", "", { "dependencies": { "is-wsl": "^3.1.0", "powershell-utils": "^0.1.0" } }, "sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg=="], @@ -1549,8 +1569,6 @@ "yoctocolors": ["yoctocolors@2.2.0", "", {}, "sha512-xYqdZFUK/VYazNl/oCDYN+3WloWQwMfZxBoiNt6qNyk+xfOdi598muWE42rNZFp1kNOiqW936q5RhUdnpqElSg=="], - "yoctocolors-cjs": ["yoctocolors-cjs@2.1.3", "", {}, "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw=="], - "zigpty": ["zigpty@0.2.1", "", {}, "sha512-MR9JqJx2wf5f4wz8zpx050AlqrmWeIW+1h0SO5iEyhG3HFRjY5luC3szS2ux2EGuPjE5OU9ZAuiCBeMWBTrqZw=="], "zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], @@ -1647,10 +1665,6 @@ "type-is/content-type": ["content-type@2.0.0", "", {}, "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ=="], - "wrap-ansi/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - - "wrap-ansi/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "@dotenvx/dotenvx/execa/get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="], "@dotenvx/dotenvx/execa/human-signals": ["human-signals@2.1.0", "", {}, "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="], diff --git a/package.json b/package.json index 84ebfdc..570937c 100644 --- a/package.json +++ b/package.json @@ -3,15 +3,18 @@ "version": "0.0.1", "private": true, "scripts": { - "build": "turbo build", - "dev": "turbo dev", - "format": "turbo format", - "typecheck": "turbo typecheck" + "build": "bun run --filter web build", + "check": "bun run format:check && bun run lint && bun run typecheck", + "dev": "bun run --filter web dev", + "format": "oxfmt apps packages package.json tsconfig.json .oxlintrc.json .oxfmtrc.json", + "format:check": "oxfmt --check apps packages package.json tsconfig.json .oxlintrc.json .oxfmtrc.json", + "lint": "oxlint .", + "lint:fix": "oxlint --fix .", + "typecheck": "bun run --workspaces typecheck" }, "devDependencies": { - "prettier": "^3.8.3", - "prettier-plugin-tailwindcss": "^0.8.0", - "turbo": "^2.9.18", + "oxfmt": "^0.61.0", + "oxlint": "^1.76.0", "typescript": "~6" }, "packageManager": "bun@1.3.5", diff --git a/packages/blocks/package.json b/packages/blocks/package.json index 5fdacf5..7bfd2e4 100644 --- a/packages/blocks/package.json +++ b/packages/blocks/package.json @@ -4,7 +4,6 @@ "type": "module", "private": true, "scripts": { - "format": "prettier --write \"**/*.{ts,tsx}\"", "test": "vitest run", "typecheck": "tsc --noEmit" }, diff --git a/packages/blocks/src/blocks/appearance/locales/de.ts b/packages/blocks/src/blocks/appearance/locales/de.ts index e367991..ab2f394 100644 --- a/packages/blocks/src/blocks/appearance/locales/de.ts +++ b/packages/blocks/src/blocks/appearance/locales/de.ts @@ -30,22 +30,29 @@ export const messages = { "blocks.appearance.color.violet": "Violett", "blocks.appearance.color.yellow": "Gelb", "blocks.appearance.color.zinc": "Zink", - "blocks.appearance.command.description": "Design- und Layout-Einstellungen öffnen", - "blocks.appearance.compact.description": "Eine kompakte Breite für den Hauptinhalt verwenden", + "blocks.appearance.command.description": + "Design- und Layout-Einstellungen öffnen", + "blocks.appearance.compact.description": + "Eine kompakte Breite für den Hauptinhalt verwenden", "blocks.appearance.compact.title": "Kompaktes Layout", "blocks.appearance.description": "Design- und Layout-Einstellungen", "blocks.appearance.mode.dark": "Dunkel", - "blocks.appearance.mode.dark.description": "Die Oberfläche verwendet immer das dunkle Design", + "blocks.appearance.mode.dark.description": + "Die Oberfläche verwendet immer das dunkle Design", "blocks.appearance.mode.light": "Hell", - "blocks.appearance.mode.light.description": "Die Oberfläche verwendet immer das helle Design", + "blocks.appearance.mode.light.description": + "Die Oberfläche verwendet immer das helle Design", "blocks.appearance.mode.system": "System", - "blocks.appearance.mode.system.description": "Das Design der Oberfläche folgt der Systemeinstellung", + "blocks.appearance.mode.system.description": + "Das Design der Oberfläche folgt der Systemeinstellung", "blocks.appearance.mode.title": "Darstellungsmodus", "blocks.appearance.primaryColor": "Primärfarbe", "blocks.appearance.theme.dark": "Dunkles Design", - "blocks.appearance.theme.dark.description": "Dieses Design wird im dunklen Systemmodus verwendet", + "blocks.appearance.theme.dark.description": + "Dieses Design wird im dunklen Systemmodus verwendet", "blocks.appearance.theme.light": "Helles Design", - "blocks.appearance.theme.light.description": "Dieses Design wird im hellen Systemmodus verwendet", + "blocks.appearance.theme.light.description": + "Dieses Design wird im hellen Systemmodus verwendet", "blocks.appearance.title": "Darstellung", "blocks.appearance.toggleTheme": "Design wechseln", "blocks.appearance.toggleTheme.description": diff --git a/packages/blocks/src/blocks/appearance/locales/es.ts b/packages/blocks/src/blocks/appearance/locales/es.ts index 228fb88..2431661 100644 --- a/packages/blocks/src/blocks/appearance/locales/es.ts +++ b/packages/blocks/src/blocks/appearance/locales/es.ts @@ -30,23 +30,31 @@ export const messages = { "blocks.appearance.color.violet": "Violeta", "blocks.appearance.color.yellow": "Amarillo", "blocks.appearance.color.zinc": "Zinc", - "blocks.appearance.command.description": "Abrir las preferencias de tema y diseño", - "blocks.appearance.compact.description": "Usar un ancho compacto para el contenido principal", + "blocks.appearance.command.description": + "Abrir las preferencias de tema y diseño", + "blocks.appearance.compact.description": + "Usar un ancho compacto para el contenido principal", "blocks.appearance.compact.title": "Diseño compacto", "blocks.appearance.description": "Preferencias de tema y diseño", "blocks.appearance.mode.dark": "Oscuro", - "blocks.appearance.mode.dark.description": "La interfaz siempre usará el tema oscuro", + "blocks.appearance.mode.dark.description": + "La interfaz siempre usará el tema oscuro", "blocks.appearance.mode.light": "Claro", - "blocks.appearance.mode.light.description": "La interfaz siempre usará el tema claro", + "blocks.appearance.mode.light.description": + "La interfaz siempre usará el tema claro", "blocks.appearance.mode.system": "Sistema", - "blocks.appearance.mode.system.description": "El tema de la interfaz seguirá la apariencia del sistema", + "blocks.appearance.mode.system.description": + "El tema de la interfaz seguirá la apariencia del sistema", "blocks.appearance.mode.title": "Modo de tema", "blocks.appearance.primaryColor": "Color principal", "blocks.appearance.theme.dark": "Tema oscuro", - "blocks.appearance.theme.dark.description": "Este tema se usa cuando el sistema está en modo oscuro", + "blocks.appearance.theme.dark.description": + "Este tema se usa cuando el sistema está en modo oscuro", "blocks.appearance.theme.light": "Tema claro", - "blocks.appearance.theme.light.description": "Este tema se usa cuando el sistema está en modo claro", + "blocks.appearance.theme.light.description": + "Este tema se usa cuando el sistema está en modo claro", "blocks.appearance.title": "Apariencia", "blocks.appearance.toggleTheme": "Cambiar tema", - "blocks.appearance.toggleTheme.description": "Cambiar entre los temas claro y oscuro", + "blocks.appearance.toggleTheme.description": + "Cambiar entre los temas claro y oscuro", } as const satisfies AppearanceMessageCatalog diff --git a/packages/blocks/src/blocks/appearance/locales/fr.ts b/packages/blocks/src/blocks/appearance/locales/fr.ts index 0cdb90e..eb10517 100644 --- a/packages/blocks/src/blocks/appearance/locales/fr.ts +++ b/packages/blocks/src/blocks/appearance/locales/fr.ts @@ -30,23 +30,31 @@ export const messages = { "blocks.appearance.color.violet": "Violet", "blocks.appearance.color.yellow": "Jaune", "blocks.appearance.color.zinc": "Zinc", - "blocks.appearance.command.description": "Ouvrir les préférences de thème et de mise en page", - "blocks.appearance.compact.description": "Utiliser une largeur compacte pour le contenu principal", + "blocks.appearance.command.description": + "Ouvrir les préférences de thème et de mise en page", + "blocks.appearance.compact.description": + "Utiliser une largeur compacte pour le contenu principal", "blocks.appearance.compact.title": "Mise en page compacte", "blocks.appearance.description": "Préférences de thème et de mise en page", "blocks.appearance.mode.dark": "Sombre", - "blocks.appearance.mode.dark.description": "L’interface utilisera toujours le thème sombre", + "blocks.appearance.mode.dark.description": + "L’interface utilisera toujours le thème sombre", "blocks.appearance.mode.light": "Clair", - "blocks.appearance.mode.light.description": "L’interface utilisera toujours le thème clair", + "blocks.appearance.mode.light.description": + "L’interface utilisera toujours le thème clair", "blocks.appearance.mode.system": "Système", - "blocks.appearance.mode.system.description": "Le thème de l’interface suivra l’apparence du système", + "blocks.appearance.mode.system.description": + "Le thème de l’interface suivra l’apparence du système", "blocks.appearance.mode.title": "Mode du thème", "blocks.appearance.primaryColor": "Couleur principale", "blocks.appearance.theme.dark": "Thème sombre", - "blocks.appearance.theme.dark.description": "Ce thème est utilisé lorsque le système est en mode sombre", + "blocks.appearance.theme.dark.description": + "Ce thème est utilisé lorsque le système est en mode sombre", "blocks.appearance.theme.light": "Thème clair", - "blocks.appearance.theme.light.description": "Ce thème est utilisé lorsque le système est en mode clair", + "blocks.appearance.theme.light.description": + "Ce thème est utilisé lorsque le système est en mode clair", "blocks.appearance.title": "Apparence", "blocks.appearance.toggleTheme": "Changer de thème", - "blocks.appearance.toggleTheme.description": "Basculer entre les thèmes clair et sombre", + "blocks.appearance.toggleTheme.description": + "Basculer entre les thèmes clair et sombre", } as const satisfies AppearanceMessageCatalog diff --git a/packages/blocks/src/blocks/appearance/locales/ja.ts b/packages/blocks/src/blocks/appearance/locales/ja.ts index b26ec7f..14f269b 100644 --- a/packages/blocks/src/blocks/appearance/locales/ja.ts +++ b/packages/blocks/src/blocks/appearance/locales/ja.ts @@ -31,7 +31,8 @@ export const messages = { "blocks.appearance.color.yellow": "イエロー", "blocks.appearance.color.zinc": "ジンク", "blocks.appearance.command.description": "テーマとレイアウト設定を開く", - "blocks.appearance.compact.description": "メインページのコンテンツをコンパクトな幅で表示します", + "blocks.appearance.compact.description": + "メインページのコンテンツをコンパクトな幅で表示します", "blocks.appearance.compact.title": "コンパクトレイアウト", "blocks.appearance.description": "テーマとレイアウトの設定", "blocks.appearance.mode.dark": "ダーク", @@ -39,14 +40,18 @@ export const messages = { "blocks.appearance.mode.light": "ライト", "blocks.appearance.mode.light.description": "常にライトテーマを使用します", "blocks.appearance.mode.system": "システム", - "blocks.appearance.mode.system.description": "インターフェースのテーマをシステムの外観に合わせます", + "blocks.appearance.mode.system.description": + "インターフェースのテーマをシステムの外観に合わせます", "blocks.appearance.mode.title": "テーマモード", "blocks.appearance.primaryColor": "プライマリカラー", "blocks.appearance.theme.dark": "ダークテーマ", - "blocks.appearance.theme.dark.description": "システムがダークモードのときに使用するテーマです", + "blocks.appearance.theme.dark.description": + "システムがダークモードのときに使用するテーマです", "blocks.appearance.theme.light": "ライトテーマ", - "blocks.appearance.theme.light.description": "システムがライトモードのときに使用するテーマです", + "blocks.appearance.theme.light.description": + "システムがライトモードのときに使用するテーマです", "blocks.appearance.title": "外観", "blocks.appearance.toggleTheme": "テーマを切り替える", - "blocks.appearance.toggleTheme.description": "ライトテーマとダークテーマを切り替えます", + "blocks.appearance.toggleTheme.description": + "ライトテーマとダークテーマを切り替えます", } as const satisfies AppearanceMessageCatalog diff --git a/packages/blocks/src/blocks/appearance/locales/ko.ts b/packages/blocks/src/blocks/appearance/locales/ko.ts index 6604841..e35ef3b 100644 --- a/packages/blocks/src/blocks/appearance/locales/ko.ts +++ b/packages/blocks/src/blocks/appearance/locales/ko.ts @@ -31,22 +31,29 @@ export const messages = { "blocks.appearance.color.yellow": "노란색", "blocks.appearance.color.zinc": "아연색", "blocks.appearance.command.description": "테마 및 레이아웃 환경설정 열기", - "blocks.appearance.compact.description": "기본 페이지 콘텐츠에 좁은 너비를 사용합니다", + "blocks.appearance.compact.description": + "기본 페이지 콘텐츠에 좁은 너비를 사용합니다", "blocks.appearance.compact.title": "컴팩트 레이아웃", "blocks.appearance.description": "테마 및 레이아웃 환경설정", "blocks.appearance.mode.dark": "어둡게", - "blocks.appearance.mode.dark.description": "인터페이스에서 항상 어두운 테마를 사용합니다", + "blocks.appearance.mode.dark.description": + "인터페이스에서 항상 어두운 테마를 사용합니다", "blocks.appearance.mode.light": "밝게", - "blocks.appearance.mode.light.description": "인터페이스에서 항상 밝은 테마를 사용합니다", + "blocks.appearance.mode.light.description": + "인터페이스에서 항상 밝은 테마를 사용합니다", "blocks.appearance.mode.system": "시스템", - "blocks.appearance.mode.system.description": "인터페이스 테마가 시스템 화면 모드를 따릅니다", + "blocks.appearance.mode.system.description": + "인터페이스 테마가 시스템 화면 모드를 따릅니다", "blocks.appearance.mode.title": "테마 모드", "blocks.appearance.primaryColor": "주요 색상", "blocks.appearance.theme.dark": "어두운 테마", - "blocks.appearance.theme.dark.description": "시스템이 어두운 모드일 때 사용하는 테마입니다", + "blocks.appearance.theme.dark.description": + "시스템이 어두운 모드일 때 사용하는 테마입니다", "blocks.appearance.theme.light": "밝은 테마", - "blocks.appearance.theme.light.description": "시스템이 밝은 모드일 때 사용하는 테마입니다", + "blocks.appearance.theme.light.description": + "시스템이 밝은 모드일 때 사용하는 테마입니다", "blocks.appearance.title": "화면 모양", "blocks.appearance.toggleTheme": "테마 전환", - "blocks.appearance.toggleTheme.description": "밝은 테마와 어두운 테마 사이를 전환합니다", + "blocks.appearance.toggleTheme.description": + "밝은 테마와 어두운 테마 사이를 전환합니다", } as const satisfies AppearanceMessageCatalog diff --git a/packages/blocks/src/blocks/appearance/locales/zh-Hans.ts b/packages/blocks/src/blocks/appearance/locales/zh-Hans.ts index b55ec32..087c680 100644 --- a/packages/blocks/src/blocks/appearance/locales/zh-Hans.ts +++ b/packages/blocks/src/blocks/appearance/locales/zh-Hans.ts @@ -43,9 +43,11 @@ export const messages = { "blocks.appearance.mode.title": "主题模式", "blocks.appearance.primaryColor": "主要颜色", "blocks.appearance.theme.dark": "深色主题", - "blocks.appearance.theme.dark.description": "当系统设置为深色模式时,将使用此主题", + "blocks.appearance.theme.dark.description": + "当系统设置为深色模式时,将使用此主题", "blocks.appearance.theme.light": "浅色主题", - "blocks.appearance.theme.light.description": "当系统设置为浅色模式时,将使用此主题", + "blocks.appearance.theme.light.description": + "当系统设置为浅色模式时,将使用此主题", "blocks.appearance.title": "界面外观", "blocks.appearance.toggleTheme": "切换主题", "blocks.appearance.toggleTheme.description": "在浅色与深色主题之间切换", diff --git a/packages/blocks/src/blocks/appearance/themes.ts b/packages/blocks/src/blocks/appearance/themes.ts index 32260fd..d8e8751 100644 --- a/packages/blocks/src/blocks/appearance/themes.ts +++ b/packages/blocks/src/blocks/appearance/themes.ts @@ -1,5 +1,11 @@ export type BaseColor = - "neutral" | "stone" | "zinc" | "mauve" | "olive" | "mist" | "taupe" + | "neutral" + | "stone" + | "zinc" + | "mauve" + | "olive" + | "mist" + | "taupe" export type AccentColor = | "amber" diff --git a/packages/blocks/src/blocks/appearance/ui-state.tsx b/packages/blocks/src/blocks/appearance/ui-state.tsx index abef254..77d8aaa 100644 --- a/packages/blocks/src/blocks/appearance/ui-state.tsx +++ b/packages/blocks/src/blocks/appearance/ui-state.tsx @@ -131,13 +131,14 @@ export function UiStateProvider({ storeRef.current.getSnapshot, storeRef.current.getServerSnapshot ) + const themeMode = state["theme-mode"] React.useLayoutEffect(() => { applyUiState(state) }, [state]) React.useEffect(() => { - if (state["theme-mode"] !== "system") return + if (themeMode !== "system") return const mediaQuery = window.matchMedia(systemThemeQuery) const applySystemTheme = () => { @@ -147,7 +148,7 @@ export function UiStateProvider({ mediaQuery.addEventListener("change", applySystemTheme) return () => mediaQuery.removeEventListener("change", applySystemTheme) - }, [state["theme-mode"]]) + }, [themeMode]) const contextValue = React.useMemo( () => ({ diff --git a/packages/blocks/src/blocks/layout/sidebar-state.tsx b/packages/blocks/src/blocks/layout/sidebar-state.tsx index e0e3a13..dcd4b6b 100644 --- a/packages/blocks/src/blocks/layout/sidebar-state.tsx +++ b/packages/blocks/src/blocks/layout/sidebar-state.tsx @@ -25,7 +25,7 @@ export function SidebarStateProvider({ const contextValue = React.useMemo( () => ({ isCollapsed, setCollapsed }), - [isCollapsed] + [isCollapsed, setCollapsed] ) return ( diff --git a/packages/blocks/src/blocks/navigation/navigation-button.tsx b/packages/blocks/src/blocks/navigation/navigation-button.tsx index 544da03..f6630cd 100644 --- a/packages/blocks/src/blocks/navigation/navigation-button.tsx +++ b/packages/blocks/src/blocks/navigation/navigation-button.tsx @@ -22,7 +22,9 @@ export interface NavigationButtonProps extends Omit< layout?: "inline" | "stacked" | "responsive" className?: string | (() => string | undefined) | undefined style?: - React.CSSProperties | (() => React.CSSProperties | undefined) | undefined + | React.CSSProperties + | (() => React.CSSProperties | undefined) + | undefined trailing?: React.ReactNode | (() => React.ReactNode) | undefined } diff --git a/packages/blocks/src/blocks/notifications/types.ts b/packages/blocks/src/blocks/notifications/types.ts index e1997b5..c628f63 100644 --- a/packages/blocks/src/blocks/notifications/types.ts +++ b/packages/blocks/src/blocks/notifications/types.ts @@ -1,7 +1,11 @@ import type { IconData } from "../../components/icon" export type NotificationTone = - "destructive" | "info" | "neutral" | "success" | "warning" + | "destructive" + | "info" + | "neutral" + | "success" + | "warning" export interface NotificationAvatarMedia { alt?: string diff --git a/packages/i18n/package.json b/packages/i18n/package.json index ecefbbd..63d46ed 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -10,7 +10,6 @@ "workspace-i18n": "./src/cli/index.ts" }, "scripts": { - "format": "prettier --write \"**/*.{css,json,ts,tsx}\"", "test": "vitest run", "typecheck": "tsc --noEmit" }, diff --git a/packages/i18n/src/devtool/app/index.html b/packages/i18n/src/devtool/app/index.html index cf6746b..14702e5 100644 --- a/packages/i18n/src/devtool/app/index.html +++ b/packages/i18n/src/devtool/app/index.html @@ -2,10 +2,7 @@ - + Message Studio @@ -14,4 +11,3 @@ - diff --git a/packages/i18n/src/devtool/message-panel.test.tsx b/packages/i18n/src/devtool/message-panel.test.tsx index 885a396..0cff36a 100644 --- a/packages/i18n/src/devtool/message-panel.test.tsx +++ b/packages/i18n/src/devtool/message-panel.test.tsx @@ -86,7 +86,8 @@ describe("MessagePanel", () => { it("keeps the current content visible during a background refresh", async () => { let resolveRefresh: - ((messages: readonly DevtoolMessage[]) => void) | undefined + | ((messages: readonly DevtoolMessage[]) => void) + | undefined const repository: MessageRepository = { getMessages: vi .fn() diff --git a/packages/i18n/src/runtime/types.ts b/packages/i18n/src/runtime/types.ts index 511c852..98dff35 100644 --- a/packages/i18n/src/runtime/types.ts +++ b/packages/i18n/src/runtime/types.ts @@ -21,7 +21,8 @@ export type MessageCatalog = Record export type MessageCatalogs = Record export type MissingTranslationHandler = - string | ((locale: string, id: string) => string) + | string + | ((locale: string, id: string) => string) export type LocaleDirection = "ltr" | "rtl" diff --git a/packages/ui/package.json b/packages/ui/package.json index 96f7c41..42cd95d 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -4,7 +4,6 @@ "type": "module", "private": true, "scripts": { - "format": "prettier --write \"**/*.{ts,tsx}\"", "typecheck": "tsc --noEmit" }, "dependencies": { @@ -31,7 +30,6 @@ }, "devDependencies": { "@tailwindcss/vite": "^4", - "@turbo/gen": "^2.9.15", "@types/node": "^24", "@types/react": "^19", "@types/react-dom": "^19", diff --git a/packages/ui/src/components/accordion.tsx b/packages/ui/src/components/accordion.tsx index 2d24444..c824f83 100644 --- a/packages/ui/src/components/accordion.tsx +++ b/packages/ui/src/components/accordion.tsx @@ -39,8 +39,14 @@ function AccordionTrigger({ {...props} > {children} - - + + ) diff --git a/packages/ui/src/components/alert-dialog.tsx b/packages/ui/src/components/alert-dialog.tsx index e2b37ff..8cefbf0 100644 --- a/packages/ui/src/components/alert-dialog.tsx +++ b/packages/ui/src/components/alert-dialog.tsx @@ -50,7 +50,7 @@ function AlertDialogContent({ data-slot="alert-dialog-content" data-size={size} className={cn( - "group/alert-dialog-content fixed top-1/2 start-1/2 z-50 grid w-full -translate-x-1/2 rtl:translate-x-1/2 -translate-y-1/2 gap-6 rounded-xl bg-popover p-6 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-lg data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", + "group/alert-dialog-content fixed start-1/2 top-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-6 rounded-xl bg-popover p-6 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-lg rtl:translate-x-1/2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className )} {...props} diff --git a/packages/ui/src/components/alert.tsx b/packages/ui/src/components/alert.tsx index 4fb2b55..51cb3c1 100644 --- a/packages/ui/src/components/alert.tsx +++ b/packages/ui/src/components/alert.tsx @@ -67,7 +67,7 @@ function AlertAction({ className, ...props }: React.ComponentProps<"div">) { return (
) diff --git a/packages/ui/src/components/anchored-surface.tsx b/packages/ui/src/components/anchored-surface.tsx index ef78602..feef7b7 100644 --- a/packages/ui/src/components/anchored-surface.tsx +++ b/packages/ui/src/components/anchored-surface.tsx @@ -69,7 +69,14 @@ interface ElementDimensions { } export type AnchoredSurfaceRadiusPreset = - "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" + | "xs" + | "sm" + | "md" + | "lg" + | "xl" + | "2xl" + | "3xl" + | "4xl" export type AnchoredSurfaceCornerRadius = number | AnchoredSurfaceRadiusPreset diff --git a/packages/ui/src/components/attachment.tsx b/packages/ui/src/components/attachment.tsx index 9866445..dd6b81c 100644 --- a/packages/ui/src/components/attachment.tsx +++ b/packages/ui/src/components/attachment.tsx @@ -134,7 +134,7 @@ function AttachmentActions({
- + ) diff --git a/packages/ui/src/components/combobox.tsx b/packages/ui/src/components/combobox.tsx index cb5d73d..e86bd3a 100644 --- a/packages/ui/src/components/combobox.tsx +++ b/packages/ui/src/components/combobox.tsx @@ -110,7 +110,10 @@ function ComboboxContent({ @@ -140,7 +143,7 @@ function ComboboxItem({ @@ -134,7 +137,7 @@ function ContextMenuSubTrigger({ {...props} > {children} - + ) } @@ -166,7 +169,7 @@ function ContextMenuCheckboxItem({ data-slot="context-menu-checkbox-item" data-inset={inset} className={cn( - "relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pe-8 ps-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:ps-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", + "relative flex cursor-default items-center gap-2 rounded-sm py-1.5 ps-2 pe-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:ps-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className )} checked={checked} @@ -174,8 +177,7 @@ function ContextMenuCheckboxItem({ > - + {children} @@ -207,15 +209,14 @@ function ContextMenuRadioItem({ data-slot="context-menu-radio-item" data-inset={inset} className={cn( - "relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pe-8 ps-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:ps-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", + "relative flex cursor-default items-center gap-2 rounded-sm py-1.5 ps-2 pe-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:ps-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className )} {...props} > - + {children} diff --git a/packages/ui/src/components/drawer.tsx b/packages/ui/src/components/drawer.tsx index d9c1b0f..9fc8d5f 100644 --- a/packages/ui/src/components/drawer.tsx +++ b/packages/ui/src/components/drawer.tsx @@ -148,9 +148,9 @@ function DrawerContent({ // Direction: up. "data-[swipe-direction=up]:top-0 data-[swipe-direction=up]:origin-top data-[swipe-direction=up]:[--closed-transform:translate3d(0,calc(-100%-var(--drawer-inset,0px)-2px),0)] data-[swipe-direction=up]:[--translate-y:calc(var(--drawer-snap-point-offset,0px)+var(--drawer-swipe-movement-y)+var(--stack-peek-offset)+(var(--stack-shrink)*var(--stack-height)))]", // Direction: left. - "data-[swipe-direction=left]:start-0 data-[swipe-direction=left]:origin-start data-[swipe-direction=left]:[--closed-transform:translate3d(calc(-100%-var(--drawer-inset,0px)-2px),0,0)] data-[swipe-direction=left]:[--translate-x:calc(var(--drawer-swipe-movement-x)+var(--stack-peek-offset)+(var(--stack-shrink)*100%))]", + "data-[swipe-direction=left]:origin-start data-[swipe-direction=left]:start-0 data-[swipe-direction=left]:[--closed-transform:translate3d(calc(-100%-var(--drawer-inset,0px)-2px),0,0)] data-[swipe-direction=left]:[--translate-x:calc(var(--drawer-swipe-movement-x)+var(--stack-peek-offset)+(var(--stack-shrink)*100%))]", // Direction: right. - "data-[swipe-direction=right]:end-0 data-[swipe-direction=right]:origin-end data-[swipe-direction=right]:[--closed-transform:translate3d(calc(100%+var(--drawer-inset,0px)+2px),0,0)] data-[swipe-direction=right]:[--translate-x:calc(var(--drawer-swipe-movement-x)-var(--stack-peek-offset)-(var(--stack-shrink)*100%))]", + "data-[swipe-direction=right]:origin-end data-[swipe-direction=right]:end-0 data-[swipe-direction=right]:[--closed-transform:translate3d(calc(100%+var(--drawer-inset,0px)+2px),0,0)] data-[swipe-direction=right]:[--translate-x:calc(var(--drawer-swipe-movement-x)-var(--stack-peek-offset)-(var(--stack-shrink)*100%))]", className )} {...props} diff --git a/packages/ui/src/components/input-otp.tsx b/packages/ui/src/components/input-otp.tsx index d253965..ab5d250 100644 --- a/packages/ui/src/components/input-otp.tsx +++ b/packages/ui/src/components/input-otp.tsx @@ -76,8 +76,7 @@ function InputOTPSeparator({ ...props }: React.ComponentProps<"div">) { role="separator" {...props} > - +
) } diff --git a/packages/ui/src/components/menubar.tsx b/packages/ui/src/components/menubar.tsx index 2a020b0..df55114 100644 --- a/packages/ui/src/components/menubar.tsx +++ b/packages/ui/src/components/menubar.tsx @@ -78,7 +78,10 @@ function MenubarContent({ align={align} alignOffset={alignOffset} sideOffset={sideOffset} - className={cn("min-w-36 rounded-md bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-start-2 data-[side=inline-start]:slide-in-from-end-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95", className )} + className={cn( + "min-w-36 rounded-md bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-start-2 data-[side=inline-start]:slide-in-from-end-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95", + className + )} {...props} /> ) @@ -118,7 +121,7 @@ function MenubarCheckboxItem({ data-slot="menubar-checkbox-item" data-inset={inset} className={cn( - "relative flex cursor-default items-center gap-2 rounded-md py-1.5 pe-2 ps-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:ps-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0", + "relative flex cursor-default items-center gap-2 rounded-md py-1.5 ps-8 pe-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:ps-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0", className )} checked={checked} @@ -126,8 +129,7 @@ function MenubarCheckboxItem({ > - + {children} @@ -154,15 +156,14 @@ function MenubarRadioItem({ data-slot="menubar-radio-item" data-inset={inset} className={cn( - "relative flex cursor-default items-center gap-2 rounded-md py-1.5 pe-2 ps-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:ps-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", + "relative flex cursor-default items-center gap-2 rounded-md py-1.5 ps-8 pe-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:ps-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className )} {...props} > - + {children} @@ -252,7 +253,10 @@ function MenubarSubContent({ return ( ) diff --git a/packages/ui/src/components/message-scroller.tsx b/packages/ui/src/components/message-scroller.tsx index de36fd1..1f6b1f3 100644 --- a/packages/ui/src/components/message-scroller.tsx +++ b/packages/ui/src/components/message-scroller.tsx @@ -97,7 +97,7 @@ function MessageScrollerButton({ data-size={size} direction={direction} className={cn( - "absolute inset-s-1/2 -translate-x-1/2 rtl:translate-x-1/2 border-border bg-background text-foreground transition-[translate,scale,opacity] duration-200 hover:bg-muted hover:text-foreground data-[active=false]:pointer-events-none data-[active=false]:scale-95 data-[active=false]:opacity-0 data-[active=false]:duration-400 data-[active=false]:ease-[cubic-bezier(0.7,0,0.84,0)] data-[active=true]:translate-y-0 data-[active=true]:scale-100 data-[active=true]:opacity-100 data-[active=true]:ease-[cubic-bezier(0.23,1,0.32,1)] data-[direction=end]:bottom-4 data-[direction=end]:data-[active=false]:translate-y-full data-[direction=start]:top-4 data-[direction=start]:data-[active=false]:-translate-y-full rtl:translate-x-1/2 data-[direction=start]:[&_svg]:rotate-180", + "absolute inset-s-1/2 -translate-x-1/2 border-border bg-background text-foreground transition-[translate,scale,opacity] duration-200 hover:bg-muted hover:text-foreground data-[active=false]:pointer-events-none data-[active=false]:scale-95 data-[active=false]:opacity-0 data-[active=false]:duration-400 data-[active=false]:ease-[cubic-bezier(0.7,0,0.84,0)] data-[active=true]:translate-y-0 data-[active=true]:scale-100 data-[active=true]:opacity-100 data-[active=true]:ease-[cubic-bezier(0.23,1,0.32,1)] data-[direction=end]:bottom-4 data-[direction=end]:data-[active=false]:translate-y-full data-[direction=start]:top-4 data-[direction=start]:data-[active=false]:-translate-y-full rtl:translate-x-1/2 data-[direction=start]:[&_svg]:rotate-180", className )} render={render ??