diff --git a/gulp/gulp-build.js b/gulp/gulp-build.js
index 30b0898434..6218bca763 100644
--- a/gulp/gulp-build.js
+++ b/gulp/gulp-build.js
@@ -25,7 +25,7 @@ gulp.task('build:common', () => {
gulp.task('build:server', ['build:src', 'build:common']);
-gulp.task('build:dev', ['browserify', 'prepare:staticNewStuff', 'semantic-ui'], (done) => {
+gulp.task('build:dev', ['browserify', 'prepare:staticNewStuff'], (done) => {
gulp.start('grunt-build:dev', done);
});
@@ -33,7 +33,7 @@ gulp.task('build:dev:watch', ['build:dev'], () => {
gulp.watch(['website/client-old/**/*.styl', 'website/common/script/*']);
});
-gulp.task('build:prod', ['browserify', 'build:server', 'prepare:staticNewStuff', 'semantic-ui'], (done) => {
+gulp.task('build:prod', ['browserify', 'build:server', 'prepare:staticNewStuff'], (done) => {
runSequence(
'grunt-build:prod',
'apidoc',
diff --git a/gulp/gulp-semanticui.js b/gulp/gulp-semanticui.js
deleted file mode 100644
index ad0570351f..0000000000
--- a/gulp/gulp-semanticui.js
+++ /dev/null
@@ -1,43 +0,0 @@
-import gulp from 'gulp';
-import fs from 'fs';
-
-// Make semantic-ui-less work with a theme in a different folder
-// Code taken from https://www.artembutusov.com/webpack-semantic-ui/
-
-// Relative to node_modules/semantic-ui-less
-const SEMANTIC_THEME_PATH = '../../website/client/assets/less/semantic-ui/theme.config';
-
-// fix well known bug with default distribution
-function fixFontPath (filename) {
- return new Promise((resolve, reject) => {
- fs.readFile(filename, 'utf8', (err, content) => {
- if (err) return reject(err);
-
- let newContent = content.replace(
- '@fontPath : \'../../themes/',
- '@fontPath : \'../../../themes/'
- );
-
- fs.writeFile(filename, newContent, 'utf8', (err1) => {
- if (err) return reject(err1);
- resolve();
- });
- });
- });
-}
-
-gulp.task('semantic-ui', (done) => {
- // relocate default config
- fs.writeFile(
- 'node_modules/semantic-ui-less/theme.config',
- `@import '${SEMANTIC_THEME_PATH}';\n`,
- 'utf8',
- (err) => {
- if (err) return done(err);
-
- fixFontPath('node_modules/semantic-ui-less/themes/default/globals/site.variables')
- .then(() => done())
- .catch(done);
- }
- );
-});
\ No newline at end of file
diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json
index 4a51bbbe85..da7eb9042d 100644
--- a/npm-shrinkwrap.json
+++ b/npm-shrinkwrap.json
@@ -468,6 +468,11 @@
"resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-1.1.0.tgz",
"optional": true
},
+ "async-foreach": {
+ "version": "0.1.3",
+ "from": "async-foreach@>=0.1.3 <0.2.0",
+ "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz"
+ },
"asynckit": {
"version": "0.4.0",
"from": "asynckit@>=0.4.0 <0.5.0",
@@ -986,6 +991,11 @@
"from": "boom@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz"
},
+ "bootstrap": {
+ "version": "4.0.0-alpha.6",
+ "from": "bootstrap@4.0.0-alpha.6",
+ "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.0.0-alpha.6.tgz"
+ },
"bower": {
"version": "1.3.12",
"from": "bower@>=1.3.12 <1.4.0",
@@ -1881,6 +1891,11 @@
"from": "clone@>=1.0.2 <2.0.0",
"resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz"
},
+ "clone-deep": {
+ "version": "0.2.4",
+ "from": "clone-deep@>=0.2.4 <0.3.0",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz"
+ },
"clone-stats": {
"version": "0.0.1",
"from": "clone-stats@>=0.0.1 <0.0.2",
@@ -6405,6 +6420,11 @@
}
}
},
+ "in-publish": {
+ "version": "2.0.0",
+ "from": "in-publish@>=2.0.0 <3.0.0",
+ "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz"
+ },
"indent-string": {
"version": "2.1.0",
"from": "indent-string@>=2.1.0 <3.0.0",
@@ -6746,6 +6766,18 @@
"from": "is-plain-obj@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz"
},
+ "is-plain-object": {
+ "version": "2.0.1",
+ "from": "is-plain-object@>=2.0.1 <3.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.1.tgz",
+ "dependencies": {
+ "isobject": {
+ "version": "1.0.2",
+ "from": "isobject@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz"
+ }
+ }
+ },
"is-png": {
"version": "1.0.0",
"from": "is-png@>=1.0.0 <2.0.0",
@@ -7686,36 +7718,6 @@
}
}
},
- "less": {
- "version": "2.7.2",
- "from": "less@>=2.7.1 <3.0.0",
- "resolved": "https://registry.npmjs.org/less/-/less-2.7.2.tgz",
- "dependencies": {
- "asap": {
- "version": "2.0.5",
- "from": "asap@>=2.0.3 <2.1.0",
- "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.5.tgz",
- "optional": true
- },
- "image-size": {
- "version": "0.5.1",
- "from": "image-size@>=0.5.0 <0.6.0",
- "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.1.tgz",
- "optional": true
- },
- "promise": {
- "version": "7.1.1",
- "from": "promise@>=7.1.1 <8.0.0",
- "resolved": "https://registry.npmjs.org/promise/-/promise-7.1.1.tgz",
- "optional": true
- }
- }
- },
- "less-loader": {
- "version": "2.2.3",
- "from": "less-loader@>=2.2.3 <3.0.0",
- "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-2.2.3.tgz"
- },
"levn": {
"version": "0.3.0",
"from": "levn@>=0.3.0 <0.4.0",
@@ -7951,6 +7953,11 @@
"resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-3.0.3.tgz",
"dev": true
},
+ "lodash.clonedeep": {
+ "version": "4.5.0",
+ "from": "lodash.clonedeep@>=4.3.2 <5.0.0",
+ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz"
+ },
"lodash.create": {
"version": "3.1.1",
"from": "lodash.create@>=3.1.1 <4.0.0",
@@ -8038,6 +8045,11 @@
"from": "lodash.memoize@>=3.0.3 <3.1.0",
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz"
},
+ "lodash.mergewith": {
+ "version": "4.6.0",
+ "from": "lodash.mergewith@>=4.6.0 <5.0.0",
+ "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz"
+ },
"lodash.now": {
"version": "2.4.1",
"from": "lodash.now@>=2.4.1 <2.5.0",
@@ -8053,6 +8065,11 @@
"from": "lodash.restparam@>=3.0.0 <4.0.0",
"resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz"
},
+ "lodash.tail": {
+ "version": "4.1.1",
+ "from": "lodash.tail@>=4.1.1 <5.0.0",
+ "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz"
+ },
"lodash.template": {
"version": "3.6.2",
"from": "lodash.template@>=3.0.0 <4.0.0",
@@ -8377,6 +8394,18 @@
"from": "minimist@0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"
},
+ "mixin-object": {
+ "version": "2.0.1",
+ "from": "mixin-object@>=2.0.1 <3.0.0",
+ "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz",
+ "dependencies": {
+ "for-in": {
+ "version": "0.1.8",
+ "from": "for-in@>=0.1.3 <0.2.0",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz"
+ }
+ }
+ },
"mkdirp": {
"version": "0.5.1",
"from": "mkdirp@>=0.5.1 <0.6.0",
@@ -8877,6 +8906,18 @@
}
}
},
+ "node-gyp": {
+ "version": "3.5.0",
+ "from": "node-gyp@>=3.3.1 <4.0.0",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.5.0.tgz",
+ "dependencies": {
+ "glob": {
+ "version": "7.1.1",
+ "from": "glob@^7.0.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz"
+ }
+ }
+ },
"node-libs-browser": {
"version": "2.0.0",
"from": "node-libs-browser@>=2.0.0 <3.0.0",
@@ -8958,6 +8999,53 @@
}
}
},
+ "node-sass": {
+ "version": "4.5.0",
+ "from": "node-sass@latest",
+ "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.5.0.tgz",
+ "dependencies": {
+ "cross-spawn": {
+ "version": "3.0.1",
+ "from": "cross-spawn@>=3.0.0 <4.0.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz"
+ },
+ "gaze": {
+ "version": "1.1.2",
+ "from": "gaze@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz"
+ },
+ "glob": {
+ "version": "7.1.1",
+ "from": "glob@>=7.0.3 <8.0.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz"
+ },
+ "globule": {
+ "version": "1.1.0",
+ "from": "globule@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/globule/-/globule-1.1.0.tgz"
+ },
+ "lodash": {
+ "version": "4.16.6",
+ "from": "lodash@>=4.16.4 <4.17.0",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.16.6.tgz"
+ },
+ "lodash.assign": {
+ "version": "4.2.0",
+ "from": "lodash.assign@>=4.2.0 <5.0.0",
+ "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz"
+ },
+ "lru-cache": {
+ "version": "4.0.2",
+ "from": "lru-cache@>=4.0.1 <5.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz"
+ },
+ "which": {
+ "version": "1.2.12",
+ "from": "which@>=1.2.9 <2.0.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.2.12.tgz"
+ }
+ }
+ },
"node-status-codes": {
"version": "1.0.0",
"from": "node-status-codes@>=1.0.0 <2.0.0",
@@ -10836,6 +10924,65 @@
"resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.2.tgz",
"dev": true
},
+ "sass-graph": {
+ "version": "2.1.2",
+ "from": "sass-graph@>=2.1.1 <3.0.0",
+ "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.1.2.tgz",
+ "dependencies": {
+ "camelcase": {
+ "version": "3.0.0",
+ "from": "camelcase@>=3.0.0 <4.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz"
+ },
+ "cliui": {
+ "version": "3.2.0",
+ "from": "cliui@>=3.2.0 <4.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz"
+ },
+ "glob": {
+ "version": "7.1.1",
+ "from": "glob@^7.0.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz"
+ },
+ "lodash.assign": {
+ "version": "4.2.0",
+ "from": "lodash.assign@^4.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz"
+ },
+ "window-size": {
+ "version": "0.2.0",
+ "from": "window-size@>=0.2.0 <0.3.0",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz"
+ },
+ "yargs": {
+ "version": "4.8.1",
+ "from": "yargs@>=4.7.1 <5.0.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz"
+ },
+ "yargs-parser": {
+ "version": "2.4.1",
+ "from": "yargs-parser@>=2.4.1 <3.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz"
+ }
+ }
+ },
+ "sass-loader": {
+ "version": "6.0.2",
+ "from": "sass-loader@latest",
+ "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.2.tgz",
+ "dependencies": {
+ "async": {
+ "version": "2.1.5",
+ "from": "async@>=2.1.5 <3.0.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.1.5.tgz"
+ },
+ "loader-utils": {
+ "version": "1.0.2",
+ "from": "loader-utils@>=1.0.1 <2.0.0",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.0.2.tgz"
+ }
+ }
+ },
"saucelabs": {
"version": "1.0.1",
"from": "saucelabs@>=1.0.1 <1.1.0",
@@ -10913,11 +11060,6 @@
}
}
},
- "semantic-ui-less": {
- "version": "2.2.9",
- "from": "semantic-ui-less@>=2.2.4 <2.3.0",
- "resolved": "https://registry.npmjs.org/semantic-ui-less/-/semantic-ui-less-2.2.9.tgz"
- },
"semver": {
"version": "5.0.3",
"from": "semver@>=5.0.1 <5.1.0",
@@ -11041,6 +11183,23 @@
"from": "sha.js@>=2.3.6 <3.0.0",
"resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz"
},
+ "shallow-clone": {
+ "version": "0.1.2",
+ "from": "shallow-clone@>=0.1.2 <0.2.0",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz",
+ "dependencies": {
+ "kind-of": {
+ "version": "2.0.1",
+ "from": "kind-of@>=2.0.1 <3.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz"
+ },
+ "lazy-cache": {
+ "version": "0.2.7",
+ "from": "lazy-cache@>=0.2.3 <0.3.0",
+ "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz"
+ }
+ }
+ },
"shallow-copy": {
"version": "0.0.1",
"from": "shallow-copy@>=0.0.1 <0.1.0",
@@ -11473,6 +11632,11 @@
"from": "statuses@>=1.3.1 <2.0.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz"
},
+ "stdout-stream": {
+ "version": "1.4.0",
+ "from": "stdout-stream@>=1.4.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz"
+ },
"stream-browserify": {
"version": "2.0.1",
"from": "stream-browserify@>=2.0.0 <3.0.0",
@@ -11883,6 +12047,11 @@
"resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.0.0.tgz",
"dev": true
},
+ "tether": {
+ "version": "1.4.0",
+ "from": "tether@>=1.4.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/tether/-/tether-1.4.0.tgz"
+ },
"text-table": {
"version": "0.2.0",
"from": "text-table@>=0.2.0 <0.3.0",
diff --git a/package.json b/package.json
index c11718104e..115ca58364 100644
--- a/package.json
+++ b/package.json
@@ -28,6 +28,7 @@
"bcrypt": "^1.0.2",
"bluebird": "^3.3.5",
"body-parser": "^1.15.0",
+ "bootstrap": "^4.0.0-alpha.6",
"bower": "~1.3.12",
"browserify": "~12.0.1",
"compression": "^1.6.1",
@@ -70,8 +71,6 @@
"jade": "~1.11.0",
"jquery": "^3.1.1",
"js2xmlparser": "~1.0.0",
- "less": "^2.7.1",
- "less-loader": "^2.2.3",
"lodash": "^4.17.4",
"merge-stream": "^1.0.0",
"method-override": "^2.3.5",
@@ -83,6 +82,7 @@
"nconf": "~0.8.2",
"nib": "^1.1.0",
"node-gcm": "^0.14.4",
+ "node-sass": "^4.5.0",
"nodemailer": "^2.3.2",
"object-path": "^0.9.2",
"ora": "^1.1.0",
@@ -102,7 +102,7 @@
"rimraf": "^2.4.3",
"run-sequence": "^1.1.4",
"s3-upload-stream": "^1.0.6",
- "semantic-ui-less": "~2.2.4",
+ "sass-loader": "^6.0.2",
"serve-favicon": "^2.3.0",
"shelljs": "^0.7.6",
"stripe": "^4.2.0",
diff --git a/website/client/app.vue b/website/client/app.vue
index 70e1378f35..7697892f88 100644
--- a/website/client/app.vue
+++ b/website/client/app.vue
@@ -3,7 +3,7 @@
#app
app-menu
- .ui.grid.fluid
+ .container-fluid
app-header
router-view
@@ -21,16 +21,6 @@ export default {
};
-
-
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/website/client/assets/less/loading-screen.less b/website/client/assets/less/loading-screen.less
deleted file mode 100644
index 4451c61996..0000000000
--- a/website/client/assets/less/loading-screen.less
+++ /dev/null
@@ -1,4 +0,0 @@
-// Rendered outside Vue
-#loading-screen {
- height: 100%;
-}
diff --git a/website/client/assets/less/semantic-ui/README.md b/website/client/assets/less/semantic-ui/README.md
deleted file mode 100644
index 0fe6787163..0000000000
--- a/website/client/assets/less/semantic-ui/README.md
+++ /dev/null
@@ -1,109 +0,0 @@
-This folder contains the Semantic UI theme used on the website.
-
-To load a Semantic UI element uncomment it from semantic.less.
-
-The custom theme files are placed under /site.
-
-For each element there's a .variables file that contains variables that are different for our theme and a .overrides file that contains custom CSS properties.
-
-More info on theming can be found at http://semantic-ui.com/usage/theming.html.
-
-The list of files that can be placed under /site is this:
-
-├── collections
-│ ├── breadcrumb.overrides
-│ ├── breadcrumb.variables
-│ ├── form.overrides
-│ ├── form.variables
-│ ├── grid.overrides
-│ ├── grid.variables
-│ ├── menu.overrides
-│ ├── menu.variables
-│ ├── message.overrides
-│ ├── message.variables
-│ ├── table.overrides
-│ └── table.variables
-├── elements
-│ ├── button.overrides
-│ ├── button.variables
-│ ├── container.overrides
-│ ├── container.variables
-│ ├── divider.overrides
-│ ├── divider.variables
-│ ├── flag.overrides
-│ ├── flag.variables
-│ ├── header.overrides
-│ ├── header.variables
-│ ├── icon.overrides
-│ ├── icon.variables
-│ ├── image.overrides
-│ ├── image.variables
-│ ├── input.overrides
-│ ├── input.variables
-│ ├── label.overrides
-│ ├── label.variables
-│ ├── list.overrides
-│ ├── list.variables
-│ ├── loader.overrides
-│ ├── loader.variables
-│ ├── rail.overrides
-│ ├── rail.variables
-│ ├── reveal.overrides
-│ ├── reveal.variables
-│ ├── segment.overrides
-│ ├── segment.variables
-│ ├── step.overrides
-│ └── step.variables
-├── globals
-│ ├── reset.overrides
-│ ├── reset.variables
-│ ├── site.overrides
-│ └── site.variables
-├── modules
-│ ├── accordion.overrides
-│ ├── accordion.variables
-│ ├── chatroom.overrides
-│ ├── chatroom.variables
-│ ├── checkbox.overrides
-│ ├── checkbox.variables
-│ ├── dimmer.overrides
-│ ├── dimmer.variables
-│ ├── dropdown.overrides
-│ ├── dropdown.variables
-│ ├── embed.overrides
-│ ├── embed.variables
-│ ├── modal.overrides
-│ ├── modal.variables
-│ ├── nag.overrides
-│ ├── nag.variables
-│ ├── popup.overrides
-│ ├── popup.variables
-│ ├── progress.overrides
-│ ├── progress.variables
-│ ├── rating.overrides
-│ ├── rating.variables
-│ ├── search.overrides
-│ ├── search.variables
-│ ├── shape.overrides
-│ ├── shape.variables
-│ ├── sidebar.overrides
-│ ├── sidebar.variables
-│ ├── sticky.overrides
-│ ├── sticky.variables
-│ ├── tab.overrides
-│ ├── tab.variables
-│ ├── transition.overrides
-│ └── transition.variables
-└── views
- ├── ad.overrides
- ├── ad.variables
- ├── card.overrides
- ├── card.variables
- ├── comment.overrides
- ├── comment.variables
- ├── feed.overrides
- ├── feed.variables
- ├── item.overrides
- ├── item.variables
- ├── statistic.overrides
- └── statistic.variables
\ No newline at end of file
diff --git a/website/client/assets/less/semantic-ui/semantic.less b/website/client/assets/less/semantic-ui/semantic.less
deleted file mode 100644
index 426fa6d21b..0000000000
--- a/website/client/assets/less/semantic-ui/semantic.less
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
-
-███████╗███████╗███╗ ███╗ █████╗ ███╗ ██╗████████╗██╗ ██████╗ ██╗ ██╗██╗
-██╔════╝██╔════╝████╗ ████║██╔══██╗████╗ ██║╚══██╔══╝██║██╔════╝ ██║ ██║██║
-███████╗█████╗ ██╔████╔██║███████║██╔██╗ ██║ ██║ ██║██║ ██║ ██║██║
-╚════██║██╔══╝ ██║╚██╔╝██║██╔══██║██║╚██╗██║ ██║ ██║██║ ██║ ██║██║
-███████║███████╗██║ ╚═╝ ██║██║ ██║██║ ╚████║ ██║ ██║╚██████╗ ╚██████╔╝██║
-╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝
-
- Import this file into your LESS project to use Semantic UI without build tools
-*/
-
-// Un-comment each module when it gets used
-
-/* Global */
-& { @import "~semantic-ui-less/definitions/globals/reset"; }
-& { @import "~semantic-ui-less/definitions/globals/site"; }
-
-/* Elements */
-& { @import "~semantic-ui-less/definitions/elements/button"; }
-// & { @import "~semantic-ui-less/definitions/elements/container"; }
-// & { @import "~semantic-ui-less/definitions/elements/divider"; }
-// & { @import "~semantic-ui-less/definitions/elements/flag"; }
-& { @import "~semantic-ui-less/definitions/elements/header"; }
-& { @import "~semantic-ui-less/definitions/elements/icon"; }
-// & { @import "~semantic-ui-less/definitions/elements/image"; }
-& { @import "~semantic-ui-less/definitions/elements/input"; }
-// & { @import "~semantic-ui-less/definitions/elements/label"; }
-& { @import "~semantic-ui-less/definitions/elements/list"; }
-// & { @import "~semantic-ui-less/definitions/elements/loader"; }
-// & { @import "~semantic-ui-less/definitions/elements/rail"; }
-// & { @import "~semantic-ui-less/definitions/elements/reveal"; }
-& { @import "~semantic-ui-less/definitions/elements/segment"; }
-// & { @import "~semantic-ui-less/definitions/elements/step"; }
-
-/* Collections */
-// & { @import "~semantic-ui-less/definitions/collections/breadcrumb"; }
-& { @import "~semantic-ui-less/definitions/collections/form"; }
-& { @import "~semantic-ui-less/definitions/collections/grid"; }
-& { @import "~semantic-ui-less/definitions/collections/menu"; }
-// & { @import "~semantic-ui-less/definitions/collections/message"; }
-// & { @import "~semantic-ui-less/definitions/collections/table"; }
-
-/* Views */
-// & { @import "~semantic-ui-less/definitions/views/ad"; }
-& { @import "~semantic-ui-less/definitions/views/card"; }
-& { @import "~semantic-ui-less/definitions/views/comment"; }
-// & { @import "~semantic-ui-less/definitions/views/feed"; }
-// & { @import "~semantic-ui-less/definitions/views/item"; }
-// & { @import "~semantic-ui-less/definitions/views/statistic"; }
-
-/* Modules */
-// & { @import "~semantic-ui-less/definitions/modules/accordion"; }
-& { @import "~semantic-ui-less/definitions/modules/checkbox"; }
-// & { @import "~semantic-ui-less/definitions/modules/dimmer"; }
-& { @import "~semantic-ui-less/definitions/modules/dropdown"; }
-// & { @import "~semantic-ui-less/definitions/modules/embed"; }
-// & { @import "~semantic-ui-less/definitions/modules/modal"; }
-// & { @import "~semantic-ui-less/definitions/modules/nag"; }
-// & { @import "~semantic-ui-less/definitions/modules/popup"; }
-& { @import "~semantic-ui-less/definitions/modules/progress"; }
-// & { @import "~semantic-ui-less/definitions/modules/rating"; }
-// & { @import "~semantic-ui-less/definitions/modules/search"; }
-// & { @import "~semantic-ui-less/definitions/modules/shape"; }
-// & { @import "~semantic-ui-less/definitions/modules/sidebar"; }
-// & { @import "~semantic-ui-less/definitions/modules/sticky"; }
-// & { @import "~semantic-ui-less/definitions/modules/tab"; }
-// & { @import "~semantic-ui-less/definitions/modules/transition"; }
diff --git a/website/client/assets/less/semantic-ui/site/globals/site.overrides b/website/client/assets/less/semantic-ui/site/globals/site.overrides
deleted file mode 100644
index 86297f345e..0000000000
--- a/website/client/assets/less/semantic-ui/site/globals/site.overrides
+++ /dev/null
@@ -1,19 +0,0 @@
-// Add classes for colored text and backgrounds
-// See https://github.com/Semantic-Org/Semantic-UI/issues/1885#issuecomment-226047499
-@colors: blue, green, orange, pink, purple, red, teal, yellow, black, grey, white;
-
-/* .text {
- .-(@i: length(@colors)) when (@i > 0) {
- @c: extract(@colors, @i);
- &.@{c} { color: @@c }
- .-((@i - 1));
- }.-;
-}
-
-.background {
- .-(@i: length(@colors)) when (@i > 0) {
- @c: extract(@colors, @i);
- &.@{c} { background-color: @@c }
- .-((@i - 1));
- }.-;
-} */
diff --git a/website/client/assets/less/semantic-ui/site/globals/site.variables b/website/client/assets/less/semantic-ui/site/globals/site.variables
deleted file mode 100644
index 4bf9b5862e..0000000000
--- a/website/client/assets/less/semantic-ui/site/globals/site.variables
+++ /dev/null
@@ -1,13 +0,0 @@
-// Disable google fonts
-@importGoogleFonts: false;
-
-// Set font
-@globalFont: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
-
-@pageFont: @globalFont;
-@headerFont: @globalFont;
-
-// Define custom colors
-@red : #f74e52;
-@yellow : #ffbe5d;
-@blue : #46a7d9;
\ No newline at end of file
diff --git a/website/client/assets/less/semantic-ui/theme.config b/website/client/assets/less/semantic-ui/theme.config
deleted file mode 100644
index ff740a2185..0000000000
--- a/website/client/assets/less/semantic-ui/theme.config
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
-
-████████╗██╗ ██╗███████╗███╗ ███╗███████╗███████╗
-╚══██╔══╝██║ ██║██╔════╝████╗ ████║██╔════╝██╔════╝
- ██║ ███████║█████╗ ██╔████╔██║█████╗ ███████╗
- ██║ ██╔══██║██╔══╝ ██║╚██╔╝██║██╔══╝ ╚════██║
- ██║ ██║ ██║███████╗██║ ╚═╝ ██║███████╗███████║
- ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚══════╝╚══════╝
-
-*/
-
-/*******************************
- Theme Selection
-*******************************/
-
-/* To override a theme for an individual element
- specify theme name below
-*/
-
-/* Global */
-@site : 'default';
-@reset : 'default';
-
-/* Elements */
-@button : 'default';
-@container : 'default';
-@divider : 'default';
-@flag : 'default';
-@header : 'default';
-@icon : 'default';
-@image : 'default';
-@input : 'default';
-@label : 'default';
-@list : 'default';
-@loader : 'default';
-@rail : 'default';
-@reveal : 'default';
-@segment : 'default';
-@step : 'default';
-
-/* Collections */
-@breadcrumb : 'default';
-@form : 'default';
-@grid : 'default';
-@menu : 'default';
-@message : 'default';
-@table : 'default';
-
-/* Modules */
-@accordion : 'default';
-@checkbox : 'default';
-@dimmer : 'default';
-@dropdown : 'default';
-@embed : 'default';
-@modal : 'default';
-@nag : 'default';
-@popup : 'default';
-@progress : 'default';
-@rating : 'default';
-@search : 'default';
-@shape : 'default';
-@sidebar : 'default';
-@sticky : 'default';
-@tab : 'default';
-@transition : 'default';
-
-/* Views */
-@ad : 'default';
-@card : 'default';
-@comment : 'default';
-@feed : 'default';
-@item : 'default';
-@statistic : 'default';
-
-/*******************************
- Folders
-*******************************/
-
-/* Path to theme packages */
-@themesFolder : 'themes';
-
-/* Path to site override folder - relative to node_modules/semantic-ui */
-@siteFolder : '../../website/client/assets/less/semantic-ui/site';
-
-
-/*******************************
- Import Theme
-*******************************/
-
-@import "~semantic-ui-less/theme.less";
-
-/* End Config */
\ No newline at end of file
diff --git a/website/client/assets/less/utilities.less b/website/client/assets/less/utilities.less
deleted file mode 100644
index a10cb73b11..0000000000
--- a/website/client/assets/less/utilities.less
+++ /dev/null
@@ -1,7 +0,0 @@
-// Center content inside a container using flexbox
-// SemanticUI's .centered only support grids
-.center-content {
- display: flex;
- align-items: center;
- justify-content: center;
-}
\ No newline at end of file
diff --git a/website/client/assets/less/forms.less b/website/client/assets/scss/forms.scss
similarity index 50%
rename from website/client/assets/less/forms.less
rename to website/client/assets/scss/forms.scss
index bd256066ea..59600f07d3 100644
--- a/website/client/assets/less/forms.less
+++ b/website/client/assets/scss/forms.scss
@@ -1,7 +1,3 @@
-.label-primary {
- font-weight: bold;
-}
-
.nested-field {
padding-left: 1.5rem;
}
\ No newline at end of file
diff --git a/website/client/assets/less/index.less b/website/client/assets/scss/index.scss
similarity index 79%
rename from website/client/assets/less/index.less
rename to website/client/assets/scss/index.scss
index da8c3da799..6289c41dc1 100644
--- a/website/client/assets/less/index.less
+++ b/website/client/assets/scss/index.scss
@@ -1,7 +1,9 @@
// CSS that doesn't belong to any specific Vue compoennt
-@import './utilities';
@import './forms';
-@import './loading-screen';
+
+html, body {
+ height: 100%;
+}
body {
text-rendering: optimizeLegibility;
diff --git a/website/client/components/appHeader.vue b/website/client/components/appHeader.vue
index 97fc354caa..5669ad860e 100644
--- a/website/client/components/appHeader.vue
+++ b/website/client/components/appHeader.vue
@@ -1,32 +1,32 @@
#app-header.row
avatar#header-avatar(:user="$store.state.user")
- .eight.wide.column
+ div
span.character-name {{user.profile.name}}
span.character-level Lvl {{user.stats.lvl}}
- .progress-container
+ .progress-container.d-flex
img.icon(src="~assets/header/png/health@3x.png")
- .ui.progress.red
- .bar(:style="{width: `${percent(user.stats.hp, maxHealth)}%`}")
+ .progress
+ .progress-bar.bg-danger(:style="{width: `${percent(user.stats.hp, maxHealth)}%`}")
span {{user.stats.hp | round}} / {{maxHealth}}
- .progress-container
+ .progress-container.d-flex
img.icon(src="~assets/header/png/experience@3x.png")
- .ui.progress.yellow
- .bar(:style="{width: `${percent(user.stats.exp, toNextLevel)}%`}")
+ .progress
+ .progress-bar.bg-warning(:style="{width: `${percent(user.stats.exp, toNextLevel)}%`}")
span {{user.stats.exp | round}} / {{toNextLevel}}
- .progress-container(ng-if="user.flags.classSelected && !user.preferences.disableClasses")
+ .progress-container.d-flex(ng-if="user.flags.classSelected && !user.preferences.disableClasses")
img.icon(src="~assets/header/png/magic@3x.png")
- .ui.progress.blue
- .bar(:style="{width: `${percent(user.stats.mp, maxMP)}%`}")
+ .progress
+ .progress-bar(:style="{width: `${percent(user.stats.mp, maxMP)}%`}")
span {{user.stats.mp | round}} / {{maxMP}}
diff --git a/website/client/components/avatar.vue b/website/client/components/avatar.vue
index e03a39066c..36d1f04d2a 100644
--- a/website/client/components/avatar.vue
+++ b/website/client/components/avatar.vue
@@ -44,8 +44,8 @@
+
\ No newline at end of file
diff --git a/website/client/components/social/tavern.vue b/website/client/components/social/tavern.vue
index 10fbc36ef8..f18a368485 100644
--- a/website/client/components/social/tavern.vue
+++ b/website/client/components/social/tavern.vue
@@ -1,5 +1,7 @@
-.ui.grid
+.row
+ h2.col-12 Tavern
+// TODO Example code based on Semantic UI .ui.grid
.four.wide.column
h2.ui.dividing.header SideMenu
@@ -176,7 +178,7 @@