75 changed files with 2189 additions and 0 deletions
@ -0,0 +1,17 @@ |
|||||
|
{ |
||||
|
"presets": [ |
||||
|
["@babel/preset-env", { |
||||
|
"targets": { |
||||
|
"browsers": [ |
||||
|
"last 2 versions", |
||||
|
"ie >= 10" |
||||
|
] |
||||
|
}, |
||||
|
"useBuiltIns": "entry" |
||||
|
}] |
||||
|
], |
||||
|
"plugins": [ |
||||
|
["transform-class-properties", { "spec": true }], |
||||
|
"transform-object-assign" |
||||
|
] |
||||
|
} |
@ -0,0 +1,34 @@ |
|||||
|
{ |
||||
|
"extends": [ |
||||
|
"google", |
||||
|
"prettier" |
||||
|
], |
||||
|
"plugins": [ |
||||
|
"prettier" |
||||
|
], |
||||
|
"parser": "babel-eslint", |
||||
|
"parserOptions": { |
||||
|
"sourceType": "module" |
||||
|
}, |
||||
|
"env": { |
||||
|
"es6": true, |
||||
|
"node": true |
||||
|
}, |
||||
|
"rules": { |
||||
|
"comma-dangle": [2,"never"], |
||||
|
"no-invalid-this": 0, |
||||
|
"require-jsdoc": 0, |
||||
|
"max-len": ["error", { "code": 120 }], |
||||
|
|
||||
|
"object-curly-spacing": ["error", "never"], |
||||
|
"array-bracket-spacing": ["error", "never"], |
||||
|
"computed-property-spacing": ["error", "never"], |
||||
|
|
||||
|
"semi": ["error", "always"], |
||||
|
"arrow-parens": ["error", "always"], |
||||
|
|
||||
|
"no-mixed-spaces-and-tabs": "error", |
||||
|
"indent": ["error", 2], |
||||
|
"no-trailing-spaces": "error" |
||||
|
} |
||||
|
} |
@ -0,0 +1,10 @@ |
|||||
|
# Cache, temp and personal files |
||||
|
|
||||
|
/.htaccess |
||||
|
*.log |
||||
|
.sass-cache/ |
||||
|
|
||||
|
node_modules/ |
||||
|
public/ |
||||
|
package-lock.json |
||||
|
|
@ -0,0 +1,33 @@ |
|||||
|
<div class="component-article"> |
||||
|
<div class="container"> |
||||
|
<div class="row"> |
||||
|
<div class="col-12 col-md-10 pb-4"> |
||||
|
<div class="row"> |
||||
|
|
||||
|
<div class="col-12 pb-4"> |
||||
|
<input type="text" class="input-gray" placeholder="Cerca..."> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-12"> |
||||
|
<img class="image" src="/images/articleHeader.png"> |
||||
|
</div> |
||||
|
<div class="col-12"> |
||||
|
<h2 class="title"> |
||||
|
La tecnica dell'assaggio |
||||
|
</h2> |
||||
|
<span class="subtitle"> |
||||
|
Come degustare un olio extravergine |
||||
|
</span> |
||||
|
<span class="text"> |
||||
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. |
||||
|
</span> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-12 col-md-2 banner"> |
||||
|
<br><br>banner<br><br> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
@ -0,0 +1,5 @@ |
|||||
|
|
||||
|
$(document).ready( () => { |
||||
|
console.log('Load component - article') |
||||
|
|
||||
|
}) |
@ -0,0 +1,41 @@ |
|||||
|
@import "../../src/scss/variables.scss"; |
||||
|
@import "../../src/scss/mixins.scss"; |
||||
|
|
||||
|
.component-article { |
||||
|
padding: 40px 0; |
||||
|
|
||||
|
.banner { |
||||
|
background: $light-gray; |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
.image { |
||||
|
width: 100%; |
||||
|
} |
||||
|
|
||||
|
.title { |
||||
|
display: block; |
||||
|
font-size: $font-30; |
||||
|
font-weight: normal; |
||||
|
padding: 15px 0; |
||||
|
margin: 0; |
||||
|
color: $olive; |
||||
|
} |
||||
|
|
||||
|
.subtitle { |
||||
|
display: block; |
||||
|
font-size: $font-18; |
||||
|
font-weight: bold; |
||||
|
padding-bottom: 7px; |
||||
|
margin-bottom: 15px; |
||||
|
color: $dark-gray; |
||||
|
} |
||||
|
|
||||
|
.text { |
||||
|
display: block; |
||||
|
font-size: $font-16; |
||||
|
padding-bottom: 5px; |
||||
|
color: $dark-gray; |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,7 @@ |
|||||
|
<div class="component-articleBox"> |
||||
|
<a href="/article"> |
||||
|
<img class="image" src="/images/article1.png"> |
||||
|
<span class="title">Titolo articolo </span> |
||||
|
<span class="marker olive"></span> |
||||
|
</a> |
||||
|
</div> |
@ -0,0 +1,5 @@ |
|||||
|
|
||||
|
$(document).ready( () => { |
||||
|
console.log('Load component - articleBox') |
||||
|
|
||||
|
}) |
@ -0,0 +1,60 @@ |
|||||
|
@import "../../src/scss/variables.scss"; |
||||
|
@import "../../src/scss/mixins.scss"; |
||||
|
|
||||
|
.component-articleBox { |
||||
|
|
||||
|
position: relative; |
||||
|
padding-bottom: 20px; |
||||
|
height: 100%; |
||||
|
|
||||
|
.image { |
||||
|
width: 100%; |
||||
|
padding-bottom: 10px; |
||||
|
} |
||||
|
|
||||
|
.title { |
||||
|
display: block; |
||||
|
width: 100%; |
||||
|
padding-right: 5px; |
||||
|
font-size: $font-16; |
||||
|
font-weight: 600; |
||||
|
line-height: $font-16; |
||||
|
color: $black; |
||||
|
} |
||||
|
|
||||
|
.marker { |
||||
|
position: absolute; |
||||
|
top: 10px; |
||||
|
left: 10px; |
||||
|
|
||||
|
&:before { |
||||
|
position: absolute; |
||||
|
content: '\e903'; |
||||
|
font-family: $icon; |
||||
|
font-size: 30px; |
||||
|
color: $white; |
||||
|
} |
||||
|
&:after { |
||||
|
position: absolute; |
||||
|
top: 4px; |
||||
|
left: 3px; |
||||
|
content: '\e903'; |
||||
|
font-family: $icon; |
||||
|
font-size: 24px; |
||||
|
color: $gray; |
||||
|
} |
||||
|
&.olive { |
||||
|
&:after {color: $olive;} |
||||
|
} |
||||
|
&.gray { |
||||
|
&:after {color: $dark-gray;} |
||||
|
} |
||||
|
&.white { |
||||
|
&:after {color: $white;} |
||||
|
} |
||||
|
&.orange { |
||||
|
&:after {color: $orange;} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,7 @@ |
|||||
|
<div class="component-articleBox"> |
||||
|
<a href="/article"> |
||||
|
<img class="image" src="/images/article2.png"> |
||||
|
<span class="title">Titolo articolo test 2 </span> |
||||
|
<span class="marker gray"></span> |
||||
|
</a> |
||||
|
</div> |
@ -0,0 +1,7 @@ |
|||||
|
<div class="component-articleBox"> |
||||
|
<a href="/article"> |
||||
|
<img class="image" src="/images/article3.png"> |
||||
|
<span class="title">Titolo articolo </span> |
||||
|
<span class="marker white"></span> |
||||
|
</a> |
||||
|
</div> |
@ -0,0 +1,7 @@ |
|||||
|
<div class="component-articleBox"> |
||||
|
<a href="/article"> |
||||
|
<img class="image" src="/images/article4.png"> |
||||
|
<span class="title">Titolo articolo </span> |
||||
|
<span class="marker orange"></span> |
||||
|
</a> |
||||
|
</div> |
@ -0,0 +1,53 @@ |
|||||
|
<div class="component-articles"> |
||||
|
<div class="container"> |
||||
|
<div class="row"> |
||||
|
<div class="col-12 col-md-10"> |
||||
|
<div class="row"> |
||||
|
|
||||
|
<div class="col-12 pb-1"> |
||||
|
<input type="text" class="input-gray" placeholder="Cerca..."> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-12 pb-4"> |
||||
|
<select class="select"> |
||||
|
<option value="">Filtra</option> |
||||
|
<option value="1">Opzione 1</option> |
||||
|
<option value="2">Opzione 2</option> |
||||
|
<option value="3">Opzione 3</option> |
||||
|
<option value="4">Opzione 4</option> |
||||
|
</select> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
<div class="col-12 col-sm-6 col-md-3"> |
||||
|
${require('../articleBox/articleBox.html')} |
||||
|
</div> |
||||
|
<div class="col-12 col-sm-6 col-md-3"> |
||||
|
${require('../articleBox/articleBox2.html')} |
||||
|
</div> |
||||
|
<div class="col-12 col-sm-6 col-md-3"> |
||||
|
${require('../articleBox/articleBox3.html')} |
||||
|
</div> |
||||
|
<div class="col-12 col-sm-6 col-md-3"> |
||||
|
${require('../articleBox/articleBox4.html')} |
||||
|
</div> |
||||
|
<div class="col-12 col-sm-6 col-md-3"> |
||||
|
${require('../articleBox/articleBox.html')} |
||||
|
</div> |
||||
|
<div class="col-12 col-sm-6 col-md-3"> |
||||
|
${require('../articleBox/articleBox.html')} |
||||
|
</div> |
||||
|
<div class="col-12 col-sm-6 col-md-3"> |
||||
|
${require('../articleBox/articleBox.html')} |
||||
|
</div> |
||||
|
<div class="col-12 col-sm-6 col-md-3"> |
||||
|
${require('../articleBox/articleBox.html')} |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-12 col-md-2 banner"> |
||||
|
<br><br>banner |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
@ -0,0 +1,5 @@ |
|||||
|
|
||||
|
$(document).ready( () => { |
||||
|
console.log('Load component - articles') |
||||
|
|
||||
|
}) |
@ -0,0 +1,11 @@ |
|||||
|
@import "../../src/scss/variables.scss"; |
||||
|
@import "../../src/scss/mixins.scss"; |
||||
|
|
||||
|
.component-articles { |
||||
|
padding: 40px 0; |
||||
|
|
||||
|
.banner { |
||||
|
background: $light-gray; |
||||
|
text-align: center; |
||||
|
} |
||||
|
} |
@ -0,0 +1,18 @@ |
|||||
|
<div class="component-footer"> |
||||
|
<div class="container d-flex my-auto"> |
||||
|
<ul class="menu"> |
||||
|
<li class="item mr-md-4"> |
||||
|
<a href="/iolovolio" class="label"><b>io</b>lov<b>olio</b></a> |
||||
|
</li> |
||||
|
<li class="item"> |
||||
|
<a href="/terms" class="label">Termini servizio</a> |
||||
|
</li> |
||||
|
<li class="item"> |
||||
|
<a href="/privacy" class="label">Privacy</a> |
||||
|
</li> |
||||
|
<li class="item"> |
||||
|
<a href="/contacts" class="label">Contatti</a> |
||||
|
</li> |
||||
|
</ul> |
||||
|
</div> |
||||
|
</div> |
@ -0,0 +1,5 @@ |
|||||
|
|
||||
|
$(document).ready( () => { |
||||
|
console.log('Load component - footer') |
||||
|
|
||||
|
}) |
@ -0,0 +1,48 @@ |
|||||
|
@import "../../src/scss/variables.scss"; |
||||
|
@import "../../src/scss/mixins.scss"; |
||||
|
|
||||
|
.component-footer { |
||||
|
//position: absolute; |
||||
|
display: flex; |
||||
|
padding: 10px 0; |
||||
|
text-align: center; |
||||
|
width: 100%; |
||||
|
bottom: 0; |
||||
|
background: $gray; |
||||
|
color: $white; |
||||
|
|
||||
|
.menu { |
||||
|
display: block; |
||||
|
height: 100%; |
||||
|
width: 100%; |
||||
|
list-style: none; |
||||
|
margin: 0; |
||||
|
padding: 0; |
||||
|
|
||||
|
.item { |
||||
|
display: block; |
||||
|
color: $white; |
||||
|
margin: auto 20px auto 0; |
||||
|
font-size: $font-12; |
||||
|
letter-spacing: 2px; |
||||
|
padding: 5px; |
||||
|
|
||||
|
.label { |
||||
|
color: $white; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@media (min-width: map-get($grid-breakpoints, 'md')) { |
||||
|
.component-footer { |
||||
|
height: $footer-height; |
||||
|
.menu { |
||||
|
display: flex; |
||||
|
.item { |
||||
|
display: flex; |
||||
|
padding: 0; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,46 @@ |
|||||
|
<header class="component-header"> |
||||
|
|
||||
|
<div class="container header-wrapper"> |
||||
|
<button class="hamburger hamburger--spin my-auto"> |
||||
|
<span class="hamburger-box"> |
||||
|
<span class="hamburger-inner"></span> |
||||
|
</span> |
||||
|
</button> |
||||
|
|
||||
|
<div class="actions"> |
||||
|
<button class="icon icon-user"></button> |
||||
|
<button class="icon icon-cart"><span class="qty">3</span></button> |
||||
|
</div> |
||||
|
|
||||
|
<ul class="menu"> |
||||
|
<li class="item <?php if(!$_GET['q'] || $_GET['q'] == 'iolovolio') { echo "active";}?>"> |
||||
|
<a href="/iolovolio" class="label"><b>io</b>lov<b>olio ...</b></a> |
||||
|
</li> |
||||
|
<li class="item <?php if($_GET['q'] == 'buy' || $_GET['q'] == 'product') { echo "active";}?>"> |
||||
|
<a href="/buy" class="label">acquistare</a> |
||||
|
</li> |
||||
|
<li class="item <?php if($_GET['q'] == 'article' || $_GET['q'] == 'learn') { echo "active";}?>"> |
||||
|
<a href="/learn" class="label">imparare</a> |
||||
|
</li> |
||||
|
<li class="item disabled"> |
||||
|
<span class="label">produrre (coming soon)</span> |
||||
|
</li> |
||||
|
</ul> |
||||
|
|
||||
|
<ul class="sidebar-menu"> |
||||
|
<li class="item <?php if(!$_GET['q'] || $_GET['q'] == 'iolovolio') { echo "active";}?>"> |
||||
|
<a href="/iolovolio" class="label"><b>io</b>lov<b>olio ...</b></a> |
||||
|
</li> |
||||
|
<li class="item <?php if($_GET['q'] == 'buy' || $_GET['q'] == 'product') { echo "active";}?>"> |
||||
|
<a href="/buy" class="label">acquistare</a> |
||||
|
</li> |
||||
|
<li class="item <?php if($_GET['q'] == 'article' || $_GET['q'] == 'learn') { echo "active";}?>"> |
||||
|
<a href="/learn" class="label">imparare</a> |
||||
|
</li> |
||||
|
<li class="item disabled"> |
||||
|
<span class="label">produrre (coming soon)</span> |
||||
|
</li> |
||||
|
</ul> |
||||
|
</div> |
||||
|
|
||||
|
</header> |
@ -0,0 +1,23 @@ |
|||||
|
|
||||
|
$(document).ready( () => { |
||||
|
console.log('Load component - header') |
||||
|
|
||||
|
const component = $('.component-header') |
||||
|
|
||||
|
const hamburger = component.find('.hamburger') |
||||
|
const menu = component.find('.sidebar-menu') |
||||
|
|
||||
|
hamburger.off('.click').on('click.click', (e) => { |
||||
|
const ham = $(e.currentTarget) |
||||
|
|
||||
|
ham.toggleClass('is-active') |
||||
|
console.log(ham, menu) |
||||
|
|
||||
|
if(ham.hasClass('is-active')){ |
||||
|
menu.addClass('active') |
||||
|
} else { |
||||
|
menu.removeClass('active') |
||||
|
} |
||||
|
}) |
||||
|
|
||||
|
}) |
@ -0,0 +1,167 @@ |
|||||
|
@import "../../src/scss/variables.scss"; |
||||
|
@import "../../src/scss/mixins.scss"; |
||||
|
|
||||
|
.component-header { |
||||
|
position: fixed; |
||||
|
display: flex; |
||||
|
top: 0; |
||||
|
left: 0; |
||||
|
height: $header-height-mobile; |
||||
|
width: 100%; |
||||
|
background: $olive; |
||||
|
color: $white; |
||||
|
z-index: 200; |
||||
|
|
||||
|
.header-wrapper { |
||||
|
display: flex; |
||||
|
position: relative; |
||||
|
|
||||
|
.hamburger { |
||||
|
display: flex; |
||||
|
margin-right: 20px; |
||||
|
} |
||||
|
|
||||
|
.actions { |
||||
|
position: absolute; |
||||
|
right: 10px; |
||||
|
top: 50%; |
||||
|
transform: translateY(-50%); |
||||
|
|
||||
|
.icon { |
||||
|
position: relative; |
||||
|
margin: 0 5px; |
||||
|
padding: 0; |
||||
|
background: none; |
||||
|
border: none; |
||||
|
color: $white; |
||||
|
font-size: $font-24; |
||||
|
|
||||
|
.qty { |
||||
|
position: absolute; |
||||
|
top: -5px; |
||||
|
right: -5px; |
||||
|
height: 15px; |
||||
|
width: 15px; |
||||
|
border-radius: 50%; |
||||
|
background: $orange; |
||||
|
color: $white; |
||||
|
font-size: $font-12; |
||||
|
line-height: $font-16; |
||||
|
font-family: $font-sans; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.menu { |
||||
|
display: none; |
||||
|
list-style: none; |
||||
|
margin: 0; |
||||
|
padding: 0; |
||||
|
|
||||
|
.item { |
||||
|
display: flex; |
||||
|
color: $white; |
||||
|
margin: auto 20px; |
||||
|
font-size: $font-20; |
||||
|
letter-spacing: 2px; |
||||
|
|
||||
|
.label { |
||||
|
color: $white; |
||||
|
} |
||||
|
|
||||
|
&.active { |
||||
|
border-bottom: 2px solid $white; |
||||
|
} |
||||
|
|
||||
|
&.disabled { |
||||
|
.label { |
||||
|
color: $white-alpha; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.sidebar-menu { |
||||
|
position: fixed; |
||||
|
top: $header-height-mobile; |
||||
|
left: 0; |
||||
|
height: calc(100vh - #{$header-height-mobile}); |
||||
|
background: $olive; |
||||
|
display: block; |
||||
|
list-style: none; |
||||
|
margin: 0; |
||||
|
padding: 0; |
||||
|
transform: translateX(-100%); |
||||
|
transition: transform .3s; |
||||
|
|
||||
|
.item { |
||||
|
display: block; |
||||
|
color: $white; |
||||
|
margin: 20px; |
||||
|
font-size: $font-20; |
||||
|
letter-spacing: 2px; |
||||
|
padding: 20px; |
||||
|
border-bottom: 1px dotted $gray; |
||||
|
|
||||
|
.label { |
||||
|
color: $white; |
||||
|
} |
||||
|
|
||||
|
&.active { |
||||
|
//border-bottom: 2px solid $white; |
||||
|
} |
||||
|
|
||||
|
&.disabled { |
||||
|
.label { |
||||
|
color: $white-alpha; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&.active { |
||||
|
transform: translateX(0%); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
@media (min-width: map-get($grid-breakpoints, 'md')) { |
||||
|
.component-header { |
||||
|
height: $header-height; |
||||
|
|
||||
|
.header-wrapper { |
||||
|
.actions { |
||||
|
position: absolute; |
||||
|
right: 0; |
||||
|
|
||||
|
.icon { |
||||
|
margin: 0 5px; |
||||
|
font-size: $font-30; |
||||
|
|
||||
|
.qty { |
||||
|
position: absolute; |
||||
|
top: -15px; |
||||
|
right: -15px; |
||||
|
height: 25px; |
||||
|
width: 25px; |
||||
|
font-size: $font-20; |
||||
|
line-height: $font-24; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.menu { |
||||
|
display: flex; |
||||
|
} |
||||
|
|
||||
|
.sidebar-menu { |
||||
|
top: $header-height; |
||||
|
height: calc(100vh - #{$header-height}); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
@ -0,0 +1,22 @@ |
|||||
|
<div class="component-home"> |
||||
|
<div class="container my-auto"> |
||||
|
<div class="row"> |
||||
|
<div class="col-12 col-sm-6 col-md-4 order-1 order-md-0"> |
||||
|
<img class="drop" src="/images/drop1.png"> |
||||
|
<span class="title"><b>io</b>lov<b>olio</b> acquistare</span> |
||||
|
<span class="subtitle"></span> |
||||
|
<a href="/buy" class="button button-big w-100 text-uppercase">Vai allo shop</a> |
||||
|
</div> |
||||
|
<div class="col-12 col-md-4 order-0 order-md-1"> |
||||
|
<img class="logo" src="/images/logo.png"> |
||||
|
</div> |
||||
|
<div class="col-12 col-sm-6 col-md-4 order-2 order-md-2"> |
||||
|
<img class="drop" src="/images/drop2.png"> |
||||
|
<span class="title"><b>io</b>lov<b>olio</b> produrre</span> |
||||
|
<span class="subtitle">Avvisami quando l'opzione sarà attiva</span> |
||||
|
<input type="text" class="input input-big" placeholder="latuamail@mail.com"> |
||||
|
<span class="privacy">*Autorizzo il trattamento dei miei dati personali ai sensi del Dlgs 196 del 30 giugno 2003 e dell'art. 13 GDPR (Regolamento UE 2016/679)</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
@ -0,0 +1,5 @@ |
|||||
|
/* |
||||
|
$(document).ready( () => { |
||||
|
console.log('Load component - home') |
||||
|
|
||||
|
})*/ |
@ -0,0 +1,54 @@ |
|||||
|
@import "../../src/scss/variables.scss"; |
||||
|
@import "../../src/scss/mixins.scss"; |
||||
|
|
||||
|
.component-home { |
||||
|
display: flex; |
||||
|
background: $olive; |
||||
|
min-height: calc(100vh - #{$footer-height}); |
||||
|
padding: $header-height-mobile 40px 0 40px; |
||||
|
|
||||
|
.drop { |
||||
|
width: 100%; |
||||
|
padding: 40px 70px 10px 70px; |
||||
|
} |
||||
|
|
||||
|
.title { |
||||
|
display: block; |
||||
|
color: $white; |
||||
|
font-size: $font-28; |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
.subtitle { |
||||
|
display: block; |
||||
|
min-height: 30px; |
||||
|
color: $white; |
||||
|
font-size: $font-18; |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
.privacy { |
||||
|
display: block; |
||||
|
color: $white; |
||||
|
font-size: $font-12; |
||||
|
text-align: left; |
||||
|
padding-bottom: 50px; |
||||
|
} |
||||
|
|
||||
|
.logo { |
||||
|
width: 100%; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@media (min-width: map-get($grid-breakpoints, 'md')) { |
||||
|
.component-home { |
||||
|
padding: $header-height 40px 0 40px; |
||||
|
|
||||
|
.logo { |
||||
|
width: calc(100% + 100px); |
||||
|
position: absolute; |
||||
|
left: 50%; |
||||
|
transform: translateX(-50%); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,41 @@ |
|||||
|
<div class="component-pdp"> |
||||
|
<div class="container"> |
||||
|
<div class="row"> |
||||
|
<div class="col-12 col-md-10 pb-4"> |
||||
|
<div class="row"> |
||||
|
|
||||
|
<div class="col-12 pb-4"> |
||||
|
<input type="text" class="input-gray" placeholder="Cerca..."> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-12 col-sm-6 col-md-5"> |
||||
|
<img class="image" src="/images/prod2.png"> |
||||
|
</div> |
||||
|
<div class="col-12 col-sm-6 col-md-4 px-3"> |
||||
|
<h2 class="title"> |
||||
|
Nome prodotto |
||||
|
</h2> |
||||
|
<span class="subtitle"> |
||||
|
Dettagli |
||||
|
</span> |
||||
|
<span class="text"> |
||||
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. |
||||
|
</span> |
||||
|
</div> |
||||
|
<div class="col-12 col-sm-12 col-md-3"> |
||||
|
<span class="price">17,90 €</span> |
||||
|
<button class="button button-black w-100">Aggiungi al carrello</button> |
||||
|
<div class="related"> |
||||
|
<br><br>Prodotti correlati<br><br> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-12 col-md-2 banner"> |
||||
|
<br><br>banner<br><br> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
@ -0,0 +1,5 @@ |
|||||
|
|
||||
|
$(document).ready( () => { |
||||
|
console.log('Load component - pdp') |
||||
|
|
||||
|
}) |
@ -0,0 +1,54 @@ |
|||||
|
@import "../../src/scss/variables.scss"; |
||||
|
@import "../../src/scss/mixins.scss"; |
||||
|
|
||||
|
.component-pdp { |
||||
|
padding: 40px 0; |
||||
|
|
||||
|
.banner { |
||||
|
background: $light-gray; |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
.image { |
||||
|
width: 100%; |
||||
|
} |
||||
|
|
||||
|
.title { |
||||
|
display: block; |
||||
|
font-size: $font-30; |
||||
|
font-weight: normal; |
||||
|
padding: 0 0 30px 0; |
||||
|
margin: 0; |
||||
|
} |
||||
|
|
||||
|
.subtitle { |
||||
|
display: block; |
||||
|
font-size: $font-12; |
||||
|
text-transform: uppercase; |
||||
|
padding-bottom: 7px; |
||||
|
margin-bottom: 30px; |
||||
|
border-bottom: 1px solid $gray; |
||||
|
} |
||||
|
|
||||
|
.text { |
||||
|
display: block; |
||||
|
font-size: $font-12; |
||||
|
padding-bottom: 5px; |
||||
|
} |
||||
|
|
||||
|
.price { |
||||
|
display: block; |
||||
|
font-size: $font-26; |
||||
|
font-weight: normal; |
||||
|
text-align: right; |
||||
|
padding: 0 0 20px 0; |
||||
|
margin: 0; |
||||
|
} |
||||
|
|
||||
|
.related { |
||||
|
background: $light-gray; |
||||
|
text-align: center; |
||||
|
margin-top: 40px; |
||||
|
height: calc(100% - 130px); |
||||
|
} |
||||
|
} |
@ -0,0 +1,53 @@ |
|||||
|
<div class="component-plp"> |
||||
|
<div class="container"> |
||||
|
<div class="row"> |
||||
|
<div class="col-12 col-md-10"> |
||||
|
<div class="row"> |
||||
|
|
||||
|
<div class="col-12 pb-1"> |
||||
|
<input type="text" class="input-gray" placeholder="Cerca..."> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-12 pb-4"> |
||||
|
<select class="select"> |
||||
|
<option value="">Filtra</option> |
||||
|
<option value="1">Opzione 1</option> |
||||
|
<option value="2">Opzione 2</option> |
||||
|
<option value="3">Opzione 3</option> |
||||
|
<option value="4">Opzione 4</option> |
||||
|
</select> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
<div class="col-12 col-sm-6 col-md-3"> |
||||
|
${require('../productBox/productBox.html')} |
||||
|
</div> |
||||
|
<div class="col-12 col-sm-6 col-md-3"> |
||||
|
${require('../productBox/productBox2.html')} |
||||
|
</div> |
||||
|
<div class="col-12 col-sm-6 col-md-3"> |
||||
|
${require('../productBox/productBox3.html')} |
||||
|
</div> |
||||
|
<div class="col-12 col-sm-6 col-md-3"> |
||||
|
${require('../productBox/productBox4.html')} |
||||
|
</div> |
||||
|
<div class="col-12 col-sm-6 col-md-3"> |
||||
|
${require('../productBox/productBox.html')} |
||||
|
</div> |
||||
|
<div class="col-12 col-sm-6 col-md-3"> |
||||
|
${require('../productBox/productBox.html')} |
||||
|
</div> |
||||
|
<div class="col-12 col-sm-6 col-md-3"> |
||||
|
${require('../productBox/productBox.html')} |
||||
|
</div> |
||||
|
<div class="col-12 col-sm-6 col-md-3"> |
||||
|
${require('../productBox/productBox.html')} |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-12 col-md-2 banner"> |
||||
|
<br><br>banner<br><br> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
@ -0,0 +1,5 @@ |
|||||
|
|
||||
|
$(document).ready( () => { |
||||
|
console.log('Load component - plp') |
||||
|
|
||||
|
}) |
@ -0,0 +1,12 @@ |
|||||
|
@import "../../src/scss/variables.scss"; |
||||
|
@import "../../src/scss/mixins.scss"; |
||||
|
|
||||
|
.component-plp { |
||||
|
padding: 40px 0; |
||||
|
|
||||
|
.banner { |
||||
|
background: $light-gray; |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,10 @@ |
|||||
|
<div class="component-productBox"> |
||||
|
<a href="/product"> |
||||
|
<img class="image" src="/images/prod1.png"> |
||||
|
<div class="d-flex"> |
||||
|
<span class="title">Nome prodotto </span> |
||||
|
<span class="price">17,90 €</span> |
||||
|
</div> |
||||
|
</a> |
||||
|
<button class="button button-black add-to-cart">Aggiungi al carrello</button> |
||||
|
</div> |
@ -0,0 +1,5 @@ |
|||||
|
|
||||
|
$(document).ready( () => { |
||||
|
console.log('Load component - productBox') |
||||
|
|
||||
|
}) |
@ -0,0 +1,40 @@ |
|||||
|
@import "../../src/scss/variables.scss"; |
||||
|
@import "../../src/scss/mixins.scss"; |
||||
|
|
||||
|
.component-productBox { |
||||
|
position: relative; |
||||
|
padding-bottom: 80px; |
||||
|
height: 100%; |
||||
|
|
||||
|
.image { |
||||
|
width: 100%; |
||||
|
padding-bottom: 10px; |
||||
|
} |
||||
|
|
||||
|
.title { |
||||
|
display: inline-block; |
||||
|
width: calc(100% - 70px); |
||||
|
padding-right: 5px; |
||||
|
font-size: $font-16; |
||||
|
font-weight: 600; |
||||
|
line-height: $font-16; |
||||
|
color: $black; |
||||
|
} |
||||
|
|
||||
|
.price { |
||||
|
display: inline-block; |
||||
|
width: 70px; |
||||
|
font-size: $font-16; |
||||
|
font-weight: light; |
||||
|
text-align: right; |
||||
|
white-space: no-wrap; |
||||
|
color: $black; |
||||
|
} |
||||
|
|
||||
|
.add-to-cart{ |
||||
|
position: absolute; |
||||
|
bottom: 20px; |
||||
|
width: 100%; |
||||
|
} |
||||
|
} |
||||
|
|
@ -0,0 +1,10 @@ |
|||||
|
<div class="component-productBox"> |
||||
|
<a href="/product"> |
||||
|
<img class="image" src="/images/prod2.png"> |
||||
|
<div class="d-flex"> |
||||
|
<span class="title">Nome prodotto Nome prodotto Nome prodotto </span> |
||||
|
<span class="price">170,90 €</span> |
||||
|
</div> |
||||
|
</a> |
||||
|
<button class="button button-black add-to-cart">Aggiungi al carrello</button> |
||||
|
</div> |
@ -0,0 +1,10 @@ |
|||||
|
<div class="component-productBox"> |
||||
|
<a href="/product"> |
||||
|
<img class="image" src="/images/prod3.png"> |
||||
|
<div class="d-flex"> |
||||
|
<span class="title">Nome prodotto</span> |
||||
|
<span class="price">7,90 €</span> |
||||
|
</div> |
||||
|
</a> |
||||
|
<button class="button button-black add-to-cart">Aggiungi al carrello</button> |
||||
|
</div> |
@ -0,0 +1,10 @@ |
|||||
|
<div class="component-productBox"> |
||||
|
<a href="/product"> |
||||
|
<img class="image" src="/images/prod4.png"> |
||||
|
<div class="d-flex"> |
||||
|
<span class="title">Nome prodotto</span> |
||||
|
<span class="price">8,90 €</span> |
||||
|
</div> |
||||
|
</a> |
||||
|
<button class="button button-black add-to-cart">Aggiungi al carrello</button> |
||||
|
</div> |
@ -0,0 +1,8 @@ |
|||||
|
RewriteEngine On |
||||
|
RewriteCond %{REQUEST_FILENAME} !-f |
||||
|
RewriteRule ^([^\.]+)$ index.php?q=$1 [NC,L] |
||||
|
# |
||||
|
# Rewritebase / |
||||
|
# RewriteCond %{REQUEST_FILENAME} !-f |
||||
|
# RewriteCond %{REQUEST_FILENAME} !-d |
||||
|
# RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] |
@ -0,0 +1,5 @@ |
|||||
|
|
||||
|
${require('../components/article/article.html')} |
||||
|
|
||||
|
|
||||
|
|
@ -0,0 +1,5 @@ |
|||||
|
|
||||
|
${require('../components/plp/plp.html')} |
||||
|
|
||||
|
|
||||
|
|
@ -0,0 +1,5 @@ |
|||||
|
|
||||
|
${require('../components/home/home.html')} |
||||
|
|
||||
|
|
||||
|
|
@ -0,0 +1,32 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="it"> |
||||
|
<head> |
||||
|
<meta charset="UTF-8"> |
||||
|
<title>IoLovOlio</title> |
||||
|
<meta name="viewport" content="width=device-width, user-scalable=no,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"> |
||||
|
<meta name="description" content="."> |
||||
|
<link rel="stylesheet" href="/assets/css/styles.css"> |
||||
|
</head> |
||||
|
<body> |
||||
|
|
||||
|
${require('../components/header/header.html')} |
||||
|
|
||||
|
|
||||
|
<?php |
||||
|
if(!$_GET['q'] || $_GET['q'] == 'home' || $_GET['q'] == 'iolovolio') { |
||||
|
@include 'home.php'; |
||||
|
} else { |
||||
|
?> |
||||
|
<main class="main-content"> |
||||
|
<?php |
||||
|
@include $_GET['q'].'.php'; |
||||
|
?> |
||||
|
</main> |
||||
|
<?php |
||||
|
} |
||||
|
?> |
||||
|
|
||||
|
${require('../components/footer/footer.html')} |
||||
|
|
||||
|
</body> |
||||
|
</html> |
@ -0,0 +1,5 @@ |
|||||
|
|
||||
|
${require('../components/articles/articles.html')} |
||||
|
|
||||
|
|
||||
|
|
@ -0,0 +1,4 @@ |
|||||
|
${require('../components/pdp/pdp.html')} |
||||
|
|
||||
|
|
||||
|
|
@ -0,0 +1,5 @@ |
|||||
|
<div class="component-breadcrumb"> |
||||
|
<div class="row no-gutters"> |
||||
|
breadcrumb |
||||
|
</div> |
||||
|
</div> |
@ -0,0 +1,5 @@ |
|||||
|
|
||||
|
$(document).ready( () => { |
||||
|
console.log('Load component - breadcrumb') |
||||
|
|
||||
|
}) |
@ -0,0 +1,8 @@ |
|||||
|
@import "../../src/scss/variables.scss"; |
||||
|
@import "../../src/scss/mixins.scss"; |
||||
|
|
||||
|
.component-breadcrumb { |
||||
|
width: 100%; |
||||
|
background: $brown; |
||||
|
height: 100px; |
||||
|
} |
@ -0,0 +1,40 @@ |
|||||
|
<header class="component-header"> |
||||
|
|
||||
|
<div class="container header-wrapper"> |
||||
|
|
||||
|
<img class="logo" src="/images/logoHeader.png"> |
||||
|
|
||||
|
<button class="hamburger hamburger--spring my-auto"> |
||||
|
<span class="hamburger-box"> |
||||
|
<span class="hamburger-inner"></span> |
||||
|
</span> |
||||
|
</button> |
||||
|
|
||||
|
|
||||
|
<nav class="menu-container"> |
||||
|
<span class="menu-label"> |
||||
|
<a href="/iolovolio" class="label">iolovolio</b></a> |
||||
|
</span> |
||||
|
|
||||
|
<ul class="menu"> |
||||
|
<li class="item <?php if($_GET['q'] == 'learn') { echo "active";}?>"> |
||||
|
<a href="/learn" class="label">conoscere</a> |
||||
|
</li> |
||||
|
<li class="item <?php if($_GET['q'] == 'produce') { echo "active";}?>"> |
||||
|
<a href="/produce" class="label">produrre</a> |
||||
|
</li> |
||||
|
<li class="item <?php if($_GET['q'] == 'buy') { echo "active";}?>"> |
||||
|
<a href="/buy" class="label">acquistare</a> |
||||
|
</li> |
||||
|
<li class="item <?php if($_GET['q'] == 'recount') { echo "active";}?>"> |
||||
|
<a href="/recount" class="label">raccontare</a> |
||||
|
</li> |
||||
|
</ul> |
||||
|
</nav> |
||||
|
</div> |
||||
|
|
||||
|
<?php |
||||
|
@include('components/breadcrumb/breadcrumb.php'); |
||||
|
?> |
||||
|
|
||||
|
</header> |
@ -0,0 +1,26 @@ |
|||||
|
|
||||
|
$(document).ready( () => { |
||||
|
console.log('Load component - header') |
||||
|
|
||||
|
const component = $('.component-header') |
||||
|
|
||||
|
const hamburger = component.find('.hamburger') |
||||
|
const menuContainer = component.find('.menu-container') |
||||
|
const menu = menuContainer.find('.menu') |
||||
|
|
||||
|
hamburger.off('.click').on('click.click', (e) => { |
||||
|
const ham = $(e.currentTarget) |
||||
|
console.log('toggle') |
||||
|
ham.toggleClass('is-active') |
||||
|
console.log(ham, menu) |
||||
|
|
||||
|
if(ham.hasClass('is-active')){ |
||||
|
menuContainer.addClass('active') |
||||
|
menu.slideDown() |
||||
|
} else { |
||||
|
menuContainer.removeClass('active') |
||||
|
menu.slideUp() |
||||
|
} |
||||
|
}) |
||||
|
|
||||
|
}) |
@ -0,0 +1,110 @@ |
|||||
|
@import "../../src/scss/variables.scss"; |
||||
|
@import "../../src/scss/mixins.scss"; |
||||
|
|
||||
|
.component-header { |
||||
|
position: fixed; |
||||
|
top: 0; |
||||
|
left: 0; |
||||
|
min-height: $header-height-mobile; |
||||
|
width: 100%; |
||||
|
background: $white; |
||||
|
color: $black; |
||||
|
z-index: 200; |
||||
|
|
||||
|
.header-wrapper { |
||||
|
display: flex; |
||||
|
position: relative; |
||||
|
min-height: $header-height-mobile; |
||||
|
|
||||
|
.logo { |
||||
|
position: absolute; |
||||
|
top: 50%; |
||||
|
left: 50%; |
||||
|
height: 70px; |
||||
|
transform: translate(-50%, -50%); |
||||
|
} |
||||
|
|
||||
|
.hamburger { |
||||
|
position: absolute; |
||||
|
top: 45px; |
||||
|
right: 20px; |
||||
|
} |
||||
|
|
||||
|
.menu-container { |
||||
|
margin: 100px 0 20px auto; |
||||
|
|
||||
|
.menu-label { |
||||
|
//display: none; |
||||
|
position: absolute; |
||||
|
right: 35px; |
||||
|
top: 80px; |
||||
|
opacity: 0; |
||||
|
transition: transform .4s, right .4s, opacity .4s; |
||||
|
transform-origin: right; |
||||
|
transform: rotate(-90deg); |
||||
|
-webkit-backface-visibility: hidden; |
||||
|
|
||||
|
.label { |
||||
|
@include font-style($font-serif, 'regular', $font-18); |
||||
|
color: $brown; |
||||
|
transition: font-size .4s; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.menu { |
||||
|
text-align: right; |
||||
|
display: none; |
||||
|
opacity: 0; |
||||
|
transition: opacity .4s; |
||||
|
|
||||
|
.item { |
||||
|
padding: 0 5px; |
||||
|
|
||||
|
.label { |
||||
|
@include font-style($font-serif, 'regular', $font-18); |
||||
|
color: $olive-dark; |
||||
|
} |
||||
|
|
||||
|
&:first-of-type { |
||||
|
padding-top: 5px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&.active { |
||||
|
.menu-label { |
||||
|
opacity: 1; |
||||
|
transform: rotate(0deg); |
||||
|
right: 20px; |
||||
|
.label { |
||||
|
font-size:$font-14; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.menu { |
||||
|
opacity: 1; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
@media (min-width: map-get($grid-breakpoints, 'md')) { |
||||
|
.component-header { |
||||
|
min-height: $header-height; |
||||
|
.header-wrapper { |
||||
|
min-height: $header-height; |
||||
|
.menu-container { |
||||
|
.menu-label { |
||||
|
//display: block; |
||||
|
opacity: 1; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
@ -0,0 +1,18 @@ |
|||||
|
|
||||
|
COMPDIR="components/$2" |
||||
|
|
||||
|
if [ ${1} = "add" ] |
||||
|
then |
||||
|
mkdir $COMPDIR |
||||
|
printf "<div class=\"component-$2\">\n <div class=\"row no-gutters\">\n </div>\n</div>" > "$COMPDIR/$2.html" |
||||
|
printf "@import \"../../src/scss/variables.scss\";\n@import \"../../src/scss/mixins.scss\";\n \n.component-$2 {\n\n}" > "$COMPDIR/$2.scss" |
||||
|
printf "\n\$(document).ready( () => {\n console.log('Load component - $2')\n\n})" > "$COMPDIR/$2.js" |
||||
|
echo "@import \"./components/$2/$2.scss\";" >> src/scss/main.scss |
||||
|
fi |
||||
|
|
||||
|
if [ ${1} = "del" ] |
||||
|
then |
||||
|
rm -rf $COMPDIR |
||||
|
sed -i "\/$2\/$2.scss/d" src/scss/main.scss |
||||
|
fi |
||||
|
|
@ -0,0 +1,19 @@ |
|||||
|
#!/bin/bash |
||||
|
|
||||
|
BASE="http://2.238.194.8/iolovolio/" |
||||
|
|
||||
|
BASE_PARSED=$(echo $BASE | sed 's/\//\\\//g') |
||||
|
|
||||
|
cd public |
||||
|
for f in *.php |
||||
|
do |
||||
|
sed -i "s/href\=\"\//href\=\"$BASE_PARSED/g" "$f" |
||||
|
sed -i "s/src\=\"\//src\=\"$BASE_PARSED/g" "$f" |
||||
|
sed -i "s/src\=\"\.\//src\=\"$BASE_PARSED/g" "$f" |
||||
|
done |
||||
|
cd .. |
||||
|
|
||||
|
#scp -r -i ./auth/marketmind.pem ./public/* ubuntu@18.194.83.82:/var/www/anesacademy.com/ |
||||
|
# rsync -avz --delete -e "ssh -i ./auth/marketmind.pem" ./public/* ubuntu@18.194.83.82:/var/www/anesacademy.com/ |
||||
|
rsync -avz --delete -e "ssh -p2222" ./public/* cdr@2.238.194.8:/www/iolovolio/ |
||||
|
# scp -r ./public/.htaccess cdr@2.238.194.8:/www/iolovolio/.htaccess |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 985 KiB |
After Width: | Height: | Size: 16 KiB |
@ -0,0 +1,57 @@ |
|||||
|
{ |
||||
|
"name": "iolovolio", |
||||
|
"version": "1.0.0", |
||||
|
"description": "IoLoVolio", |
||||
|
"main": "index.js", |
||||
|
"repository": "http://git.dslak.it:3000/dslak/iolovolio.git", |
||||
|
"scripts": { |
||||
|
"dev": "nodemon --watch webpack.config.js --exec \"webpack --config webpack.config.js --watch --progress --mode development\"", |
||||
|
"prod": "webpack --config webpack.config.js --mode none --env.prod", |
||||
|
"deploy": "sh deploy.sh", |
||||
|
"add-comp": "sh ./comps.sh add", |
||||
|
"del-comp": "sh ./comps.sh del", |
||||
|
"preview": "http-server", |
||||
|
"clean": "rm -rf ./node_modules ./public ./package-lock.json" |
||||
|
}, |
||||
|
"author": "Dslak", |
||||
|
"license": "MIT", |
||||
|
"dependencies": { |
||||
|
"@babel/core": "^7.12.10", |
||||
|
"@babel/preset-env": "^7.12.10", |
||||
|
"autoprefixer": "^10.1.0", |
||||
|
"babel-eslint": "^10.1.0", |
||||
|
"babel-loader": "^8.2.2", |
||||
|
"babel-plugin-transform-class-properties": "^6.24.1", |
||||
|
"babel-plugin-transform-object-assign": "^6.22.0", |
||||
|
"base-href-webpack-plugin": "^2.0.0", |
||||
|
"bootstrap": "^4.5.3", |
||||
|
"copy-webpack-plugin": "^6.0.3", |
||||
|
"css-loader": "^5.0.1", |
||||
|
"es6-promise-promise": "^1.0.0", |
||||
|
"eslint": "^7.15.0", |
||||
|
"eslint-config-google": "^0.14.0", |
||||
|
"eslint-config-prettier": "^7.0.0", |
||||
|
"eslint-plugin-prettier": "^3.2.0", |
||||
|
"extract-loader": "^5.1.0", |
||||
|
"file-loader": "^6.2.0", |
||||
|
"glob": "^7.1.6", |
||||
|
"hamburgers": "^1.1.3", |
||||
|
"handlebars": "^4.7.6", |
||||
|
"html-loader": "^1.3.2", |
||||
|
"html-webpack-plugin": "^3.2.0", |
||||
|
"http-server": "^0.12.3", |
||||
|
"jquery": "^3.5.1", |
||||
|
"mini-css-extract-plugin": "^1.3.3", |
||||
|
"minimist": "^1.2.5", |
||||
|
"node-sass": "^5.0.0", |
||||
|
"nodemon": "^2.0.6", |
||||
|
"popper.js": "^1.16.1", |
||||
|
"postcss-loader": "^4.1.0", |
||||
|
"prettier": "^2.2.1", |
||||
|
"sass-loader": "^10.1.0", |
||||
|
"url-loader": "^4.1.1", |
||||
|
"webpack": "^4.44.2", |
||||
|
"webpack-cli": "^4.2.0", |
||||
|
"webpack-notifier": "^1.12.0" |
||||
|
} |
||||
|
} |
@ -0,0 +1,8 @@ |
|||||
|
RewriteEngine On |
||||
|
RewriteCond %{REQUEST_FILENAME} !-f |
||||
|
RewriteRule ^([^\.]+)$ index.php?q=$1 [NC,L] |
||||
|
# |
||||
|
# Rewritebase / |
||||
|
# RewriteCond %{REQUEST_FILENAME} !-f |
||||
|
# RewriteCond %{REQUEST_FILENAME} !-d |
||||
|
# RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] |
@ -0,0 +1,31 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="it"> |
||||
|
<head> |
||||
|
<meta charset="UTF-8"> |
||||
|
<title>IoLovOlio</title> |
||||
|
<meta name="viewport" content="width=device-width, user-scalable=no,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"> |
||||
|
<meta name="description" content="."> |
||||
|
<link rel="stylesheet" href="/assets/css/styles.css"> |
||||
|
</head> |
||||
|
<body> |
||||
|
|
||||
|
${require('../components/header/header.html')} |
||||
|
|
||||
|
|
||||
|
<?php |
||||
|
if(!$_GET['q'] || $_GET['q'] == 'home' || $_GET['q'] == 'iolovolio') { |
||||
|
@include 'home.php'; |
||||
|
} else { |
||||
|
?> |
||||
|
<main class="main-content"> |
||||
|
<?php |
||||
|
@include $_GET['q'].'.php'; |
||||
|
?> |
||||
|
</main> |
||||
|
<?php |
||||
|
} |
||||
|
?> |
||||
|
|
||||
|
|
||||
|
</body> |
||||
|
</html> |
@ -0,0 +1,13 @@ |
|||||
|
const autoprefixer = require('autoprefixer') |
||||
|
|
||||
|
module.exports = { |
||||
|
plugins: [ |
||||
|
autoprefixer({ |
||||
|
overrideBrowserslist: [ |
||||
|
'last 2 versions', |
||||
|
'> 1%', |
||||
|
'maintained node versions', |
||||
|
'not dead', 'ie >= 10'] |
||||
|
}) |
||||
|
] |
||||
|
} |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 4.5 KiB |
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@ -0,0 +1,22 @@ |
|||||
|
|
||||
|
window.readyResize = (callback, orientation = false) => { |
||||
|
if ($.isFunction(callback)) { |
||||
|
$(document).ready(()=>{ |
||||
|
callback() |
||||
|
}) |
||||
|
$(window).resize(()=>{ |
||||
|
console.log('Window resize ') |
||||
|
callback() |
||||
|
}) |
||||
|
if(orientation) { |
||||
|
window.addEventListener("orientationchange", () => { |
||||
|
const WCO = ($(window).width() > $(window).height()) ? "landscape" : "portrait" |
||||
|
console.log('Change orientation: ' + WCO) |
||||
|
callback() |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
@ -0,0 +1 @@ |
|||||
|
@import url('https://fonts.googleapis.com/css?family=DM+Serif+Display&family=Open+Sans:300,400,500,700&display=swap'); |
@ -0,0 +1,232 @@ |
|||||
|
|
||||
|
input, |
||||
|
button { |
||||
|
border: 1px solid $black; |
||||
|
background: $white; |
||||
|
border-radius: 0; |
||||
|
height: 28px; |
||||
|
} |
||||
|
|
||||
|
button { |
||||
|
border: none; |
||||
|
cursor: pointer; |
||||
|
outline: 0 !important; |
||||
|
|
||||
|
&:active, |
||||
|
&:focus, |
||||
|
&:visited, |
||||
|
&:hover { |
||||
|
outline: 0 !important; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
&:-moz-focusring { |
||||
|
//color: transparent; |
||||
|
text-shadow: 0 0 0 $black; |
||||
|
} |
||||
|
|
||||
|
::-moz-focus-inner {border:0;} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
input, |
||||
|
select, |
||||
|
textarea { |
||||
|
font-size: $font-12; |
||||
|
border-radius: 0; |
||||
|
background: $white; |
||||
|
width: 100%; |
||||
|
outline: none !important; |
||||
|
|
||||
|
&:active, |
||||
|
&:focus{ |
||||
|
outline: none !important; |
||||
|
} |
||||
|
|
||||
|
&:-moz-focusring { |
||||
|
//color: transparent; |
||||
|
text-shadow: 0 0 0 $black; |
||||
|
} |
||||
|
|
||||
|
&:-webkit-autofill { |
||||
|
-webkit-text-fill-color: $black; |
||||
|
box-shadow: 0 0 0px 1000px $white inset !important; |
||||
|
&:focus, |
||||
|
&:hover { |
||||
|
-webkit-text-fill-color: $black; |
||||
|
box-shadow: 0 0 0px 1000px $white inset !important; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
select, |
||||
|
input[type=text], |
||||
|
input[type=password], |
||||
|
input[type=email], |
||||
|
input[type=tel], |
||||
|
input[type=date] { |
||||
|
color: $dark-gray; |
||||
|
background: $white; |
||||
|
border-radius: 0; |
||||
|
height: auto; |
||||
|
display: block; |
||||
|
padding: 10px 10px; |
||||
|
border: 2px solid $white; |
||||
|
@include font-style( $font-sans, 'regular', $font-18); |
||||
|
box-shadow: unset; |
||||
|
text-transform: initial !important; |
||||
|
|
||||
|
& + .label-text, |
||||
|
& + label { |
||||
|
color: $gray; |
||||
|
top: -1*$font-10; |
||||
|
position: absolute; |
||||
|
display: block; |
||||
|
@include font-style($font-sans, 'regular', $font-10); |
||||
|
text-transform: uppercase; |
||||
|
} |
||||
|
|
||||
|
&:required { |
||||
|
& + .label-text, |
||||
|
& + label { |
||||
|
&::after { |
||||
|
content: ' *'; |
||||
|
} |
||||
|
|
||||
|
& ~ .error-message { |
||||
|
display: none; |
||||
|
color: $red; |
||||
|
@include font-style($font-sans, 'regular', $font-10); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&.has-error { |
||||
|
border-bottom: 1px solid $red; |
||||
|
& + .label-text, |
||||
|
& + label { |
||||
|
color: $red; |
||||
|
text-transform: uppercase; |
||||
|
& ~ .error-message { |
||||
|
display: block; |
||||
|
color: $red; |
||||
|
text-transform: uppercase; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&.transparent { |
||||
|
background: transparent; |
||||
|
} |
||||
|
|
||||
|
&.input-gray { |
||||
|
border: 2px solid $light-gray; |
||||
|
background: $light-gray; |
||||
|
} |
||||
|
|
||||
|
&:disabled { |
||||
|
border-bottom: 2px solid $gray; |
||||
|
& + .label-text, |
||||
|
& + label { |
||||
|
color: $gray; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
select { |
||||
|
appearance: none; |
||||
|
background-image: url(/images/arrow-down.svg); |
||||
|
background-size: auto 40%; |
||||
|
background-repeat: no-repeat; |
||||
|
background-position: right 3px center; |
||||
|
border-bottom: 1px solid $gray; |
||||
|
|
||||
|
&:disabled { |
||||
|
background-image: url(/images/arrow-down.svg); |
||||
|
} |
||||
|
|
||||
|
&:focus { |
||||
|
//background-image: url(/images/arrow-up.svg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.button { |
||||
|
color: $white; |
||||
|
background: transparent; |
||||
|
border-radius: 0; |
||||
|
height: auto; |
||||
|
display: block; |
||||
|
padding: 7px 15px; |
||||
|
border: 2px solid $white; |
||||
|
text-align: center; |
||||
|
@include font-style( $font-sans, 'regular', $font-14); |
||||
|
|
||||
|
&.button-big { |
||||
|
padding: 10px 20px; |
||||
|
font-size: $font-18; |
||||
|
} |
||||
|
|
||||
|
&.button-small { |
||||
|
height: 18px; |
||||
|
line-height: $font-6; |
||||
|
padding: 5px; |
||||
|
} |
||||
|
|
||||
|
&.button-black { |
||||
|
background: $dark-gray; |
||||
|
color: $white; |
||||
|
border: 2px solid $dark-gray; |
||||
|
} |
||||
|
|
||||
|
&:disabled { |
||||
|
opacity: 0.5; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.checkbox { |
||||
|
display: inline-block; |
||||
|
position: relative; |
||||
|
padding-left: 25px; |
||||
|
margin-bottom: 12px; |
||||
|
cursor: pointer; |
||||
|
user-select: none; |
||||
|
width: 100%; |
||||
|
float: left; |
||||
|
line-height: 12px; |
||||
|
|
||||
|
.checkmark { |
||||
|
position: absolute; |
||||
|
top: 0; |
||||
|
left: 0; |
||||
|
height: 15px; |
||||
|
width: 15px; |
||||
|
background: none; |
||||
|
border: 1px solid $black; |
||||
|
&:disabled { |
||||
|
border-bottom: 1px solid $gray; |
||||
|
} |
||||
|
|
||||
|
&:after { |
||||
|
content: ''; |
||||
|
position: absolute; |
||||
|
display: none; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
input { |
||||
|
position: absolute; |
||||
|
opacity: 0; |
||||
|
cursor: pointer; |
||||
|
height: 0; |
||||
|
width: 0; |
||||
|
&:checked ~ .checkmark { |
||||
|
background: $black; |
||||
|
&:after { |
||||
|
display: block; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,146 @@ |
|||||
|
|
||||
|
body { |
||||
|
font-family: $font-sans; |
||||
|
font-weight: 400; |
||||
|
letter-spacing: 1px; |
||||
|
margin: 0; |
||||
|
color: $dark-gray; |
||||
|
overflow-x: hidden; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
ul { |
||||
|
list-style: none; |
||||
|
padding: 0; |
||||
|
margin: 0; |
||||
|
} |
||||
|
|
||||
|
a, |
||||
|
input, |
||||
|
select, |
||||
|
option, |
||||
|
button { |
||||
|
text-decoration: none; |
||||
|
outline: none; |
||||
|
&:active, |
||||
|
&:visited, |
||||
|
&:hover, |
||||
|
&:focus{ |
||||
|
outline: none; |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
|
||||
|
&::-moz-focus-inner { |
||||
|
border: 0 !important; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
.font-serif { |
||||
|
font-family: $font-serif; |
||||
|
} |
||||
|
|
||||
|
.font-sans { |
||||
|
font-family: $font-sans; |
||||
|
} |
||||
|
|
||||
|
.text-right { |
||||
|
text-align: right; |
||||
|
} |
||||
|
|
||||
|
.text-left { |
||||
|
text-align: left; |
||||
|
} |
||||
|
|
||||
|
.text-center { |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
@each $bp in $grid-breakpoints { |
||||
|
$key: nth($bp, 1); |
||||
|
$value: nth($bp, 2); |
||||
|
|
||||
|
@media (min-width: $value) { |
||||
|
.text-#{$key}-center{ |
||||
|
text-align: center; |
||||
|
} |
||||
|
.text-#{$key}-left { |
||||
|
text-align: left; |
||||
|
} |
||||
|
.text-#{$key}-right { |
||||
|
text-align: right; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.text-white { |
||||
|
color: $white; |
||||
|
} |
||||
|
|
||||
|
.text-black { |
||||
|
color: $black; |
||||
|
} |
||||
|
|
||||
|
.text-gray { |
||||
|
color: $gray; |
||||
|
} |
||||
|
|
||||
|
.text-bold { |
||||
|
font-weight: bold !important; |
||||
|
} |
||||
|
|
||||
|
.text-uppercase { |
||||
|
text-transform: uppercase; |
||||
|
} |
||||
|
|
||||
|
.w-100 { |
||||
|
width: 100% !important; |
||||
|
} |
||||
|
|
||||
|
.h-100 { |
||||
|
height: 100% !important; |
||||
|
} |
||||
|
|
||||
|
.middle { |
||||
|
@include middle(); |
||||
|
} |
||||
|
|
||||
|
.full-middle { |
||||
|
@include full-middle(); |
||||
|
} |
||||
|
|
||||
|
// Font size |
||||
|
@each $size in 10, 12, 13, 14, 15, 16, 18, 20, 22, 24, 25, 26, 28, 30, 32, 34, 36, 38, 40, 42, 46, 48, 50, 52, 54, 60, 72 { |
||||
|
.font-#{$size} {font-size: #{$size/16}rem !important;} |
||||
|
} |
||||
|
|
||||
|
.main-content { |
||||
|
|
||||
|
min-height: calc(100vh - #{$footer-height}); |
||||
|
padding: $header-height-mobile 10px 0 10px; |
||||
|
|
||||
|
@media (min-width: map-get($grid-breakpoints, 'md')) { |
||||
|
padding: $header-height 40px 0 40px; |
||||
|
} |
||||
|
|
||||
|
&.container-fluid { |
||||
|
&.full-width { |
||||
|
padding-left: 0; |
||||
|
padding-right: 0; |
||||
|
overflow-x: hidden; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
section { |
||||
|
margin: 50px auto; |
||||
|
&.container-full { |
||||
|
padding: 0; |
||||
|
max-width: initial; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.debug-border { |
||||
|
border: 1px solid red; |
||||
|
} |
@ -0,0 +1,42 @@ |
|||||
|
@font-face { |
||||
|
font-family: 'icomoon'; |
||||
|
src: url('../fonts/icomoon.eot'); |
||||
|
src: url('../fonts/icomoon.eot#iefix') format('embedded-opentype'), |
||||
|
url('../fonts/icomoon.ttf') format('truetype'), |
||||
|
url('../fonts/icomoon.woff') format('woff'), |
||||
|
url('../fonts/icomoon.svg#icomoon') format('svg'); |
||||
|
font-weight: normal; |
||||
|
font-style: normal; |
||||
|
} |
||||
|
|
||||
|
[class^="icon-"], [class*=" icon-"] { |
||||
|
/* use !important to prevent issues with browser extensions that change fonts */ |
||||
|
font-family: 'icomoon' !important; |
||||
|
speak: none; |
||||
|
font-style: normal; |
||||
|
font-weight: normal; |
||||
|
font-variant: normal; |
||||
|
text-transform: none; |
||||
|
line-height: 1; |
||||
|
|
||||
|
/* Better Font Rendering =========== */ |
||||
|
-webkit-font-smoothing: antialiased; |
||||
|
-moz-osx-font-smoothing: grayscale; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.icon-arrow-down:before { |
||||
|
content: "\e900"; |
||||
|
} |
||||
|
.icon-arrow-right:before { |
||||
|
content: "\e901"; |
||||
|
} |
||||
|
.icon-cart:before { |
||||
|
content: "\e902"; |
||||
|
} |
||||
|
.icon-drop:before { |
||||
|
content: "\e903"; |
||||
|
} |
||||
|
.icon-user:before { |
||||
|
content: "\e904"; |
||||
|
} |
@ -0,0 +1,25 @@ |
|||||
|
@import "../scss/variables.scss"; |
||||
|
@import "../scss/mixins.scss"; |
||||
|
|
||||
|
/* Libraries */ |
||||
|
@import "./node_modules/bootstrap/scss/bootstrap-grid"; |
||||
|
@import "./node_modules/hamburgers/_sass/hamburgers/hamburgers"; |
||||
|
|
||||
|
/* Global setup */ |
||||
|
@import "../scss/fonts.scss"; |
||||
|
@import "../scss/icons.scss"; |
||||
|
@import "../scss/global.scss"; |
||||
|
@import "../scss/forms.scss"; |
||||
|
|
||||
|
@import "./components/header/header.scss"; |
||||
|
/* |
||||
|
@import "./components/footer/footer.scss"; |
||||
|
@import "./components/home/home.scss"; |
||||
|
@import "./components/plp/plp.scss"; |
||||
|
@import "./components/productBox/productBox.scss"; |
||||
|
@import "./components/pdp/pdp.scss"; |
||||
|
@import "./components/article/article.scss"; |
||||
|
@import "./components/articles/articles.scss"; |
||||
|
@import "./components/articleBox/articleBox.scss"; |
||||
|
*/ |
||||
|
@import "./components/breadcrumb/breadcrumb.scss"; |
@ -0,0 +1,69 @@ |
|||||
|
@import "../../src/scss/variables.scss"; |
||||
|
|
||||
|
@mixin font-style ( $font: $font-serif, $style: 'regular', $size: $font-12 , $ls: normal ) { |
||||
|
font-family: $font; |
||||
|
font-size: $size; |
||||
|
letter-spacing: $ls; |
||||
|
|
||||
|
@if $style == 'regular' { |
||||
|
font-weight: 400; |
||||
|
} @else if $style == 'light' { |
||||
|
font-weight: 200; |
||||
|
} @else if $style == 'medium' { |
||||
|
font-weight: 500; |
||||
|
} @else if $style == 'semibold' { |
||||
|
font-weight: 600; |
||||
|
} @else if $style == 'bold' { |
||||
|
font-weight: 700; |
||||
|
} @else if $style == 'regular-italic' { |
||||
|
font-weight: 400; |
||||
|
font-style: italic; |
||||
|
} @else if $style == 'light-italic' { |
||||
|
font-weight: 200; |
||||
|
font-style: italic; |
||||
|
} @else if $style == 'semibold-italic' { |
||||
|
font-weight: 600; |
||||
|
font-style: italic; |
||||
|
} @else if $style == 'bold-italic' { |
||||
|
font-weight: 700; |
||||
|
font-style: italic; |
||||
|
} @else { |
||||
|
font-weight: $style; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@mixin middle() { |
||||
|
position: absolute; |
||||
|
top: 50%; |
||||
|
transform: translateY(-50%); |
||||
|
} |
||||
|
|
||||
|
@mixin full-middle() { |
||||
|
position: absolute; |
||||
|
left: 50%; |
||||
|
top: 50%; |
||||
|
transform: translate(-50%, -50%); |
||||
|
} |
||||
|
|
||||
|
@mixin middle-right() { |
||||
|
position: absolute; |
||||
|
right: 0; |
||||
|
top: 50%; |
||||
|
transform: translateY(-50%); |
||||
|
} |
||||
|
|
||||
|
@mixin middle-left() { |
||||
|
position: absolute; |
||||
|
left: 0; |
||||
|
top: 50%; |
||||
|
transform: translateY(-50%); |
||||
|
} |
||||
|
|
||||
|
@mixin reset() { |
||||
|
margin: 20px auto; |
||||
|
width: 100%; |
||||
|
max-width: $max-width; |
||||
|
padding: 60px $grid-gutter-width; |
||||
|
font-size: 16px; |
||||
|
letter-spacing: .08em; |
||||
|
} |
@ -0,0 +1,100 @@ |
|||||
|
// Bootstrap Settings |
||||
|
|
||||
|
$spacer: 20px; |
||||
|
$spacers: ( |
||||
|
0: 0, |
||||
|
1: ($spacer * .25), // 5px |
||||
|
2: ($spacer * .5), // 10px |
||||
|
3: $spacer, // 20px |
||||
|
4: ($spacer * 1.5), // 30px |
||||
|
5: ($spacer * 3), // 60px |
||||
|
6: ($spacer * 6), // 120px |
||||
|
); |
||||
|
|
||||
|
$grid-columns: 12; |
||||
|
$grid-gutter-width: 20px; |
||||
|
$grid-gutter-width-mobile: 5px; |
||||
|
|
||||
|
$grid-breakpoints: ( |
||||
|
xs: 0, // Mobile Portrait |
||||
|
sm: 768px, // Tablet Portrait |
||||
|
md: 1024px, // Tablet landscape/Small desktop |
||||
|
lg: 1280px, // Desktop |
||||
|
xl: 1600px, // Large desktop |
||||
|
); |
||||
|
|
||||
|
$container-max-widths: ( |
||||
|
sm: 708px, |
||||
|
md: 984px, |
||||
|
lg: 1200px, |
||||
|
xl: 1560px |
||||
|
); |
||||
|
|
||||
|
$font-serif: 'DM Serif Display'; |
||||
|
$font-sans: 'Open Sans'; |
||||
|
$icon: 'icomoon'; |
||||
|
|
||||
|
$black: #000; |
||||
|
$white: #fff; |
||||
|
$gray: #686868; |
||||
|
$light-gray: #f0efec; |
||||
|
$dark-gray: #393939; |
||||
|
|
||||
|
$olive: #86876f; |
||||
|
$olive-dark: #383920; |
||||
|
$orange: #ddb279; |
||||
|
$brown: #92704F; |
||||
|
|
||||
|
|
||||
|
$white-alpha: rgba(255, 255, 255, 0.5); |
||||
|
$black-alpha: rgba(0, 0, 0, 0.5); |
||||
|
|
||||
|
//Hamburgers settings |
||||
|
$hamburger-padding-x : 0; |
||||
|
$hamburger-padding-y : 6px; |
||||
|
$hamburger-layer-width : 30px; |
||||
|
$hamburger-layer-height : 3px; |
||||
|
$hamburger-layer-spacing : 8px; |
||||
|
$hamburger-layer-color : $olive-dark; |
||||
|
$hamburger-layer-border-radius : 0; |
||||
|
$hamburger-hover-opacity : 1; |
||||
|
$hamburger-active-layer-color : $olive-dark; |
||||
|
$hamburger-active-hover-opacity: $olive-dark; |
||||
|
|
||||
|
|
||||
|
$header-height: 200px; |
||||
|
$header-height-mobile: 110px; |
||||
|
$footer-height: 40px; |
||||
|
|
||||
|
/* Font-size variables */ |
||||
|
$font-6: 0.375rem; /* 6px */ |
||||
|
$font-8: 0.5rem; /* 8px */ |
||||
|
$font-10: 0.625rem; /* 10px */ |
||||
|
$font-11: 0.687rem; /* 11px */ |
||||
|
$font-12: 0.75rem; /* 12px */ |
||||
|
$font-13: 0.812rem; /* 13px */ |
||||
|
$font-14: 0.875rem; /* 14px */ |
||||
|
$font-15: 0.937rem; /* 15px */ |
||||
|
$font-16: 1rem; /* 16px */ |
||||
|
$font-18: 1.125rem; /* 18px */ |
||||
|
$font-20: 1.25rem; /* 20px */ |
||||
|
$font-22: 1.375rem; /* 22px */ |
||||
|
$font-24: 1.5rem; /* 24px */ |
||||
|
$font-25: 1.56rem; /* 24px */ |
||||
|
$font-26: 1.625rem; /* 26px */ |
||||
|
$font-28: 1.75rem; /* 28px */ |
||||
|
$font-30: 1.875rem; /* 30px */ |
||||
|
$font-32: 2rem; /* 32px */ |
||||
|
$font-34: 2.125rem; /* 34px */ |
||||
|
$font-36: 2.25rem; /* 36px */ |
||||
|
$font-38: 2.375rem; /* 38px */ |
||||
|
$font-40: 2.5rem; /* 40px */ |
||||
|
$font-42: 2.625rem; /* 42px */ |
||||
|
$font-44: 2.75rem; /* 44px */ |
||||
|
$font-46: 2.875rem; /* 46px */ |
||||
|
$font-48: 3rem; /* 48px */ |
||||
|
$font-50: 3.125rem; /* 50px */ |
||||
|
$font-52: 3.25rem; /* 52px */ |
||||
|
$font-54: 3.375rem; /* 54px */ |
||||
|
$font-60: 3.75rem; /* 60px */ |
||||
|
$font-72: 4.5rem; /* 72px */ |
@ -0,0 +1,153 @@ |
|||||
|
|
||||
|
const webpack = require('webpack') |
||||
|
const path = require('path') |
||||
|
const fs = require('fs') |
||||
|
|
||||
|
const WebpackNotifierPlugin = require('webpack-notifier') |
||||
|
const HtmlWebpackPlugin = require('html-webpack-plugin') |
||||
|
const CopyWebpackPlugin = require('copy-webpack-plugin') |
||||
|
const Handlebars = require('handlebars') |
||||
|
|
||||
|
const basePath = './' |
||||
|
const pagesPath = path.join(__dirname, './pages') |
||||
|
const distPath = path.join(__dirname, './public') |
||||
|
const componentPath = path.join(__dirname, './components') |
||||
|
const imagesPath = path.join(__dirname, './images') |
||||
|
const assetsPath = path.join(__dirname, './assets') |
||||
|
const docsPath = path.join(__dirname, './docs') |
||||
|
const srcPath = './src' |
||||
|
|
||||
|
let components = [] |
||||
|
let entries = [] |
||||
|
let plugins = [] |
||||
|
|
||||
|
module.exports = (env) => { |
||||
|
|
||||
|
const isProd = env && env.prod || false |
||||
|
|
||||
|
entries.push(srcPath + '/js/index.js') |
||||
|
entries.push(srcPath + '/scss/main.scss') |
||||
|
|
||||
|
fs.readdirSync(componentPath).forEach( (comp) => { |
||||
|
entries.push(componentPath + '/' + comp + '/' + comp + '.js') |
||||
|
}) |
||||
|
|
||||
|
plugins = [ |
||||
|
new HtmlWebpackPlugin(), |
||||
|
new WebpackNotifierPlugin({ |
||||
|
title: 'IoLovOlio', |
||||
|
contentImage: path.join(__dirname, basePath + '/images/logoWP.png'), |
||||
|
alwaysNotify: true |
||||
|
}), |
||||
|
new webpack.ProvidePlugin({ |
||||
|
$: 'jquery', |
||||
|
jQuery: 'jquery' |
||||
|
}), |
||||
|
new CopyWebpackPlugin({ |
||||
|
patterns: [ |
||||
|
{ |
||||
|
context: componentPath, |
||||
|
from: '**/*.html', |
||||
|
to: distPath + '/components/[path]/[name].php', |
||||
|
}, |
||||
|
{ |
||||
|
context: imagesPath, |
||||
|
from: '*.*', |
||||
|
to: distPath + '/images', |
||||
|
} |
||||
|
] |
||||
|
}) |
||||
|
] |
||||
|
|
||||
|
fs.readdirSync(pagesPath).forEach( (page) => { |
||||
|
if(page == '.htaccess') { |
||||
|
plugins.push( |
||||
|
new CopyWebpackPlugin({ |
||||
|
patterns: [ |
||||
|
{ |
||||
|
context: pagesPath, |
||||
|
from: '.htaccess', |
||||
|
to: distPath |
||||
|
} |
||||
|
] |
||||
|
}) |
||||
|
) |
||||
|
} else { |
||||
|
plugins.push( |
||||
|
new HtmlWebpackPlugin({ |
||||
|
template: path.resolve(pagesPath, page), |
||||
|
filename: path.resolve(distPath, page.substr(0, page.lastIndexOf(".")) + ".php"), |
||||
|
inject: page == 'index.ejs' |
||||
|
}) |
||||
|
) |
||||
|
} |
||||
|
}) |
||||
|
|
||||
|
|
||||
|
|
||||
|
return { |
||||
|
devtool: isProd ? '' : 'eval', |
||||
|
entry: entries, |
||||
|
output: { |
||||
|
path: path.join(distPath, '/assets/js'), |
||||
|
publicPath: './assets/js', |
||||
|
filename: 'bundle.js' |
||||
|
}, |
||||
|
module: { |
||||
|
rules: [ |
||||
|
// JS
|
||||
|
{ |
||||
|
test: /\.js$/, |
||||
|
exclude: /(node_modules|bower_components|vendor)/, |
||||
|
use: { |
||||
|
loader: 'babel-loader', |
||||
|
options: { |
||||
|
minified: false, |
||||
|
babelrc: true |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
// SCSS
|
||||
|
{ |
||||
|
test: /\.scss$/, |
||||
|
use: [ |
||||
|
{loader: 'file-loader', |
||||
|
options: { name: '../../assets/css/styles.css'} |
||||
|
}, |
||||
|
{loader: 'extract-loader'}, |
||||
|
{loader: 'css-loader'}, |
||||
|
{loader: 'postcss-loader'}, |
||||
|
{loader: 'sass-loader'} |
||||
|
] |
||||
|
}, |
||||
|
|
||||
|
// FONTS
|
||||
|
{ |
||||
|
test: /\.(woff|woff2|eot|ttf|svg)$/, |
||||
|
use: ['url-loader?limit=100000'] |
||||
|
}, |
||||
|
|
||||
|
// HTML
|
||||
|
{ |
||||
|
test: /\.html$/i, |
||||
|
loader: 'html-loader', |
||||
|
options: { |
||||
|
attributes: { |
||||
|
list: [ |
||||
|
{ tag: 'img', attribute: 'data-src', type: 'src'}, |
||||
|
{ tag: 'img', attribute: 'data-srcset', type: 'srcset'} |
||||
|
], |
||||
|
root: '.' |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
] |
||||
|
}, |
||||
|
plugins: plugins, |
||||
|
devtool: false, |
||||
|
performance: { |
||||
|
maxEntrypointSize: 512000, |
||||
|
maxAssetSize: 512000 |
||||
|
} |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue