@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
JavaScript
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 };