diff options
Diffstat (limited to '_ds/pantograph-design-system-56a1c74e-41c1-486b-ba3c-4eabdfacef31/_adherence.oxlintrc.json')
| -rw-r--r-- | _ds/pantograph-design-system-56a1c74e-41c1-486b-ba3c-4eabdfacef31/_adherence.oxlintrc.json | 425 |
1 files changed, 425 insertions, 0 deletions
diff --git a/_ds/pantograph-design-system-56a1c74e-41c1-486b-ba3c-4eabdfacef31/_adherence.oxlintrc.json b/_ds/pantograph-design-system-56a1c74e-41c1-486b-ba3c-4eabdfacef31/_adherence.oxlintrc.json new file mode 100644 index 0000000..d745f07 --- /dev/null +++ b/_ds/pantograph-design-system-56a1c74e-41c1-486b-ba3c-4eabdfacef31/_adherence.oxlintrc.json @@ -0,0 +1,425 @@ +{ + "plugins": [ + "react", + "import" + ], + "rules": { + "react/forbid-elements": [ + "warn", + { + "forbid": [] + } + ], + "no-restricted-imports": [ + "warn", + { + "patterns": [ + { + "group": [ + "components/code/**", + "components/core/**", + "components/forms/**", + "components/navigation/**", + "ui_kits/docs/**", + "ui_kits/home/**" + ], + "message": "Import design-system components from 'index.js', not component internals." + } + ] + } + ], + "no-restricted-syntax": [ + "warn", + { + "selector": "Literal[value=/#[0-9a-fA-F]{3,8}\\b/]", + "message": "Raw hex color — use a design-system color token via var()." + }, + { + "selector": "Literal[value=/\\b\\d+px\\b/]", + "message": "Raw px value — use a design-system spacing token via var()." + }, + { + "selector": "Literal[value=/font-family\\s*:\\s*(?!['\\\"]?(?:IBM Plex Mono|Saira Condensed))/i]", + "message": "Font not provided by the design system. Available: IBM Plex Mono, Saira Condensed." + }, + { + "selector": "JSXOpeningElement[name.name='Badge'] > JSXAttribute > JSXIdentifier[name!=/^(?:variant|dot|children|key|ref|className|style|children)$/]", + "message": "<Badge> doesn't accept that prop. Declared props: variant, dot, children." + }, + { + "selector": "JSXOpeningElement[name.name='Badge'] > JSXAttribute[name.name='variant'] > Literal[value!=/^(?:neutral|danger|success|ink|outline)$/]", + "message": "<Badge> variant must be one of 'neutral' | 'danger' | 'success' | 'ink' | 'outline'." + }, + { + "selector": "JSXOpeningElement[name.name='Button'] > JSXAttribute > JSXIdentifier[name!=/^(?:variant|size|block|icon|iconRight|as|children|key|ref|className|style|children)$/]", + "message": "<Button> doesn't accept that prop. Declared props: variant, size, block, icon, iconRight, as, children." + }, + { + "selector": "JSXOpeningElement[name.name='Button'] > JSXAttribute[name.name='variant'] > Literal[value!=/^(?:primary|accent|secondary|ghost|danger)$/]", + "message": "<Button> variant must be one of 'primary' | 'accent' | 'secondary' | 'ghost' | 'danger'." + }, + { + "selector": "JSXOpeningElement[name.name='Button'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]", + "message": "<Button> size must be one of 'sm' | 'md' | 'lg'." + }, + { + "selector": "JSXOpeningElement[name.name='Button'] > JSXAttribute[name.name='as'] > Literal[value!=/^(?:button|a)$/]", + "message": "<Button> as must be one of 'button' | 'a'." + }, + { + "selector": "JSXOpeningElement[name.name='Callout'] > JSXAttribute > JSXIdentifier[name!=/^(?:variant|title|icon|children|key|ref|className|style|children)$/]", + "message": "<Callout> doesn't accept that prop. Declared props: variant, title, icon, children." + }, + { + "selector": "JSXOpeningElement[name.name='Callout'] > JSXAttribute[name.name='variant'] > Literal[value!=/^(?:note|tip|warn|danger)$/]", + "message": "<Callout> variant must be one of 'note' | 'tip' | 'warn' | 'danger'." + }, + { + "selector": "JSXOpeningElement[name.name='Card'] > JSXAttribute > JSXIdentifier[name!=/^(?:variant|ruled|interactive|title|actions|footer|children|key|ref|className|style|children)$/]", + "message": "<Card> doesn't accept that prop. Declared props: variant, ruled, interactive, title, actions, footer, children." + }, + { + "selector": "JSXOpeningElement[name.name='Card'] > JSXAttribute[name.name='variant'] > Literal[value!=/^(?:default|flat|sunken|accent)$/]", + "message": "<Card> variant must be one of 'default' | 'flat' | 'sunken' | 'accent'." + }, + { + "selector": "JSXOpeningElement[name.name='CodeBlock'] > JSXAttribute > JSXIdentifier[name!=/^(?:code|language|filename|showBar|children|key|ref|className|style|children)$/]", + "message": "<CodeBlock> doesn't accept that prop. Declared props: code, language, filename, showBar, children." + }, + { + "selector": "JSXOpeningElement[name.name='IconButton'] > JSXAttribute > JSXIdentifier[name!=/^(?:size|bordered|active|label|children|key|ref|className|style|children)$/]", + "message": "<IconButton> doesn't accept that prop. Declared props: size, bordered, active, label, children." + }, + { + "selector": "JSXOpeningElement[name.name='IconButton'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]", + "message": "<IconButton> size must be one of 'sm' | 'md' | 'lg'." + }, + { + "selector": "JSXOpeningElement[name.name='Input'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|hint|error|icon|mono|required|key|ref|className|style|children)$/]", + "message": "<Input> doesn't accept that prop. Declared props: label, hint, error, icon, mono, required." + }, + { + "selector": "JSXOpeningElement[name.name='SelectOption'] > JSXAttribute > JSXIdentifier[name!=/^(?:value|label|key|ref|className|style|children)$/]", + "message": "<SelectOption> doesn't accept that prop. Declared props: value, label." + }, + { + "selector": "JSXOpeningElement[name.name='Switch'] > JSXAttribute > JSXIdentifier[name!=/^(?:checked|defaultChecked|label|key|ref|className|style|children)$/]", + "message": "<Switch> doesn't accept that prop. Declared props: checked, defaultChecked, label." + }, + { + "selector": "JSXOpeningElement[name.name='TabItem'] > JSXAttribute > JSXIdentifier[name!=/^(?:id|label|icon|key|ref|className|style|children)$/]", + "message": "<TabItem> doesn't accept that prop. Declared props: id, label, icon." + }, + { + "selector": "JSXOpeningElement[name.name='Tag'] > JSXAttribute > JSXIdentifier[name!=/^(?:dot|onRemove|interactive|children|key|ref|className|style|children)$/]", + "message": "<Tag> doesn't accept that prop. Declared props: dot, onRemove, interactive, children." + }, + { + "selector": "JSXOpeningElement[name.name='TerminalLine'] > JSXAttribute > JSXIdentifier[name!=/^(?:type|text|shell|key|ref|className|style|children)$/]", + "message": "<TerminalLine> doesn't accept that prop. Declared props: type, text, shell." + }, + { + "selector": "JSXOpeningElement[name.name='TerminalLine'] > JSXAttribute[name.name='type'] > Literal[value!=/^(?:cmd|out|ok|err|com)$/]", + "message": "<TerminalLine> type must be one of 'cmd' | 'out' | 'ok' | 'err' | 'com'." + }, + { + "selector": "JSXOpeningElement[name.name='TerminalLine'] > JSXAttribute[name.name='shell'] > Literal[value!=/^(?:shell|panto)$/]", + "message": "<TerminalLine> shell must be one of 'shell' | 'panto'." + } + ] + }, + "overrides": [ + { + "files": [ + "**/index.js" + ], + "rules": { + "no-restricted-imports": "off" + } + } + ], + "x-omelette": { + "components": { + "Badge": { + "replaces": [] + }, + "Button": { + "replaces": [] + }, + "Callout": { + "replaces": [] + }, + "Card": { + "replaces": [] + }, + "CodeBlock": { + "replaces": [] + }, + "IconButton": { + "replaces": [] + }, + "Input": { + "replaces": [] + }, + "SelectOption": { + "replaces": [] + }, + "Switch": { + "replaces": [] + }, + "TabItem": { + "replaces": [] + }, + "Tag": { + "replaces": [] + }, + "TerminalLine": { + "replaces": [] + } + }, + "tokens": [ + "--accent", + "--accent-deep", + "--border-default", + "--border-hairline", + "--border-medium", + "--border-strong", + "--border-thick", + "--border-thin", + "--brass", + "--container-prose", + "--container-wide", + "--dur-base", + "--dur-fast", + "--dur-slow", + "--ease-out", + "--ease-slide", + "--focus-ring", + "--font-display", + "--font-mono", + "--font-primary", + "--font-sans", + "--font-serif", + "--green", + "--green-deep", + "--green-soft", + "--green-wash", + "--ink-0", + "--ink-1", + "--ink-2", + "--ink-3", + "--ink-4", + "--leading-mono", + "--leading-normal", + "--leading-relaxed", + "--leading-snug", + "--leading-tight", + "--link", + "--link-hover", + "--paper-0", + "--paper-1", + "--paper-2", + "--paper-3", + "--paper-4", + "--radius-lg", + "--radius-md", + "--radius-none", + "--radius-pill", + "--radius-sm", + "--radius-xs", + "--red", + "--red-deep", + "--red-soft", + "--red-wash", + "--role-body", + "--role-code", + "--role-display", + "--role-h1", + "--role-h2", + "--role-h3", + "--role-label", + "--role-prose", + "--rule-tick", + "--shadow-inset", + "--shadow-lg", + "--shadow-md", + "--shadow-sm", + "--shadow-xs", + "--sidebar-width", + "--space-0", + "--space-1", + "--space-2", + "--space-3", + "--space-4", + "--space-5", + "--space-6", + "--space-7", + "--space-8", + "--space-9", + "--status-danger", + "--status-danger-bg", + "--status-info", + "--status-info-bg", + "--status-success", + "--status-success-bg", + "--surface-card", + "--surface-code", + "--surface-inverse", + "--surface-page", + "--surface-sunken", + "--text-2xl", + "--text-2xs", + "--text-3xl", + "--text-4xl", + "--text-5xl", + "--text-base", + "--text-body", + "--text-faint", + "--text-lg", + "--text-md", + "--text-muted", + "--text-on-accent", + "--text-on-ink", + "--text-placeholder", + "--text-sm", + "--text-strong", + "--text-xl", + "--text-xs", + "--tick-gradient", + "--tick-h-major", + "--tick-h-minor", + "--tick-pitch", + "--tracking-label", + "--tracking-normal", + "--tracking-tight", + "--weight-bold", + "--weight-medium", + "--weight-regular", + "--weight-semibold" + ], + "tokenKinds": { + "--paper-0": "color", + "--paper-1": "color", + "--paper-2": "color", + "--paper-3": "color", + "--paper-4": "color", + "--ink-0": "color", + "--ink-1": "color", + "--ink-2": "color", + "--ink-3": "color", + "--ink-4": "color", + "--red-deep": "color", + "--red": "color", + "--red-soft": "color", + "--red-wash": "color", + "--green-deep": "color", + "--green": "color", + "--green-soft": "color", + "--green-wash": "color", + "--brass": "color", + "--surface-page": "color", + "--surface-card": "color", + "--surface-sunken": "color", + "--surface-code": "color", + "--surface-inverse": "color", + "--text-strong": "font", + "--text-body": "font", + "--text-muted": "font", + "--text-faint": "font", + "--text-placeholder": "font", + "--text-on-ink": "font", + "--text-on-accent": "font", + "--border-hairline": "color", + "--border-default": "color", + "--border-strong": "color", + "--rule-tick": "color", + "--accent": "color", + "--accent-deep": "color", + "--link": "color", + "--link-hover": "color", + "--status-danger": "color", + "--status-danger-bg": "color", + "--status-success": "color", + "--status-success-bg": "color", + "--status-info": "color", + "--status-info-bg": "color", + "--focus-ring": "color", + "--font-primary": "font", + "--font-mono": "font", + "--font-display": "font", + "--font-sans": "font", + "--font-serif": "font", + "--text-2xs": "font", + "--text-xs": "font", + "--text-sm": "font", + "--text-base": "font", + "--text-md": "font", + "--text-lg": "font", + "--text-xl": "font", + "--text-2xl": "font", + "--text-3xl": "font", + "--text-4xl": "font", + "--text-5xl": "font", + "--weight-regular": "font", + "--weight-medium": "font", + "--weight-semibold": "font", + "--weight-bold": "font", + "--leading-tight": "font", + "--leading-snug": "font", + "--leading-normal": "font", + "--leading-relaxed": "font", + "--leading-mono": "font", + "--tracking-label": "font", + "--tracking-tight": "font", + "--tracking-normal": "font", + "--role-display": "color", + "--role-h1": "color", + "--role-h2": "color", + "--role-h3": "color", + "--role-body": "color", + "--role-prose": "color", + "--role-code": "color", + "--role-label": "color", + "--space-0": "spacing", + "--space-1": "spacing", + "--space-2": "spacing", + "--space-3": "spacing", + "--space-4": "spacing", + "--space-5": "spacing", + "--space-6": "spacing", + "--space-7": "spacing", + "--space-8": "spacing", + "--space-9": "spacing", + "--radius-none": "radius", + "--radius-xs": "radius", + "--radius-sm": "radius", + "--radius-md": "radius", + "--radius-lg": "radius", + "--radius-pill": "radius", + "--border-thin": "spacing", + "--border-medium": "spacing", + "--border-thick": "spacing", + "--shadow-xs": "shadow", + "--shadow-sm": "shadow", + "--shadow-md": "shadow", + "--shadow-lg": "shadow", + "--shadow-inset": "shadow", + "--tick-pitch": "spacing", + "--tick-h-major": "spacing", + "--tick-h-minor": "color", + "--tick-gradient": "color", + "--ease-slide": "other", + "--ease-out": "other", + "--dur-fast": "other", + "--dur-base": "other", + "--dur-slow": "other", + "--container-prose": "spacing", + "--container-wide": "spacing", + "--sidebar-width": "spacing" + }, + "fontFamilies": [ + "IBM Plex Mono", + "Saira Condensed" + ] + } +}
\ No newline at end of file |
