# V13-FE-005 — Existing Component Direct Vendor Restore

## Source / Assumption / Unknown / Decision Required

- **Source:** `frontend/src/shared/ui/components/`, existing PrimeVue/AG Grid adapters, and current component contract tests.
- **Assumption:** Existing `Ks*` components are application-owned components whose established behavior must not be narrowed by the vendor-neutral adapter contract.
- **Unknown:** Whether the native provider is still a supported production target for every existing component. This must not be inferred from the presence of `VITE_UI_ADAPTER`.
- **Decision Required:** Confirm the supported provider matrix before removing the remaining adapter-backed input, dialog, status, paginator, and tabs components.

## Scope

Behavior-preserving refactoring under `V13-FE-005`:

- Existing components may use the selected vendor directly inside `shared/ui/components`.
- Feature code remains vendor-import free.
- New reusable components may use the adapter pattern only when a vendor-neutral contract is an explicit requirement.
- No policy, API, database, migration, or production automation change.

## Implemented

- `KsButton.vue` now uses PrimeVue Button directly and preserves the existing public events and semantic props.
- `KsDataGrid.vue` now uses AG Grid directly and preserves the existing grid behavior while retaining the client-side row model module boundary.
- Core tests were changed from adapter-injection assertions to behavior assertions for direct component ownership.

## Remaining

- Existing `shared/ui/components/*.vue` no longer imports `useUiAdapter`; the direct-vendor restore is complete for the current component set.
- Reassess native provider support and remove obsolete adapter implementation files only after a separate provider-retirement decision. The adapter remains available for new vendor-neutral components.

## Evidence

- Targeted tests: shared component tests — 25/25 PASS.
- Full frontend tests: `pnpm test -- --run` — 63 files / 168 tests PASS.
- Typecheck: `pnpm typecheck` — PASS.
- Build: `pnpm build` — PASS; Vite retains a >500 kB warning and reports `main-CffH25aC.js` 587.58 kB / gzip 163.16 kB.
- Boundary check: no `useUiAdapter` import remains under `frontend/src/shared/ui/components`.
- Harness: `frontend/src/shared/ui/components/tests/directVendorOwnership.contract.spec.ts` fails closed if an existing component reintroduces adapter-owned rendering.
