@extends('layouts.app') @section('title','Configuración — '.config('app.name')) @section('content') @php $logoUrl = \App\Models\Setting::assetUrlFor('logo_path'); $logoLightUrl = \App\Models\Setting::assetUrlFor('logo_light_path'); $faviconUrl = \App\Models\Setting::assetUrlFor('favicon_path'); $heroImageUrl = \App\Models\Setting::assetUrlFor('hero_image_path', asset('images/learning-hero.webp')); $sectionMeta = [ 'general' => ['Configuración', 'Revisa el estado del sistema y entra directamente al área que deseas modificar.'], 'identidad' => ['Identidad y marca', 'Personaliza tu sitio con el nombre, logotipo y descripción de tu academia.'], 'apariencia' => ['Apariencia', 'Define una paleta consistente y revisa el resultado antes de publicarlo.'], 'inicio' => ['Página de inicio', 'Configura el mensaje principal y la imagen de presentación.'], 'atencion' => ['Contacto y avisos', 'Organiza los canales por los que atenderás a tus estudiantes.'], 'correo' => ['Correo electrónico', 'Configura el servidor de salida, el remitente y las plantillas automáticas.'], 'cobros' => ['Cobros y métodos de pago', 'Controla moneda, impuestos y proveedores de pago desde un solo lugar.'], 'seguridad' => ['Seguridad y acceso', 'Consulta el estado de las protecciones y puntos de seguimiento.'], ][$activeSection]; $configuredPayments = collect($paymentProviders)->where('configured', true)->count(); @endphp
Configura tu plataforma

{{ $sectionMeta[0] }}

{{ $sectionMeta[1] }}

Ver sitio ↗
{{ $activeSection === 'general' ? 'Centro de configuración' : 'Área actual' }}{{ $sectionMeta[0] }}{{ $activeSection === 'general' ? 'Siete áreas independientes, organizadas por propósito.' : 'Los cambios de esta sección se guardan de forma independiente.' }}
Sistema operativo{{ $configuredPayments }} {{ $configuredPayments === 1 ? 'método de pago configurado' : 'métodos de pago configurados' }}
Estado general

Tu plataforma, de un vistazo

Empieza por las áreas pendientes o entra directamente a una configuración específica.

{{ collect($configurationOverview)->where('ready',true)->count() }} de 7 áreas listas
@foreach([ 'identidad'=>['01','Identidad y marca','Cómo se presenta tu academia'], 'apariencia'=>['02','Apariencia','Colores y consistencia visual'], 'inicio'=>['03','Página de inicio','Primera impresión del sitio'], 'atencion'=>['04','Atención y avisos','Canales para tus estudiantes'], 'correo'=>['05','Correo electrónico','Envío y mensajes automáticos'], 'cobros'=>['06','Cobros','Precios y métodos de pago'], 'seguridad'=>['07','Seguridad','Accesos y actividad administrativa'], ] as $section => [$number,$label,$description]) {{ $number }}
{{ $label }}

{{ $description }}

{{ $configurationOverview[$section]['detail'] }}
Configurar →
@endforeach
@unless($activeSection === 'general')
@csrf @method('PUT')
01 · Tu marca

Identidad de la academia

Define cómo se llama tu sitio y elige las imágenes que lo representan.

Aparece al final de tu sitio, junto al logotipo.

@if ($logoUrl)@endif
@if ($logoLightUrl)@endif
@if ($faviconUrl)@endif
02 · Apariencia

Colores de tu sitio

Paleta de colores: elige una combinación sugerida o ajusta cada color. Verás el resultado antes de guardar.

