packages/common
The common package is a shared React component library consumed by both the full-suite and a11y apps. It lives in packages/common/ and is referenced via pnpm workspace protocol ("common": "workspace:*").
Never copy-paste components between apps. If a component is needed in both, it belongs in packages/common. If it’s specific to one app, keep it in that app’s src/components/.
Component Categories
Location: packages/common/src/components/
Auth Components (auth/)
UI for login, signup, and authentication flows shared between both apps.
Issue Display (issues/)
Components for listing, filtering, and displaying audit issues.
Accessibility Results (accessibility/)
Charts, tables, and detail views for WCAG audit results.
Lighthouse score displays and metric breakdowns.
Billing UI (billing/)
Plan comparison cards, billing history tables, upgrade prompts.
Scan Components (scan/)
Scan configuration forms, progress indicators.
Setup / Onboarding (setup/)
Website setup wizard steps, onboarding flows.
Off-boarding (off-boarding/)
Account cancellation flows.
Checklist (checklist/)
Interactive accessibility compliance checklist.
Radix UI Wrappers (shadcn/)
Custom-styled wrappers around Radix UI primitives used throughout both apps:
Utility Components
Shared Types
File: packages/common/src/types/index.ts
Key types used across both apps:
Shared Utilities
Location: packages/common/src/utils/
Shared Hooks
Location: packages/common/src/hooks/
Styling in common
The common package doesn’t have its own Tailwind config. It relies on the consuming app’s Tailwind setup. The apps include common’s source in their Tailwind content paths:
All Tailwind classes used in common components must use the wy- prefix (set in each app’s Tailwind config).
packages/focus-order (@webyes/focus-order)
The focus-order package is a standalone accessibility library that visualises keyboard focus order in web pages. It’s published as a dual ESM/CJS npm package.
Package name: @webyes/focus-order
Reference: "@webyes/focus-order": "workspace:*" in app dependencies
What It Does
When called, it:
- Scans the DOM for all focusable elements (links, buttons, inputs, etc.)
- Supports iframes — crawls into iframe documents
- Supports Shadow DOM — finds elements inside shadow roots
- Detects screen-reader-only elements — flags elements not visually visible
- Renders numbered badges next to each focusable element
- Draws SVG lines connecting badges in tab order
- Repositions badges on scroll and resize
Main Export
Types
Utility Functions
Build Output
Build command: