# 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.