Comenzar con
@php $paletteFields = [ 'brand_color' => ['Principal','Botones, enlaces y elementos activos','#0b4aa2'], 'brand_dark_color' => ['Profundo','Encabezados y fondos de alto contraste','#082b53'], 'accent_color' => ['Acento','Detalles y llamadas de atención','#f4b942'], 'surface_color' => ['Superficie secundaria','Secciones y fondos suaves','#f5f7fb'], 'background_color' => ['Fondo general','Lienzo principal del sitio','#fcfdff'], 'panel_color' => ['Paneles','Tarjetas, formularios y ventanas','#ffffff'], 'text_color' => ['Texto principal','Títulos y contenido de lectura','#172235'], 'muted_color' => ['Texto secundario','Ayudas, metadatos y descripciones','#5d6878'], 'success_color' => ['Confirmación','Progreso, estados válidos y éxito','#14805e'], ]; $paletteGroups = [ 'Identidad visual' => ['brand_color', 'brand_dark_color', 'accent_color'], 'Fondos y superficies' => ['background_color', 'surface_color', 'panel_color'], 'Texto y estados' => ['text_color', 'muted_color', 'success_color'], ]; @endphp
@foreach($paletteGroups as $group => $keys)
{{ $group }}{{ $loop->iteration }} de {{ count($paletteGroups) }}
@foreach($keys as $key) @php([$label,$help,$fallback] = $paletteFields[$key]) @php($colorValue = old($key,$settings[$key] ?? $fallback)) @endforeach
@endforeach
03 · Página de inicio

Presentación para visitantes

Este mensaje e imagen son lo primero que verá una persona al entrar a tu academia.

Mensaje principal

Comunica el valor de tu academia

Usa un título claro y una breve explicación para orientar a tus visitantes.

Imagen de portada

Una imagen que represente tu propuesta

La descripción ayuda a que la imagen sea comprensible para todas las personas.

Imagen de portada principal @if(isset($settings['hero_image_path']))@endif
04 · Atención

Contacto y avisos

Indica cómo pueden comunicarse contigo y muestra un aviso importante si lo necesitas.

Aviso superior

Comparte una novedad importante

Actívalo solo cuando tengas información útil para mostrar en todo el sitio.

Canales de atención

Define cómo pueden contactarte

Incluye solo los medios que atenderás de forma activa.

05 · Ventas

Cobros y métodos de pago

Define cómo se calculan los importes y qué opciones podrán usar tus estudiantes.

Reglas de precio

Moneda, impuestos y método principal

Estos valores se aplican en cursos, órdenes y comprobantes.

Código ISO de tres letras, por ejemplo MXN o USD.

Escribe 0 si los precios no llevan impuesto.

Debe corresponder a un método activo.

Proveedores

Métodos disponibles para tus estudiantes

Activa solo los métodos que estén listos. Las credenciales sensibles se guardan cifradas.

Conexión segura
StripeTarjetas y pagos internacionales{{ $paymentProviders['stripe']['configured'] ? 'Configurado' : 'Pendiente' }}
{{ $paymentProviders['stripe']['last_tested_at'] ? 'Última prueba registrada' : 'Guarda las credenciales antes de probar.' }}
PayPalCuenta PayPal, tarjetas y saldo{{ $paymentProviders['paypal']['configured'] ? 'Configurado' : 'Pendiente' }}
{{ $paymentProviders['paypal']['last_tested_at'] ? 'Última prueba registrada' : 'Guarda las credenciales antes de probar.' }}
Mercado PagoPagos locales y tarjetas en Latinoamérica{{ $paymentProviders['mercadopago']['configured'] ? 'Configurado' : 'Pendiente' }}
{{ $paymentProviders['mercadopago']['last_tested_at'] ? 'Última prueba registrada' : 'Guarda las credenciales antes de probar.' }}
Pago offlineTransferencia, depósito o pago manual{{ $paymentProviders['offline']['configured'] ? 'Listo' : 'Pendiente' }}
@unless(in_array($activeSection,['seguridad','operacion']))
Sin cambios pendientes.
@endunless
@if($activeSection === 'correo')
@csrf
@endif @endunless
06 · Protección

Seguridad y acceso

Consulta las protecciones activas y los puntos que requieren seguimiento. No necesitas cambiar nada aquí para mantenerlas activas.

