@extends('layouts.app', ['title' => 'Stylist โ€” SonarDesk Administration']) @section('content')
Administration / Appearance

Stylist

Manage frontend and administration themes independently. Install, configure, preview and export complete themes.

Back to administration
@if(session('status'))
{{ session('status') }}
@endif @if($errors->any())
{{ $errors->first() }}
@endif
Installed themes {{ count($themes) }} Available designs
Frontend theme {{ $activeFrontendTheme }} Public website
Backend theme {{ $activeBackendTheme }} Administration interface
Theme library

Install a theme

Upload a self-contained theme package in ZIP format.

@csrf
Appearance

Installed themes

Frontend and backend themes can be activated independently.

@foreach($themes as $item) @php $saved = $settingsService->get($item); $variant = $settingsService->variant($item); $appearance = $settingsService->appearance($item); $accent = $settingsService->accent($item); $issues = $accessibility->validate($item); $isActive = ($item->type() === 'frontend' && $item->key() === $activeFrontendTheme) || ($item->type() === 'backend' && $item->key() === $activeBackendTheme); $isBundled = in_array( $item->key(), ['sonardesk', 'sonardesk-admin'], true ); $themeRoot = realpath(config('stylist.themes_path')); $themePath = realpath($item->path()); $isInstalled = $themeRoot && $themePath && str_starts_with( $themePath, rtrim($themeRoot, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR ); @endphp
@if($item->preview() && $item->has($item->preview())) {{ $item->name() }} preview @else
โ—ˆ {{ $item->name() }} No preview image available
@endif
{{ ucfirst($item->type()) }} theme

{{ $item->name() }}

Version {{ $item->version() }} @if($item->author()) ยท {{ $item->author() }} @endif

@if($isActive) Active @endif
@if($item->description())

{{ $item->description() }}

@endif @if($item->parent())

Based on {{ $item->parent() }}

@endif
@if(in_array($item->type(), ['frontend', 'backend'], true)) @unless($isActive)
@csrf
@endunless Preview @endif Export ZIP
@csrf
Theme configuration โŒ„
@csrf @method('PUT') @if($item->variants()) @endif @if($item->supports('dark_mode') || $item->appearances()) @endif @if($item->accents())
Accent colour @foreach($item->accents() as $name => $definition) @endforeach
@endif @foreach($item->settingsSchema() as $key => $definition) @php $definition = is_array($definition) ? $definition : ['default' => $definition]; $fieldType = $definition['type'] ?? 'text'; $fieldLabel = $definition['label'] ?? str($key)->headline(); $fieldValue = $saved[$key] ?? ($definition['default'] ?? ''); @endphp
@switch($fieldType) @case('color') @break @case('textarea') @break @case('checkbox') @break @default @endswitch
@endforeach
@endforeach
@endsection