SlideShare a Scribd company logo
Design Systems, Pattern
Libraries & WordPress
Jesse James Arnold and Grant Kinney from Exygy
Change is Constant
New challenges require new tools
Responsive Design
Stay flexible.
Our canvas is unknown
We don’t know what the target resolution and screen size are.
We’re not designing pages, we’re
designing systems of components.
Stephen Hay
Components
Each component of an interface needs to be considered independently and then brought together to
form any number of layouts.
Micro Layouts
Each unique section of the page had its own rules based content and device context.
Context Free
Components should be able to adapt to any number of layouts and screen sizes.
We like our components to be fluid by default, allowing the
container to define the width as much as possible.
Interface Inventory
Be more modular
The answer has always been to break your interface into smaller pieces.
header
image
body
block
Building blocks
Object oriented ideas
- Avoid unnecessarily
duplicating styles
- Encourages code reuse
- Easier to track down and
modify the common styles
- Smaller file sizes increase
performance
header
image
body
block
https://www.smashingmagazine.com/2011/12/an-introduction-to-object-oriented-css-oocss/
Atomic Design
Design Pattern
A design pattern is an element of an interface that can solve a specific
design problem and repeats across the product in various contexts with a
variety of content.
Benefits
Visual consistency for users impacts user
experience.
Speeds up workflow between design and
engineering.
Creates a shared language that connects
the whole team.
Buttons
Examples
Easy wins for any team getting
started:
Color palette
Font stack
Icon library
No more design handoff
Design is a work in progress, it is never handed off to be built.
<html>
<body>
<h1>My Website is Done</h1>
</body>
</html>
Pattern Library
A place to put all of this stuff.
Team Goals
Should provide the following team benefits:
1. Allows designers to contribute.
2. Allows product owners to qa and review design in browser.
3. Provides documentation for engineers.
Pattern Library: Fabricator
Fabricator: Taxonomy
└── materials
└── components
└── structures
or
└── materials
└── atoms
└── molecules
└── organism
Fabricator: Documentation
---
notes: |
These are notes written in `markdown`
---
<div class="component">My Component</div>
Fabricator: Data
links:
About Us:
- About Us
- Careers
- Media Center
- Legal
{{#each home.links}}
{{#each this}}
<a
href="#">{{this}}</a>
{{/each}}
{{/each}}
<a href="#">About Us</a>
<a href="#">Careers</a>
<a href="#">Media Center</a>
<a href="#">Legal</a>
SF Dahlia Pattern Library
Pattern Library: Fabricator
Pros:
Allows you to create your own materials logic.
Self documenting HTML components.
Navigation automatically generated.
Can feed it real data to test each component.
Pattern Library: Growing Pains
Scaffolding new features may introduce redundancy or code bloat.
Product wants to share core components of one product pattern library with
other product teams.
Visual design updates may share common elements with a feature in
development and cause disruption.
While importing CSS and JS from pattern library is easy, importing HTML
templates is still copy and paste.
Current Workflow
Design
Pattern
Library
CSS
Engineering WebApp
Extra Work and Quickly
Falls Out of Sync
Reproduce
Markup
Plugin that ports fabricator
functionality to work within a custom
WordPress theme.
Pattern library and application share
the same templates.
https://github.com/Exygy/wp-pattern-library
(this could easily be done with other platforms: AngularJS,
React, Ruby on Rails, Django, Laravel, etc)
New strategy: wp-pattern-library
Better Workflow
Design
Pattern
Library
Engineering WebApp
Markup
Templating
wp-pattern-library: directory structure
wp-content/themes/custom-theme/
pattern-library
- materials
- atoms
- buttons
- button.php
- button-icon.php
- button-sizes.php
- lists
- list-unordered.php
- list-ordered.php
- forms
- checkbox.php
- input-text.php
- radio.php
- paragraph.php
- molecules
- nav-menu.php
- tabs.php
- topbar.php
- organisms
- media-grid.php
- story-grid.php
- tile-grid.php
wp-pattern-library: Atoms
text: Submit
classes: hollow
---
<button class="button <?= esc_attr( $classes ) ?>"><?= $text ?></button>
button.php
<a class="primay button" href="#">So Primary</a>
<a class="hollow button" href="#">So Hollow</a>
<a class="secondary button" href="#">So Secondary</a>
<a class="secondary hollow button" href="#">So Hollow</a>
---
text: Submit
classes: hollow
---
<button class="button <?= esc_attr( $classes ) ?>"><?= $text ?></button>
button-colors.php
wp-pattern-library: Molecules
topbar.php
<div data-sticky-container>
<div
class="top-bar<?php if (is_not_pl()) : ?> data-sticky<?php endif ?>”
data-options="marginTop:0; stickyOn: small;"
style="width:100%"
>
<div class="top-bar-title">
<button class="top-bar-menu-icon" type="button" data-toggle="page">
<?php get_icon('menu') ?>
</button>
<div class="top-bar-name">
<span class="top-bar-name-content">
Custom Theme
</span>
</div>
</div>
...
wp-pattern-library: Molecules
block-columns.php---
title: Basic Content
text: This basic content makes an interesting point!
category: Component
image_src: http://placehold.it/768x350
url: #
---
<div class="block-columns">
<a class="block-columns-link" href="<?= esc_url( $url ) ?>">
<div class="block-column">
<div class="block-column-content">
<header class="block-column-header">
<span class="block-column-category"><?= $category ?></span>
<h3 class="block-column-title"><?= $title ?></h3>
</header>
<p class="block-column-text"><?= $text ?></p>
</div>
</div>
<div class="block-column">
<figure class="block-column-figure">
<img src="<?= esc_attr( $image_src ) ?>">
...
wp-pattern-library: Organisms
block-column-list.php
<section class="block-columns-list">
<?php get_pattern('molecule', 'block-columns') ?>
<?php get_pattern('molecule', 'block-columns') ?>
<?php get_pattern('molecule', 'block-columns') ?>
</section>
wp-pattern-library: Code Reuse
Call patterns from within
WordPress templates:
example post loop
<?php while ( have_posts() ) : the_post(); ?>
<div class="block" data-equalizer-watch>
<a class="block-link" href="<?php the_permalink() ?>">
<figure class="block-figure">
<img src="<?= esc_url( get_the_post_thumbnail_url( null, 'component-thumb' ) ) ?>">
</figure>
<div class="block-content">
<h3 class="block-title <?= esc_attr( Harmony::has_item_been_updated( get_the_ID() ) ?
'is-recent' : '' ) ?>">
<?php the_title() ?>
</h3>
<p class="block-text">
<?= wp_trim_words( get_field('description'), 18, '...' ) ?>
</p>
</div>
</a>
</div>
<?php endwhile; ?>
<?php while ( have_posts() ) : the_post();
get_pattern('molecule', 'block', [
'title' => get_the_title(),
'text' => wp_trim_words( get_field('description'), 18, '...' ),
'image' => get_the_post_thumbnail_url(null, 'component-thumb'),
'link' => get_permalink(),
'classes' => Harmony::has_item_been_updated(get_the_ID()) ? 'is-recent'
: '',
'attrs' => 'data-equalizer-watch'
]);
endwhile; ?>
before
after
wp-pattern-library: Code Reuse
Single source of truth for html
markup.
● Map WordPress data to pattern
variables (title, text, etc)
● All markup updates made from
molecules/block.php
● Application and pattern library
are always up to date
<?php while ( have_posts() ) : the_post();
get_pattern('molecule', 'block', [
'title' => get_the_title(),
'text' => wp_trim_words( get_field('description'), 18, '...' ),
'image' => get_the_post_thumbnail_url(null, 'component-thumb'),
'link' => get_permalink(),
'classes' => Harmony::has_item_been_updated(get_the_ID()) ? 'is-recent'
: '',
'attrs' => 'data-equalizer-watch'
]);
endwhile; ?>
Pattern Library: Resources
Fabricator
http://fbrctr.github.io/
Starter Kit with Fabricator and Foundation 6
https://github.com/exygy-design/exygy-patterns-f6
Living Example
https://sf-dahlia-pattern-library.herokuapp.com/
WordPress Plugin
https://github.com/Exygy/wp-pattern-library

More Related Content

What's hot

DrupalCon Austin 2014 Implement Foundation or Other Front-End Frameworks in Y...
DrupalCon Austin 2014 Implement Foundation or Other Front-End Frameworks in Y...DrupalCon Austin 2014 Implement Foundation or Other Front-End Frameworks in Y...
DrupalCon Austin 2014 Implement Foundation or Other Front-End Frameworks in Y...
James Moughon
 
Theme development essentials columbus oh word camp 2012
Theme development essentials   columbus oh word camp 2012Theme development essentials   columbus oh word camp 2012
Theme development essentials columbus oh word camp 2012Joe Querin
 
Обзор Material Design Light (MDL). Александр Кашеверов.
Обзор Material Design Light (MDL). Александр Кашеверов.Обзор Material Design Light (MDL). Александр Кашеверов.
Обзор Material Design Light (MDL). Александр Кашеверов.
DataArt
 
Doing More with LESS for CSS
Doing More with LESS for CSSDoing More with LESS for CSS
Doing More with LESS for CSS
Todd Anglin
 
Component Driven Design and Development
Component Driven Design and DevelopmentComponent Driven Design and Development
Component Driven Design and Development
Cristina Chumillas
 
"Responsive Web Design: Clever Tips and Techniques". Vitaly Friedman, Smashin...
"Responsive Web Design: Clever Tips and Techniques". Vitaly Friedman, Smashin..."Responsive Web Design: Clever Tips and Techniques". Vitaly Friedman, Smashin...
"Responsive Web Design: Clever Tips and Techniques". Vitaly Friedman, Smashin...
Yandex
 
Slides bootstrap-4
Slides bootstrap-4Slides bootstrap-4
Slides bootstrap-4
Michael Posso
 
Bootstrap 3 Basic - Bangkok WordPress Meetup
Bootstrap 3 Basic - Bangkok WordPress MeetupBootstrap 3 Basic - Bangkok WordPress Meetup
Bootstrap 3 Basic - Bangkok WordPress Meetup
Woratana Perth Ngarmtrakulchol
 
Practical tipsmakemobilefaster oscon2016
Practical tipsmakemobilefaster oscon2016Practical tipsmakemobilefaster oscon2016
Practical tipsmakemobilefaster oscon2016
Doris Chen
 
HTML5: The Parts You Care About - 4/Nov/13 - PrDC Saskatoon, SK
HTML5: The Parts You Care About - 4/Nov/13 - PrDC Saskatoon, SKHTML5: The Parts You Care About - 4/Nov/13 - PrDC Saskatoon, SK
HTML5: The Parts You Care About - 4/Nov/13 - PrDC Saskatoon, SK
David Wesst
 
WordPress Theme Design - Rich Media Institute Workshop
WordPress Theme Design - Rich Media Institute WorkshopWordPress Theme Design - Rich Media Institute Workshop
WordPress Theme Design - Rich Media Institute Workshop
Brendan Sera-Shriar
 
Understand front end developer
Understand front end developerUnderstand front end developer
Understand front end developer
Hsuan Fu Lien
 
5 Reasons Why Your Website Is[n’t] a Native App (PrDC 2015)
5 Reasons Why Your Website Is[n’t] a Native App (PrDC 2015)5 Reasons Why Your Website Is[n’t] a Native App (PrDC 2015)
5 Reasons Why Your Website Is[n’t] a Native App (PrDC 2015)
David Wesst
 
HTML5 and CSS3 Techniques You Can Use Today
HTML5 and CSS3 Techniques You Can Use TodayHTML5 and CSS3 Techniques You Can Use Today
HTML5 and CSS3 Techniques You Can Use TodayTodd Anglin
 
Using Core Themes in Drupal 8
Using Core Themes in Drupal 8Using Core Themes in Drupal 8
Using Core Themes in Drupal 8
Suzanne Dergacheva
 
Why You Need a Front End Developer
Why You Need a Front End DeveloperWhy You Need a Front End Developer
Why You Need a Front End Developer
Mike Wilcox
 
WordPress Theme Structure
WordPress Theme StructureWordPress Theme Structure
WordPress Theme Structure
keithdevon
 
A Beginner's Guide to Wordpress - WordCamp Montreal 2011
A Beginner's Guide to Wordpress - WordCamp Montreal 2011A Beginner's Guide to Wordpress - WordCamp Montreal 2011
A Beginner's Guide to Wordpress - WordCamp Montreal 2011
Kathryn Presner
 
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...
Jer Clarke
 
A Beginner's Guide to WordPress - WordCamp New York City 2012
A Beginner's Guide to WordPress - WordCamp New York City 2012A Beginner's Guide to WordPress - WordCamp New York City 2012
A Beginner's Guide to WordPress - WordCamp New York City 2012
Kathryn Presner
 

What's hot (20)

DrupalCon Austin 2014 Implement Foundation or Other Front-End Frameworks in Y...
DrupalCon Austin 2014 Implement Foundation or Other Front-End Frameworks in Y...DrupalCon Austin 2014 Implement Foundation or Other Front-End Frameworks in Y...
DrupalCon Austin 2014 Implement Foundation or Other Front-End Frameworks in Y...
 
Theme development essentials columbus oh word camp 2012
Theme development essentials   columbus oh word camp 2012Theme development essentials   columbus oh word camp 2012
Theme development essentials columbus oh word camp 2012
 
Обзор Material Design Light (MDL). Александр Кашеверов.
Обзор Material Design Light (MDL). Александр Кашеверов.Обзор Material Design Light (MDL). Александр Кашеверов.
Обзор Material Design Light (MDL). Александр Кашеверов.
 
Doing More with LESS for CSS
Doing More with LESS for CSSDoing More with LESS for CSS
Doing More with LESS for CSS
 
Component Driven Design and Development
Component Driven Design and DevelopmentComponent Driven Design and Development
Component Driven Design and Development
 
"Responsive Web Design: Clever Tips and Techniques". Vitaly Friedman, Smashin...
"Responsive Web Design: Clever Tips and Techniques". Vitaly Friedman, Smashin..."Responsive Web Design: Clever Tips and Techniques". Vitaly Friedman, Smashin...
"Responsive Web Design: Clever Tips and Techniques". Vitaly Friedman, Smashin...
 
Slides bootstrap-4
Slides bootstrap-4Slides bootstrap-4
Slides bootstrap-4
 
Bootstrap 3 Basic - Bangkok WordPress Meetup
Bootstrap 3 Basic - Bangkok WordPress MeetupBootstrap 3 Basic - Bangkok WordPress Meetup
Bootstrap 3 Basic - Bangkok WordPress Meetup
 
Practical tipsmakemobilefaster oscon2016
Practical tipsmakemobilefaster oscon2016Practical tipsmakemobilefaster oscon2016
Practical tipsmakemobilefaster oscon2016
 
HTML5: The Parts You Care About - 4/Nov/13 - PrDC Saskatoon, SK
HTML5: The Parts You Care About - 4/Nov/13 - PrDC Saskatoon, SKHTML5: The Parts You Care About - 4/Nov/13 - PrDC Saskatoon, SK
HTML5: The Parts You Care About - 4/Nov/13 - PrDC Saskatoon, SK
 
WordPress Theme Design - Rich Media Institute Workshop
WordPress Theme Design - Rich Media Institute WorkshopWordPress Theme Design - Rich Media Institute Workshop
WordPress Theme Design - Rich Media Institute Workshop
 
Understand front end developer
Understand front end developerUnderstand front end developer
Understand front end developer
 
5 Reasons Why Your Website Is[n’t] a Native App (PrDC 2015)
5 Reasons Why Your Website Is[n’t] a Native App (PrDC 2015)5 Reasons Why Your Website Is[n’t] a Native App (PrDC 2015)
5 Reasons Why Your Website Is[n’t] a Native App (PrDC 2015)
 
HTML5 and CSS3 Techniques You Can Use Today
HTML5 and CSS3 Techniques You Can Use TodayHTML5 and CSS3 Techniques You Can Use Today
HTML5 and CSS3 Techniques You Can Use Today
 
Using Core Themes in Drupal 8
Using Core Themes in Drupal 8Using Core Themes in Drupal 8
Using Core Themes in Drupal 8
 
Why You Need a Front End Developer
Why You Need a Front End DeveloperWhy You Need a Front End Developer
Why You Need a Front End Developer
 
WordPress Theme Structure
WordPress Theme StructureWordPress Theme Structure
WordPress Theme Structure
 
A Beginner's Guide to Wordpress - WordCamp Montreal 2011
A Beginner's Guide to Wordpress - WordCamp Montreal 2011A Beginner's Guide to Wordpress - WordCamp Montreal 2011
A Beginner's Guide to Wordpress - WordCamp Montreal 2011
 
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...
 
A Beginner's Guide to WordPress - WordCamp New York City 2012
A Beginner's Guide to WordPress - WordCamp New York City 2012A Beginner's Guide to WordPress - WordCamp New York City 2012
A Beginner's Guide to WordPress - WordCamp New York City 2012
 

Viewers also liked

Generating the research idea lecture 2 isd 554
Generating the research idea lecture 2 isd 554Generating the research idea lecture 2 isd 554
Generating the research idea lecture 2 isd 554pfungwa
 
Microservices pattern language (microxchg microxchg2016)
Microservices pattern language (microxchg microxchg2016)Microservices pattern language (microxchg microxchg2016)
Microservices pattern language (microxchg microxchg2016)
Chris Richardson
 
Lecture 2 generating the research idea
Lecture 2 generating the research idea Lecture 2 generating the research idea
Lecture 2 generating the research idea Kwabena Sarpong Anning
 
System Design and Analysis 1
System Design and Analysis 1System Design and Analysis 1
System Design and Analysis 1Boeun Tim
 
System Analysis and Design
System Analysis and DesignSystem Analysis and Design
System Analysis and Design
Aamir Abbas
 
UX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and ArchivesUX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and Archives
Ned Potter
 

Viewers also liked (6)

Generating the research idea lecture 2 isd 554
Generating the research idea lecture 2 isd 554Generating the research idea lecture 2 isd 554
Generating the research idea lecture 2 isd 554
 
Microservices pattern language (microxchg microxchg2016)
Microservices pattern language (microxchg microxchg2016)Microservices pattern language (microxchg microxchg2016)
Microservices pattern language (microxchg microxchg2016)
 
Lecture 2 generating the research idea
Lecture 2 generating the research idea Lecture 2 generating the research idea
Lecture 2 generating the research idea
 
System Design and Analysis 1
System Design and Analysis 1System Design and Analysis 1
System Design and Analysis 1
 
System Analysis and Design
System Analysis and DesignSystem Analysis and Design
System Analysis and Design
 
UX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and ArchivesUX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and Archives
 

Similar to Design Systems, Pattern Libraries & WordPress

“Good design is obvious. Great design is transparent.” — How we use Bootstrap...
“Good design is obvious. Great design is transparent.” — How we use Bootstrap...“Good design is obvious. Great design is transparent.” — How we use Bootstrap...
“Good design is obvious. Great design is transparent.” — How we use Bootstrap...
Roni Banerjee
 
Building Potent WordPress Websites
Building Potent WordPress WebsitesBuilding Potent WordPress Websites
Building Potent WordPress Websites
Kyle Cearley
 
Bootstrap PPT by Mukesh
Bootstrap PPT by MukeshBootstrap PPT by Mukesh
Bootstrap PPT by Mukesh
Mukesh Kumar
 
HTML5 and the dawn of rich mobile web applications pt 2
HTML5 and the dawn of rich mobile web applications pt 2HTML5 and the dawn of rich mobile web applications pt 2
HTML5 and the dawn of rich mobile web applications pt 2James Pearce
 
Bootstrap
BootstrapBootstrap
Bootstrap
Sarvesh Kushwaha
 
Customize all the Things! How to customize Windows and Web applications.
Customize all the Things! How to customize Windows and Web applications.Customize all the Things! How to customize Windows and Web applications.
Customize all the Things! How to customize Windows and Web applications.Jason Conger
 
integrasi template admin lte terbaru dengan laravel 7
integrasi template admin lte terbaru dengan laravel 7integrasi template admin lte terbaru dengan laravel 7
integrasi template admin lte terbaru dengan laravel 7
Adi Nata
 
Web technologies part-2
Web technologies part-2Web technologies part-2
Web technologies part-2
Michael Anthony
 
Implement rich snippets in your webshop
Implement rich snippets in your webshopImplement rich snippets in your webshop
Implement rich snippets in your webshop
Arjen Miedema
 
Diazo: Bridging Designers and Programmers
Diazo: Bridging Designers and ProgrammersDiazo: Bridging Designers and Programmers
Diazo: Bridging Designers and Programmers
TsungWei Hu
 
Agile Wordpress
Agile WordpressAgile Wordpress
Agile Wordpress
Filippo Dino
 
Highly Maintainable, Efficient, and Optimized CSS
Highly Maintainable, Efficient, and Optimized CSSHighly Maintainable, Efficient, and Optimized CSS
Highly Maintainable, Efficient, and Optimized CSSZoe Gillenwater
 
Create Responsive Website Design with Bootstrap 3
Create Responsive Website Design with Bootstrap 3Create Responsive Website Design with Bootstrap 3
Create Responsive Website Design with Bootstrap 3
Wahyu Putra
 
So, You Wanna Dev? Join the Team! - WordCamp Raleigh 2017
So, You Wanna Dev? Join the Team! - WordCamp Raleigh 2017 So, You Wanna Dev? Join the Team! - WordCamp Raleigh 2017
So, You Wanna Dev? Join the Team! - WordCamp Raleigh 2017
Evan Mullins
 
Future-proof styling in Drupal (8)
Future-proof styling in Drupal (8)Future-proof styling in Drupal (8)
Future-proof styling in Drupal (8)
Hajas Tamás
 
Advanced CSS Troubleshooting & Efficiency
Advanced CSS Troubleshooting & EfficiencyAdvanced CSS Troubleshooting & Efficiency
Advanced CSS Troubleshooting & Efficiency
Denise Jacobs
 
BADCamp 2012 -Beginner Best Practices
BADCamp 2012 -Beginner Best PracticesBADCamp 2012 -Beginner Best Practices
BADCamp 2012 -Beginner Best Practicesmeghsweet
 
ViA Bootstrap 4
ViA Bootstrap 4ViA Bootstrap 4
ViA Bootstrap 4
imdurgesh
 
SMACSS Workshop
SMACSS WorkshopSMACSS Workshop
SMACSS Workshop
Tim Hettler
 

Similar to Design Systems, Pattern Libraries & WordPress (20)

Css
CssCss
Css
 
“Good design is obvious. Great design is transparent.” — How we use Bootstrap...
“Good design is obvious. Great design is transparent.” — How we use Bootstrap...“Good design is obvious. Great design is transparent.” — How we use Bootstrap...
“Good design is obvious. Great design is transparent.” — How we use Bootstrap...
 
Building Potent WordPress Websites
Building Potent WordPress WebsitesBuilding Potent WordPress Websites
Building Potent WordPress Websites
 
Bootstrap PPT by Mukesh
Bootstrap PPT by MukeshBootstrap PPT by Mukesh
Bootstrap PPT by Mukesh
 
HTML5 and the dawn of rich mobile web applications pt 2
HTML5 and the dawn of rich mobile web applications pt 2HTML5 and the dawn of rich mobile web applications pt 2
HTML5 and the dawn of rich mobile web applications pt 2
 
Bootstrap
BootstrapBootstrap
Bootstrap
 
Customize all the Things! How to customize Windows and Web applications.
Customize all the Things! How to customize Windows and Web applications.Customize all the Things! How to customize Windows and Web applications.
Customize all the Things! How to customize Windows and Web applications.
 
integrasi template admin lte terbaru dengan laravel 7
integrasi template admin lte terbaru dengan laravel 7integrasi template admin lte terbaru dengan laravel 7
integrasi template admin lte terbaru dengan laravel 7
 
Web technologies part-2
Web technologies part-2Web technologies part-2
Web technologies part-2
 
Implement rich snippets in your webshop
Implement rich snippets in your webshopImplement rich snippets in your webshop
Implement rich snippets in your webshop
 
Diazo: Bridging Designers and Programmers
Diazo: Bridging Designers and ProgrammersDiazo: Bridging Designers and Programmers
Diazo: Bridging Designers and Programmers
 
Agile Wordpress
Agile WordpressAgile Wordpress
Agile Wordpress
 
Highly Maintainable, Efficient, and Optimized CSS
Highly Maintainable, Efficient, and Optimized CSSHighly Maintainable, Efficient, and Optimized CSS
Highly Maintainable, Efficient, and Optimized CSS
 
Create Responsive Website Design with Bootstrap 3
Create Responsive Website Design with Bootstrap 3Create Responsive Website Design with Bootstrap 3
Create Responsive Website Design with Bootstrap 3
 
So, You Wanna Dev? Join the Team! - WordCamp Raleigh 2017
So, You Wanna Dev? Join the Team! - WordCamp Raleigh 2017 So, You Wanna Dev? Join the Team! - WordCamp Raleigh 2017
So, You Wanna Dev? Join the Team! - WordCamp Raleigh 2017
 
Future-proof styling in Drupal (8)
Future-proof styling in Drupal (8)Future-proof styling in Drupal (8)
Future-proof styling in Drupal (8)
 
Advanced CSS Troubleshooting & Efficiency
Advanced CSS Troubleshooting & EfficiencyAdvanced CSS Troubleshooting & Efficiency
Advanced CSS Troubleshooting & Efficiency
 
BADCamp 2012 -Beginner Best Practices
BADCamp 2012 -Beginner Best PracticesBADCamp 2012 -Beginner Best Practices
BADCamp 2012 -Beginner Best Practices
 
ViA Bootstrap 4
ViA Bootstrap 4ViA Bootstrap 4
ViA Bootstrap 4
 
SMACSS Workshop
SMACSS WorkshopSMACSS Workshop
SMACSS Workshop
 

Recently uploaded

ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
CatarinaPereira64715
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 

Recently uploaded (20)

ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 

Design Systems, Pattern Libraries & WordPress

  • 1. Design Systems, Pattern Libraries & WordPress Jesse James Arnold and Grant Kinney from Exygy
  • 2.
  • 3. Change is Constant New challenges require new tools
  • 5. Our canvas is unknown We don’t know what the target resolution and screen size are.
  • 6. We’re not designing pages, we’re designing systems of components. Stephen Hay
  • 7. Components Each component of an interface needs to be considered independently and then brought together to form any number of layouts.
  • 8. Micro Layouts Each unique section of the page had its own rules based content and device context.
  • 9. Context Free Components should be able to adapt to any number of layouts and screen sizes. We like our components to be fluid by default, allowing the container to define the width as much as possible.
  • 11. Be more modular The answer has always been to break your interface into smaller pieces. header image body block
  • 12. Building blocks Object oriented ideas - Avoid unnecessarily duplicating styles - Encourages code reuse - Easier to track down and modify the common styles - Smaller file sizes increase performance header image body block https://www.smashingmagazine.com/2011/12/an-introduction-to-object-oriented-css-oocss/
  • 14.
  • 15. Design Pattern A design pattern is an element of an interface that can solve a specific design problem and repeats across the product in various contexts with a variety of content.
  • 16. Benefits Visual consistency for users impacts user experience. Speeds up workflow between design and engineering. Creates a shared language that connects the whole team. Buttons
  • 17. Examples Easy wins for any team getting started: Color palette Font stack Icon library
  • 18. No more design handoff Design is a work in progress, it is never handed off to be built. <html> <body> <h1>My Website is Done</h1> </body> </html>
  • 19. Pattern Library A place to put all of this stuff.
  • 20. Team Goals Should provide the following team benefits: 1. Allows designers to contribute. 2. Allows product owners to qa and review design in browser. 3. Provides documentation for engineers.
  • 22. Fabricator: Taxonomy └── materials └── components └── structures or └── materials └── atoms └── molecules └── organism
  • 23. Fabricator: Documentation --- notes: | These are notes written in `markdown` --- <div class="component">My Component</div>
  • 24. Fabricator: Data links: About Us: - About Us - Careers - Media Center - Legal {{#each home.links}} {{#each this}} <a href="#">{{this}}</a> {{/each}} {{/each}} <a href="#">About Us</a> <a href="#">Careers</a> <a href="#">Media Center</a> <a href="#">Legal</a>
  • 25. SF Dahlia Pattern Library
  • 26. Pattern Library: Fabricator Pros: Allows you to create your own materials logic. Self documenting HTML components. Navigation automatically generated. Can feed it real data to test each component.
  • 27. Pattern Library: Growing Pains Scaffolding new features may introduce redundancy or code bloat. Product wants to share core components of one product pattern library with other product teams. Visual design updates may share common elements with a feature in development and cause disruption. While importing CSS and JS from pattern library is easy, importing HTML templates is still copy and paste.
  • 28. Current Workflow Design Pattern Library CSS Engineering WebApp Extra Work and Quickly Falls Out of Sync Reproduce Markup
  • 29. Plugin that ports fabricator functionality to work within a custom WordPress theme. Pattern library and application share the same templates. https://github.com/Exygy/wp-pattern-library (this could easily be done with other platforms: AngularJS, React, Ruby on Rails, Django, Laravel, etc) New strategy: wp-pattern-library
  • 31. wp-pattern-library: directory structure wp-content/themes/custom-theme/ pattern-library - materials - atoms - buttons - button.php - button-icon.php - button-sizes.php - lists - list-unordered.php - list-ordered.php - forms - checkbox.php - input-text.php - radio.php - paragraph.php - molecules - nav-menu.php - tabs.php - topbar.php - organisms - media-grid.php - story-grid.php - tile-grid.php
  • 32. wp-pattern-library: Atoms text: Submit classes: hollow --- <button class="button <?= esc_attr( $classes ) ?>"><?= $text ?></button> button.php <a class="primay button" href="#">So Primary</a> <a class="hollow button" href="#">So Hollow</a> <a class="secondary button" href="#">So Secondary</a> <a class="secondary hollow button" href="#">So Hollow</a> --- text: Submit classes: hollow --- <button class="button <?= esc_attr( $classes ) ?>"><?= $text ?></button> button-colors.php
  • 33. wp-pattern-library: Molecules topbar.php <div data-sticky-container> <div class="top-bar<?php if (is_not_pl()) : ?> data-sticky<?php endif ?>” data-options="marginTop:0; stickyOn: small;" style="width:100%" > <div class="top-bar-title"> <button class="top-bar-menu-icon" type="button" data-toggle="page"> <?php get_icon('menu') ?> </button> <div class="top-bar-name"> <span class="top-bar-name-content"> Custom Theme </span> </div> </div> ...
  • 34. wp-pattern-library: Molecules block-columns.php--- title: Basic Content text: This basic content makes an interesting point! category: Component image_src: http://placehold.it/768x350 url: # --- <div class="block-columns"> <a class="block-columns-link" href="<?= esc_url( $url ) ?>"> <div class="block-column"> <div class="block-column-content"> <header class="block-column-header"> <span class="block-column-category"><?= $category ?></span> <h3 class="block-column-title"><?= $title ?></h3> </header> <p class="block-column-text"><?= $text ?></p> </div> </div> <div class="block-column"> <figure class="block-column-figure"> <img src="<?= esc_attr( $image_src ) ?>"> ...
  • 35. wp-pattern-library: Organisms block-column-list.php <section class="block-columns-list"> <?php get_pattern('molecule', 'block-columns') ?> <?php get_pattern('molecule', 'block-columns') ?> <?php get_pattern('molecule', 'block-columns') ?> </section>
  • 36. wp-pattern-library: Code Reuse Call patterns from within WordPress templates: example post loop <?php while ( have_posts() ) : the_post(); ?> <div class="block" data-equalizer-watch> <a class="block-link" href="<?php the_permalink() ?>"> <figure class="block-figure"> <img src="<?= esc_url( get_the_post_thumbnail_url( null, 'component-thumb' ) ) ?>"> </figure> <div class="block-content"> <h3 class="block-title <?= esc_attr( Harmony::has_item_been_updated( get_the_ID() ) ? 'is-recent' : '' ) ?>"> <?php the_title() ?> </h3> <p class="block-text"> <?= wp_trim_words( get_field('description'), 18, '...' ) ?> </p> </div> </a> </div> <?php endwhile; ?> <?php while ( have_posts() ) : the_post(); get_pattern('molecule', 'block', [ 'title' => get_the_title(), 'text' => wp_trim_words( get_field('description'), 18, '...' ), 'image' => get_the_post_thumbnail_url(null, 'component-thumb'), 'link' => get_permalink(), 'classes' => Harmony::has_item_been_updated(get_the_ID()) ? 'is-recent' : '', 'attrs' => 'data-equalizer-watch' ]); endwhile; ?> before after
  • 37. wp-pattern-library: Code Reuse Single source of truth for html markup. ● Map WordPress data to pattern variables (title, text, etc) ● All markup updates made from molecules/block.php ● Application and pattern library are always up to date <?php while ( have_posts() ) : the_post(); get_pattern('molecule', 'block', [ 'title' => get_the_title(), 'text' => wp_trim_words( get_field('description'), 18, '...' ), 'image' => get_the_post_thumbnail_url(null, 'component-thumb'), 'link' => get_permalink(), 'classes' => Harmony::has_item_been_updated(get_the_ID()) ? 'is-recent' : '', 'attrs' => 'data-equalizer-watch' ]); endwhile; ?>
  • 38. Pattern Library: Resources Fabricator http://fbrctr.github.io/ Starter Kit with Fabricator and Foundation 6 https://github.com/exygy-design/exygy-patterns-f6 Living Example https://sf-dahlia-pattern-library.herokuapp.com/ WordPress Plugin https://github.com/Exygy/wp-pattern-library