class: middle, center # Atomic Design & Patternlab --- class: middle, center # Atomic Design --- .image-centered[![Atomic Design](images/atomic/tellerrand-dantz.png)] -- .figcaption[[Atomic Design, Brad Frost, Beyond Tellerrand 2013](http://vimeo.com/67476280)] --- .image-centered[![Atomic Design](images/atomic/htmlelements2.png)] --- .image-centered[![Atomic Design](images/atomic/elements.png)] --- .image-centered[![Atomic Design](images/atomic/htmlelements.png)] --- .image-centered[![Atomic Design](images/atomic/atomic.png)] --- .image-centered[![Atomic Design](images/atomic/atome.png)] .figcaption[Bespielatome: Einfache HTML Elemente] --- ## Beispiel: Atome ```html
Link
Lorem delectus elit facer voluptatem amet consequuntur.
lorem ipsum
Bold ipsum
``` --- ## Beispiel: Molekuel ```html
Home
About
Blog
``` --- ## Beispiel: Organismen ```html
Seitentitel
Unterueberschrift
Home
About
Blog
``` --- class: middle, center # Atomic Design mit Patternlab --- ## Patternlab * Patternlab ist ein Living Styleguide Generator * Templatesprache ist Mustache * Responsive Tester * Codeview * Vererbung * Statusmanagement * Annotation --- ## Patternlab: Beispiel `index.html` ```html
Link
Link
Link
Überschrift
Hier steht Content. Mit vielen Untermodulen
```
--- ## Patternlab: Atom `link.html` ```html
linktext
``` -- `_patterns/atoms/01-links/00-link.mustache` ```html
{{link.text}}
``` -- `_data.json` / `link.json` ```json "link": { "url": "#", "text": "linktext" } ``` Content wird mit *json* gepflegt. Es gibt eine globale *_data.json*, die immer ausgelesen wird. Wird im selben Ordner eine *json* Datei mit selbem Namen wie die jeweilige *mustache* Datei angelegt, wird dieser Inhalt eingepflegt. *Diese vererbt sich allerdings nicht.* --- ## Patternlab: Molekuele `_patterns/molecules/01-navigation/00-navigation.mustache` ```html
{{> atoms-link }}
{{> atoms-link }}
{{> atoms-link(link.url:"google.de", link.text:"Ein anderer Text") }}
``` * Molekuele sind zusammengefasste HTML Elemente * z.B. eine Navigation, Teaser, etc * Die Einbindung erfolgt mit `{{> typ-dateiname}}`. * JSON Elemente koennen als Parameter mitgegeben werden. --- ## Patternlab: Organismen `_patterns/organisms/01-global/00-header.mustache` ```html
{{> molecules-logo}} {{> molecules-navigation}}
``` * Organismen sind zusammengefasste Seitenbereiche * z.B Header, Footer, Artikeltext --- ## Patternlab: Templates `_patterns/templates/01-home/00-homepage.mustache` ```html
{{> organisms-header}}
{{> molecules-heroimage}} {{> atoms-headline}} {{> molecules-paragraph}} {{> organisms-carousel}} {{> organisms-teaserwall}} {{> molecules-cta}}
{{> organisms-footer}}
``` * Templates sind Seitentypen, zusammengesteckt mit den jeweiligen Modulen --- ## Patternlab: Pages `_patterns/pages/01-home/00-homepage.mustache` ```html {{> templates-homepage}} ``` -- `_patterns/pages/01-home/00-homepage.json` ```json { [...] "logo": "../images/mylogo", "headline" : { "content" : "mein content" } [...] } ``` * vorhandene Templates werden mithilfe einer JSON Datei komplett ueberschrieben