Files
dbmaker/estrutura_visual/databook-template/index.html

1080 lines
30 KiB
HTML

<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SteelBook - Template de Databook</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&family=Open+Sans:wght@300;400;600&display=swap" rel="stylesheet">
<style>
:root {
--primary-color: #1a365d;
--secondary-color: #2b6cb0;
--accent-color: #4299e1;
--gray-dark: #2d3748;
--gray-medium: #718096;
--gray-light: #e2e8f0;
--white: #ffffff;
--shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.12);
--shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);
--shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1);
--border-radius: 8px;
--transition: all 0.3s ease;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Open Sans', sans-serif;
background-color: #f7fafc;
color: var(--gray-dark);
overflow-x: hidden;
}
/* Header */
.header {
position: fixed;
top: 0;
left: 0;
right: 0;
height: 70px;
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
color: var(--white);
display: flex;
align-items: center;
padding: 0 2rem;
box-shadow: var(--shadow-md);
z-index: 1000;
}
.header h1 {
font-family: 'Roboto', sans-serif;
font-size: 24px;
font-weight: 700;
margin-left: 1rem;
}
.logo-placeholder {
width: 50px;
height: 50px;
background-color: rgba(255, 255, 255, 0.2);
border-radius: var(--border-radius);
display: flex;
align-items: center;
justify-content: center;
font-size: 24px;
}
/* Main Layout */
.main-container {
display: flex;
margin-top: 70px;
height: calc(100vh - 70px);
}
/* Sidebar */
.sidebar {
width: 250px;
background-color: var(--white);
border-right: 1px solid var(--gray-light);
overflow-y: auto;
box-shadow: var(--shadow-sm);
}
.sidebar-nav {
list-style: none;
padding: 1rem 0;
}
.sidebar-nav li {
margin: 0;
}
.sidebar-nav button {
width: 100%;
padding: 1rem 1.5rem;
background: none;
border: none;
text-align: left;
cursor: pointer;
font-size: 15px;
font-family: 'Open Sans', sans-serif;
color: var(--gray-dark);
transition: var(--transition);
border-left: 3px solid transparent;
display: flex;
align-items: center;
gap: 0.75rem;
}
.sidebar-nav button:hover {
background-color: rgba(66, 153, 225, 0.1);
color: var(--secondary-color);
}
.sidebar-nav button.active {
background-color: rgba(26, 54, 93, 0.08);
border-left-color: var(--primary-color);
color: var(--primary-color);
font-weight: 600;
}
.sidebar-nav .icon {
font-size: 20px;
width: 24px;
text-align: center;
}
/* Content Area */
.content-area {
flex: 1;
overflow-y: auto;
padding: 2rem;
background-color: #f7fafc;
}
.preview-container {
background-color: var(--white);
border-radius: var(--border-radius);
box-shadow: var(--shadow-lg);
min-height: calc(100vh - 140px);
position: relative;
}
/* Control Panel */
.control-panel {
width: 300px;
background-color: var(--white);
border-left: 1px solid var(--gray-light);
overflow-y: auto;
padding: 2rem 1.5rem;
box-shadow: var(--shadow-sm);
}
.control-panel h3 {
font-family: 'Roboto', sans-serif;
font-size: 18px;
color: var(--primary-color);
margin-bottom: 1.5rem;
padding-bottom: 0.5rem;
border-bottom: 2px solid var(--gray-light);
}
.form-group {
margin-bottom: 1.5rem;
}
.form-group label {
display: block;
font-size: 13px;
font-weight: 600;
color: var(--gray-medium);
margin-bottom: 0.5rem;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.form-group input[type="text"],
.form-group input[type="color"],
.form-group select {
width: 100%;
padding: 0.75rem;
border: 1px solid var(--gray-light);
border-radius: var(--border-radius);
font-size: 14px;
font-family: 'Open Sans', sans-serif;
transition: var(--transition);
}
.form-group input[type="color"] {
height: 50px;
cursor: pointer;
}
.form-group input:focus,
.form-group select:focus {
outline: none;
border-color: var(--secondary-color);
box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.1);
}
.color-preview {
display: flex;
align-items: center;
gap: 0.5rem;
margin-top: 0.5rem;
}
.color-box {
width: 40px;
height: 40px;
border-radius: var(--border-radius);
border: 2px solid var(--gray-light);
}
.color-code {
font-family: 'Courier New', monospace;
font-size: 12px;
color: var(--gray-medium);
}
.button-group {
display: flex;
gap: 0.75rem;
margin-top: 2rem;
}
.btn {
flex: 1;
padding: 0.75rem 1rem;
border: none;
border-radius: var(--border-radius);
font-size: 14px;
font-weight: 600;
cursor: pointer;
transition: var(--transition);
font-family: 'Roboto', sans-serif;
}
.btn-primary {
background-color: var(--primary-color);
color: var(--white);
}
.btn-primary:hover {
background-color: var(--secondary-color);
transform: translateY(-2px);
box-shadow: var(--shadow-md);
}
.btn-secondary {
background-color: var(--gray-light);
color: var(--gray-dark);
}
.btn-secondary:hover {
background-color: var(--gray-medium);
color: var(--white);
}
.btn-export {
width: 100%;
margin-top: 1rem;
background-color: #48bb78;
color: var(--white);
}
.btn-export:hover {
background-color: #38a169;
}
/* Template Styles */
.template-page {
width: 21cm;
min-height: 29.7cm;
margin: 0 auto;
background-color: var(--white);
padding: 2cm;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
/* Cover Template */
.cover-template {
display: flex;
flex-direction: column;
justify-content: space-between;
background: linear-gradient(135deg, rgba(26, 54, 93, 0.05), rgba(66, 153, 225, 0.05));
position: relative;
}
.cover-logo-top {
width: 200px;
height: 100px;
background-color: var(--gray-light);
border: 2px dashed var(--gray-medium);
margin: 0 auto 3rem;
display: flex;
align-items: center;
justify-content: center;
border-radius: var(--border-radius);
color: var(--gray-medium);
font-size: 14px;
}
.cover-content {
text-align: center;
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
}
.cover-title {
font-family: 'Roboto', sans-serif;
font-size: 60px;
font-weight: 700;
color: var(--primary-color);
line-height: 1.2;
margin-bottom: 1rem;
letter-spacing: -1px;
}
.cover-subtitle {
font-family: 'Roboto', sans-serif;
font-size: 36px;
font-weight: 400;
color: var(--gray-dark);
margin-bottom: 2rem;
}
.cover-divider {
width: 60%;
height: 3px;
background: linear-gradient(90deg, transparent, var(--secondary-color), transparent);
margin: 2rem auto;
}
.cover-document-info {
margin-top: 2rem;
}
.cover-document-number {
font-size: 24px;
font-weight: 600;
color: var(--secondary-color);
margin-bottom: 0.5rem;
}
.cover-contract {
font-size: 20px;
color: var(--gray-medium);
margin-bottom: 0.5rem;
}
.cover-date {
font-size: 18px;
color: var(--gray-medium);
}
.cover-logo-bottom {
width: 150px;
height: 75px;
background-color: var(--gray-light);
border: 2px dashed var(--gray-medium);
margin: 3rem auto 0;
display: flex;
align-items: center;
justify-content: center;
border-radius: var(--border-radius);
color: var(--gray-medium);
font-size: 12px;
}
/* Index Template */
.index-template {
padding: 3rem 4rem;
}
.index-title {
font-family: 'Roboto', sans-serif;
font-size: 36px;
font-weight: 700;
color: var(--primary-color);
text-align: center;
margin-bottom: 0.5rem;
}
.index-divider {
width: 100%;
height: 2px;
background-color: var(--secondary-color);
margin: 1.5rem 0 3rem;
}
.index-list {
list-style: none;
}
.index-item {
display: flex;
align-items: baseline;
margin-bottom: 1rem;
position: relative;
}
.index-item::after {
content: '';
flex: 1;
border-bottom: 1px dotted var(--gray-medium);
margin: 0 0.5rem;
}
.index-number {
font-weight: 700;
color: var(--secondary-color);
min-width: 50px;
}
.index-title-text {
flex: 1;
}
.index-page {
font-weight: 600;
color: var(--gray-dark);
min-width: 40px;
text-align: right;
}
.index-item.level-1 .index-number {
font-size: 20px;
}
.index-item.level-1 .index-title-text {
font-size: 20px;
font-weight: 700;
}
.index-item.level-2 {
padding-left: 20px;
}
.index-item.level-2 .index-title-text {
font-size: 18px;
}
.index-item.level-3 {
padding-left: 40px;
}
.index-item.level-3 .index-title-text {
font-size: 16px;
color: var(--gray-medium);
}
/* Divider Templates */
.divider-minimal {
display: flex;
align-items: center;
justify-content: center;
position: relative;
background-color: var(--white);
}
.divider-watermark {
position: absolute;
font-size: 200px;
font-weight: 700;
color: var(--primary-color);
opacity: 0.08;
font-family: 'Roboto', sans-serif;
}
.divider-content {
text-align: center;
z-index: 1;
}
.divider-number {
font-size: 48px;
font-weight: 700;
color: var(--secondary-color);
margin-bottom: 1rem;
}
.divider-title {
font-family: 'Roboto', sans-serif;
font-size: 48px;
font-weight: 700;
color: var(--primary-color);
margin-bottom: 1rem;
}
.divider-subtitle {
font-size: 24px;
color: var(--gray-medium);
font-style: italic;
}
.divider-line {
width: 200px;
height: 2px;
background-color: var(--secondary-color);
margin: 2rem auto;
}
/* Divider Lateral */
.divider-lateral {
display: flex;
background-color: var(--white);
}
.divider-sidebar {
width: 80px;
background-color: var(--primary-color);
display: flex;
align-items: center;
justify-content: center;
color: var(--white);
font-size: 72px;
font-weight: 700;
font-family: 'Roboto', sans-serif;
}
.divider-main-content {
flex: 1;
padding: 4rem 3rem;
display: flex;
flex-direction: column;
justify-content: center;
}
.divider-main-title {
font-family: 'Roboto', sans-serif;
font-size: 40px;
font-weight: 700;
color: var(--primary-color);
margin-bottom: 1rem;
}
.divider-main-subtitle {
font-size: 20px;
color: var(--gray-medium);
font-style: italic;
}
.divider-footer {
margin-top: auto;
padding-top: 2rem;
border-top: 1px solid var(--gray-light);
color: var(--gray-medium);
font-size: 14px;
}
/* Divider Corporate */
.divider-corporate {
background: linear-gradient(180deg, var(--primary-color), var(--secondary-color) 30%, var(--white) 30%);
}
.divider-corporate-header {
display: flex;
justify-content: flex-end;
padding: 1rem 2rem;
}
.divider-corporate-logo {
width: 120px;
height: 60px;
background-color: rgba(255, 255, 255, 0.9);
border-radius: var(--border-radius);
display: flex;
align-items: center;
justify-content: center;
font-size: 10px;
color: var(--gray-medium);
}
.divider-corporate-content {
text-align: center;
padding: 4rem 2rem;
}
.divider-corporate-number {
font-size: 60px;
font-weight: 700;
color: var(--primary-color);
margin-bottom: 0.5rem;
}
.divider-corporate-title {
font-family: 'Roboto', sans-serif;
font-size: 36px;
font-weight: 700;
color: var(--primary-color);
margin-bottom: 2rem;
}
.divider-info-box {
background-color: rgba(26, 54, 93, 0.05);
border: 2px solid var(--gray-light);
border-radius: var(--border-radius);
padding: 2rem;
margin: 2rem auto;
max-width: 500px;
}
.divider-info-item {
display: flex;
justify-content: space-between;
padding: 0.5rem 0;
border-bottom: 1px solid var(--gray-light);
}
.divider-info-item:last-child {
border-bottom: none;
}
.divider-info-label {
font-weight: 600;
color: var(--gray-medium);
}
.divider-info-value {
color: var(--gray-dark);
}
/* Header/Footer Templates */
.header-footer-showcase {
padding: 2rem;
}
.hf-example {
margin-bottom: 3rem;
border: 1px solid var(--gray-light);
border-radius: var(--border-radius);
overflow: hidden;
}
.hf-label {
background-color: var(--gray-light);
padding: 0.5rem 1rem;
font-weight: 600;
color: var(--gray-dark);
font-size: 14px;
}
.page-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 1rem 2rem;
border-bottom: 2px solid var(--primary-color);
background-color: var(--white);
}
.page-header-logo {
width: 80px;
height: 40px;
background-color: var(--gray-light);
border-radius: var(--border-radius);
display: flex;
align-items: center;
justify-content: center;
font-size: 10px;
color: var(--gray-medium);
}
.page-header-project {
font-size: 14px;
font-weight: 600;
color: var(--gray-dark);
}
.page-header-doc {
font-size: 12px;
color: var(--gray-medium);
font-family: 'Courier New', monospace;
}
.page-footer {
display: flex;
align-items: center;
justify-content: space-between;
padding: 1rem 2rem;
border-top: 1px solid var(--gray-light);
background-color: var(--white);
}
.page-footer-left,
.page-footer-right {
font-size: 12px;
color: var(--gray-medium);
}
.page-footer-center {
font-size: 24px;
font-weight: 700;
color: var(--primary-color);
}
/* Style Guide */
.style-guide {
padding: 2rem 3rem;
}
.sg-section {
margin-bottom: 3rem;
}
.sg-section-title {
font-family: 'Roboto', sans-serif;
font-size: 24px;
font-weight: 700;
color: var(--primary-color);
margin-bottom: 1.5rem;
padding-bottom: 0.5rem;
border-bottom: 2px solid var(--gray-light);
}
.color-palette {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
gap: 1rem;
}
.color-swatch {
text-align: center;
}
.color-sample {
height: 100px;
border-radius: var(--border-radius);
margin-bottom: 0.5rem;
border: 1px solid var(--gray-light);
}
.color-name {
font-weight: 600;
font-size: 14px;
margin-bottom: 0.25rem;
}
.color-hex {
font-family: 'Courier New', monospace;
font-size: 12px;
color: var(--gray-medium);
}
.typography-examples {
display: flex;
flex-direction: column;
gap: 1rem;
}
.typo-example {
padding: 1rem;
background-color: rgba(26, 54, 93, 0.02);
border-left: 3px solid var(--secondary-color);
}
.typo-label {
font-size: 11px;
color: var(--gray-medium);
text-transform: uppercase;
letter-spacing: 1px;
margin-bottom: 0.5rem;
}
.spacing-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
gap: 1rem;
}
.spacing-item {
text-align: center;
}
.spacing-visual {
background-color: var(--secondary-color);
margin: 0 auto 0.5rem;
}
.spacing-label {
font-size: 12px;
color: var(--gray-medium);
}
/* Modal */
.modal {
display: none;
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.7);
z-index: 2000;
align-items: center;
justify-content: center;
}
.modal.active {
display: flex;
}
.modal-content {
background-color: var(--white);
border-radius: var(--border-radius);
padding: 2rem;
max-width: 600px;
width: 90%;
max-height: 80vh;
overflow-y: auto;
box-shadow: var(--shadow-lg);
}
.modal-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 1.5rem;
}
.modal-title {
font-family: 'Roboto', sans-serif;
font-size: 24px;
font-weight: 700;
color: var(--primary-color);
}
.modal-close {
background: none;
border: none;
font-size: 28px;
color: var(--gray-medium);
cursor: pointer;
line-height: 1;
padding: 0;
width: 32px;
height: 32px;
}
.modal-close:hover {
color: var(--gray-dark);
}
.code-block {
background-color: #1e293b;
color: #e2e8f0;
padding: 1rem;
border-radius: var(--border-radius);
font-family: 'Courier New', monospace;
font-size: 12px;
overflow-x: auto;
margin: 1rem 0;
}
.copy-btn {
width: 100%;
margin-top: 1rem;
}
/* Responsive */
@media (max-width: 1200px) {
.control-panel {
width: 280px;
}
}
@media (max-width: 992px) {
.sidebar {
width: 200px;
}
.control-panel {
display: none;
}
.template-page {
transform: scale(0.8);
transform-origin: top center;
}
}
@media print {
.header,
.sidebar,
.control-panel {
display: none;
}
.content-area {
padding: 0;
}
.preview-container {
box-shadow: none;
}
.template-page {
box-shadow: none;
page-break-after: always;
}
}
</style>
</head>
<body>
<!-- Header -->
<header class="header">
<div class="logo-placeholder">📘</div>
<h1>SteelBook - Template de Databook</h1>
</header>
<!-- Main Container -->
<div class="main-container">
<!-- Sidebar Navigation -->
<aside class="sidebar">
<nav>
<ul class="sidebar-nav">
<li>
<button class="nav-item active" data-template="cover">
<span class="icon">📄</span>
<span>Capa Frontal</span>
</button>
</li>
<li>
<button class="nav-item" data-template="index">
<span class="icon">📑</span>
<span>Índice Geral</span>
</button>
</li>
<li>
<button class="nav-item" data-template="divider-minimal">
<span class="icon">🔖</span>
<span>Divisora Minimalista</span>
</button>
</li>
<li>
<button class="nav-item" data-template="divider-lateral">
<span class="icon">🔖</span>
<span>Divisora Lateral</span>
</button>
</li>
<li>
<button class="nav-item" data-template="divider-corporate">
<span class="icon">🔖</span>
<span>Divisora Corporativa</span>
</button>
</li>
<li>
<button class="nav-item" data-template="headers-footers">
<span class="icon">📋</span>
<span>Cabeçalhos e Rodapés</span>
</button>
</li>
<li>
<button class="nav-item" data-template="style-guide">
<span class="icon">🎨</span>
<span>Guia de Estilo</span>
</button>
</li>
<li>
<button class="nav-item" id="exportBtn">
<span class="icon">💾</span>
<span>Exportar Template</span>
</button>
</li>
</ul>
</nav>
</aside>
<!-- Content Area -->
<main class="content-area">
<div class="preview-container" id="previewContainer">
<!-- Templates will be injected here -->
</div>
</main>
<!-- Control Panel -->
<aside class="control-panel">
<h3>⚙️ Personalização</h3>
<div class="form-group">
<label>Cor Primária</label>
<input type="color" id="primaryColor" value="#1a365d">
<div class="color-preview">
<div class="color-box" id="primaryColorBox" style="background-color: #1a365d;"></div>
<span class="color-code" id="primaryColorCode">#1a365d</span>
</div>
</div>
<div class="form-group">
<label>Cor Secundária</label>
<input type="color" id="secondaryColor" value="#2b6cb0">
<div class="color-preview">
<div class="color-box" id="secondaryColorBox" style="background-color: #2b6cb0;"></div>
<span class="color-code" id="secondaryColorCode">#2b6cb0</span>
</div>
</div>
<div class="form-group">
<label>Nome do Projeto</label>
<input type="text" id="projectTitle" value="BUZIOS 7 PRODUCTION SYSTEM DEVELOPMENT">
</div>
<div class="form-group">
<label>Subtítulo</label>
<input type="text" id="projectSubtitle" value="AR HEAD FABRICATION LONG">
</div>
<div class="form-group">
<label>Cliente</label>
<input type="text" id="clientName" value="SAIPEM">
</div>
<div class="form-group">
<label>Número do Documento</label>
<input type="text" id="documentNumber" value="DB-B97-01_S1_VENDOR_DATABOOK">
</div>
<div class="form-group">
<label>Contrato</label>
<input type="text" id="contractNumber" value="OC 1472739">
</div>
<div class="form-group">
<label>Fornecedor</label>
<input type="text" id="supplierName" value="ENGEMETAL">
</div>
<div class="form-group">
<label>Idioma</label>
<select id="language">
<option value="both">Português/Inglês</option>
<option value="pt">Apenas Português</option>
<option value="en">Apenas Inglês</option>
</select>
</div>
<div class="button-group">
<button class="btn btn-primary" id="applyBtn">Aplicar</button>
<button class="btn btn-secondary" id="resetBtn">Reset</button>
</div>
<button class="btn btn-export" id="copyHtmlBtn">📋 Copiar HTML</button>
</aside>
</div>
<!-- Export Modal -->
<div class="modal" id="exportModal">
<div class="modal-content">
<div class="modal-header">
<h2 class="modal-title">Exportar Templates</h2>
<button class="modal-close" id="closeModal">&times;</button>
</div>
<div class="modal-body">
<p>Use o botão "Copiar HTML" no painel de controle para copiar o código HTML do template atual.</p>
<p><strong>Para exportar todos os templates:</strong></p>
<ol>
<li>Navegue por cada template usando o menu lateral</li>
<li>Clique em "Copiar HTML" para cada um</li>
<li>Cole o código em arquivos separados</li>
<li>Integre os templates em sua plataforma</li>
</ol>
<div class="code-block">// Exemplo de uso:
const template = document.querySelector('.template-page');
const html = template.innerHTML;</div>
<button class="btn btn-primary copy-btn" id="closeModalBtn">Entendi</button>
</div>
</div>
</div>
<script src="app.js"></script>
</body>
</html>