diff --git a/.gitignore b/.gitignore
index b5929cd12..427d5dee3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -79,7 +79,6 @@ coverage.all
/public/serviceworker.js
/public/css
/public/fonts
-/public/img/svg
/web_src/fomantic/build
/VERSION
diff --git a/Makefile b/Makefile
index 03f2b8272..56002e6e1 100644
--- a/Makefile
+++ b/Makefile
@@ -95,11 +95,13 @@ FOMANTIC_DEST_DIR := web_src/fomantic/build
WEBPACK_SOURCES := $(shell find web_src/js web_src/less -type f) $(FOMANTIC_DEST)
WEBPACK_CONFIGS := webpack.config.js
WEBPACK_DEST := public/js/index.js public/css/index.css
-WEBPACK_DEST_ENTRIES := public/js public/css public/fonts public/serviceworker.js public/img/svg
+WEBPACK_DEST_ENTRIES := public/js public/css public/fonts public/serviceworker.js
BINDATA_DEST := modules/public/bindata.go modules/options/bindata.go modules/templates/bindata.go
BINDATA_HASH := $(addsuffix .hash,$(BINDATA_DEST))
+SVG_DEST_DIR := public/img/svg
+
TAGS ?=
TAGS_SPLIT := $(subst $(COMMA), ,$(TAGS))
TAGS_EVIDENCE := $(MAKE_EVIDENCE_DIR)/tags
@@ -158,6 +160,7 @@ help:
@echo " - lint-backend lint backend files"
@echo " - watch-frontend watch frontend files and continuously rebuild"
@echo " - webpack build webpack files"
+ @echo " - svg build svg files"
@echo " - fomantic build fomantic files"
@echo " - generate run \"go generate\""
@echo " - fmt format the Go code"
@@ -292,8 +295,8 @@ lint: lint-backend lint-frontend
lint-backend: golangci-lint revive vet swagger-check swagger-validate test-vendor
.PHONY: lint-frontend
-lint-frontend: node_modules
- npx eslint web_src/js webpack.config.js
+lint-frontend: node_modules svg-check
+ npx eslint web_src/js build webpack.config.js
npx stylelint web_src/less
.PHONY: watch-frontend
@@ -605,6 +608,20 @@ $(WEBPACK_DEST): $(WEBPACK_SOURCES) $(WEBPACK_CONFIGS) package-lock.json | node_
npx webpack --hide-modules --display-entrypoints=false
@touch $(WEBPACK_DEST)
+.PHONY: svg
+svg: node-check | node_modules
+ rm -rf $(SVG_DEST_DIR)
+ node build/generate-svg.js
+
+.PHONY: svg-check
+svg-check: svg
+ @diff=$$(git diff $(SVG_DEST_DIR)); \
+ if [ -n "$$diff" ]; then \
+ echo "Please run 'make svg' and commit the result:"; \
+ echo "$${diff}"; \
+ exit 1; \
+ fi;
+
.PHONY: update-translations
update-translations:
mkdir -p ./translations
diff --git a/build/generate-svg.js b/build/generate-svg.js
new file mode 100755
index 000000000..f2c2d3ed8
--- /dev/null
+++ b/build/generate-svg.js
@@ -0,0 +1,63 @@
+#!/usr/bin/env node
+'use strict';
+
+const fastGlob = require('fast-glob');
+const Svgo = require('svgo');
+const {resolve, parse} = require('path');
+const {readFile, writeFile, mkdir} = require('fs').promises;
+
+const glob = (pattern) => fastGlob.sync(pattern, {cwd: resolve(__dirname), absolute: true});
+const outputDir = resolve(__dirname, '../public/img/svg');
+
+function exit(err) {
+ if (err) console.error(err);
+ process.exit(err ? 1 : 0);
+}
+
+async function processFile(file, {prefix = ''} = {}) {
+ const name = `${prefix}${parse(file).name}`;
+
+ const svgo = new Svgo({
+ plugins: [
+ {removeXMLNS: true},
+ {removeDimensions: true},
+ {
+ addClassesToSVGElement: {
+ classNames: [
+ 'svg',
+ name,
+ ],
+ },
+ },
+ {
+ addAttributesToSVGElement: {
+ attributes: [
+ {'width': '16'},
+ {'height': '16'},
+ {'aria-hidden': 'true'},
+ ],
+ },
+ },
+ ],
+ });
+
+ const {data} = await svgo.optimize(await readFile(file, 'utf8'));
+ await writeFile(resolve(outputDir, `${name}.svg`), data);
+}
+
+async function main() {
+ try {
+ await mkdir(outputDir);
+ } catch {}
+
+ for (const file of glob('../node_modules/@primer/octicons/build/svg/*.svg')) {
+ await processFile(file, {prefix: 'octicon-'});
+ }
+
+ for (const file of glob('../web_src/svg/*.svg')) {
+ await processFile(file);
+ }
+}
+
+main().then(exit).catch(exit);
+
diff --git a/docs/content/doc/advanced/hacking-on-gitea.en-us.md b/docs/content/doc/advanced/hacking-on-gitea.en-us.md
index a76aacc9d..e6ffe908e 100644
--- a/docs/content/doc/advanced/hacking-on-gitea.en-us.md
+++ b/docs/content/doc/advanced/hacking-on-gitea.en-us.md
@@ -151,6 +151,10 @@ make lint-frontend
Note: When working on frontend code, set `USE_SERVICE_WORKER` to `false` in `app.ini` to prevent undesirable caching of frontend assets.
+### Building and adding SVGs
+
+SVG icons are built using the `make svg` target which compiles the icon sources defined in `build/generate-svg.js` into the output directory `public/img/svg`. Custom icons can be added in the `web_src/svg` directory.
+
### Building Images
To build the images, ImageMagick, `inkscape` and `zopflipng` binaries must be available in
diff --git a/modules/svg/discover_bindata.go b/modules/svg/discover_bindata.go
new file mode 100644
index 000000000..51fd8a4a6
--- /dev/null
+++ b/modules/svg/discover_bindata.go
@@ -0,0 +1,32 @@
+// Copyright 2020 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+// +build bindata
+
+package svg
+
+import (
+ "path"
+ "path/filepath"
+
+ "code.gitea.io/gitea/modules/public"
+)
+
+// Discover returns a map of discovered SVG icons in bindata
+func Discover() map[string]string {
+ svgs := make(map[string]string)
+
+ for _, file := range public.AssetNames() {
+ matched, _ := filepath.Match("img/svg/*.svg", file)
+ if matched {
+ content, err := public.Asset(file)
+ if err == nil {
+ filename := path.Base(file)
+ svgs[filename[:len(filename)-4]] = string(content)
+ }
+ }
+ }
+
+ return svgs
+}
diff --git a/modules/svg/discover_nobindata.go b/modules/svg/discover_nobindata.go
new file mode 100644
index 000000000..04ce447de
--- /dev/null
+++ b/modules/svg/discover_nobindata.go
@@ -0,0 +1,31 @@
+// Copyright 2020 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+// +build !bindata
+
+package svg
+
+import (
+ "io/ioutil"
+ "path"
+ "path/filepath"
+
+ "code.gitea.io/gitea/modules/setting"
+)
+
+// Discover returns a map of discovered SVG icons in the file system
+func Discover() map[string]string {
+ svgs := make(map[string]string)
+
+ files, _ := filepath.Glob(path.Join(setting.StaticRootPath, "public", "img", "svg", "*.svg"))
+ for _, file := range files {
+ content, err := ioutil.ReadFile(file)
+ if err == nil {
+ filename := path.Base(file)
+ svgs[filename[:len(filename)-4]] = string(content)
+ }
+ }
+
+ return svgs
+}
diff --git a/modules/svg/svg.go b/modules/svg/svg.go
new file mode 100644
index 000000000..1d1f8a90e
--- /dev/null
+++ b/modules/svg/svg.go
@@ -0,0 +1,13 @@
+// Copyright 2020 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package svg
+
+// SVGs contains discovered SVGs
+var SVGs map[string]string
+
+// Init discovers SVGs and populates the `SVGs` variable
+func Init() {
+ SVGs = Discover()
+}
diff --git a/modules/templates/helper.go b/modules/templates/helper.go
index 5001963e9..bb60db541 100644
--- a/modules/templates/helper.go
+++ b/modules/templates/helper.go
@@ -30,6 +30,7 @@ import (
"code.gitea.io/gitea/modules/markup"
"code.gitea.io/gitea/modules/repository"
"code.gitea.io/gitea/modules/setting"
+ "code.gitea.io/gitea/modules/svg"
"code.gitea.io/gitea/modules/timeutil"
"code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/services/gitdiff"
@@ -439,9 +440,19 @@ func NewTextFuncMap() []texttmpl.FuncMap {
}}
}
+var widthRe = regexp.MustCompile(`width="[0-9]+?"`)
+var heightRe = regexp.MustCompile(`height="[0-9]+?"`)
+
// SVG render icons
func SVG(icon string, size int) template.HTML {
- return template.HTML(fmt.Sprintf(``, icon, size, size, icon))
+ if svgStr, ok := svg.SVGs[icon]; ok {
+ if size != 16 {
+ svgStr = widthRe.ReplaceAllString(svgStr, fmt.Sprintf(`width="%d"`, size))
+ svgStr = heightRe.ReplaceAllString(svgStr, fmt.Sprintf(`height="%d"`, size))
+ }
+ return template.HTML(svgStr)
+ }
+ return template.HTML("")
}
// Safe render raw as HTML
diff --git a/package-lock.json b/package-lock.json
index 588d52f10..515d8e98e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2492,15 +2492,6 @@
"resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
"integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA="
},
- "camel-case": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
- "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
- "requires": {
- "no-case": "^2.2.0",
- "upper-case": "^1.1.1"
- }
- },
"camelcase": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
@@ -3763,14 +3754,6 @@
"esutils": "^2.0.2"
}
},
- "dom-converter": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
- "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
- "requires": {
- "utila": "~0.4"
- }
- },
"dom-serializer": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
@@ -3801,6 +3784,7 @@
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
"integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
+ "dev": true,
"requires": {
"domelementtype": "1"
}
@@ -3810,11 +3794,6 @@
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.0.12.tgz",
"integrity": "sha512-Fl8KseK1imyhErHypFPA8qpq9gPzlsJ/EukA6yk9o0gX23p1TzC+rh9LqNg1qvErRTc0UNMYlKxEGSfSh43NDg=="
},
- "domready": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/domready/-/domready-1.0.8.tgz",
- "integrity": "sha1-kfJS5Ze2Wvd+dFriTdAYXV4m1Yw="
- },
"domutils": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
@@ -6870,109 +6849,17 @@
"resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz",
"integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ=="
},
- "html-minifier": {
- "version": "3.5.21",
- "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz",
- "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==",
- "requires": {
- "camel-case": "3.0.x",
- "clean-css": "4.2.x",
- "commander": "2.17.x",
- "he": "1.2.x",
- "param-case": "2.1.x",
- "relateurl": "0.2.x",
- "uglify-js": "3.4.x"
- },
- "dependencies": {
- "commander": {
- "version": "2.17.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
- "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg=="
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- },
- "uglify-js": {
- "version": "3.4.10",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz",
- "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==",
- "requires": {
- "commander": "~2.19.0",
- "source-map": "~0.6.1"
- },
- "dependencies": {
- "commander": {
- "version": "2.19.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
- "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg=="
- }
- }
- }
- }
- },
"html-tags": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz",
"integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==",
"dev": true
},
- "html-webpack-plugin": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz",
- "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=",
- "requires": {
- "html-minifier": "^3.2.3",
- "loader-utils": "^0.2.16",
- "lodash": "^4.17.3",
- "pretty-error": "^2.0.2",
- "tapable": "^1.0.0",
- "toposort": "^1.0.0",
- "util.promisify": "1.0.0"
- },
- "dependencies": {
- "big.js": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
- "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q=="
- },
- "emojis-list": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
- "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k="
- },
- "json5": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
- "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE="
- },
- "loader-utils": {
- "version": "0.2.17",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
- "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
- "requires": {
- "big.js": "^3.1.3",
- "emojis-list": "^2.0.0",
- "json5": "^0.5.0",
- "object-assign": "^4.0.1"
- }
- },
- "util.promisify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
- "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
- "requires": {
- "define-properties": "^1.1.2",
- "object.getownpropertydescriptors": "^2.0.3"
- }
- }
- }
- },
"htmlparser2": {
"version": "3.10.1",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
"integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
+ "dev": true,
"requires": {
"domelementtype": "^1.3.1",
"domhandler": "^2.3.0",
@@ -6985,12 +6872,14 @@
"entities": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
- "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w=="
+ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
+ "dev": true
},
"readable-stream": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "dev": true,
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -7050,7 +6939,8 @@
"image-size": {
"version": "0.5.5",
"resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
- "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w="
+ "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
+ "optional": true
},
"immutable": {
"version": "3.8.2",
@@ -7688,11 +7578,6 @@
"jquery": ">=1.4.2"
}
},
- "js-base64": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.2.tgz",
- "integrity": "sha512-1hgLrLIrmCgZG+ID3VoLNLOSwjGnoZa8tyrUdEteMeIzsT6PH7PMLyUvbDwzNE56P3PNxyvuIOx4Uh2E5rzQIw=="
- },
"js-beautify": {
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.11.0.tgz",
@@ -8333,11 +8218,6 @@
"js-tokens": "^3.0.0 || ^4.0.0"
}
},
- "lower-case": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
- "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw="
- },
"lru-cache": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
@@ -8748,14 +8628,6 @@
}
}
},
- "merge-options": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-1.0.1.tgz",
- "integrity": "sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==",
- "requires": {
- "is-plain-obj": "^1.1"
- }
- },
"merge-source-map": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz",
@@ -8984,11 +8856,6 @@
"through2": "^2.0.0"
}
},
- "mitt": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.1.2.tgz",
- "integrity": "sha1-OA5hSA1qYVtmDwertg1R4KTkvtY="
- },
"mixin-deep": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
@@ -9124,14 +8991,6 @@
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
},
- "no-case": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
- "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
- "requires": {
- "lower-case": "^1.1.1"
- }
- },
"node-fetch": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
@@ -9540,14 +9399,6 @@
"readable-stream": "^2.1.5"
}
},
- "param-case": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
- "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=",
- "requires": {
- "no-case": "^2.2.0"
- }
- },
"parent-module": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
@@ -10531,14 +10382,6 @@
"postcss-values-parser": "^2.0.0"
}
},
- "postcss-prefix-selector": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/postcss-prefix-selector/-/postcss-prefix-selector-1.7.2.tgz",
- "integrity": "sha512-ddmzjWNmGs7E/nyolJ021/Gk6oBLRQLyyXKGV4Mu+Y0gquo+XlXSDP0/Y2J8C/cad/GLyftf2H0XtuDFQZxN3w==",
- "requires": {
- "postcss": "^7.0.0"
- }
- },
"postcss-preset-env": {
"version": "6.7.0",
"resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz",
@@ -10780,58 +10623,6 @@
"uniq": "^1.0.1"
}
},
- "posthtml": {
- "version": "0.9.2",
- "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.9.2.tgz",
- "integrity": "sha1-9MBtufZ7Yf0XxOJW5+PZUVv3Jv0=",
- "requires": {
- "posthtml-parser": "^0.2.0",
- "posthtml-render": "^1.0.5"
- }
- },
- "posthtml-parser": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.2.1.tgz",
- "integrity": "sha1-NdUw3jhnQMK6JP8usvrznM3ycd0=",
- "requires": {
- "htmlparser2": "^3.8.3",
- "isobject": "^2.1.0"
- },
- "dependencies": {
- "isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
- "requires": {
- "isarray": "1.0.0"
- }
- }
- }
- },
- "posthtml-rename-id": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/posthtml-rename-id/-/posthtml-rename-id-1.0.12.tgz",
- "integrity": "sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==",
- "requires": {
- "escape-string-regexp": "1.0.5"
- }
- },
- "posthtml-render": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.2.2.tgz",
- "integrity": "sha512-MbIXTWwAfJ9qET6Zl29UNwJcDJEEz9Zkr5oDhiujitJa7YBJwEpbkX2cmuklCDxubTMoRWpid3q8DrSyGnUUzQ=="
- },
- "posthtml-svg-mode": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/posthtml-svg-mode/-/posthtml-svg-mode-1.0.3.tgz",
- "integrity": "sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==",
- "requires": {
- "merge-options": "1.0.1",
- "posthtml": "^0.9.2",
- "posthtml-parser": "^0.2.1",
- "posthtml-render": "^1.0.6"
- }
- },
"prelude-ls": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -10849,15 +10640,6 @@
"integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
"optional": true
},
- "pretty-error": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz",
- "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=",
- "requires": {
- "renderkid": "^2.0.1",
- "utila": "~0.4"
- }
- },
"pretty-hrtime": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
@@ -11049,6 +10831,27 @@
"safe-buffer": "^5.1.0"
}
},
+ "raw-loader": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.1.tgz",
+ "integrity": "sha512-baolhQBSi3iNh1cglJjA0mYzga+wePk7vdEX//1dTFd+v4TsQlQE0jitJSNF1OIP82rdYulH7otaVmdlDaJ64A==",
+ "requires": {
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^2.6.5"
+ },
+ "dependencies": {
+ "loader-utils": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
+ "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ }
+ }
+ }
+ },
"react": {
"version": "15.6.2",
"resolved": "https://registry.npmjs.org/react/-/react-15.6.2.tgz",
@@ -11424,11 +11227,6 @@
}
}
},
- "relateurl": {
- "version": "0.2.7",
- "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
- "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk="
- },
"remark": {
"version": "12.0.0",
"resolved": "https://registry.npmjs.org/remark/-/remark-12.0.0.tgz",
@@ -11519,45 +11317,6 @@
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
"integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8="
},
- "renderkid": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz",
- "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==",
- "requires": {
- "css-select": "^1.1.0",
- "dom-converter": "^0.2",
- "htmlparser2": "^3.3.0",
- "strip-ansi": "^3.0.0",
- "utila": "^0.4.0"
- },
- "dependencies": {
- "css-select": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
- "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
- "requires": {
- "boolbase": "~1.0.0",
- "css-what": "2.1",
- "domutils": "1.5.1",
- "nth-check": "~1.0.1"
- }
- },
- "css-what": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz",
- "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg=="
- },
- "domutils": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
- "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
- "requires": {
- "dom-serializer": "0",
- "domelementtype": "1"
- }
- }
- }
- },
"repeat-element": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
@@ -12832,259 +12591,6 @@
"es6-symbol": "^3.1.1"
}
},
- "svg-baker": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/svg-baker/-/svg-baker-1.7.0.tgz",
- "integrity": "sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==",
- "requires": {
- "bluebird": "^3.5.0",
- "clone": "^2.1.1",
- "he": "^1.1.1",
- "image-size": "^0.5.1",
- "loader-utils": "^1.1.0",
- "merge-options": "1.0.1",
- "micromatch": "3.1.0",
- "postcss": "^5.2.17",
- "postcss-prefix-selector": "^1.6.0",
- "posthtml-rename-id": "^1.0",
- "posthtml-svg-mode": "^1.0.3",
- "query-string": "^4.3.2",
- "traverse": "^0.6.6"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
- },
- "braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- }
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- },
- "dependencies": {
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
- }
- }
- },
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- }
- },
- "has-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
- "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo="
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "requires": {
- "kind-of": "^6.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
- }
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "requires": {
- "kind-of": "^6.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
- }
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
- }
- }
- },
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
- },
- "micromatch": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.0.tgz",
- "integrity": "sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==",
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.2.2",
- "define-property": "^1.0.0",
- "extend-shallow": "^2.0.1",
- "extglob": "^2.0.2",
- "fragment-cache": "^0.2.1",
- "kind-of": "^5.0.2",
- "nanomatch": "^1.2.1",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- }
- },
- "postcss": {
- "version": "5.2.18",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
- "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
- "requires": {
- "chalk": "^1.1.3",
- "js-base64": "^2.1.9",
- "source-map": "^0.5.6",
- "supports-color": "^3.2.3"
- }
- },
- "supports-color": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
- "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
- "requires": {
- "has-flag": "^1.0.0"
- }
- },
- "to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- }
- }
- }
- },
- "svg-baker-runtime": {
- "version": "1.4.7",
- "resolved": "https://registry.npmjs.org/svg-baker-runtime/-/svg-baker-runtime-1.4.7.tgz",
- "integrity": "sha512-Zorfwwj5+lWjk/oxwSMsRdS2sPQQdTmmsvaSpzU+i9ZWi3zugHLt6VckWfnswphQP0LmOel3nggpF5nETbt6xw==",
- "requires": {
- "deepmerge": "1.3.2",
- "mitt": "1.1.2",
- "svg-baker": "^1.7.0"
- },
- "dependencies": {
- "deepmerge": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.3.2.tgz",
- "integrity": "sha1-FmNpFinU2/42T6EqKk8KqGqjoFA="
- }
- }
- },
- "svg-sprite-loader": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/svg-sprite-loader/-/svg-sprite-loader-5.0.0.tgz",
- "integrity": "sha512-/hedkRC2IS0E+kFIb+OUCfqQlbVx72/WEEeRGw2uPsNgOOgJEONXzjfSm+CJ3pB9gOHytlBmPMS8ijMCp5s2Eg==",
- "requires": {
- "bluebird": "^3.5.0",
- "deepmerge": "1.3.2",
- "domready": "1.0.8",
- "escape-string-regexp": "1.0.5",
- "html-webpack-plugin": "^3.2.0",
- "loader-utils": "^1.1.0",
- "svg-baker": "^1.5.0",
- "svg-baker-runtime": "^1.4.7",
- "url-slug": "2.0.0"
- },
- "dependencies": {
- "deepmerge": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.3.2.tgz",
- "integrity": "sha1-FmNpFinU2/42T6EqKk8KqGqjoFA="
- }
- }
- },
"svg-tags": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
@@ -13111,15 +12617,6 @@
"util.promisify": "~1.0.0"
}
},
- "svgo-loader": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/svgo-loader/-/svgo-loader-2.2.1.tgz",
- "integrity": "sha512-9dyz/h6ae04pAVRz7QY8bLXtMbwA19NPpCPfCixgW0qXNDCOlHbDRqvtT5/2gzRxfuibWCUP6ZBQmZWF9rjWhQ==",
- "requires": {
- "js-yaml": "^3.13.1",
- "loader-utils": "^1.0.3"
- }
- },
"swagger-client": {
"version": "3.10.9",
"resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.10.9.tgz",
@@ -13585,11 +13082,6 @@
"resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
"integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI="
},
- "toposort": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz",
- "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk="
- },
"tough-cookie": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
@@ -13831,11 +13323,6 @@
"resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz",
"integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg=="
},
- "unidecode": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/unidecode/-/unidecode-0.1.8.tgz",
- "integrity": "sha1-77swFTi8RSRqmsjFWdcvAVMFBT4="
- },
"unified": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/unified/-/unified-9.0.0.tgz",
@@ -14024,11 +13511,6 @@
"integrity": "sha512-NkghVbjJeIBaiuC+Yvr8B99L2E/THCBoO9REo1uH+ulpxJyO2S4UNKSwXgbSC7GBRjTd/+0LFYFTQsbVfLQNaw==",
"dev": true
},
- "upper-case": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
- "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg="
- },
"uri-js": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
@@ -14075,14 +13557,6 @@
"ip-regex": "^1.0.1"
}
},
- "url-slug": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/url-slug/-/url-slug-2.0.0.tgz",
- "integrity": "sha1-p4nVrtSZXA2VrzM3etHVxo1NcCc=",
- "requires": {
- "unidecode": "0.1.8"
- }
- },
"use": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
@@ -14119,11 +13593,6 @@
"object.getownpropertydescriptors": "^2.1.0"
}
},
- "utila": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
- "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw="
- },
"uuid": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
diff --git a/package.json b/package.json
index 88eab49ea..a751dd528 100644
--- a/package.json
+++ b/package.json
@@ -30,9 +30,7 @@
"monaco-editor-webpack-plugin": "1.9.0",
"postcss-loader": "3.0.0",
"postcss-preset-env": "6.7.0",
- "svg-sprite-loader": "5.0.0",
- "svgo": "1.3.2",
- "svgo-loader": "2.2.1",
+ "raw-loader": "4.0.1",
"swagger-ui": "3.28.0",
"terser-webpack-plugin": "3.0.6",
"tributejs": "5.1.3",
@@ -56,6 +54,7 @@
"eslint-plugin-unicorn": "20.1.0",
"stylelint": "13.6.1",
"stylelint-config-standard": "20.0.0",
+ "svgo": "1.3.2",
"updates": "10.2.15"
},
"browserslist": [
diff --git a/public/img/svg/gitea-lock-cog.svg b/public/img/svg/gitea-lock-cog.svg
new file mode 100644
index 000000000..11a9d1172
--- /dev/null
+++ b/public/img/svg/gitea-lock-cog.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/gitea-lock.svg b/public/img/svg/gitea-lock.svg
new file mode 100644
index 000000000..a3ebc3444
--- /dev/null
+++ b/public/img/svg/gitea-lock.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/gitea-unlock.svg b/public/img/svg/gitea-unlock.svg
new file mode 100644
index 000000000..c798f15b7
--- /dev/null
+++ b/public/img/svg/gitea-unlock.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-alert.svg b/public/img/svg/octicon-alert.svg
new file mode 100644
index 000000000..3ced9bda5
--- /dev/null
+++ b/public/img/svg/octicon-alert.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-archive.svg b/public/img/svg/octicon-archive.svg
new file mode 100644
index 000000000..9414b7461
--- /dev/null
+++ b/public/img/svg/octicon-archive.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-arrow-both.svg b/public/img/svg/octicon-arrow-both.svg
new file mode 100644
index 000000000..be90f8a98
--- /dev/null
+++ b/public/img/svg/octicon-arrow-both.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-arrow-down.svg b/public/img/svg/octicon-arrow-down.svg
new file mode 100644
index 000000000..ade603ce0
--- /dev/null
+++ b/public/img/svg/octicon-arrow-down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-arrow-left.svg b/public/img/svg/octicon-arrow-left.svg
new file mode 100644
index 000000000..91154001a
--- /dev/null
+++ b/public/img/svg/octicon-arrow-left.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-arrow-right.svg b/public/img/svg/octicon-arrow-right.svg
new file mode 100644
index 000000000..0ebd24e09
--- /dev/null
+++ b/public/img/svg/octicon-arrow-right.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-arrow-small-down.svg b/public/img/svg/octicon-arrow-small-down.svg
new file mode 100644
index 000000000..4b41b5af5
--- /dev/null
+++ b/public/img/svg/octicon-arrow-small-down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-arrow-small-left.svg b/public/img/svg/octicon-arrow-small-left.svg
new file mode 100644
index 000000000..07d6892a1
--- /dev/null
+++ b/public/img/svg/octicon-arrow-small-left.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-arrow-small-right.svg b/public/img/svg/octicon-arrow-small-right.svg
new file mode 100644
index 000000000..832f9183d
--- /dev/null
+++ b/public/img/svg/octicon-arrow-small-right.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-arrow-small-up.svg b/public/img/svg/octicon-arrow-small-up.svg
new file mode 100644
index 000000000..bc278e912
--- /dev/null
+++ b/public/img/svg/octicon-arrow-small-up.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-arrow-up.svg b/public/img/svg/octicon-arrow-up.svg
new file mode 100644
index 000000000..1984167ef
--- /dev/null
+++ b/public/img/svg/octicon-arrow-up.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-beaker.svg b/public/img/svg/octicon-beaker.svg
new file mode 100644
index 000000000..49f2cd515
--- /dev/null
+++ b/public/img/svg/octicon-beaker.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-bell.svg b/public/img/svg/octicon-bell.svg
new file mode 100644
index 000000000..ded6f7447
--- /dev/null
+++ b/public/img/svg/octicon-bell.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-bold.svg b/public/img/svg/octicon-bold.svg
new file mode 100644
index 000000000..4cc47fb4f
--- /dev/null
+++ b/public/img/svg/octicon-bold.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-book.svg b/public/img/svg/octicon-book.svg
new file mode 100644
index 000000000..cad407388
--- /dev/null
+++ b/public/img/svg/octicon-book.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-bookmark.svg b/public/img/svg/octicon-bookmark.svg
new file mode 100644
index 000000000..2376d4b7b
--- /dev/null
+++ b/public/img/svg/octicon-bookmark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-briefcase.svg b/public/img/svg/octicon-briefcase.svg
new file mode 100644
index 000000000..a35856e98
--- /dev/null
+++ b/public/img/svg/octicon-briefcase.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-broadcast.svg b/public/img/svg/octicon-broadcast.svg
new file mode 100644
index 000000000..7b1b10e7b
--- /dev/null
+++ b/public/img/svg/octicon-broadcast.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-browser.svg b/public/img/svg/octicon-browser.svg
new file mode 100644
index 000000000..43b7c5052
--- /dev/null
+++ b/public/img/svg/octicon-browser.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-bug.svg b/public/img/svg/octicon-bug.svg
new file mode 100644
index 000000000..a4bc334ac
--- /dev/null
+++ b/public/img/svg/octicon-bug.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-calendar.svg b/public/img/svg/octicon-calendar.svg
new file mode 100644
index 000000000..9eab225f3
--- /dev/null
+++ b/public/img/svg/octicon-calendar.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-check.svg b/public/img/svg/octicon-check.svg
new file mode 100644
index 000000000..1543bd246
--- /dev/null
+++ b/public/img/svg/octicon-check.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-checklist.svg b/public/img/svg/octicon-checklist.svg
new file mode 100644
index 000000000..d6d527c29
--- /dev/null
+++ b/public/img/svg/octicon-checklist.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-chevron-down.svg b/public/img/svg/octicon-chevron-down.svg
new file mode 100644
index 000000000..9871741a9
--- /dev/null
+++ b/public/img/svg/octicon-chevron-down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-chevron-left.svg b/public/img/svg/octicon-chevron-left.svg
new file mode 100644
index 000000000..3c24eb19e
--- /dev/null
+++ b/public/img/svg/octicon-chevron-left.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-chevron-right.svg b/public/img/svg/octicon-chevron-right.svg
new file mode 100644
index 000000000..0741c274e
--- /dev/null
+++ b/public/img/svg/octicon-chevron-right.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-chevron-up.svg b/public/img/svg/octicon-chevron-up.svg
new file mode 100644
index 000000000..ba92f17dd
--- /dev/null
+++ b/public/img/svg/octicon-chevron-up.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-circle-slash.svg b/public/img/svg/octicon-circle-slash.svg
new file mode 100644
index 000000000..f8f5120ec
--- /dev/null
+++ b/public/img/svg/octicon-circle-slash.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-circuit-board.svg b/public/img/svg/octicon-circuit-board.svg
new file mode 100644
index 000000000..d3c9d2cc4
--- /dev/null
+++ b/public/img/svg/octicon-circuit-board.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-clippy.svg b/public/img/svg/octicon-clippy.svg
new file mode 100644
index 000000000..75accdad8
--- /dev/null
+++ b/public/img/svg/octicon-clippy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-clock.svg b/public/img/svg/octicon-clock.svg
new file mode 100644
index 000000000..42d7f56bf
--- /dev/null
+++ b/public/img/svg/octicon-clock.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-cloud-download.svg b/public/img/svg/octicon-cloud-download.svg
new file mode 100644
index 000000000..617f0bb8f
--- /dev/null
+++ b/public/img/svg/octicon-cloud-download.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-cloud-upload.svg b/public/img/svg/octicon-cloud-upload.svg
new file mode 100644
index 000000000..fca34dcee
--- /dev/null
+++ b/public/img/svg/octicon-cloud-upload.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-code.svg b/public/img/svg/octicon-code.svg
new file mode 100644
index 000000000..93eb72bb0
--- /dev/null
+++ b/public/img/svg/octicon-code.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-comment-discussion.svg b/public/img/svg/octicon-comment-discussion.svg
new file mode 100644
index 000000000..3314c2124
--- /dev/null
+++ b/public/img/svg/octicon-comment-discussion.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-comment.svg b/public/img/svg/octicon-comment.svg
new file mode 100644
index 000000000..ca5125f03
--- /dev/null
+++ b/public/img/svg/octicon-comment.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-credit-card.svg b/public/img/svg/octicon-credit-card.svg
new file mode 100644
index 000000000..6f002ced5
--- /dev/null
+++ b/public/img/svg/octicon-credit-card.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-dash.svg b/public/img/svg/octicon-dash.svg
new file mode 100644
index 000000000..e22ea76eb
--- /dev/null
+++ b/public/img/svg/octicon-dash.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-dashboard.svg b/public/img/svg/octicon-dashboard.svg
new file mode 100644
index 000000000..e7be11399
--- /dev/null
+++ b/public/img/svg/octicon-dashboard.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-database.svg b/public/img/svg/octicon-database.svg
new file mode 100644
index 000000000..ab0df5491
--- /dev/null
+++ b/public/img/svg/octicon-database.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-dependent.svg b/public/img/svg/octicon-dependent.svg
new file mode 100644
index 000000000..f9bfcf923
--- /dev/null
+++ b/public/img/svg/octicon-dependent.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-desktop-download.svg b/public/img/svg/octicon-desktop-download.svg
new file mode 100644
index 000000000..8e5f38ac1
--- /dev/null
+++ b/public/img/svg/octicon-desktop-download.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-device-camera-video.svg b/public/img/svg/octicon-device-camera-video.svg
new file mode 100644
index 000000000..9cdc1b18a
--- /dev/null
+++ b/public/img/svg/octicon-device-camera-video.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-device-camera.svg b/public/img/svg/octicon-device-camera.svg
new file mode 100644
index 000000000..66d510ee1
--- /dev/null
+++ b/public/img/svg/octicon-device-camera.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-device-desktop.svg b/public/img/svg/octicon-device-desktop.svg
new file mode 100644
index 000000000..a08062a38
--- /dev/null
+++ b/public/img/svg/octicon-device-desktop.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-device-mobile.svg b/public/img/svg/octicon-device-mobile.svg
new file mode 100644
index 000000000..66d566768
--- /dev/null
+++ b/public/img/svg/octicon-device-mobile.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-diff-added.svg b/public/img/svg/octicon-diff-added.svg
new file mode 100644
index 000000000..c1f17f399
--- /dev/null
+++ b/public/img/svg/octicon-diff-added.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-diff-ignored.svg b/public/img/svg/octicon-diff-ignored.svg
new file mode 100644
index 000000000..b3d606edd
--- /dev/null
+++ b/public/img/svg/octicon-diff-ignored.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-diff-modified.svg b/public/img/svg/octicon-diff-modified.svg
new file mode 100644
index 000000000..28fa41eb4
--- /dev/null
+++ b/public/img/svg/octicon-diff-modified.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-diff-removed.svg b/public/img/svg/octicon-diff-removed.svg
new file mode 100644
index 000000000..eb38d456e
--- /dev/null
+++ b/public/img/svg/octicon-diff-removed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-diff-renamed.svg b/public/img/svg/octicon-diff-renamed.svg
new file mode 100644
index 000000000..e268a61a4
--- /dev/null
+++ b/public/img/svg/octicon-diff-renamed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-diff.svg b/public/img/svg/octicon-diff.svg
new file mode 100644
index 000000000..377598dfc
--- /dev/null
+++ b/public/img/svg/octicon-diff.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-ellipsis.svg b/public/img/svg/octicon-ellipsis.svg
new file mode 100644
index 000000000..f413acb8c
--- /dev/null
+++ b/public/img/svg/octicon-ellipsis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-eye-closed.svg b/public/img/svg/octicon-eye-closed.svg
new file mode 100644
index 000000000..9036539d7
--- /dev/null
+++ b/public/img/svg/octicon-eye-closed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-eye.svg b/public/img/svg/octicon-eye.svg
new file mode 100644
index 000000000..3b086a55d
--- /dev/null
+++ b/public/img/svg/octicon-eye.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-file-binary.svg b/public/img/svg/octicon-file-binary.svg
new file mode 100644
index 000000000..71897cdf3
--- /dev/null
+++ b/public/img/svg/octicon-file-binary.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-file-code.svg b/public/img/svg/octicon-file-code.svg
new file mode 100644
index 000000000..8c8318cfe
--- /dev/null
+++ b/public/img/svg/octicon-file-code.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-file-directory.svg b/public/img/svg/octicon-file-directory.svg
new file mode 100644
index 000000000..4ae23cfe2
--- /dev/null
+++ b/public/img/svg/octicon-file-directory.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-file-media.svg b/public/img/svg/octicon-file-media.svg
new file mode 100644
index 000000000..53d4ddd18
--- /dev/null
+++ b/public/img/svg/octicon-file-media.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-file-pdf.svg b/public/img/svg/octicon-file-pdf.svg
new file mode 100644
index 000000000..a986d99f8
--- /dev/null
+++ b/public/img/svg/octicon-file-pdf.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-file-submodule.svg b/public/img/svg/octicon-file-submodule.svg
new file mode 100644
index 000000000..d03ab9fbd
--- /dev/null
+++ b/public/img/svg/octicon-file-submodule.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-file-symlink-directory.svg b/public/img/svg/octicon-file-symlink-directory.svg
new file mode 100644
index 000000000..a1f22d5c7
--- /dev/null
+++ b/public/img/svg/octicon-file-symlink-directory.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-file-symlink-file.svg b/public/img/svg/octicon-file-symlink-file.svg
new file mode 100644
index 000000000..6b9246d3e
--- /dev/null
+++ b/public/img/svg/octicon-file-symlink-file.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-file-zip.svg b/public/img/svg/octicon-file-zip.svg
new file mode 100644
index 000000000..2155236ff
--- /dev/null
+++ b/public/img/svg/octicon-file-zip.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-file.svg b/public/img/svg/octicon-file.svg
new file mode 100644
index 000000000..35c919a8e
--- /dev/null
+++ b/public/img/svg/octicon-file.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-flame.svg b/public/img/svg/octicon-flame.svg
new file mode 100644
index 000000000..419034c2d
--- /dev/null
+++ b/public/img/svg/octicon-flame.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-fold-down.svg b/public/img/svg/octicon-fold-down.svg
new file mode 100644
index 000000000..391ab8100
--- /dev/null
+++ b/public/img/svg/octicon-fold-down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-fold-up.svg b/public/img/svg/octicon-fold-up.svg
new file mode 100644
index 000000000..932974876
--- /dev/null
+++ b/public/img/svg/octicon-fold-up.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-fold.svg b/public/img/svg/octicon-fold.svg
new file mode 100644
index 000000000..6065f94fe
--- /dev/null
+++ b/public/img/svg/octicon-fold.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-gear.svg b/public/img/svg/octicon-gear.svg
new file mode 100644
index 000000000..53859ef57
--- /dev/null
+++ b/public/img/svg/octicon-gear.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-gift.svg b/public/img/svg/octicon-gift.svg
new file mode 100644
index 000000000..9856e5702
--- /dev/null
+++ b/public/img/svg/octicon-gift.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-gist-secret.svg b/public/img/svg/octicon-gist-secret.svg
new file mode 100644
index 000000000..4b0fe5e70
--- /dev/null
+++ b/public/img/svg/octicon-gist-secret.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-gist.svg b/public/img/svg/octicon-gist.svg
new file mode 100644
index 000000000..8b52e7062
--- /dev/null
+++ b/public/img/svg/octicon-gist.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-git-branch.svg b/public/img/svg/octicon-git-branch.svg
new file mode 100644
index 000000000..381c95c75
--- /dev/null
+++ b/public/img/svg/octicon-git-branch.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-git-commit.svg b/public/img/svg/octicon-git-commit.svg
new file mode 100644
index 000000000..0b2eed6c4
--- /dev/null
+++ b/public/img/svg/octicon-git-commit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-git-compare.svg b/public/img/svg/octicon-git-compare.svg
new file mode 100644
index 000000000..d709e7076
--- /dev/null
+++ b/public/img/svg/octicon-git-compare.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-git-merge.svg b/public/img/svg/octicon-git-merge.svg
new file mode 100644
index 000000000..a72cf0467
--- /dev/null
+++ b/public/img/svg/octicon-git-merge.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-git-pull-request.svg b/public/img/svg/octicon-git-pull-request.svg
new file mode 100644
index 000000000..1566fbaa0
--- /dev/null
+++ b/public/img/svg/octicon-git-pull-request.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-github-action.svg b/public/img/svg/octicon-github-action.svg
new file mode 100644
index 000000000..c81543c6f
--- /dev/null
+++ b/public/img/svg/octicon-github-action.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-globe.svg b/public/img/svg/octicon-globe.svg
new file mode 100644
index 000000000..ad92eaa0b
--- /dev/null
+++ b/public/img/svg/octicon-globe.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-grabber.svg b/public/img/svg/octicon-grabber.svg
new file mode 100644
index 000000000..e63d0c26a
--- /dev/null
+++ b/public/img/svg/octicon-grabber.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-graph.svg b/public/img/svg/octicon-graph.svg
new file mode 100644
index 000000000..df830a51b
--- /dev/null
+++ b/public/img/svg/octicon-graph.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-heart-outline.svg b/public/img/svg/octicon-heart-outline.svg
new file mode 100644
index 000000000..bcfc9bd3f
--- /dev/null
+++ b/public/img/svg/octicon-heart-outline.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-heart.svg b/public/img/svg/octicon-heart.svg
new file mode 100644
index 000000000..2aec363a5
--- /dev/null
+++ b/public/img/svg/octicon-heart.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-history.svg b/public/img/svg/octicon-history.svg
new file mode 100644
index 000000000..24cbc65c3
--- /dev/null
+++ b/public/img/svg/octicon-history.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-home.svg b/public/img/svg/octicon-home.svg
new file mode 100644
index 000000000..55d0ed73b
--- /dev/null
+++ b/public/img/svg/octicon-home.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-horizontal-rule.svg b/public/img/svg/octicon-horizontal-rule.svg
new file mode 100644
index 000000000..93dba6a09
--- /dev/null
+++ b/public/img/svg/octicon-horizontal-rule.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-hubot.svg b/public/img/svg/octicon-hubot.svg
new file mode 100644
index 000000000..12380432f
--- /dev/null
+++ b/public/img/svg/octicon-hubot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-inbox.svg b/public/img/svg/octicon-inbox.svg
new file mode 100644
index 000000000..260248920
--- /dev/null
+++ b/public/img/svg/octicon-inbox.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-infinity.svg b/public/img/svg/octicon-infinity.svg
new file mode 100644
index 000000000..64df65c8c
--- /dev/null
+++ b/public/img/svg/octicon-infinity.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-info.svg b/public/img/svg/octicon-info.svg
new file mode 100644
index 000000000..873de39fa
--- /dev/null
+++ b/public/img/svg/octicon-info.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-internal-repo.svg b/public/img/svg/octicon-internal-repo.svg
new file mode 100644
index 000000000..038aa429c
--- /dev/null
+++ b/public/img/svg/octicon-internal-repo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-issue-closed.svg b/public/img/svg/octicon-issue-closed.svg
new file mode 100644
index 000000000..10f897c66
--- /dev/null
+++ b/public/img/svg/octicon-issue-closed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-issue-opened.svg b/public/img/svg/octicon-issue-opened.svg
new file mode 100644
index 000000000..a49e17aea
--- /dev/null
+++ b/public/img/svg/octicon-issue-opened.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-issue-reopened.svg b/public/img/svg/octicon-issue-reopened.svg
new file mode 100644
index 000000000..16441a8c5
--- /dev/null
+++ b/public/img/svg/octicon-issue-reopened.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-italic.svg b/public/img/svg/octicon-italic.svg
new file mode 100644
index 000000000..39e6f28b7
--- /dev/null
+++ b/public/img/svg/octicon-italic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-jersey.svg b/public/img/svg/octicon-jersey.svg
new file mode 100644
index 000000000..80fac4793
--- /dev/null
+++ b/public/img/svg/octicon-jersey.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-kebab-horizontal.svg b/public/img/svg/octicon-kebab-horizontal.svg
new file mode 100644
index 000000000..786c735ac
--- /dev/null
+++ b/public/img/svg/octicon-kebab-horizontal.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-kebab-vertical.svg b/public/img/svg/octicon-kebab-vertical.svg
new file mode 100644
index 000000000..bc10abda2
--- /dev/null
+++ b/public/img/svg/octicon-kebab-vertical.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-key.svg b/public/img/svg/octicon-key.svg
new file mode 100644
index 000000000..6d1a942b8
--- /dev/null
+++ b/public/img/svg/octicon-key.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-keyboard.svg b/public/img/svg/octicon-keyboard.svg
new file mode 100644
index 000000000..a62a1d208
--- /dev/null
+++ b/public/img/svg/octicon-keyboard.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-law.svg b/public/img/svg/octicon-law.svg
new file mode 100644
index 000000000..78502c7c7
--- /dev/null
+++ b/public/img/svg/octicon-law.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-light-bulb.svg b/public/img/svg/octicon-light-bulb.svg
new file mode 100644
index 000000000..79b83ffea
--- /dev/null
+++ b/public/img/svg/octicon-light-bulb.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-line-arrow-down.svg b/public/img/svg/octicon-line-arrow-down.svg
new file mode 100644
index 000000000..74b6ee33c
--- /dev/null
+++ b/public/img/svg/octicon-line-arrow-down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-line-arrow-left.svg b/public/img/svg/octicon-line-arrow-left.svg
new file mode 100644
index 000000000..cfbd1e876
--- /dev/null
+++ b/public/img/svg/octicon-line-arrow-left.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-line-arrow-right.svg b/public/img/svg/octicon-line-arrow-right.svg
new file mode 100644
index 000000000..4aa96ba78
--- /dev/null
+++ b/public/img/svg/octicon-line-arrow-right.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-line-arrow-up.svg b/public/img/svg/octicon-line-arrow-up.svg
new file mode 100644
index 000000000..8488fcde4
--- /dev/null
+++ b/public/img/svg/octicon-line-arrow-up.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-link-external.svg b/public/img/svg/octicon-link-external.svg
new file mode 100644
index 000000000..2e16b3b22
--- /dev/null
+++ b/public/img/svg/octicon-link-external.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-link.svg b/public/img/svg/octicon-link.svg
new file mode 100644
index 000000000..f00d32ab0
--- /dev/null
+++ b/public/img/svg/octicon-link.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-list-ordered.svg b/public/img/svg/octicon-list-ordered.svg
new file mode 100644
index 000000000..b018fab8a
--- /dev/null
+++ b/public/img/svg/octicon-list-ordered.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-list-unordered.svg b/public/img/svg/octicon-list-unordered.svg
new file mode 100644
index 000000000..5eb49184d
--- /dev/null
+++ b/public/img/svg/octicon-list-unordered.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-location.svg b/public/img/svg/octicon-location.svg
new file mode 100644
index 000000000..e6d679485
--- /dev/null
+++ b/public/img/svg/octicon-location.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-lock.svg b/public/img/svg/octicon-lock.svg
new file mode 100644
index 000000000..25de262af
--- /dev/null
+++ b/public/img/svg/octicon-lock.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-logo-gist.svg b/public/img/svg/octicon-logo-gist.svg
new file mode 100644
index 000000000..24513be6e
--- /dev/null
+++ b/public/img/svg/octicon-logo-gist.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-logo-github.svg b/public/img/svg/octicon-logo-github.svg
new file mode 100644
index 000000000..10a17fb04
--- /dev/null
+++ b/public/img/svg/octicon-logo-github.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-mail-read.svg b/public/img/svg/octicon-mail-read.svg
new file mode 100644
index 000000000..2fdaac473
--- /dev/null
+++ b/public/img/svg/octicon-mail-read.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-mail.svg b/public/img/svg/octicon-mail.svg
new file mode 100644
index 000000000..3ddbff931
--- /dev/null
+++ b/public/img/svg/octicon-mail.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-mark-github.svg b/public/img/svg/octicon-mark-github.svg
new file mode 100644
index 000000000..bb1a4ec8e
--- /dev/null
+++ b/public/img/svg/octicon-mark-github.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-markdown.svg b/public/img/svg/octicon-markdown.svg
new file mode 100644
index 000000000..bce2e27b1
--- /dev/null
+++ b/public/img/svg/octicon-markdown.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-megaphone.svg b/public/img/svg/octicon-megaphone.svg
new file mode 100644
index 000000000..154debbfa
--- /dev/null
+++ b/public/img/svg/octicon-megaphone.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-mention.svg b/public/img/svg/octicon-mention.svg
new file mode 100644
index 000000000..a345c3b7f
--- /dev/null
+++ b/public/img/svg/octicon-mention.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-milestone.svg b/public/img/svg/octicon-milestone.svg
new file mode 100644
index 000000000..cf537dffd
--- /dev/null
+++ b/public/img/svg/octicon-milestone.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-mirror.svg b/public/img/svg/octicon-mirror.svg
new file mode 100644
index 000000000..2f6215dca
--- /dev/null
+++ b/public/img/svg/octicon-mirror.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-mortar-board.svg b/public/img/svg/octicon-mortar-board.svg
new file mode 100644
index 000000000..8f86ca38a
--- /dev/null
+++ b/public/img/svg/octicon-mortar-board.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-mute.svg b/public/img/svg/octicon-mute.svg
new file mode 100644
index 000000000..78d254c49
--- /dev/null
+++ b/public/img/svg/octicon-mute.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-no-newline.svg b/public/img/svg/octicon-no-newline.svg
new file mode 100644
index 000000000..47604ad6c
--- /dev/null
+++ b/public/img/svg/octicon-no-newline.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-north-star.svg b/public/img/svg/octicon-north-star.svg
new file mode 100644
index 000000000..a894bb573
--- /dev/null
+++ b/public/img/svg/octicon-north-star.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-note.svg b/public/img/svg/octicon-note.svg
new file mode 100644
index 000000000..d8a2d4b73
--- /dev/null
+++ b/public/img/svg/octicon-note.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-octoface.svg b/public/img/svg/octicon-octoface.svg
new file mode 100644
index 000000000..334550954
--- /dev/null
+++ b/public/img/svg/octicon-octoface.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-organization.svg b/public/img/svg/octicon-organization.svg
new file mode 100644
index 000000000..64fefe271
--- /dev/null
+++ b/public/img/svg/octicon-organization.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-package.svg b/public/img/svg/octicon-package.svg
new file mode 100644
index 000000000..292b9de3d
--- /dev/null
+++ b/public/img/svg/octicon-package.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-paintcan.svg b/public/img/svg/octicon-paintcan.svg
new file mode 100644
index 000000000..fb90f3acd
--- /dev/null
+++ b/public/img/svg/octicon-paintcan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-pencil.svg b/public/img/svg/octicon-pencil.svg
new file mode 100644
index 000000000..e52717148
--- /dev/null
+++ b/public/img/svg/octicon-pencil.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-person.svg b/public/img/svg/octicon-person.svg
new file mode 100644
index 000000000..b7cf33ae9
--- /dev/null
+++ b/public/img/svg/octicon-person.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-pin.svg b/public/img/svg/octicon-pin.svg
new file mode 100644
index 000000000..80efebcfd
--- /dev/null
+++ b/public/img/svg/octicon-pin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-play.svg b/public/img/svg/octicon-play.svg
new file mode 100644
index 000000000..57b4a987d
--- /dev/null
+++ b/public/img/svg/octicon-play.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-plug.svg b/public/img/svg/octicon-plug.svg
new file mode 100644
index 000000000..c5d1135ce
--- /dev/null
+++ b/public/img/svg/octicon-plug.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-plus-small.svg b/public/img/svg/octicon-plus-small.svg
new file mode 100644
index 000000000..d88b103ad
--- /dev/null
+++ b/public/img/svg/octicon-plus-small.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-plus.svg b/public/img/svg/octicon-plus.svg
new file mode 100644
index 000000000..b54dd04ff
--- /dev/null
+++ b/public/img/svg/octicon-plus.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-primitive-dot-stroke.svg b/public/img/svg/octicon-primitive-dot-stroke.svg
new file mode 100644
index 000000000..f12b062bd
--- /dev/null
+++ b/public/img/svg/octicon-primitive-dot-stroke.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-primitive-dot.svg b/public/img/svg/octicon-primitive-dot.svg
new file mode 100644
index 000000000..8f7b4288a
--- /dev/null
+++ b/public/img/svg/octicon-primitive-dot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-primitive-square.svg b/public/img/svg/octicon-primitive-square.svg
new file mode 100644
index 000000000..05a8f3381
--- /dev/null
+++ b/public/img/svg/octicon-primitive-square.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-project.svg b/public/img/svg/octicon-project.svg
new file mode 100644
index 000000000..a71e5fdb3
--- /dev/null
+++ b/public/img/svg/octicon-project.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-pulse.svg b/public/img/svg/octicon-pulse.svg
new file mode 100644
index 000000000..c9526a87c
--- /dev/null
+++ b/public/img/svg/octicon-pulse.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-question.svg b/public/img/svg/octicon-question.svg
new file mode 100644
index 000000000..ec92a013b
--- /dev/null
+++ b/public/img/svg/octicon-question.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-quote.svg b/public/img/svg/octicon-quote.svg
new file mode 100644
index 000000000..34d4f56ca
--- /dev/null
+++ b/public/img/svg/octicon-quote.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-radio-tower.svg b/public/img/svg/octicon-radio-tower.svg
new file mode 100644
index 000000000..cbb8d82d9
--- /dev/null
+++ b/public/img/svg/octicon-radio-tower.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-reply.svg b/public/img/svg/octicon-reply.svg
new file mode 100644
index 000000000..eecf15795
--- /dev/null
+++ b/public/img/svg/octicon-reply.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-repo-clone.svg b/public/img/svg/octicon-repo-clone.svg
new file mode 100644
index 000000000..2e551ffdd
--- /dev/null
+++ b/public/img/svg/octicon-repo-clone.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-repo-force-push.svg b/public/img/svg/octicon-repo-force-push.svg
new file mode 100644
index 000000000..7d69b2c24
--- /dev/null
+++ b/public/img/svg/octicon-repo-force-push.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-repo-forked.svg b/public/img/svg/octicon-repo-forked.svg
new file mode 100644
index 000000000..c9b14d1e7
--- /dev/null
+++ b/public/img/svg/octicon-repo-forked.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-repo-pull.svg b/public/img/svg/octicon-repo-pull.svg
new file mode 100644
index 000000000..e396a0a4c
--- /dev/null
+++ b/public/img/svg/octicon-repo-pull.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-repo-push.svg b/public/img/svg/octicon-repo-push.svg
new file mode 100644
index 000000000..453b2e09a
--- /dev/null
+++ b/public/img/svg/octicon-repo-push.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-repo-template-private.svg b/public/img/svg/octicon-repo-template-private.svg
new file mode 100644
index 000000000..88f5d26f9
--- /dev/null
+++ b/public/img/svg/octicon-repo-template-private.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-repo-template.svg b/public/img/svg/octicon-repo-template.svg
new file mode 100644
index 000000000..02e7d7401
--- /dev/null
+++ b/public/img/svg/octicon-repo-template.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-repo.svg b/public/img/svg/octicon-repo.svg
new file mode 100644
index 000000000..aadb21dbc
--- /dev/null
+++ b/public/img/svg/octicon-repo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-report.svg b/public/img/svg/octicon-report.svg
new file mode 100644
index 000000000..7ef26b699
--- /dev/null
+++ b/public/img/svg/octicon-report.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-request-changes.svg b/public/img/svg/octicon-request-changes.svg
new file mode 100644
index 000000000..3154c7059
--- /dev/null
+++ b/public/img/svg/octicon-request-changes.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-rocket.svg b/public/img/svg/octicon-rocket.svg
new file mode 100644
index 000000000..0275ea096
--- /dev/null
+++ b/public/img/svg/octicon-rocket.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-rss.svg b/public/img/svg/octicon-rss.svg
new file mode 100644
index 000000000..88c75d7de
--- /dev/null
+++ b/public/img/svg/octicon-rss.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-ruby.svg b/public/img/svg/octicon-ruby.svg
new file mode 100644
index 000000000..6bf321508
--- /dev/null
+++ b/public/img/svg/octicon-ruby.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-saved.svg b/public/img/svg/octicon-saved.svg
new file mode 100644
index 000000000..d53938516
--- /dev/null
+++ b/public/img/svg/octicon-saved.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-screen-full.svg b/public/img/svg/octicon-screen-full.svg
new file mode 100644
index 000000000..d954ff47b
--- /dev/null
+++ b/public/img/svg/octicon-screen-full.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-screen-normal.svg b/public/img/svg/octicon-screen-normal.svg
new file mode 100644
index 000000000..5646e32a1
--- /dev/null
+++ b/public/img/svg/octicon-screen-normal.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-search.svg b/public/img/svg/octicon-search.svg
new file mode 100644
index 000000000..b1ecf424c
--- /dev/null
+++ b/public/img/svg/octicon-search.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-server.svg b/public/img/svg/octicon-server.svg
new file mode 100644
index 000000000..d7e443e25
--- /dev/null
+++ b/public/img/svg/octicon-server.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-settings.svg b/public/img/svg/octicon-settings.svg
new file mode 100644
index 000000000..50116a6d6
--- /dev/null
+++ b/public/img/svg/octicon-settings.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-shield-check.svg b/public/img/svg/octicon-shield-check.svg
new file mode 100644
index 000000000..5e4176e6a
--- /dev/null
+++ b/public/img/svg/octicon-shield-check.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-shield-lock.svg b/public/img/svg/octicon-shield-lock.svg
new file mode 100644
index 000000000..9a712ba85
--- /dev/null
+++ b/public/img/svg/octicon-shield-lock.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-shield-x.svg b/public/img/svg/octicon-shield-x.svg
new file mode 100644
index 000000000..5b1a88996
--- /dev/null
+++ b/public/img/svg/octicon-shield-x.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-shield.svg b/public/img/svg/octicon-shield.svg
new file mode 100644
index 000000000..1f4a117b5
--- /dev/null
+++ b/public/img/svg/octicon-shield.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-sign-in.svg b/public/img/svg/octicon-sign-in.svg
new file mode 100644
index 000000000..ea5aeb478
--- /dev/null
+++ b/public/img/svg/octicon-sign-in.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-sign-out.svg b/public/img/svg/octicon-sign-out.svg
new file mode 100644
index 000000000..ea820897f
--- /dev/null
+++ b/public/img/svg/octicon-sign-out.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-skip.svg b/public/img/svg/octicon-skip.svg
new file mode 100644
index 000000000..167b1b44d
--- /dev/null
+++ b/public/img/svg/octicon-skip.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-smiley.svg b/public/img/svg/octicon-smiley.svg
new file mode 100644
index 000000000..f83328be0
--- /dev/null
+++ b/public/img/svg/octicon-smiley.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-squirrel.svg b/public/img/svg/octicon-squirrel.svg
new file mode 100644
index 000000000..7b7e6daa8
--- /dev/null
+++ b/public/img/svg/octicon-squirrel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-star.svg b/public/img/svg/octicon-star.svg
new file mode 100644
index 000000000..4960fa46a
--- /dev/null
+++ b/public/img/svg/octicon-star.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-stop.svg b/public/img/svg/octicon-stop.svg
new file mode 100644
index 000000000..1cd125116
--- /dev/null
+++ b/public/img/svg/octicon-stop.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-sync.svg b/public/img/svg/octicon-sync.svg
new file mode 100644
index 000000000..2364c1cac
--- /dev/null
+++ b/public/img/svg/octicon-sync.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-tag.svg b/public/img/svg/octicon-tag.svg
new file mode 100644
index 000000000..1b049e879
--- /dev/null
+++ b/public/img/svg/octicon-tag.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-tasklist.svg b/public/img/svg/octicon-tasklist.svg
new file mode 100644
index 000000000..67add4f69
--- /dev/null
+++ b/public/img/svg/octicon-tasklist.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-telescope.svg b/public/img/svg/octicon-telescope.svg
new file mode 100644
index 000000000..110d8f6c9
--- /dev/null
+++ b/public/img/svg/octicon-telescope.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-terminal.svg b/public/img/svg/octicon-terminal.svg
new file mode 100644
index 000000000..27e96cdbd
--- /dev/null
+++ b/public/img/svg/octicon-terminal.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-text-size.svg b/public/img/svg/octicon-text-size.svg
new file mode 100644
index 000000000..869545188
--- /dev/null
+++ b/public/img/svg/octicon-text-size.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-three-bars.svg b/public/img/svg/octicon-three-bars.svg
new file mode 100644
index 000000000..b8d95d09d
--- /dev/null
+++ b/public/img/svg/octicon-three-bars.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-thumbsdown.svg b/public/img/svg/octicon-thumbsdown.svg
new file mode 100644
index 000000000..b3f17365b
--- /dev/null
+++ b/public/img/svg/octicon-thumbsdown.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-thumbsup.svg b/public/img/svg/octicon-thumbsup.svg
new file mode 100644
index 000000000..1e9cdab3b
--- /dev/null
+++ b/public/img/svg/octicon-thumbsup.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-tools.svg b/public/img/svg/octicon-tools.svg
new file mode 100644
index 000000000..c090db390
--- /dev/null
+++ b/public/img/svg/octicon-tools.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-trashcan.svg b/public/img/svg/octicon-trashcan.svg
new file mode 100644
index 000000000..9fe3daa4c
--- /dev/null
+++ b/public/img/svg/octicon-trashcan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-triangle-down.svg b/public/img/svg/octicon-triangle-down.svg
new file mode 100644
index 000000000..02ac0dc1b
--- /dev/null
+++ b/public/img/svg/octicon-triangle-down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-triangle-left.svg b/public/img/svg/octicon-triangle-left.svg
new file mode 100644
index 000000000..fcec33a85
--- /dev/null
+++ b/public/img/svg/octicon-triangle-left.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-triangle-right.svg b/public/img/svg/octicon-triangle-right.svg
new file mode 100644
index 000000000..9474d577c
--- /dev/null
+++ b/public/img/svg/octicon-triangle-right.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-triangle-up.svg b/public/img/svg/octicon-triangle-up.svg
new file mode 100644
index 000000000..5b5db294c
--- /dev/null
+++ b/public/img/svg/octicon-triangle-up.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-unfold.svg b/public/img/svg/octicon-unfold.svg
new file mode 100644
index 000000000..4951b09dc
--- /dev/null
+++ b/public/img/svg/octicon-unfold.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-unmute.svg b/public/img/svg/octicon-unmute.svg
new file mode 100644
index 000000000..14b6964e1
--- /dev/null
+++ b/public/img/svg/octicon-unmute.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-unsaved.svg b/public/img/svg/octicon-unsaved.svg
new file mode 100644
index 000000000..9a52e2a64
--- /dev/null
+++ b/public/img/svg/octicon-unsaved.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-unverified.svg b/public/img/svg/octicon-unverified.svg
new file mode 100644
index 000000000..262e9c47d
--- /dev/null
+++ b/public/img/svg/octicon-unverified.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-verified.svg b/public/img/svg/octicon-verified.svg
new file mode 100644
index 000000000..4b7110d64
--- /dev/null
+++ b/public/img/svg/octicon-verified.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-versions.svg b/public/img/svg/octicon-versions.svg
new file mode 100644
index 000000000..46ac011c1
--- /dev/null
+++ b/public/img/svg/octicon-versions.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-watch.svg b/public/img/svg/octicon-watch.svg
new file mode 100644
index 000000000..9eda11f40
--- /dev/null
+++ b/public/img/svg/octicon-watch.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-workflow-all.svg b/public/img/svg/octicon-workflow-all.svg
new file mode 100644
index 000000000..2546c3abe
--- /dev/null
+++ b/public/img/svg/octicon-workflow-all.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-workflow.svg b/public/img/svg/octicon-workflow.svg
new file mode 100644
index 000000000..63282c029
--- /dev/null
+++ b/public/img/svg/octicon-workflow.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-x.svg b/public/img/svg/octicon-x.svg
new file mode 100644
index 000000000..85e7ed7a2
--- /dev/null
+++ b/public/img/svg/octicon-x.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/img/svg/octicon-zap.svg b/public/img/svg/octicon-zap.svg
new file mode 100644
index 000000000..febcccf6c
--- /dev/null
+++ b/public/img/svg/octicon-zap.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/routers/init.go b/routers/init.go
index 964da6ced..c842b5d38 100644
--- a/routers/init.go
+++ b/routers/init.go
@@ -28,6 +28,7 @@ import (
"code.gitea.io/gitea/modules/options"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/ssh"
+ "code.gitea.io/gitea/modules/svg"
"code.gitea.io/gitea/modules/task"
"code.gitea.io/gitea/modules/webhook"
"code.gitea.io/gitea/services/mailer"
@@ -178,4 +179,6 @@ func GlobalInit(ctx context.Context) {
if setting.InstallLock {
sso.Init()
}
+
+ svg.Init()
}
diff --git a/web_src/js/features/contextpopup.js b/web_src/js/features/contextpopup.js
index 377a6a8f5..2597c1801 100644
--- a/web_src/js/features/contextpopup.js
+++ b/web_src/js/features/contextpopup.js
@@ -1,4 +1,4 @@
-import {svg} from '../utils.js';
+import {svg} from '../svg.js';
const {AppSubUrl} = window.config;
diff --git a/web_src/js/index.js b/web_src/js/index.js
index 15ca32cfd..8064e5950 100644
--- a/web_src/js/index.js
+++ b/web_src/js/index.js
@@ -3555,12 +3555,3 @@ window.onOAuthLoginClick = function () {
oauthNav.show();
}, 5000);
};
-
-// Pull SVGs via AJAX to workaround CORS issues with