@shopify/shop-minis-react
Version:
React component library for Shopify Shop Minis with Tailwind CSS v4 support (source-only, requires TypeScript)
61 lines (51 loc) • 1.48 kB
JavaScript
/**
* ESLint rule wrapper for stylelint to prevent font imports in Shop Minis
*/
import stylelint from 'stylelint'
const ruleName = 'plugin/no-font-imports'
const messages = stylelint.utils.ruleMessages(ruleName, {
rejected: 'Custom font imports are not allowed in Shop Minis',
})
const meta = {
url: '',
}
/** @type {import('stylelint').Rule} */
const ruleFunction = primary => {
return (root, result) => {
const validOptions = stylelint.utils.validateOptions(result, ruleName, {
actual: primary,
possible: [true],
})
if (!validOptions) return
root.walkAtRules('import', atRule => {
const importPath = atRule.params
// Check for common font-related URLs
if (
importPath.includes('fonts.googleapis.com') ||
importPath.includes('fonts.gstatic.com') ||
importPath.includes('use.typekit.net') ||
importPath.includes('fast.fonts.net') ||
/font/i.test(importPath)
) {
stylelint.utils.report({
message: messages.rejected,
node: atRule,
result,
ruleName,
})
}
})
root.walkAtRules('font-face', atRule => {
stylelint.utils.report({
message: messages.rejected,
node: atRule,
result,
ruleName,
})
})
}
}
ruleFunction.ruleName = ruleName
ruleFunction.messages = messages
ruleFunction.meta = meta
export default stylelint.createPlugin(ruleName, ruleFunction)