/** * The kits lookout knows by name. * * Detection is deliberately a table rather than a heuristic. A design system is * a fact about a repository, not a judgement call, and a fact is something a * person should be able to read, correct, and add to without understanding the * scanner. Everything clever lives in `detect.ts`; this file is data. * * A kit earns an entry when its presence is decidable from a manifest: a * dependency name, or a file only that kit puts there. Kits that leave neither * (an in-house component library with no distinguishing marks) are found by the * workspace scan instead, or declared in config. Guessing is not a third * option: naming the wrong kit would send every fix to the wrong repository. */ /** How confident detection is allowed to be about one signal. */ export type SignalStrength = "declared" | "dependency" | "marker" | "inferred"; export interface KnownKit { /** Stable handle used in the inventory and in issue documents. */ id: string; /** What a person calls it. */ name: string; /** * Package names that mean this kit is installed. Any one is enough; a kit * split across several packages lists them all, because an app that pulls * only `@mui/material` is as much an MUI app as one that also pulls the lab. */ packages: string[]; /** * Files whose mere existence names the kit, for kits that are vendored into * the repository rather than installed. Relative to the project root. */ markers?: string[]; /** * Where this kit's own components live once vendored, relative to the project * root. Only meaningful for vendored kits: an installed one lives in * node_modules and is not the repository's to edit. */ vendoredAt?: string[]; /** * Import specifier prefixes that mean "this came from the kit". Defaults to * the package names when absent. */ importPrefixes?: string[]; /** Where the kit documents itself, for the issue document to point at. */ docs?: string; } /** * Ordered by specificity, not popularity: the first match wins, so a kit built * on top of another (shadcn on Radix) must be listed before * the primitive it is built from, or every shadcn app would be reported as a * Radix app and fixes would be aimed at a dependency nobody edits. */ export declare const KNOWN_KITS: KnownKit[]; /** * Token layers, which are not component kits but still decide where a colour or * a spacing fix belongs. A project can have one, the other, or both, and the * distinction matters: a contrast defect in a Tailwind app is usually a token * edit, not a component edit. */ export declare const TOKEN_MARKERS: readonly [{ readonly id: "tailwind"; readonly name: "Tailwind CSS"; readonly files: readonly ["tailwind.config.js", "tailwind.config.ts", "tailwind.config.mjs", "tailwind.config.cjs"]; }, { readonly id: "panda"; readonly name: "Panda CSS"; readonly files: readonly ["panda.config.ts", "panda.config.js"]; }, { readonly id: "unocss"; readonly name: "UnoCSS"; readonly files: readonly ["uno.config.ts", "unocss.config.ts"]; }, { readonly id: "stylex"; readonly name: "StyleX"; readonly files: readonly [".stylexrc.json", ".stylexrc.js"]; }, { readonly id: "style-dictionary"; readonly name: "Style Dictionary"; readonly files: readonly ["style-dictionary.config.js", "style-dictionary.config.json", "sd.config.js"]; }];