UNPKG

@shayanthenerd/eslint-config

Version:

A modern, flexible ESLint configuration for enforcing best practices and maintaining a consistent coding style

98 lines (97 loc) 2.75 kB
import { isEnabled } from "../utils/isEnabled.mjs"; import { defaultOptions } from "../helpers/options/defaultOptions.mjs"; //#region src/rules/css.ts const allowedPhysicalUnits = [ "cqh", "cqw", "dvh", "dvw", "lvh", "lvw", "svh", "svw", "vh", "vw" ]; const allowedPhysicalProperties = [ "top", "bottom", "padding-top", "padding-bottom", "margin-top", "margin-bottom", "border-top", "border-top-color", "border-top-style", "border-top-width", "border-bottom", "border-bottom-color", "border-bottom-style", "border-bottom-width", "width", "min-width", "max-width", "height", "min-height", "max-height", "overflow-x", "overflow-y", "overscroll-behavior-x", "overscroll-behavior-y", "scroll-padding-top", "scroll-padding-bottom", "scroll-margin-top", "scroll-margin-bottom", "contain-intrinsic-width", "contain-intrinsic-height" ]; function getCssRules(options) { const { unicorn, tailwind, baseline } = options.configs; const { allowedAtRules: userAllowedAtRules, allowedFunctions: userAllowedFunctions, allowedMediaConditions: userAllowedMediaConditions, allowedProperties: userAllowedProperties, allowedPropertyValues: userAllowedPropertyValues, allowedSelectors: userAllowedSelectors, allowedUnits: userAllowedUnits } = isEnabled(baseline) ? baseline.css : defaultOptions.configs.baseline.css; const cssRules = { "css/font-family-fallbacks": "warn", "css/no-duplicate-imports": "error", "css/no-duplicate-keyframe-selectors": "error", "css/no-empty-blocks": "error", "css/no-important": "warn", "css/no-invalid-at-rule-placement": "error", "css/no-invalid-at-rules": isEnabled(tailwind) ? "off" : "error", "css/no-invalid-named-grid-areas": "error", "css/no-invalid-properties": ["error", { allowUnknownVariables: true }], "css/no-unmatchable-selectors": "error", "css/prefer-logical-properties": ["error", { allowUnits: allowedPhysicalUnits, allowProperties: allowedPhysicalProperties }], "css/relative-font-units": ["warn", { allowUnits: [ "cap", "ch", "em", "ex", "ic", "lh", "rcap", "rch", "rem", "ric", "rlh" ] }], "css/use-baseline": isEnabled(baseline) ? ["warn", { available: baseline.baseline, allowAtRules: userAllowedAtRules, allowFunctions: userAllowedFunctions, allowMediaConditions: userAllowedMediaConditions, allowProperties: userAllowedProperties, allowPropertyValues: userAllowedPropertyValues, allowSelectors: userAllowedSelectors, allowUnits: userAllowedUnits }] : "off" }; if (isEnabled(unicorn)) { cssRules["unicorn/no-shorthand-property-overrides"] = "warn"; cssRules["unicorn/prefer-explicit-viewport-units"] = "warn"; } return cssRules; } //#endregion export { getCssRules };