1
0
mirror of https://github.com/kognise/water.css.git synced 2025-08-15 01:24:46 +02:00

Merge pull request #115 from kognise/add/style-guidelines

Add style guidelines/linter
This commit is contained in:
kylejrp
2019-11-01 17:05:02 -07:00
committed by GitHub
7 changed files with 2130 additions and 119 deletions

3
.stylelintrc Normal file
View File

@@ -0,0 +1,3 @@
{
"extends": "stylelint-config-standard"
}

View File

@@ -15,22 +15,22 @@ const postcssImport = require('postcss-import')
const postcssInlineSvg = require('postcss-inline-svg') const postcssInlineSvg = require('postcss-inline-svg')
const postcssColorModFunction = require('postcss-color-mod-function').bind(null, { const postcssColorModFunction = require('postcss-color-mod-function').bind(null, {
/* Use `.toRGBLegacy()` as other methods can result in lots of decimals */ /* Use `.toRGBLegacy()` as other methods can result in lots of decimals */
stringifier: color => color.toRGBLegacy(), stringifier: color => color.toRGBLegacy()
}) })
const paths = { const paths = {
srcDir: 'src/*', srcDir: 'src/*',
docsDir: '*', docsDir: '*',
styles: { src: 'src/builds/*.css', dest: 'dist' }, styles: { src: 'src/builds/*.css', dest: 'dist' }
} }
// https://stackoverflow.com/a/20732091 // https://stackoverflow.com/a/20732091
function humanFileSize(size) { function humanFileSize (size) {
var i = Math.floor(Math.log(size) / Math.log(1024)) var i = Math.floor(Math.log(size) / Math.log(1024))
return (size / Math.pow(1024, i)).toFixed(2) * 1 + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i] return (size / Math.pow(1024, i)).toFixed(2) * 1 + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i]
} }
function formatByteMessage(source, data) { function formatByteMessage (source, data) {
const prettyStartSize = humanFileSize(data.startSize) const prettyStartSize = humanFileSize(data.startSize)
let message = '' let message = ''
@@ -48,7 +48,7 @@ function formatByteMessage(source, data) {
return chalk`{cyan ${source.padStart(12, ' ')}}: {bold ${data.fileName}} ${message}` return chalk`{cyan ${source.padStart(12, ' ')}}: {bold ${data.fileName}} ${message}`
} }
function style() { function style () {
const isLegacy = path => /legacy/.test(path) const isLegacy = path => /legacy/.test(path)
const excludeModern = filter(file => isLegacy(file.path), { restore: true }) const excludeModern = filter(file => isLegacy(file.path), { restore: true })
@@ -70,7 +70,7 @@ function style() {
.pipe(bytediff.start()) .pipe(bytediff.start())
// autoprefix // autoprefix
.pipe(postcss([autoprefixer({ .pipe(postcss([autoprefixer({
env: "legacy" env: 'legacy'
})])) })]))
// Write the amount gained by autoprefixing // Write the amount gained by autoprefixing
.pipe(bytediff.stop(data => formatByteMessage('autoprefixer', data))) .pipe(bytediff.stop(data => formatByteMessage('autoprefixer', data)))
@@ -82,7 +82,7 @@ function style() {
.pipe(bytediff.start()) .pipe(bytediff.start())
// autoprefix modern builds // autoprefix modern builds
.pipe(postcss([autoprefixer({ .pipe(postcss([autoprefixer({
env: "modern" env: 'modern'
})])) })]))
// Write the amount gained by autoprefixing // Write the amount gained by autoprefixing
.pipe(bytediff.stop(data => formatByteMessage('autoprefixer', data))) .pipe(bytediff.stop(data => formatByteMessage('autoprefixer', data)))
@@ -114,14 +114,14 @@ function style() {
) )
} }
function watch() { function watch () {
style() style()
browserSync.init({ browserSync.init({
server: { server: {
baseDir: './', baseDir: './'
}, },
startPath: 'index.html', startPath: 'index.html'
}) })
gulp.watch(paths.srcDir, style) gulp.watch(paths.srcDir, style)

View File

@@ -6,6 +6,7 @@
"scripts": { "scripts": {
"build": "gulp style", "build": "gulp style",
"dev": "gulp watch", "dev": "gulp watch",
"lint": "standard --fix && stylelint \"src/*.css\" --fix",
"prepublishOnly": "yarn build" "prepublishOnly": "yarn build"
}, },
"repository": { "repository": {
@@ -40,24 +41,29 @@
"postcss-color-mod-function": "^3.0.3", "postcss-color-mod-function": "^3.0.3",
"postcss-css-variables": "^0.12.0", "postcss-css-variables": "^0.12.0",
"postcss-import": "^12.0.1", "postcss-import": "^12.0.1",
"postcss-inline-svg": "^3.1.1" "postcss-inline-svg": "^3.1.1",
"standard": "^14.3.1",
"stylelint": "^11.0.0",
"stylelint-config-standard": "^19.0.0"
}, },
"browserslist": { "browserslist": {
"legacy": ["defaults AND not android 4.4.3"], "legacy": [
"modern": [ "defaults AND not android 4.4.3"
"Edge > 16", ],
"Firefox > 31", "modern": [
"Chrome > 49", "Edge > 16",
"Safari > 9.1", "Firefox > 31",
"Opera > 36", "Chrome > 49",
"ios_saf > 9.3", "Safari > 9.1",
"Android > 76", "Opera > 36",
"OperaMobile > 46", "ios_saf > 9.3",
"ChromeAndroid > 76", "Android > 76",
"FirefoxAndroid > 68", "OperaMobile > 46",
"UCAndroid > 12.12", "ChromeAndroid > 76",
"Samsung > 5" "FirefoxAndroid > 68",
] "UCAndroid > 12.12",
"Samsung > 5"
]
}, },
"files": [ "files": [
"dist" "dist"

View File

@@ -1,4 +1,6 @@
!(function() { /* global matchMedia, faviconModeSwitcher */
(function () {
const iconModeSwitcher = window.faviconModeSwitcher && faviconModeSwitcher.default const iconModeSwitcher = window.faviconModeSwitcher && faviconModeSwitcher.default
if (!iconModeSwitcher) return if (!iconModeSwitcher) return
iconModeSwitcher([ iconModeSwitcher([
@@ -16,99 +18,100 @@
} }
]) ])
})() })()
;(function (ThemeSwitcher) { ;(function (ThemeSwitcher) {
const themeSwitcher = new ThemeSwitcher('stylesheet'); const themeSwitcher = new ThemeSwitcher('stylesheet')
const themeSwitchBtn = document.getElementById('switch'); const themeSwitchBtn = document.getElementById('switch')
const themes = { const themes = {
dark: 'dark', dark: 'dark',
darkStandalone: 'dark.standalone', darkStandalone: 'dark.standalone',
light: 'light', light: 'light',
lightStandalone: 'light.standalone' lightStandalone: 'light.standalone'
}; }
const getSwitchThemeName = function () { const getSwitchThemeName = function () {
// Case: switch to "light.standalone.css" // Case: switch to "light.standalone.css"
if ( if (
(themeSwitcher.current === themes.dark) && themeSwitcher.isDark || ((themeSwitcher.current === themes.dark) && themeSwitcher.isDark) ||
(themeSwitcher.current === themes.light) && themeSwitcher.isDark || ((themeSwitcher.current === themes.light) && themeSwitcher.isDark) ||
themeSwitcher.current === themes.darkStandalone themeSwitcher.current === themes.darkStandalone
) { ) {
return themes.lightStandalone return themes.lightStandalone
// Case: switch to "dark.standalone.css" // Case: switch to "dark.standalone.css"
} else if ( } else if (
(themeSwitcher.current === themes.dark) && themeSwitcher.isLight || ((themeSwitcher.current === themes.dark) && themeSwitcher.isLight) ||
(themeSwitcher.current === themes.light) && themeSwitcher.isLight || ((themeSwitcher.current === themes.light) && themeSwitcher.isLight) ||
themeSwitcher.current === themes.lightStandalone themeSwitcher.current === themes.lightStandalone
) { ) {
return themes.darkStandalone; return themes.darkStandalone
// Case: switch to "light.css" // Case: switch to "light.css"
} else if (themeSwitcher.current === themes.dark) { } else if (themeSwitcher.current === themes.dark) {
return themes.light; return themes.light
// Case: switch to "dark.css" // Case: switch to "dark.css"
} else if (themeSwitcher.current === themes.light) { } else if (themeSwitcher.current === themes.light) {
return themes.dark; return themes.dark
// Case: switch destination is unknown // Case: switch destination is unknown
} else { } else {
return themeSwitcher.current; return themeSwitcher.current
} }
}; }
const getGeneralThemeName = function () { const getGeneralThemeName = function () {
return themeSwitcher.current.replace(/\.standalone/g, ''); return themeSwitcher.current.replace(/\.standalone/g, '')
}; }
themeSwitchBtn.addEventListener('click', function() { themeSwitchBtn.addEventListener('click', function () {
themeSwitcher.switch(getSwitchThemeName()); themeSwitcher.switch(getSwitchThemeName())
}); })
themeSwitcher.onChangeDark = function () { themeSwitcher.onChangeDark = function () {
themeSwitcher.switch(getGeneralThemeName()); themeSwitcher.switch(getGeneralThemeName())
}; }
themeSwitcher.onChangeLight = function () { themeSwitcher.onChangeLight = function () {
themeSwitcher.switch(getGeneralThemeName()); themeSwitcher.switch(getGeneralThemeName())
}; }
})( })(
(function () { (function () {
const ThemeSwitcher = function(stylesheet) { const ThemeSwitcher = function (stylesheet) {
const darkSchemeMql = matchMedia('(prefers-color-scheme: dark)'); const darkSchemeMql = matchMedia('(prefers-color-scheme: dark)')
const lightSchemeMql = matchMedia('(prefers-color-scheme: light)'); const lightSchemeMql = matchMedia('(prefers-color-scheme: light)')
const that = this; const that = this
this.themeDir = 'dist/'; this.themeDir = 'dist/'
this.stylesheet = document.getElementById(stylesheet); this.stylesheet = document.getElementById(stylesheet)
this.current = this.getThemeName(this.stylesheet.href); this.current = this.getThemeName(this.stylesheet.href)
this.isDark = darkSchemeMql.matches; this.isDark = darkSchemeMql.matches
this.isLight = lightSchemeMql.matches; this.isLight = lightSchemeMql.matches
darkSchemeMql.addListener(function (mql) { darkSchemeMql.addListener(function (mql) {
if (mql.matches && typeof that.onChangeDark === 'function') { if (mql.matches && typeof that.onChangeDark === 'function') {
that.onChangeDark() that.onChangeDark()
} }
}); })
lightSchemeMql.addListener(function (mql) { lightSchemeMql.addListener(function (mql) {
if (mql.matches && typeof that.onChangeLight === 'function') { if (mql.matches && typeof that.onChangeLight === 'function') {
that.onChangeLight() that.onChangeLight()
} }
}); })
}; }
ThemeSwitcher.prototype = { ThemeSwitcher.prototype = {
switch: function (themeName) { switch: function (themeName) {
this.stylesheet.href = this.themeDir + themeName + '.css'; this.stylesheet.href = this.themeDir + themeName + '.css'
this.current = themeName; this.current = themeName
}, },
getThemeName: function () { getThemeName: function () {
const reg = new RegExp(this.themeDir + '(|.+?).css'); const reg = new RegExp(this.themeDir + '(|.+?).css')
return stylesheet.getAttribute('href').replace(reg, '$1'); return this.stylesheet.getAttribute('href').replace(reg, '$1')
}, },
onChangeDark: null, onChangeDark: null,
onChangeLight: null onChangeLight: null
}; }
return ThemeSwitcher; return ThemeSwitcher
})() })()
); )

View File

@@ -2,29 +2,21 @@
--background-body: #202b38; --background-body: #202b38;
--background: #161f27; --background: #161f27;
--background-alt: #1a242f; --background-alt: #1a242f;
--selection: #161f27; --selection: #161f27;
--text-main: #dbdbdb; --text-main: #dbdbdb;
--text-bright: #ffffff; --text-bright: #fff;
--text-muted: #717880; --text-muted: #717880;
--links: #41adff; --links: #41adff;
--focus: #0096bfab; --focus: #0096bfab;
--border: #dbdbdb; --border: #dbdbdb;
--code: #ffbe85; --code: #ffbe85;
--animation-duration: 0.1s; --animation-duration: 0.1s;
--button-hover: #324759; --button-hover: #324759;
--scrollbar-thumb: var(--button-hover); --scrollbar-thumb: var(--button-hover);
--scrollbar-thumb-hover: color-mod(var(--scrollbar-thumb) lightness(+8%)); --scrollbar-thumb-hover: color-mod(var(--scrollbar-thumb) lightness(+8%));
--form-placeholder: #a9a9a9; --form-placeholder: #a9a9a9;
--form-text: #ffffff; --form-text: #fff;
--variable: #d941e2; --variable: #d941e2;
--highlight: #efdb43; --highlight: #efdb43;
--select-arrow: svg-load('./assets/select-arrow.svg', fill: #efefef); --select-arrow: svg-load('./assets/select-arrow.svg', fill: #efefef);
} }

View File

@@ -1,30 +1,22 @@
:root { :root {
--background-body: #ffffff; --background-body: #fff;
--background: #efefef; --background: #efefef;
--background-alt: #f7f7f7; --background-alt: #f7f7f7;
--selection: #9e9e9e; --selection: #9e9e9e;
--text-main: #363636; --text-main: #363636;
--text-bright: #000000; --text-bright: #000;
--text-muted: #999999; --text-muted: #999;
--links: #0076d1; --links: #0076d1;
--focus: #0096bfab; --focus: #0096bfab;
--border: #dbdbdb; --border: #dbdbdb;
--code: #000000; --code: #000;
--animation-duration: 0.1s; --animation-duration: 0.1s;
--button-hover: #dddddd; --button-hover: #ddd;
--scrollbar-thumb: color-mod(var(--button-hover) lightness(-3%)); --scrollbar-thumb: color-mod(var(--button-hover) lightness(-3%));
--scrollbar-thumb-hover: color-mod(var(--button-hover) lightness(-10%)); --scrollbar-thumb-hover: color-mod(var(--button-hover) lightness(-10%));
--form-placeholder: #949494; --form-placeholder: #949494;
--form-text: #000000; --form-text: #000;
--variable: #39a33c; --variable: #39a33c;
--highlight: #ffff00; --highlight: #ff0;
--select-arrow: svg-load('./assets/select-arrow.svg', fill: #161f27); --select-arrow: svg-load('./assets/select-arrow.svg', fill: #161f27);
} }

2069
yarn.lock

File diff suppressed because it is too large Load Diff