Issue TypeReferenceclassName in CVA, missing VariantProps, compound variantsreferences/cva-patterns.mdasChild without Slot, missing Context, component compositionreferences/composition.mdMissing focus-visible, aria-invalid, disabled statesreferences/accessibility.mdMissing data-slot, incorrect CSS targetingreferences/data-slot.md
cn() receives className, not CVA variantsVariantProps<typeof variants> exported for consumersasChild pattern uses @radix-ui/react-slotfocus-visible: states, not just :focusaria-invalid, aria-disabled for form statesdisabled: variants for all interactive elementssr-only for screen reader textdata-slot attributes for targetable composition partshas() selectors for state-based stylingRun these in order. Do not draft user-facing findings until every gate passes for the batch you are about to report.
Location evidence — Pass: Each issue lists a repo path and either a line range or a short verbatim quote from the file you read (not from memory or diff-only guesswork).
Exemption check — Pass: For each issue, you can state in one line why it is not covered by Valid Patterns (Do NOT Flag).
Context-sensitive claims — Pass: For accessibility or Radix-related flags, you checked the file for imports/wrappers showing what actually runs (or you cite the concrete gap).
Protocol — Pass: You completed the Pre-Report Verification Checklist in review-verification-protocol for this review.
These are correct patterns that should NOT be flagged as issues:
max-h-(--var) - correct Tailwind v4 CSS variable syntax (NOT v3 bracket notation)text-[color:var(--x)] - valid arbitrary value syntaxApply these rules with appropriate context awareness:
shadcn/ui components are designed to be copied and modified. Code review should focus on:
Do NOT flag:
Complete Hard gates (especially gate 4), then report only issues that still pass the review-verification-protocol pre-report checks.