Browse Source

init project

feature/header
Carmine De Rosa 5 years ago
parent
commit
b089ded9e6
  1. 17
      .babelrc
  2. 34
      .eslintrc.json
  3. 10
      .gitignore
  4. 3
      components/footer/footer.html
  5. 5
      components/footer/footer.js
  6. 9
      components/footer/footer.scss
  7. 3
      components/header/header.html
  8. 5
      components/header/header.js
  9. 9
      components/header/header.scss
  10. 18
      comps.sh
  11. 17
      deploy.sh
  12. BIN
      images/drop1.png
  13. BIN
      images/drop2.png
  14. BIN
      images/logo.png
  15. 56
      package.json
  16. 26
      pages/index.ejs
  17. 13
      postcss.config.js
  18. BIN
      src/fonts/066ce24dae3730ed6c648b09efaea93a.eot
  19. BIN
      src/fonts/066ce24dae3730ed6c648b09efaea93a.ttf
  20. BIN
      src/fonts/066ce24dae3730ed6c648b09efaea93a.woff2
  21. BIN
      src/fonts/icomoon.eot
  22. 15
      src/fonts/icomoon.svg
  23. BIN
      src/fonts/icomoon.ttf
  24. BIN
      src/fonts/icomoon.woff
  25. 1
      src/fonts/selection.json
  26. 22
      src/js/index.js
  27. 8
      src/scss/fonts.scss
  28. 230
      src/scss/forms.scss
  29. 125
      src/scss/global.scss
  30. 42
      src/scss/icons.scss
  31. 14
      src/scss/main.scss
  32. 69
      src/scss/mixins.scss
  33. 85
      src/scss/variables.scss
  34. 141
      webpack.config.js

17
.babelrc

@ -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"
]
}

34
.eslintrc.json

@ -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"
}
}

10
.gitignore

@ -0,0 +1,10 @@
# Cache, temp and personal files
/.htaccess
*.log
.sass-cache/
node_modules/
public/
package-lock.json

3
components/footer/footer.html

@ -0,0 +1,3 @@
<div class="component-footer">
footer
</div>

5
components/footer/footer.js

@ -0,0 +1,5 @@
$(document).ready( () => {
console.log('Load component - footer')
})

9
components/footer/footer.scss

@ -0,0 +1,9 @@
@import "../../src/scss/variables.scss";
@import "../../src/scss/mixins.scss";
.component-footer {
height: $footer-height;
width: 100%;
background: $gray;
color: $white;
}

3
components/header/header.html

@ -0,0 +1,3 @@
<header class="component-header">
</header>

5
components/header/header.js

@ -0,0 +1,5 @@
$(document).ready( () => {
console.log('Load component - header')
})

9
components/header/header.scss

@ -0,0 +1,9 @@
@import "../../src/scss/variables.scss";
@import "../../src/scss/mixins.scss";
.component-header {
height: $header-height;
width: 100%;
background: $olive;
color: $white;
}

18
comps.sh

@ -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

17
deploy.sh

@ -0,0 +1,17 @@
#!/bin/bash
BASE="http://www.anesacademy.com/"
BASE_PARSED=$(echo $BASE | sed 's/\//\\\//g')
cd public
for f in *.html
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/

BIN
images/drop1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

BIN
images/drop2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
images/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 KiB

56
package.json

@ -0,0 +1,56 @@
{
"name": "anes",
"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.9.0",
"@babel/preset-env": "^7.9.0",
"autoprefixer": "^9.7.6",
"babel-eslint": "^10.1.0",
"babel-loader": "^8.1.0",
"babel-plugin-transform-class-properties": "^6.24.1",
"babel-plugin-transform-object-assign": "^6.22.0",
"babel-preset-env": "^1.7.0",
"base-href-webpack-plugin": "^2.0.0",
"bootstrap": "^4.3.1",
"copy-webpack-plugin": "^5.0.3",
"css-loader": "^3.5.1",
"es6-promise-promise": "^1.0.0",
"eslint": "^6.0.1",
"eslint-config-google": "^0.13.0",
"eslint-config-prettier": "^6.10.1",
"eslint-plugin-prettier": "^3.1.0",
"extract-loader": "^3.1.0",
"file-loader": "^4.0.0",
"glob": "^7.1.4",
"html-loader": "^0.5.5",
"html-webpack-plugin": "^3.2.0",
"http-server": "^0.12.1",
"jquery": "^3.4.1",
"mini-css-extract-plugin": "^0.7.0",
"minimist": "^1.2.5",
"node-sass": "^4.12.0",
"nodemon": "^1.19.1",
"popper.js": "^1.15.0",
"postcss-loader": "^3.0.0",
"prettier": "^1.18.2",
"sass-loader": "^7.1.0",
"url-loader": "^2.0.1",
"webpack": "^4.42.1",
"webpack-cli": "^3.3.9",
"webpack-notifier": "^1.8.0"
}
}

