Arquitectura de CSS

La hoja de estilos de Autómata está construida bajo el modelo BEM (bloque, elemento, modificador) ya que este modelo mantiene un estándar de nomenclatura de selectores para mejorar la legibilidad del código y facilitar su mantenimiento.

Bloque

Un bloque es un objeto o contexto que contiene elementos dentro. Por ejemplo, en el cuerpo humano, la cabeza podría ser un bloque, ya que contiene otros elementos como cabello, ojos, nariz, boca, etc.

Nota Los bloques pueden ser elementos reutilizables.

        
            
        
    

Elemento

Un elemento siempre está dentro de un bloque, en su sintaxis, un elemento se precede por el nombre del bloque padre y dos guiones bajos .bloque__elemento Siguiendo con el ejemplo del cuerpo humano, si la cabeza es el bloque, el cabello sería un elemento:

        
            
        
    

Modificador

Un modificador es para indicar cambios de estilo como el color, forma o tamaño. Siguiendo el ejemplo anterior, si el cabello es un elemento, el color sería un modificador:

Nota Los nombres de los modificadores podrían parecer repetitidos, pero de esa manera evitamos que los estilos puedan tener conflictos entre si.

        
            
        
    

Ejemplo práctico

En el siguiente ejemplo se muestra un bloque de menú construido bajo la metodología BEM junto con su código HTML y CSS.

Importante Un bloque no debería ser un elemento hijo de otro bloque, recuerda que uno de los objetivos de BEM es que los bloques puedan ser componentes reutilizables para diferentes partes de la aplicación:

        
            
        
    

Controladores de estilo

Un controlador de estilos es realmente un modificador pero controlado por JS, por eso tiene una sintaxis diferente. Automata utiliza dos tipos de controladores de estilo:

  • .is-- indica estados de un elemento o bloque, por ejemplo .is—active ó .is--hidden
  • .has-- puede usarse para elementos padre, por ejemplo saber si un bloque contiene submenus .has--submenu

Un controlador de estilos es realmente un modificador pero controlado por JS, por eso tiene una sintaxis diferente. Automata utiliza dos tipos de controladores de estilo:

        
            
        
    

Alertas

Muestran mensajes de éxito, advertencias, información importante o errores. Para usar este componente, agrega la clase .alert a un elemento <div> y después colocar tu contenido en un <p>

  • Vista previa
  • Código

Éste es un alert de ejemplo.

                    
                        
                    
                

Cerrar

Para crear un botón de cerrar a un Alert, agrega dentro el icono de cerrar con el atributo data close: <icon class="icon--x" data-close="alert"></icon>

  • Vista previa
  • Código

Éste es un alert de ejemplo.

                    
                        
                    
                

Modificadores

Hay varios modificadores de estilo disponibles, solo tienes que agregar una de las siguientes clases para darle una apariencia diferente.

Clase Uso
.alert--info Darle información destacada al usuario.
.alert--success Para buenas noticias y mensajes de éxito para el usuario.
.alert--warning Información importante para el usuario.
.alert--danger Advertir al usuario de que algo es riesgoso o peligroso.
  • Vista previa
  • Código

Info! para indicar información adicional.

Success! es para mostrar un mensaje positivo.

Warning! para mostrar una advertencia.

Danger! para mostrar un mensaje de error.

                    
                        
                    
                

Avatar

Lorem ipsum dolor sit amet consectetur adipisicing elit. Quidem earum recusandae possimus vero libero odio in voluptatum nesciunt. Unde adipisci recusandae ea cum ipsum laborum vel vitae quod hic corrupti.

Tamaños

Lorem ipsum dolor sit amet consectetur adipisicing elit. Quidem earum recusandae possimus vero libero odio in voluptatum nesciunt. Unde adipisci recusandae ea cum ipsum laborum vel vitae quod hic corrupti.

  • Vista previa
  • Código
username
username
username
                    
                        
                    
                

Iniciales

Lorem ipsum dolor sit amet consectetur adipisicing elit. Quidem earum recusandae possimus vero libero odio in voluptatum nesciunt. Unde adipisci recusandae ea cum ipsum laborum vel vitae quod hic corrupti.

  • Vista previa
  • Código
                    
                        
                    
                

Estilos

Lorem ipsum dolor sit amet consectetur adipisicing elit. Quidem earum recusandae possimus vero libero odio in voluptatum nesciunt. Unde adipisci recusandae ea cum ipsum laborum vel vitae quod hic corrupti.

  • Vista previa
  • Código
username
                    
                        
                    
                

Badges

Para crear un badge, solo declara una etiqueta <span> con la clase .badge y agrega el modificador que necesites, por ejemplo: .badge--primary

Solidos

