diff --git a/docs/progress.stories.js b/docs/progress.stories.js new file mode 100644 index 0000000..2601891 --- /dev/null +++ b/docs/progress.stories.js @@ -0,0 +1,26 @@ +import { storiesOf } from '@storybook/html'; // eslint-disable-line import/no-extraneous-dependencies +import { // eslint-disable-line import/no-extraneous-dependencies + withKnobs, number, radios, +} from '@storybook/addon-knobs'; + +const stories = storiesOf('Progress', module); +stories.addDecorator(withKnobs); + +// prettier-ignore +stories.add('progress', () => { + const percentage = number('percentage', 30, { + range: true, + min: 0, + max: 100, + step: 1, + }); + const extraClass = radios('class', { + default: '', + 'is-primary': 'is-primary', + 'is-success': 'is-success', + 'is-warning': 'is-warning', + 'is-error': 'is-error', + 'is-pattern': 'is-pattern', + }, ''); + return ``; +}); diff --git a/index.html b/index.html index ae3e237..1adbbd0 100644 --- a/index.html +++ b/index.html @@ -178,6 +178,16 @@ +
+

Progress

+ + + + + + +
+

Icons

diff --git a/scss/elements/_index.scss b/scss/elements/_index.scss index a7995c9..adeb4b4 100644 --- a/scss/elements/_index.scss +++ b/scss/elements/_index.scss @@ -6,3 +6,4 @@ @import "checkboxes.scss"; @import "balloons.scss"; @import "tables.scss"; +@import "progress.scss"; diff --git a/scss/elements/progress.scss b/scss/elements/progress.scss new file mode 100644 index 0000000..007a87f --- /dev/null +++ b/scss/elements/progress.scss @@ -0,0 +1,108 @@ +.nes-progress { + width: 100%; + height: 48px; + padding: 4px; + margin: 4px; + color: $base-color; + background-color: $background-color; + box-shadow: 4px 0, -4px 0, 0 4px, 0 -4px; + -webkit-appearance: none; + appearance: none; + + @mixin progress-style($color) { + &::-webkit-progress-bar { + background-color: $background-color; + } + &::-webkit-progress-value { + background-color: $color; + } + &::-moz-progress-bar { + background-color: $color; + } + &::-ms-fill { + background-color: $color; + border: none; + } + } + + @include progress-style($base-color); + + &.is-primary { + @include progress-style(map-get($primary-colors, "normal")); + } + + &.is-success { + @include progress-style(map-get($success-colors, "normal")); + } + + &.is-warning { + @include progress-style(map-get($warning-colors, "normal")); + } + + &.is-error { + @include progress-style(map-get($error-colors, "normal")); + } + + &.is-pattern { + &::-webkit-progress-value { + background-color: $base-color; + background-image: linear-gradient( + 45deg, + $background-color 25%, + transparent 25%, + transparent 75%, + $background-color 75%, + $background-color + ), + linear-gradient( + 45deg, + $background-color 25%, + transparent 25%, + transparent 75%, + $background-color 75%, + $background-color + ); + background-position: 0 0, 10px 10px; + background-size: 20px 20px; + } + + &::-moz-progress-bar { + background-color: $base-color; + background-image: -moz-linear-gradient( + 45deg, + $background-color 25%, + transparent 25%, + transparent 75%, + $background-color 75%, + $background-color + ), + -moz-linear-gradient(45deg, $background-color 25%, transparent 25%, transparent 75%, $background-color + 75%, $background-color); + background-position: 0 0, 10px 10px; + background-size: 20px 20px; + } + + &::-ms-fill { + background-color: $base-color; + background-image: linear-gradient( + 45deg, + $background-color 25%, + transparent 25%, + transparent 75%, + $background-color 75%, + $background-color + ), + linear-gradient( + 45deg, + $background-color 25%, + transparent 25%, + transparent 75%, + $background-color 75%, + $background-color + ); + background-position: 0 0, 10px 10px; + background-size: 20px 20px; + border: none; + } + } +}