{% extends "layouts/master.html.twig" %}
{% block stylesheets %}
{{ parent() }}
{{ encore_entry_link_tags('css/styleguide') }}
{% endblock %}
{% block bodyClass %}tpl-generic-page{% endblock %}
{% block pageHeader %}
{% include 'molecules/page-header.html.twig' with {
breadcrumb: [
{ path: path('index'), title: 'Libro de estilo web da USC' }
],
title: 'Introdución'
} %}
{% endblock %}
{% block pageContent %}
<article class="generic-page-wrapper">
<div class="generic-page-intro">
<div class="at-lead-text">
<p>O sistema de deseño da USC segue os principios do <a href="http://atomicdesign.bradfrost.com/table-of-contents/">Atomic Design</a>. Con este sistema obtemos un framework modular e reutilizable basado en compoñentes.</p>
<br />
<ul>
<li><a href="#architecture">Arquitectura</a></li>
<li><a href="#javascript">Javascript</a></li>
<li><a href="#installation">Instalación</a></li>
<li><a href="#requirements">Requerimentos e recomendacións no código</a></li>
<li><a href="#drupal">Drupal</a></li>
<li><a href="#cas">CAS</a></li>
<li><a href="#versions">Todas as versións</a></li>
</ul>
</div>
</div>
<div class="generic-page-content">
<div class="org-content-block" id="architecture">
<div class="content-block-content-wrapper">
<h2>Arquitectura</h2>
<p>Cada compoñente da web, segundo a súa tipoloxía e envergadura, clasifícase como átomo, molécula, organismo ou plantilla. Para a súa identificación, empregamos un sistema de clases CSS compostas dun prefixo seguido do nome do compoñente:</p>
<ul>
<li>Átomos: <code>at-[o-seu-nome]</code></li>
<li>Moléculas: <code>ml-[o-seu-nome]</code></li>
<li>Organismos: <code>org-[o-seu-nome]</code></li>
<li>Plantillas: <code>tpl-[o-seu-nome]</code></li>
</ul>
<p>Neste framework non se asignan estilos ao que Brad Frost denomina <a href="http://atomicdesign.bradfrost.com/chapter-2/#pages">páxinas</a> no seu sistema, pois é unha clasificación que queda reservada para estilos que, de ser necesarios, se apliquen na implementación final onde se use este sistema de deseño.</p>
</div>
</div>
<div class="org-content-block" id="javascript">
<div class="content-block-content-wrapper">
<h2>Javascript</h2>
<p>O Javascript está desenvolto basado no framework <a href="https://vuejs.org/">Vue.js</a> e modularizado en <a href="https://vuejs.org/v2/guide/components.html">compoñentes</a> reutilizables.</p>
</div>
</div>
<div class="org-content-block" id="installation">
<div class="content-block-content-wrapper">
<h2>Instalación</h2>
<p>Para usar este framework, débense incluír no proxecto todos os arquivos da <a href="#versions">última versión</a>, e vinclular os arquivos CSS e fontes de Google Fonts no <code>head</code> e os JS ao peche do <code>body</code>:</p>
{%
set code = '<head>
<link href="https://fonts.googleapis.com/css?family=IBM+Plex+Serif:400,400i,500,700&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=IBM+Plex+Sans:400,700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="/path-to-release/fonts/iconusc.css">
<link rel="stylesheet" href="/path-to-release/css/app.css">
</head>
<body>
<div id="app">
<!-- Código da páxina -->
</div>
<script src="/path-to-release/runtime.js"></script>
<script src="/path-to-release/0.js"></script>
<script src="/path-to-release/1.js"></script>
<script src="/path-to-release/js/app.js"></script>
</body>'
%}
<div class="org-example">
<pre class="example-code"><code>{{ code }}</code></pre>
</div>
</div>
</div>
<div class="org-content-block" id="requirements">
<div class="content-block-content-wrapper">
<h2>Requerimentos e recomendacións no código</h2>
<p>Usa o doctype de HTML5:</p>
{%
set code = '<!DOCTYPE html>'
%}
<div class="org-example">
<pre class="example-code"><code>{{ code }}</code></pre>
</div>
<p>Engade o meta tag de viewport responsive:</p>
{%
set code = '<meta name="viewport" content="width=device-width, initial-scale=1">'
%}
<div class="org-example">
<pre class="example-code"><code>{{ code }}</code></pre>
</div>
<p>Engade un contedor con id <code>#app</code> como punto de arranque da aplicación Javascript que conteña o resto do código <code>body</code>:</p>
{%
set code = '<body>
<a href="#main-content" class="is-sr-only">Ir ao contido da páxina</a>
<div id="app">
<div class="site-header-wrapper">
<!-- Cabeceira da páxina -->
</div>
<main id="main-content" class="container">
<!-- Contido da páxina -->
</main>
</div>
</body>'
%}
<div class="org-example">
<pre class="example-code"><code>{{ code }}</code></pre>
</div>
<p>É recomendable engadir unha ligazón ao principio do documento cunha áncora que leve ao contido da páxina, para mellorar a accesibilidade facilitando a navegación mediante lectores de pantalla.</p>
<p>Para calquera outra dúbida estrutural do código pódense consultar as plantillas e/ou páxinas de exemplo.</p>
</div>
</div>
<div class="org-content-block" id="drupal">
<div class="content-block-content-wrapper">
<h2>Drupal</h2>
<p>Para a aplicación do sistema de deseño en Drupal é necesario incluír un arquivo CSS extra para os seus estilos específicos:</p>
{%
set code = '<head>
...
<link rel="stylesheet" href="/path-to-release/css/drupal.css">
</head>'
%}
<div class="org-example">
<pre class="example-code"><code>{{ code }}</code></pre>
</div>
</div>
</div>
<div class="org-content-block" id="cas">
<div class="content-block-content-wrapper">
<h2>CAS</h2>
<p>Para a aplicación do sistema de deseño no CAS existe unha versión reducida dos assets:</p>
{%
set code = '<!DOCTYPE html>
<html lang="gl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/css?family=IBM+Plex+Serif:400,400i,700&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=IBM+Plex+Sans:400,700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="/path-to-release/fonts/iconusc.css">
<link rel="stylesheet" href="/path-to-release/css/sites/cas.css">
...
</head>
<body class="">
<a href="#main-content" class="is-sr-only">Ir ao contido da páxina</a>
<div id="app">
...
<main id="main-content" class="container">
...
</main>
...
<script src="/path-to-release/runtime.js"></script>
<script src="/path-to-release/0.js"></script>
<script src="/path-to-release/js/sites/cas/app.js"></script>
</div>
</body>
</html>'
%}
<div class="org-example">
<pre class="example-code"><code>{{ code }}</code></pre>
</div>
</div>
</div>
<div class="org-content-block" id="versions">
<div class="content-block-content-wrapper">
<h2>Todas as versións</h2>
<ul>
<li><a href="{{ asset('releases/v1.1.1/v1.1.1.zip') }}">1.1.1</a> - 31/03/2022</li>
<li><a href="{{ asset('releases/v1.1.0/v1.1.0.zip') }}">1.1.0</a> - 07/02/2022</li>
<li><a href="{{ asset('releases/v1.0.18/v1.0.18.zip') }}">1.0.18</a> - 03/12/2021</li>
<li><a href="{{ asset('releases/v1.0.17/v1.0.17.zip') }}">1.0.17</a> - 08/10/2021</li>
<li><a href="{{ asset('releases/v1.0.16/v1.0.16.zip') }}">1.0.16</a> - 23/03/2021</li>
<li><a href="{{ asset('releases/v1.0.15/v1.0.15.zip') }}">1.0.15</a> - 22/03/2021</li>
<li><a href="{{ asset('releases/v1.0.14/v1.0.14.zip') }}">1.0.14</a> - 28/01/2021</li>
<li><a href="{{ asset('releases/v1.0.13/v1.0.13.zip') }}">1.0.13</a> - 12/01/2021</li>
<li><a href="{{ asset('releases/v1.0.12/v1.0.12.zip') }}">1.0.12</a> - 09/12/2020</li>
<li><a href="{{ asset('releases/v1.0.11/v1.0.11.zip') }}">1.0.11</a> - 02/12/2020</li>
<li><a href="{{ asset('releases/v1.0.10/v1.0.10.zip') }}">1.0.10</a> - 29/06/2020</li>
<li><a href="{{ asset('releases/v1.0.9/v1.0.9.zip') }}">1.0.9</a> - 16/04/2020</li>
<li><a href="{{ asset('releases/v1.0.8/v1.0.8.zip') }}">1.0.8</a> - 08/04/2020</li>
<li><a href="{{ asset('releases/v1.0.7/v1.0.7.zip') }}">1.0.7</a> - 17/03/2020</li>
<li><a href="{{ asset('releases/v1.0.6/v1.0.6.zip') }}">1.0.6</a> - 04/03/2020</li>
<li><a href="{{ asset('releases/v1.0.5/v1.0.5.zip') }}">1.0.5</a> - 06/02/2020</li>
<li><a href="{{ asset('releases/v1.0.4/v1.0.4.zip') }}">1.0.4</a> - 30/01/2020</li>
<li><a href="{{ asset('releases/v1.0.3/v1.0.3.zip') }}">1.0.3</a> - 24/01/2020</li>
<li><a href="{{ asset('releases/v1.0.2/v1.0.2.zip') }}">1.0.2</a> - 13/12/2019</li>
<li><a href="{{ asset('releases/v1.0.1/v1.0.1.zip') }}">1.0.1</a> - 12/12/2019</li>
<li><a href="{{ asset('releases/v1.0.0/v1.0.0.zip') }}">1.0.0</a> - 09/12/2019</li>
<li><a href="{{ asset('releases/v0.3.12/v0.3.12.zip') }}">0.3.12</a> - 04/12/2019</li>
<li><a href="{{ asset('releases/v0.3.11/v0.3.11.zip') }}">0.3.11</a> - 27/11/2019</li>
<li><a href="{{ asset('releases/v0.3.10/v0.3.10.zip') }}">0.3.10</a> - 20/11/2019</li>
<li><a href="{{ asset('releases/v0.3.9/v0.3.9.zip') }}">0.3.9</a> - 06/11/2019</li>
<li><a href="{{ asset('releases/v0.3.8/v0.3.8.zip') }}">0.3.8</a> - 30/10/2019</li>
<li><a href="{{ asset('releases/v0.3.7/v0.3.7.zip') }}">0.3.7</a> - 12/12/2019</li>
<li><a href="{{ asset('releases/v0.3.6/v0.3.6.zip') }}">0.3.6</a> - 28/10/2019</li>
<li><a href="{{ asset('releases/v0.3.5/v0.3.5.zip') }}">0.3.5</a> - 28/10/2019</li>
<li><a href="{{ asset('releases/v0.3.4/v0.3.4.zip') }}">0.3.4</a> - 22/10/2019</li>
<li><a href="{{ asset('releases/v0.3.3/v0.3.3.zip') }}">0.3.3</a> - 22/10/2019</li>
<li><a href="{{ asset('releases/v0.3.2/v0.3.2.zip') }}">0.3.2</a> - 21/10/2019</li>
<li><a href="{{ asset('releases/v0.3.1/v0.3.1.zip') }}">0.3.1</a> - 21/10/2019</li>
<li><a href="{{ asset('releases/v0.3.0/v0.3.0.zip') }}">0.3.0</a> - 09/10/2019</li>
<li><a href="{{ asset('releases/v0.2.6/v0.2.6.zip') }}">0.2.6</a> - 27/09/2019</li>
<li><a href="{{ asset('releases/v0.2.5/v0.2.5.zip') }}">0.2.5</a> - 13/09/2019</li>
<li><a href="{{ asset('releases/v0.2.4/v0.2.4.zip') }}">0.2.4</a> - 13/09/2019</li>
<li><a href="{{ asset('releases/v0.2.3/v0.2.3.zip') }}">0.2.3</a> - 05/09/2019</li>
<li><a href="{{ asset('releases/v0.2.2/v0.2.2.zip') }}">0.2.2</a> - 04/09/2019</li>
<li><a href="{{ asset('releases/v0.2.1/v0.2.1.zip') }}">0.2.1</a> - 03/09/2019</li>
<li><a href="{{ asset('releases/v0.2.0/v0.2.0.zip') }}">0.2.0</a> - 03/09/2019</li>
<li><a href="{{ asset('releases/v0.1.4/v0.1.4.zip') }}">0.1.4</a> - 23/08/2019</li>
<li><a href="{{ asset('releases/v0.1.3/v0.1.3.zip') }}">0.1.3</a> - 21/08/2019</li>
<li><a href="{{ asset('releases/v0.1.2/v0.1.2.zip') }}">0.1.2</a> - 02/08/2019</li>
<li><a href="{{ asset('releases/v0.1.1/v0.1.1.zip') }}">0.1.1</a> - 26/07/2019</li>
<li><a href="{{ asset('releases/v0.1.0/v0.1.0.zip') }}">0.1.0</a> - 17/07/2019</li>
</ul>
</div>
</div>
</div>
</article>
{% endblock %}