26
pages/index.ejs

@ -0,0 +1,26 @@
<!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')}
<main class="main-content">
<section class="container">
section
</section>
</main>
${require('../components/footer/footer.html')}
</body>
</html>

13
postcss.config.js

@ -0,0 +1,13 @@
const autoprefixer = require('autoprefixer')
module.exports = {
plugins: [
autoprefixer({
overrideBrowserslist: [
'last 2 versions',
'> 1%',
'maintained node versions',
'not dead', 'ie >= 10']
})
]
}

BIN
src/fonts/066ce24dae3730ed6c648b09efaea93a.eot

Binary file not shown.

BIN
src/fonts/066ce24dae3730ed6c648b09efaea93a.ttf

Binary file not shown.

BIN
src/fonts/066ce24dae3730ed6c648b09efaea93a.woff2

Binary file not shown.

BIN
src/fonts/icomoon.eot

Binary file not shown.

15
src/fonts/icomoon.svg

@ -0,0 +1,15 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by IcoMoon</metadata>
<defs>
<font id="icomoon" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
<glyph unicode="&#xe900;" glyph-name="arrow-down" d="M90.467 728.644c-10.031-0.021-19.188-3.748-26.178-9.883l0.045 0.039c-8.36-7.337-13.608-18.044-13.608-29.977 0-10.064 3.734-19.257 9.891-26.268l-0.039 0.045 421.444-481.644c7.338-8.359 18.045-13.607 29.978-13.607s22.64 5.248 29.939 13.562l0.039 0.045 421.444 481.644c6.119 6.966 9.853 16.158 9.853 26.223 0 11.933-5.249 22.64-13.563 29.938l-0.045 0.039c-6.964 6.112-16.152 9.842-26.21 9.842-11.928 0-22.631-5.244-29.929-13.552l-0.039-0.045-391.489-447.378-391.489 447.378c-7.337 8.355-18.041 13.6-29.97 13.6-0.026 0-0.052 0-0.078 0h0.004z" />
<glyph unicode="&#xe901;" glyph-name="arrow-right" d="M231.352 26.463c0.021-10.031 3.748-19.188 9.883-26.178l-0.039 0.045c7.337-8.36 18.044-13.608 29.977-13.608 10.064 0 19.257 3.734 26.268 9.891l-0.045-0.039 481.644 421.444c8.359 7.338 13.607 18.045 13.607 29.978s-5.248 22.64-13.562 29.939l-0.045 0.039-481.644 421.444c-6.966 6.119-16.158 9.853-26.223 9.853-11.933 0-22.64-5.249-29.938-13.563l-0.039-0.045c-6.112-6.964-9.842-16.152-9.842-26.21 0-11.928 5.244-22.631 13.552-29.929l0.045-0.039 447.378-391.489-447.378-391.489c-8.355-7.337-13.6-18.041-13.6-29.97 0-0.026 0-0.052 0-0.078v0.004z" />
<glyph unicode="&#xe902;" glyph-name="cart" d="M58.668 888.913c-0.009 0-0.019 0-0.029 0-16.622 0-30.098-13.475-30.098-30.098 0 0 0 0 0 0v0c0-0.009 0-0.019 0-0.029 0-16.622 13.475-30.098 30.098-30.098 0.010 0 0.021 0 0.031 0h110.19c35.747 0 66.548-23.965 75.215-58.52l54.523-215.974c0.203-0.786 0.374-1.356 0.561-1.917l-0.061 0.212 64.487-257.976c6.74-26.727 30.784-45.558 58.373-45.558h513.306c33.232 0 60.195 26.963 60.195 60.195v360.467c0 33.233-26.963 60.195-60.195 60.195h-603.423c-5.105 0-10.117-0.721-14.961-1.969l-14.373 56.992c-15.317 61.068-70.636 104.078-133.647 104.078zM331.84 669.618h603.423v-106.194c-1.498 0.272-3.225 0.433-4.989 0.441h-201.404c-0.009 0-0.019 0-0.030 0-16.622 0-30.098-13.475-30.098-30.098 0 0 0 0 0 0v0c0 0 0 0 0 0 0-16.622 13.475-30.098 30.098-30.098 0.010 0 0.021 0 0.031 0h201.394c0.009 0 0.020 0 0.031 0 1.754 0 3.473 0.15 5.145 0.438l-0.179-0.025v-194.93h-513.306l-48.644 194.518h177.794c0.009 0 0.019 0 0.029 0 16.622 0 30.098 13.475 30.098 30.098 0 0 0 0 0 0v0c0 0 0 0 0 0 0 16.622-13.475 30.098-30.098 30.098-0.010 0-0.021 0-0.031 0h-192.841zM566.772 436.566c0 0 0 0 0 0-16.622 0-30.098-13.475-30.098-30.098 0-0.010 0-0.021 0-0.031v0.002c0.067-16.572 13.516-29.98 30.097-29.98 0 0 0 0 0 0h133.529c0 0 0 0 0 0 16.581 0 30.031 13.408 30.097 29.974v0.006c0 0.009 0 0.019 0 0.029 0 16.622-13.475 30.098-30.098 30.098 0 0 0 0 0 0v0zM432.391 207.659c-55.338 0-100.316-45-100.316-100.257 0-55.336 44.978-100.316 100.316-100.316 55.257 0 100.257 44.98 100.257 100.316 0 55.257-45 100.257-100.257 100.257zM728.9 207.659c-55.336 0-100.257-45-100.257-100.257 0-55.336 44.921-100.316 100.257-100.316 55.257 0 100.257 44.98 100.257 100.316 0 55.257-45 100.257-100.257 100.257zM432.391 147.464c22.102 0 40.062-17.959 40.062-40.062 0-22.181-17.96-40.12-40.062-40.12-22.182 0-40.12 17.939-40.12 40.12 0 22.103 17.939 40.062 40.12 40.062zM728.9 147.464c22.104 0 40.062-17.959 40.062-40.062 0-22.181-17.958-40.12-40.062-40.12-22.182 0-40.062 17.939-40.062 40.12 0 22.103 17.88 40.062 40.062 40.062z" />
<glyph unicode="&#xe903;" glyph-name="drop" d="M809.466 294.489c0-164.284-133.182-297.466-297.466-297.466s-297.466 133.182-297.466 297.466c0 164.284 297.466 604.488 297.466 604.488s297.466-440.204 297.466-604.488z" />
<glyph unicode="&#xe904;" glyph-name="user" d="M512.003 906.541c-127.764 0-231.657-103.977-231.657-231.74 0-89.876 51.445-167.88 126.412-206.275-85.198-37.947-144.78-123.37-144.78-222.485v-194.439c0-34.308 27.835-62.142 62.142-62.142h375.761c34.308 0 62.142 27.834 62.142 62.142v194.439c0 99.119-59.586 184.546-144.756 222.491 74.988 38.396 126.471 116.395 126.471 206.269 0 127.763-103.97 231.74-231.734 231.74zM512.003 844.399c93.7 0 169.592-75.98 169.592-169.598s-75.892-169.516-169.592-169.516c-93.617 0-169.516 75.898-169.516 169.516s75.899 169.598 169.516 169.598zM505.447 427.368h13.188c100.092 0 181.245-81.156 181.245-181.328v-194.439h-375.761v194.439c0 100.171 81.157 181.328 181.328 181.328z" />
</font></defs></svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

