@php $theme = $this->draft; $brand = $this->brandName; $active = $this->activePreset; $platform = \App\Models\MainSiteData::getValue('site_name') ?: 'Bilipoa'; @endphp {{-- No here on purpose: the layout header and x-page-head both print the page name, so this screen was opening with "Portal designer" written twice above a breadcrumb saying it a third time. --}}
{{ __('Open portal') }} @if (session('portal-saved'))
{{ session('portal-saved') }}
@endif
{{-- ─────────────── Controls ─────────────── --}} {{-- One panel with sections rather than four stacked cards. The card class carries height:100% for dashboard tiles, so four of them in a single column each stretched to the full height of the preview — about a thousand pixels of empty box between every heading. --}}
{{ __('Palette') }}
{{ __('Pick a look, then fine-tune below') }}
@foreach (\App\Livewire\Hotspot\Designer::PRESETS as $key => $preset) @endforeach
{{ __('Colour') }}
@foreach ([ 'primary' => [__('Primary'), __('Prices, links and the main button')], 'accent' => [__('Accent'), __('Second colour in gradients')], 'tertiary' => [__('Gradient end'), __('Where the gradient finishes')], 'background' => [__('Page background'), __('Behind everything')], 'card' => [__('Card'), __('The panel the content sits on')], 'text' => [__('Text'), __('Body copy')], ] as $field => [$label, $hint])
@endforeach
{{ __('Wording') }}
{{ __('What customers are offered') }}
{{ __('Switch off anything you do not run yet') }}
@foreach ([ 'show_help' => [__('Help / WhatsApp card'), __('Your support number, shown at the top.')], 'show_trial' => [__('Free trial'), __('Only appears if you have a trial package.')], 'show_vouchers' => [__('Voucher redemption'), __('Turn off until you are issuing voucher codes.')], 'show_mpesa_code' => [__('Reconnect with M-Pesa code'), __('Lets a customer back on with their receipt.')], 'show_account' => [__('Username & password'), __('For customers you created accounts for.')], 'show_tv' => [__('TV / streaming setup'), __('Directs them to call you to register a MAC.')], ] as $field => [$label, $hint]) @endforeach
{{-- Pushing is separate from saving on purpose: it needs the tunnel up and takes a few seconds per router. --}}
{{ __('Push to routers') }}
{{ trans_choice(':count router|:count routers', $this->routers->count(), ['count' => $this->routers->count()]) }}

{{ __('Your online portal updates the moment you save. Each router also keeps its own offline copy of the login page — push to refresh those.') }}

@if ($pushLog)
    @foreach ($pushLog as $line)
  • {{ $line }}
  • @endforeach
@endif
{{-- ─────────────── Live preview ─────────────── --}}
{{ __('Preview') }}
{{ __('What a phone sees') }}
{{-- Rendered from the same PortalTheme the real portal uses, so it cannot drift from the live page. --}}
{{ Str::upper($brand) }}
{{ $theme->get('welcome') ?: 'Welcome to '.Str::upper($brand) }}
{{ $theme->get('tagline') }}
@if ($theme->get('show_help'))
{{ $theme->get('help_label') }} {{-- The field being edited, not the saved value: a preview that ignores what you just typed is not a preview. --}} {{ $support_phone ?: (siteUrlSettings('site_phone') ?: '0700 000 000') }}
@endif
{{ __('Access network') }}
@if ($theme->get('show_trial'))
{{ __('Free Trial') }} {{ __('TRIAL') }}
@endif
{{ __('Available plans') }}
@foreach (['1 Hour' => 5, '1 Day' => 30, '1 Week' => 150] as $name => $price)
{{ $name }} Ksh {{ $price }} {{ __('Buy') }}
@endforeach @if ($theme->get('show_tv'))
{{ __('Set up a TV or streaming device') }} ›
@endif {{-- Fixed, and shown here so an operator is not surprised by it on their own portal. --}}
Powered by {{ $platform }}

{{ __('Reconnect options') }}: @php $on = collect([ 'show_vouchers' => __('Voucher'), 'show_mpesa_code' => __('M-Pesa code'), 'show_account' => __('Username & password'), ])->filter(fn ($l, $k) => $theme->get($k))->values(); @endphp {{ $on->isEmpty() ? __('none — customers can only buy a package') : $on->join(', ') }}