import { Rule } from 'eslint';
const TAILWIND_FIXED_RE = /\bw-(?:\d+|\[\d+px\])\b/;
const rule: Rule.RuleModule = {
meta: {
type: 'suggestion',
docs: { description: 'Warn about fixed widths that harm responsiveness' },
schema: [],
},
create(context) {
return {
JSXAttribute(node: any) {
if (node.name?.name === 'className' || node.name?.name === 'class') {
const value = node.value?.value;
if (typeof value === 'string' && TAILWIND_FIXED_RE.test(value)) {
context.report({
node,
message: 'Avoid hard fixed widths. Use responsive utilities instead.',
});
}
}
},
};
},
};
export default rule;