summaryrefslogtreecommitdiff
path: root/_ds/pantograph-design-system-56a1c74e-41c1-486b-ba3c-4eabdfacef31/_adherence.oxlintrc.json
diff options
context:
space:
mode:
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.json425
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