Hay varios modificadores de color sólido disponibles, solo tienes que agregar una de las siguientes clases a un elemento .badge para darle una apariencia diferente.

Clase Uso
.badge--primary Darle información destacada al usuario.
.badge--secondary Darle información destacada al usuario.
.badge--info Darle información destacada al usuario.
.badge--success Para buenas noticias y mensajes de éxito para el usuario.
.badge--warning Información importante para el usuario.
.badge--danger Advertir al usuario de que algo es riesgoso o peligroso.
  • Vista previa
  • Código
Primary Secondary Light Info Success Warning Danger
                    
                        
                    
                

Light

Hay varios modificadores de color sólido disponibles, solo tienes que agregar una de las siguientes clases a un elemento .badge para darle una apariencia diferente.

Clase Uso
.badge--primary Darle información destacada al usuario.
.badge--secondary Darle información destacada al usuario.
.badge--info Darle información destacada al usuario.
.badge--success Para buenas noticias y mensajes de éxito para el usuario.
.badge--warning Información importante para el usuario.
.badge--danger Advertir al usuario de que algo es riesgoso o peligroso.
  • Vista previa
  • Código
Primary Secondary Light Info Success Warning Danger
                    
                        
                    
                

Breakpoints

Autómata usa 4 breakpoints para controlar el comportamiento responsivo de los elementos:

Variable Breackpoint Descripción
@widescreen (min-width: 1281px) Pantallas de más de 18"
@desktop (min-width: 961px) and (max-width: 1280px) Pantallas 13" a 18"
@tablet (min-width: 641px) and (max-width: 960px) Tablets
@mobile (max-width: 640px) Smartphones
            
                
            
        

Existen 4 breakpoints adicionales que son de utilidad en la construcción de templates o nuevos módulos.

Variable Breackpoint Descripción
@desktop-down (max-width: 1280px) Pantallas de 13" para arriba (desktop y widescreen)
@desktop-up (min-width: 641px) Pantallas de 13" para abajo (desktop, tablet y mobile)
@tablet-down (max-width: 960px) Tablet para abajo (tablet y mobile)
@tablet-up (min-width: 641px) Tablet para arriba (tablet, desktop y widescreen)

Botones

Para usar este componente, solo agrega la clase .button y un modificador como .button--primary a un elemento <a> o <button>.

Solidos

Hay varios modificadores de color sólido disponibles, solo tienes que agregar una de las siguientes clases a un elemento .button para darle una apariencia diferente.

  • Vista previa
  • Código
                    
                        
                    
                
Modificador Uso
.button--primary Acciones primarias.
.button--secondary Acciones secundarias.
.button--dark Uso general.
.button--light Uso general.
.button--info Para mostrar información general.
.button--success Para acciones positivas o monetarias.
.button--warning Para acciones de cuidado.
.button--danger Para acciones delicadas o de advertencia.

Outline

Hay varios modificadores de tipo Outline disponibles, se reocmienda usarlos principalmente para botones secundarios de las acciones menos importantes. Solo tienes que agregar una de las siguientes clases para darle una apariencia diferente.

  • Vista previa
  • Código
                    
                        
                    
                
Modificador Uso
.button--primary-outline Acciones primarias.
.button--secondary-outline Acciones secundarias.
.button--dark-outline Uso general.
.button--light-outline Uso general.
.button--info-outline Para mostrar información general.
.button--success-outline Para acciones positivas o monetarias.
.button--warning-outline Para acciones de cuidado.
.button--danger-outline Para acciones delicadas o de advertencia.

Light

Hay varios modificadores de tipo light disponibles, se reocmienda usarlos principalmente para botones secundarios de las acciones menos importantes. Solo tienes que agregar una de las siguientes clases para darle una apariencia diferente.

Modificador Uso
.button--primary-light Acciones primarias.
.button--secondary-light Acciones secundarias.
.button--dark-light Uso general.
.button--info-light Para mostrar información general.
.button--success-light Para acciones positivas o monetarias.
.button--warning-light Para acciones de cuidado.
.button--danger-light Para acciones delicadas o de advertencia.
  • Vista previa
  • Código
                    
                        
                    
                

Link

Hay varios modificadores de color sólido disponibles, solo tienes que agregar una de las siguientes clases para darle una apariencia diferente.

Modificador Uso
.button--primary-link Acciones primarias.
.button--secondary-link Acciones secundarias.
.button--dark-link Uso general.
.button--light-link Uso general.
.button--info-link Para mostrar información general.
.button--success-link Para acciones positivas o monetarias.
.button--warning-link Para acciones de cuidado.
.button--danger-link Para acciones delicadas o de advertencia.
  • Vista previa
  • Código
                    
                        
                    
                

Disabled

