{{-- Formulaire de personnalisation généré depuis custom_options_json, avec prix en direct. --}}
@csrf

{{ __('surmesure.configure_title') }}

{{ __('surmesure.configure_intro') }}

@php // Les libellés viennent du créateur : ils sont traduits un par un, // sans toucher aux montants qui les accompagnent. $translator = app(\App\Services\TranslationService::class); $locale = app()->getLocale(); @endphp @foreach($creation->custom_options_json ?? [] as $index => $option) @php $type = $option['type'] ?? 'text'; $price = (float) ($option['price'] ?? 0); $required = (bool) ($option['required'] ?? false); $name = 'options[' . $index . ']'; $id = 'sm-opt-' . $index; @endphp
@switch($type) @case('select') @break @case('textarea') @break @case('file') {{-- Le contrôle natif est remplacé par une zone lisible ; l'input reste présent, simplement masqué. --}} @break @case('color') {{-- Un vaut toujours #000000, même intact : il passerait donc pour rempli. La valeur envoyée transite par un champ caché, alimenté seulement quand le client choisit vraiment. --}} @php $defaultColor = '#000000'; @endphp
@unless($required) {{ __('surmesure.color_none') }} @endunless
@break @default @endswitch @if(!empty($option['help'])) {{ $translator->translate($option['help'], $locale) }} @endif
@endforeach @if($creation->free_shipping) @include('front.partials.free-shipping-badge', ['style' => 'margin:10px 0;']) @endif
{{ __('surmesure.base_price') }} {{ display_price($creation->final_price, $creation->currency) }}
{{ __('surmesure.options_total') }} {{ display_price(0, $creation->currency) }}
{{ __('surmesure.total') }} {{ display_price($creation->final_price, $creation->currency) }}
@include('front.partials.private-carrier-picker', ['product' => $creation])