Files
metabuilder/frontends/nextjs/package.json
johndoe6345789 bb17f395fe feat: complete fakemui accessibility integration with data-testid and ARIA
Complete implementation of accessibility utilities across fakemui components:

**New Files**:
- src/utils/accessibility.ts - Core accessibility utilities (moved from legacy)
- src/utils/accessibility.module.scss - Accessibility SCSS styles
- src/utils/useAccessible.ts - React hooks for accessibility:
  * useAccessible() - Generate test IDs and ARIA attributes
  * useKeyboardNavigation() - Handle keyboard events
  * useFocusManagement() - Programmatic focus control
  * useLiveRegion() - Screen reader announcements
  * useFocusTrap() - Focus trapping for modals

**Component Updates**:
- Button.tsx - Added data-testid and ARIA support via useAccessible hook
- TextField.tsx - Added data-testid, aria-invalid, aria-describedby support

**Documentation**:
- docs/ACCESSIBILITY_INTEGRATION.md - Complete integration guide with examples

**Features**:
- 50+ preset test ID generators (form, canvas, settings, navigation, etc.)
- ARIA attribute patterns for buttons, toggles, dialogs, tabs, live regions
- Keyboard navigation helpers (Enter, Escape, Arrow keys, Tab)
- Accessibility validators (hasLabel, isKeyboardAccessible, etc.)
- Fully typed TypeScript with AccessibilityFeature, Component, Action types

All components now support reliable testing via data-testid and screen reader access via ARIA attributes.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-23 17:25:48 +00:00

75 lines
2.8 KiB
JSON

{
"name": "metabuilder",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"typecheck": "tsc --noEmit",
"lint": "eslint .",
"lint:fix": "eslint . --fix",
"format": "prettier --write \"src/**/*.{ts,tsx}\"",
"format:check": "prettier --check \"src/**/*.{ts,tsx}\"",
"test": "vitest",
"test:run": "vitest run",
"test:watch": "vitest",
"test:unit": "vitest run",
"test:e2e": "playwright test --config=../../playwright.config.ts",
"test:e2e:ui": "playwright test --config=../../playwright.config.ts --ui",
"test:e2e:headed": "playwright test --config=../../playwright.config.ts --headed",
"test:e2e:debug": "playwright test --config=../../playwright.config.ts --debug",
"test:e2e:report": "playwright show-report",
"test:e2e:dbal-daemon": "playwright test --config=../../e2e/playwright.dbal-daemon.config.ts",
"db:generate": "npm --prefix ../../dbal/development run db:generate",
"db:push": "npm --prefix ../../dbal/development run db:push",
"db:migrate": "npm --prefix ../../dbal/development run db:migrate",
"db:seed": "npm --prefix ../../dbal/development run db:seed"
},
"dependencies": {
"@metabuilder/dbal": "file:../../dbal/development",
"@metabuilder/core-hooks": "file:../../redux/core-hooks",
"@metabuilder/api-clients": "file:../../redux/api-clients",
"@monaco-editor/react": "^4.7.0",
"@octokit/core": "^7.0.6",
"@prisma/adapter-better-sqlite3": "^7.2.0",
"@prisma/client": "^7.2.0",
"better-sqlite3": "^12.5.0",
"clsx": "^2.1.1",
"esbuild": "^0.27.2",
"jsdom": "^27.4.0",
"next": "16.1.4",
"octokit": "^5.0.5",
"react": "19.2.3",
"react-dom": "19.2.3",
"react-redux": "^9.2.0",
"redux": "^5.0.1",
"redux-thunk": "^2.4.2",
"server-only": "^0.0.1",
"uuid": "^13.0.0",
"zod": "^4.3.5"
},
"devDependencies": {
"@eslint/js": "^9.41.0",
"@tanstack/react-query": "^5.91.2",
"@testing-library/dom": "^10.4.1",
"@testing-library/react": "^16.3.1",
"@types/better-sqlite3": "^7.6.12",
"@types/node": "^22.10.5",
"@types/react": "^19.2.8",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react-swc": "^4.2.2",
"@vitest/coverage-v8": "^4.0.16",
"eslint": "^9.41.0",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^5.2.0",
"prettier": "^3.4.2",
"prisma": "^7.2.0",
"sass": "^1.83.5",
"typescript": "~5.9.3",
"typescript-eslint": "^8.50.1",
"vitest": "^4.0.16"
}
}