Es posible deshabilitar cualquier botón sin importar el modificador o estilo personalizado que tenga, solo tienes que agregar el atributo disabled o bien la clase .button--disabled a un elemento <button>

Nota Cuando un botón es deshabilitado no tendrá ningún efecto de puntero.

  • Vista previa
  • Código
                    
                        
                    
                

Tamaños

Existen dos variaciones de tamaño para los botones, grande y pequeño, para usarlas solo tienes que agregar al elemento <button> la clase .button—large ó .button--small

  • Vista previa
  • Código
                    
                        
                    
                

Fluid

Es posible hacer que un botón abarque todo el ancho de su contenedor usando el modificador .button--fluid

  • Vista previa
  • Código
                    
                        
                    
                

Botones agrupados

Es posible crear grupos de botones utilizando el componente .button-group.

  • Vista previa
  • Código
                    
                        
                    
                

Cards

El componente Card se utiliza para contener información en pequeños bloques y lograr un contenido más organizado. Además puedes definir su estilo usando el modificador .card--{color}

Modificador Uso
.card El estilo por default con fondo blanco.
.card--primary Estilo de color primario
.card--secondary Estilo de color secundario.
  • Vista previa
  • Código
Card default

Lorem ipsum dolor sit, amet consectetur adipisicing asperiores voluptates quas ullam magnam veniam consectetur eligendi.

Card primary

Lorem ipsum dolor sit, amet consectetur adipisicing asperiores voluptates quas ullam magnam veniam consectetur eligendi.

Card secondary

Lorem ipsum dolor sit, amet consectetur adipisicing asperiores voluptates quas ullam magnam veniam consectetur eligendi.

                    
                        
                    
                

Header

Un Card pueden contener el elemento .card__header para resaltar el encabezado y tiene que acompañarse siempre del elemento .card__body

  • Vista previa
  • Código
Card header

Lorem ipsum dolor sit, amet consectetur adipisicing asperiores voluptates quas ullam magnam veniam consectetur eligendi.

                    
                        
                    
                

Collapse

Lorem ipsum dolor sit amet consectetur adipisicing elit. Quidem earum recusandae possimus vero libero odio in voluptatum nesciunt. Unde adipisci recusandae ea cum ipsum laborum vel vitae quod hic corrupti.

  • Collapsible default 1
    Lorem ipsum dolor sit amet consectetur adipisicing elit. Sunt dolores consequuntur minima dolore accusamus nam! Sequi accusantium numquam consequuntur nihil aliquid nulla, sit recusandae quia aut cum beatae, laborum culpa.
  • Collapsible default 2
    Lorem ipsum dolor sit amet consectetur adipisicing elit. Sunt dolores consequuntur minima dolore accusamus nam! Sequi accusantium numquam consequuntur nihil aliquid nulla, sit recusandae quia aut cum beatae, laborum culpa.
  • Collapsible default 2
    Lorem ipsum dolor sit amet consectetur adipisicing elit. Sunt dolores consequuntur minima dolore accusamus nam! Sequi accusantium numquam consequuntur nihil aliquid nulla, sit recusandae quia aut cum beatae, laborum culpa.
  • Collapsible primary 1
    Lorem ipsum dolor sit amet consectetur adipisicing elit. Sunt dolores consequuntur minima dolore accusamus nam! Sequi accusantium numquam consequuntur nihil aliquid nulla, sit recusandae quia aut cum beatae, laborum culpa.
        
            
        
    

Columns

.row lorem .columnLorem ipsum dolor sit .widescreen--6 .desktop--6 .tablet--6 .mobile--6 amet consectetur adipisicing elit. Quidem earum recusandae possimus vero libero odio in voluptatum nesciunt. Unde adipisci recusandae ea cum ipsum laborum vel vitae quod hic corrupti.

12
2
4
6

Lorem ipsum dolor .row--auto sit amet consectetur adipisicing elitidem earum recusandae.

2
auto
auto

Lorem ipsum dolor sit .column--expand amet consectetur adipisicing elit. Quidem earum recusandae possimus vero libero odio in voluptatum nesciunt. Unde adipisci recusandae ea cum ipsum laborum vel vitae quod hic corrupti.

4
expand

Forms

Lorem ipsum dolor sit amet consectetur adipisicing elit. Quidem earum recusandae possimus vero libero odio in voluptatum nesciunt. Unde adipisci recusandae ea cum ipsum laborum vel vitae quod hic corrupti.

Validaciones

Lorem, ipsum dolor sit amet consectetur adipisicing elit. Dicta aut facere provident rem ipsam perferendis, excepturi reiciendis consequatur quas! Ea quidem fuga odit aspernatur reiciendis iste ex, sint animi! Soluta?