BIN
src/fonts/icomoon.ttf

Binary file not shown.

BIN
src/fonts/icomoon.woff

Binary file not shown.

1
src/fonts/selection.json

File diff suppressed because one or more lines are too long

22
src/js/index.js

@ -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()
})
}
}
}

8
src/scss/fonts.scss

@ -0,0 +1,8 @@
@font-face {font-family: "Acumin Variable Concept";
src: url("/fonts/066ce24dae3730ed6c648b09efaea93a.eot"); /* IE9*/
src: url("/fonts/066ce24dae3730ed6c648b09efaea93a.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */
url("/fonts/066ce24dae3730ed6c648b09efaea93a.woff2") format("woff2"), /* chromefirefox */
url("/fonts/066ce24dae3730ed6c648b09efaea93a.woff") format("woff"), /* chromefirefox */
url("/fonts/066ce24dae3730ed6c648b09efaea93a.ttf") format("truetype"), /* chromefirefoxoperaSafari, Android, iOS 4.2+*/
url("/fonts/066ce24dae3730ed6c648b09efaea93a.svg#Acumin Variable Concept") format("svg"); /* iOS 4.1- */
}

230
src/scss/forms.scss

@ -0,0 +1,230 @@
input,
button {
border: 1px solid $black;
background: $white;
border-radius: 0;
height: 28px;
}
button {
border: none;
cursor: pointer;
}
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] {
border: none;
border-bottom: 1px solid $black;
height: 30px;
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;
}
&:disabled {
border-bottom: 1px solid $gray;
& + .label-text,
& + label {
color: $gray;
}
}
}
fieldset,
.fieldset {
position: relative;
padding-bottom: 35px;
.label-text {
color: $gray;
&.required {
&:after {
content: '*';
}
}
}
&.has-error {
.label-text {
color: $red;
text-transform: uppercase;
font-size: $font-10;
}
.error-message {
color: $red;
display: block !important;
text-transform: uppercase;
font-size: $font-10;
}
input {
border-bottom: 1px solid $red;
}
}
}
select {
appearance: none;
background-image: url(/images/arrow-down.svg);
background-size: auto 40%;
background-repeat: no-repeat;
background-position: right 3px center;
&:disabled {
background-image: url(/images/arrow-down-gray.svg);
}
&:focus {
//background-image: url(/images/arrow-up.svg);
}
}
.button {
border: none;
color: $black;
background: transparent;
border-radius: 0;
height: auto;
display: block;
padding: 10px 20px;
text-align: center;
@include font-style( $font-sans, 'regular', $font-18);
text-transform: uppercase;
&.button-blue {
background: $blue;
color: $white;
}
&.button-small {
height: 18px;
line-height: $font-6;
padding: 5px;
}
&: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;
}
}
}
}

