255 lines
12 KiB
Plaintext
255 lines
12 KiB
Plaintext
@model PageContent;
|
|
|
|
@{
|
|
ViewData["Title"] = ViewBag.Title ?? "Conversor Online";
|
|
Layout = "~/Views/Shared/_Layout.cshtml";
|
|
}
|
|
|
|
<!-- Seção Principal do Conversor -->
|
|
<section class="converter-hero bg-light py-5">
|
|
<div class="container">
|
|
<div class="row justify-content-center">
|
|
<div class="col-lg-10">
|
|
<!-- Título e Descrição -->
|
|
<div class="text-center mb-5">
|
|
<h1 class="display-4 fw-bold text-primary mb-3">
|
|
@(ViewBag.ConverterTitle ?? "CONVERSOR ONLINE")
|
|
</h1>
|
|
<p class="lead text-muted mb-4">
|
|
@(ViewBag.ConverterDescription ?? "Converta seus arquivos de forma rápida e segura")
|
|
</p>
|
|
</div>
|
|
|
|
<!-- Card do Conversor -->
|
|
<div class="card shadow-lg border-0 rounded-3">
|
|
<div class="card-body p-5">
|
|
<!-- Steps do Processo -->
|
|
<div class="row text-center mb-4">
|
|
<div class="col-md-4 mb-3">
|
|
<div class="step-indicator">
|
|
<span class="badge bg-primary rounded-circle p-3 fs-5 mb-2">1</span>
|
|
<h6 class="fw-bold">@(ViewBag.Step1Title ?? "Upload")</h6>
|
|
<small class="text-muted">@(ViewBag.Step1Description ?? "Selecione seu arquivo")</small>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4 mb-3">
|
|
<div class="step-indicator">
|
|
<span class="badge bg-primary rounded-circle p-3 fs-5 mb-2">2</span>
|
|
<h6 class="fw-bold">@(ViewBag.Step2Title ?? "Processar")</h6>
|
|
<small class="text-muted">@(ViewBag.Step2Description ?? "Aguarde o processamento")</small>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4 mb-3">
|
|
<div class="step-indicator">
|
|
<span class="badge bg-success rounded-circle p-3 fs-5 mb-2">3</span>
|
|
<h6 class="fw-bold">@(ViewBag.Step3Title ?? "Download")</h6>
|
|
<small class="text-muted">@(ViewBag.Step3Description ?? "Baixe o resultado")</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Área do Conversor -->
|
|
<div id="converter-container">
|
|
@await Html.PartialAsync("_ConverterWidget")
|
|
</div>
|
|
|
|
<!-- Informações Adicionais -->
|
|
<div class="row mt-4">
|
|
<div class="col-md-6">
|
|
<div class="d-flex align-items-center mb-2">
|
|
<i class="fas fa-shield-alt text-success me-2"></i>
|
|
<small class="text-muted">@(ViewBag.SecurityText ?? "Seus dados estão seguros")</small>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<div class="d-flex align-items-center mb-2">
|
|
<i class="fas fa-file-alt text-primary me-2"></i>
|
|
<small class="text-muted">@(ViewBag.FileInfoText ?? "Processamento rápido e seguro")</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Seção de Benefícios -->
|
|
<section class="benefits-section py-5">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-lg-8 mx-auto text-center mb-5">
|
|
<h2 class="h3 fw-bold mb-3">@(ViewBag.BenefitsTitle ?? "Por Que Usar Nossa Ferramenta?")</h2>
|
|
<p class="text-muted">@(ViewBag.BenefitsSubtitle ?? "Descubra os benefícios de nossa solução")</p>
|
|
</div>
|
|
</div>
|
|
<div class="row g-4">
|
|
@{
|
|
bool hasFeatureBlocks = false;
|
|
if (Model != null && Model.Blocks != null)
|
|
{
|
|
var featureBlocks = Model.Blocks.Where(b => b.Type == "features").ToList();
|
|
if (featureBlocks.Any())
|
|
{
|
|
hasFeatureBlocks = true;
|
|
var firstFeatureBlock = featureBlocks.First();
|
|
if (firstFeatureBlock.Properties != null && firstFeatureBlock.Properties.ContainsKey("feature_list"))
|
|
{
|
|
var featureList = firstFeatureBlock.Properties["feature_list"] as System.Collections.IEnumerable;
|
|
if (featureList != null)
|
|
{
|
|
foreach (var featureObj in featureList)
|
|
{
|
|
var featureDict = featureObj as Dictionary<string, object>;
|
|
if (featureDict != null)
|
|
{
|
|
<div class="col-md-6 col-lg-3">
|
|
<div class="text-center p-3">
|
|
<div class="feature-icon mb-3">
|
|
<i class="@(featureDict.GetValueOrDefault("icon", "fas fa-star")) fa-2x text-primary"></i>
|
|
</div>
|
|
<h6 class="fw-bold">@(featureDict.GetValueOrDefault("title", "Funcionalidade"))</h6>
|
|
<small class="text-muted">@(featureDict.GetValueOrDefault("description", "Descrição da funcionalidade"))</small>
|
|
</div>
|
|
</div>
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@if (!hasFeatureBlocks)
|
|
{
|
|
<!-- Features padrão se não houver dados do modelo -->
|
|
<div class="col-md-6 col-lg-3">
|
|
<div class="text-center p-3">
|
|
<div class="feature-icon mb-3">
|
|
<i class="fas fa-rocket fa-2x text-primary"></i>
|
|
</div>
|
|
<h6 class="fw-bold">@(ViewBag.Feature1Title ?? "Rápido e Fácil")</h6>
|
|
<small class="text-muted">@(ViewBag.Feature1Description ?? "Conversão instantânea")</small>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6 col-lg-3">
|
|
<div class="text-center p-3">
|
|
<div class="feature-icon mb-3">
|
|
<i class="fas fa-shield-alt fa-2x text-primary"></i>
|
|
</div>
|
|
<h6 class="fw-bold">@(ViewBag.Feature2Title ?? "Seguro")</h6>
|
|
<small class="text-muted">@(ViewBag.Feature2Description ?? "Dados protegidos")</small>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6 col-lg-3">
|
|
<div class="text-center p-3">
|
|
<div class="feature-icon mb-3">
|
|
<i class="fas fa-users fa-2x text-primary"></i>
|
|
</div>
|
|
<h6 class="fw-bold">@(ViewBag.Feature3Title ?? "Confiável")</h6>
|
|
<small class="text-muted">@(ViewBag.Feature3Description ?? "Resultados precisos")</small>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6 col-lg-3">
|
|
<div class="text-center p-3">
|
|
<div class="feature-icon mb-3">
|
|
<i class="fas fa-clock fa-2x text-primary"></i>
|
|
</div>
|
|
<h6 class="fw-bold">Rápido</h6>
|
|
<small class="text-muted">Conversão em segundos</small>
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Seção de Depoimentos (Opcional) -->
|
|
@{
|
|
bool hasTestimonialBlocks = false;
|
|
if (Model != null && Model.Blocks != null)
|
|
{
|
|
var testimonialBlocks = Model.Blocks.Where(b => b.Type == "testimonials").ToList();
|
|
if (testimonialBlocks.Any())
|
|
{
|
|
hasTestimonialBlocks = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
@if (hasTestimonialBlocks)
|
|
{
|
|
<section class="testimonials-section py-5 bg-light">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-lg-8 mx-auto text-center mb-5">
|
|
<h2 class="h3 fw-bold mb-3">@(ViewBag.DefaultTestimonialsTitle ?? "O Que Nossos Clientes Dizem")</h2>
|
|
<p class="text-muted">@(ViewBag.TestimonialsCount ?? "Avaliações positivas")</p>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-4 mb-4">
|
|
<div class="card border-0 h-100">
|
|
<div class="card-body text-center">
|
|
<p class="mb-3">"@(ViewBag.Testimonial1Quote ?? "Excelente ferramenta!")"</p>
|
|
<h6 class="fw-bold">@(ViewBag.Testimonial1Name ?? "Cliente Satisfeito")</h6>
|
|
<small class="text-muted">@(ViewBag.Testimonial1Position ?? "Usuário")</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4 mb-4">
|
|
<div class="card border-0 h-100">
|
|
<div class="card-body text-center">
|
|
<p class="mb-3">"@(ViewBag.Testimonial2Quote ?? "Muito útil e fácil de usar!")"</p>
|
|
<h6 class="fw-bold">@(ViewBag.Testimonial2Name ?? "Outro Cliente")</h6>
|
|
<small class="text-muted">@(ViewBag.Testimonial2Position ?? "Usuário")</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4 mb-4">
|
|
<div class="card border-0 h-100">
|
|
<div class="card-body text-center">
|
|
<p class="mb-3">"@(ViewBag.Testimonial3Quote ?? "Recomendo para todos!")"</p>
|
|
<h6 class="fw-bold">@(ViewBag.Testimonial3Name ?? "Mais um Cliente")</h6>
|
|
<small class="text-muted">@(ViewBag.Testimonial3Position ?? "Usuário")</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
}
|
|
|
|
<!-- Seção CTA Final -->
|
|
<section class="final-cta py-5">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-lg-8 mx-auto text-center">
|
|
<h2 class="h3 fw-bold mb-3">@(ViewBag.FinalCtaTitle ?? "Pronto para Converter?")</h2>
|
|
<p class="text-muted mb-4">@(ViewBag.FinalCtaSubtitle ?? "Use nossa ferramenta gratuita agora mesmo")</p>
|
|
<a href="#converter-container" class="btn btn-primary btn-lg">
|
|
@(ViewBag.FinalCtaButtonText ?? "Começar Conversão")
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Scripts específicos do conversor -->
|
|
@section Scripts {
|
|
<script src="~/js/converter.js"></script>
|
|
@{
|
|
var converterType = ViewBag.ConverterType ?? "generic";
|
|
var jsFileName = $"~/js/converters/{converterType.ToString().ToLower()}-converter.js";
|
|
}
|
|
<script src="@jsFileName"></script>
|
|
<script>
|
|
// Inicializar conversor específico
|
|
document.addEventListener('DOMContentLoaded', function () {
|
|
if (typeof initializeConverter === 'function') {
|
|
initializeConverter();
|
|
}
|
|
});
|
|
</script>
|
|
} |