Éste nombre de usuario ya existe.
Éste nombre de usuario ya existe.

Grid

Lorem ipsum dolor sit .grid amet consectetur adipisicing elit. Quidem earum recusandae .widescreen--6 .desktop--3 .tablet--2 .mobile--1 possimus vero libero odio in voluptatum nesciunt. Unde adipisci recusandae ea cum ipsum laborum vel vitae quod hic corrupti.

column
column
column
column
column
column

List

Para aplicar este componente, agrega la clase .list a un elemento <ul> y opcionalmente puedes agregar un modificador de estilo:

Modificador Uso
.list--disc Cambia el color de las viñetas a color primario.
.list--circle Cambia el color de las viñetas a color secundario.
.list--dash Para elementos de listas que indican beneficios o ventajas.
.list--square Para elementos de listas que indican cuidado.
.list--decimal Para elementos de listas que indican peligro.
  • Vista previa
  • Código
    Disc
  • List disc
  • List disc
  • List disc
    Circle
  • List circle
  • List circle
  • List circle
    Dash
  • List dash
  • List dash
  • List dash
    Square
  • List sauqre
  • List sauqre
  • List sauqre
    Decimal
  • List decimal
  • List decimal
  • List decimal
                    
                        
                    
                

Colores

Es posible cambiar el color de las viñetas de una lista, solo tienes que usar el modificador .list--{color} en el elemento <ul>

Modificador Uso
.list--primary Cambia el color de las viñetas a color primario.
.list--secondary Cambia el color de las viñetas a color secundario.
.list--success Para elementos de listas que indican beneficios o ventajas.
.list--warning Para elementos de listas que indican cuidado.
.list--danger Para elementos de listas que indican peligro.
  • Vista previa
  • Código
  • List disc
  • List disc
  • List disc
  • List disc
  • List disc
  • List disc
  • List disc
  • List disc
  • List disc
  • List disc
  • List disc
  • List disc
  • List disc
  • List disc
  • List disc
                    
                        
                    
                

Progress

Lorem ipsum dolor sit amet consectetur adipisicing elit. Quidem earum recusandae possimus vero libero odio in voluptatum nesciunt. Unde adipisci recusandae ea cum ipsum laborum vel vitae quod hic corrupti.

Progress animada

        
            
        
    

Progress sin animar

        
            
        
    

La función startProcessing() agrega a la clase progress los span necesarios para empezar la animación.
La función endProcessing()endProcessing elimina los span para detener la animación.

        
            startProcessing();
        
    
        
            endProcessing();
        
    

Por framework ya se utilizan en automático entrando y saliendo del proceso al realizar peticiones con postData. Si es necesario parar antes de tiempo o agregar un procesando, se pueden ejecutar las funciones para mostrar el estado de procesando.

Spinner

El componente Spinner se utiliza para informar al usuario que la aplicación está procesando.

  • Vista previa
  • Código
                    
                        
                    
                

Es posible cargar el Spinner usando JS incrustando la variable app en un contenedor.

        
            $(" .container ").html(app.spinnerHTML);
        
    

Tablas

Variable Breackpoint Descripción Acciones
username $5,657.00 Pantallas de 13" para arriba (desktop y widescreen)
username $5,657.00 Pantallas de 13" para abajo (desktop, tablet y mobile)
username $5,657.00 Tablet para abajo (tablet y mobile)
username $5,657.00 Tablet para arriba (tablet, desktop y widescreen)

Toast

El componente Toast se utiliza para enviar al usuario alertas sobre las acciones del sistema que pasan en backend.

Botón de toast

Es posible invocar un Toast mediante un botón, solo tienes que agregarle los siguientes atributos:

Atributo Descripción
data-action Siempre debe tener el valor toast
data-type Puedes elegir entre los 4 diferentes tipos: info success warning danger
data-text El texto que va a contener el toast.
  • Vista previa
  • Código
                    
                        
                    
                

Función JS

Tambíen es posible invocar un Toast mediante la función atmToast() la cual ofrece los siguientes parámetros:

Parámetro Tipo Default Descripción
type String Puedes elegir entre los 4 diferentes estilos: info success warning danger
text String El texto que va a contener el toast.
time Integer 3000 El timepo en milisegundos que el toast se mostrará en pantalla.
        
            // Funcion
            atmToast(type, text, time);

            // Exjempolo
            atmToast('success', 'Acción exitosa de ejemplo.', 8000);
        
    

Tooltip

Para utilizar el componente Tooltip solo tienes que poner una o varias palabras dentro de una etiqueta span y agregar el atributo data-tooltip con el texto que quieres mostrar.

        
            
        
    
  • Vista previa
  • Código

Éste es un ejemplo de el componente tooltip aplicado.