01
Acceso protegido

Máximo de 6 intentos por minuto en inicio de sesión y recuperación.

Activo
02
Contraseñas robustas

Mínimo 8 caracteres, mayúsculas, minúsculas y números.

Activo
03
Verificación de correo

{{ number_format($securityStats['unverified_users']) }} {{ $securityStats['unverified_users'] === 1 ? 'cuenta todavía no verifica' : 'cuentas todavía no verifican' }} su dirección.

@can('users.view')Revisar@elseProtegido@endcan
04
Trazabilidad administrativa

{{ number_format($securityStats['audited_actions']) }} acciones registradas en las últimas 24 horas.

@can('audit.view')Auditoría@elseProtegido@endcan
05
Control de cuentas

{{ number_format($securityStats['suspended_users']) }} cuentas suspendidas o restringidas.

@can('users.view')Administrar@elseProtegido@endcan
06
Operaciones sensibles

Publicaciones, reembolsos y revocaciones solicitan confirmación y dejan registro.

Activo
@if(false)
Operación interna

Administra el contenido y las reglas del sitio

Estas opciones ayudan a mantener el catálogo ordenado, crear promociones y moderar lo que se publica.

Organizar el catálogo

Crea categorías para que las personas encuentren cursos con mayor facilidad.

{{ $categories->count() }}
Crear una categoríaPor ejemplo: Diseño, Liderazgo o Tecnología.
@csrf
Crear una subcategoríaÚsala para dividir una categoría principal.
@csrf
Categorías actuales@forelse($categories as $category)
{{ $category->name }}@if($category->parent){{ $category->parent->name }}@endif{{ $category->courses_count }} {{ $category->courses_count === 1 ? 'curso' : 'cursos' }}
@empty

Aún no hay categorías creadas.

@endforelse

Promociones

Crea códigos de descuento para campañas, grupos o ventas especiales.

{{ $coupons->count() }}
Crear un código promocionalEl código se puede compartir al momento de la inscripción.
@csrf
Promociones recientes@forelse($coupons as $coupon)
{{ $coupon->code }}{{ $coupon->type === 'percent' ? $coupon->value.'% de descuento' : '$'.number_format($coupon->value,2).' de descuento' }}{{ $coupon->uses }} usos
@empty

Aún no hay promociones creadas.

@endforelse

Reseñas por revisar

Aprueba solo los comentarios que representen una experiencia real y útil para otros estudiantes.

{{ $reviews->count() }}
@forelse($reviews as $review)@empty@endforelse
CursoEstudianteComentarioDecisión
{{ $review->course->title }}{{ $review->user->name }}{{ $review->rating }}/5 {{ $review->comment }}
@csrf @method('PUT')
No hay reseñas pendientes. Todo está al día.
@if(auth()->user()->hasRole('superadministrador'))@php($permissionLabels = ['audit.view' => 'Ver auditoría', 'certificates.manage' => 'Administrar certificados', 'coupons.manage' => 'Administrar promociones', 'courses.create' => 'Crear cursos', 'courses.manage-own' => 'Editar cursos propios', 'courses.moderate' => 'Revisar y publicar cursos', 'enrollments.manage' => 'Administrar inscripciones', 'orders.manage' => 'Administrar órdenes y pagos', 'orders.view' => 'Ver órdenes y pagos', 'reports.export' => 'Exportar reportes', 'reviews.moderate' => 'Revisar reseñas', 'roles.manage' => 'Administrar permisos', 'settings.manage' => 'Modificar configuración', 'users.manage' => 'Administrar usuarios', 'users.view' => 'Ver usuarios'])

Qué puede hacer un administrador

Selecciona las tareas que podrán realizar las cuentas con el rol Administrador. Solo un superadministrador puede cambiar estas reglas.

@csrf @method('PUT')
@foreach($permissions as $permission)@endforeach
Los cambios afectan al rol Administrador.
@endif
@endif
@endsection