This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

web/lint: flag non-canonical tailwind classes with eslint

the tailwind language server's suggestCanonicalClasses diagnostic only
runs inside an editor, so nothing catches these in CI.
eslint-plugin-better-tailwindcss exposes the same canonicalization as a
lint rule.

rootFontSize matters: without it the rule silently skips every px-based
rewrite, which is most of them.

Signed-off-by: eti <eti@eti.tf>

author
eti
committer
dawn
date (Jul 31, 2026, 10:57 PM +0300) commit 3ff6c49e parent 7c7d03b5 change-id wkkyxyyq
+232 -54
+16
web/eslint.config.js
··· 1 1 import storybook from "eslint-plugin-storybook"; 2 + import betterTailwindcss from "eslint-plugin-better-tailwindcss"; 2 3 import prettier from "eslint-config-prettier"; 3 4 import path from "node:path"; 4 5 import js from "@eslint/js"; ··· 33 34 extraFileExtensions: [".svelte"], 34 35 parser: ts.parser 35 36 } 37 + } 38 + }, 39 + { 40 + files: ["**/*.svelte", "**/*.svelte.ts", "**/*.svelte.js", "**/*.ts", "**/*.js"], 41 + plugins: { "better-tailwindcss": betterTailwindcss }, 42 + settings: { 43 + "better-tailwindcss": { 44 + entryPoint: "src/app.css", 45 + // without this the rule silently skips px -> spacing-scale rewrites. 46 + rootFontSize: 16 47 + } 48 + }, 49 + rules: { 50 + "better-tailwindcss/enforce-canonical-classes": "warn", 51 + "better-tailwindcss/no-deprecated-classes": "warn" 36 52 } 37 53 }, 38 54 {
+1
web/package.json
··· 46 46 "@vitest/coverage-v8": "4.1.10", 47 47 "eslint": "^10.7.0", 48 48 "eslint-config-prettier": "^10.1.8", 49 + "eslint-plugin-better-tailwindcss": "^4.7.0", 49 50 "eslint-plugin-storybook": "^10.5.0", 50 51 "eslint-plugin-svelte": "^3.20.0", 51 52 "globals": "^17.7.0",
+215 -54
web/pnpm-lock.yaml
··· 62 62 version: 5.2.1(storybook@10.5.0(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7)) 63 63 '@eslint/js': 64 64 specifier: ^10.0.1 65 - version: 10.0.1(eslint@10.7.0(jiti@2.7.0)) 65 + version: 10.0.1(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0)) 66 66 '@iconify-json/lucide': 67 67 specifier: ^1.2.117 68 68 version: 1.2.117 ··· 116 116 version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) 117 117 eslint: 118 118 specifier: ^10.7.0 119 - version: 10.7.0(jiti@2.7.0) 119 + version: 10.7.0(jiti@2.7.0)(supports-color@7.2.0) 120 120 eslint-config-prettier: 121 121 specifier: ^10.1.8 122 - version: 10.1.8(eslint@10.7.0(jiti@2.7.0)) 122 + version: 10.1.8(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0)) 123 + eslint-plugin-better-tailwindcss: 124 + specifier: ^4.7.0 125 + version: 4.7.0(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))(tailwindcss@4.3.2)(typescript@6.0.3) 123 126 eslint-plugin-storybook: 124 127 specifier: ^10.5.0 125 - version: 10.5.0(eslint@10.7.0(jiti@2.7.0))(storybook@10.5.0(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7))(typescript@6.0.3) 128 + version: 10.5.0(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))(storybook@10.5.0(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7))(supports-color@7.2.0)(typescript@6.0.3) 126 129 eslint-plugin-svelte: 127 130 specifier: ^3.20.0 128 - version: 3.20.0(eslint@10.7.0(jiti@2.7.0))(svelte@5.56.5(@typescript-eslint/types@8.64.0)) 131 + version: 3.20.0(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))(svelte@5.56.5(@typescript-eslint/types@8.64.0)) 129 132 globals: 130 133 specifier: ^17.7.0 131 134 version: 17.7.0 ··· 158 161 version: 6.0.3 159 162 typescript-eslint: 160 163 specifier: ^8.64.0 161 - version: 8.64.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3) 164 + version: 8.64.0(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) 162 165 unplugin-icons: 163 166 specifier: ^23.0.1 164 167 version: 23.0.1(svelte@5.56.5(@typescript-eslint/types@8.64.0)) ··· 529 532 resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} 530 533 engines: {node: ^20.19.0 || ^22.13.0 || >=24} 531 534 535 + '@eslint/css-tree@4.0.5': 536 + resolution: {integrity: sha512-iPmijIAq4hlIJB86PYmY/fcZORHtjphSqICDbwuw32A/JmkhZQ/K/6TjHE03zqf3n5yABpVcbRAMG8Mi9ojy8g==} 537 + engines: {node: ^20.19.0 || ^22.13.0 || >=24} 538 + 532 539 '@eslint/js@10.0.1': 533 540 resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} 534 541 engines: {node: ^20.19.0 || ^22.13.0 || >=24} ··· 879 886 resolution: {integrity: sha512-UqGPmo56KDfLlfXFAFIrNflHT8tFxWGEivWg3Zeyp4Uy2NlKN1FGPr6/BxcLGG3+kZ6Wp14g5Uj+n71boqZfiw==} 880 887 cpu: [x64] 881 888 os: [win32] 889 + 890 + '@pkgr/core@0.3.6': 891 + resolution: {integrity: sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==} 892 + engines: {node: ^14.18.0 || >=16.0.0} 882 893 883 894 '@playwright/test@1.61.1': 884 895 resolution: {integrity: sha512-8nKv6+0RJSL9FE4jYOEGXnPeM/Hg12qZpmqzZjRh3qM0Y7c3z1mrOTfFLids72RDQYVh9WpLEfR5WdpNX4fkig==} ··· 1541 1552 resolution: {integrity: sha512-mrtuL8Nsn6gi2H4mo5KMTp823M+3Q19Ew/i+Zlikq20tIMm99C3Ez0dCmkWWnxut20esQvTg8aUSEhMcAOXhEw==} 1542 1553 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1543 1554 1555 + '@valibot/to-json-schema@1.7.1': 1556 + resolution: {integrity: sha512-3qkmU6KXWh8GIThEAW3kuRHPQBMjWkKy+Ppz3WkUucx53DTpOa6siMn4xDGSOhlVyMrDaJTCTMLYPZVAIk1P0A==} 1557 + peerDependencies: 1558 + valibot: ^1.4.0 1559 + 1544 1560 '@vitest/browser-playwright@4.1.10': 1545 1561 resolution: {integrity: sha512-nMoXGEiRpT7m3W7NsbvrM2aKNwiNHZf+zEpUCvMteGjZFvfT96Q9fh7QyB98dvDWXiKvrLxA7bJ1mCOOv+JQPw==} 1546 1562 peerDependencies: ··· 1626 1642 resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} 1627 1643 engines: {node: '>=12'} 1628 1644 1645 + ansi-styles@4.3.0: 1646 + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 1647 + engines: {node: '>=8'} 1648 + 1629 1649 ansi-styles@5.2.0: 1630 1650 resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} 1631 1651 engines: {node: '>=10'} ··· 1683 1703 resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} 1684 1704 engines: {node: '>=18'} 1685 1705 1706 + chalk@4.1.2: 1707 + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1708 + engines: {node: '>=10'} 1709 + 1686 1710 check-error@2.1.3: 1687 1711 resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} 1688 1712 engines: {node: '>= 16'} ··· 1709 1733 clsx@2.1.1: 1710 1734 resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} 1711 1735 engines: {node: '>=6'} 1736 + 1737 + color-convert@2.0.1: 1738 + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1739 + engines: {node: '>=7.0.0'} 1740 + 1741 + color-name@1.1.4: 1742 + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1712 1743 1713 1744 commondir@1.0.1: 1714 1745 resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} ··· 1837 1868 resolution: {integrity: sha512-aNnGCvbJ/RIyWo1IuhNdVjnNF+EjH9wpzpNHt+ci/m9He9LJvUN8wrCcXjp9cWsGNAuvSpVFTx/vraAFQ8qGjQ==} 1838 1869 engines: {node: '>=10.13.0'} 1839 1870 1871 + enhanced-resolve@5.24.5: 1872 + resolution: {integrity: sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==} 1873 + engines: {node: '>=10.13.0'} 1874 + 1840 1875 entities@4.5.0: 1841 1876 resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 1842 1877 engines: {node: '>=0.12'} ··· 1874 1909 peerDependencies: 1875 1910 eslint: '>=7.0.0' 1876 1911 1912 + eslint-plugin-better-tailwindcss@4.7.0: 1913 + resolution: {integrity: sha512-lrdlVW4pzLPj/zX5HRqMhKPesGijDfRhnSRJMlNcsrCyJHsndmHCLKTiRNa1eREUZ6G3D3QjdLc+G4tlfGrmkw==} 1914 + engines: {node: ^20.19.0 || ^22.12.0 || >=23.0.0} 1915 + peerDependencies: 1916 + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 1917 + oxlint: ^1.35.0 1918 + tailwindcss: ^3.3.0 || ^4.1.17 1919 + peerDependenciesMeta: 1920 + eslint: 1921 + optional: true 1922 + oxlint: 1923 + optional: true 1924 + 1877 1925 eslint-plugin-storybook@10.5.0: 1878 1926 resolution: {integrity: sha512-UyhbK11baKAYqzyDUHlwDlm1aP/wxPMR0vFmsxA5984BGaPwarhoXUWng1Xa0cd9BdPbQ+zr/y8ADk6XxtwkYg==} 1879 1927 peerDependencies: ··· 2150 2198 json-stable-stringify-without-jsonify@1.0.1: 2151 2199 resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 2152 2200 2201 + json5@2.2.3: 2202 + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 2203 + engines: {node: '>=6'} 2204 + hasBin: true 2205 + 2153 2206 jsonc-parser@3.3.1: 2154 2207 resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} 2155 2208 ··· 2294 2347 markdown-it@14.3.0: 2295 2348 resolution: {integrity: sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==} 2296 2349 hasBin: true 2350 + 2351 + mdn-data@2.29.0: 2352 + resolution: {integrity: sha512-pVxQFCcaYUEAH853+v7yoI/qzhxXSq1bTb9obMYGYAN1c3Hen+XDCEvr296XhstrwlSTNgOR7mCSD4JPjbJe5A==} 2297 2353 2298 2354 mdurl@2.1.0: 2299 2355 resolution: {integrity: sha512-1+HBaOx0zi/dQWht8rNv9MYf9qqpqL/kxI0hXImU6Y547zM6Sni8BQibt7ifgMcYtQg41ao3Ivd6cnSM86inpg==} ··· 2306 2362 resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} 2307 2363 engines: {node: 18 || 20 || >=22} 2308 2364 2365 + minimist@1.2.8: 2366 + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 2367 + 2309 2368 mlly@1.8.2: 2310 2369 resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} 2311 2370 ··· 2642 2701 resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} 2643 2702 engines: {node: '>=12'} 2644 2703 2704 + strip-bom@3.0.0: 2705 + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 2706 + engines: {node: '>=4'} 2707 + 2645 2708 strip-indent@3.0.0: 2646 2709 resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 2647 2710 engines: {node: '>=8'} ··· 2687 2750 resolution: {integrity: sha512-P03YJmUy2JoOxYHb4Ka3oFat1hq2ko2it1MOItSjsJ4B6WgZPLc3+RyyU+57OGWhs3Ieq74EJpZtSnNXdAGgDw==} 2688 2751 engines: {node: '>=18'} 2689 2752 2753 + synckit@0.11.13: 2754 + resolution: {integrity: sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==} 2755 + engines: {node: ^14.18.0 || >=16.0.0} 2756 + 2690 2757 tagged-tag@1.0.0: 2691 2758 resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} 2692 2759 engines: {node: '>=20'} 2693 2760 2761 + tailwind-csstree@0.3.3: 2762 + resolution: {integrity: sha512-je9J5UYRsTJqAjYrIBMMlge8T/rreRd44pJxgG5Zx/zeo4kAC/liUKqzztRZrGlYRJLvIf2Cb1DVJMTXSzEShA==} 2763 + engines: {node: '>=18.18'} 2764 + peerDependencies: 2765 + '@eslint/css': '>=1.0.0' 2766 + peerDependenciesMeta: 2767 + '@eslint/css': 2768 + optional: true 2769 + 2694 2770 tailwind-merge@3.6.0: 2695 2771 resolution: {integrity: sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==} 2696 2772 ··· 2750 2826 ts-dedent@2.3.0: 2751 2827 resolution: {integrity: sha512-JfJeIHke7y2egdGGgRAvpCwYFUsHlM2gPcrVOxFkznt/4uzQ7HFmvE63iFHVLBJNDuyDOQgijDK/tXH/f6Msjg==} 2752 2828 engines: {node: '>=6.10'} 2829 + 2830 + tsconfig-paths-webpack-plugin@4.2.0: 2831 + resolution: {integrity: sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==} 2832 + engines: {node: '>=10.13.0'} 2833 + 2834 + tsconfig-paths@4.2.0: 2835 + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} 2836 + engines: {node: '>=6'} 2753 2837 2754 2838 tslib@2.8.1: 2755 2839 resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} ··· 3328 3412 '@esbuild/win32-x64@0.28.1': 3329 3413 optional: true 3330 3414 3331 - '@eslint-community/eslint-utils@4.9.1(eslint@10.7.0(jiti@2.7.0))': 3415 + '@eslint-community/eslint-utils@4.9.1(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))': 3332 3416 dependencies: 3333 - eslint: 10.7.0(jiti@2.7.0) 3417 + eslint: 10.7.0(jiti@2.7.0)(supports-color@7.2.0) 3334 3418 eslint-visitor-keys: 3.4.3 3335 3419 3336 3420 '@eslint-community/regexpp@4.12.2': {} 3337 3421 3338 - '@eslint/config-array@0.23.5': 3422 + '@eslint/config-array@0.23.5(supports-color@7.2.0)': 3339 3423 dependencies: 3340 3424 '@eslint/object-schema': 3.0.5 3341 - debug: 4.4.3 3425 + debug: 4.4.3(supports-color@7.2.0) 3342 3426 minimatch: 10.2.5 3343 3427 transitivePeerDependencies: 3344 3428 - supports-color ··· 3351 3435 dependencies: 3352 3436 '@types/json-schema': 7.0.15 3353 3437 3354 - '@eslint/js@10.0.1(eslint@10.7.0(jiti@2.7.0))': 3438 + '@eslint/css-tree@4.0.5': 3439 + dependencies: 3440 + mdn-data: 2.29.0 3441 + source-map-js: 1.2.1 3442 + 3443 + '@eslint/js@10.0.1(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))': 3355 3444 optionalDependencies: 3356 - eslint: 10.7.0(jiti@2.7.0) 3445 + eslint: 10.7.0(jiti@2.7.0)(supports-color@7.2.0) 3357 3446 3358 3447 '@eslint/object-schema@3.0.5': {} 3359 3448 ··· 3593 3682 3594 3683 '@oxc-resolver/binding-win32-x64-msvc@11.24.2': 3595 3684 optional: true 3685 + 3686 + '@pkgr/core@0.3.6': {} 3596 3687 3597 3688 '@playwright/test@1.61.1': 3598 3689 dependencies: ··· 4090 4181 4091 4182 '@types/trusted-types@2.0.7': {} 4092 4183 4093 - '@typescript-eslint/eslint-plugin@8.64.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3)': 4184 + '@typescript-eslint/eslint-plugin@8.64.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)': 4094 4185 dependencies: 4095 4186 '@eslint-community/regexpp': 4.12.2 4096 - '@typescript-eslint/parser': 8.64.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3) 4187 + '@typescript-eslint/parser': 8.64.0(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) 4097 4188 '@typescript-eslint/scope-manager': 8.64.0 4098 - '@typescript-eslint/type-utils': 8.64.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3) 4099 - '@typescript-eslint/utils': 8.64.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3) 4189 + '@typescript-eslint/type-utils': 8.64.0(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) 4190 + '@typescript-eslint/utils': 8.64.0(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) 4100 4191 '@typescript-eslint/visitor-keys': 8.64.0 4101 - eslint: 10.7.0(jiti@2.7.0) 4192 + eslint: 10.7.0(jiti@2.7.0)(supports-color@7.2.0) 4102 4193 ignore: 7.0.6 4103 4194 natural-compare: 1.4.0 4104 4195 ts-api-utils: 2.5.0(typescript@6.0.3) ··· 4106 4197 transitivePeerDependencies: 4107 4198 - supports-color 4108 4199 4109 - '@typescript-eslint/parser@8.64.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3)': 4200 + '@typescript-eslint/parser@8.64.0(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)': 4110 4201 dependencies: 4111 4202 '@typescript-eslint/scope-manager': 8.64.0 4112 4203 '@typescript-eslint/types': 8.64.0 4113 - '@typescript-eslint/typescript-estree': 8.64.0(typescript@6.0.3) 4204 + '@typescript-eslint/typescript-estree': 8.64.0(supports-color@7.2.0)(typescript@6.0.3) 4114 4205 '@typescript-eslint/visitor-keys': 8.64.0 4115 - debug: 4.4.3 4116 - eslint: 10.7.0(jiti@2.7.0) 4206 + debug: 4.4.3(supports-color@7.2.0) 4207 + eslint: 10.7.0(jiti@2.7.0)(supports-color@7.2.0) 4117 4208 typescript: 6.0.3 4118 4209 transitivePeerDependencies: 4119 4210 - supports-color 4120 4211 4121 - '@typescript-eslint/project-service@8.64.0(typescript@6.0.3)': 4212 + '@typescript-eslint/project-service@8.64.0(supports-color@7.2.0)(typescript@6.0.3)': 4122 4213 dependencies: 4123 4214 '@typescript-eslint/tsconfig-utils': 8.64.0(typescript@6.0.3) 4124 4215 '@typescript-eslint/types': 8.64.0 4125 - debug: 4.4.3 4216 + debug: 4.4.3(supports-color@7.2.0) 4126 4217 typescript: 6.0.3 4127 4218 transitivePeerDependencies: 4128 4219 - supports-color ··· 4136 4227 dependencies: 4137 4228 typescript: 6.0.3 4138 4229 4139 - '@typescript-eslint/type-utils@8.64.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3)': 4230 + '@typescript-eslint/type-utils@8.64.0(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)': 4140 4231 dependencies: 4141 4232 '@typescript-eslint/types': 8.64.0 4142 - '@typescript-eslint/typescript-estree': 8.64.0(typescript@6.0.3) 4143 - '@typescript-eslint/utils': 8.64.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3) 4144 - debug: 4.4.3 4145 - eslint: 10.7.0(jiti@2.7.0) 4233 + '@typescript-eslint/typescript-estree': 8.64.0(supports-color@7.2.0)(typescript@6.0.3) 4234 + '@typescript-eslint/utils': 8.64.0(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) 4235 + debug: 4.4.3(supports-color@7.2.0) 4236 + eslint: 10.7.0(jiti@2.7.0)(supports-color@7.2.0) 4146 4237 ts-api-utils: 2.5.0(typescript@6.0.3) 4147 4238 typescript: 6.0.3 4148 4239 transitivePeerDependencies: ··· 4150 4241 4151 4242 '@typescript-eslint/types@8.64.0': {} 4152 4243 4153 - '@typescript-eslint/typescript-estree@8.64.0(typescript@6.0.3)': 4244 + '@typescript-eslint/typescript-estree@8.64.0(supports-color@7.2.0)(typescript@6.0.3)': 4154 4245 dependencies: 4155 - '@typescript-eslint/project-service': 8.64.0(typescript@6.0.3) 4246 + '@typescript-eslint/project-service': 8.64.0(supports-color@7.2.0)(typescript@6.0.3) 4156 4247 '@typescript-eslint/tsconfig-utils': 8.64.0(typescript@6.0.3) 4157 4248 '@typescript-eslint/types': 8.64.0 4158 4249 '@typescript-eslint/visitor-keys': 8.64.0 4159 - debug: 4.4.3 4250 + debug: 4.4.3(supports-color@7.2.0) 4160 4251 minimatch: 10.2.5 4161 4252 semver: 7.8.5 4162 4253 tinyglobby: 0.2.17 ··· 4165 4256 transitivePeerDependencies: 4166 4257 - supports-color 4167 4258 4168 - '@typescript-eslint/utils@8.64.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3)': 4259 + '@typescript-eslint/utils@8.64.0(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)': 4169 4260 dependencies: 4170 - '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0(jiti@2.7.0)) 4261 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0)) 4171 4262 '@typescript-eslint/scope-manager': 8.64.0 4172 4263 '@typescript-eslint/types': 8.64.0 4173 - '@typescript-eslint/typescript-estree': 8.64.0(typescript@6.0.3) 4174 - eslint: 10.7.0(jiti@2.7.0) 4264 + '@typescript-eslint/typescript-estree': 8.64.0(supports-color@7.2.0)(typescript@6.0.3) 4265 + eslint: 10.7.0(jiti@2.7.0)(supports-color@7.2.0) 4175 4266 typescript: 6.0.3 4176 4267 transitivePeerDependencies: 4177 4268 - supports-color ··· 4180 4271 dependencies: 4181 4272 '@typescript-eslint/types': 8.64.0 4182 4273 eslint-visitor-keys: 5.0.1 4274 + 4275 + '@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@6.0.3))': 4276 + dependencies: 4277 + valibot: 1.4.2(typescript@6.0.3) 4183 4278 4184 4279 '@vitest/browser-playwright@4.1.10(playwright@1.61.1)(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(yaml@2.9.0))(vitest@4.1.10)': 4185 4280 dependencies: ··· 4308 4403 ansi-regex@5.0.1: {} 4309 4404 4310 4405 ansi-regex@6.2.2: {} 4406 + 4407 + ansi-styles@4.3.0: 4408 + dependencies: 4409 + color-convert: 2.0.1 4311 4410 4312 4411 ansi-styles@5.2.0: {} 4313 4412 ··· 4357 4456 4358 4457 chai@6.2.2: {} 4359 4458 4459 + chalk@4.1.2: 4460 + dependencies: 4461 + ansi-styles: 4.3.0 4462 + supports-color: 7.2.0 4463 + 4360 4464 check-error@2.1.3: {} 4361 4465 4362 4466 chokidar@4.0.3: ··· 4369 4473 4370 4474 clsx@2.1.1: {} 4371 4475 4476 + color-convert@2.0.1: 4477 + dependencies: 4478 + color-name: 1.1.4 4479 + 4480 + color-name@1.1.4: {} 4481 + 4372 4482 commondir@1.0.1: {} 4373 4483 4374 4484 confbox@0.1.8: {} ··· 4393 4503 4394 4504 dayjs@1.11.21: {} 4395 4505 4396 - debug@4.4.3: 4506 + debug@4.4.3(supports-color@7.2.0): 4397 4507 dependencies: 4398 4508 ms: 2.1.3 4509 + optionalDependencies: 4510 + supports-color: 7.2.0 4399 4511 4400 4512 dedent-js@1.0.1: {} 4401 4513 ··· 4467 4579 graceful-fs: 4.2.11 4468 4580 tapable: 2.3.3 4469 4581 4582 + enhanced-resolve@5.24.5: 4583 + dependencies: 4584 + graceful-fs: 4.2.11 4585 + tapable: 2.3.3 4586 + 4470 4587 entities@4.5.0: {} 4471 4588 4472 4589 entities@7.0.1: {} ··· 4510 4627 4511 4628 escape-string-regexp@4.0.0: {} 4512 4629 4513 - eslint-config-prettier@10.1.8(eslint@10.7.0(jiti@2.7.0)): 4630 + eslint-config-prettier@10.1.8(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0)): 4514 4631 dependencies: 4515 - eslint: 10.7.0(jiti@2.7.0) 4632 + eslint: 10.7.0(jiti@2.7.0)(supports-color@7.2.0) 4516 4633 4517 - eslint-plugin-storybook@10.5.0(eslint@10.7.0(jiti@2.7.0))(storybook@10.5.0(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7))(typescript@6.0.3): 4634 + eslint-plugin-better-tailwindcss@4.7.0(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))(tailwindcss@4.3.2)(typescript@6.0.3): 4635 + dependencies: 4636 + '@eslint/css-tree': 4.0.5 4637 + '@valibot/to-json-schema': 1.7.1(valibot@1.4.2(typescript@6.0.3)) 4638 + enhanced-resolve: 5.24.5 4639 + jiti: 2.7.0 4640 + synckit: 0.11.13 4641 + tailwind-csstree: 0.3.3 4642 + tailwindcss: 4.3.2 4643 + tsconfig-paths-webpack-plugin: 4.2.0 4644 + valibot: 1.4.2(typescript@6.0.3) 4645 + optionalDependencies: 4646 + eslint: 10.7.0(jiti@2.7.0)(supports-color@7.2.0) 4647 + transitivePeerDependencies: 4648 + - '@eslint/css' 4649 + - typescript 4650 + 4651 + eslint-plugin-storybook@10.5.0(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))(storybook@10.5.0(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7))(supports-color@7.2.0)(typescript@6.0.3): 4518 4652 dependencies: 4519 4653 '@typescript-eslint/types': 8.64.0 4520 - '@typescript-eslint/utils': 8.64.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3) 4521 - eslint: 10.7.0(jiti@2.7.0) 4654 + '@typescript-eslint/utils': 8.64.0(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) 4655 + eslint: 10.7.0(jiti@2.7.0)(supports-color@7.2.0) 4522 4656 storybook: 10.5.0(@types/react@19.2.17)(prettier@3.9.5)(react@19.2.7) 4523 4657 transitivePeerDependencies: 4524 4658 - supports-color 4525 4659 - typescript 4526 4660 4527 - eslint-plugin-svelte@3.20.0(eslint@10.7.0(jiti@2.7.0))(svelte@5.56.5(@typescript-eslint/types@8.64.0)): 4661 + eslint-plugin-svelte@3.20.0(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))(svelte@5.56.5(@typescript-eslint/types@8.64.0)): 4528 4662 dependencies: 4529 - '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0(jiti@2.7.0)) 4663 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0)) 4530 4664 '@jridgewell/sourcemap-codec': 1.5.5 4531 - eslint: 10.7.0(jiti@2.7.0) 4665 + eslint: 10.7.0(jiti@2.7.0)(supports-color@7.2.0) 4532 4666 esutils: 2.0.3 4533 4667 globals: 16.5.0 4534 4668 known-css-properties: 0.37.0 ··· 4560 4694 4561 4695 eslint-visitor-keys@5.0.1: {} 4562 4696 4563 - eslint@10.7.0(jiti@2.7.0): 4697 + eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0): 4564 4698 dependencies: 4565 - '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0(jiti@2.7.0)) 4699 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0)) 4566 4700 '@eslint-community/regexpp': 4.12.2 4567 - '@eslint/config-array': 0.23.5 4701 + '@eslint/config-array': 0.23.5(supports-color@7.2.0) 4568 4702 '@eslint/config-helpers': 0.6.0 4569 4703 '@eslint/core': 1.2.1 4570 4704 '@eslint/plugin-kit': 0.7.2 ··· 4574 4708 '@types/estree': 1.0.9 4575 4709 ajv: 6.15.0 4576 4710 cross-spawn: 7.0.6 4577 - debug: 4.4.3 4711 + debug: 4.4.3(supports-color@7.2.0) 4578 4712 escape-string-regexp: 4.0.0 4579 4713 eslint-scope: 9.1.2 4580 4714 eslint-visitor-keys: 5.0.1 ··· 4785 4919 4786 4920 json-stable-stringify-without-jsonify@1.0.1: {} 4787 4921 4922 + json5@2.2.3: {} 4923 + 4788 4924 jsonc-parser@3.3.1: {} 4789 4925 4790 4926 jsonfile@6.2.1: ··· 4911 5047 punycode.js: 2.3.1 4912 5048 uc.micro: 2.1.0 4913 5049 5050 + mdn-data@2.29.0: {} 5051 + 4914 5052 mdurl@2.1.0: {} 4915 5053 4916 5054 min-indent@1.0.1: {} ··· 4918 5056 minimatch@10.2.5: 4919 5057 dependencies: 4920 5058 brace-expansion: 5.0.7 5059 + 5060 + minimist@1.2.8: {} 4921 5061 4922 5062 mlly@1.8.2: 4923 5063 dependencies: ··· 5264 5404 dependencies: 5265 5405 ansi-regex: 6.2.2 5266 5406 5407 + strip-bom@3.0.0: {} 5408 + 5267 5409 strip-indent@3.0.0: 5268 5410 dependencies: 5269 5411 min-indent: 1.0.1 ··· 5333 5475 transitivePeerDependencies: 5334 5476 - '@typescript-eslint/types' 5335 5477 5478 + synckit@0.11.13: 5479 + dependencies: 5480 + '@pkgr/core': 0.3.6 5481 + 5336 5482 tagged-tag@1.0.0: {} 5483 + 5484 + tailwind-csstree@0.3.3: {} 5337 5485 5338 5486 tailwind-merge@3.6.0: {} 5339 5487 ··· 5372 5520 5373 5521 ts-dedent@2.3.0: {} 5374 5522 5523 + tsconfig-paths-webpack-plugin@4.2.0: 5524 + dependencies: 5525 + chalk: 4.1.2 5526 + enhanced-resolve: 5.21.6 5527 + tapable: 2.3.3 5528 + tsconfig-paths: 4.2.0 5529 + 5530 + tsconfig-paths@4.2.0: 5531 + dependencies: 5532 + json5: 2.2.3 5533 + minimist: 1.2.8 5534 + strip-bom: 3.0.0 5535 + 5375 5536 tslib@2.8.1: {} 5376 5537 5377 5538 type-check@0.4.0: ··· 5384 5545 dependencies: 5385 5546 tagged-tag: 1.0.0 5386 5547 5387 - typescript-eslint@8.64.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3): 5548 + typescript-eslint@8.64.0(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3): 5388 5549 dependencies: 5389 - '@typescript-eslint/eslint-plugin': 8.64.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3) 5390 - '@typescript-eslint/parser': 8.64.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3) 5391 - '@typescript-eslint/typescript-estree': 8.64.0(typescript@6.0.3) 5392 - '@typescript-eslint/utils': 8.64.0(eslint@10.7.0(jiti@2.7.0))(typescript@6.0.3) 5393 - eslint: 10.7.0(jiti@2.7.0) 5550 + '@typescript-eslint/eslint-plugin': 8.64.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) 5551 + '@typescript-eslint/parser': 8.64.0(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) 5552 + '@typescript-eslint/typescript-estree': 8.64.0(supports-color@7.2.0)(typescript@6.0.3) 5553 + '@typescript-eslint/utils': 8.64.0(eslint@10.7.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) 5554 + eslint: 10.7.0(jiti@2.7.0)(supports-color@7.2.0) 5394 5555 typescript: 6.0.3 5395 5556 transitivePeerDependencies: 5396 5557 - supports-color