@ -0,0 +1,3 @@ | |||
@import | |||
'components/button' | |||
'components/nav'; |
@ -0,0 +1,3 @@ | |||
@import | |||
'site/header' | |||
'site/footer'; |
@ -0,0 +1,2 @@ | |||
@import | |||
'templates/home'; |
@ -0,0 +1,3 @@ | |||
{ | |||
"/dist/crispy.min.css": "/dist/crispy.min.css" | |||
} |
@ -1,17 +1,29 @@ | |||
{ | |||
"name": "crispy-boilerplate", | |||
"version": "1.1.0", | |||
"description": "Flat Sass Boilerplate to give you a amount of Basic Settings, Mixins and Functions", | |||
"repository": { | |||
"type": "git", | |||
"url": "git@gitlab.tentakelfabrik.de:tentakelfabrik/crispy-boilerplate.git" | |||
}, | |||
"author": "Björn Hase", | |||
"license": "MIT", | |||
"devDependencies": { | |||
"laravel-mix": "^2.1.14" | |||
}, | |||
"dependencies": { | |||
"normalize-scss": "^7.0.1" | |||
} | |||
"name": "crispy-boilerplate", | |||
"version": "1.2.0", | |||
"description": "Flat Sass Boilerplate to give you a amount of Basic Settings, Mixins and Functions", | |||
"repository": { | |||
"type": "git", | |||
"url": "git@gitlab.tentakelfabrik.de:tentakelfabrik/crispy-boilerplate.git" | |||
}, | |||
"scripts": { | |||
"dev": "npm run development", | |||
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", | |||
"watch": "npm run development -- --watch", | |||
"watch-poll": "npm run watch -- --watch-poll", | |||
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", | |||
"prod": "npm run production", | |||
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" | |||
}, | |||
"author": "Björn Hase", | |||
"license": "MIT", | |||
"devDependencies": { | |||
"cross-env": "^5.2.0", | |||
"laravel-mix": "^2.1.14", | |||
"postcss-css-variables": "^0.11.0" | |||
}, | |||
"dependencies": { | |||
"bootstrap": "^4.2.1", | |||
"normalize-scss": "^7.0.1" | |||
} | |||
} |
@ -0,0 +1,10 @@ | |||
@import | |||
'components/button', | |||
'components/code', | |||
'components/group', | |||
'components/heading', | |||
'components/hero', | |||
'components/modal', | |||
'components/panel', | |||
'components/table', | |||
'components/field'; |
@ -0,0 +1,140 @@ | |||
/** | |||
* normalize | |||
* | |||
* | |||
* @author Björn Hase | |||
* | |||
*/ | |||
@import 'normalize'; | |||
@mixin crispy__core() { | |||
html { | |||
font-size: 100%; | |||
} | |||
body, | |||
html { | |||
margin: 0; | |||
height: 100%; | |||
} | |||
html, | |||
legend { | |||
box-sizing: border-box; | |||
} | |||
*, | |||
*::after, | |||
*::before { | |||
box-sizing: inherit; | |||
} | |||
table { | |||
border-collapse: collapse; | |||
border-spacing: 0; | |||
} | |||
// paragraphs | |||
p { | |||
margin: toEm(0 0 $crispy__spacing 0); | |||
} | |||
// Semantic text elements | |||
a, | |||
ins, | |||
u { | |||
text-decoration-skip: ink edges; | |||
} | |||
a { | |||
color: $crispy__color-primary; | |||
&:hover { | |||
color: $crispy__color-hover; | |||
} | |||
&:focus { | |||
outline: none; | |||
} | |||
} | |||
abbr[title] { | |||
border-bottom: 1px dotted; | |||
cursor: help; | |||
text-decoration: none; | |||
} | |||
mark { | |||
padding: toEm(5px); | |||
} | |||
// blockquote | |||
blockquote { | |||
border-left: 1px solid $crispy__color-secondary; | |||
margin-left: 0; | |||
padding: toEm(10px 20px); | |||
p:last-child { | |||
margin-bottom: 0; | |||
} | |||
} | |||
// lists | |||
dl, | |||
ol, | |||
ul { | |||
padding: 0; | |||
margin: toEm(0 0 $crispy__spacing $crispy__spacing); | |||
} | |||
ol ol, | |||
ul ul { | |||
margin-top: toEm(($crispy__spacing / 2)); | |||
} | |||
ol { | |||
list-style: decimal outside; | |||
} | |||
ul { | |||
list-style: disc outside; | |||
} | |||
dd, | |||
dt { | |||
margin: 0; | |||
} | |||
dt { | |||
font-weight: bold; | |||
} | |||
// media | |||
figure { | |||
margin: toEm(0 0 $crispy__spacing); | |||
} | |||
figcaption { | |||
margin: toEm($crispy__spacing 0 0); | |||
} | |||
// divider | |||
hr { | |||
border: 0; | |||
border-top: 1px solid $crispy__color-secondary; | |||
margin: toEm($crispy__spacing 0); | |||
} | |||
// body | |||
body { | |||
font-family: $crispy__font-family; | |||
font-weight: normal; | |||
line-height: $crispy__golden-ratio; | |||
color: $crispy__color-text; | |||
background-color: $crispy__color-background; | |||
direction: $crispy__direction; | |||
@include crispy__font-size($crispy__font-size); | |||
} | |||
} |
@ -0,0 +1,3 @@ | |||
@import | |||
'functions/units', | |||
'functions/zIndex'; |
@ -0,0 +1,7 @@ | |||
@import | |||
'helpers/float', | |||
'helpers/spacing', | |||
'helpers/media', | |||
'helpers/text', | |||
'helpers/visibility', | |||
'helpers/width'; |
@ -1,6 +1,6 @@ | |||
@import | |||
'fonts', | |||
'media-queries'; | |||
'mixins/fonts', | |||
'mixins/media-queries'; | |||
/** | |||
* clearfix to end floating |
@ -1,139 +0,0 @@ | |||
/** | |||
* normalize | |||
* | |||
* | |||
* @author Björn Hase | |||
* | |||
*/ | |||
@import | |||
'normalize'; | |||
html { | |||
font-size: 100%; | |||
} | |||
body, | |||
html { | |||
margin: 0; | |||
height: 100%; | |||
} | |||
html, | |||
legend { | |||
box-sizing: border-box; | |||
} | |||
*, | |||
*::after, | |||
*::before { | |||
box-sizing: inherit; | |||
} | |||
table { | |||
border-collapse: collapse; | |||
border-spacing: 0; | |||
} | |||
// paragraphs | |||
p { | |||
margin: toEm(0 0 $crispy__margin 0); | |||
} | |||
// Semantic text elements | |||
a, | |||
ins, | |||
u { | |||
text-decoration-skip: ink edges; | |||
} | |||
a { | |||
color: $crispy__color-primary; | |||
&:hover { | |||
color: $crispy__color-hover; | |||
} | |||
&:focus { | |||
outline: none; | |||
} | |||
} | |||
abbr[title] { | |||
border-bottom: 1px dotted; | |||
cursor: help; | |||
text-decoration: none; | |||
} | |||
mark { | |||
padding: toEm(5px); | |||
} | |||
// blockquote | |||
blockquote { | |||
border-left: 1px solid $crispy__color-secondary; | |||
margin-left: 0; | |||
padding: toEm(10px 20px); | |||
p:last-child { | |||
margin-bottom: 0; | |||
} | |||
} | |||
// lists | |||
dl, | |||
ol, | |||
ul { | |||
padding: 0; | |||
margin: toEm(0 0 $crispy__margin $crispy__margin); | |||
} | |||
ol ol, | |||
ul ul { | |||
margin-top: toEm(($crispy__margin / 2)); | |||
} | |||
ol { | |||
list-style: decimal outside; | |||
} | |||
ul { | |||
list-style: disc outside; | |||
} | |||
dd, | |||
dt { | |||
margin: 0; | |||
} | |||
dt { | |||
font-weight: bold; | |||
} | |||
// media | |||
figure { | |||
margin: toEm(0 0 $crispy__margin); | |||
} | |||
figcaption { | |||
margin: toEm($crispy__margin 0 0); | |||
} | |||
// divider | |||
hr { | |||
border: 0; | |||
border-top: 1px solid $crispy__color-secondary; | |||
margin: toEm($crispy__margin 0); | |||
} | |||
// body | |||
body { | |||
font-family: $crispy__font-family; | |||
font-weight: normal; | |||
line-height: $crispy__golden-ratio; | |||
color: $crispy__color-text; | |||
background-color: $crispy__color-background; | |||
direction: $crispy__direction; | |||
@include crispy__font-size($crispy__font-size); | |||
} |
@ -1,22 +1,27 @@ | |||
@import | |||
'checkbox', | |||
'label', | |||
'panel', | |||
'text', | |||
'radio', | |||
'select'; | |||
'field/checkbox', | |||
'field/label', | |||
'field/panel', | |||
'field/text', | |||
'field/radio', | |||
'field/select'; | |||
/** | |||
* component: field | |||
* | |||
* field is a wrapper for form elements | |||
* <div class="field"> | |||
* <label class="field__label"> | |||
* text | |||
* <input type="text" class="field__text" /> | |||
* <label> | |||
* </div> | |||
* | |||
* | |||
* @author Björn Hase | |||
* | |||
*/ | |||
$crispy__field__margin: toEm(0 0 $crispy__margin 0) !default; | |||
$crispy__field__margin: toEm(0 0 $crispy__spacing 0) !default; | |||
$crispy__field__input__font-size: $crispy__font-size !default; | |||
$crispy__field__input__padding: toEm(6px 8px) !default; |
@ -1,62 +0,0 @@ | |||
/** | |||
* component: icon | |||
* | |||
* use svg as icon | |||
* | |||
* <svg class="icon"> | |||
* | |||
* </svg> | |||
* | |||
* | |||
* @author Björn Hase | |||
* | |||
*/ | |||
$crispy__icon__vertical-align: text-bottom !default; | |||
$crispy__icon__sizes: ( | |||
'default': $crispy__font-size, | |||
'small': 12px, | |||
'large': 28px | |||
) !default; | |||
@mixin crispy__icon() { | |||
.icon { | |||
display: inline-block; | |||
position: relative; | |||
vertical-align: $crispy__icon__vertical-align; | |||
@include crispy__icon-sizes($crispy__icon__sizes); | |||
} | |||
} | |||
/** | |||
* adding sizes for icons from map | |||
* | |||
* | |||
* @param {map} $sizes | |||
* | |||
*/ | |||
@mixin crispy__icon-sizes($sizes) { | |||
@each $name, $size in $sizes { | |||
@if ($name == 'default') { | |||
@include crispy__icon-size($size); | |||
} @else { | |||
&--#{$name} { | |||
@include crispy__icon-size($size); | |||
} | |||
} | |||
} | |||
} | |||
/** | |||
* add size for icon as width and height | |||
* | |||
* | |||
* @param {px} $size | |||
* | |||
*/ | |||
@mixin crispy__icon-size($size) { | |||
width: $size; | |||
} |
@ -1,36 +0,0 @@ | |||
@import | |||
'button', | |||
'code', | |||
'group', | |||
'heading', | |||
'hero', | |||
'icon', | |||
'modal', | |||
'panel', | |||
'table', | |||
'field/field'; | |||
/** | |||
* shortcut to adding all components | |||
* | |||
* | |||
*/ | |||
@mixin cripsy__components() | |||
{ | |||
@include crispy__button(); | |||
@include crispy__code(); | |||
@include crispy__group(); | |||
@include crispy__heading(); | |||
@include crispy__hero(); | |||
@include crispy__icon(); | |||
@include crispy__modal(); | |||
@include crispy__panel(); | |||
@include crispy__table(); | |||
@include crispy__field(); | |||
@include crispy__field__text(); | |||
@include crispy__field__checkbox(); | |||
@include crispy__field__radio(); | |||
@include crispy__field__select(); | |||
@include crispy__field__panel(); | |||
@include crispy__field__label(); | |||
} |
@ -1,8 +1,26 @@ | |||
@import | |||
'functions/functions', | |||
'mixins/mixins', | |||
'functions', | |||
'mixins', | |||
'config', | |||
'normalize', | |||
'components/components', | |||
'helpers/helpers'; | |||
'core', | |||
'components', | |||
'helpers'; | |||
// components | |||
@include crispy__core(); | |||
@include crispy__button(); | |||
@include crispy__field(); | |||
@include crispy__group(); | |||
@include crispy__heading(); | |||
@include crispy__hero(); | |||
@include crispy__modal(); | |||
@include crispy__panel(); | |||
@include crispy__table(); | |||
// helpers | |||
@include crispy__float(); | |||
@include crispy__media(); | |||
@include crispy__spacing(); | |||
@include crispy__text(); | |||
@include crispy__visibility(); | |||
@include crispy__width(); |
@ -0,0 +1,2 @@ | |||
@import | |||
'crispy'; |
@ -1,3 +0,0 @@ | |||
@import | |||
'units', | |||
'zIndex'; |
@ -1,61 +0,0 @@ | |||
/** | |||
* helper: margin | |||
* | |||
* | |||
* | |||
* @author Björn Hase | |||
* | |||
*/ | |||
$crispy__margin-top: toEm($crispy__margin) !default; | |||
$crispy__margin-bottom: toEm($crispy__margin) !default; | |||
@mixin crispy__margin() { | |||
.margin-top-0x { | |||
margin-top: 0; | |||
} | |||
.margin-top-1x { | |||
margin-top: $crispy__margin-top; | |||
} | |||
.margin-top-2x { | |||
margin-top: $crispy__margin-top * 2; | |||
} | |||
.margin-top-3x { | |||
margin-top: $crispy__margin-top * 3; | |||
} | |||
.margin-top-4x { | |||
margin-top: $crispy__margin-top * 4; | |||
} | |||
.margin-top-5x { | |||
margin-top: $crispy__margin-top * 5; | |||
} | |||
.margin-bottom-0x { | |||
margin-bottom: 0; | |||
} | |||
.margin-bottom-1x { | |||
margin-bottom: $crispy__margin-bottom; | |||
} | |||
.margin-bottom-2x { | |||
margin-bottom: $crispy__margin-bottom * 2; | |||
} | |||
.margin-bottom-3x { | |||
margin-bottom: $crispy__margin-bottom * 3; | |||
} | |||
.margin-bottom-4x { | |||
margin-bottom: $crispy__margin-bottom * 4; | |||
} | |||
.margin-bottom-5x { | |||
margin-bottom: $crispy__margin-bottom * 5; | |||
} | |||
} |
@ -0,0 +1,43 @@ | |||
/** | |||
* helper: spacing | |||
* | |||
* | |||
* @author Björn Hase | |||
* | |||
*/ | |||
@mixin crispy__spacing() { | |||
@for $i from 0 through $crispy__spacing__steps { | |||
.margin-top-#{($i + 1)}x { | |||
margin-top: ($crispy__spacing * $i); | |||
} | |||
.margin-left-#{($i + 1)}x { | |||
margin-left: ($crispy__spacing * $i); | |||
} | |||
.margin-bottom-#{($i + 1)}x { | |||
margin-bottom: ($crispy__spacing * $i); | |||
} | |||
.margin-right-#{($i + 1)}x { | |||
margin-right: ($crispy__spacing * ($i)); | |||
} | |||
.padding-top-#{($i + 1)}x { | |||
padding-top: ($crispy__spacing * $i); | |||
} | |||
.padding-left-#{($i + 1)}x { | |||
padding-left: ($crispy__spacing * $i); | |||
} | |||
.padding-bottom-#{($i + 1)}x { | |||
padding-bottom: ($crispy__spacing * $i); | |||
} | |||
.padding-right-#{($i + 1)}x { | |||
padding-right: ($crispy__spacing * $i); | |||
} | |||
} | |||
} |
@ -1,20 +0,0 @@ | |||
@import | |||
'float', | |||
'margin', | |||
'media', | |||
'text', | |||
'width'; | |||
/** | |||
* shortcut to include all helpers | |||
* | |||
* | |||
*/ | |||
@mixin crispy__helpers() | |||
{ | |||
@include crispy__float(); | |||
@include crispy__margin(); | |||
@include crispy__media(); | |||
@include crispy__text(); | |||
@include crispy__width(); | |||
} |