Donne une identité Sert l'UX Simple à faire évoluer
La simplicité apporte de la clarté Un design complexe est coûteux Quelle valeur business ajoutée ?
Principal atout d'iOS
UX et design unifiés
Image de marque
UX avant identité graphique Applications indépendantes Pas d'équipe design centralisée
Modifications incrémentales de Gmail
Refonte en 2014
Open source pour devancer Apple
Ensemble de règles design UX unifiée = prise en main rapide
Unification des applications Android
Effets de lumières et de mouvement
Associations de couleurs précises
Animations représentent les actions
Papier opaque
Effets de lumière et pas traversable
https://www.materialpalette.com/
Élément actionnables au centre
Rapides et dynamiques
Composants réutilisables et paramétrables
Nombreuses implémentation
Similaire à Bootstrap
Templates Symfony à venir !
https://staging.espace-patient.com/preadmission/cmc
{% extends 'form_div_layout.html.twig' %}
{% block form_row -%}
<div class="row{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}">
<div class="input-field col s12">
{{- form_widget(form) -}}
{{- form_label(form) -}}
{{- form_errors(form) -}}
</div>
</div>
{%- endblock form_row %}
{% block form_label -%}
{%- set label_attr = label_attr|merge({class: (label_attr.class|default(''))|trim}) -%}
{{- parent() -}}
{%- endblock form_label %}
{% block checkbox_row -%}
<div class="row {% if not valid %} has-error{% endif %}">
{{- form_widget(form) -}}
{{- form_label(form) -}}
{{- form_errors(form) -}}
</div>
{%- endblock checkbox_row %}
Très rapide si utilisé tel quel
Difficile d'implémenter un design par dessus
https://app.scrumble.io/#!/
<md-dialog flex="80">
<md-toolbar>
<div class="md-toolbar-tools">
<h2>Edit Problem</h2><span flex="flex"></span>
<md-button ng-click="cancel()" class="md-icon-button">
<md-icon md-svg-src="close" aria-label="Close dialog"></md-icon>
</md-button>
</div>
</md-toolbar>
<md-dialog-content>
<div class="md-padding">
<md-content layout="column" class="fix-tags-input">
<div layout="row" layout-align="center center">
<md-datepicker ng-model="problem.happenedDate" md-placeholder="Date"></md-datepicker>
</div>
<md-input-container>
<label>Description</label>
<md-icon md-svg-src="clipboard-text"></md-icon>
<input ng-model="problem.description"/>
</md-input-container>
<md-input-container>
<label>Link (such as the Trello ticket link)</label>
<md-icon md-svg-src="link"></md-icon>
<input ng-model="problem.link"/>
</md-input-container>
Implémentation pour React
Mêmes avantages et inconvénients
class Sidebar extends Component {
render () {
let _props = this.props
return (
<div className='sidebar'>
<Drawer
docked={false}
open={_props.opened}
onRequestChange={(open) => _props.toggleMenu({ open })}
>
<Link to='/'>
<MenuItem
leftIcon={<ActionHome />}
onTouchTap={this.props.closeMenu}
>
Home
</MenuItem>
</Link>
<Divider />
<MenuItem
leftIcon={<ActionInfo />}
onTouchTap={this.props.closeMenu}
>
Information
</MenuItem>
</Drawer>
</div>
)
}
}
export default Sidebar
Language composant de Google
Open Source
Implémentation d'animations
<link rel="import" href="../bower_components/polymer/polymer.html">
<link rel="import" href="shared-styles.html">
<dom-module id="my-view2">
<template>
<style include="shared-styles">
:host {
display: block;
padding: 10px;
}
</style>
<div class="card">
<div class="circle">2</div>
<h1>View Two</h1>
<p>Ea duis bonorum nec, falli paulo aliquid ei eum.</p>
<p>Id nam odio natum malorum, tibique copiosae expetenda mel ea.Detracto suavitate repudiandae no eum. Id adhuc minim soluta nam.Id nam odio natum malorum, tibique copiosae expetenda mel ea.</p>
</div>
</template>
<script>
Polymer({
is: 'my-view2'
});
</script>
</dom-module>