125
src/scss/global.scss

@ -0,0 +1,125 @@
body {
font-family: $font-sans;
font-weight: 400;
margin: 0;
color: $black;
overflow-x: hidden;
}
ul {
list-style: none;
padding: 0;
margin: 0;
}
a,
input,
button {
text-decoration: none;
outline: none;
&:active,
&:visited,
&:hover,
&:focus{
outline: none;
text-decoration: none;
}
}
.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;
}
.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 - #{$header-height} - #{$footer-height} - 50px);
&.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;
}

42
src/scss/icons.scss

@ -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";
}

14
src/scss/main.scss

@ -0,0 +1,14 @@
@import "../scss/variables.scss";
@import "../scss/mixins.scss";
/* Libraries */
@import "./node_modules/bootstrap/scss/bootstrap-grid";
/* 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";

69
src/scss/mixins.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;
}

85
src/scss/variables.scss

@ -0,0 +1,85 @@
// 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: 'Acumin Variable Concept';
$font-sans: 'Acumin Variable Concept';
$icon: 'icomoon';
$black: #000;
$white: #fff;
$gray: #686868;
$light-gray: #f0efec;
$dark-gray: #393939;
$olive: #86876f;
$orange: #ddb279;
$white-alpha: rgba(255, 255, 255, 0.8);
$black-alpha: rgba(0, 0, 0, 0.8);
$header-height: 120px;
$header-height-mobile: 100px;
$footer-height: 30px;
/* 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 */

141
webpack.config.js

@ -0,0 +1,141 @@
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 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([
{
context: componentPath,
from: '**/*.html',
to: distPath + '/components',
},
]),
new CopyWebpackPlugin([
{
context: imagesPath,
from: '*.*',
to: distPath + '/images',
},
]),
new CopyWebpackPlugin([
{
context: docsPath,
from: '*.*',
to: distPath + '/docs',
},
])
]
fs.readdirSync(pagesPath).forEach( (page) => {
plugins.push(
new HtmlWebpackPlugin({
template: path.resolve(pagesPath, page),
filename: path.resolve(distPath, page.substr(0, page.lastIndexOf(".")) + ".html")
})
)
})
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?$/,
use: {
loader: 'html-loader',
options: {
attrs: ['link:href', 'script:src', 'img:src'],
interpolate: true,
},
},
}
]
},
plugins: plugins,
devtool: false,
performance: {
maxEntrypointSize: 512000,
maxAssetSize: 512000
}
}
}
Loading…
Cancel
Save