@ -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 | @import | ||||
'fonts', | |||||
'media-queries'; | |||||
'mixins/fonts', | |||||
'mixins/media-queries'; | |||||
/** | /** | ||||
* clearfix to end floating | * 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 | @import | ||||
'checkbox', | |||||
'label', | |||||
'panel', | |||||
'text', | |||||
'radio', | |||||
'select'; | |||||
'field/checkbox', | |||||
'field/label', | |||||
'field/panel', | |||||
'field/text', | |||||
'field/radio', | |||||
'field/select'; | |||||
/** | /** | ||||
* component: field | * 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 | * @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__font-size: $crispy__font-size !default; | ||||
$crispy__field__input__padding: toEm(6px 8px) !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 | @import | ||||
'functions/functions', | |||||
'mixins/mixins', | |||||
'functions', | |||||
'mixins', | |||||
'config', | '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(); | |||||
} |