feat(13-protection-packages): Pakiety ochronne SOFT/PREMIUM z panelu WP

- Panel admina (wp-admin > Rezerwacje > Pakiety ochronne) do zarzadzania
  nazwami, cenami za dobe, aktywnoscia i opisami pakietow SOFT i PREMIUM
  (zapis w wp_options carei_protection_packages)
- REST endpoint GET /carei/v1/protection-packages zwracajacy aktywne pakiety
- Radio cards SOFT/PREMIUM w modalu rezerwacji nad pozycjami "Pakiety ochronne"
  z API (osobne zrodlo danych, separator wizualny)
- Radio z deselect (klik zaznaczonego odznacza), natywny input z accent-color
- Pakiet NIE wysylany w priceItems Softra (powodowalo HTTP 400) - zamiast tego
  doklejany do comments booking i zapisywany w _carei_protection_package meta
- Summary frontend dokorysowuje wiersz pakietu w tabeli cen i dolicza do
  total gross (grandGross = softraGross + protectionTotal)
- Plan 13-01 oznaczony jako superseded (klient zmienil zrodlo danych)
- Phase 13 Complete, Milestone v0.5 Complete

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-20 00:45:24 +02:00
parent 9e4f47de25
commit 42efe93cdd
13 changed files with 987 additions and 25 deletions

View File

@@ -597,6 +597,89 @@ button.carei-reservation-trigger:hover {
color: inherit;
}
/* ═══════════════════════════════════════════
Protection Packages (SOFT / PREMIUM — zarządzane w panelu WP)
═══════════════════════════════════════════ */
.carei-form__row--protection-packages {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 12px;
}
.carei-form__protection-package {
display: flex;
flex-direction: column;
gap: 6px;
padding: 16px;
border: 1px solid var(--carei-border);
border-radius: var(--carei-radius);
background: var(--carei-white);
cursor: pointer;
transition: border-color 0.2s;
min-width: 0;
overflow: hidden;
}
.carei-form__protection-package:hover {
border-color: rgba(47, 36, 130, 0.4);
}
.carei-form__protection-package.is-selected {
border-color: var(--carei-blue);
}
.carei-form__protection-package__row {
display: flex;
align-items: center;
gap: 10px;
min-width: 0;
}
.carei-form__protection-package__input {
flex-shrink: 0;
width: 16px;
height: 16px;
accent-color: var(--carei-blue);
cursor: pointer;
margin: 0;
}
.carei-form__protection-package__name {
font-weight: 600;
font-size: 15px;
color: var(--carei-blue);
flex: 1;
min-width: 0;
word-break: break-word;
}
.carei-form__protection-package__price {
font-weight: 400;
font-size: 14px;
color: #505050;
margin-left: auto;
white-space: nowrap;
flex-shrink: 0;
}
.carei-form__protection-package__price strong {
color: inherit;
}
.carei-form__protection-package__desc {
font-size: 12px;
color: #666;
line-height: 1.4;
}
.carei-form__protection-package__desc:empty {
display: none;
}
.carei-form__protection-divider {
margin: 14px 0;
border-top: 1px dashed rgba(47, 36, 130, 0.18);
height: 0;
}
.carei-form__row--protection-packages:empty + .carei-form__protection-divider {
display: none;
}
@media (max-width: 640px) {
.carei-form__row--protection-packages {
grid-template-columns: 1fr;
}
}
.carei-form__checkbox-label--abroad {
align-items: center;
font-weight: 600;