Guias / Migracao

Migracao

Guia passo a passo para migrar o CantaSYS de Bootstrap + Open Sans + Font Awesome para o CANTA Design System. 8 etapas progressivas, sem quebrar producao.

Visao Geral

O CantaSYS atualmente usa Bootstrap 4, Open Sans e Font Awesome. A migracao para o CANTA DS sera feita de forma progressiva, permitindo coexistencia temporaria dos dois sistemas. Cada etapa pode ser deployada independentemente.

De (atual) Para (CANTA DS)
Bootstrap 4.x CANTA DS (canta-ds.css)
Open Sans Montserrat (titulos) + Inter (corpo)
Font Awesome 5/6 Material Symbols Rounded
Classes sem prefixo (.btn, .card) Prefixo .canta- (.canta-btn, .canta-card)
MetisMenu (sidebar) .canta-sidebar

Etapa 1: Coexistencia

Adicione o CSS do CANTA DS apos o Bootstrap no head_css.php. O prefixo .canta- evita conflitos. Ambos os sistemas funcionam simultaneamente.

PHP - head_css.php
<!-- Bootstrap (existente) -->
<link rel="stylesheet" href="/assets/css/bootstrap.min.css">
<link rel="stylesheet" href="/assets/css/app.css">

<!-- CANTA DS (adicionar DEPOIS do Bootstrap) -->
<link rel="stylesheet" href="https://ds.cantasys.com.br/dist/css/canta-ds.min.css">

Com ambos carregados, voce pode comecar a substituir componentes gradualmente, tela por tela, sem afetar as que ainda nao foram migradas.

Etapa 2: Botoes

Substitua as classes de botoes Bootstrap pelas equivalentes CANTA DS. O mapeamento direto facilita find-and-replace.

Bootstrap CANTA DS
.btn .btn-primary .canta-btn .canta-btn--primary
.btn .btn-secondary .canta-btn .canta-btn--secondary
.btn .btn-danger .canta-btn .canta-btn--danger
.btn .btn-success .canta-btn .canta-btn--success
.btn .btn-warning .canta-btn .canta-btn--warning
.btn .btn-info .canta-btn .canta-btn--info
.btn .btn-outline-primary .canta-btn .canta-btn--outline
.btn .btn-link .canta-btn .canta-btn--link
.btn .btn-sm .canta-btn .canta-btn--sm
.btn .btn-lg .canta-btn .canta-btn--lg
.btn-block .canta-btn--full-width
.btn-group .canta-btn-group
Antes (Bootstrap)
<button class="btn btn-primary btn-sm">
  <i class="fa fa-plus"></i> Novo
</button>
Depois (CANTA DS)
<button class="canta-btn canta-btn--primary canta-btn--sm">
  <span class="material-symbols-rounded">add</span> Novo
</button>

Etapa 3: Inputs de Formulario

Substitua os form controls e form groups do Bootstrap.

Bootstrap CANTA DS
.form-group .canta-form-group
.form-control .canta-input
.form-control-lg .canta-input .canta-input--lg
.form-control-sm .canta-input .canta-input--sm
.form-label / <label> .canta-label
.form-text .canta-form-hint
.is-invalid .canta-input--error
.is-valid .canta-input--success
.custom-select .canta-select
.custom-checkbox .canta-checkbox
.custom-radio .canta-radio
Antes (Bootstrap)
<div class="form-group">
  <label for="nome">Nome</label>
  <input type="text" class="form-control" id="nome" placeholder="Digite o nome">
  <small class="form-text text-muted">Nome completo do colaborador</small>
</div>
Depois (CANTA DS)
<div class="canta-form-group">
  <label class="canta-label" for="nome">Nome</label>
  <input type="text" class="canta-input" id="nome" placeholder="Digite o nome">
  <span class="canta-form-hint">Nome completo do colaborador</span>
</div>

Etapa 4: Alerts, Modals e Badges

Substitua os componentes de feedback e overlays.

Bootstrap CANTA DS
.alert .alert-success .canta-alert .canta-alert--success
.alert .alert-danger .canta-alert .canta-alert--error
.alert .alert-warning .canta-alert .canta-alert--warning
.alert .alert-info .canta-alert .canta-alert--info
.modal .canta-modal
.modal-dialog .canta-modal__dialog
.modal-header .canta-modal__header
.modal-body .canta-modal__body
.modal-footer .canta-modal__footer
.badge .badge-primary .canta-badge .canta-badge--primary
.badge .badge-danger .canta-badge .canta-badge--error
.badge .badge-success .canta-badge .canta-badge--success
.badge-pill .canta-badge--pill

Etapa 5: Sidebar / Navegacao

Substitua o MetisMenu + sidebar customizada pela navegacao CANTA DS. Esta e a etapa com maior impacto visual e requer mais cuidado nos testes.

