# Reduce Frontend Files Under 500 Lines — Implementation Plan > **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. **Goal:** Reduce all 14 frontend files currently over 500 lines to under 500 lines each, without changing any functionality. **Architecture:** Extract shared UI sections into reusable components, split large composables/utilities into focused modules, and extract page-level script logic into dedicated composables. Each extraction is a pure refactor — no behavior changes. **Tech Stack:** Vue 3 Composition API, TypeScript, Nuxt 4 (auto-imports for composables and components) --- ## Inventory of files to reduce | # | File | Lines | Target strategy | |---|------|------:|-----------------| | 1 | `composables/useMachineDetailData.ts` | 1353 | Split into 4 focused composables | | 2 | `components/StructureNodeEditor.vue` | 926 | Extract type-map + sync logic into composable | | 3 | `pages/component/[id]/edit.vue` | 911 | Extract shared component + composable | | 4 | `pages/component/create.vue` | 852 | Extract structure assignment helpers | | 5 | `pages/pieces/[id]/edit.vue` | 821 | Extract page composable | | 6 | `shared/model/componentStructure.ts` | 794 | Split into 3 focused modules | | 7 | `components/PieceItem.vue` | 757 | Extract document list + custom fields template | | 8 | `components/ComponentStructureAssignmentNode.vue` | 722 | Extract fetch/options logic | | 9 | `pages/index.vue` | 584 | Extract modal components | | 10 | `components/PieceModelStructureEditor.vue` | 578 | Extract drag-reorder + field logic | | 11 | `components/model-types/ManagementView.vue` | 577 | Extract related-items modal | | 12 | `components/ComponentItem.vue` | 573 | Extract document list template | | 13 | `pages/product/[id]/edit.vue` | 570 | Extract page composable | | 14 | `pages/pieces/create.vue` | 540 | Extract product-selection logic | ## Shared extractions (do these FIRST — they reduce multiple files) ### Task 1: Extract `DocumentListInline.vue` shared component **Rationale:** The document list display (thumbnail + name + mimeType + size + Consulter/Télécharger/Supprimer buttons) is duplicated identically in: - `PieceItem.vue` (lines 401-477) - `ComponentItem.vue` (lines 312-379) - `pages/component/[id]/edit.vue` (lines 307-375) - `pages/pieces/[id]/edit.vue` (lines 254-325) - `pages/product/[id]/edit.vue` (lines 165-232) **Files:** - Create: `app/components/common/DocumentListInline.vue` - Modify: all 5 files above **Step 1: Create `DocumentListInline.vue`** ```vue