{ "extends": ["next/core-web-vitals"], "overrides": [ { "files": ["src/ui/**/*.{ts,tsx}"], "rules": { "no-restricted-imports": [ "error", { "patterns": [ { "group": [ "@/core/lib/*", "!@/core/lib/auth", "!@/core/lib/brainerce", "!@/core/lib/brainerce.server", "!@/core/lib/capabilities", "!@/core/lib/display-price", "!@/core/lib/image-hosts", "!@/core/lib/kit", "!@/core/lib/add-to-cart-error", "!@/core/lib/navigation", "!@/core/lib/product-options", "!@/core/lib/sanitize", "!@/core/lib/tracking", "!@/core/lib/sanitize-html", "!@/core/lib/translations", "!@/core/lib/use-currency", "!@/core/lib/utils" ], "message": "UI consumes data via @/core/hooks/* and @/core/providers/* — not core internals. (Approved presentation helpers are exempt.)" } ] } ] } }, { "files": ["src/core/**/*.{ts,tsx}"], "rules": { "no-restricted-imports": [ "error", { "patterns": [ { "group": ["@/ui/*"], "message": "core/ must never depend on presentation (ui/)." } ] } ] } } ] }