Antes (MetisMenu)
<div class="left-side-menu">
  <div class="slimscroll-menu">
    <div id="sidebar-menu">
      <ul class="metismenu side-nav">
        <li class="side-nav-item">
          <a href="/dashboard" class="side-nav-link">
            <i class="fa fa-home"></i> Dashboard
          </a>
        </li>
      </ul>
    </div>
  </div>
</div>
Depois (CANTA DS)
<aside class="canta-sidebar">
  <div class="canta-sidebar__header">
    <a href="/" class="canta-sidebar__logo">CANTA<span>.</span></a>
  </div>
  <nav class="canta-sidebar__nav">
    <div class="canta-sidebar__section">
      <a href="/dashboard" class="canta-sidebar__link canta-sidebar__link--active">
        <span class="material-symbols-rounded">home</span> Dashboard
      </a>
    </div>
  </nav>
</aside>

Etapa 6: Tipografia

Substitua Open Sans por Montserrat (titulos) e Inter (corpo). Atualize os imports de fontes no head_css.php.

De Para Uso
Open Sans Regular Inter 400 Corpo de texto
Open Sans Semi-Bold Inter 600 Labels, destaques
Open Sans Bold Montserrat 700 Titulos de secao
Open Sans Extra Bold Montserrat 800 Headings principais
CSS - Remover Open Sans
/* REMOVER: */
@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600;700&display=swap');

body {
  font-family: 'Open Sans', sans-serif; /* remover */
}

/* O CANTA DS ja aplica automaticamente: */
/* body { font-family: 'Inter', sans-serif; } */
/* h1-h6 { font-family: 'Montserrat', sans-serif; } */

Etapa 7: Icones

Substitua Font Awesome por Material Symbols Rounded. A mudanca principal e de <i class="fa fa-*"> para <span class="material-symbols-rounded">nome</span>.

Font Awesome Material Symbols
<i class="fa fa-home"></i> <span class="material-symbols-rounded">home</span>
<i class="fa fa-plus"></i> <span class="material-symbols-rounded">add</span>
<i class="fa fa-pencil"></i> <span class="material-symbols-rounded">edit</span>
<i class="fa fa-trash"></i> <span class="material-symbols-rounded">delete</span>
<i class="fa fa-search"></i> <span class="material-symbols-rounded">search</span>
<i class="fa fa-cog"></i> <span class="material-symbols-rounded">settings</span>
<i class="fa fa-check"></i> <span class="material-symbols-rounded">check</span>
<i class="fa fa-times"></i> <span class="material-symbols-rounded">close</span>
<i class="fa fa-download"></i> <span class="material-symbols-rounded">download</span>
<i class="fa fa-upload"></i> <span class="material-symbols-rounded">upload</span>
<i class="fa fa-user"></i> <span class="material-symbols-rounded">person</span>
<i class="fa fa-envelope"></i> <span class="material-symbols-rounded">mail</span>
<i class="fa fa-calendar"></i> <span class="material-symbols-rounded">calendar_today</span>
<i class="fa fa-bell"></i> <span class="material-symbols-rounded">notifications</span>
<i class="fa fa-chevron-right"></i> <span class="material-symbols-rounded">chevron_right</span>

Etapa 8: Remover Bootstrap

Apos migrar todas as telas, remova o Bootstrap, Font Awesome e MetisMenu. Valide cada tela antes de remover. Use a checklist abaixo.

PHP - head_css.php (final)
<!-- REMOVER todas estas linhas: -->
<!-- <link rel="stylesheet" href="/assets/css/bootstrap.min.css"> -->
<!-- <link rel="stylesheet" href="/assets/css/font-awesome.min.css"> -->
<!-- <link rel="stylesheet" href="/assets/css/metismenu.min.css"> -->
<!-- <link rel="stylesheet" href="/assets/css/app.css"> -->

<!-- MANTER apenas: -->
<link rel="stylesheet" href="https://ds.cantasys.com.br/dist/css/canta-ds.min.css">
Checklist de remocao
1. Buscar por classes Bootstrap restantes:
   grep -r "btn-primary\|btn-danger\|btn-success" --include="*.php"
   grep -r "form-control\|form-group" --include="*.php"
   grep -r "alert-success\|alert-danger" --include="*.php"
   grep -r "modal-dialog\|modal-body" --include="*.php"

2. Buscar por Font Awesome restante:
   grep -r "fa fa-\|fas fa-\|far fa-\|fab fa-" --include="*.php"

3. Buscar por Open Sans restante:
   grep -r "Open Sans" --include="*.php" --include="*.css"

4. Testar todas as telas principais:
   - Dashboard, Financeiro, RH, TI, Servicos
   - Modais, formularios, tabelas
   - Mobile e desktop
   - Light e dark mode