diff --git a/.cursorrules b/.cursorrules deleted file mode 100644 index 61a306f..0000000 --- a/.cursorrules +++ /dev/null @@ -1,48 +0,0 @@ -Code Style and Structure: -- Write concise, technical TypeScript code with accurate examples -- Use functional and declarative programming patterns; avoid classes -- Prefer iteration and modularization over code duplication -- Use descriptive variable names with auxiliary verbs (e.g., isLoading, hasError) -- Structure files: exported component, subcomponents, helpers, static content, types - -Naming Conventions: -- Use lowercase with dashes for directories (e.g., components/auth-wizard) -- Favor named exports for components - -TypeScript Usage: -- Use TypeScript for all code; prefer interfaces over types -- Avoid enums; use maps instead -- Use functional components with TypeScript interfaces - -Syntax and Formatting: -- Use the "function" keyword for pure functions -- Avoid unnecessary curly braces in conditionals; use concise syntax for simple statements -- Use declarative JSX - -Error Handling and Validation: -- Prioritize error handling: handle errors and edge cases early -- Use early returns and guard clauses -- Implement proper error logging and user-friendly messages -- Use Zod for form validation -- Model expected errors as return values in Server Actions -- Use error boundaries for unexpected errors - -UI and Styling: -- Use Shadcn UI, Radix, and Tailwind Aria for components and styling -- Implement responsive design with Tailwind CSS; use a mobile-first approach - -Performance Optimization: -- Minimize 'use client', 'useEffect', and 'setState'; favor React Server Components (RSC) -- Wrap client components in Suspense with fallback -- Use dynamic loading for non-critical components -- Optimize images: use WebP format, include size data, implement lazy loading - -Key Conventions: -- Use 'nuqs' for URL search parameter state management -- Optimize Web Vitals (LCP, CLS, FID) -- Limit 'use client': - - Favor server components and Next.js SSR - - Use only for Web API access in small components - - Avoid for data fetching or state management - -Follow Next.js docs for Data Fetching, Rendering, and Routing \ No newline at end of file diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..fc77b11 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,167 @@ +Concise rules for building accessible, fast, delightful UIs Use MUST/SHOULD/NEVER to guide decisions + +## Interactions + +- Keyboard + - MUST: Full keyboard support per [WAI-ARIA APG](https://wwww3org/WAI/ARIA/apg/patterns/) + - MUST: Visible focus rings (`:focus-visible`; group with `:focus-within`) + - MUST: Manage focus (trap, move, and return) per APG patterns +- Targets & input + - MUST: Hit target ≥24px (mobile ≥44px) If visual <24px, expand hit area + - MUST: Mobile `` font-size ≥16px or set: + ```html + + ``` + - NEVER: Disable browser zoom + - MUST: `touch-action: manipulation` to prevent double-tap zoom; set `-webkit-tap-highlight-color` to match design +- Inputs & forms (behavior) + - MUST: Hydration-safe inputs (no lost focus/value) + - NEVER: Block paste in `/