--- phase: 24-shipment-presets-ui plan: 01 type: execute wave: 1 depends_on: ["23-01"] files_modified: - resources/views/shipments/prepare.php - resources/scss/modules/_shipment-presets.scss - resources/scss/main.scss autonomous: false --- ## Goal Dodać sekcję presetów przesyłek nad formularzem przygotowania przesyłki: kolorowe przyciski, popup tworzenia presetu (nazwa + kolor), JS autofill formularza po kliknięciu. ## Purpose Użytkownik chce jednym kliknięciem wypełnić formularz przesyłki zapisanymi parametrami — bez ręcznego wybierania przewoźnika, usługi, wymiarów za każdym razem. ## Output - Sekcja presetów z kolorowymi przyciskami nad formularzem - Popup do tworzenia presetu (nazwa + kolor) z bieżących wartości formularza - JS: autofill formularza po kliknięciu przycisku presetu - SCSS style dla presetów ## Project Context @.paul/PROJECT.md @.paul/ROADMAP.md @.paul/STATE.md ## Prior Work @.paul/phases/23-shipment-presets-backend/23-01-SUMMARY.md ## Source Files @resources/views/shipments/prepare.php @src/Modules/Shipments/ShipmentPresetController.php @routes/web.php No specialized flows required for this plan (sonar-scanner required post-APPLY). ## AC-1: Przyciski presetów widoczne nad formularzem ```gherkin Given użytkownik otwiera stronę przygotowania przesyłki When w bazie istnieją presety Then nad formularzem wyświetlają się kolorowe przyciski z nazwami presetów And wyświetla się przycisk "Dodaj przycisk dostawy" ``` ## AC-2: Kliknięcie presetu wypełnia formularz ```gherkin Given preset ma zapisane: carrier=inpost, package_type=PACKAGE, weight=2kg, wymiary 30x25x10 When użytkownik klika przycisk tego presetu Then formularz automatycznie wypełnia się tymi wartościami And odpowiedni panel przewoźnika staje się widoczny And usługa dostawy zostaje wybrana ``` ## AC-3: Przycisk "Dodaj przycisk dostawy" tworzy preset z bieżących wartości ```gherkin Given użytkownik wypełnił formularz (wybrał przewoźnika, usługę, wymiary itp.) When klika "Dodaj przycisk dostawy" Then pojawia się popup z polem nazwy i wyborem koloru When wpisuje nazwę i klika Zapisz Then preset zostaje zapisany przez API i przycisk pojawia się w sekcji ``` Task 1: SCSS style dla presetów resources/scss/modules/_shipment-presets.scss, resources/scss/main.scss 1. Utworzyć `resources/scss/modules/_shipment-presets.scss`: - `.shipment-presets` — kontener sekcji (flex, wrap, gap: 8px, margin-bottom: 16px) - `.shipment-presets__btn` — przycisk presetu: - Inline-flex, border-radius: 6px, padding: 6px 14px - Biały tekst, tło z custom property `--preset-color` - Hover: opacity 0.85, cursor pointer - Font-size: 13px, font-weight: 500 - `.shipment-presets__add` — przycisk dodawania: - Border: 1px dashed #ccc, background transparent - Color: #666, hover: border-color #999 - `.preset-modal` — overlay popup: - Position fixed, inset 0, background rgba(0,0,0,0.4), z-index 1000 - Display flex, align-items center, justify-content center - `.preset-modal__content` — zawartość popup: - Background white, border-radius 8px, padding 24px, min-width 360px, max-width 420px - `.preset-modal__colors` — grid kolorów: - Display flex, gap 8px, flex-wrap wrap - `.preset-modal__color-swatch` — próbka koloru: - Width 28px, height 28px, border-radius 50%, cursor pointer - Border: 2px solid transparent - `&.is-selected` — border-color: #333 2. Dodać `@import 'modules/shipment-presets';` w `resources/scss/main.scss` Sprawdzić że plik SCSS istnieje i import dodany do main.scss AC-1 partially: style gotowe Task 2: HTML sekcja presetów + popup + JavaScript resources/views/shipments/prepare.php 1. **Sekcja presetów** — wstawić PRZED `
` (po zamknięciu sekcji flash messages, linia ~63): ```html
``` 2. **Popup modal** — wstawić na końcu pliku (przed zamykającym `` lub po ostatnim ``): ```html ``` 3. **JavaScript** — dodać w istniejącym bloku `