summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Olheiser <42128690+jolheiser@users.noreply.github.com>2020-02-11 11:02:41 -0600
committerGitHub <noreply@github.com>2020-02-11 12:02:41 -0500
commit86fdba177ad82f3dcdfc237631fef4588042b9d6 (patch)
tree9ee1c1f97a158436e36828d1072fa84fac222317
parente704f7fae7b212902ddd2859d8f88350630b4086 (diff)
downloadgitea-86fdba177ad82f3dcdfc237631fef4588042b9d6.tar.gz
gitea-86fdba177ad82f3dcdfc237631fef4588042b9d6.zip
Add Octicon SVG spritemap (#10107)
* Add octicon SVG sprite Signed-off-by: jolheiser <john.olheiser@gmail.com> * Static prefix Signed-off-by: jolheiser <john.olheiser@gmail.com> * SVG for all repo icons Signed-off-by: jolheiser <john.olheiser@gmail.com> * make vendor Signed-off-by: jolheiser <john.olheiser@gmail.com> * Swap out octicons Signed-off-by: jolheiser <john.olheiser@gmail.com> * Move octicons to top of less imports Signed-off-by: jolheiser <john.olheiser@gmail.com> * Fix JS Signed-off-by: jolheiser <john.olheiser@gmail.com> * Definitely not a search/replace Signed-off-by: jolheiser <john.olheiser@gmail.com> * Missed regex Signed-off-by: jolheiser <john.olheiser@gmail.com> * Move to more generic calls and webpack Signed-off-by: jolheiser <john.olheiser@gmail.com> * make svg -> make webpack Signed-off-by: jolheiser <john.olheiser@gmail.com> * Remove svg-sprite Signed-off-by: jolheiser <john.olheiser@gmail.com> * Update tests Signed-off-by: jolheiser <john.olheiser@gmail.com> * Missed a test Signed-off-by: jolheiser <john.olheiser@gmail.com> * Remove svg from makefile Signed-off-by: jolheiser <john.olheiser@gmail.com> * Suggestions Signed-off-by: jolheiser <john.olheiser@gmail.com> * Attempt to fix test Signed-off-by: jolheiser <john.olheiser@gmail.com> * Update tests Signed-off-by: jolheiser <john.olheiser@gmail.com> * Revert timetracking test Signed-off-by: jolheiser <john.olheiser@gmail.com> * Swap .octicon for .svg in less Signed-off-by: jolheiser <john.olheiser@gmail.com> * Add aria-hidden Signed-off-by: jolheiser <john.olheiser@gmail.com> * Replace mega-octicon Signed-off-by: jolheiser <john.olheiser@gmail.com> * Fix webpack globbing on Windows Signed-off-by: jolheiser <john.olheiser@gmail.com> * Revert Co-Authored-By: silverwind <me@silverwind.io> * Fix octions from upstream Signed-off-by: jolheiser <john.olheiser@gmail.com> * Fix Vue and missed JS function Signed-off-by: jolheiser <john.olheiser@gmail.com> * Add JS helper and PWA Signed-off-by: jolheiser <john.olheiser@gmail.com> * Preload SVG Signed-off-by: jolheiser <john.olheiser@gmail.com> Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: techknowlogick <matti@mdranta.net>
-rw-r--r--.gitignore1
-rw-r--r--go.mod2
-rw-r--r--go.sum4
-rw-r--r--integrations/repo_test.go12
-rw-r--r--modules/base/tool.go2
-rw-r--r--modules/templates/helper.go3
-rw-r--r--package-lock.json632
-rw-r--r--package.json4
-rw-r--r--public/vendor/assets/octicons/LICENSE21
-rw-r--r--public/vendor/assets/octicons/octicons.eotbin44098 -> 0 bytes
-rw-r--r--public/vendor/assets/octicons/octicons.min.css1
-rw-r--r--public/vendor/assets/octicons/octicons.svg429
-rw-r--r--public/vendor/assets/octicons/octicons.ttfbin43920 -> 0 bytes
-rw-r--r--public/vendor/assets/octicons/octicons.woffbin24004 -> 0 bytes
-rw-r--r--public/vendor/assets/octicons/octicons.woff2bin20248 -> 0 bytes
-rw-r--r--templates/admin/org/list.tmpl2
-rw-r--r--templates/admin/repo/list.tmpl2
-rw-r--r--templates/base/head.tmpl4
-rw-r--r--templates/base/head_navbar.tmpl28
-rw-r--r--templates/explore/navbar.tmpl8
-rw-r--r--templates/explore/organizations.tmpl18
-rw-r--r--templates/explore/repo_list.tmpl12
-rw-r--r--templates/explore/users.tmpl16
-rw-r--r--templates/home.tmpl8
-rw-r--r--templates/org/header.tmpl4
-rw-r--r--templates/org/home.tmpl12
-rw-r--r--templates/org/member/members.tmpl10
-rw-r--r--templates/org/settings/delete.tmpl2
-rw-r--r--templates/org/team/navbar.tmpl6
-rw-r--r--templates/org/team/repositories.tmpl10
-rw-r--r--templates/org/team/sidebar.tmpl2
-rw-r--r--templates/org/team/teams.tmpl2
-rw-r--r--templates/pwa/serviceworker_js.tmpl3
-rw-r--r--templates/repo/activity.tmpl20
-rw-r--r--templates/repo/blame.tmpl8
-rw-r--r--templates/repo/branch/list.tmpl26
-rw-r--r--templates/repo/branch_dropdown.tmpl6
-rw-r--r--templates/repo/commit_page.tmpl2
-rw-r--r--templates/repo/commits.tmpl2
-rw-r--r--templates/repo/commits_table.tmpl4
-rw-r--r--templates/repo/diff/blob_excerpt.tmpl6
-rw-r--r--templates/repo/diff/box.tmpl2
-rw-r--r--templates/repo/diff/comment_form.tmpl2
-rw-r--r--templates/repo/diff/compare.tmpl2
-rw-r--r--templates/repo/diff/section_unified.tmpl2
-rw-r--r--templates/repo/editor/commit_form.tmpl6
-rw-r--r--templates/repo/editor/edit.tmpl8
-rw-r--r--templates/repo/editor/upload.tmpl2
-rw-r--r--templates/repo/empty.tmpl2
-rw-r--r--templates/repo/header.tmpl57
-rw-r--r--templates/repo/home.tmpl6
-rw-r--r--templates/repo/issue/branch_selector_field.tmpl4
-rw-r--r--templates/repo/issue/labels.tmpl8
-rw-r--r--templates/repo/issue/list.tmpl26
-rw-r--r--templates/repo/issue/milestone_issues.tmpl30
-rw-r--r--templates/repo/issue/milestones.tmpl24
-rw-r--r--templates/repo/issue/new_form.tmpl14
-rw-r--r--templates/repo/issue/view_content/add_reaction.tmpl4
-rw-r--r--templates/repo/issue/view_content/attachments.tmpl2
-rw-r--r--templates/repo/issue/view_content/comments.tmpl64
-rw-r--r--templates/repo/issue/view_content/pull.tmpl46
-rw-r--r--templates/repo/issue/view_content/sidebar.tmpl32
-rw-r--r--templates/repo/issue/view_title.tmpl10
-rw-r--r--templates/repo/pulls/tab_menu.tmpl6
-rw-r--r--templates/repo/release/list.tmpl12
-rw-r--r--templates/repo/release/new.tmpl2
-rw-r--r--templates/repo/settings/collaboration.tmpl4
-rw-r--r--templates/repo/settings/deploy_keys.tmpl4
-rw-r--r--templates/repo/settings/githooks.tmpl2
-rw-r--r--templates/repo/settings/lfs.tmpl6
-rw-r--r--templates/repo/settings/lfs_file_find.tmpl4
-rw-r--r--templates/repo/settings/lfs_locks.tmpl8
-rw-r--r--templates/repo/settings/protected_branch.tmpl6
-rw-r--r--templates/repo/settings/webhook/history.tmpl4
-rw-r--r--templates/repo/settings/webhook/list.tmpl6
-rw-r--r--templates/repo/sub_menu.tmpl6
-rw-r--r--templates/repo/user_cards.tmpl6
-rw-r--r--templates/repo/view_file.tmpl8
-rw-r--r--templates/repo/view_list.tmpl8
-rw-r--r--templates/repo/wiki/pages.tmpl2
-rw-r--r--templates/repo/wiki/revision.tmpl2
-rw-r--r--templates/repo/wiki/start.tmpl2
-rw-r--r--templates/repo/wiki/view.tmpl2
-rw-r--r--templates/user/dashboard/dashboard.tmpl8
-rw-r--r--templates/user/dashboard/feeds.tmpl2
-rw-r--r--templates/user/dashboard/issues.tmpl18
-rw-r--r--templates/user/dashboard/milestones.tmpl24
-rw-r--r--templates/user/dashboard/navbar.tmpl10
-rw-r--r--templates/user/notification/notification.tmpl20
-rw-r--r--templates/user/profile.tmpl24
-rw-r--r--templates/user/settings/account.tmpl2
-rw-r--r--templates/user/settings/applications.tmpl2
-rw-r--r--templates/user/settings/keys_gpg.tmpl2
-rw-r--r--templates/user/settings/keys_ssh.tmpl4
-rw-r--r--templates/user/settings/repos.tmpl106
-rw-r--r--vendor/golang.org/x/net/html/const.go1
-rw-r--r--vendor/golang.org/x/net/html/foreign.go1
-rw-r--r--vendor/golang.org/x/net/html/parse.go298
-rw-r--r--vendor/golang.org/x/net/html/render.go31
-rw-r--r--vendor/golang.org/x/net/html/token.go3
-rw-r--r--vendor/modules.txt2
-rw-r--r--web_src/js/index.js27
-rw-r--r--web_src/less/_base.less20
-rw-r--r--web_src/less/_dashboard.less2
-rw-r--r--web_src/less/_explore.less4
-rw-r--r--web_src/less/_home.less5
-rw-r--r--web_src/less/_repository.less50
-rw-r--r--web_src/less/_svg.less9
-rw-r--r--web_src/less/_user.less4
-rw-r--r--web_src/less/index.less1
-rw-r--r--web_src/less/themes/theme-arc-green.less8
-rw-r--r--webpack.config.js34
112 files changed, 1387 insertions, 1122 deletions
diff --git a/.gitignore b/.gitignore
index 0a1d2e3b23..f223edabff 100644
--- a/.gitignore
+++ b/.gitignore
@@ -73,6 +73,7 @@ coverage.all
/public/js
/public/css
/public/fomantic
+/public/img/svg
# Snapcraft
snap/.snapcraft/
diff --git a/go.mod b/go.mod
index f28b199f0d..b3e8db7785 100644
--- a/go.mod
+++ b/go.mod
@@ -99,7 +99,7 @@ require (
github.com/yuin/goldmark v1.1.19
go.etcd.io/bbolt v1.3.3 // indirect
golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876
- golang.org/x/net v0.0.0-20191101175033-0deb6923b6d9
+ golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45
golang.org/x/sys v0.0.0-20191127021746-63cb32ae39b2
golang.org/x/text v0.3.2
diff --git a/go.sum b/go.sum
index 30109a24e4..81150c0fd1 100644
--- a/go.sum
+++ b/go.sum
@@ -627,8 +627,8 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20191101175033-0deb6923b6d9 h1:DPz9iiH3YoKiKhX/ijjoZvT0VFwK2c6CWYWQ7Zyr8TU=
-golang.org/x/net v0.0.0-20191101175033-0deb6923b6d9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa h1:F+8P+gmewFQYRk6JoLQLwjBCTu3mcIURZfNkVweuRKA=
+golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/oauth2 v0.0.0-20180620175406-ef147856a6dd/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
diff --git a/integrations/repo_test.go b/integrations/repo_test.go
index d2e02dd37f..485b77c00f 100644
--- a/integrations/repo_test.go
+++ b/integrations/repo_test.go
@@ -149,16 +149,16 @@ func TestViewRepoWithSymlinks(t *testing.T) {
htmlDoc := NewHTMLParser(t, resp.Body)
files := htmlDoc.doc.Find("#repo-files-table > TBODY > TR > TD.name > SPAN")
items := files.Map(func(i int, s *goquery.Selection) string {
- cls, _ := s.Find("SPAN").Attr("class")
+ cls, _ := s.Find("SVG").Attr("class")
file := strings.Trim(s.Find("A").Text(), " \t\n")
return fmt.Sprintf("%s: %s", file, cls)
})
assert.Equal(t, len(items), 5)
- assert.Equal(t, items[0], "a: octicon octicon-file-directory")
- assert.Equal(t, items[1], "link_b: octicon octicon-file-symlink-directory")
- assert.Equal(t, items[2], "link_d: octicon octicon-file-symlink-file")
- assert.Equal(t, items[3], "link_hi: octicon octicon-file-symlink-file")
- assert.Equal(t, items[4], "link_link: octicon octicon-file-symlink-file")
+ assert.Equal(t, items[0], "a: svg octicon-file-directory")
+ assert.Equal(t, items[1], "link_b: svg octicon-file-symlink-directory")
+ assert.Equal(t, items[2], "link_d: svg octicon-file-symlink-file")
+ assert.Equal(t, items[3], "link_hi: svg octicon-file-symlink-file")
+ assert.Equal(t, items[4], "link_link: svg octicon-file-symlink-file")
}
// TestViewAsRepoAdmin tests PR #2167
diff --git a/modules/base/tool.go b/modules/base/tool.go
index aaa6e3ffb3..cb9b996142 100644
--- a/modules/base/tool.go
+++ b/modules/base/tool.go
@@ -389,7 +389,7 @@ func EntryIcon(entry *git.TreeEntry) string {
return "file-submodule"
}
- return "file-text"
+ return "file"
}
// SetupGiteaRoot Sets GITEA_ROOT if it is not already set and returns the value
diff --git a/modules/templates/helper.go b/modules/templates/helper.go
index 741161eb8b..30ca9c1638 100644
--- a/modules/templates/helper.go
+++ b/modules/templates/helper.go
@@ -286,6 +286,9 @@ func NewFuncMap() []template.FuncMap {
}
return false
},
+ "svg": func(icon string, size int) template.HTML {
+ return template.HTML(fmt.Sprintf(`<svg class="svg %s" width="%d" height="%d" aria-hidden="true"><use xlink:href="%s/img/svg/icons.svg#%s" /></svg>`, icon, size, size, setting.StaticURLPrefix, icon))
+ },
}}
}
diff --git a/package-lock.json b/package-lock.json
index e00bae199c..3ca1b0629e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1112,6 +1112,14 @@
"@types/node": ">= 8"
}
},
+ "@primer/octicons": {
+ "version": "9.4.0",
+ "resolved": "https://registry.npmjs.org/@primer/octicons/-/octicons-9.4.0.tgz",
+ "integrity": "sha512-7tAWOTt3Ay3Vkf9XwietC40TV1pxk5PS2DAODsOPnMfMd9Yzm2tfvHu0Q3dcffxGZxu7n5ZM6MFWbr/+4dqSdA==",
+ "requires": {
+ "object-assign": "^4.1.1"
+ }
+ },
"@types/color-name": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
@@ -2440,6 +2448,16 @@
"integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
"dev": true
},
+ "camel-case": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
+ "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
+ "dev": true,
+ "requires": {
+ "no-case": "^2.2.0",
+ "upper-case": "^1.1.1"
+ }
+ },
"camelcase": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
@@ -3255,15 +3273,27 @@
}
},
"css-select": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
- "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
+ "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
"dev": true,
"requires": {
- "boolbase": "^1.0.0",
- "css-what": "^3.2.1",
- "domutils": "^1.7.0",
- "nth-check": "^1.0.2"
+ "boolbase": "~1.0.0",
+ "css-what": "2.1",
+ "domutils": "1.5.1",
+ "nth-check": "~1.0.1"
+ },
+ "dependencies": {
+ "domutils": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
+ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "0",
+ "domelementtype": "1"
+ }
+ }
}
},
"css-select-base-adapter": {
@@ -3297,9 +3327,9 @@
"dev": true
},
"css-what": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz",
- "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz",
+ "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==",
"dev": true
},
"css.escape": {
@@ -3679,6 +3709,15 @@
"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==",
+ "dev": true,
+ "requires": {
+ "utila": "~0.4"
+ }
+ },
"dom-serializer": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
@@ -3723,6 +3762,12 @@
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.0.8.tgz",
"integrity": "sha512-vIOSyOXkMx81ghEalh4MLBtDHMx1bhKlaqHDMqM2yeitJ996SLOk5mGdDpI9ifJAgokred8Rmu219fX4OltqXw=="
},
+ "domready": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/domready/-/domready-1.0.8.tgz",
+ "integrity": "sha1-kfJS5Ze2Wvd+dFriTdAYXV4m1Yw=",
+ "dev": true
+ },
"domutils": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
@@ -7075,12 +7120,110 @@
"integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==",
"dev": true
},
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
"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=",
+ "dev": true,
+ "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==",
+ "dev": true
+ },
+ "json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
+ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "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",
@@ -7231,8 +7374,7 @@
"image-size": {
"version": "0.5.5",
"resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
- "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
- "optional": true
+ "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w="
},
"immutable": {
"version": "3.8.2",
@@ -7959,6 +8101,12 @@
"jquery": ">=1.4.2"
}
},
+ "js-base64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz",
+ "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==",
+ "dev": true
+ },
"js-beautify": {
"version": "1.10.3",
"resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.10.3.tgz",
@@ -8576,6 +8724,12 @@
"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=",
+ "dev": true
+ },
"lru-cache": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
@@ -8949,6 +9103,15 @@
}
}
},
+ "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==",
+ "dev": true,
+ "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",
@@ -9211,6 +9374,12 @@
"through2": "^2.0.0"
}
},
+ "mitt": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.1.2.tgz",
+ "integrity": "sha1-OA5hSA1qYVtmDwertg1R4KTkvtY=",
+ "dev": true
+ },
"mixin-deep": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
@@ -9341,6 +9510,15 @@
"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==",
+ "dev": true,
+ "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",
@@ -9832,6 +10010,15 @@
"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=",
+ "dev": true,
+ "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",
@@ -10973,6 +11160,15 @@
"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==",
+ "dev": true,
+ "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",
@@ -11258,6 +11454,64 @@
"uniq": "^1.0.1"
}
},
+ "posthtml": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.9.2.tgz",
+ "integrity": "sha1-9MBtufZ7Yf0XxOJW5+PZUVv3Jv0=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "posthtml-rename-id": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/posthtml-rename-id/-/posthtml-rename-id-1.0.11.tgz",
+ "integrity": "sha512-8doF8+w+WJT4AZuLVC0feA8Yy7g00IUmZw3YDKn8CKx0uC8FLbCH7JaGMbDOE1ArjyZsJMt1vmyP+IZ8SnNmXw==",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "1.0.5"
+ }
+ },
+ "posthtml-render": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.1.5.tgz",
+ "integrity": "sha512-yvt54j0zCBHQVEFAuR+yHld8CZrCa/E1Z/OcFNCV1IEWTLVxT8O7nYnM4IIw1CD4r8kaRd3lc42+0lgCKgm87w==",
+ "dev": true
+ },
+ "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==",
+ "dev": true,
+ "requires": {
+ "merge-options": "1.0.1",
+ "posthtml": "^0.9.2",
+ "posthtml-parser": "^0.2.1",
+ "posthtml-render": "^1.0.6"
+ }
+ },
"prelude-ls": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
@@ -11276,6 +11530,16 @@
"integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
"dev": true
},
+ "pretty-error": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz",
+ "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=",
+ "dev": true,
+ "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",
@@ -11764,6 +12028,12 @@
}
}
},
+ "relateurl": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
+ "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
+ "dev": true
+ },
"remark": {
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/remark/-/remark-10.0.1.tgz",
@@ -11853,6 +12123,36 @@
"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==",
+ "dev": true,
+ "requires": {
+ "css-select": "^1.1.0",
+ "dom-converter": "^0.2",
+ "htmlparser2": "^3.3.0",
+ "strip-ansi": "^3.0.0",
+ "utila": "^0.4.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ }
+ }
+ },
"repeat-element": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
@@ -13273,6 +13573,253 @@
"es6-symbol": "^3.1.1"
}
},
+ "svg-baker": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/svg-baker/-/svg-baker-1.5.0.tgz",
+ "integrity": "sha512-UMU4WQMfsmY1l8eqoxBoGTDht02RVu46cC0QoAVsJM6lUvbGCkPnAHHMG3mM8m/D1zAGg8Q0IZXnHokZ9umX0Q==",
+ "dev": true,
+ "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": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true
+ }
+ }
+ },
+ "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==",
+ "dev": true,
+ "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==",
+ "dev": true
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "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==",
+ "dev": true
+ }
+ }
+ },
+ "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==",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.0.tgz",
+ "integrity": "sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.3",
+ "js-base64": "^2.1.9",
+ "source-map": "^0.5.6",
+ "supports-color": "^3.2.3"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "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=",
+ "dev": true
+ }
+ }
+ },
+ "has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+ "dev": true,
+ "requires": {
+ "has-flag": "^1.0.0"
+ }
+ }
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "svg-baker-runtime": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/svg-baker-runtime/-/svg-baker-runtime-1.4.3.tgz",
+ "integrity": "sha512-QY6RlJN3v6xPxVQboSrsGiLWaWay+uFstic6QEzoIUK2l6M/lqL/wiqFcoqroBsGpqpP0knXplltLZGTzncbNw==",
+ "dev": true,
+ "requires": {
+ "deepmerge": "1.3.2",
+ "mitt": "1.1.2",
+ "svg-baker": "^1.5.0"
+ },
+ "dependencies": {
+ "deepmerge": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.3.2.tgz",
+ "integrity": "sha1-FmNpFinU2/42T6EqKk8KqGqjoFA=",
+ "dev": true
+ }
+ }
+ },
+ "svg-sprite-loader": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/svg-sprite-loader/-/svg-sprite-loader-4.2.1.tgz",
+ "integrity": "sha512-IQCJEHWD+CNP8yFptR2SkscLXBgwYwY+34VMNSLBE4RQmJ0dgpAfkF6q8ktgNsXlMhlX6cAM4Zw0t7SnLyyiQA==",
+ "dev": true,
+ "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.3",
+ "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=",
+ "dev": true
+ }
+ }
+ },
"svg-tags": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
@@ -13320,6 +13867,24 @@
"supports-color": "^5.3.0"
}
},
+ "css-select": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
+ "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
+ "dev": true,
+ "requires": {
+ "boolbase": "^1.0.0",
+ "css-what": "^3.2.1",
+ "domutils": "^1.7.0",
+ "nth-check": "^1.0.2"
+ }
+ },
+ "css-what": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz",
+ "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==",
+ "dev": true
+ },
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -13331,6 +13896,16 @@
}
}
},
+ "svgo-loader": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/svgo-loader/-/svgo-loader-2.2.1.tgz",
+ "integrity": "sha512-9dyz/h6ae04pAVRz7QY8bLXtMbwA19NPpCPfCixgW0qXNDCOlHbDRqvtT5/2gzRxfuibWCUP6ZBQmZWF9rjWhQ==",
+ "dev": true,
+ "requires": {
+ "js-yaml": "^3.13.1",
+ "loader-utils": "^1.0.3"
+ }
+ },
"swagger-client": {
"version": "3.10.0",
"resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.10.0.tgz",
@@ -13761,6 +14336,12 @@
"through2": "^2.0.3"
}
},
+ "toposort": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz",
+ "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=",
+ "dev": true
+ },
"tough-cookie": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
@@ -13981,6 +14562,12 @@
"integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==",
"dev": true
},
+ "unidecode": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/unidecode/-/unidecode-0.1.8.tgz",
+ "integrity": "sha1-77swFTi8RSRqmsjFWdcvAVMFBT4=",
+ "dev": true
+ },
"unified": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/unified/-/unified-7.1.0.tgz",
@@ -14324,6 +14911,12 @@
}
}
},
+ "upper-case": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
+ "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
+ "dev": true
+ },
"uri-js": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
@@ -14370,6 +14963,15 @@
"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=",
+ "dev": true,
+ "requires": {
+ "unidecode": "0.1.8"
+ }
+ },
"use": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
@@ -14419,6 +15021,12 @@
"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=",
+ "dev": true
+ },
"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 cfae51b567..7f30cb9c24 100644
--- a/package.json
+++ b/package.json
@@ -5,6 +5,7 @@
"node": ">=10"
},
"dependencies": {
+ "@primer/octicons": "9.4.0",
"clipboard": "2.0.4",
"fomantic-ui": "2.8.3",
"highlight.js": "9.18.1",
@@ -36,6 +37,9 @@
"postcss-safe-parser": "4.0.1",
"stylelint": "13.0.0",
"stylelint-config-standard": "19.0.0",
+ "svg-sprite-loader": "4.2.1",
+ "svgo": "1.3.2",
+ "svgo-loader": "2.2.1",
"terser-webpack-plugin": "2.3.4",
"updates": "9.3.3",
"vue-loader": "15.8.3",
diff --git a/public/vendor/assets/octicons/LICENSE b/public/vendor/assets/octicons/LICENSE
deleted file mode 100644
index 4cf2020ce7..0000000000
--- a/public/vendor/assets/octicons/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2012-2016 GitHub, Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/public/vendor/assets/octicons/octicons.eot b/public/vendor/assets/octicons/octicons.eot
deleted file mode 100644
index b4c7a989ae..0000000000
--- a/public/vendor/assets/octicons/octicons.eot
+++ /dev/null
Binary files differ
diff --git a/public/vendor/assets/octicons/octicons.min.css b/public/vendor/assets/octicons/octicons.min.css
deleted file mode 100644
index a000669c94..0000000000
--- a/public/vendor/assets/octicons/octicons.min.css
+++ /dev/null
@@ -1 +0,0 @@
-@font-face{font-family:Octicons;src:url(octicons.eot?ef21c39f0ca9b1b5116e5eb7ac5eabe6);src:url(octicons.eot?#iefix) format("embedded-opentype"),url(octicons.woff2?ef21c39f0ca9b1b5116e5eb7ac5eabe6) format("woff2"),url(octicons.woff?ef21c39f0ca9b1b5116e5eb7ac5eabe6) format("woff"),url(octicons.ttf?ef21c39f0ca9b1b5116e5eb7ac5eabe6) format("truetype"),url(octicons.svg?ef21c39f0ca9b1b5116e5eb7ac5eabe6#octicons) format("svg");font-weight:400;font-style:normal}.mega-octicon,.octicon{font:normal normal normal 16px/1 Octicons;display:inline-block;text-decoration:none;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-user-select:none;-ms-user-select:none;user-select:none;speak:none}.mega-octicon{font-size:32px}.octicon-alert:before{content:"\f02d"}.octicon-arrow-down:before{content:"\f03f"}.octicon-arrow-left:before{content:"\f040"}.octicon-arrow-right:before{content:"\f03e"}.octicon-arrow-small-down:before{content:"\f0a0"}.octicon-arrow-small-left:before{content:"\f0a1"}.octicon-arrow-small-right:before{content:"\f071"}.octicon-arrow-small-up:before{content:"\f09f"}.octicon-arrow-up:before{content:"\f03d"}.octicon-beaker:before{content:"\f0dd"}.octicon-bell:before{content:"\f0de"}.octicon-bold:before{content:"\f0e2"}.octicon-book:before{content:"\f007"}.octicon-bookmark:before{content:"\f07b"}.octicon-briefcase:before{content:"\f0d3"}.octicon-broadcast:before{content:"\f048"}.octicon-browser:before{content:"\f0c5"}.octicon-bug:before{content:"\f091"}.octicon-calendar:before{content:"\f068"}.octicon-check:before{content:"\f03a"}.octicon-checklist:before{content:"\f076"}.octicon-chevron-down:before{content:"\f0a3"}.octicon-chevron-left:before{content:"\f0a4"}.octicon-chevron-right:before{content:"\f078"}.octicon-chevron-up:before{content:"\f0a2"}.octicon-circle-slash:before{content:"\f084"}.octicon-circuit-board:before{content:"\f0d6"}.octicon-clippy:before{content:"\f035"}.octicon-clock:before{content:"\f046"}.octicon-cloud-download:before{content:"\f00b"}.octicon-cloud-upload:before{content:"\f00c"}.octicon-code:before{content:"\f05f"}.octicon-comment-discussion:before{content:"\f04f"}.octicon-comment:before{content:"\f02b"}.octicon-credit-card:before{content:"\f045"}.octicon-dash:before{content:"\f0ca"}.octicon-dashboard:before{content:"\f07d"}.octicon-database:before{content:"\f096"}.octicon-desktop-download:before{content:"\f0dc"}.octicon-device-camera-video:before{content:"\f057"}.octicon-device-camera:before{content:"\f056"}.octicon-device-desktop:before{content:"\f27c"}.octicon-device-mobile:before{content:"\f038"}.octicon-diff-added:before{content:"\f06b"}.octicon-diff-ignored:before{content:"\f099"}.octicon-diff-modified:before{content:"\f06d"}.octicon-diff-removed:before{content:"\f06c"}.octicon-diff-renamed:before{content:"\f06e"}.octicon-diff:before{content:"\f04d"}.octicon-ellipses:before{content:"\f101"}.octicon-ellipsis:before{content:"\f09a"}.octicon-eye:before{content:"\f04e"}.octicon-file-binary:before{content:"\f094"}.octicon-file-code:before{content:"\f010"}.octicon-file-directory:before{content:"\f016"}.octicon-file-media:before{content:"\f012"}.octicon-file-pdf:before{content:"\f014"}.octicon-file-submodule:before{content:"\f017"}.octicon-file-symlink-directory:before{content:"\f0b1"}.octicon-file-symlink-file:before{content:"\f0b0"}.octicon-file-text:before{content:"\f011"}.octicon-file-zip:before{content:"\f013"}.octicon-file:before{content:"\f102"}.octicon-flame:before{content:"\f0d2"}.octicon-fold:before{content:"\f0cc"}.octicon-gear:before{content:"\f02f"}.octicon-gift:before{content:"\f042"}.octicon-gist-secret:before{content:"\f08c"}.octicon-gist:before{content:"\f00e"}.octicon-git-branch:before{content:"\f020"}.octicon-git-commit:before{content:"\f01f"}.octicon-git-compare:before{content:"\f0ac"}.octicon-git-merge:before{content:"\f023"}.octicon-git-pull-request:before{content:"\f009"}.octicon-globe:before{content:"\f0b6"}.octicon-grabber:before{content:"\f103"}.octicon-graph:before{content:"\f043"}.octicon-heart:before{content:"\2665"}.octicon-history:before{content:"\f07e"}.octicon-home:before{content:"\f08d"}.octicon-horizontal-rule:before{content:"\f070"}.octicon-hubot:before{content:"\f09d"}.octicon-inbox:before{content:"\f0cf"}.octicon-info:before{content:"\f059"}.octicon-issue-closed:before{content:"\f028"}.octicon-issue-opened:before{content:"\f026"}.octicon-issue-reopened:before{content:"\f027"}.octicon-italic:before{content:"\f0e4"}.octicon-jersey:before{content:"\f019"}.octicon-key:before{content:"\f049"}.octicon-keyboard:before{content:"\f00d"}.octicon-law:before{content:"\f0d8"}.octicon-light-bulb:before{content:"\f000"}.octicon-link-external:before{content:"\f07f"}.octicon-link:before{content:"\f05c"}.octicon-list-ordered:before{content:"\f062"}.octicon-list-unordered:before{content:"\f061"}.octicon-location:before{content:"\f060"}.octicon-lock:before{content:"\f06a"}.octicon-logo-gist:before{content:"\f0ad"}.octicon-logo-github:before{content:"\f092"}.octicon-mail-read:before{content:"\f03c"}.octicon-mail-reply:before{content:"\f051"}.octicon-mail:before{content:"\f03b"}.octicon-mark-github:before{content:"\f00a"}.octicon-markdown:before{content:"\f0c9"}.octicon-megaphone:before{content:"\f077"}.octicon-mention:before{content:"\f0be"}.octicon-milestone:before{content:"\f075"}.octicon-mirror:before{content:"\f024"}.octicon-mortar-board:before{content:"\f0d7"}.octicon-mute:before{content:"\f080"}.octicon-no-newline:before{content:"\f09c"}.octicon-octoface:before{content:"\f008"}.octicon-organization:before{content:"\f037"}.octicon-package:before{content:"\f0c4"}.octicon-paintcan:before{content:"\f0d1"}.octicon-pencil:before{content:"\f058"}.octicon-person:before{content:"\f018"}.octicon-pin:before{content:"\f041"}.octicon-plug:before{content:"\f0d4"}.octicon-plus-small:before{content:"\f104"}.octicon-plus:before{content:"\f05d"}.octicon-primitive-dot:before{content:"\f052"}.octicon-primitive-square:before{content:"\f053"}.octicon-pulse:before{content:"\f085"}.octicon-question:before{content:"\f02c"}.octicon-quote:before{content:"\f063"}.octicon-radio-tower:before{content:"\f030"}.octicon-reply:before{content:"\f105"}.octicon-repo-clone:before{content:"\f04c"}.octicon-repo-force-push:before{content:"\f04a"}.octicon-repo-forked:before{content:"\f002"}.octicon-repo-pull:before{content:"\f006"}.octicon-repo-push:before{content:"\f005"}.octicon-repo:before{content:"\f001"}.octicon-rocket:before{content:"\f033"}.octicon-rss:before{content:"\f034"}.octicon-ruby:before{content:"\f047"}.octicon-search:before{content:"\f02e"}.octicon-server:before{content:"\f097"}.octicon-settings:before{content:"\f07c"}.octicon-shield:before{content:"\f0e1"}.octicon-sign-in:before{content:"\f036"}.octicon-sign-out:before{content:"\f032"}.octicon-smiley:before{content:"\f0e7"}.octicon-squirrel:before{content:"\f0b2"}.octicon-star:before{content:"\f02a"}.octicon-stop:before{content:"\f08f"}.octicon-sync:before{content:"\f087"}.octicon-tag:before{content:"\f015"}.octicon-tasklist:before{content:"\f0e5"}.octicon-telescope:before{content:"\f088"}.octicon-terminal:before{content:"\f0c8"}.octicon-text-size:before{content:"\f0e3"}.octicon-three-bars:before{content:"\f05e"}.octicon-thumbsdown:before{content:"\f0db"}.octicon-thumbsup:before{content:"\f0da"}.octicon-tools:before{content:"\f031"}.octicon-trashcan:before{content:"\f0d0"}.octicon-triangle-down:before{content:"\f05b"}.octicon-triangle-left:before{content:"\f044"}.octicon-triangle-right:before{content:"\f05a"}.octicon-triangle-up:before{content:"\f0aa"}.octicon-unfold:before{content:"\f039"}.octicon-unmute:before{content:"\f0ba"}.octicon-unverified:before{content:"\f0e8"}.octicon-verified:before{content:"\f0e6"}.octicon-versions:before{content:"\f064"}.octicon-watch:before{content:"\f0e0"}.octicon-x:before{content:"\f081"}.octicon-zap:before{content:"\26a1"} \ No newline at end of file
diff --git a/public/vendor/assets/octicons/octicons.svg b/public/vendor/assets/octicons/octicons.svg
deleted file mode 100644
index 41cbd3f1fc..0000000000
--- a/public/vendor/assets/octicons/octicons.svg
+++ /dev/null
@@ -1,429 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
-<metadata>
-Created by FontForge 20150913 at Mon Jul 11 12:02:11 2016
- By Aaron Shekey
-</metadata>
-<defs>
-<font id="octicons" horiz-adv-x="96" >
- <font-face
- font-family="octicons"
- font-weight="400"
- font-stretch="normal"
- units-per-em="96"
- panose-1="2 0 5 9 0 0 0 0 0 0"
- ascent="84"
- descent="-12"
- bbox="-0.5 -12.5 96.5 84.5"
- underline-thickness="4"
- underline-position="-14"
- unicode-range="U+2665-F27C"
- />
-<missing-glyph
-d="M3 0v64h24v-64h-24zM6 3h18v58h-18v-58z" />
- <glyph glyph-name=".notdef"
-d="M3 0v64h24v-64h-24zM6 3h18v58h-18v-58z" />
- <glyph glyph-name=".null" horiz-adv-x="0"
- />
- <glyph glyph-name="nonmarkingreturn"
- />
- <glyph glyph-name="heart" unicode="&#x2665;"
-d="M67.5 66.5q4.5 -5.5 4.5 -12.5q0 -8 -4 -16q-5 -10 -32 -32q-27 21 -32 32q-4 8 -4 16q0 7 4.5 12.5t13.5 5.5q8 0 13 -6q5 -5 5 -6q0 1 5 6q5 6 13 6q9 0 13.5 -5.5z" />
- <glyph glyph-name="zap" unicode="&#x26a1;"
-d="M60 42l-54 -54l18 42h-24l54 54l-18 -42h24z" />
- <glyph glyph-name="light-bulb" unicode="&#xf000;"
-d="M39 84q14 0 23.5 -8.5t9.5 -21.5q0 -8 -6 -18q-11 -18 -12 -24v-6h-30v6q-1 6 -12 24q-6 10 -6 18q0 13 9.5 21.5t23.5 8.5zM61 39q5 9 5 15q0 10 -8 17t-19 7t-19 -7t-8 -17q0 -6 5 -15q2 -3 4 -7q8 -12 9 -19v-1h18v1q1 7 9 19q2 4 4 7zM24 0h30q-2 -12 -15 -12t-15 12
-z" />
- <glyph glyph-name="repo" unicode="&#xf001;"
-d="M24 30h-6v6h6v-6zM24 48v-6h-6v6h6zM24 60v-6h-6v6h6zM24 72v-6h-6v6h6zM72 78v-72q0 -6 -6 -6h-30v-12l-9 9l-9 -9v12h-12q-6 0 -6 6v72q0 6 6 6h60q6 0 6 -6zM66 18h-60v-12h12v6h18v-6h30v12zM66 78h-54v-54h54v54z" />
- <glyph glyph-name="repo-forked" unicode="&#xf002;"
-d="M48 78q12 0 12 -12q0 -7 -6 -10v-11l-18 -18v-11q6 -3 6 -10q0 -12 -12 -12t-12 12q0 7 6 10v11l-18 18v11q-6 3 -6 10q0 12 12 12t12 -12q0 -7 -6 -10v-8l12 -12l12 12v8q-6 3 -6 10q0 12 12 12zM12 59q7 0 7 7t-7 7t-7 -7t7 -7zM30 -1q7 0 7 7t-7 7t-7 -7t7 -7zM48 59
-q7 0 7 7t-7 7t-7 -7t7 -7z" />
- <glyph glyph-name="repo-push" unicode="&#xf005;"
-d="M24 66h-6v6h6v-6zM18 54v6h6v-6h-6zM42 54l18 -24h-12v-42h-12v42h-12zM66 84q6 0 6 -6v-72q0 -6 -6 -6h-12v6h12v12h-12v6h12v54h-54v-54h18v-6h-24v-12h24v-6h-24q-6 0 -6 6v72q0 6 6 6h60z" />
- <glyph glyph-name="repo-pull" unicode="&#xf006;"
-d="M78 36v12h-36v12h36v12l18 -18zM24 72v-6h-6v6h6zM66 42h6v-36q0 -6 -6 -6h-30v-12l-9 9l-9 -9v12h-12q-6 0 -6 6v72q0 6 6 6h60q6 0 6 -6v-12h-6v12h-54v-54h54v18zM66 18h-60v-12h12v6h18v-6h30v12zM24 48v-6h-6v6h6zM24 60v-6h-6v6h6zM18 30v6h6v-6h-6z" />
- <glyph glyph-name="book" unicode="&#xf007;"
-d="M18 54h24v-6h-24v6zM18 36v6h24v-6h-24zM18 24v6h24v-6h-24zM84 54v-6h-24v6h24zM84 42v-6h-24v6h24zM84 30v-6h-24v6h24zM96 66v-54q0 -6 -6 -6h-33l-6 -6l-6 6h-33q-6 0 -6 6v54q0 6 6 6h33l6 -6l6 6h33q6 0 6 -6zM48 63l-3 3h-33v-54h36v51zM90 66h-33l-3 -3v-51h36
-v54z" />
- <glyph glyph-name="octoface" unicode="&#xf008;"
-d="M88 52q8 -8 8 -20q0 -15 -6.5 -23.5t-16.5 -11.5t-25 -3q-23 0 -35.5 8t-12.5 30q0 12 8 20q-4 9 1 20q6 2 20 -8q7 2 19 2t19 -2q4 3 7.5 4.5t6 2.5t4 1h2.5q5 -11 1 -20zM48 0q12 0 18.5 1t12 5.5t5.5 13.5q0 7 -6 12q-3 3 -7 3.5t-12 0t-11 -0.5t-8.5 0.5t-8.5 0.5
-t-7 -1t-6 -3q-6 -5 -6 -12q0 -13 9 -16.5t27 -3.5zM33 30q7 0 7 -10.5t-7 -10.5t-7 10.5t7 10.5zM63 30q7 0 7 -10.5t-7 -10.5t-7 10.5t7 10.5z" />
- <glyph glyph-name="git-pull-request" unicode="&#xf009;"
-d="M66 16q6 -3 6 -10q0 -12 -12 -12t-12 12q0 7 6 10v38q0 2 -2 4t-4 2h-6v-12l-18 18l18 18v-12h6q7 0 12.5 -5.5t5.5 -12.5v-38zM60 -1q7 0 7 7t-7 7t-7 -7t7 -7zM24 66q0 -7 -6 -10v-40q6 -3 6 -10q0 -12 -12 -12t-12 12q0 7 6 10v40q-6 3 -6 10q0 12 12 12t12 -12zM19 6
-q0 7 -7 7t-7 -7t7 -7t7 7zM12 59q7 0 7 7t-7 7t-7 -7t7 -7z" />
- <glyph glyph-name="mark-github" unicode="&#xf00a;"
-d="M48 84q20 0 34 -14t14 -34q0 -10 -4 -19.5t-11.5 -16t-17.5 -10.5q-3 0 -3 3v4.5v8.5q0 6 -3 9q22 2 22 24q0 7 -5 12q2 6 -1 13q-4 1 -13 -5q-6 2 -12 2t-12 -2q-4 3 -7.5 4t-4.5 1h-1q-3 -7 -1 -13q-4 -5 -4 -12q0 -22 21 -24q-2 -2 -3 -7q-9 -4 -14 4q-3 5 -7 5
-q-3 0 -2.5 -1t2.5 -2q3 -2 5 -7q3 -8 16 -5v-6v-3q0 -3 -3 -3q-15 5 -24 17.5t-9 28.5q0 20 14 34t34 14z" />
- <glyph glyph-name="cloud-download" unicode="&#xf00b;"
-d="M54 12h12l-18 -18l-18 18h12v30h12v-30zM72 60q24 0 24 -21t-24 -21h-12v8h12q16 0 16 13t-16 13h-8v7q-3 11 -19 11q-7 0 -13 -5t-6 -11v-8h-8q-10 0 -10 -10t10 -10h18v-8h-18q-18 0 -18 18t18 18q0 9 8 16.5t19 7.5q10 0 16.5 -4t8.5 -8t2 -6z" />
- <glyph glyph-name="cloud-upload" unicode="&#xf00c;"
-d="M42 30h-12l18 18l18 -18h-12v-30h-12v30zM72 54q24 0 24 -21t-24 -21h-12v8h12q16 0 16 13t-16 13h-8v7q-3 11 -19 11q-7 0 -13 -5t-6 -11v-8h-8q-10 0 -10 -10t10 -10h18v-8h-18q-18 0 -18 18t18 18q0 9 8 16.5t19 7.5q10 0 16.5 -4t8.5 -8t2 -6z" />
- <glyph glyph-name="keyboard" unicode="&#xf00d;"
-d="M60 54h-6v6h6v-6zM18 48v-6h-6v6h6zM48 60v-6h-6v6h6zM24 60v-6h-12v6h12zM72 18v6h12v-6h-12zM48 42v6h6v-6h-6zM24 24v-6h-12v6h12zM72 60v-6h-6v6h6zM84 60v-6h-6v6h6zM72 30v18h12v-18h-12zM96 66v-54q0 -6 -6 -6h-84q-6 0 -6 6v54q0 6 6 6h84q6 0 6 -6zM90 66h-84
-v-54h84v54zM36 42v6h6v-6h-6zM36 60v-6h-6v6h6zM24 42v6h6v-6h-6zM30 18v6h36v-6h-36zM60 42v6h6v-6h-6zM18 36v-6h-6v6h6zM48 36h6v-6h-6v6zM36 36h6v-6h-6v6zM30 36v-6h-6v6h6zM60 30v6h6v-6h-6z" />
- <glyph glyph-name="gist" unicode="&#xf00e;"
-d="M45 54l15 -15l-15 -15l-5 4l11 11l-11 11zM27 54l5 -4l-11 -11l11 -11l-5 -4l-15 15zM0 6v66q0 6 6 6h60q6 0 6 -6v-66q0 -6 -6 -6h-60q-6 0 -6 6zM6 6h60v66h-60v-66z" />
- <glyph glyph-name="file-code" unicode="&#xf010;"
-d="M51 78l21 -21v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM66 0v54l-18 18h-42v-72h60zM30 42l-9 -9l9 -9l-3 -6l-15 15l15 15zM45 48l15 -15l-15 -15l-3 6l9 9l-9 9z" />
- <glyph glyph-name="file-text" unicode="&#xf011;"
-d="M36 54h-24v6h24v-6zM12 36v6h42v-6h-42zM12 24v6h42v-6h-42zM12 12v6h42v-6h-42zM72 57v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM66 54l-18 18h-42v-72h60v54z" />
- <glyph glyph-name="file-media" unicode="&#xf012;"
-d="M36 54h12v-12h-12v12zM72 57v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM66 54l-18 18h-42v-66l18 30l12 -24l12 12l18 -18v48z" />
- <glyph glyph-name="file-zip" unicode="&#xf013;"
-d="M51 78l21 -21v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM66 0v54l-18 18h-18v-6h-6v6h-18v-72h60zM30 60v6h6v-6h-6zM24 60h6v-6h-6v6zM30 48v6h6v-6h-6zM24 48h6v-6h-6v6zM30 36v6h6v-6h-6zM24 28v8h6v-6q12 0 12 -12v-6h-24v6q0 7 6 10zM36 24h-12v-6h12v6z" />
- <glyph glyph-name="file-pdf" unicode="&#xf014;"
-d="M51 78l21 -21v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM6 72v-56l6 4q2 1 4 1q0 1 1 2.5t2 4t3 4.5l6 16q-1 6 -2 11q0 5 1 9q0 2 1 3t2 1h-24zM33 43v0l-6 -14t-4 -7q6 2 11.5 3.5t10.5 1.5q-3 2 -5 4q-5 5 -7 12zM66 0v0v18h-2l-8 2t-8 3q-5 -1 -9 -1q-6 -2 -9 -2
-l-2 -1q-3 -1 -5 -2q-4 -8 -11 -14q-2 -2 -4 -3h1h57zM66 29v0v25l-18 18h-15q2 0 4 -1q1 -3 1 -6v-4q0 -6 -1 -12q2 -8 7 -14q3 -3 6 -4q4 0 8 1q2 -1 4 -1z" />
- <glyph glyph-name="tag" unicode="&#xf015;"
-d="M46 74l37 -37q4 -4 0 -8l-28 -28q-4 -4 -8 0l-37 37q-4 4 -4 10v15q0 6 4.5 10.5t10.5 4.5h15q6 0 10 -4zM14 41l37 -36l28 28l-36 37q-3 3 -7 3h-15q-10 0 -10 -10v-15q0 -4 3 -7zM18 66h12v-12h-12v12z" />
- <glyph glyph-name="file-directory" unicode="&#xf016;"
-d="M78 60q6 0 6 -6v-48q0 -6 -6 -6h-72q-6 0 -6 6v60q0 6 6 6h30q6 0 6 -6v-6h36zM36 60v6h-30v-6h30z" />
- <glyph glyph-name="file-submodule" unicode="&#xf017;"
-d="M60 42v-6h24v-30q0 -6 -6 -6h-54v42h36zM54 30v6h-24v-6h24zM78 60q6 0 6 -6v-12h-18q0 6 -6 6h-36q-6 0 -6 -6v-42h-12q-6 0 -6 6v60q0 6 6 6h30q6 0 6 -6v-6h36zM36 60v6h-30v-6h30z" />
- <glyph glyph-name="person" unicode="&#xf018;"
-d="M72 0q0 -6 -6 -6h-60q-6 0 -6 6v6q0 7 6 13t12 9l6 2q1 2 0 6q-6 4 -6 24q1 18 18 18t18 -18q0 -20 -6 -24v-6q24 -8 24 -24v-6z" />
- <glyph glyph-name="jersey" unicode="&#xf019;"
-d="M27 48h12l3 -3v-30l-3 -3h-12l-3 3v30zM36 18v24h-6v-24h6zM73.5 61.5q1.5 -12.5 10.5 -13.5v-54q0 -2 -2 -4t-4 -2h-66q-2 0 -4 2t-2 4v54q9 1 10 14q2 12 2 22h18q0 -2 2 -4t7 -2t7 2t2 4h18q0 -10 1.5 -22.5zM78 -6v48q-7 5 -10 16q-2 7 -2 20h-6q0 -7 -3 -12
-q-3 -6 -12 -6t-12 6q-3 5 -3 12h-6q0 -14 -2 -22q-2 -9 -10 -14v-48h66zM51 48h12l3 -3v-30l-3 -3h-12l-3 3v30zM60 18v24h-6v-24h6z" />
- <glyph glyph-name="git-commit" unicode="&#xf01f;"
-d="M65 42h19v-12h-19q-5 -18 -23 -18t-23 18h-19v12h19q5 18 23 18t23 -18zM42 23q5 0 9 4t4 9t-4 9t-9 4t-9 -4t-4 -9t4 -9t9 -4z" />
- <glyph glyph-name="git-branch" unicode="&#xf020;"
-d="M60 54q0 -7 -6 -10q-1 -12 -8 -19t-16 -7q-3 0 -6 -1l-1.5 -1.5l-1.5 -1.5q3 -3 3 -8q0 -12 -12 -12t-12 12q0 7 6 10v40q-6 3 -6 10q0 5 3.5 8.5t8.5 3.5t8.5 -3.5t3.5 -8.5q0 -7 -6 -10v-29q4 3 12 3q5 0 8.5 3.5t3.5 8.5v2q-6 3 -6 10q0 12 12 12t12 -12zM12 73
-q-7 0 -7 -7t7 -7t7 7t-7 7zM12 -1q7 0 7 7t-7 7t-7 -7t7 -7zM48 47q7 0 7 7t-7 7t-7 -7t7 -7z" />
- <glyph glyph-name="git-merge" unicode="&#xf023;"
-d="M60 42q12 0 12 -12t-12 -12q-7 0 -10 6q-11 0 -18.5 4t-13.5 10v-22q6 -3 6 -10q0 -12 -12 -12t-12 12q0 7 6 10v40q-6 3 -6 10q0 3 1.5 6t4.5 4.5t6 1.5q5 0 8.5 -3.5t3.5 -8.5q0 -6 -4 -9q4 -9 11 -15q8 -6 19 -6q3 6 10 6zM19 6q0 7 -7 7t-7 -7t7 -7t7 7zM12 59
-q7 0 7 7t-7 7t-7 -7t7 -7zM60 23q7 0 7 7t-7 7t-7 -7t7 -7z" />
- <glyph glyph-name="mirror" unicode="&#xf024;"
-d="M93 56q3 -2 3 -5v-63l-45 24l-45 -24v63q0 3 3 5l42 28zM90 -3v54l-36 24v-27h-6v27l-36 -24v-54l36 19v8h6v-8zM36 42h30v12l18 -18l-18 -18v12h-30v-12l-18 18l18 18v-12z" />
- <glyph glyph-name="issue-opened" unicode="&#xf026;"
-d="M42 70q-14 0 -24 -10t-10 -24t10 -24t24 -10t24 10t10 24t-10 24t-24 10zM42 78q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5zM48 60v-30h-12v30h12zM48 24v-12h-12v12h12z" />
- <glyph glyph-name="issue-reopened" unicode="&#xf027;"
-d="M48 30h-12v30h12v-30zM36 12v12h12v-12h-12zM74 24h10v-24l-10 10q-12 -16 -32 -16q-17 0 -29.5 12.5t-12.5 29.5v6h8v-6q0 -14 10 -24t24 -10q17 0 27 13l-9 9h14zM10 48h-10v24l10 -10q12 16 32 16q17 0 29.5 -12.5t12.5 -29.5v-6h-8v6q0 14 -10 24t-24 10
-q-17 0 -27 -13l9 -9h-14z" />
- <glyph glyph-name="issue-closed" unicode="&#xf028;"
-d="M42 24h12v-12h-12v12zM54 60v-30h-12v30h12zM63 51l9 -9l18 21l6 -6l-24 -27l-15 15zM48 2q12 0 21 7t12 18l9 9q0 -17 -12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5q20 0 33 -15l-6 -6q-10 13 -27 13q-14 0 -24 -10t-10 -24t10 -24t24 -10z" />
- <glyph glyph-name="star" unicode="&#xf02a;"
-d="M84 48l-22 -20l6 -28l-26 14l-26 -14l6 28l-22 20l29 4l13 26l13 -26z" />
- <glyph glyph-name="comment" unicode="&#xf02b;"
-d="M84 78q6 0 6 -6v-48q0 -6 -6 -6h-39l-21 -21v21h-12q-6 0 -6 6v48q0 6 6 6h72zM84 24v48h-72v-48h18v-12l12 12h42z" />
- <glyph glyph-name="question" unicode="&#xf02c;"
-d="M36 24h12v-12h-12v12zM60 45q0 -6 -3 -9.5t-6 -4.5l-3 -1h-12q0 6 6 6h3q3 0 3 3v6q0 3 -3 3h-6q-3 0 -3 -3v-3h-12q0 7 5.5 12.5t12.5 5.5q18 0 18 -15zM42 70q-14 0 -24 -10t-10 -24t10 -24t24 -10t24 10t10 24t-10 24t-24 10zM42 78q17 0 29.5 -12.5t12.5 -29.5
-t-12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5z" />
- <glyph glyph-name="alert" unicode="&#xf02d;"
-d="M53 75l41 -72q2 -3 0.5 -6t-5.5 -3h-82q-4 0 -5.5 3t0.5 6l41 72q1 3 4.5 3t5.5 -3zM54 6v12h-12v-12h12zM54 24v24h-12v-24h12z" />
- <glyph glyph-name="search" unicode="&#xf02e;"
-d="M94 4q4 -4 0 -8q-1 -2 -3.5 -2t-4.5 2l-23 23q-10 -7 -21 -7q-15 0 -25.5 10.5t-10.5 25.5t10.5 25.5t25.5 10.5t25.5 -10.5t10.5 -25.5q0 -11 -7 -21zM42 20q12 0 20 8t8 20t-8 20t-20 8t-20 -8t-8 -20t8 -20t20 -8z" />
- <glyph glyph-name="gear" unicode="&#xf02f;"
-d="M84 31v1l-12 -5l-2 -6l5 -11l-7 -7l-11 5l-6 -2l-4 -12h-10l-4 12l-6 2l-11 -5l-7 7l5 11l-2 6l-12 4v10l12 4l2 6l-5 11l7 7l11 -5l6 2l4 12h10l4 -12l6 -2l11 5l7 -7l-5 -11l2 -6l12 -4v-10zM42 18q7 0 12.5 5.5t5.5 12.5t-5.5 12.5t-12.5 5.5t-12.5 -5.5t-5.5 -12.5
-t5.5 -12.5t12.5 -5.5z" />
- <glyph glyph-name="radio-tower" unicode="&#xf030;"
-d="M29 47.5q-3 -2.5 -6 -0.5q-5 6 -5 13t5 13q1 1 3 1t3 -1q2 -3 -0.5 -6t-2.5 -7t3 -7t0 -5.5zM14 81q3 -3 0 -6q-6 -6 -6 -15t6 -15q3 -3 0 -6t-6 0q-8 9 -8 21t8 21q2 1 3.5 1t2.5 -1zM48 50q-10 0 -10 10t10 10t10 -10t-10 -10zM88 81q8 -9 8 -21t-8 -21q-2 -1 -3.5 -1
-t-2.5 1q-3 3 0 6q6 6 6 15t-6 15q-3 3 0 6t6 0zM48 42q4 0 7 2l19 -50h-9l-5 6h-24l-5 -6h-9l19 50q3 -2 7 -2zM48 40l-6 -22h12zM36 6h24l-6 6h-12zM67 72.5q3 2.5 6 0.5q5 -6 5 -13t-5 -13q-1 -1 -3 -1t-3 1q-2 3 0.5 6t2.5 7t-3 7t0 5.5z" />
- <glyph glyph-name="tools" unicode="&#xf031;"
-d="M27 40q-12 -4 -21 6q-8 8 -5 20l11 -12l12 3l3 12l-12 12q12 3 20 -5.5t5 -20.5l3 -3l-10 -11l5 -5l-3 -4zM66 29l22 -24q3 -3 3 -7t-3 -7t-7 -3t-6 3l-23 24zM96 69l-43 -45l-6 6l-26 -27l-3 -6l-13 -9l-2 2l8 14l6 3l26 27l-5 5l43 45z" />
- <glyph glyph-name="sign-out" unicode="&#xf032;"
-d="M72 30v12h-24v12h24v12l24 -18zM60 12v24h6v-24q0 -6 -6 -6h-24v-18l-33 16q-3 2 -3 6v68q0 6 6 6h54q6 0 6 -6v-18h-6v18h-48l24 -12v-54h24z" />
- <glyph glyph-name="rocket" unicode="&#xf033;"
-d="M73 61q2 -2 5 -3.5t6 -2.5q-3 -6 -6 -10q-4 -5 -9 -10q-2 -2 -15 -11v-18l-18 -18v18l12 12q-2 -1 -6.5 -2.5l-7.5 -2.5l-4 -1l-6 6q-1 1 6 18l-12 -12h-18l18 18h18q10 14 11 15q5 5 10 8.5t10 6.5l2 -6q2 -3 4 -5zM96 84q-1 -2 -2 -6q-2 -7 -6 -16q-7 0 -10.5 4
-t-3.5 10q10 5 16 6l6 2v0z" />
- <glyph glyph-name="rss" unicode="&#xf034;"
-d="M12 6h-12v12q12 0 12 -12zM0 66q25 0 42.5 -17.5t17.5 -42.5h-6q0 22 -16 38t-38 16v6zM0 42q15 0 25.5 -10.5t10.5 -25.5h-6q0 12 -9 21t-21 9v6z" />
- <glyph glyph-name="clippy" unicode="&#xf035;"
-d="M12 6h24v-6h-24v6zM42 42v-6h-30v6h30zM54 24h30v-12h-30v-12l-18 18l18 18v-12zM27 30v-6h-15v6h15zM12 12v6h15v-6h-15zM66 6h6v-12q0 -3 -2 -4.5t-4 -1.5h-60q-6 0 -6 6v66q0 6 6 6h18q0 12 12 12t12 -12h18q6 0 6 -6v-30h-6v18h-60v-54h60v12zM12 54h48q0 6 -6 6h-6
-q-6 0 -6 6t-6 6t-6 -6t-6 -6h-6q-6 0 -6 -6z" />
- <glyph glyph-name="sign-in" unicode="&#xf036;"
-d="M42 44v-32h24v24h6v-24q0 -6 -6 -6h-24v-18l-33 16q-3 2 -3 6v68q0 6 6 6h54q6 0 6 -6v-18h-6v18h-48l24 -12v-14l18 14v-12h24v-12h-24v-12z" />
- <glyph glyph-name="organization" unicode="&#xf037;"
-d="M96 6q0 -6 -6 -6h-42q-6 0 -6 6h-36q-6 0 -6 6q0 7 4.5 13t9.5 9l4 2q1 2 0 6q-6 5 -6 18q0 18 15 18t15 -18q0 -13 -6 -18v-6q9 -4 15 -13l9 7q1 2 0 6l-1 1q-5 4 -5 17q0 18 15 18t15 -18q0 -7 -0.5 -10.5t-1.5 -4.5t-4 -3v-6q18 -8 18 -24v0z" />
- <glyph glyph-name="device-mobile" unicode="&#xf038;"
-d="M54 84q6 0 6 -6v-84q0 -6 -6 -6h-48q-6 0 -6 6v84q0 6 6 6h48zM30 -8q8 0 8 8t-8 8t-8 -8t8 -8zM54 12v60h-48v-60h48z" />
- <glyph glyph-name="unfold" unicode="&#xf039;"
-d="M69 39l15 -15q0 -6 -6 -6h-24v6h21l-12 12h-42l-12 -12h21v-6h-24q-6 0 -6 6l15 15l-15 15q0 6 6 6h24v-6h-21l12 -12h42l12 12h-21v6h24q6 0 6 -6zM36 48v18h-12l18 18l18 -18h-12v-18h-12zM48 30v-18h12l-18 -18l-18 18h12v18h12z" />
- <glyph glyph-name="check" unicode="&#xf03a;"
-d="M72 54l-48 -48l-24 24l9 9l15 -15l39 39z" />
- <glyph glyph-name="mail" unicode="&#xf03b;"
-d="M0 60q0 6 6 6h72q6 0 6 -6v-48q0 -6 -6 -6h-72q-6 0 -6 6v48zM78 60h-72l36 -30zM6 51v-36l24 18zM12 12h60l-21 18l-9 -9l-9 9zM78 15v36l-24 -18z" />
- <glyph glyph-name="mail-read" unicode="&#xf03c;"
-d="M36 54h-12v6h12v-6zM54 48v-6h-30v6h30zM84 51v-51q0 -6 -6 -6h-72q-6 0 -6 6v51q0 3 3 5l9 7v3q0 6 6 6h7l17 12l17 -12h7q6 0 6 -6v-3l9 -7q3 -2 3 -5zM18 39l24 -15l24 15v27h-48v-27zM6 3l27 18l-27 18v-36zM72 0l-30 18l-30 -18h60zM78 39l-27 -18l27 -18v36z" />
- <glyph glyph-name="arrow-up" unicode="&#xf03d;"
-d="M30 66l30 -36h-18v-24h-24v24h-18z" />
- <glyph glyph-name="arrow-right" unicode="&#xf03e;"
-d="M60 36l-36 -30v18h-24v24h24v18z" />
- <glyph glyph-name="arrow-down" unicode="&#xf03f;"
-d="M42 42h18l-30 -36l-30 36h18v24h24v-24z" />
- <glyph glyph-name="arrow-left" unicode="&#xf040;"
-d="M36 66v-18h24v-24h-24v-18l-36 30z" />
- <glyph glyph-name="pin" unicode="&#xf041;"
-d="M60 77q0 2 2 2.5t3 -0.5l26 -26q1 -1 0.5 -3t-2.5 -2h-5l-6 3l-18 -27v-23q0 -2 -2 -2.5t-3 0.5l-19 19l-30 -24l24 30l-19 19q-1 1 -0.5 3t2.5 2h23l27 18l-3 6v5z" />
- <glyph glyph-name="gift" unicode="&#xf042;"
-d="M78 60q6 0 6 -6v-18h-6v-30q0 -6 -6 -6h-54q-6 0 -6 6v30h-6v18q0 6 6 6h8q-2 3 -2 5q-1 7 3 10q3 3 9 3q5 0 9 -3t6 -8q2 5 6 8t9 3h1q5 0 8 -3t3 -10q0 -2 -2 -5h8zM49 65l-2 -5h17q3 4 3 6q0 4 -2 6q-1 1 -4 1h-1q-3 0 -6 -2t-5 -6zM25 72q-2 -2 -2 -6q0 -2 3 -6h17
-l-2 5q-2 4 -5 6t-6 2q-4 0 -5 -1zM42 6v30h-24v-30h24zM42 42v12h-30v-12h30zM72 6v30h-24v-30h24zM78 42v12h-30v-12h30z" />
- <glyph glyph-name="graph" unicode="&#xf043;"
-d="M96 0v-6h-96v90h6v-84h90zM30 6h-12v30h12v-30zM54 6h-12v60h12v-60zM78 6h-12v42h12v-42z" />
- <glyph glyph-name="triangle-left" unicode="&#xf044;"
-d="M36 72v-72l-36 36z" />
- <glyph glyph-name="credit-card" unicode="&#xf045;"
-d="M72 30h-60v6h60v-6zM96 66v-54q0 -6 -6 -6h-84q-6 0 -6 6v54q0 6 6 6h84q6 0 6 -6zM90 48h-84v-36h84v36zM90 66h-84v-6h84v6zM36 24v-6h-24v6h24z" />
- <glyph glyph-name="clock" unicode="&#xf046;"
-d="M48 36h18v-12h-24q-6 0 -6 6v30h12v-24zM42 70q-14 0 -24 -10t-10 -24t10 -24t24 -10t24 10t10 24t-10 24t-24 10zM42 78q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5z" />
- <glyph glyph-name="ruby" unicode="&#xf047;"
-d="M78 48l-30 -30v42h18zM96 48l-48 -48l-48 48l24 24h48zM48 9l39 39l-18 18h-42l-18 -18z" />
- <glyph glyph-name="broadcast" unicode="&#xf048;"
-d="M54 30q6 0 6 -6v-12h-6v-18q0 -6 -6 -6h-6q-6 0 -6 6v18h-6v12q0 6 6 6h6q-6 0 -6 6v6q0 6 6 6h6q6 0 6 -6v-6q0 -6 -6 -6h6zM42 42v-6h6v6h-6zM54 18v6h-18v-6h6v-24h6v24h6zM67 39q0 9 -6.5 15.5t-15.5 6.5t-15.5 -6.5t-6.5 -15.5q0 -3 1 -5v-12q-6 8 -6 17q0 11 8 19
-t19 8q7 0 13.5 -3.5t10 -10t3.5 -13.5q0 -9 -6 -17v12q1 3 1 5zM90 39q0 -27 -24 -40v7q19 11 19 33q0 16 -12 28t-28 12t-28 -12t-12 -28q0 -22 19 -33v-7q-24 13 -24 40q0 19 13 32t32 13t32 -13t13 -32z" />
- <glyph glyph-name="key" unicode="&#xf049;"
-d="M77 71q7 -7 7 -17t-7 -17t-17 -7q-3 0 -5 1l-7 -7h-12v-6h-6v-6h-6v-6l-6 -6h-12l-6 6v6l37 37q-1 2 -1 5q0 10 7 17t17 7t17 -7zM66 52q8 0 8 8t-8 8t-8 -8t8 -8z" />
- <glyph glyph-name="repo-force-push" unicode="&#xf04a;"
-d="M60 30h-12v-42h-12v42h-12l14 18h-14l18 24l18 -24h-14zM66 84q6 0 6 -6v-72q0 -6 -6 -6h-12v6h12v12h-12v6h12v54h-54v-54h18v-6h-24v-12h24v-6h-24q-6 0 -6 6v72q0 6 6 6h60z" />
- <glyph glyph-name="repo-clone" unicode="&#xf04c;"
-d="M90 84q6 0 6 -6v-36q0 -6 -6 -6h-18v-6h-6v6h-6q-6 0 -6 6v42h36zM66 42v6h-6v-6h6zM90 42v6h-18v-6h18zM90 54v24h-24v-24h24zM24 54h-6v6h6v-6zM24 66h-6v6h6v-6zM12 78v-54h60v-18q0 -6 -6 -6h-30v-12l-9 9l-9 -9v12h-12q-6 0 -6 6v72q0 6 6 6h42v-6h-36zM66 18h-60
-v-12h12v6h18v-6h30v12zM18 36h6v-6h-6v6zM24 42h-6v6h6v-6z" />
- <glyph glyph-name="diff" unicode="&#xf04d;"
-d="M36 42h12v-6h-12v-12h-6v12h-12v6h12v12h6v-12zM18 6v6h30v-6h-30zM45 72l21 -21v-57q0 -6 -6 -6h-54q-6 0 -6 6v72q0 6 6 6h39zM60 48l-18 18h-36v-72h54v54zM51 84l27 -27v-51h-6v48l-24 24h-30v6h33z" />
- <glyph glyph-name="eye" unicode="&#xf04e;"
-d="M48 72q9 0 17 -3.5t13 -9t9.5 -11t6.5 -8.5l2 -4q-2 -4 -6 -10t-16 -16t-26 -10q-8 0 -16 3.5t-13.5 9t-10 11t-6.5 8.5l-2 4q2 4 6 10t16.5 16t25.5 10zM48 12q10 0 17 7t7 17t-7 17t-17 7t-17 -7t-7 -17t7 -17t17 -7zM60 36q0 -12 -12 -12t-12 12t12 12t12 -12z" />
- <glyph glyph-name="comment-discussion" unicode="&#xf04f;"
-d="M90 78q6 0 6 -6v-36q0 -6 -6 -6h-6v-18l-18 18h-6v-12q0 -6 -6 -6h-24l-18 -18v18h-6q-6 0 -6 6v36q0 6 6 6h24v12q0 6 6 6h54zM54 18v12h-18q-6 0 -6 6v18h-24v-36h12v-9l9 9h27zM90 36v36h-54v-36h33l9 -9v9h12z" />
- <glyph glyph-name="mail-reply" unicode="&#xf051;"
-d="M36 69v-18q15 -2 25.5 -13.5t10.5 -30.5q-3 13 -14.5 19.5t-21.5 6.5v-18l-36 27z" />
- <glyph glyph-name="primitive-dot" unicode="&#xf052;"
-d="M0 36q0 10 7 17t17 7t17 -7t7 -17t-7 -17t-17 -7t-17 7t-7 17z" />
- <glyph glyph-name="primitive-square" unicode="&#xf053;"
-d="M48 12h-48v48h48v-48z" />
- <glyph glyph-name="device-camera" unicode="&#xf056;"
-d="M90 66q6 0 6 -6v-54q0 -6 -6 -6h-84q-6 0 -6 6v54q0 6 6 6q0 6 6 6h24q6 0 6 -6h48zM36 54v6h-24v-6h24zM63 12q9 0 15 6t6 15t-6 15t-15 6t-15 -6t-6 -15t6 -15t15 -6zM78 33q0 -15 -15 -15q-6 0 -10.5 4.5t-4.5 10.5t4.5 10.5t10.5 4.5t10.5 -4.5t4.5 -10.5z" />
- <glyph glyph-name="device-camera-video" unicode="&#xf057;"
-d="M91 71q2 2 3.5 1t1.5 -3v-60q0 -2 -1.5 -3t-3.5 1l-31 21v-16q0 -6 -6 -6h-48q-6 0 -6 6v54q0 6 6 6h48q6 0 6 -6v-16z" />
- <glyph glyph-name="pencil" unicode="&#xf058;"
-d="M0 12l48 48l18 -18l-48 -48h-18v18zM18 0v6h-6v6h-6v-12h12zM80 56l-8 -8l-18 18l8 8q4 4 8 0l10 -10q4 -4 0 -8z" />
- <glyph glyph-name="info" unicode="&#xf059;"
-d="M38 50q-2 2 -2 4.5t2 4t4.5 1.5t4 -2t1.5 -4.5t-2 -3.5q-2 -2 -4 -2t-4 2zM48 36v-18h6q0 -2 -2 -4t-4 -2h-6q-2 0 -4 2t-2 4v18h-6q0 2 2 4t4 2h6q2 0 4 -2t2 -4zM42 70q-14 0 -24 -10t-10 -24t10 -24t24 -10t24 10t10 24t-10 24t-24 10zM42 78q17 0 29.5 -12.5
-t12.5 -29.5t-12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 30t12.5 29.5t29.5 12z" />
- <glyph glyph-name="triangle-right" unicode="&#xf05a;"
-d="M0 0v72l36 -36z" />
- <glyph glyph-name="triangle-down" unicode="&#xf05b;"
-d="M0 54h72l-36 -36z" />
- <glyph glyph-name="link" unicode="&#xf05c;"
-d="M24 30h6v-6h-6q-7 0 -12.5 6.5t-5.5 14.5t5.5 14.5t12.5 6.5h24q7 0 12.5 -6.5t5.5 -14.5q0 -14 -12 -19v6q6 5 6 13q0 6 -4 10.5t-8 4.5h-24q-4 0 -8 -4.5t-4 -10.5t3.5 -10.5t8.5 -4.5zM78 48q7 0 12.5 -6.5t5.5 -14.5t-5.5 -14.5t-12.5 -6.5h-24q-7 0 -12.5 6.5
-t-5.5 14.5q0 14 12 19v-6q-6 -5 -6 -13q0 -6 4 -10.5t8 -4.5h24q4 0 8 4.5t4 10.5t-3.5 10.5t-8.5 4.5h-6v6h6z" />
- <glyph glyph-name="plus" unicode="&#xf05d;"
-d="M72 30h-30v-30h-12v30h-30v12h30v30h12v-30h30v-12z" />
- <glyph glyph-name="three-bars" unicode="&#xf05e;"
-d="M68 30h-64q-4 0 -4 6t4 6h64q4 0 4 -6t-4 -6zM68 54h-64q-4 0 -4 6t4 6h64q4 0 4 -6t-4 -6zM4 18h64q4 0 4 -6t-4 -6h-64q-4 0 -4 6t4 6z" />
- <glyph glyph-name="code" unicode="&#xf05f;"
-d="M57 66l27 -30l-27 -30l-9 9l21 21l-21 21zM27 66l9 -9l-21 -21l21 -21l-9 -9l-27 30z" />
- <glyph glyph-name="location" unicode="&#xf060;"
-d="M36 84q15 0 25.5 -9.5t10.5 -23.5q0 -12 -9 -28t-18 -25l-9 -10q-36 36 -36 63q0 14 10.5 23.5t25.5 9.5zM36 -3q30 32 30 54q0 11 -8.5 19t-21.5 8q-12 0 -21 -8t-9 -19q0 -22 30 -54zM48 51q0 -12 -12 -12t-12 12t12 12t12 -12z" />
- <glyph glyph-name="list-unordered" unicode="&#xf061;"
-d="M12 6q0 -6 -4 -6h-4q-4 0 -4 6t4 6h4q4 0 4 -6zM28 60q-4 0 -4 6t4 6h40q4 0 4 -6t-4 -6h-40zM8 42q4 0 4 -6t-4 -6h-4q-4 0 -4 6t4 6h4zM8 72q4 0 4 -6t-4 -6h-4q-4 0 -4 6t4 6h4zM68 42q4 0 4 -6t-4 -6h-40q-4 0 -4 6t4 6h40zM68 12q4 0 4 -6t-4 -6h-40q-4 0 -4 6t4 6
-h40z" />
- <glyph glyph-name="list-ordered" unicode="&#xf062;"
-d="M72 6q0 -6 -4 -6h-40q-4 0 -4 6t4 6h40q4 0 4 -6zM28 60q-4 0 -4 6t4 6h40q4 0 4 -6t-4 -6h-40zM68 42q4 0 4 -6t-4 -6h-40q-4 0 -4 6t4 6h40zM12 78v-19h6v-5h-17v5h5v13h-4v4q4 1 6 2h4zM14 29h-1h4l1 -5h-18v3q10 10 10 13t-3 3q-1 0 -4 -2l-3 3q4 4 8 4q8 0 8 -8
-q0 -4 -6 -11h4zM13 7q5 -2 5 -6q0 -7 -10 -7q-5 0 -8 3l3 4q2 -2 5 -2t3 2q0 3 -6 3v5q5 0 5 2t-2 2t-4 -1l-3 3q3 4 7 4q9 0 9 -7q0 -4 -4 -5z" />
- <glyph glyph-name="quote" unicode="&#xf063;"
-d="M37 63q-22 -14 -22 -35h3q6 0 10.5 -4t4.5 -10q0 -16 -15 -16q-18 0 -18 26q0 33 30 50zM79 63q-22 -14 -22 -35h3q4 0 7.5 -1.5t5.5 -5t2 -7.5q0 -16 -15 -16q-18 0 -18 26q0 33 30 50z" />
- <glyph glyph-name="versions" unicode="&#xf064;"
-d="M78 66q6 0 6 -6v-48q0 -6 -6 -6h-36q-6 0 -6 6v48q0 6 6 6h36zM72 18v36h-24v-36h24zM24 60h6v-6h-6v-36h6v-6h-6q-6 0 -6 6v36q0 6 6 6zM6 54h6v-6h-6v-24h6v-6h-6q-6 0 -6 6v24q0 6 6 6z" />
- <glyph glyph-name="calendar" unicode="&#xf068;"
-d="M78 72q6 0 6 -6v-66q0 -6 -6 -6h-66q-6 0 -6 6v66q0 6 6 6h6v-9q0 -3 3 -3h12q3 0 3 3v9h18v-9q0 -3 3 -3h12q3 0 3 3v9h6zM78 0v54h-66v-54h66zM30 66h-6v12h6v-12zM66 66h-6v12h6v-12zM36 42h-6v6h6v-6zM48 42h-6v6h6v-6zM60 42h-6v6h6v-6zM72 42h-6v6h6v-6zM24 30h-6
-v6h6v-6zM36 30h-6v6h6v-6zM48 30h-6v6h6v-6zM60 30h-6v6h6v-6zM72 30h-6v6h6v-6zM24 18h-6v6h6v-6zM36 18h-6v6h6v-6zM48 18h-6v6h6v-6zM60 18h-6v6h6v-6zM72 18h-6v6h6v-6zM24 6h-6v6h6v-6zM36 6h-6v6h6v-6zM48 6h-6v6h6v-6zM60 6h-6v6h6v-6z" />
- <glyph glyph-name="lock" unicode="&#xf06a;"
-d="M24 6h-6v6h6v-6zM72 42v-42q0 -6 -6 -6h-60q-6 0 -6 6v42q0 6 6 6h6v12q0 10 7 17t17 7t17 -7t7 -17v-12h6q6 0 6 -6zM23 48h26v12q0 5 -3.5 9t-9 4t-9.5 -4t-4 -9v-12zM66 42h-54v-42h54v42zM24 36v-6h-6v6h6zM24 24v-6h-6v6h6z" />
- <glyph glyph-name="diff-added" unicode="&#xf06b;"
-d="M78 78q6 0 6 -6v-72q0 -6 -6 -6h-72q-6 0 -6 6v72q0 6 6 6h72zM78 0v72h-72v-72h72zM36 30h-18v12h18v18h12v-18h18v-12h-18v-18h-12v18z" />
- <glyph glyph-name="diff-removed" unicode="&#xf06c;"
-d="M78 78q6 0 6 -6v-72q0 -6 -6 -6h-72q-6 0 -6 6v72q0 6 6 6h72zM78 0v72h-72v-72h72zM66 30h-48v12h48v-12z" />
- <glyph glyph-name="diff-modified" unicode="&#xf06d;"
-d="M78 78q6 0 6 -6v-72q0 -6 -6 -6h-72q-6 0 -6 6v72q0 6 6 6h72zM78 0v72h-72v-72h72zM24 36q0 7 5.5 12.5t12.5 5.5t12.5 -5.5t5.5 -12.5t-5.5 -12.5t-12.5 -5.5t-12.5 5.5t-5.5 12.5z" />
- <glyph glyph-name="diff-renamed" unicode="&#xf06e;"
-d="M36 30h-18v12h18v18l30 -24l-30 -24v18zM84 72v-72q0 -6 -6 -6h-72q-6 0 -6 6v72q0 6 6 6h72q6 0 6 -6zM78 72h-72v-72h72v72z" />
- <glyph glyph-name="horizontal-rule" unicode="&#xf070;"
-d="M6 42v-12h-6v36h6v-18h12v18h6v-36h-6v12h-12zM60 30h-6v12h6v-12zM60 48h-6v12h6v-12zM42 48h12v-6h-12v-12h-6v36h18v-6h-12v-12zM0 6v12h60v-12h-60z" />
- <glyph glyph-name="arrow-small-right" unicode="&#xf071;"
-d="M36 36l-24 -18v12h-12v12h12v12z" />
- <glyph glyph-name="milestone" unicode="&#xf075;"
-d="M48 72h-12v12h12v-12zM72 42h-60q-6 0 -6 6v12q0 6 6 6h60l12 -12zM48 60h-12v-12h12v12zM36 -12v48h12v-48h-12z" />
- <glyph glyph-name="checklist" unicode="&#xf076;"
-d="M96 33l-36 -36l-18 18l9 9l9 -9l27 27zM34 11l5 -5h-27q-6 0 -6 6v54q0 6 6 6h42q6 0 6 -6v-39l-5 5q-4 4 -8 0l-13 -13q-4 -4 0 -8zM24 60h30v6h-30v-6zM24 48h30v6h-30v-6zM24 36h18v6h-18v-6zM18 30h-6v-6h6v6zM18 42h-6v-6h6v6zM18 54h-6v-6h6v6zM18 66h-6v-6h6v6z
-" />
- <glyph glyph-name="megaphone" unicode="&#xf077;"
-d="M60 78q6 0 6 -6v-66q0 -6 -6 -6q-2 0 -3 1q-2 1 -5.5 3.5t-8 5.5l-7.5 5v-21h-12v28q-4 1 -6 2q-18 0 -18 15t18 15q4 1 11.5 5.5t16.5 10.5t11 7q1 1 3 1zM60 6v66l-9 -6q-1 0 -2 -1l-1 -1v-50q1 0 2 -1l1 -1q7 -5 9 -6zM72 42h24v-6h-24v6zM72 30l24 -12v-6l-24 12v6z
-M96 66v-6l-24 -12v6z" />
- <glyph glyph-name="chevron-right" unicode="&#xf078;"
-d="M45 36l-30 -30l-9 9l22 21l-22 21l9 9z" />
- <glyph glyph-name="bookmark" unicode="&#xf07b;"
-d="M54 84q6 0 6 -6v-90l-30 19l-30 -19v90q0 6 6 6h48zM49 58q2 2 0 2h-14l-4 13h-2l-4 -13h-14q-2 0 0 -2l11 -8l-4 -13q-1 -2 1 -1l11 8l11 -8h1.5t-0.5 1l-4 13z" />
- <glyph glyph-name="settings" unicode="&#xf07c;"
-d="M24 42h-6v30h6v-30zM18 0v18h6v-18h-6zM48 0v36h6v-36h-6zM78 0v12h6v-12h-6zM84 72v-36h-6v36h6zM54 72v-12h-6v12h6zM30 36q6 0 6 -6t-6 -6h-18q-6 0 -6 6t6 6h18zM60 54q6 0 6 -6t-6 -6h-18q-6 0 -6 6t6 6h18zM90 30q6 0 6 -6t-6 -6h-18q-6 0 -6 6t6 6h18z" />
- <glyph glyph-name="dashboard" unicode="&#xf07d;"
-d="M54 54h-6v6h6v-6zM78 36v-6h-6v6h6zM36 54v-6h-6v6h6zM30 36v-6h-6v6h6zM96 69l-36 -33v-6q0 -6 -6 -6h-6q-6 0 -6 6v6q0 6 6 6h6l39 30zM86 44l6 6q4 -8 4 -17q0 -19 -13 -32t-32 -13t-32 13t-13 32t13 32t32 13q14 0 25 -8l-5 -5q-9 5 -20 5q-15 0 -26 -11t-11 -26
-t11 -26t26 -11q10 0 18.5 5t13.5 13.5t5 18.5q0 6 -2 11z" />
- <glyph glyph-name="history" unicode="&#xf07e;"
-d="M48 6h-12v42h30v-12h-18v-30zM42 78q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 29.5v6h8v-6q0 -14 10 -24t24 -10t24 10t10 24t-10 24t-24 10q-17 0 -27 -13l9 -9h-24v24l10 -10q12 16 32 16z" />
- <glyph glyph-name="link-external" unicode="&#xf07f;"
-d="M66 24h6v-18q0 -6 -6 -6h-60q-6 0 -6 6v60q0 6 6 6h18v-6h-18v-60h60v18zM36 72h36v-36l-14 14l-19 -20l-9 9l20 19z" />
- <glyph glyph-name="mute" unicode="&#xf080;"
-d="M48 67v-62q0 -3 -3 -4t-5 1l-22 22h-12q-6 0 -6 6v12q0 6 6 6h12l22 22q2 2 5 1t3 -4zM93 48l-12 -12l12 -12l-6 -6l-12 12l-12 -12l-6 6l12 12l-12 12l6 6l12 -12l12 12z" />
- <glyph glyph-name="x" unicode="&#xf081;"
-d="M45 36l22 -22l-9 -9l-22 22l-22 -22l-9 9l22 22l-22 22l9 9l22 -22l22 22l9 -9z" />
- <glyph glyph-name="circle-slash" unicode="&#xf084;"
-d="M42 78q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5zM42 70q-14 0 -24 -10t-10 -24q0 -11 7 -21l48 48q-10 7 -21 7zM42 2q14 0 24 10t10 24q0 11 -7 21l-48 -48q10 -7 21 -7z" />
- <glyph glyph-name="pulse" unicode="&#xf085;"
-d="M69 36h15v-12h-20l-10 9l-22 -31l-5 33l-5 -11h-22v12h14l19 38l7 -41l13 19z" />
- <glyph glyph-name="sync" unicode="&#xf087;"
-d="M61 40l11 -2q1 -16 -10 -27q-10 -10 -23.5 -10.5t-24.5 7.5l-7 -8l-4 25l26 -3l-7 -7q17 -12 32 3q9 9 7 22zM18 54q-9 -9 -7 -22l-11 2q-1 16 10 27q10 10 23.5 10.5t24.5 -7.5l7 8l4 -25l-26 3l7 7q-17 12 -32 -3z" />
- <glyph glyph-name="telescope" unicode="&#xf088;"
-d="M48 30l18 -36h-6l-12 24v-30h-6v36l-12 -30h-6l12 30zM42 84v-6h-6v6h6zM30 66v-6h-6v6h6zM12 78v-6h-6v6h6zM4 30l7 5l7 -12l-8 -4q-3 -1 -4 1l-3 6q-1 2 1 4zM51 62l11 -18l-38 -18l-8 13zM76 55q2 -3 -1 -5l-8 -3l-11 19l7 5q3 2 5 -1z" />
- <glyph glyph-name="gist-secret" unicode="&#xf08c;"
-d="M48 21l6 -21h-24l6 21l-4 9h20zM60 48l12 -6h-60l12 6h36zM54 72l6 -18h-36l6 18l12 -6zM78 26q6 -2 4 -8l-3 -14q-1 -4 -6 -4h-19l12 18l-6 12zM24 30l-6 -12l12 -18h-19q-5 0 -6 4l-3 14q-2 6 4 8z" />
- <glyph glyph-name="home" unicode="&#xf08d;"
-d="M96 30h-12l-6 -30q0 -6 -6 -6h-48q-6 0 -6 6l-6 30h-12l48 48l18 -18v12h12v-24zM72 0l7 38l-31 31l-31 -31l7 -38h18v24h12v-24h18z" />
- <glyph glyph-name="stop" unicode="&#xf08f;"
-d="M60 78l24 -24v-36l-24 -24h-36l-24 24v36l24 24h36zM78 21v30l-21 21h-30l-21 -21v-30l21 -21h30zM36 60h12v-30h-12v30zM36 24h12v-12h-12v12z" />
- <glyph glyph-name="bug" unicode="&#xf091;"
-d="M66 24v-6l19 -6l-2 -6l-17 6v-6q0 -6 -6 -6h-6l-6 6v42h-6v-42l-6 -6h-6q-6 0 -6 6v6l-17 -6l-2 6l19 6v6h-18v6h18v6l-19 6l2 6l17 -6v6q0 6 6 6v6q0 5 5 6l-6 6h-11v6h13l12 -12h4l12 12h13v-6h-11l-6 -6q5 -1 5 -6v-6q6 0 6 -6v-6l17 6l2 -6l-19 -6v-6h18v-6h-18z
-M54 54v6h-18v-6h18z" />
- <glyph glyph-name="logo-github" unicode="&#xf092;"
-d="M40 58h-1h1v0zM40 58v0v-3v-1h-3q-6 0 -6 6v7h-3v3l3 1v5h5v-5h3h1v-4h-1h-3v-7q0 -2 2 -2h1h1zM90 63q0 5 -3 4l-2 -1v-7q1 -1 2 -1q3 0 3 5zM95 63q0 -9 -6 -9l-6 2v-1v-1h-3l-1 1v23l1 1h4l1 -1v-8q1 2 4 2q6 0 6 -9zM77 71v0v-16v-1h-3l-1 1v1q-2 -2 -5 -2q-6 0 -6 6
-v11h5v-10q0 -3 2 -3l3 1v12h5zM26 71v0v-16v-1h-4q-1 0 -1 1v16h1h4zM24 78q3 0 3 -3t-3 -3t-3 3t3 3zM59 79v-1v-23v-1h-4l-1 1v10h-7v-10v-1h-5v1v23v1h5v-1v-8h7v8l1 1h4zM19 68v-12q-3 -2 -7 -2q-12 0 -12 13t11 13q5 0 7 -2l-1 -4q-3 1 -5 1q-7 0 -7 -8t6 -8h3v5h-4v4
-v1h8z" />
- <glyph glyph-name="file-binary" unicode="&#xf094;"
-d="M24 12h6v-6h-18v6h6v12h-6v6h12v-18zM72 57v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM66 54l-18 18h-42v-72h60v54zM48 60v-18h6v-6h-18v6h6v12h-6v6h12zM12 60h18v-24h-18v24zM18 42h6v12h-6v-12zM36 30h18v-24h-18v24zM42 12h6v12h-6v-12z" />
- <glyph glyph-name="database" unicode="&#xf096;"
-d="M36 -6q-36 0 -36 12v12q0 1 1 3q7 -9 35 -9t35 9q1 -2 1 -3v-12q0 -12 -36 -12zM36 18q-36 0 -36 12v12q0 1 1 2v1q7 -9 35 -9t35 9v-1q1 -1 1 -2v-12q0 -12 -36 -12zM36 42q-36 0 -36 12v6v6q0 12 36 12t36 -12v-6v-6q0 -12 -36 -12zM36 72q-24 0 -24 -6t24 -6t24 6
-t-24 6z" />
- <glyph glyph-name="server" unicode="&#xf097;"
-d="M66 48q6 0 6 -6v-12q0 -6 -6 -6h-60q-6 0 -6 6v12q0 6 6 6h60zM12 30v12h-6v-12h6zM24 30v12h-6v-12h6zM36 30v12h-6v-12h6zM48 30v12h-6v-12h6zM66 78q6 0 6 -6v-12q0 -6 -6 -6h-60q-6 0 -6 6v12q0 6 6 6h60zM12 60v12h-6v-12h6zM24 60v12h-6v-12h6zM36 60v12h-6v-12h6z
-M48 60v12h-6v-12h6zM66 66v6h-6v-6h6zM66 18q6 0 6 -6v-12q0 -6 -6 -6h-60q-6 0 -6 6v12q0 6 6 6h60zM12 0v12h-6v-12h6zM24 0v12h-6v-12h6zM36 0v12h-6v-12h6zM48 0v12h-6v-12h6z" />
- <glyph glyph-name="diff-ignored" unicode="&#xf099;"
-d="M78 78q6 0 6 -6v-72q0 -6 -6 -6h-72q-6 0 -6 6v72q0 6 6 6h72zM78 0v72h-72v-72h72zM27 12h-9v9l39 39h9v-9z" />
- <glyph glyph-name="ellipsis" unicode="&#xf09a;"
-d="M66 54q6 0 6 -6v-24q0 -6 -6 -6h-60q-6 0 -6 6v24q0 6 6 6h60zM24 30v12h-12v-12h12zM42 30v12h-12v-12h12zM60 30v12h-12v-12h12z" />
- <glyph glyph-name="no-newline" unicode="&#xf09c;"
-d="M96 54v-18q0 -6 -6 -6h-18v-12l-18 18l18 18v-12h12v12h12zM48 36q0 -10 -7 -17t-17 -7t-17 7t-7 17t7 17t17 7t17 -7t7 -17zM9 26l25 25q-5 3 -10 3q-7 0 -12.5 -5.5t-5.5 -12.5q0 -5 3 -10zM42 36q0 5 -3 10l-25 -25q5 -3 10 -3q7 0 12.5 5.5t5.5 12.5z" />
- <glyph glyph-name="hubot" unicode="&#xf09d;"
-d="M18 48h48q6 0 6 -6v-12q0 -6 -6 -6h-48q-6 0 -6 6v12q0 6 6 6zM66 38v4h-4l-8 -8l-8 8h-8l-8 -8l-8 8h-4v-4l8 -8h8l8 8l8 -8h8zM30 18h24v-6h-24v6zM42 72q17 0 29.5 -11.5t12.5 -27.5v-27q0 -6 -6 -6h-72q-6 0 -6 6v27q0 16 12.5 27.5t29.5 11.5zM78 6v27
-q0 14 -10.5 24t-25.5 10t-25.5 -10t-10.5 -24v-27h72z" />
- <glyph glyph-name="arrow-small-up" unicode="&#xf09f;"
-d="M18 54l18 -24h-12v-12h-12v12h-12z" />
- <glyph glyph-name="arrow-small-down" unicode="&#xf0a0;"
-d="M24 42h12l-18 -24l-18 24h12v12h12v-12z" />
- <glyph glyph-name="arrow-small-left" unicode="&#xf0a1;"
-d="M24 42h12v-12h-12v-12l-24 18l24 18v-12z" />
- <glyph glyph-name="chevron-up" unicode="&#xf0a2;"
-d="M60 24l-9 -9l-21 23l-21 -23l-9 9l30 30z" />
- <glyph glyph-name="chevron-down" unicode="&#xf0a3;"
-d="M30 18l-30 30l9 9l21 -23l21 23l9 -9z" />
- <glyph glyph-name="chevron-left" unicode="&#xf0a4;"
-d="M33 66l9 -9l-22 -21l22 -21l-9 -9l-30 30z" />
- <glyph glyph-name="triangle-up" unicode="&#xf0aa;"
-d="M72 18h-72l36 36z" />
- <glyph glyph-name="git-compare" unicode="&#xf0ac;"
-d="M30 12v12l18 -18l-18 -18v12h-6q-7 0 -12.5 5.5t-5.5 12.5v38q-6 3 -6 10q0 12 12 12t12 -12q0 -7 -6 -10v-38q0 -2 2 -4t4 -2h6zM12 73q-7 0 -7 -7t7 -7t7 7t-7 7zM78 16q6 -3 6 -10q0 -12 -12 -12t-12 12q0 7 6 10v38q0 2 -2 4t-4 2h-6v-12l-18 18l18 18v-12h6
-q7 0 12.5 -5.5t5.5 -12.5v-38zM72 -1q7 0 7 7t-7 7t-7 -7t7 -7z" />
- <glyph glyph-name="logo-gist" unicode="&#xf0ad;"
-d="M18 50v4h14v-22q-6 -2 -14 -2q-18 0 -18 23t18 23q7 0 12 -2v-4q-6 3 -12 3q-14 0 -14 -19.5t14 -19.5q7 0 9 1v15h-9zM43 36v0q0 -3 2 -3v-3q-6 0 -6 7v24h4v-25zM44 70q0 -3 -3 -3t-3 3t3 3t3 -3zM60 48v0q11 -1 11 -9q0 -9 -12 -9q-5 0 -9 2v3q4 -1 9 -1q8 0 8 5t-7 5
-q-11 1 -11 8q0 9 12 9q5 0 8 -1v-4q-4 1 -8 1q-8 0 -8 -5q0 -4 7 -4zM93 57v0h-9v-18q0 -5 6 -5h2v-4h-3q-9 0 -9 8v19h-6v2l6 2v8l4 1v-9h9v-4z" />
- <glyph glyph-name="file-symlink-file" unicode="&#xf0b0;"
-d="M51 78l21 -21v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM66 0v54l-18 18h-42v-72h60zM36 57l24 -18l-24 -18v12q-9 0 -15.5 -4t-8.5 -14q0 15 6.5 22.5t17.5 7.5v12z" />
- <glyph glyph-name="file-symlink-directory" unicode="&#xf0b1;"
-d="M78 60q6 0 6 -6v-48q0 -6 -6 -6h-72q-6 0 -6 6v60q0 6 6 6h30q6 0 6 -6v-6h36zM6 66v-6h30v6h-30zM42 12l24 18l-24 18v-12q-11 0 -17.5 -7.5t-6.5 -22.5q2 10 8.5 14t15.5 4v-12z" />
- <glyph glyph-name="squirrel" unicode="&#xf0b2;"
-d="M72 78q10 0 17 -7t7 -17q0 -12 -7.5 -14.5t-10.5 2.5q-5 4 -8 -3q-2 -4 2 -9q6 -8 6 -15q0 -21 -30 -21h-36q0 6 6 6h6q-19 17 0 24q-7 0 -11.5 3t-6.5 3q-5 0 -4.5 3t4.5 3q2 0 8.5 -3t7.5 1q1 1 0.5 3.5t-3.5 2.5q-12 -2 -15 3q0 7 3 11.5t5 6.5l3 1l1 4q2 0 3 -2l2 2
-l3 -4q7 0 15.5 -10t8.5 -28q1 6 1 11.5v9t-0.5 8t-0.5 7.5q0 8 7 13t17 5zM15 48q3 0 3 3t-3 3t-3 -3t3 -3z" />
- <glyph glyph-name="globe" unicode="&#xf0b6;"
-d="M42 78q17 0 29.5 -12.5t12.5 -29.5q0 -15 -9.5 -26.5t-23.5 -14.5l1.5 2t2.5 3q2 1 8 5q1 1 2 3l3 3q1 1 4.5 6.5t2.5 6.5q-1 2 -4.5 2h-3.5l-0.5 1.5t-1 2t-2.5 1t-5 1.5q-3 2 -6 1l-2 -1.5l-2 -1.5q-6 1 -6 4q0 2 -3 3v1q1 2 0 3l-3 -2t-4 1q-2 5 4 6q2 1 4 0.5
-t2.5 -1.5t1.5 -1v2q-1 1 -1 2t1.5 2l1.5 1q-1 5 3 5q-1 1 0 2t1 0l2 2q-2 2 1 4q-4 3 -5 3q-1 1 -1.5 0.5t-1.5 0.5q-1 0 -1.5 0.5t-1.5 -0.5q1 -2 1 -3.5t-3 -0.5q0 1 -0.5 1t-1.5 1q-2 1 -1 2q1 0 2 0.5t0 1.5l1 1h-1q-2 0 -3.5 1l-1.5 1l-2 -1h-2q-5 2 -7 0l-7 -5l5 1
-q1 0 1 -2.5v-3.5l-1 -1q0 -1 -1 -3t-1 -3t1 -5q2 -3 2 -4v-1q2 -3 2 -2.5t-1 2.5l-1 2h1l1 -2q0 -1 1 -1q1 -2 1 -3q0 -3 3 -4q6 -2 8 -3h1t1 -0.5t0.5 -1l1.5 -1.5q2 -2 3 -2l1 1q2 0 2 -1v-1.5v-0.5q-2 -5 -2 -6q1 -2 1 -3q1 -1 2 -3t3 -3q3 -2 -1 -11q-1 -1 -1 -3.5
-t1 -2.5q-4 -1 -8 -1q-17 0 -29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5zM52 39q-3 -1 -5 0l-4 2h-1l1 1q2 0 4.5 -1.5l2.5 -1.5l1 0.5t1 -0.5v0zM38 74l1 1v0h3zM45 68q2 0 1 2q0 1 -2 2h-1q0 1 -2 1h-2l1 -1q5 0 2 -3zM54 69q1 0 0 2q-1 1 -1 2q0 2 -4 3h-6q-1 -1 0 -2h1
-q2 0 5 -2q4 -4 5 -3z" />
- <glyph glyph-name="unmute" unicode="&#xf0ba;"
-d="M72 36q0 -10 -7 -17l-4 4q5 5 5 13t-5 13l4 4q7 -7 7 -17zM46 70q2 2 5 1t3 -4v-62q0 -3 -3 -4t-5 1l-22 22h-12q-6 0 -6 6v12q0 6 6 6h12zM82 70q14 -14 14 -34t-14 -34l-4 4q12 12 12 29.5t-12 30.5zM74 61q10 -10 10 -25t-10 -26l-5 5q9 8 9 20.5t-9 21.5z" />
- <glyph glyph-name="mention" unicode="&#xf0be;"
-d="M39 -6q-17 0 -28 10.5t-11 29.5q0 22 14 36t33 14q17 0 27 -10.5t10 -27.5q0 -13 -7 -21.5t-16 -8.5q-10 0 -11 9q-7 -7 -14 -7q-14 0 -14 15q0 10 6.5 18.5t15.5 8.5q6 0 9 -5l1 4h6l-4 -23q-3 -13 6 -13q6 0 10.5 6.5t4.5 16.5t-3.5 17t-10.5 11t-17 4q-16 0 -28 -12
-t-12 -31q0 -16 9.5 -25.5t24.5 -9.5q10 0 18 5l3 -5q-9 -6 -22 -6zM38 24q5 0 10 6l3 18q-3 5 -7 5q-6 0 -10.5 -6t-4.5 -13q0 -10 9 -10z" />
- <glyph glyph-name="package" unicode="&#xf0c4;"
-d="M6 58q0 5 4 6l40 11h2l40 -11q4 -1 4 -6v-44q0 -5 -4 -6l-40 -11h-2l-40 11q-4 1 -4 6v44zM48 4v40l-36 10v-41zM12 60l39 -10l15 4l-39 10zM90 13v41l-12 -3v-15l-12 -3v15l-12 -4v-40zM78 57l12 3l-39 10l-12 -3z" />
- <glyph glyph-name="browser" unicode="&#xf0c5;"
-d="M30 66v-6h6v6h-6zM18 66v-6h6v6h-6zM6 66v-6h6v6h-6zM78 6v48h-72v-48h72zM78 60v6h-36v-6h36zM84 66v-60q0 -6 -6 -6h-72q-6 0 -6 6v60q0 6 6 6h72q6 0 6 -6z" />
- <glyph glyph-name="terminal" unicode="&#xf0c8;"
-d="M42 24h24v-6h-24v6zM24 18l-4 4l13 14l-13 14l4 4l18 -18zM84 66v-60q0 -6 -6 -6h-72q-6 0 -6 6v60q0 6 6 6h72q6 0 6 -6zM78 66h-72v-60h72v60z" />
- <glyph glyph-name="markdown" unicode="&#xf0c9;"
-d="M89 66q7 0 7 -7v-46q0 -7 -7 -7h-82q-7 0 -7 7v46q0 7 7 7h82zM54 18v36h-12l-9 -12l-9 12h-12v-36h12v18l9 -12l9 12v-18h12zM72 15l15 21h-9v18h-12v-18h-9z" />
- <glyph glyph-name="dash" unicode="&#xf0ca;"
-d="M0 42h48v-12h-48v12z" />
- <glyph glyph-name="fold" unicode="&#xf0cc;"
-d="M42 30l18 -18h-12v-18h-12v18h-12zM60 66l-18 -18l-18 18h12v18h12v-18h12zM84 54l-15 -15l15 -15q0 -6 -6 -6h-15l-6 6h18l-12 12h-42l-12 -12h18l-6 -6h-15q-6 0 -6 6l15 15l-15 15q0 6 6 6h15l6 -6h-18l12 -12h42l12 12h-18l6 6h15q6 0 6 -6z" />
- <glyph glyph-name="inbox" unicode="&#xf0cf;"
-d="M84 30v-30q0 -6 -6 -6h-72q-6 0 -6 6v30l7 43q1 5 6 5h58q5 0 6 -5zM64 27q2 3 6 3h8l-6 42h-60l-6 -42h8q4 0 6 -3l2 -6q2 -3 6 -3h28q4 0 6 3z" />
- <glyph glyph-name="trashcan" unicode="&#xf0d0;"
-d="M66 72q6 0 6 -6v-6q0 -6 -6 -6v-54q0 -6 -6 -6h-42q-6 0 -6 6v54q-6 0 -6 6v6q0 6 6 6h12q0 6 6 6h18q6 0 6 -6h12zM60 0v54h-6v-48h-6v48h-6v-48h-6v48h-6v-48h-6v48h-6v-54h42zM66 60v6h-54v-6h54z" />
- <glyph glyph-name="paintcan" unicode="&#xf0d1;"
-d="M36 84q15 0 25.5 -10.5t10.5 -25.5v-6q0 -6 -6 -6v-30q0 -12 -30 -12t-30 12v30q-6 0 -6 6v6q0 15 10.5 25.5t25.5 10.5zM54 24q6 0 6 6v11q-9 -5 -24 -5t-24 5v-11q0 -6 6 -6v-6q0 -6 6 -6t6 6v3q0 3 3 3t3 -3v-12q0 -3 3 -3t3 3v15q0 3 3 3t3 -3v-3q0 -3 3 -3t3 3v3z
-M36 42q16 0 22 6q-6 6 -22 6t-22 -6q6 -6 22 -6zM36 60q30 0 30 -12q0 12 -9 21t-21 9t-21 -9t-9 -21q0 12 30 12z" />
- <glyph glyph-name="flame" unicode="&#xf0d2;"
-d="M30 82v0q15 -9 17 -21t-5 -16q-7 -7 0 -11q4 -2 7.5 0.5t3.5 7.5q-1 15 11 17q-2 -5 -1.5 -9.5t2.5 -7t4.5 -7.5t2.5 -10q0 -7 -3 -13.5t-9.5 -12.5t-16.5 -7q7 3 7 10q0 6 -4 9t-10 1t-10 3.5t-1 14.5q-11 -10 -10 -22.5t12 -17.5q-15 3 -21.5 12t-5.5 18t5 16
-q4 5 12 11.5t10 8.5q9 10 3 26z" />
- <glyph glyph-name="briefcase" unicode="&#xf0d3;"
-d="M54 60h24q6 0 6 -6v-48q0 -6 -6 -6h-72q-6 0 -6 6v48q0 6 6 6h24v6q0 6 6 6h12q6 0 6 -6v-6zM36 66v-6h12v6h-12zM78 30v24h-6v-18h-60v18h-6v-24h30v-6h12v6h30z" />
- <glyph glyph-name="plug" unicode="&#xf0d4;"
-d="M84 48h-24v-18h24v-6h-24v-12h-12v6h-12q-9 0 -12 12l-6 6q-12 0 -12 -12v-12h-6v12q0 7 5.5 12.5t12.5 5.5l6 6q2 12 12 12h12v6h12v-12h24v-6z" />
- <glyph glyph-name="circuit-board" unicode="&#xf0d6;"
-d="M18 54q0 6 6 6t6 -6t-6 -6t-6 6zM66 54q0 -6 -6 -6t-6 6t6 6t6 -6zM66 18q0 -6 -6 -6t-6 6t6 6t6 -6zM78 78q6 0 6 -6v-72q0 -6 -6 -6h-54l18 18h7q3 -7 11 -7q6 0 10 5t2 11q-1 7 -9 9q-9 2 -14 -6h-13l-30 -30q-6 0 -6 6v72q0 6 6 6h12v-13q-9 -4 -6 -14q2 -7 9 -9
-q9 -3 14 6h14q3 -7 11 -7q6 0 10 5t2 11q-1 7 -9 9q-9 2 -14 -6h-14q-2 3 -5 5v13h48z" />
- <glyph glyph-name="mortar-board" unicode="&#xf0d7;"
-d="M47 29v0h2l23 7v-15q0 -9 -24 -9t-24 9q0 2 -6 19l-4 14q3 -3 10 -18zM49 67l45 -14q2 -1 2 -2.5t-2 -1.5l-45 -15h-2l-29 10v-9q3 -2 3 -5q0 -2 -1 -3q1 -1 1 -3v-16q0 -2 -6 -2t-6 2v16q0 1 1 3q-1 1 -1 3q0 3 3 5v11l-10 3q-2 0 -2 1.5t2 2.5l45 14h2zM48 48q6 0 6 3
-t-6 3t-6 -3t6 -3z" />
- <glyph glyph-name="law" unicode="&#xf0d8;"
-d="M42 60q-9 0 -9 9t9 9t9 -9t-9 -9zM84 24q0 -12 -12 -12h-6q-12 0 -12 12l12 24h-6q-6 0 -6 6h-6v-48q6 0 6 -6h6q6 0 6 -6h-48q0 6 6 6h6q0 6 6 6v48h-6q0 -6 -6 -6h-6l12 -24q0 -12 -12 -12h-6q-12 0 -12 12l12 24h-6v6h18q0 6 6 6h24q6 0 6 -6h18v-6h-6zM15 42l-9 -18
-h18zM78 24l-9 18l-9 -18h18z" />
- <glyph glyph-name="thumbsup" unicode="&#xf0da;"
-d="M84 0l6 36q0 6 -6 6h-12q-6 0 -6 6v6q0 6 -4 15t-8 9q-2 0 -4 -2t-2 -4q3 -16 -5 -25q-10 -11 -19 -11v-36l10 -6h38q12 0 12 6zM84 48q12 0 12 -12v-1l-6 -36q-1 -11 -18 -11h-38q-2 0 -3 1l-9 5h-10q-12 0 -12 12v24q0 5 3.5 8.5t8.5 3.5h12q6 0 14 9q6 7 4 20
-q-1 5 3 8q3 5 9 5q7 0 12.5 -11t5.5 -19v-6h12z" />
- <glyph glyph-name="thumbsdown" unicode="&#xf0db;"
-d="M96 37v-1q0 -12 -12 -12h-12v-6q0 -8 -5.5 -19t-12.5 -11q-6 0 -9 5q-4 3 -3 8q2 13 -4 20q-8 9 -14 9h-12q-12 0 -12 12v24q0 12 12 12h10l9 5q1 1 3 1h38q17 0 18 -11zM84 30q6 0 6 6l-6 36q0 6 -12 6h-38l-10 -6v-36q9 0 19 -11q8 -9 5 -25q0 -2 2 -4t4 -2t5 4.5t5 10
-t2 9.5v6q0 6 6 6h12z" />
- <glyph glyph-name="desktop-download" unicode="&#xf0dc;"
-d="M24 48h18v36h12v-36h18l-24 -24zM90 72q6 0 6 -6v-54q0 -6 -6 -6h-32q3 -7 14 -12h-48q11 5 14 12h-32q-6 0 -6 6v54q0 6 6 6h24v-6h-24v-48h84v48h-24v6h24z" />
- <glyph glyph-name="beaker" unicode="&#xf0dd;"
-d="M86 -4q4 -8 -5 -8h-72q-3 0 -5 2.5t0 5.5l20 46v24h-6v6h54v-6h-6v-24zM22 24h45l-7 18v24h-30v-24zM48 36h6v-6h-6v6zM42 42h-6v6h6v-6zM42 60h6v-6h-6v6zM42 78h-6v6h6v-6z" />
- <glyph glyph-name="bell" unicode="&#xf0de;"
-d="M84 12v-6h-84v6l4 3q3 3 8 27q2 10 8 17.5t11 10.5l5 2q0 6 6 6t6 -6q20 -7 25 -30q5 -24 7 -27zM42 -12q-12 0 -12 12h24q0 -12 -12 -12z" />
- <glyph glyph-name="watch" unicode="&#xf0e0;"
-d="M36 36h12v-6h-18v24h6v-18zM72 36q0 -21 -18 -31v-11q0 -6 -6 -6h-24q-6 0 -6 6v11q-18 10 -18 31t18 31v11q0 6 6 6h24q6 0 6 -6v-11q18 -10 18 -31zM66 36q0 12 -9 21t-21 9t-21 -9t-9 -21t9 -21t21 -9t21 9t9 21z" />
- <glyph glyph-name="shield" unicode="&#xf0e1;"
-d="M42 84l42 -12v-36q0 -19 -16 -33.5t-26 -14.5t-26 14.5t-16 33.5v36zM30 18h24l-7 17q0 2 2 3q5 4 5 10q0 3 -1.5 6t-4.5 4.5t-6 1.5q-5 0 -8.5 -3.5t-3.5 -8.5q0 -6 5 -10q2 -1 2 -3z" />
- <glyph glyph-name="bold" unicode="&#xf0e2;"
-d="M6 72h23q26 0 26 -18q0 -12 -10 -15v-1q14 -3 14 -17q0 -21 -28 -21h-25v72zM28 42q14 0 14 10t-14 10h-9v-20h9zM30 10q16 0 16 12q0 11 -16 11h-11v-23h11z" />
- <glyph glyph-name="text-size" unicode="&#xf0e3;"
-d="M73 36l-8 28h-1l-8 -28h17zM30 30q-5 19 -6 22l-6 -22h12zM92 9h-12l-5 18h-21l-6 -18h-12l-3 13h-18l-3 -13h-12l18 51h13l12 -33l15 46h13z" />
- <glyph glyph-name="italic" unicode="&#xf0e4;"
-d="M17 54h12l-11 -54h-12zM19 70q0 8 8 8q7 0 7 -6q0 -8 -8 -8q-7 0 -7 6z" />
- <glyph glyph-name="tasklist" unicode="&#xf0e5;"
-d="M92 30h-46q-4 0 -4 6t4 6h46q4 0 4 -6t-4 -6zM58 60q-4 0 -4 6t4 6h34q4 0 4 -6t-4 -6h-34zM0 61l8 7l10 -9l25 25l8 -8l-33 -33zM46 12h46q4 0 4 -6t-4 -6h-46q-4 0 -4 6t4 6z" />
- <glyph glyph-name="verified" unicode="&#xf0e6;"
-d="M94 42q5 -6 0 -12l-6 -8q-2 -2 -2 -4l-2 -11q0 -7 -8 -8l-10 -1q-2 0 -4 -2l-8 -6q-6 -5 -12 0l-8 6q-2 2 -4 2l-11 2q-7 0 -8 8l-1 10q0 2 -2 4l-6 8q-5 6 0 12l6 8q2 2 2 4l2 11q0 7 8 8l10 1q2 0 4 2l8 6q6 5 12 0l8 -6q2 -2 4 -2l11 -2q7 0 8 -8l1 -10q0 -2 2 -4z
-M39 12l39 39l-9 9l-30 -30l-12 12l-9 -9z" />
- <glyph glyph-name="smiley" unicode="&#xf0e7;"
-d="M48 84q20 0 34 -14t14 -34t-14 -34t-34 -14t-34 14t-14 34t14 34t34 14zM76.5 7.5q5.5 5.5 9 12.5t3.5 16t-3.5 16t-9 12.5t-12.5 9t-16 3.5t-16 -3.5t-12.5 -9t-9 -12.5t-3.5 -16t3.5 -16t9 -12.5t12.5 -9t16 -3.5t16 3.5t12.5 9zM24 43v4q0 7 7 7h4q7 0 7 -7v-4
-q0 -7 -7 -7h-4q-7 0 -7 7zM54 43v4q0 7 7 7h4q7 0 7 -7v-4q0 -7 -7 -7h-4q-7 0 -7 7zM78 24q-7 -18 -30 -18t-30 18q-2 6 4 6h52q6 0 4 -6z" />
- <glyph glyph-name="unverified" unicode="&#xf0e8;"
-d="M94 42q5 -6 0 -12l-6 -8q-2 -2 -2 -4l-2 -11q0 -7 -8 -8l-10 -1q-2 0 -4 -2l-8 -6q-6 -5 -12 0l-8 6q-2 2 -4 2l-11 2q-7 0 -8 8l-1 10q0 2 -2 4l-6 8q-5 6 0 12l6 8q2 2 2 4l2 11q0 7 8 8l10 1q2 0 4 2l8 6q6 5 12 0l8 -6q2 -2 4 -2l11 -2q7 0 8 -8l1 -10q0 -2 2 -4z
-M54 15v6q0 3 -3 3h-6q-3 0 -3 -3v-6q0 -3 3 -3h6q3 0 3 3zM63 44q1 1 1 4t-1 5t-3 4l-6 2t-7 1q-3 0 -6 -1t-5.5 -2.5t-3.5 -3.5q-2 -3 -2 -5h12q0 1 1 2l1 1l1 1h2q3 0 4 -1t1 -4q0 -1 -1 -3t-3 -3t-3 -2.5t-1 -2.5q-1 -2 -1 -3v-3h10v2t1 1q0 1 1 2t1 2l4 2q0 1 1.5 2.5
-t1.5 2.5z" />
- <glyph glyph-name="ellipses" unicode="&#xf101;"
-d="M66 54q6 0 6 -6v-24q0 -6 -6 -6h-60q-6 0 -6 6v24q0 6 6 6h60zM24 30v12h-12v-12h12zM42 30v12h-12v-12h12zM60 30v12h-12v-12h12z" />
- <glyph glyph-name="file" unicode="&#xf102;"
-d="M36 54h-24v6h24v-6zM12 36v6h42v-6h-42zM12 24v6h42v-6h-42zM12 12v6h42v-6h-42zM72 57v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM66 54l-18 18h-42v-72h60v54z" />
- <glyph glyph-name="grabber" unicode="&#xf103;"
-d="M48 60v-6h-48v6h48zM0 36v6h48v-6h-48zM0 18v6h48v-6h-48z" />
- <glyph glyph-name="plus-small" unicode="&#xf104;"
-d="M24 42h18v-6h-18v-18h-6v18h-18v6h18v18h6v-18z" />
- <glyph glyph-name="reply" unicode="&#xf105;"
-d="M36 63q20 -2 34 -16.5t14 -43.5q-16 36 -48 36v-21l-33 33l33 33v-21z" />
- <glyph glyph-name="device-desktop" unicode="&#xf27c;"
-d="M90 72q6 0 6 -6v-54q0 -6 -6 -6h-32q3 -7 14 -12h-48q11 5 14 12h-32q-6 0 -6 6v54q0 6 6 6h84zM90 18v48h-84v-48h84z" />
- </font>
-</defs></svg>
diff --git a/public/vendor/assets/octicons/octicons.ttf b/public/vendor/assets/octicons/octicons.ttf
deleted file mode 100644
index ff0dda1847..0000000000
--- a/public/vendor/assets/octicons/octicons.ttf
+++ /dev/null
Binary files differ
diff --git a/public/vendor/assets/octicons/octicons.woff b/public/vendor/assets/octicons/octicons.woff
deleted file mode 100644
index 01aa43d775..0000000000
--- a/public/vendor/assets/octicons/octicons.woff
+++ /dev/null
Binary files differ
diff --git a/public/vendor/assets/octicons/octicons.woff2 b/public/vendor/assets/octicons/octicons.woff2
deleted file mode 100644
index 69e7b2a404..0000000000
--- a/public/vendor/assets/octicons/octicons.woff2
+++ /dev/null
Binary files differ
diff --git a/templates/admin/org/list.tmpl b/templates/admin/org/list.tmpl
index 26f91faa74..fc512f2ad9 100644
--- a/templates/admin/org/list.tmpl
+++ b/templates/admin/org/list.tmpl
@@ -32,7 +32,7 @@
<td>
<a href="{{.HomeLink}}">{{.Name}}</a>
{{if .Visibility.IsPrivate}}
- <span class="text gold"><i class="octicon octicon-lock"></i></span>
+ <span class="text gold">{{svg "octicon-lock" 16}}</span>
{{end}}
</td>
<td>{{.NumTeams}}</td>
diff --git a/templates/admin/repo/list.tmpl b/templates/admin/repo/list.tmpl
index 793d9c620e..f946b8a461 100644
--- a/templates/admin/repo/list.tmpl
+++ b/templates/admin/repo/list.tmpl
@@ -33,7 +33,7 @@
<td>
<a href="{{AppSubUrl}}/{{.Owner.Name}}">{{.Owner.Name}}</a>
{{if .Owner.Visibility.IsPrivate}}
- <span class="text gold"><i class="octicon octicon-lock"></i></span>
+ <span class="text gold">{{svg "octicon-lock" 16}}</span>
{{end}}
</td>
<td><a href="{{AppSubUrl}}/{{.Owner.Name}}/{{.Name}}">{{.Name}}</a></td>
diff --git a/templates/base/head.tmpl b/templates/base/head.tmpl
index 440dd3e5e2..c9ae07f632 100644
--- a/templates/base/head.tmpl
+++ b/templates/base/head.tmpl
@@ -37,6 +37,7 @@
<meta name="referrer" content="no-referrer" />
<meta name="_csrf" content="{{.CsrfToken}}" />
<meta name="_suburl" content="{{AppSubUrl}}" />
+ <meta name="_staticprefix" content="{{StaticUrlPrefix}}" />
{{if .IsSigned}}
<meta name="_uid" content="{{.SignedUser.ID}}" />
{{end}}
@@ -98,10 +99,9 @@
<link rel="apple-touch-icon" href="{{StaticUrlPrefix}}/img/apple-touch-icon.png">
<link rel="mask-icon" href="{{StaticUrlPrefix}}/img/gitea-safari.svg" color="#609926">
<link rel="stylesheet" href="{{StaticUrlPrefix}}/vendor/assets/font-awesome/css/font-awesome.min.css">
- <link rel="stylesheet" href="{{StaticUrlPrefix}}/vendor/assets/octicons/octicons.min.css">
<link rel="preload" as="font" href="{{StaticUrlPrefix}}/fomantic/themes/default/assets/fonts/icons.woff2" type="font/woff2" crossorigin="anonymous">
<link rel="preload" as="font" href="{{StaticUrlPrefix}}/fomantic/themes/default/assets/fonts/outline-icons.woff2" type="font/woff2" crossorigin="anonymous">
- <link rel="preload" as="font" href="{{StaticUrlPrefix}}/vendor/assets/octicons/octicons.woff2?ef21c39f0ca9b1b5116e5eb7ac5eabe6" type="font/woff2" crossorigin="anonymous">
+ <link rel="preload" as="image" href="{{StaticUrlPrefix}}/img/svg/icons.svg">
{{if .RequireSimpleMDE}}
<link rel="stylesheet" href="{{StaticUrlPrefix}}/vendor/plugins/simplemde/simplemde.min.css">
{{end}}
diff --git a/templates/base/head_navbar.tmpl b/templates/base/head_navbar.tmpl
index 4219e33775..51a021d0e5 100644
--- a/templates/base/head_navbar.tmpl
+++ b/templates/base/head_navbar.tmpl
@@ -44,7 +44,7 @@
<div class="right stackable menu">
<a href="{{AppSubUrl}}/notifications" class="item poping up" data-content='{{.i18n.Tr "notifications"}}' data-variation="tiny inverted">
<span class="text">
- <i class="fitted octicon octicon-bell"></i>
+ <span class="fitted">{{svg "octicon-bell" 16}}</span>
<span class="sr-mobile-only">{{.i18n.Tr "notifications"}}</span>
{{if .NotificationUnreadCount}}
@@ -57,20 +57,20 @@
<div class="ui dropdown jump item poping up" data-content="{{.i18n.Tr "create_new"}}" data-variation="tiny inverted">
<span class="text">
- <i class="fitted octicon octicon-plus"></i>
+ <span class="fitted">{{svg "octicon-plus" 16}}</span>
<span class="sr-mobile-only">{{.i18n.Tr "create_new"}}</span>
- <i class="fitted octicon octicon-triangle-down not-mobile"></i>
+ <span class="fitted not-mobile">{{svg "octicon-triangle-down" 16}}</span>
</span>
<div class="menu">
<a class="item" href="{{AppSubUrl}}/repo/create">
- <i class="octicon octicon-plus"></i> {{.i18n.Tr "new_repo"}}
+ <span class="fitted">{{svg "octicon-plus" 16}}</span> {{.i18n.Tr "new_repo"}}
</a>
<a class="item" href="{{AppSubUrl}}/repo/migrate">
- <i class="octicon octicon-repo-clone"></i> {{.i18n.Tr "new_migrate"}}
+ <span class="fitted">{{svg "octicon-repo-clone" 16}}</span> {{.i18n.Tr "new_migrate"}}
</a>
{{if .SignedUser.CanCreateOrganization}}
<a class="item" href="{{AppSubUrl}}/org/create">
- <i class="octicon octicon-organization"></i> {{.i18n.Tr "new_org"}}
+ <span class="fitted">{{svg "octicon-organization" 16}}</span> {{.i18n.Tr "new_org"}}
</a>
{{end}}
</div><!-- end content create new menu -->
@@ -81,7 +81,7 @@
<img class="ui tiny avatar image" width="24" height="24" src="{{.SignedUser.RelAvatarLink}}">
<span class="sr-only">{{.i18n.Tr "user_profile_and_more"}}</span>
<span class="mobile-only">{{.SignedUser.Name}}</span>
- <i class="fitted octicon octicon-triangle-down not-mobile" tabindex="-1"></i>
+ <span class="fitted not-mobile" tabindex="-1">{{svg "octicon-triangle-down" 16}}</span>
</span>
<div class="menu user-menu" tabindex="-1">
<div class="ui header">
@@ -90,19 +90,19 @@
<div class="divider"></div>
<a class="item" href="{{AppSubUrl}}/{{.SignedUser.Name}}">
- <i class="octicon octicon-person"></i>
+ {{svg "octicon-person" 16}}
{{.i18n.Tr "your_profile"}}<!-- Your profile -->
</a>
<a class="item" href="{{AppSubUrl}}/{{.SignedUser.Name}}?tab=stars">
- <i class="octicon octicon-star"></i>
+ {{svg "octicon-star" 16}}
{{.i18n.Tr "your_starred"}}
</a>
<a class="{{if .PageIsUserSettings}}active{{end}} item" href="{{AppSubUrl}}/user/settings">
- <i class="octicon octicon-settings"></i>
+ {{svg "octicon-settings" 16}}
{{.i18n.Tr "your_settings"}}<!-- Your settings -->
</a>
<a class="item" target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io">
- <i class="octicon octicon-question"></i>
+ {{svg "octicon-question" 16}}
{{.i18n.Tr "help"}}<!-- Help -->
</a>
{{if .IsAdmin}}
@@ -116,7 +116,7 @@
<div class="divider"></div>
<a class="item" href="{{AppSubUrl}}/user/logout">
- <i class="octicon octicon-sign-out"></i>
+ {{svg "octicon-sign-out" 16}}
{{.i18n.Tr "sign_out"}}<!-- Sign Out -->
</a>
</div><!-- end content avatar menu -->
@@ -129,11 +129,11 @@
<div class="right stackable menu">
{{if .ShowRegistrationButton}}
<a class="item{{if .PageIsSignUp}} active{{end}}" href="{{AppSubUrl}}/user/sign_up">
- <i class="octicon octicon-person"></i> {{.i18n.Tr "register"}}
+ {{svg "octicon-person" 16}} {{.i18n.Tr "register"}}
</a>
{{end}}
<a class="item{{if .PageIsSignIn}} active{{end}}" rel="nofollow" href="{{AppSubUrl}}/user/login?redirect_to={{.Link}}">
- <i class="octicon octicon-sign-in"></i> {{.i18n.Tr "sign_in"}}
+ {{svg "octicon-sign-in" 16}} {{.i18n.Tr "sign_in"}}
</a>
</div><!-- end anonymous right menu -->
diff --git a/templates/explore/navbar.tmpl b/templates/explore/navbar.tmpl
index 3bd52645e2..5433425972 100644
--- a/templates/explore/navbar.tmpl
+++ b/templates/explore/navbar.tmpl
@@ -1,16 +1,16 @@
<div class="ui secondary pointing tabular top attached borderless stackable menu navbar">
<a class="{{if .PageIsExploreRepositories}}active{{end}} item" href="{{AppSubUrl}}/explore/repos">
- <span class="octicon octicon-repo"></span> {{.i18n.Tr "explore.repos"}}
+ {{svg "octicon-repo" 16}} {{.i18n.Tr "explore.repos"}}
</a>
<a class="{{if .PageIsExploreUsers}}active{{end}} item" href="{{AppSubUrl}}/explore/users">
- <span class="octicon octicon-person"></span> {{.i18n.Tr "explore.users"}}
+ {{svg "octicon-person" 16}} {{.i18n.Tr "explore.users"}}
</a>
<a class="{{if .PageIsExploreOrganizations}}active{{end}} item" href="{{AppSubUrl}}/explore/organizations">
- <span class="octicon octicon-organization"></span> {{.i18n.Tr "explore.organizations"}}
+ {{svg "octicon-organization" 16}} {{.i18n.Tr "explore.organizations"}}
</a>
{{if .IsRepoIndexerEnabled}}
<a class="{{if .PageIsExploreCode}}active{{end}} item" href="{{AppSubUrl}}/explore/code">
- <span class="octicon octicon-code"></span> {{.i18n.Tr "explore.code"}}
+ {{svg "octicon-code" 16}} {{.i18n.Tr "explore.code"}}
</a>
{{end}}
</div>
diff --git a/templates/explore/organizations.tmpl b/templates/explore/organizations.tmpl
index 4e2bfc9fd9..6980622de1 100644
--- a/templates/explore/organizations.tmpl
+++ b/templates/explore/organizations.tmpl
@@ -12,18 +12,18 @@
<span class="header">
<a href="{{.HomeLink}}">{{.Name}}</a> {{.FullName}}
{{if .Visibility.IsPrivate}}
- <span class="text gold"><i class="octicon octicon-lock"></i></span>
+ <span class="text gold">{{svg "octicon-lock" 16}}</span>
{{end}}
</span>
<div class="description">
- {{if .Location}}
- <i class="octicon octicon-location"></i> {{.Location}}
- {{end}}
- {{if and .Website}}
- <i class="octicon octicon-link"></i>
- <a href="{{.Website}}" rel="nofollow">{{.Website}}</a>
- {{end}}
- <i class="octicon octicon-clock"></i> {{$.i18n.Tr "user.join_on"}} {{.CreatedUnix.FormatShort}}
+ {{if .Location}}
+ {{svg "octicon-location" 16}} {{.Location}}
+ {{end}}
+ {{if and .Website}}
+ {{svg "octicon-link" 16}}
+ <a href="{{.Website}}" rel="nofollow">{{.Website}}</a>
+ {{end}}
+ {{svg "octicon-clock" 16}} {{$.i18n.Tr "user.join_on"}} {{.CreatedUnix.FormatShort}}
</div>
</div>
</div>
diff --git a/templates/explore/repo_list.tmpl b/templates/explore/repo_list.tmpl
index fec304cc91..2dbfac5a2a 100644
--- a/templates/explore/repo_list.tmpl
+++ b/templates/explore/repo_list.tmpl
@@ -10,22 +10,22 @@
{{if .IsArchived}}<i class="archive icon archived-icon"></i>{{end}}
</a>
{{if .IsPrivate}}
- <span class="text gold"><i class="octicon octicon-lock"></i></span>
+ <span class="middle text gold">{{svg "octicon-lock" 16}}</span>
{{else if .IsFork}}
- <span><i class="octicon octicon-repo-forked"></i></span>
+ <span class="middle">{{svg "octicon-repo-forked" 16}}</span>
{{else if .IsMirror}}
- <span><i class="octicon octicon-repo-clone"></i></span>
+ <span class="middle">{{svg "octicon-repo-clone" 16}}</span>
{{else if .Owner}}
{{if .Owner.Visibility.IsPrivate}}
- <span class="text gold"><i class="octicon octicon-lock"></i></span>
+ <span class="text gold">{{svg "octicon-lock" 16}}</span>
{{end}}
{{end}}
<div class="ui right metas">
{{if .PrimaryLanguage }}
<span class="text grey"><i class="color-icon" style="background-color: {{.PrimaryLanguage.Color}}"></i>{{ .PrimaryLanguage.Language }}</span>
{{end}}
- <span class="text grey"><i class="octicon octicon-star"></i> {{.NumStars}}</span>
- <span class="text grey"><i class="octicon octicon-git-branch"></i> {{.NumForks}}</span>
+ <span class="text grey">{{svg "octicon-repo" 16}} {{.NumStars}}</span>
+ <span class="text grey">{{svg "octicon-git-branch" 16}} {{.NumForks}}</span>
</div>
</div>
<div class="description">
diff --git a/templates/explore/users.tmpl b/templates/explore/users.tmpl
index 32a36931c7..1929eb296c 100644
--- a/templates/explore/users.tmpl
+++ b/templates/explore/users.tmpl
@@ -11,14 +11,14 @@
<div class="content">
<span class="header"><a href="{{.HomeLink}}">{{.Name}}</a> {{.FullName}}</span>
<div class="description">
- {{if .Location}}
- <i class="octicon octicon-location"></i> {{.Location}}
- {{end}}
- {{if and $.ShowUserEmail .Email $.IsSigned (not .KeepEmailPrivate)}}
- <i class="octicon octicon-mail"></i>
- <a href="mailto:{{.Email}}" rel="nofollow">{{.Email}}</a>
- {{end}}
- <i class="octicon octicon-clock"></i> {{$.i18n.Tr "user.join_on"}} {{.CreatedUnix.FormatShort}}
+ {{if .Location}}
+ {{svg "octicon-location" 16}} {{.Location}}
+ {{end}}
+ {{if and $.ShowUserEmail .Email $.IsSigned (not .KeepEmailPrivate)}}
+ {{svg "octicon-mail" 16}}
+ <a href="mailto:{{.Email}}" rel="nofollow">{{.Email}}</a>
+ {{end}}
+ {{svg "octicon-clock" 16}} {{$.i18n.Tr "user.join_on"}} {{.CreatedUnix.FormatShort}}
</div>
</div>
</div>
diff --git a/templates/home.tmpl b/templates/home.tmpl
index 6616e3c870..5daea544fe 100644
--- a/templates/home.tmpl
+++ b/templates/home.tmpl
@@ -16,7 +16,7 @@
<div class="ui stackable middle very relaxed page grid">
<div class="eight wide center column">
<h1 class="hero ui icon header">
- <i class="octicon octicon-flame"></i> {{.i18n.Tr "startpage.install"}}
+ {{svg "octicon-flame" 16}} {{.i18n.Tr "startpage.install"}}
</h1>
<p class="large">
{{.i18n.Tr "startpage.install_desc" | Str2html}}
@@ -24,7 +24,7 @@
</div>
<div class="eight wide center column">
<h1 class="hero ui icon header">
- <i class="octicon octicon-device-desktop"></i> {{.i18n.Tr "startpage.platform"}}
+ {{svg "octicon-device-desktop" 16}} {{.i18n.Tr "startpage.platform"}}
</h1>
<p class="large">
{{.i18n.Tr "startpage.platform_desc" | Str2html}}
@@ -34,7 +34,7 @@
<div class="ui stackable middle very relaxed page grid">
<div class="eight wide center column">
<h1 class="hero ui icon header">
- <i class="octicon octicon-rocket"></i> {{.i18n.Tr "startpage.lightweight"}}
+ {{svg "octicon-rocket" 16}} {{.i18n.Tr "startpage.lightweight"}}
</h1>
<p class="large">
{{.i18n.Tr "startpage.lightweight_desc" | Str2html}}
@@ -42,7 +42,7 @@
</div>
<div class="eight wide center column">
<h1 class="hero ui icon header">
- <i class="octicon octicon-code"></i> {{.i18n.Tr "startpage.license"}}
+ {{svg "octicon-code" 16}} {{.i18n.Tr "startpage.license"}}
</h1>
<p class="large">
{{.i18n.Tr "startpage.license_desc" | Str2html}}
diff --git a/templates/org/header.tmpl b/templates/org/header.tmpl
index 806682aca9..2dc93dbf8d 100644
--- a/templates/org/header.tmpl
+++ b/templates/org/header.tmpl
@@ -9,11 +9,11 @@
<div class="ui right">
<div class="ui menu">
<a class="{{if $.PageIsOrgMembers}}active{{end}} item" href="{{$.OrgLink}}/members">
- <i class="octicon octicon-organization"></i>&nbsp;{{$.i18n.Tr "org.people"}}
+ {{svg "octicon-organization" 16}}&nbsp;{{$.i18n.Tr "org.people"}}
<div class="floating ui black label">{{.NumMembers}}</div>
</a>
<a class="{{if $.PageIsOrgTeams}}active{{end}} item" href="{{$.OrgLink}}/teams">
- <i class="octicon octicon-jersey"></i>&nbsp;{{$.i18n.Tr "org.teams"}}
+ {{svg "octicon-jersey" 16}}&nbsp;{{$.i18n.Tr "org.teams"}}
<div class="floating ui black label">{{.NumTeams}}</div>
</a>
</div>
diff --git a/templates/org/home.tmpl b/templates/org/home.tmpl
index 0aa575707a..46c590342b 100644
--- a/templates/org/home.tmpl
+++ b/templates/org/home.tmpl
@@ -7,12 +7,12 @@
<div id="org-info">
<div class="ui header">
{{.Org.DisplayName}}
- {{if .IsOrganizationOwner}}<a class="text grey" href="{{.OrgLink}}/settings"><span class="octicon octicon-gear"></span></a>{{end}}
+ {{if .IsOrganizationOwner}}<a class="middle text grey" href="{{.OrgLink}}/settings">{{svg "octicon-gear" 16}}</a>{{end}}
</div>
{{if .Org.Description}}<p class="desc">{{.Org.Description}}</p>{{end}}
<div class="text grey meta">
- {{if .Org.Location}}<div class="item"><span class="octicon octicon-location"></span> <span>{{.Org.Location}}</span></div>{{end}}
- {{if .Org.Website}}<div class="item"><span class="octicon octicon-link"></span> <a target="_blank" rel="noopener noreferrer" href="{{.Org.Website}}">{{.Org.Website}}</a></div>{{end}}
+ {{if .Org.Location}}<div class="item">{{svg "octicon-location" 16}} <span>{{.Org.Location}}</span></div>{{end}}
+ {{if .Org.Website}}<div class="item">{{svg "octicon-link" 16}} <a target="_blank" rel="noopener noreferrer" href="{{.Org.Website}}">{{.Org.Website}}</a></div>{{end}}
</div>
</div>
</div>
@@ -24,7 +24,7 @@
<div class="ui eleven wide column">
{{if .CanCreateOrgRepo}}
<div class="text right">
- <a class="ui green button" href="{{AppSubUrl}}/repo/create?org={{.Org.ID}}"><i class="octicon octicon-repo-create"></i> {{.i18n.Tr "new_repo"}}</a>
+ <a class="ui green button" href="{{AppSubUrl}}/repo/create?org={{.Org.ID}}">{{svg "octicon-repo-create" 16}} {{.i18n.Tr "new_repo"}}</a>
</div>
<div class="ui divider"></div>
{{end}}
@@ -38,7 +38,7 @@
<strong>{{.i18n.Tr "org.people"}}</strong>
{{if .IsOrganizationMember}}
<div class="ui right">
- <a class="text grey" href="{{.OrgLink}}/members">{{.Org.NumMembers}} <span class="octicon octicon-chevron-right"></span></a>
+ <a class="text grey" href="{{.OrgLink}}/members">{{.Org.NumMembers}} {{svg "octicon-chevron-right" 16}}</a>
</div>
{{end}}
</h4>
@@ -55,7 +55,7 @@
<div class="ui top attached header">
<strong>{{.i18n.Tr "org.teams"}}</strong>
<div class="ui right">
- <a class="text grey" href="{{.OrgLink}}/teams"><span>{{.Org.NumTeams}}</span> <span class="octicon octicon-chevron-right"></span></a>
+ <a class="text grey" href="{{.OrgLink}}/teams"><span>{{.Org.NumTeams}}</span> {{svg "octicon-chevron-right" 16}}</a>
</div>
</div>
<div class="ui attached table segment teams">
diff --git a/templates/org/member/members.tmpl b/templates/org/member/members.tmpl
index 03aadf97b8..81cfcf51e6 100644
--- a/templates/org/member/members.tmpl
+++ b/templates/org/member/members.tmpl
@@ -34,7 +34,7 @@
{{$.i18n.Tr "org.members.member_role"}}
</div>
<div class="meta">
- <strong>{{if index $.MembersIsUserOrgOwner .ID}}<span class="octicon octicon-shield"></span> {{$.i18n.Tr "org.members.owner"}}{{else}}{{$.i18n.Tr "org.members.member"}}{{end}}</strong>
+ <strong>{{if index $.MembersIsUserOrgOwner .ID}}{{svg "octicon-shield-lock" 16}} {{$.i18n.Tr "org.members.owner"}}{{else}}{{$.i18n.Tr "org.members.member"}}{{end}}</strong>
</div>
</div>
<div class="ui one wide column center">
@@ -42,7 +42,13 @@
2FA
</div>
<div class="meta">
- <strong><span class="octicon {{if index $.MembersTwoFaStatus .ID}}octicon-check text green{{else}}octicon-x{{end}}"></span></strong>
+ <strong>
+ {{if index $.MembersTwoFaStatus .ID}}
+ <span class="text green">{{svg "octicon-check" 16}}</span>
+ {{else}}
+ {{svg "octicon-x" 16}}
+ {{end}}
+ </strong>
</div>
</div>
<div class="ui four wide column">
diff --git a/templates/org/settings/delete.tmpl b/templates/org/settings/delete.tmpl
index 3b0ee09b17..729126b7b9 100644
--- a/templates/org/settings/delete.tmpl
+++ b/templates/org/settings/delete.tmpl
@@ -11,7 +11,7 @@
</h4>
<div class="ui attached warning segment">
<div class="ui red message">
- <p class="text left"><i class="octicon octicon-alert"></i> {{.i18n.Tr "org.settings.delete_prompt" | Str2html}}</p>
+ <p class="text left">{{svg "octicon-alert" 16}} {{.i18n.Tr "org.settings.delete_prompt" | Str2html}}</p>
</div>
<form class="ui form ignore-dirty" id="delete-form" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}}
diff --git a/templates/org/team/navbar.tmpl b/templates/org/team/navbar.tmpl
index 1a8f108331..95329a2be3 100644
--- a/templates/org/team/navbar.tmpl
+++ b/templates/org/team/navbar.tmpl
@@ -1,4 +1,4 @@
<div class="ui top attached tabular menu">
- <a class="item{{if .PageIsOrgTeamMembers}} active{{end}}" href="{{.OrgLink}}/teams/{{.Team.LowerName}}"><span class="octicon octicon-person"></span> <strong>{{.Team.NumMembers}}</strong>&nbsp; {{$.i18n.Tr "org.lower_members"}}</a>
- <a class="item{{if .PageIsOrgTeamRepos}} active{{end}}" href="{{.OrgLink}}/teams/{{.Team.LowerName}}/repositories"><span class="octicon octicon-repo"></span> <strong>{{.Team.NumRepos}}</strong>&nbsp; {{$.i18n.Tr "org.lower_repositories"}}</a>
-</div> \ No newline at end of file
+ <a class="item{{if .PageIsOrgTeamMembers}} active{{end}}" href="{{.OrgLink}}/teams/{{.Team.LowerName}}">{{svg "octicon-person" 16}} <strong>{{.Team.NumMembers}}</strong>&nbsp; {{$.i18n.Tr "org.lower_members"}}</a>
+ <a class="item{{if .PageIsOrgTeamRepos}} active{{end}}" href="{{.OrgLink}}/teams/{{.Team.LowerName}}/repositories">{{svg "octicon-repo" 16}} <strong>{{.Team.NumRepos}}</strong>&nbsp; {{$.i18n.Tr "org.lower_repositories"}}</a>
+</div>
diff --git a/templates/org/team/repositories.tmpl b/templates/org/team/repositories.tmpl
index 66af5195b0..e81ff889eb 100644
--- a/templates/org/team/repositories.tmpl
+++ b/templates/org/team/repositories.tmpl
@@ -38,7 +38,15 @@
<a class="ui red small button right" href="{{$.OrgLink}}/teams/{{$.Team.LowerName}}/action/repo/remove?repoid={{.ID}}">{{$.i18n.Tr "remove"}}</a>
{{end}}
<a class="member" href="{{AppSubUrl}}/{{$.Org.Name}}/{{.Name}}">
- <i class="octicon octicon-{{if .IsPrivate}}lock{{else if .IsFork}}repo-forked{{else if .IsMirror}}repo-clone{{else}}repo{{end}}"></i>
+ {{if .IsPrivate}}
+ {{svg "octicon-lock" 16}}
+ {{else if .IsFork}}
+ {{svg "octicon-repo-forked" 16}}
+ {{else if .IsMirror}}
+ {{svg "octicon-repo-clone" 16}}
+ {{else}}
+ {{svg "octicon-repo" 16}}
+ {{end}}
<strong>{{$.Org.Name}}/{{.Name}}</strong>
</a>
</div>
diff --git a/templates/org/team/sidebar.tmpl b/templates/org/team/sidebar.tmpl
index 75c5ce756d..ee612069b5 100644
--- a/templates/org/team/sidebar.tmpl
+++ b/templates/org/team/sidebar.tmpl
@@ -47,7 +47,7 @@
</div>
{{if .IsOrganizationOwner}}
<div class="ui bottom attached segment">
- <a class="ui teal small button" href="{{.OrgLink}}/teams/{{.Team.LowerName}}/edit"><span class="octicon octicon-gear"></span> {{$.i18n.Tr "org.teams.settings"}}</a>
+ <a class="ui teal small button" href="{{.OrgLink}}/teams/{{.Team.LowerName}}/edit">{{svg "octicon-gear" 16}} {{$.i18n.Tr "org.teams.settings"}}</a>
</div>
{{end}}
</div>
diff --git a/templates/org/team/teams.tmpl b/templates/org/team/teams.tmpl
index 8714181140..9d4a469028 100644
--- a/templates/org/team/teams.tmpl
+++ b/templates/org/team/teams.tmpl
@@ -5,7 +5,7 @@
{{template "base/alert" .}}
{{if .IsOrganizationOwner}}
<div class="text right">
- <a class="ui green button" href="{{.OrgLink}}/teams/new"><i class="octicon octicon-repo-create"></i> {{.i18n.Tr "org.create_new_team"}}</a>
+ <a class="ui green button" href="{{.OrgLink}}/teams/new">{{svg "octicon-plus" 16}} {{.i18n.Tr "org.create_new_team"}}</a>
</div>
<div class="ui divider"></div>
{{end}}
diff --git a/templates/pwa/serviceworker_js.tmpl b/templates/pwa/serviceworker_js.tmpl
index e7751714f4..f1dd63a250 100644
--- a/templates/pwa/serviceworker_js.tmpl
+++ b/templates/pwa/serviceworker_js.tmpl
@@ -40,6 +40,9 @@ var urlsToCache = [
'{{StaticUrlPrefix}}/img/gitea-sm.png',
'{{StaticUrlPrefix}}/img/gitea-lg.png',
+ // svg
+ '{{StaticUrlPrefix}}/img/svg/icons.svg'
+
// fonts
'{{StaticUrlPrefix}}/fomantic/themes/default/assets/fonts/icons.woff2',
'{{StaticUrlPrefix}}/vendor/assets/octicons/octicons.woff2?ef21c39f0ca9b1b5116e5eb7ac5eabe6',
diff --git a/templates/repo/activity.tmpl b/templates/repo/activity.tmpl
index 8c3167bca7..c11a841b2d 100644
--- a/templates/repo/activity.tmpl
+++ b/templates/repo/activity.tmpl
@@ -63,21 +63,21 @@
<div class="ui attached segment horizontal segments">
{{if .Permission.CanRead $.UnitTypePullRequests}}
<a href="#merged-pull-requests" class="ui attached segment text center">
- <i class="text purple octicon octicon-git-pull-request"></i> <strong>{{.Activity.MergedPRCount}}</strong><br>
+ <span class="text purple">{{svg "octicon-git-pull-request" 16}}</span> <strong>{{.Activity.MergedPRCount}}</strong><br>
{{.i18n.Tr (TrN .i18n.Lang .Activity.MergedPRCount "repo.activity.merged_prs_count_1" "repo.activity.merged_prs_count_n") }}
</a>
<a href="#proposed-pull-requests" class="ui attached segment text center">
- <i class="text green octicon octicon-git-branch"></i> <strong>{{.Activity.OpenedPRCount}}</strong><br>
+ <span class="text green">{{svg "octicon-git-branch" 16}}</span> <strong>{{.Activity.OpenedPRCount}}</strong><br>
{{.i18n.Tr (TrN .i18n.Lang .Activity.OpenedPRCount "repo.activity.opened_prs_count_1" "repo.activity.opened_prs_count_n") }}
</a>
{{end}}
{{if .Permission.CanRead $.UnitTypeIssues}}
<a href="#closed-issues" class="ui attached segment text center">
- <i class="text red octicon octicon-issue-closed"></i> <strong>{{.Activity.ClosedIssueCount}}</strong><br>
+ <span class="text red">{{svg "octicon-issue-closed" 16}}</span> <strong>{{.Activity.ClosedIssueCount}}</strong><br>
{{.i18n.Tr (TrN .i18n.Lang .Activity.ClosedIssueCount "repo.activity.closed_issues_count_1" "repo.activity.closed_issues_count_n") }}
</a>
<a href="#new-issues" class="ui attached segment text center">
- <i class="text green octicon octicon-issue-opened"></i> <strong>{{.Activity.OpenedIssueCount}}</strong><br>
+ <span class="text green">{{svg "octicon-issue-opened" 16}}</span> <strong>{{.Activity.OpenedIssueCount}}</strong><br>
{{.i18n.Tr (TrN .i18n.Lang .Activity.OpenedIssueCount "repo.activity.new_issues_count_1" "repo.activity.new_issues_count_n") }}
</a>
{{end}}
@@ -120,7 +120,7 @@
{{if gt .Activity.PublishedReleaseCount 0}}
<h4 class="ui horizontal divider header" id="published-releases">
- <i class="text octicon octicon-tag"></i>
+ <span class="text">{{svg "octicon-tag" 16}}</span>
{{.i18n.Tr "repo.activity.title.releases_published_by" (.i18n.Tr (TrN .i18n.Lang .Activity.PublishedReleaseCount "repo.activity.title.releases_1" "repo.activity.title.releases_n") .Activity.PublishedReleaseCount) (.i18n.Tr (TrN .i18n.Lang .Activity.PublishedReleaseAuthorCount "repo.activity.title.user_1" "repo.activity.title.user_n") .Activity.PublishedReleaseAuthorCount) }}
</h4>
<div class="list">
@@ -139,7 +139,7 @@
{{if gt .Activity.MergedPRCount 0}}
<h4 class="ui horizontal divider header" id="merged-pull-requests">
- <i class="text octicon octicon-git-pull-request"></i>
+ <span class="text">{{svg "octicon-git-pull-request" 16}}</span>
{{.i18n.Tr "repo.activity.title.prs_merged_by" (.i18n.Tr (TrN .i18n.Lang .Activity.MergedPRCount "repo.activity.title.prs_1" "repo.activity.title.prs_n") .Activity.MergedPRCount) (.i18n.Tr (TrN .i18n.Lang .Activity.MergedPRAuthorCount "repo.activity.title.user_1" "repo.activity.title.user_n") .Activity.MergedPRAuthorCount) }}
</h4>
<div class="list">
@@ -155,7 +155,7 @@
{{if gt .Activity.OpenedPRCount 0}}
<h4 class="ui horizontal divider header" id="proposed-pull-requests">
- <i class="text octicon octicon-git-branch"></i>
+ <span class="text">{{svg "octicon-git-branch" 16}}</span>
{{.i18n.Tr "repo.activity.title.prs_opened_by" (.i18n.Tr (TrN .i18n.Lang .Activity.OpenedPRCount "repo.activity.title.prs_1" "repo.activity.title.prs_n") .Activity.OpenedPRCount) (.i18n.Tr (TrN .i18n.Lang .Activity.OpenedPRAuthorCount "repo.activity.title.user_1" "repo.activity.title.user_n") .Activity.OpenedPRAuthorCount) }}
</h4>
<div class="list">
@@ -171,7 +171,7 @@
{{if gt .Activity.ClosedIssueCount 0}}
<h4 class="ui horizontal divider header" id="closed-issues">
- <i class="text octicon octicon-issue-closed"></i>
+ <span class="text">{{svg "octicon-issue-closed" 16}}</span>
{{.i18n.Tr "repo.activity.title.issues_closed_by" (.i18n.Tr (TrN .i18n.Lang .Activity.ClosedIssueCount "repo.activity.title.issues_1" "repo.activity.title.issues_n") .Activity.ClosedIssueCount) (.i18n.Tr (TrN .i18n.Lang .Activity.ClosedIssueAuthorCount "repo.activity.title.user_1" "repo.activity.title.user_n") .Activity.ClosedIssueAuthorCount) }}
</h4>
<div class="list">
@@ -187,7 +187,7 @@
{{if gt .Activity.OpenedIssueCount 0}}
<h4 class="ui horizontal divider header" id="new-issues">
- <i class="text octicon octicon-issue-opened"></i>
+ <span class="text">{{svg "octicon-issue-opened" 16}}</span>
{{.i18n.Tr "repo.activity.title.issues_created_by" (.i18n.Tr (TrN .i18n.Lang .Activity.OpenedIssueCount "repo.activity.title.issues_1" "repo.activity.title.issues_n") .Activity.OpenedIssueCount) (.i18n.Tr (TrN .i18n.Lang .Activity.OpenedIssueAuthorCount "repo.activity.title.user_1" "repo.activity.title.user_n") .Activity.OpenedIssueAuthorCount) }}
</h4>
<div class="list">
@@ -203,7 +203,7 @@
{{if gt .Activity.UnresolvedIssueCount 0}}
<h4 class="ui horizontal divider header" id="unresolved-conversations">
- <i class="text octicon octicon-comment-discussion"></i>
+ <span class="text">{{svg "octicon-comment-discussion" 16}}</span>
{{.i18n.Tr (TrN .i18n.Lang .Activity.UnresolvedIssueCount "repo.activity.title.unresolved_conv_1" "repo.activity.title.unresolved_conv_n") .Activity.UnresolvedIssueCount }}
</h4>
<div class="text center desc">
diff --git a/templates/repo/blame.tmpl b/templates/repo/blame.tmpl
index 483f8d38eb..0a906d1f18 100644
--- a/templates/repo/blame.tmpl
+++ b/templates/repo/blame.tmpl
@@ -18,14 +18,14 @@
</div>
{{if .Repository.CanEnableEditor}}
{{if .CanEditFile}}
- <a href="{{.RepoLink}}/_edit/{{EscapePound .BranchName}}/{{EscapePound .TreePath}}"><i class="octicon octicon-pencil btn-octicon poping up" data-content="{{.EditFileTooltip}}" data-position="bottom center" data-variation="tiny inverted"></i></a>
+ <a href="{{.RepoLink}}/_edit/{{EscapePound .BranchName}}/{{EscapePound .TreePath}}"><span class="btn-octicon poping up" data-content="{{.EditFileTooltip}}" data-position="bottom center" data-variation="tiny inverted">{{svg "octicon-pencil" 16}}</span></a>
{{else}}
- <i class="octicon octicon-pencil btn-octicon poping up disabled" data-content="{{.EditFileTooltip}}" data-position="bottom center" data-variation="tiny inverted"></i>
+ <span class="btn-octicon poping up disabled" data-content="{{.EditFileTooltip}}" data-position="bottom center" data-variation="tiny inverted">{{svg "octicon-pencil" 16}}</span>
{{end}}
{{if .CanDeleteFile}}
- <a href="{{.RepoLink}}/_delete/{{EscapePound .BranchName}}/{{EscapePound .TreePath}}"><i class="octicon octicon-trashcan btn-octicon btn-octicon-danger poping up" data-content="{{.DeleteFileTooltip}}" data-position="bottom center" data-variation="tiny inverted"></i></a>
+ <a href="{{.RepoLink}}/_delete/{{EscapePound .BranchName}}/{{EscapePound .TreePath}}"><span class="btn-octicon btn-octicon-danger poping up" data-content="{{.DeleteFileTooltip}}" data-position="bottom center" data-variation="tiny inverted">{{svg "octicon-trashcan" 16}}</span></a>
{{else}}
- <i class="octicon octicon-trashcan btn-octicon poping up disabled" data-content="{{.DeleteFileTooltip}}" data-position="bottom center" data-variation="tiny inverted"></i>
+ <span class="btn-octicon poping up disabled" data-content="{{.DeleteFileTooltip}}" data-position="bottom center" data-variation="tiny inverted">{{svg "octicon-trashcan" 16}}</span>
{{end}}
{{end}}
</div>
diff --git a/templates/repo/branch/list.tmpl b/templates/repo/branch/list.tmpl
index a24360795e..26a14eb6ff 100644
--- a/templates/repo/branch/list.tmpl
+++ b/templates/repo/branch/list.tmpl
@@ -16,10 +16,10 @@
{{range .Branches}}
{{if eq .Name $.DefaultBranch}}
{{if .IsProtected}}
- <i class="octicon octicon-shield"></i>
+ {{svg "octicon-shield-lock" 16}}
{{end}}
<a href="{{$.RepoLink}}/src/branch/{{$.DefaultBranch | EscapePound}}">{{$.DefaultBranch}}</a>
- <p class="info"><i class="octicon octicon-git-commit"></i><a href="{{$.RepoLink}}/commit/{{.Commit.ID.String}}">{{ShortSha .Commit.ID.String}}</a> · <span class="commit-message">{{RenderCommitMessage .Commit.CommitMessage $.RepoLink $.Repository.ComposeMetas}}</span> · {{$.i18n.Tr "org.repo_updated"}} {{TimeSince .Commit.Committer.When $.i18n.Lang}}</p>
+ <p class="info">{{svg "octicon-git-commit" 16}}<a href="{{$.RepoLink}}/commit/{{.Commit.ID.String}}">{{ShortSha .Commit.ID.String}}</a> · <span class="commit-message">{{RenderCommitMessage .Commit.CommitMessage $.RepoLink $.Repository.ComposeMetas}}</span> · {{$.i18n.Tr "org.repo_updated"}} {{TimeSince .Commit.Committer.When $.i18n.Lang}}</p>
{{end}}
{{end}}
</td>
@@ -27,8 +27,8 @@
<div class="ui basic jump dropdown icon button poping up" data-content="{{$.i18n.Tr "repo.branch.download" ($.DefaultBranch)}}" data-variation="tiny inverted" data-position="top right">
<i class="download icon"></i>
<div class="menu">
- <a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.DefaultBranch}}.zip"><i class="octicon octicon-file-zip"></i> ZIP</a>
- <a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.DefaultBranch}}.tar.gz"><i class="octicon octicon-file-zip"></i> TAR.GZ</a>
+ <a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.DefaultBranch}}.zip">{{svg "octicon-file-zip" 16}}&nbsp;ZIP</a>
+ <a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.DefaultBranch}}.tar.gz">{{svg "octicon-file-zip" 16}}&nbsp;TAR.GZ</a>
</div>
</div>
</td>
@@ -53,10 +53,10 @@
<p class="info">{{$.i18n.Tr "repo.branch.deleted_by" .DeletedBranch.DeletedBy.Name}} {{TimeSinceUnix .DeletedBranch.DeletedUnix $.i18n.Lang}}</p>
{{else}}
{{if .IsProtected}}
- <i class="octicon octicon-shield"></i>
+ {{svg "octicon-shield-lock" 16}}
{{end}}
<a href="{{$.RepoLink}}/src/branch/{{.Name | EscapePound}}">{{.Name}}</a>
- <p class="info"><i class="octicon octicon-git-commit"></i><a href="{{$.RepoLink}}/commit/{{.Commit.ID.String}}">{{ShortSha .Commit.ID.String}}</a> · <span class="commit-message">{{RenderCommitMessage .Commit.CommitMessage $.RepoLink $.Repository.ComposeMetas}}</span> · {{$.i18n.Tr "org.repo_updated"}} {{TimeSince .Commit.Committer.When $.i18n.Lang}}</p>
+ <p class="info">{{svg "octicon-git-commit" 16}}<a href="{{$.RepoLink}}/commit/{{.Commit.ID.String}}">{{ShortSha .Commit.ID.String}}</a> · <span class="commit-message">{{RenderCommitMessage .Commit.CommitMessage $.RepoLink $.Repository.ComposeMetas}}</span> · {{$.i18n.Tr "org.repo_updated"}} {{TimeSince .Commit.Committer.When $.i18n.Lang}}</p>
{{end}}
</td>
<td class="three wide ui">
@@ -77,7 +77,7 @@
{{if not .LatestPullRequest}}
{{if .IsIncluded}}
<a class="ui poping up orange small label" data-content="{{$.i18n.Tr "repo.branch.included_desc"}}" data-variation="tiny inverted" data-position="top right">
- <i class="octicon octicon-git-pull-request"></i> {{$.i18n.Tr "repo.branch.included"}}
+ {{svg "octicon-git-pull-request" 16}} {{$.i18n.Tr "repo.branch.included"}}
</a>
{{else if and (not .IsDeleted) $.AllowsPulls (gt .CommitsAhead 0)}}
<a href="{{$.RepoLink}}/compare/{{$.DefaultBranch | EscapePound}}...{{if ne $.Repository.Owner.Name $.Owner.Name}}{{$.Owner.Name}}:{{end}}{{.Name | EscapePound}}">
@@ -93,11 +93,11 @@
{{else}}
<a href="{{.LatestPullRequest.Issue.HTMLURL}}">{{if not .LatestPullRequest.IsSameRepo}}{{.LatestPullRequest.BaseRepo.FullName}}{{end}}#{{.LatestPullRequest.Issue.Index}}</a>
{{if .LatestPullRequest.HasMerged}}
- <a href="{{.LatestPullRequest.Issue.HTMLURL}}" class="ui purple mini label"><i class="octicon octicon-git-pull-request"></i> {{$.i18n.Tr "repo.pulls.merged"}}</a>
+ <a href="{{.LatestPullRequest.Issue.HTMLURL}}" class="ui purple mini label">{{svg "octicon-git-pull-request" 16}} {{$.i18n.Tr "repo.pulls.merged"}}</a>
{{else if .LatestPullRequest.Issue.IsClosed}}
- <a href="{{.LatestPullRequest.Issue.HTMLURL}}" class="ui red mini label"><i class="octicon octicon-issue-closed"></i> {{$.i18n.Tr "repo.issues.closed_title"}}</a>
+ <a href="{{.LatestPullRequest.Issue.HTMLURL}}" class="ui red mini label">{{svg "octicon-issue-closed" 16}} {{$.i18n.Tr "repo.issues.closed_title"}}</a>
{{else}}
- <a href="{{.LatestPullRequest.Issue.HTMLURL}}" class="ui green mini label"><i class="octicon octicon-issue-opened"></i> {{$.i18n.Tr "repo.issues.open_title"}}</a>
+ <a href="{{.LatestPullRequest.Issue.HTMLURL}}" class="ui green mini label">{{svg "octicon-issue-opened" 16}} {{$.i18n.Tr "repo.issues.open_title"}}</a>
{{end}}
{{end}}
</td>
@@ -106,14 +106,14 @@
<div class="ui basic jump dropdown icon button poping up" data-content="{{$.i18n.Tr "repo.branch.download" (.Name)}}" data-variation="tiny inverted" data-position="top right">
<i class="download icon"></i>
<div class="menu">
- <a class="item" href="{{$.RepoLink}}/archive/{{EscapePound .Name}}.zip"><i class="octicon octicon-file-zip"></i> ZIP</a>
- <a class="item" href="{{$.RepoLink}}/archive/{{EscapePound .Name}}.tar.gz"><i class="octicon octicon-file-zip"></i> TAR.GZ</a>
+ <a class="item" href="{{$.RepoLink}}/archive/{{EscapePound .Name}}.zip">{{svg "octicon-file-zip" 16}}&nbsp;ZIP</a>
+ <a class="item" href="{{$.RepoLink}}/archive/{{EscapePound .Name}}.tar.gz">{{svg "octicon-file-zip" 16}}&nbsp;TAR.GZ</a>
</div>
</div>
{{end}}
{{if and $.IsWriter (not $.IsMirror) (not $.Repository.IsArchived) (not .IsProtected)}}
{{if .IsDeleted}}
- <a class="ui basic jump button icon poping up undo-button" href data-url="{{$.Link}}/restore?branch_id={{.DeletedBranch.ID | urlquery}}&name={{.DeletedBranch.Name | urlquery}}" data-content="{{$.i18n.Tr "repo.branch.restore" (.Name)}}" data-variation="tiny inverted" data-position="top right"><i class="octicon octicon-reply text blue"></i></a>
+ <a class="ui basic jump button icon poping up undo-button" href data-url="{{$.Link}}/restore?branch_id={{.DeletedBranch.ID | urlquery}}&name={{.DeletedBranch.Name | urlquery}}" data-content="{{$.i18n.Tr "repo.branch.restore" (.Name)}}" data-variation="tiny inverted" data-position="top right"><span class="text blue">{{svg "octicon-reply" 16}}</span></a>
{{else}}
<a class="ui basic jump button icon poping up delete-branch-button" href data-url="{{$.Link}}/delete?name={{.Name | urlquery}}" data-content="{{$.i18n.Tr "repo.branch.delete" (.Name)}}" data-variation="tiny inverted" data-position="top right" data-name="{{.Name}}"><i class="trash icon text red"></i></a>
{{end}}
diff --git a/templates/repo/branch_dropdown.tmpl b/templates/repo/branch_dropdown.tmpl
index b7f4c91212..28aa14abea 100644
--- a/templates/repo/branch_dropdown.tmpl
+++ b/templates/repo/branch_dropdown.tmpl
@@ -2,7 +2,7 @@
<div class="ui floating filter dropdown custom" data-can-create-branch="{{.CanCreateBranch}}" data-no-results="{{.i18n.Tr "repo.pulls.no_results"}}">
<div class="ui basic small compact button" @click="menuVisible = !menuVisible" @keyup.enter="menuVisible = !menuVisible">
<span class="text">
- <i class="octicon octicon-git-branch"></i>
+ {{svg "octicon-git-branch" 16}}
{{if .IsViewBranch}}{{.i18n.Tr "repo.branch"}}{{else}}{{.i18n.Tr "repo.tree"}}{{end}}:
<strong>{{if .IsViewBranch}}{{.BranchName}}{{else}}{{ShortSha .BranchName}}{{end}}</strong>
</span>
@@ -26,7 +26,7 @@
<div class="two column row">
<a class="reference column" href="#" @click="mode = 'branches'; focusSearchField()">
<span class="text" :class="{black: mode == 'branches'}">
- <i class="octicon octicon-git-branch"></i> {{.i18n.Tr "repo.branches"}}
+ {{svg "octicon-git-branch" 16}} {{.i18n.Tr "repo.branches"}}
</span>
</a>
<a class="reference column" href="#" @click="mode = 'tags'; focusSearchField()">
@@ -42,7 +42,7 @@
<div class="item" v-if="showCreateNewBranch" :class="{active: active == filteredItems.length}" :ref="'listItem' + filteredItems.length">
<a href="#" @click="createNewBranch()">
<div>
- <i class="octicon octicon-git-branch"></i>
+ {{svg "octicon-git-branch" 16}}
{{.i18n.Tr "repo.branch.create_branch" `${ searchTerm }` | Safe}}
</div>
<div class="text small">
diff --git a/templates/repo/commit_page.tmpl b/templates/repo/commit_page.tmpl
index 5b19523cf2..e8477ed985 100644
--- a/templates/repo/commit_page.tmpl
+++ b/templates/repo/commit_page.tmpl
@@ -10,7 +10,7 @@
{{if IsMultilineCommitMessage .Commit.Message}}
<pre class="commit-body">{{RenderCommitBody .Commit.Message $.RepoLink $.Repository.ComposeMetas}}</pre>
{{end}}
- <span class="text grey"><i class="octicon octicon-git-branch"></i>{{.BranchName}}</span>
+ <span class="text grey">{{svg "octicon-git-branch" 16}}{{.BranchName}}</span>
</div>
<div class="ui attached info segment {{if .Commit.Signature}} isSigned {{if .Verification.Verified }} isVerified {{end}}{{end}}">
<div class="ui stackable grid">
diff --git a/templates/repo/commits.tmpl b/templates/repo/commits.tmpl
index 32301a038a..3b4c39524d 100644
--- a/templates/repo/commits.tmpl
+++ b/templates/repo/commits.tmpl
@@ -8,7 +8,7 @@
<div class="fitted item">
<a href="{{.RepoLink}}/graph" class="ui basic small compact button">
<span class="text">
- <i class="octicon octicon-git-branch"></i>
+ {{svg "octicon-git-branch" 16}}
</span>
{{.i18n.Tr "repo.commit_graph"}}
</a>
diff --git a/templates/repo/commits_table.tmpl b/templates/repo/commits_table.tmpl
index 0e53936f0a..da2a134994 100644
--- a/templates/repo/commits_table.tmpl
+++ b/templates/repo/commits_table.tmpl
@@ -21,9 +21,9 @@
<button class="ui blue tiny button" data-panel="#add-deploy-key-panel" data-tooltip={{.i18n.Tr "repo.commits.search.tooltip"}}>{{.i18n.Tr "repo.commits.find"}}</button>
</form>
{{else if .IsDiffCompare}}
- <a href="{{$.CommitRepoLink}}/commit/{{.BeforeCommitID}}" class="ui green sha label">{{if not .BaseIsCommit}}{{if .BaseIsBranch}}<i class="octicon octicon-git-branch"></i>{{else if .BaseIsTag}}<i class="octicon octicon-tag"></i>{{end}}{{.BaseBranch}}{{else}}{{ShortSha .BaseBranch}}{{end}}</a>
+ <a href="{{$.CommitRepoLink}}/commit/{{.BeforeCommitID}}" class="ui green sha label">{{if not .BaseIsCommit}}{{if .BaseIsBranch}}{{svg "octicon-git-branch" 16}}{{else if .BaseIsTag}}{{svg "octicon-tag" 16}}{{end}}{{.BaseBranch}}{{else}}{{ShortSha .BaseBranch}}{{end}}</a>
...
- <a href="{{$.CommitRepoLink}}/commit/{{.AfterCommitID}}" class="ui green sha label">{{if not .HeadIsCommit}}{{if .HeadIsBranch}}<i class="octicon octicon-git-branch"></i>{{else if .HeadIsTag}}<i class="octicon octicon-tag"></i>{{end}}{{.HeadBranch}}{{else}}{{ShortSha .HeadBranch}}{{end}}</a>
+ <a href="{{$.CommitRepoLink}}/commit/{{.AfterCommitID}}" class="ui green sha label">{{if not .HeadIsCommit}}{{if .HeadIsBranch}}{{svg "octicon-git-branch" 16}}{{else if .HeadIsTag}}{{svg "octicon-tag" 16}}{{end}}{{.HeadBranch}}{{else}}{{ShortSha .HeadBranch}}{{end}}</a>
{{end}}
</div>
</div>
diff --git a/templates/repo/diff/blob_excerpt.tmpl b/templates/repo/diff/blob_excerpt.tmpl
index 5f0cd30bb7..ad5e3b1b10 100644
--- a/templates/repo/diff/blob_excerpt.tmpl
+++ b/templates/repo/diff/blob_excerpt.tmpl
@@ -10,7 +10,7 @@
<i class="ui blob-excerpt fa fa-caret-up" data-url="{{$.RepoLink}}/blob_excerpt/{{$.AfterCommitID}}" data-query="{{$line.GetBlobExcerptQuery}}&style=split&direction=up" data-anchor="{{$.Anchor}}"></i>
{{end}}
{{if or (eq $line.GetExpandDirection 2)}}
- <i class="ui blob-excerpt octicon octicon-fold" data-url="{{$.RepoLink}}/blob_excerpt/{{$.AfterCommitID}}" data-query="{{$line.GetBlobExcerptQuery}}&style=split&direction=" data-anchor="{{$.Anchor}}"></i>
+ <span class="ui blob-excerpt" data-url="{{$.RepoLink}}/blob_excerpt/{{$.AfterCommitID}}" data-query="{{$line.GetBlobExcerptQuery}}&style=split&direction=" data-anchor="{{$.Anchor}}">{{svg "octicon-fold" 16}}</span>
{{end}}
</td>
<td colspan="5" class="lines-code lines-code-old "><span class="mono wrap{{if $.highlightClass}} language-{{$.highlightClass}}{{else}} nohighlight{{end}}">{{$.section.GetComputedInlineDiffFor $line}}</span></td>
@@ -36,7 +36,7 @@
<i class="ui blob-excerpt fa fa-caret-down" data-url="{{$.RepoLink}}/blob_excerpt/{{$.AfterCommitID}}" data-query="{{$line.GetBlobExcerptQuery}}&style=unified&direction=down" data-anchor="{{$.Anchor}}"></i>
{{end}}
{{if or (eq $line.GetExpandDirection 2)}}
- <i class="ui blob-excerpt octicon octicon-fold" data-url="{{$.RepoLink}}/blob_excerpt/{{$.AfterCommitID}}" data-query="{{$line.GetBlobExcerptQuery}}&style=unified&direction=" data-anchor="{{$.Anchor}}"></i>
+ <span class="ui blob-excerpt" data-url="{{$.RepoLink}}/blob_excerpt/{{$.AfterCommitID}}" data-query="{{$line.GetBlobExcerptQuery}}&style=unified&direction=" data-anchor="{{$.Anchor}}">{{svg "octicon-fold" 16}}</span>
{{end}}
</td>
{{else}}
@@ -47,4 +47,4 @@
<td class="blob-excerpt lines-code{{if (not $line.RightIdx)}} lines-code-old{{end}}"><span class="mono wrap{{if $.highlightClass}} language-{{$.highlightClass}}{{else}} nohighlight{{end}}">{{$.section.GetComputedInlineDiffFor $line}}</span></td>
</tr>
{{end}}
-{{end}} \ No newline at end of file
+{{end}}
diff --git a/templates/repo/diff/box.tmpl b/templates/repo/diff/box.tmpl
index 15ba387dca..0b5c7a0564 100644
--- a/templates/repo/diff/box.tmpl
+++ b/templates/repo/diff/box.tmpl
@@ -133,7 +133,7 @@
<i class="ui blob-excerpt fa fa-caret-up" data-url="{{$.RepoLink}}/blob_excerpt/{{$.AfterCommitID}}" data-query="{{$line.GetBlobExcerptQuery}}&style=split&direction=up" data-anchor="diff-{{Sha1 $file.Name}}K{{$line.SectionInfo.RightIdx}}"></i>
{{end}}
{{if or (eq $line.GetExpandDirection 2)}}
- <i class="ui blob-excerpt octicon octicon-fold" data-url="{{$.RepoLink}}/blob_excerpt/{{$.AfterCommitID}}" data-query="{{$line.GetBlobExcerptQuery}}&style=split&direction=" data-anchor="diff-{{Sha1 $file.Name}}K{{$line.SectionInfo.RightIdx}}"></i>
+ <span class="ui blob-excerpt" data-url="{{$.RepoLink}}/blob_excerpt/{{$.AfterCommitID}}" data-query="{{$line.GetBlobExcerptQuery}}&style=split&direction=" data-anchor="diff-{{Sha1 $file.Name}}K{{$line.SectionInfo.RightIdx}}">{{svg "octicon-fold" 16}}</span>
{{end}}
</td>
<td colspan="5" class="lines-code lines-code-old "><span class="mono wrap{{if $highlightClass}} language-{{$highlightClass}}{{else}} nohighlight{{end}}">{{$section.GetComputedInlineDiffFor $line}}</span></td>
diff --git a/templates/repo/diff/comment_form.tmpl b/templates/repo/diff/comment_form.tmpl
index 822b1e54f6..0bcd5d2028 100644
--- a/templates/repo/diff/comment_form.tmpl
+++ b/templates/repo/diff/comment_form.tmpl
@@ -24,7 +24,7 @@
{{.i18n.Tr "loading"}}
</div>
<div class="footer">
- <span class="markdown-info"><i class="octicon octicon-markdown"></i> {{$.root.i18n.Tr "repo.diff.comment.markdown_info"}}</span>
+ <span class="markdown-info">{{svg "octicon-markdown" 16}} {{$.root.i18n.Tr "repo.diff.comment.markdown_info"}}</span>
<div class="ui right floated">
{{if $.reply}}
<button name="reply" value="{{$.reply}}" class="ui submit green tiny button btn-reply">{{$.root.i18n.Tr "repo.diff.comment.reply"}}</button>
diff --git a/templates/repo/diff/compare.tmpl b/templates/repo/diff/compare.tmpl
index 50a51c44ac..e98823953c 100644
--- a/templates/repo/diff/compare.tmpl
+++ b/templates/repo/diff/compare.tmpl
@@ -13,7 +13,7 @@
{{ end }}
</h2>
<div class="ui segment choose branch">
- <span class="octicon octicon-git-compare"></span>
+ {{svg "octicon-git-compare" 16}}
<div class="ui floating filter dropdown" data-no-results="{{.i18n.Tr "repo.pulls.no_results"}}">
<div class="ui basic small button">
<span class="text">{{.i18n.Tr "repo.pulls.compare_base"}}: {{$.BaseName}}:{{$.BaseBranch}}</span>
diff --git a/templates/repo/diff/section_unified.tmpl b/templates/repo/diff/section_unified.tmpl
index fcc511af75..33544fd032 100644
--- a/templates/repo/diff/section_unified.tmpl
+++ b/templates/repo/diff/section_unified.tmpl
@@ -12,7 +12,7 @@
<i class="ui blob-excerpt fa fa-caret-up" data-url="{{$.root.RepoLink}}/blob_excerpt/{{$.root.AfterCommitID}}" data-query="{{$line.GetBlobExcerptQuery}}&style=unified&direction=up" data-anchor="diff-{{Sha1 $file.Name}}K{{$line.SectionInfo.RightIdx}}"></i>
{{end}}
{{if or (eq $line.GetExpandDirection 2)}}
- <i class="ui blob-excerpt octicon octicon-fold" data-url="{{$.root.RepoLink}}/blob_excerpt/{{$.root.AfterCommitID}}" data-query="{{$line.GetBlobExcerptQuery}}&style=unified&direction=" data-anchor="diff-{{Sha1 $file.Name}}K{{$line.SectionInfo.RightIdx}}"></i>
+ <span class="ui blob-excerpt" data-url="{{$.root.RepoLink}}/blob_excerpt/{{$.root.AfterCommitID}}" data-query="{{$line.GetBlobExcerptQuery}}&style=unified&direction=" data-anchor="diff-{{Sha1 $file.Name}}K{{$line.SectionInfo.RightIdx}}">{{svg "octicon-fold" 16}}</span>
{{end}}
</td>
{{else}}
diff --git a/templates/repo/editor/commit_form.tmpl b/templates/repo/editor/commit_form.tmpl
index 1915e9be21..35fe1a910d 100644
--- a/templates/repo/editor/commit_form.tmpl
+++ b/templates/repo/editor/commit_form.tmpl
@@ -17,7 +17,7 @@
<div class="ui radio checkbox {{if not .CanCommitToBranch.CanCommitToBranch}}disabled{{end}}">
<input type="radio" class="js-quick-pull-choice-option" name="commit_choice" value="direct" button_text="{{.i18n.Tr "repo.editor.commit_changes"}}" {{if eq .commit_choice "direct"}}checked{{end}}>
<label>
- <i class="octicon octicon-git-commit" height="16" width="14"></i>
+ {{svg "octicon-git-commit" 16}}
{{.i18n.Tr "repo.editor.commit_directly_to_this_branch" (.BranchName|Escape) | Safe}}
{{if not .CanCommitToBranch.CanCommitToBranch}}
<div class="ui visible small warning message">
@@ -41,7 +41,7 @@
<input type="radio" class="js-quick-pull-choice-option" name="commit_choice" value="commit-to-new-branch" button_text="{{.i18n.Tr "repo.editor.commit_changes"}}" {{if eq .commit_choice "commit-to-new-branch"}}checked{{end}}>
{{end}}
<label>
- <i class="octicon octicon-git-pull-request" height="16" width="12"></i>
+ {{svg "octicon-git-pull-request" 16}}
{{if $pullRequestEnabled}}
{{.i18n.Tr "repo.editor.create_new_branch" | Safe}}
{{else}}
@@ -52,7 +52,7 @@
</div>
<div class="quick-pull-branch-name {{if not (eq .commit_choice "commit-to-new-branch")}}hide{{end}}">
<div class="new-branch-name-input field {{if .Err_NewBranchName}}error{{end}}">
- <i class="octicon octicon-git-branch" height="16" width="10"></i>
+ {{svg "octicon-git-branch" 16}}
<input type="text" name="new_branch_name" value="{{.new_branch_name}}" class="input-contrast mr-2 js-quick-pull-new-branch-name" placeholder="{{.i18n.Tr "repo.editor.new_branch_name_desc"}}" {{if eq .commit_choice "commit-to-new-branch"}}required{{end}}>
<span class="text-muted js-quick-pull-normalization-info"></span>
</div>
diff --git a/templates/repo/editor/edit.tmpl b/templates/repo/editor/edit.tmpl
index d0ba1becc8..3eac405aa6 100644
--- a/templates/repo/editor/edit.tmpl
+++ b/templates/repo/editor/edit.tmpl
@@ -16,7 +16,7 @@
<div class="divider"> / </div>
{{if eq $i $l}}
<input id="file-name" value="{{$v}}" placeholder="{{$.i18n.Tr "repo.editor.name_your_file"}}" data-ec-url-prefix="{{$.EditorconfigURLPrefix}}" required autofocus>
- <span class="octicon octicon-info poping up" data-content="{{$.i18n.Tr "repo.editor.filename_help"}}" data-position="bottom center" data-variation="tiny inverted"></span>
+ <span class="poping up" data-content="{{$.i18n.Tr "repo.editor.filename_help"}}" data-position="bottom center" data-variation="tiny inverted">{{svg "octicon-info" 16}}</span>
{{else}}
<span class="section"><a href="{{EscapePound $.BranchLink}}/{{index $.TreePaths $i | EscapePound}}">{{$v}}</a></span>
{{end}}
@@ -28,10 +28,10 @@
</div>
<div class="field">
<div class="ui top attached tabular menu" data-write="write" data-preview="preview" data-diff="diff">
- <a class="active item" data-tab="write"><i class="octicon octicon-code"></i> {{if .IsNewFile}}{{.i18n.Tr "repo.editor.new_file"}}{{else}}{{.i18n.Tr "repo.editor.edit_file"}}{{end}}</a>
+ <a class="active item" data-tab="write">{{svg "octicon-code" 16}} {{if .IsNewFile}}{{.i18n.Tr "repo.editor.new_file"}}{{else}}{{.i18n.Tr "repo.editor.edit_file"}}{{end}}</a>
{{if not .IsNewFile}}
- <a class="item" data-tab="preview" data-url="{{.Repository.APIURL}}/markdown" data-context="{{.RepoLink}}/src/{{.BranchNameSubURL | EscapePound}}" data-preview-file-modes="{{.PreviewableFileModes}}"><i class="octicon octicon-eye"></i> {{.i18n.Tr "preview"}}</a>
- <a class="item" data-tab="diff" data-url="{{.RepoLink}}/_preview/{{.BranchName | EscapePound}}/{{.TreePath | EscapePound}}" data-context="{{.BranchLink}}"><i class="octicon octicon-diff"></i> {{.i18n.Tr "repo.editor.preview_changes"}}</a>
+ <a class="item" data-tab="preview" data-url="{{.Repository.APIURL}}/markdown" data-context="{{.RepoLink}}/src/{{.BranchNameSubURL | EscapePound}}" data-preview-file-modes="{{.PreviewableFileModes}}">{{svg "octicon-eye" 16}} {{.i18n.Tr "preview"}}</a>
+ <a class="item" data-tab="diff" data-url="{{.RepoLink}}/_preview/{{.BranchName | EscapePound}}/{{.TreePath | EscapePound}}" data-context="{{.BranchLink}}">{{svg "octicon-diff" 16}} {{.i18n.Tr "repo.editor.preview_changes"}}</a>
{{end}}
</div>
<div class="ui bottom attached active tab segment" data-tab="write">
diff --git a/templates/repo/editor/upload.tmpl b/templates/repo/editor/upload.tmpl
index 23fdc8bafc..f1ca5b756f 100644
--- a/templates/repo/editor/upload.tmpl
+++ b/templates/repo/editor/upload.tmpl
@@ -15,7 +15,7 @@
<div class="divider"> / </div>
{{if eq $i $l}}
<input type="text" id="file-name" value="{{$v}}" placeholder="{{$.i18n.Tr "repo.editor.add_subdir"}}" autofocus>
- <span class="octicon octicon-info poping up" data-content="{{$.i18n.Tr "repo.editor.filename_help"}}" data-position="bottom center" data-variation="tiny inverted"></span>
+ <span class="poping up" data-content="{{$.i18n.Tr "repo.editor.filename_help"}}" data-position="bottom center" data-variation="tiny inverted">{{svg "octicon-info" 16}}</span>
{{else}}
<span class="section"><a href="{{EscapePound $.BranchLink}}/{{index $.TreePaths $i | EscapePound}}">{{$v}}</a></span>
{{end}}
diff --git a/templates/repo/empty.tmpl b/templates/repo/empty.tmpl
index 07c01fe542..d6965d6fb9 100644
--- a/templates/repo/empty.tmpl
+++ b/templates/repo/empty.tmpl
@@ -35,7 +35,7 @@
{{end}}
{{if not (and $.DisableHTTP $.DisableSSH)}}
<button class="ui basic button poping up clipboard" id="clipboard-btn" data-original="{{.i18n.Tr "repo.copy_link"}}" data-success="{{.i18n.Tr "repo.copy_link_success"}}" data-error="{{.i18n.Tr "repo.copy_link_error"}}" data-content="{{.i18n.Tr "repo.copy_link"}}" data-variation="inverted tiny" data-clipboard-target="#repo-clone-url">
- <i class="octicon octicon-clippy"></i>
+ {{svg "octicon-clippy" 16}}
</button>
{{end}}
</div>
diff --git a/templates/repo/header.tmpl b/templates/repo/header.tmpl
index b3757b2764..c92feb5a78 100644
--- a/templates/repo/header.tmpl
+++ b/templates/repo/header.tmpl
@@ -4,15 +4,46 @@
<div class="repo-header">
<div class="ui huge breadcrumb repo-title">
{{if .RelAvatarLink}}
- <img class="ui avatar image" src="{{.RelAvatarLink}}">
+ <img class="ui avatar image" src="{{.RelAvatarLink}}">
+ {{else if .IsTemplate}}
+ {{if .IsPrivate}}
+ {{svg "octicon-repo-template-private" 32}}
+ {{else}}
+ {{svg "octicon-repo-template" 32}}
+ {{end}}
{{else}}
- <i class="mega-octicon octicon-{{if .IsPrivate}}lock{{else if .IsMirror}}repo-clone{{else if .IsFork}}repo-forked{{else}}repo{{end}}"></i>
+ {{if .IsPrivate}}
+ {{svg "octicon-lock" 32}}
+ {{else if .IsMirror}}
+ {{svg "octicon-repo-clone" 32}}
+ {{else if .IsFork}}
+ {{svg "octicon-repo-fork" 32}}
+ {{else}}
+ {{svg "octicon-repo" 32}}
+ {{end}}
{{end}}
<a href="{{AppSubUrl}}/{{.Owner.Name}}">{{.Owner.Name}}</a>
<div class="divider"> / </div>
<a href="{{$.RepoLink}}">{{.Name}}</a>
- {{if and .RelAvatarLink .IsPrivate}}<i class="mega-octicon octicon-lock"></i>{{end}}
- {{if .IsTemplate}}<i class="icon fa-copy"></i>{{end}}
+ {{if .RelAvatarLink}}
+ {{if .IsTemplate}}
+ {{if .IsPrivate}}
+ {{svg "octicon-repo-template-private" 32}}
+ {{else}}
+ {{svg "octicon-repo-template" 32}}
+ {{end}}
+ {{else}}
+ {{if .IsPrivate}}
+ {{svg "octicon-lock" 32}}
+ {{else if .IsMirror}}
+ {{svg "octicon-repo-clone" 32}}
+ {{else if .IsFork}}
+ {{svg "octicon-repo-fork" 32}}
+ {{else}}
+ {{svg "octicon-repo" 32}}
+ {{end}}
+ {{end}}
+ {{end}}
{{if .IsArchived}}<i class="archive icon archived-icon"></i>{{end}}
{{if .IsMirror}}<div class="fork-flag">{{$.i18n.Tr "repo.mirror_from"}} <a target="_blank" rel="noopener noreferrer" href="{{if .SanitizedOriginalURL}}{{.SanitizedOriginalURL}}{{else}}{{MirrorAddress $.Mirror}}{{end}}">{{if .SanitizedOriginalURL}}{{.SanitizedOriginalURL}}{{else}}{{MirrorAddress $.Mirror}}{{end}}</a></div>{{end}}
{{if .IsFork}}<div class="fork-flag">{{$.i18n.Tr "repo.forked_from"}} <a href="{{.BaseRepo.Link}}">{{SubStr .BaseRepo.RelLink 1 -1}}</a></div>{{end}}
@@ -39,7 +70,7 @@
{{if and (not .IsEmpty) ($.Permission.CanRead $.UnitTypeCode)}}
<div class="ui labeled button {{if and ($.IsSigned) (not $.CanSignedUserFork)}}disabled-repo-button{{end}}" tabindex="0">
<a class="ui compact basic button {{if or (not $.IsSigned) (not $.CanSignedUserFork)}}poping up{{end}}" {{if $.CanSignedUserFork}}href="{{AppSubUrl}}/repo/fork/{{.ID}}"{{else if $.IsSigned}} data-content="{{$.i18n.Tr "repo.fork_from_self"}}" {{ else }} data-content="{{$.i18n.Tr "repo.fork_guest_user" }}" rel="nofollow" href="{{AppSubUrl}}/user/login?redirect_to={{AppSubUrl}}/repo/fork/{{.ID}}" {{end}} data-position="top center" data-variation="tiny">
- <i class="octicon octicon-repo-forked"></i>{{$.i18n.Tr "repo.fork"}}
+ {{svg "octicon-repo-forked" 16}}{{$.i18n.Tr "repo.fork"}}
</a>
<a class="ui basic label" href="{{.Link}}/forks">
{{.NumForks}}
@@ -56,43 +87,43 @@
<div class="ui tabular stackable menu navbar">
{{if .Permission.CanRead $.UnitTypeCode}}
<a class="{{if .PageIsViewCode}}active{{end}} item" href="{{.RepoLink}}{{if (ne .BranchName .Repository.DefaultBranch)}}/src/{{.BranchNameSubURL | EscapePound}}{{end}}">
- <i class="octicon octicon-code"></i> {{.i18n.Tr "repo.code"}}
+ {{svg "octicon-code" 16}} {{.i18n.Tr "repo.code"}}
</a>
{{end}}
{{if .Permission.CanRead $.UnitTypeIssues}}
<a class="{{if .PageIsIssueList}}active{{end}} item" href="{{.RepoLink}}/issues">
- <i class="octicon octicon-issue-opened"></i> {{.i18n.Tr "repo.issues"}} <span class="ui {{if not .Repository.NumOpenIssues}}gray{{else}}blue{{end}} small label">{{.Repository.NumOpenIssues}}</span>
+ {{svg "octicon-issue-opened" 16}} {{.i18n.Tr "repo.issues"}} <span class="ui {{if not .Repository.NumOpenIssues}}gray{{else}}blue{{end}} small label">{{.Repository.NumOpenIssues}}</span>
</a>
{{end}}
{{if .Permission.CanRead $.UnitTypeExternalTracker}}
<a class="{{if .PageIsIssueList}}active{{end}} item" href="{{.RepoExternalIssuesLink}}" target="_blank" rel="noopener noreferrer">
- <i class="octicon octicon-link-external"></i> {{.i18n.Tr "repo.issues"}} </span>
+ {{svg "octicon-link-external" 16}} {{.i18n.Tr "repo.issues"}} </span>
</a>
{{end}}
{{if and .Repository.CanEnablePulls (.Permission.CanRead $.UnitTypePullRequests)}}
<a class="{{if .PageIsPullList}}active{{end}} item" href="{{.RepoLink}}/pulls">
- <i class="octicon octicon-git-pull-request"></i> {{.i18n.Tr "repo.pulls"}} <span class="ui {{if not .Repository.NumOpenPulls}}gray{{else}}blue{{end}} small label">{{.Repository.NumOpenPulls}}</span>
+ {{svg "octicon-git-pull-request" 16}} {{.i18n.Tr "repo.pulls"}} <span class="ui {{if not .Repository.NumOpenPulls}}gray{{else}}blue{{end}} small label">{{.Repository.NumOpenPulls}}</span>
</a>
{{end}}
{{if and (.Permission.CanRead $.UnitTypeReleases) (not .IsEmptyRepo) }}
<a class="{{if .PageIsReleaseList}}active{{end}} item" href="{{.RepoLink}}/releases">
- <i class="octicon octicon-tag"></i> {{.i18n.Tr "repo.releases"}} <span class="ui {{if not .Repository.NumReleases}}gray{{else}}blue{{end}} small label">{{.Repository.NumReleases}}</span>
+ {{svg "octicon-tag" 16}} {{.i18n.Tr "repo.releases"}} <span class="ui {{if not .Repository.NumReleases}}gray{{else}}blue{{end}} small label">{{.Repository.NumReleases}}</span>
</a>
{{end}}
{{if or (.Permission.CanRead $.UnitTypeWiki) (.Permission.CanRead $.UnitTypeExternalWiki)}}
<a class="{{if .PageIsWiki}}active{{end}} item" href="{{.RepoLink}}/wiki" {{if (.Permission.CanRead $.UnitTypeExternalWiki)}} target="_blank" rel="noopener noreferrer" {{end}}>
- <i class="octicon octicon-book"></i> {{.i18n.Tr "repo.wiki"}}
+ {{svg "octicon-book" 16}} {{.i18n.Tr "repo.wiki"}}
</a>
{{end}}
{{if and (.Permission.CanReadAny $.UnitTypePullRequests $.UnitTypeIssues $.UnitTypeReleases) (not .IsEmptyRepo)}}
<a class="{{if .PageIsActivity}}active{{end}} item" href="{{.RepoLink}}/activity">
- <i class="octicon octicon-pulse"></i> {{.i18n.Tr "repo.activity"}}
+ {{svg "octicon-pulse" 16}} {{.i18n.Tr "repo.activity"}}
</a>
{{end}}
@@ -101,7 +132,7 @@
{{if .Permission.IsAdmin}}
<div class="right menu">
<a class="{{if .PageIsSettings}}active{{end}} item" href="{{.RepoLink}}/settings">
- <i class="octicon octicon-tools"></i> {{.i18n.Tr "repo.settings"}}
+ {{svg "octicon-tools" 16}} {{.i18n.Tr "repo.settings"}}
</a>
</div>
{{end}}
diff --git a/templates/repo/home.tmpl b/templates/repo/home.tmpl
index 19989bbe06..2397cb1b88 100644
--- a/templates/repo/home.tmpl
+++ b/templates/repo/home.tmpl
@@ -127,14 +127,14 @@
{{end}}
{{if or (not $.DisableHTTP) (and (not $.DisableSSH) (or $.IsSigned $.ExposeAnonSSH))}}
<button class="ui basic icon button poping up clipboard" id="clipboard-btn" data-original="{{.i18n.Tr "repo.copy_link"}}" data-success="{{.i18n.Tr "repo.copy_link_success"}}" data-error="{{.i18n.Tr "repo.copy_link_error"}}" data-content="{{.i18n.Tr "repo.copy_link"}}" data-variation="inverted tiny" data-clipboard-target="#repo-clone-url">
- <i class="octicon octicon-clippy"></i>
+ {{svg "octicon-clippy" 16}}
</button>
{{end}}
<div class="ui basic jump dropdown icon button poping up" data-content="{{.i18n.Tr "repo.download_archive"}}" data-variation="tiny inverted" data-position="top right">
<i class="download icon"></i>
<div class="menu">
- <a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.BranchName}}.zip"><i class="octicon octicon-file-zip"></i> ZIP</a>
- <a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.BranchName}}.tar.gz"><i class="octicon octicon-file-zip"></i> TAR.GZ</a>
+ <a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.BranchName}}.zip">{{svg "octicon-file-zip" 16}}&nbsp;ZIP</a>
+ <a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.BranchName}}.tar.gz">{{svg "octicon-file-zip" 16}}&nbsp;TAR.GZ</a>
</div>
</div>
</div>
diff --git a/templates/repo/issue/branch_selector_field.tmpl b/templates/repo/issue/branch_selector_field.tmpl
index 8758be4ae0..a584152d61 100644
--- a/templates/repo/issue/branch_selector_field.tmpl
+++ b/templates/repo/issue/branch_selector_field.tmpl
@@ -15,7 +15,7 @@
<div class="two column row">
<a class="reference column" href="#" data-target="#branch-list">
<span class="text black">
- <i class="octicon octicon-git-branch"></i> {{.i18n.Tr "repo.branches"}}
+ {{svg "octicon-git-branch" 16}} {{.i18n.Tr "repo.branches"}}
</span>
</a>
<a class="reference column" href="#" data-target="#tag-list">
@@ -40,4 +40,4 @@
</div>
<div class="ui divider"></div>
-{{end}} \ No newline at end of file
+{{end}}
diff --git a/templates/repo/issue/labels.tmpl b/templates/repo/issue/labels.tmpl
index 32a5c2a4ef..4719c8f1fb 100644
--- a/templates/repo/issue/labels.tmpl
+++ b/templates/repo/issue/labels.tmpl
@@ -98,18 +98,18 @@
<li class="item">
<div class="ui grid">
<div class="three wide column">
- <div class="ui label has-emoji" style="color: {{.ForegroundColor}}; background-color: {{.Color}}"><i class="octicon octicon-tag"></i> {{.Name}}</div>
+ <div class="ui label has-emoji" style="color: {{.ForegroundColor}}; background-color: {{.Color}}">{{svg "octicon-tag" 16}} {{.Name}}</div>
</div>
<div class="seven wide column">
{{.Description}}
</div>
<div class="three wide column">
- <a class="ui right open-issues" href="{{$.RepoLink}}/issues?labels={{.ID}}"><i class="octicon octicon-issue-opened"></i> {{$.i18n.Tr "repo.issues.label_open_issues" .NumOpenIssues}}</a>
+ <a class="ui right open-issues" href="{{$.RepoLink}}/issues?labels={{.ID}}">{{svg "octicon-issue-opened" 16}} {{$.i18n.Tr "repo.issues.label_open_issues" .NumOpenIssues}}</a>
</div>
<div class="three wide column">
{{if and (not $.Repository.IsArchived) (or $.CanWriteIssues $.CanWritePulls)}}
- <a class="ui right delete-button" href="#" data-url="{{$.RepoLink}}/labels/delete" data-id="{{.ID}}"><i class="octicon octicon-trashcan"></i> {{$.i18n.Tr "repo.issues.label_delete"}}</a>
- <a class="ui right edit-label-button" href="#" data-id="{{.ID}}" data-title="{{.Name}}" data-description="{{.Description}}" data-color={{.Color}}><i class="octicon octicon-pencil"></i> {{$.i18n.Tr "repo.issues.label_edit"}}</a>
+ <a class="ui right delete-button" href="#" data-url="{{$.RepoLink}}/labels/delete" data-id="{{.ID}}">{{svg "octicon-trashcan" 16}} {{$.i18n.Tr "repo.issues.label_delete"}}</a>
+ <a class="ui right edit-label-button" href="#" data-id="{{.ID}}" data-title="{{.Name}}" data-description="{{.Description}}" data-color={{.Color}}>{{svg "octicon-pencil" 16}} {{$.i18n.Tr "repo.issues.label_edit"}}</a>
{{end}}
</div>
</div>
diff --git a/templates/repo/issue/list.tmpl b/templates/repo/issue/list.tmpl
index ca6fa72b98..0b618daaa9 100644
--- a/templates/repo/issue/list.tmpl
+++ b/templates/repo/issue/list.tmpl
@@ -30,11 +30,11 @@
<div class="six wide column">
<div class="ui tiny basic status buttons">
<a class="ui {{if not .IsShowClosed}}green active{{end}} basic button" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state=open&labels={{.SelectLabels}}&milestone={{.MilestoneID}}&assignee={{.AssigneeID}}">
- <i class="octicon octicon-issue-opened"></i>
+ {{svg "octicon-issue-opened" 16}}
{{.i18n.Tr "repo.issues.open_tab" .IssueStats.OpenCount}}
</a>
<a class="ui {{if .IsShowClosed}}red active{{end}} basic button" href="{{$.Link}}?q={{$.Keyword}}&type={{.ViewType}}&sort={{$.SortType}}&state=closed&labels={{.SelectLabels}}&milestone={{.MilestoneID}}&assignee={{.AssigneeID}}">
- <i class="octicon octicon-issue-closed"></i>
+ {{svg "octicon-issue-closed" 16}}
{{.i18n.Tr "repo.issues.close_tab" .IssueStats.ClosedCount}}
</a>
</div>
@@ -51,7 +51,7 @@
<span class="info">{{.i18n.Tr "repo.issues.filter_label_exclude" | Safe}}</span>
<a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_label_no_select"}}</a>
{{range .Labels}}
- <a class="item has-emoji label-filter-item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.QueryString}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}" data-label-id="{{.ID}}"><span class="octicon {{if .IsExcluded}}octicon-circle-slash{{else if .IsSelected}}octicon-check{{end}}"></span><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}</a>
+ <a class="item has-emoji label-filter-item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.QueryString}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}" data-label-id="{{.ID}}">{{if .IsExcluded}}{{svg "octicon-circle-slash" 16}}{{else if .IsSelected}}{{svg "octicon-check" 16}}{{end}}<span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}</a>
{{end}}
</div>
</div>
@@ -124,11 +124,11 @@
<div class="six wide column">
<div class="ui tiny basic status buttons">
<a class="ui {{if not .IsShowClosed}}green active{{end}} basic button" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state=open&labels={{.SelectLabels}}&milestone={{.MilestoneID}}&assignee={{.AssigneeID}}">
- <i class="octicon octicon-issue-opened"></i>
+ {{svg "octicon-issue-opened" 16}}
{{.i18n.Tr "repo.issues.open_tab" .IssueStats.OpenCount}}
</a>
<a class="ui {{if .IsShowClosed}}red active{{end}} basic button" href="{{$.Link}}?q={{$.Keyword}}&type={{.ViewType}}&sort={{$.SortType}}&state=closed&labels={{.SelectLabels}}&milestone={{.MilestoneID}}&assignee={{.AssigneeID}}">
- <i class="octicon octicon-issue-closed"></i>
+ {{svg "octicon-issue-closed" 16}}
{{.i18n.Tr "repo.issues.close_tab" .IssueStats.ClosedCount}}
</a>
</div>
@@ -155,7 +155,7 @@
<div class="menu">
{{range .Labels}}
<div class="item issue-action has-emoji" data-action="toggle" data-element-id="{{.ID}}" data-url="{{$.RepoLink}}/issues/labels">
- <span class="octicon {{if contain $.SelLabelIDs .ID}}octicon-check{{end}}"></span><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}
+ {{if contain $.SelLabelIDs .ID}}{{svg "octicon-check" 16}}{{end}}<span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}
</div>
{{end}}
</div>
@@ -223,11 +223,11 @@
{{end}}
{{if .NumComments}}
- <span class="comment ui right"><i class="octicon octicon-comment"></i> {{.NumComments}}</span>
+ <span class="comment ui right">{{svg "octicon-comment" 16}} {{.NumComments}}</span>
{{end}}
{{if .TotalTrackedTime}}
- <span class="comment ui right"><i class="octicon octicon-clock"></i> {{.TotalTrackedTime | Sec2Time}}</span>
+ <span class="comment ui right">{{svg "octicon-clock" 16}} {{.TotalTrackedTime | Sec2Time}}</span>
{{end}}
<p class="desc">
@@ -242,24 +242,24 @@
{{if .Milestone}}
<a class="milestone" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{.Milestone.ID}}&assignee={{$.AssigneeID}}">
- <span class="octicon octicon-milestone"></span> {{.Milestone.Name}}
+ {{svg "octicon-milestone" 16}} {{.Milestone.Name}}
</a>
{{end}}
{{if .Ref}}
<a class="ref" href="{{$.RepoLink}}/src/branch/{{.Ref | PathEscapeSegments}}">
- <span class="octicon octicon-git-branch"></span> {{.Ref}}
+ {{svg "octicon-git-branch" 16}} {{.Ref}}
</a>
{{end}}
{{$tasks := .GetTasks}}
{{if gt $tasks 0}}
{{$tasksDone := .GetTasksDone}}
<span class="checklist">
- <span class="octicon octicon-checklist"></span> {{$tasksDone}} / {{$tasks}} <span class="progress-bar"><span class="progress" style="width:calc(100% * {{$tasksDone}} / {{$tasks}});"></span></span>
+ {{svg "octicon-checklist" 16}} {{$tasksDone}} / {{$tasks}} <span class="progress-bar"><span class="progress" style="width:calc(100% * {{$tasksDone}} / {{$tasks}});"></span></span>
</span>
{{end}}
{{if ne .DeadlineUnix 0}}
<span class="due-date poping up" data-content="{{$.i18n.Tr "repo.issues.due_date"}}" data-variation="tiny inverted" data-position="right center">
- <span class="octicon octicon-calendar"></span><span{{if .IsOverdue}} class="overdue"{{end}}>{{.DeadlineUnix.FormatShort}}</span>
+ {{svg "octicon-calendar" 16}}<span{{if .IsOverdue}} class="overdue"{{end}}>{{.DeadlineUnix.FormatShort}}</span>
</span>
{{end}}
{{range .Assignees}}
@@ -269,7 +269,7 @@
{{end}}
{{if .IsPull}}
{{if and (not .PullRequest.HasMerged) ((len .PullRequest.ConflictedFiles) gt 0)}}
- <span class="conflicting"><i class="octicon octicon-mirror"></i> {{$.i18n.Tr (TrN $.i18n.Lang (len .PullRequest.ConflictedFiles) "repo.pulls.num_conflicting_files_1" "repo.pulls.num_conflicting_files_n") (len .PullRequest.ConflictedFiles)}}</span>
+ <span class="conflicting">{{svg "octicon-mirror" 16}} {{$.i18n.Tr (TrN $.i18n.Lang (len .PullRequest.ConflictedFiles) "repo.pulls.num_conflicting_files_1" "repo.pulls.num_conflicting_files_n") (len .PullRequest.ConflictedFiles)}}</span>
{{end}}
{{end}}
</p>
diff --git a/templates/repo/issue/milestone_issues.tmpl b/templates/repo/issue/milestone_issues.tmpl
index fb0609601c..fdde0ad6b4 100644
--- a/templates/repo/issue/milestone_issues.tmpl
+++ b/templates/repo/issue/milestone_issues.tmpl
@@ -7,7 +7,7 @@
<h3>{{.Milestone.Name}}</h3>
</div>
<div class="column center aligned">
-
+
</div>
{{if not .Repository.IsArchived}}
<div class="column right aligned">
@@ -22,16 +22,16 @@
<div class="column">
{{ $closedDate:= TimeSinceUnix .Milestone.ClosedDateUnix $.Lang }}
{{if .IsClosed}}
- <span class="octicon octicon-clock"></span> {{$.i18n.Tr "repo.milestones.closed" $closedDate|Str2html}}
+ {{svg "octicon-clock" 16}} {{$.i18n.Tr "repo.milestones.closed" $closedDate|Str2html}}
{{else}}
- <span class="octicon octicon-calendar"></span>
+ {{svg "octicon-calendar" 16}}
{{if .Milestone.DeadlineString}}
<span {{if .IsOverdue}}class="overdue"{{end}}>{{.Milestone.DeadlineString}}</span>
{{else}}
{{$.i18n.Tr "repo.milestones.no_due_date"}}
{{end}}
{{end}}
- &nbsp;
+ &nbsp;
<b>{{.i18n.Tr "repo.milestones.completeness" .Milestone.Completeness}}</b>
</div>
</div>
@@ -40,11 +40,11 @@
<div class="six wide column">
<div class="ui tiny basic status buttons">
<a class="ui {{if not .IsShowClosed}}green active{{end}} basic button" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state=open&labels={{.SelectLabels}}&assignee={{.AssigneeID}}">
- <i class="octicon octicon-issue-opened"></i>
+ {{svg "octicon-issue-opened" 16}}
{{.i18n.Tr "repo.issues.open_tab" .IssueStats.OpenCount}}
</a>
<a class="ui {{if .IsShowClosed}}red active{{end}} basic button" href="{{$.Link}}?q={{$.Keyword}}&type={{.ViewType}}&sort={{$.SortType}}&state=closed&labels={{.SelectLabels}}&assignee={{.AssigneeID}}">
- <i class="octicon octicon-issue-closed"></i>
+ {{svg "octicon-issue-closed" 16}}
{{.i18n.Tr "repo.issues.close_tab" .IssueStats.ClosedCount}}
</a>
</div>
@@ -61,7 +61,7 @@
<span class="info">{{.i18n.Tr "repo.issues.filter_label_exclude" | Safe}}</span>
<a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_label_no_select"}}</a>
{{range .Labels}}
- <a class="item has-emoji label-filter-item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.ID}}&assignee={{$.AssigneeID}}" data-label-id="{{.ID}}"><span class="octicon {{if .IsExcluded}}octicon-circle-slash{{else if contain $.SelLabelIDs .ID}}octicon-check{{end}}"></span><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}</a>
+ <a class="item has-emoji label-filter-item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.ID}}&assignee={{$.AssigneeID}}" data-label-id="{{.ID}}">{{if .IsExcluded}}{{svg "octicon-circle-slash" 16}}{{else if contain $.SelLabelIDs .ID}}{{svg "octicon-check" 16}}{{end}}"><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}</a>
{{end}}
</div>
</div>
@@ -118,11 +118,11 @@
<div class="six wide column">
<div class="ui tiny basic status buttons">
<a class="ui {{if not .IsShowClosed}}green active{{end}} basic button" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state=open&labels={{.SelectLabels}}&assignee={{.AssigneeID}}">
- <i class="octicon octicon-issue-opened"></i>
+ {{svg "octicon-issue-opened" 16}}
{{.i18n.Tr "repo.issues.open_tab" .IssueStats.OpenCount}}
</a>
<a class="ui {{if .IsShowClosed}}red active{{end}} basic button" href="{{$.Link}}?q={{$.Keyword}}&type={{.ViewType}}&sort={{$.SortType}}&state=closed&labels={{.SelectLabels}}&assignee={{.AssigneeID}}">
- <i class="octicon octicon-issue-closed"></i>
+ {{svg "octicon-issue-closed" 16}}
{{.i18n.Tr "repo.issues.close_tab" .IssueStats.ClosedCount}}
</a>
</div>
@@ -149,7 +149,7 @@
<div class="menu">
{{range .Labels}}
<div class="item issue-action has-emoji" data-action="toggle" data-element-id="{{.ID}}" data-url="{{$.RepoLink}}/issues/labels">
- <span class="octicon {{if contain $.SelLabelIDs .ID}}octicon-check{{end}}"></span><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}
+ {{if contain $.SelLabelIDs .ID}}{{svg "octicon-check" 16}}{{end}}"><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}
</div>
{{end}}
</div>
@@ -193,11 +193,11 @@
{{end}}
{{if .NumComments}}
- <span class="comment ui right"><i class="octicon octicon-comment"></i> {{.NumComments}}</span>
+ <span class="comment ui right">{{svg "octicon-comment" 16}} {{.NumComments}}</span>
{{end}}
{{if .TotalTrackedTime}}
- <span class="comment ui right"><i class="octicon octicon-clock"></i> {{.TotalTrackedTime | Sec2Time}}</span>
+ <span class="comment ui right">{{svg "octicon-clock" 16}} {{.TotalTrackedTime | Sec2Time}}</span>
{{end}}
<p class="desc">
@@ -208,18 +208,18 @@
{{end}}
{{if .Ref}}
<a class="ref" href="{{$.RepoLink}}/src/branch/{{.Ref}}">
- <span class="octicon octicon-git-branch"></span> {{.Ref}}
+ {{svg "octicon-git-branch" 16}} {{.Ref}}
</a>
{{end}}
{{$tasks := .GetTasks}}
{{if gt $tasks 0}}
{{$tasksDone := .GetTasksDone}}
<span class="checklist">
- <span class="octicon octicon-checklist"></span> {{$tasksDone}} / {{$tasks}} <span class="progress-bar"><span class="progress" style="width:calc(100% * {{$tasksDone}} / {{$tasks}});"></span></span>
+ {{svg "octicon-checklist" 16}} {{$tasksDone}} / {{$tasks}} <span class="progress-bar"><span class="progress" style="width:calc(100% * {{$tasksDone}} / {{$tasks}});"></span></span>
</span>
{{end}}
{{if ne .DeadlineUnix 0}}
- <span class="octicon octicon-calendar"></span>
+ {{svg "octicon-calendar" 16}}
<span{{if .IsOverdue}} class="overdue"{{end}}>{{.DeadlineUnix.FormatShort}}</span>
{{end}}
{{range .Assignees}}
diff --git a/templates/repo/issue/milestones.tmpl b/templates/repo/issue/milestones.tmpl
index ef5eece770..e33124e66e 100644
--- a/templates/repo/issue/milestones.tmpl
+++ b/templates/repo/issue/milestones.tmpl
@@ -14,11 +14,11 @@
{{template "base/alert" .}}
<div class="ui tiny basic buttons">
<a class="ui {{if not .IsShowClosed}}green active{{end}} basic button" href="{{.RepoLink}}/milestones?state=open">
- <i class="octicon octicon-milestone"></i>
+ {{svg "octicon-milestone" 16}}
{{.i18n.Tr "repo.milestones.open_tab" .OpenCount}}
</a>
<a class="ui {{if .IsShowClosed}}red active{{end}} basic button" href="{{.RepoLink}}/milestones?state=closed">
- <i class="octicon octicon-milestone"></i>
+ {{svg "octicon-milestone" 16}}
{{.i18n.Tr "repo.milestones.close_tab" .ClosedCount}}
</a>
</div>
@@ -43,7 +43,7 @@
<div class="milestone list">
{{range .Milestones}}
<li class="item">
- <i class="octicon octicon-milestone"></i> <a href="{{$.RepoLink}}/milestone/{{.ID}}">{{.Name}}</a>
+ {{svg "octicon-milestone" 16}} <a href="{{$.RepoLink}}/milestone/{{.ID}}">{{.Name}}</a>
<div class="ui right green progress" data-percent="{{.Completeness}}">
<div class="bar" {{if not .Completeness}}style="background-color: transparent"{{end}}>
<div class="progress"></div>
@@ -52,9 +52,9 @@
<div class="meta">
{{ $closedDate:= TimeSinceUnix .ClosedDateUnix $.Lang }}
{{if .IsClosed}}
- <span class="octicon octicon-clock"></span> {{$.i18n.Tr "repo.milestones.closed" $closedDate|Str2html}}
+ {{svg "octicon-clock" 16}} {{$.i18n.Tr "repo.milestones.closed" $closedDate|Str2html}}
{{else}}
- <span class="octicon octicon-calendar"></span>
+ {{svg "octicon-calendar" 16}}
{{if .DeadlineString}}
<span {{if .IsOverdue}}class="overdue"{{end}}>{{.DeadlineString}}</span>
{{else}}
@@ -62,20 +62,20 @@
{{end}}
{{end}}
<span class="issue-stats">
- <i class="octicon octicon-issue-opened"></i> {{$.i18n.Tr "repo.issues.open_tab" .NumOpenIssues}}
- <i class="octicon octicon-issue-closed"></i> {{$.i18n.Tr "repo.issues.close_tab" .NumClosedIssues}}
- {{if .TotalTrackedTime}}<i class="octicon octicon-clock"></i> {{.TotalTrackedTime|Sec2Time}}{{end}}
+ {{svg "octicon-issue-opened" 16}} {{$.i18n.Tr "repo.issues.open_tab" .NumOpenIssues}}
+ {{svg "octicon-issue-closed" 16}} {{$.i18n.Tr "repo.issues.close_tab" .NumClosedIssues}}
+ {{if .TotalTrackedTime}}{{svg "octicon-clock" 16}} {{.TotalTrackedTime|Sec2Time}}{{end}}
</span>
</div>
{{if and (or $.CanWriteIssues $.CanWritePulls) (not $.Repository.IsArchived)}}
<div class="ui right operate">
- <a href="{{$.Link}}/{{.ID}}/edit" data-id={{.ID}} data-title={{.Name}}><i class="octicon octicon-pencil"></i> {{$.i18n.Tr "repo.issues.label_edit"}}</a>
+ <a href="{{$.Link}}/{{.ID}}/edit" data-id={{.ID}} data-title={{.Name}}>{{svg "octicon-pencil" 16}} {{$.i18n.Tr "repo.issues.label_edit"}}</a>
{{if .IsClosed}}
- <a href="{{$.Link}}/{{.ID}}/open" data-id={{.ID}} data-title={{.Name}}><i class="octicon octicon-check"></i> {{$.i18n.Tr "repo.milestones.open"}}</a>
+ <a href="{{$.Link}}/{{.ID}}/open" data-id={{.ID}} data-title={{.Name}}>{{svg "octicon-check" 16}} {{$.i18n.Tr "repo.milestones.open"}}</a>
{{else}}
- <a href="{{$.Link}}/{{.ID}}/close" data-id={{.ID}} data-title={{.Name}}><i class="octicon octicon-x"></i> {{$.i18n.Tr "repo.milestones.close"}}</a>
+ <a href="{{$.Link}}/{{.ID}}/close" data-id={{.ID}} data-title={{.Name}}>{{svg "octicon-x" 16}} {{$.i18n.Tr "repo.milestones.close"}}</a>
{{end}}
- <a class="delete-button" href="#" data-url="{{$.RepoLink}}/milestones/delete" data-id="{{.ID}}"><i class="octicon octicon-trashcan"></i> {{$.i18n.Tr "repo.issues.label_delete"}}</a>
+ <a class="delete-button" href="#" data-url="{{$.RepoLink}}/milestones/delete" data-id="{{.ID}}">{{svg "octicon-trashcan" 16}} {{$.i18n.Tr "repo.issues.label_delete"}}</a>
</div>
{{end}}
{{if .Content}}
diff --git a/templates/repo/issue/new_form.tmpl b/templates/repo/issue/new_form.tmpl
index 470139d7f3..524b849c14 100644
--- a/templates/repo/issue/new_form.tmpl
+++ b/templates/repo/issue/new_form.tmpl
@@ -41,12 +41,12 @@
<div class="ui {{if not .Labels}}disabled{{end}} floating jump select-label dropdown">
<span class="text">
<strong>{{.i18n.Tr "repo.issues.new.labels"}}</strong>
- <span class="octicon octicon-gear"></span>
+ {{svg "octicon-gear" 16}}
</span>
<div class="filter menu" data-id="#label_ids">
<div class="no-select item">{{.i18n.Tr "repo.issues.new.clear_labels"}}</div>
{{range .Labels}}
- <a class="{{if .IsChecked}}checked{{end}} item has-emoji" href="#" data-id="{{.ID}}" data-id-selector="#label_{{.ID}}"><span class="octicon {{if .IsChecked}}octicon-check{{end}}"></span><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}
+ <a class="{{if .IsChecked}}checked{{end}} item has-emoji" href="#" data-id="{{.ID}}" data-id-selector="#label_{{.ID}}"><span class="octicon-check {{if not .IsChecked}}invisible{{end}}">{{svg "octicon-check" 16}}</span><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}
{{if .Description }}<br><small class="desc">{{.Description}}</small>{{end}}</a>
{{end}}
</div>
@@ -64,14 +64,14 @@
<div class="ui {{if not (or .OpenMilestones .ClosedMilestones)}}disabled{{end}} floating jump select-milestone dropdown">
<span class="text">
<strong>{{.i18n.Tr "repo.issues.new.milestone"}}</strong>
- <span class="octicon octicon-gear"></span>
+ {{svg "octicon-gear" 16}}
</span>
<div class="menu">
<div class="no-select item">{{.i18n.Tr "repo.issues.new.clear_milestone"}}</div>
{{if .OpenMilestones}}
<div class="divider"></div>
<div class="header">
- <i class="octicon octicon-milestone"></i>
+ {{svg "octicon-milestone" 16}}
{{.i18n.Tr "repo.issues.new.open_milestone"}}
</div>
{{range .OpenMilestones}}
@@ -81,7 +81,7 @@
{{if .ClosedMilestones}}
<div class="divider"></div>
<div class="header">
- <i class="octicon octicon-milestone"></i>
+ {{svg "octicon-milestone" 16}}
{{.i18n.Tr "repo.issues.new.closed_milestone"}}
</div>
{{range .ClosedMilestones}}
@@ -105,13 +105,13 @@
<div class="ui {{if not .Assignees}}disabled{{end}} floating jump select-assignees dropdown">
<span class="text">
<strong>{{.i18n.Tr "repo.issues.new.assignees"}}</strong>
- <span class="octicon octicon-gear"></span>
+ {{svg "octicon-gear" 16}}
</span>
<div class="filter menu" data-id="#assignee_ids">
<div class="no-select item">{{.i18n.Tr "repo.issues.new.clear_assignees"}}</div>
{{range .Assignees}}
<a class="item" href="#" data-id="{{.ID}}" data-id-selector="#assignee_{{.ID}}">
- <span class="octicon"></span>
+ <span class="octicon-check invisible">{{svg "octicon-check" 16}}</span>
<span class="text">
<img class="ui avatar image" src="{{.RelAvatarLink}}"> {{.GetDisplayName}}
</span>
diff --git a/templates/repo/issue/view_content/add_reaction.tmpl b/templates/repo/issue/view_content/add_reaction.tmpl
index 9e1dc3cc87..543f313f0a 100644
--- a/templates/repo/issue/view_content/add_reaction.tmpl
+++ b/templates/repo/issue/view_content/add_reaction.tmpl
@@ -1,8 +1,8 @@
{{if .ctx.IsSigned}}
<div class="item action ui pointing top right select-reaction dropdown" data-action-url="{{ .ActionURL }}">
<a class="add-reaction">
- <i class="octicon octicon-plus-small" style="width: 10px"></i>
- <i class="octicon octicon-smiley"></i>
+ {{svg "octicon-plus-small" 16}}
+ {{svg "octicon-smiley" 16}}
</a>
<div class="menu has-emoji">
<div class="header">{{ .ctx.i18n.Tr "repo.pick_reaction"}}</div>
diff --git a/templates/repo/issue/view_content/attachments.tmpl b/templates/repo/issue/view_content/attachments.tmpl
index a97f5d85da..17bf9bb9ed 100644
--- a/templates/repo/issue/view_content/attachments.tmpl
+++ b/templates/repo/issue/view_content/attachments.tmpl
@@ -3,7 +3,7 @@
{{if FilenameIsImage .Name}}
<img class="ui image" src="{{.DownloadURL}}" title='{{$.ctx.i18n.Tr "repo.issues.attachment.open_tab" .Name}}'>
{{else}}
- <span class="ui image octicon octicon-desktop-download" title='{{$.ctx.i18n.Tr "repo.issues.attachment.download" .Name}}'></span>
+ <span class="ui image" title='{{$.ctx.i18n.Tr "repo.issues.attachment.download" .Name}}'>{{svg "octicon-desktop-download" 16}}</span>
{{end}}
</a>
{{end}}
diff --git a/templates/repo/issue/view_content/comments.tmpl b/templates/repo/issue/view_content/comments.tmpl
index 9c99f44ba8..2e9d8a32ba 100644
--- a/templates/repo/issue/view_content/comments.tmpl
+++ b/templates/repo/issue/view_content/comments.tmpl
@@ -70,7 +70,7 @@
</div>
{{else if eq .Type 1}}
<div class="event" id="{{.HashTag}}">
- <span class="octicon octicon-primitive-dot"></span>
+ {{svg "octicon-primitive-dot" 16}}
<a class="ui avatar image" href="{{.Poster.HomeLink}}">
<img src="{{.Poster.RelAvatarLink}}">
</a>
@@ -78,7 +78,7 @@
</div>
{{else if eq .Type 2}}
<div class="event" id="{{.HashTag}}">
- <span class="octicon octicon-circle-slash issue-symbol"></span>
+ <span class="issue-symbol">{{svg "octicon-circle-slash" 16}}</span>
<a class="ui avatar image" href="{{.Poster.HomeLink}}">
<img src="{{.Poster.RelAvatarLink}}">
</a>
@@ -99,7 +99,7 @@
{{end}}
{{ $createdStr:= TimeSinceUnix .CreatedUnix $.Lang }}
<div class="event" id="{{.HashTag}}">
- <span class="octicon octicon-bookmark"></span>
+ {{svg "octicon-bookmark" 16}}
<a class="ui avatar image" href="{{.Poster.HomeLink}}">
<img src="{{.Poster.RelAvatarLink}}">
</a>
@@ -115,21 +115,21 @@
</div>
{{else if eq .Type 4}}
<div class="event" id="{{.HashTag}}">
- <span class="octicon octicon-bookmark"></span>
+ {{svg "octicon-bookmark" 16}}
<a class="ui avatar image" href="{{.Poster.HomeLink}}">
<img src="{{.Poster.RelAvatarLink}}">
</a>
<span class="text grey"><a href="{{.Poster.HomeLink}}">{{.Poster.GetDisplayName}}</a> {{$.i18n.Tr "repo.issues.commit_ref_at" .EventTag $createdStr | Safe}}</span>
<div class="detail">
- <span class="octicon octicon-git-commit"></span>
+ {{svg "octicon-git-commit" 16}}
<span class="text grey">{{.Content | Str2html}}</span>
</div>
</div>
{{else if eq .Type 7}}
{{if .Label}}
<div class="event" id="{{.HashTag}}">
- <span class="octicon octicon-primitive-dot"></span>
+ {{svg "octicon-primitive-dot" 16}}
<a class="ui avatar image" href="{{.Poster.HomeLink}}">
<img src="{{.Poster.RelAvatarLink}}">
</a>
@@ -139,7 +139,7 @@
{{end}}
{{else if eq .Type 8}}
<div class="event" id="{{.HashTag}}">
- <span class="octicon octicon-primitive-dot"></span>
+ {{svg "octicon-primitive-dot" 16}}
<a class="ui avatar image" href="{{.Poster.HomeLink}}">
<img src="{{.Poster.RelAvatarLink}}">
</a>
@@ -148,7 +148,7 @@
</div>
{{else if eq .Type 9}}
<div class="event" id="{{.HashTag}}">
- <span class="octicon octicon-primitive-dot"></span>
+ {{svg "octicon-primitive-dot" 16}}
{{if gt .AssigneeID 0}}
{{if .RemovedAssignee}}
<a class="ui avatar image" href="{{.Assignee.HomeLink}}">
@@ -179,7 +179,7 @@
</div>
{{else if eq .Type 10}}
<div class="event" id="{{.HashTag}}">
- <span class="octicon octicon-primitive-dot"></span>
+ {{svg "octicon-primitive-dot" 16}}
<a class="ui avatar image" href="{{.Poster.HomeLink}}">
<img src="{{.Poster.RelAvatarLink}}">
</a>
@@ -189,7 +189,7 @@
</div>
{{else if eq .Type 11}}
<div class="event" id="{{.HashTag}}">
- <span class="octicon octicon-primitive-dot"></span>
+ {{svg "octicon-primitive-dot" 16}}
<a class="ui avatar image" href="{{.Poster.HomeLink}}">
<img src="{{.Poster.RelAvatarLink}}">
</a>
@@ -199,7 +199,7 @@
</div>
{{else if eq .Type 12}}
<div class="event" id="{{.HashTag}}">
- <span class="octicon octicon-primitive-dot"></span>
+ {{svg "octicon-primitive-dot" 16}}
<a class="ui avatar image" href="{{.Poster.HomeLink}}">
<img src="{{.Poster.RelAvatarLink}}">
</a>
@@ -207,32 +207,32 @@
</div>
{{else if eq .Type 13}}
<div class="event" id="{{.HashTag}}">
- <span class="octicon octicon-primitive-dot"></span>
+ {{svg "octicon-primitive-dot" 16}}
<a class="ui avatar image" href="{{.Poster.HomeLink}}">
<img src="{{.Poster.RelAvatarLink}}">
</a>
<span class="text grey"><a href="{{.Poster.HomeLink}}">{{.Poster.GetDisplayName}}</a> {{$.i18n.Tr "repo.issues.stop_tracking_history" $createdStr | Safe}}</span>
<div class="detail">
- <span class="octicon octicon-clock"></span>
+ {{svg "octicon-clock" 16}}
<span class="text grey">{{.Content}}</span>
</div>
</div>
{{else if eq .Type 14}}
<div class="event" id="{{.HashTag}}">
- <span class="octicon octicon-primitive-dot"></span>
+ {{svg "octicon-primitive-dot" 16}}
<a class="ui avatar image" href="{{.Poster.HomeLink}}">
<img src="{{.Poster.RelAvatarLink}}">
</a>
<span class="text grey"><a href="{{.Poster.HomeLink}}">{{.Poster.GetDisplayName}}</a> {{$.i18n.Tr "repo.issues.add_time_history" $createdStr | Safe}}</span>
<div class="detail">
- <span class="octicon octicon-clock"></span>
+ {{svg "octicon-clock" 16}}
<span class="text grey">{{.Content}}</span>
</div>
</div>
{{else if eq .Type 15}}
<div class="event" id="{{.HashTag}}">
- <span class="octicon octicon-primitive-dot"></span>
+ {{svg "octicon-primitive-dot" 16}}
<a class="ui avatar image" href="{{.Poster.HomeLink}}">
<img src="{{.Poster.RelAvatarLink}}">
</a>
@@ -240,7 +240,7 @@
</div>
{{else if eq .Type 16}}
<div class="event" id="{{.HashTag}}">
- <span class="octicon octicon-primitive-dot"></span>
+ {{svg "octicon-primitive-dot" 16}}
<a class="ui avatar image" href="{{.Poster.HomeLink}}">
<img src="{{.Poster.RelAvatarLink}}">
</a>
@@ -250,7 +250,7 @@
</div>
{{else if eq .Type 17}}
<div class="event" id="{{.HashTag}}">
- <span class="octicon octicon-primitive-dot"></span>
+ {{svg "octicon-primitive-dot" 16}}
<a class="ui avatar image" href="{{.Poster.HomeLink}}">
<img src="{{.Poster.RelAvatarLink}}">
</a>
@@ -260,7 +260,7 @@
</div>
{{else if eq .Type 18}}
<div class="event" id="{{.HashTag}}">
- <span class="octicon octicon-primitive-dot"></span>
+ {{svg "octicon-primitive-dot" 16}}
<a class="ui avatar image" href="{{.Poster.HomeLink}}">
<img src="{{.Poster.RelAvatarLink}}">
</a>
@@ -270,7 +270,7 @@
</div>
{{else if eq .Type 19}}
<div class="event" id="{{.HashTag}}">
- <span class="octicon octicon-primitive-dot"></span>
+ {{svg "octicon-primitive-dot" 16}}
<a class="ui avatar image" href="{{.Poster.HomeLink}}">
<img src="{{.Poster.RelAvatarLink}}">
</a>
@@ -279,7 +279,7 @@
</span>
{{if .DependentIssue}}
<div class="detail">
- <span class="octicon octicon-plus"></span>
+ {{svg "octicon-plus" 16}}
<span class="text grey">
<a href="{{.DependentIssue.HTMLURL}}">
{{if eq .DependentIssue.RepoID .Issue.RepoID}}
@@ -294,7 +294,7 @@
</div>
{{else if eq .Type 20}}
<div class="event" id="{{.HashTag}}">
- <span class="octicon octicon-primitive-dot"></span>
+ {{svg "octicon-primitive-dot" 16}}
<a class="ui avatar image" href="{{.Poster.HomeLink}}">
<img src="{{.Poster.RelAvatarLink}}">
</a>
@@ -303,7 +303,7 @@
</span>
{{if .DependentIssue}}
<div class="detail">
- <span class="text grey octicon octicon-trashcan"></span>
+ <span class="text grey">{{svg "octicon-trashcan" 16}}</span>
<span class="text grey">
<a href="{{.DependentIssue.HTMLURL}}">
{{if eq .DependentIssue.RepoID .Issue.RepoID}}
@@ -318,7 +318,7 @@
</div>
{{else if eq .Type 22}}
<div class="event" id="{{.HashTag}}">
- <span class="octicon octicon-{{.Review.Type.Icon}} issue-symbol"></span>
+ <span class="issue-symbol">{{svg (printf "octicon-%s" .Review.Type.Icon) 16}}</span>
{{if .OriginalAuthor }}
{{else}}
<a class="ui avatar image"{{if gt .Poster.ID 0}} href="{{.Poster.HomeLink}}"{{end}}>
@@ -344,7 +344,7 @@
</span>
{{if .Content}}
<div class="detail">
- <span class="octicon octicon-quote"></span>
+ {{svg "octicon-quote" 16}}
<span class="text grey has-emoji">{{.Content}}</span>
</div>
{{end}}
@@ -355,11 +355,11 @@
{{$invalid := (index $comms 0).Invalidated}}
{{if $invalid}}
<button id="show-outdated-{{(index $comms 0).ID}}" data-comment="{{(index $comms 0).ID}}" class="ui compact right labeled button show-outdated">
- <i class="octicon octicon-fold"></i>
+ {{svg "octicon-fold" 16}}
{{$.i18n.Tr "repo.issues.review.show_outdated"}}
</button>
<button id="hide-outdated-{{(index $comms 0).ID}}" data-comment="{{(index $comms 0).ID}}" class="hide ui compact right labeled button hide-outdated">
- <i class="octicon octicon-fold"></i>
+ {{svg "octicon-fold" 16}}
{{$.i18n.Tr "repo.issues.review.hide_outdated"}}
</button>
{{end}}
@@ -417,7 +417,7 @@
</div>
{{else if eq .Type 23}}
<div class="event" id="{{.HashTag}}">
- <span class="octicon octicon-lock issue-symbol"></span>
+ <span class="issue-symbol">{{svg "octicon-lock" 16}}</span>
<a class="ui avatar image" href="{{.Poster.HomeLink}}">
<img src="{{.Poster.RelAvatarLink}}">
</a>
@@ -434,7 +434,7 @@
</div>
{{else if eq .Type 24}}
<div class="event" id="{{.HashTag}}">
- <span class="octicon octicon-key issue-symbol"></span>
+ <span class="issue-symbol">{{svg "octicon-key" 16}}</span>
<a class="ui avatar image" href="{{.Poster.HomeLink}}">
<img src="{{.Poster.RelAvatarLink}}">
</a>
@@ -445,7 +445,7 @@
</div>
{{else if eq .Type 25}}
<div class="event">
- <span class="octicon octicon-primitive-dot"></span>
+ {{svg "octicon-primitive-dot" 16}}
<a class="ui avatar image" href="{{.Poster.HomeLink}}">
<img src="{{.Poster.RelAvatarLink}}">
</a>
@@ -455,13 +455,13 @@
</div>
{{else if eq .Type 26}}
<div class="event" id="{{.HashTag}}">
- <span class="octicon octicon-primitive-dot"></span>
+ {{svg "octicon-primitive-dot" 16}}
<a class="ui avatar image" href="{{.Poster.HomeLink}}">
<img src="{{.Poster.RelAvatarLink}}">
</a>
<span class="text grey"><a href="{{.Poster.HomeLink}}">{{.Poster.GetDisplayName}}</a> {{$.i18n.Tr "repo.issues.del_time_history" $createdStr | Safe}}</span>
<div class="detail">
- <span class="octicon octicon-clock"></span>
+ {{svg "octicon-clock" 16}}
<span class="text grey">{{.Content}}</span>
</div>
</div>
diff --git a/templates/repo/issue/view_content/pull.tmpl b/templates/repo/issue/view_content/pull.tmpl
index 32c744515c..0d98f08e69 100644
--- a/templates/repo/issue/view_content/pull.tmpl
+++ b/templates/repo/issue/view_content/pull.tmpl
@@ -11,7 +11,7 @@
{{else if eq .Type 2}}grey
{{else if eq .Type 3}}red
{{else}}grey{{end}}">
- <span class="octicon octicon-{{.Type.Icon}}"></span>
+ {{svg (printf "octicon-%s" .Type.Icon) 16}}
</span>
{{if .Stale}}
<span class="type-icon text grey">
@@ -52,7 +52,7 @@
{{else if and .RequireSigned (not .WillSign)}}}red
{{else if .Issue.PullRequest.IsChecking}}yellow
{{else if .Issue.PullRequest.CanAutoMerge}}green
- {{else}}red{{end}}"><span class="mega-octicon octicon-git-merge"></span></a>
+ {{else}}red{{end}}">{{svg "octicon-git-merge" 32}}</a>
<div class="content">
{{template "repo/pulls/status" .}}
<div class="ui {{if not $.LatestCommitStatus}}top attached header{{else}}attached merge-section segment{{end}}">
@@ -87,7 +87,7 @@
{{end}}
{{else if .IsPullFilesConflicted}}
<div class="item text grey">
- <span class="octicon octicon-x"></span>
+ {{svg "octicon-x" 16}}
{{$.i18n.Tr "repo.pulls.files_conflicted"}}
{{range .ConflictedFiles}}
<div>{{.}}</div>
@@ -95,38 +95,38 @@
</div>
{{else if .IsPullRequestBroken}}
<div class="item text red">
- <i class="icon icon-octicon"><span class="octicon octicon-x"></span></i>
+ <i class="icon icon-octicon">{{svg "octicon-x" 16}}</i>
{{$.i18n.Tr "repo.pulls.data_broken"}}
</div>
{{else if .IsPullWorkInProgress}}
<div class="item text grey">
- <i class="icon icon-octicon"><span class="octicon octicon-x"></span></i>
+ <i class="icon icon-octicon">{{svg "octicon-x" 16}}</i>
{{$.i18n.Tr "repo.pulls.cannot_merge_work_in_progress" .WorkInProgressPrefix | Str2html}}
</div>
{{else if .Issue.PullRequest.IsChecking}}
<div class="item text yellow">
- <i class="icon icon-octicon"><span class="octicon octicon-sync"></span></i>
+ <i class="icon icon-octicon">{{svg "octicon-sync" 16}}</i>
{{$.i18n.Tr "repo.pulls.is_checking"}}
</div>
{{else if .Issue.PullRequest.CanAutoMerge}}
{{if .IsBlockedByApprovals}}
<div class="item text red">
- <i class="icon icon-octicon"><span class="octicon octicon-x"></span></i>
+ <i class="icon icon-octicon">{{svg "octicon-x" 16}}</i>
{{$.i18n.Tr "repo.pulls.blocked_by_approvals" .GrantedApprovals .Issue.PullRequest.ProtectedBranch.RequiredApprovals}}
</div>
{{else if .IsBlockedByRejection}}
<div class="item text red">
- <i class="icon icon-octicon"><span class="octicon octicon-x"></span></i>
+ <i class="icon icon-octicon">{{svg "octicon-x" 16}}</i>
{{$.i18n.Tr "repo.pulls.blocked_by_rejection"}}
</div>
{{else if and .EnableStatusCheck (or .RequiredStatusCheckState.IsError .RequiredStatusCheckState.IsFailure)}}
<div class="item text red">
- <i class="icon icon-octicon"><span class="octicon octicon-x"></span></i>
+ <i class="icon icon-octicon">{{svg "octicon-x" 16}}</i>
{{$.i18n.Tr "repo.pulls.required_status_check_failed"}}
</div>
{{else if and .RequireSigned (not .WillSign)}}
<div class="item text red">
- <i class="icon icon-octicon"><span class="octicon octicon-x"></span></i>
+ <i class="icon icon-octicon">{{svg "octicon-x" 16}}</i>
{{$.i18n.Tr "repo.pulls.require_signed_wont_sign"}}
</div>
<div class="item text yellow">
@@ -138,12 +138,12 @@
{{if and (or $.IsRepoAdmin (not $notAllOverridableChecksOk)) (or (not .RequireSigned) .WillSign)}}
{{if $notAllOverridableChecksOk}}
<div class="item text yellow">
- <i class="icon icon-octicon"><span class="octicon octicon-primitive-dot"></span></i>
+ <i class="icon icon-octicon">{{svg "octicon-primitive-dot" 16}}</i>
{{$.i18n.Tr "repo.pulls.required_status_check_administrator"}}
</div>
{{else}}
<div class="item text green">
- <i class="icon icon-octicon"><span class="octicon octicon-check"></span></i>
+ <i class="icon icon-octicon">{{svg "octicon-check" 16}}</i>
{{$.i18n.Tr "repo.pulls.can_auto_merge_desc"}}
</div>
{{end}}
@@ -162,7 +162,7 @@
<div class="ui very compact branch-update grid">
<div class="row">
<div class="item text gray eleven wide left floated column">
- <i class="icon icon-octicon"><span class="octicon octicon-alert"></span></i>
+ <i class="icon icon-octicon">{{svg "octicon-alert" 16}}</i>
{{$.i18n.Tr "repo.pulls.outdated_with_base_branch"}}
</div>
{{if .UpdateAllowed}}
@@ -256,7 +256,7 @@
{{end}}
<div class="ui {{if $notAllOverridableChecksOk}}red{{else}}green{{end}} buttons merge-button">
<button class="ui button" data-do="{{.MergeStyle}}">
- <span class="octicon octicon-git-merge"></span>
+ {{svg "octicon-git-merge" 16}}
<span class="button-text">
{{if eq .MergeStyle "merge"}}
{{$.i18n.Tr "repo.pulls.merge_pull_request"}}
@@ -292,17 +292,17 @@
</div>
{{else}}
<div class="item text red">
- <span class="octicon octicon-x"></span>
+ {{svg "octicon-x" 16}}
{{$.i18n.Tr "repo.pulls.no_merge_desc"}}
</div>
<div class="item text grey">
- <span class="octicon octicon-info"></span>
+ {{svg "octicon-info" 16}}
{{$.i18n.Tr "repo.pulls.no_merge_helper"}}
</div>
{{end}}
{{else}}
<div class="item text grey">
- <span class="octicon octicon-info"></span>
+ {{svg "octicon-info" 16}}
{{$.i18n.Tr "repo.pulls.no_merge_access"}}
</div>
{{end}}
@@ -311,31 +311,31 @@
{{/* Merge conflict without specific file. Suggest manual merge, only if all reviews and status checks OK. */}}
{{if .IsBlockedByApprovals}}
<div class="item text red">
- <span class="octicon octicon-x"></span>
+ {{svg "octicon-x" 16}}
{{$.i18n.Tr "repo.pulls.blocked_by_approvals" .GrantedApprovals .Issue.PullRequest.ProtectedBranch.RequiredApprovals}}
</div>
{{else if .IsBlockedByRejection}}
<div class="item text red">
- <span class="octicon octicon-x"></span>
+ {{svg "octicon-x" 16}}
{{$.i18n.Tr "repo.pulls.blocked_by_rejection"}}
</div>
{{else if and .EnableStatusCheck (not .IsRequiredStatusCheckSuccess)}}
<div class="item text red">
- <span class="octicon octicon-x"></span>
+ {{svg "octicon-x" 16}}
{{$.i18n.Tr "repo.pulls.required_status_check_failed"}}
</div>
{{else if and .RequireSigned (not .WillSign)}}
<div class="item text red">
- <span class="octicon octicon-x"></span>
+ {{svg "octicon-x" 16}}
{{$.i18n.Tr "repo.pulls.require_signed_wont_sign"}}
</div>
{{else}}
<div class="item text red">
- <span class="octicon octicon-x"></span>
+ {{svg "octicon-x" 16}}
{{$.i18n.Tr "repo.pulls.cannot_auto_merge_desc"}}
</div>
<div class="item text grey">
- <span class="octicon octicon-info"></span>
+ {{svg "octicon-info" 16}}
{{$.i18n.Tr "repo.pulls.cannot_auto_merge_helper"}}
</div>
{{end}}
diff --git a/templates/repo/issue/view_content/sidebar.tmpl b/templates/repo/issue/view_content/sidebar.tmpl
index 4d57173617..a9a4035594 100644
--- a/templates/repo/issue/view_content/sidebar.tmpl
+++ b/templates/repo/issue/view_content/sidebar.tmpl
@@ -5,12 +5,12 @@
<div class="ui {{if or (not .IsIssueWriter) .Repository.IsArchived}}disabled{{end}} floating jump select-label dropdown">
<span class="text">
<strong>{{.i18n.Tr "repo.issues.new.labels"}}</strong>
- <span class="octicon octicon-gear"></span>
+ {{svg "octicon-gear" 16}}
</span>
<div class="filter menu labels" data-action="update" data-issue-id="{{$.Issue.ID}}" data-update-url="{{$.RepoLink}}/issues/labels">
<div class="no-select item">{{.i18n.Tr "repo.issues.new.clear_labels"}}</div>
{{range .Labels}}
- <a class="{{if .IsChecked}}checked{{end}} item has-emoji" href="#" data-id="{{.ID}}" data-id-selector="#label_{{.ID}}"><span class="octicon {{if .IsChecked}}octicon-check{{end}}"></span><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}
+ <a class="{{if .IsChecked}}checked{{end}} item has-emoji" href="#" data-id="{{.ID}}" data-id-selector="#label_{{.ID}}"><span class="octicon-check {{if not .IsChecked}}invisible{{end}}">{{svg "octicon-check" 16}}</span><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}
{{if .Description }}<br><small class="desc">{{.Description}}</small>{{end}}</a>
{{end}}
</div>
@@ -30,14 +30,14 @@
<div class="ui {{if or (not .IsIssueWriter) .Repository.IsArchived}}disabled{{end}} floating jump select-milestone dropdown">
<span class="text">
<strong>{{.i18n.Tr "repo.issues.new.milestone"}}</strong>
- <span class="octicon octicon-gear"></span>
+ {{svg "octicon-gear" 16}}
</span>
<div class="menu" data-action="update" data-issue-id="{{$.Issue.ID}}" data-update-url="{{$.RepoLink}}/issues/milestone">
<div class="no-select item">{{.i18n.Tr "repo.issues.new.clear_milestone"}}</div>
{{if .OpenMilestones}}
<div class="divider"></div>
<div class="header">
- <i class="octicon octicon-milestone"></i>
+ {{svg "octicon-milestone" 16}}
{{.i18n.Tr "repo.issues.new.open_milestone"}}
</div>
{{range .OpenMilestones}}
@@ -47,7 +47,7 @@
{{if .ClosedMilestones}}
<div class="divider"></div>
<div class="header">
- <i class="octicon octicon-milestone"></i>
+ {{svg "octicon-milestone" 16}}
{{.i18n.Tr "repo.issues.new.closed_milestone"}}
</div>
{{range .ClosedMilestones}}
@@ -71,7 +71,7 @@
<div class="ui {{if or (not .IsIssueWriter) .Repository.IsArchived}}disabled{{end}} floating jump select-assignees-modify dropdown">
<span class="text">
<strong>{{.i18n.Tr "repo.issues.new.assignees"}}</strong>
- <span class="octicon octicon-gear"></span>
+ {{svg "octicon-gear" 16}}
</span>
<div class="filter menu" data-action="" data-issue-id="{{$.Issue.ID}}" data-update-url="{{$.RepoLink}}/issues/assignee">
<div class="no-select item">{{.i18n.Tr "repo.issues.new.clear_assignees"}}</div>
@@ -83,11 +83,13 @@
checked
{{end}}
{{end}}" href="#" data-id="{{.ID}}" data-id-selector="#assignee_{{.ID}}">
- <span class="octicon{{range $.Issue.Assignees}}
- {{if eq .ID $AssigneeID}}
- octicon-check
+ {{$checked := false}}
+ {{range $.Issue.Assignees}}
+ {{if eq .ID $AssigneeID}}
+ {{$checked = true}}
+ {{end}}
{{end}}
- {{end}}"></span>
+ <span class="octicon-check {{if not $checked}}invisible{{end}}">{{svg "octicon-check" 16}}</span>
<span class="text">
<img class="ui avatar image" src="{{.RelAvatarLink}}"> {{.GetDisplayName}}
</span>
@@ -130,10 +132,10 @@
{{$.CsrfTokenHtml}}
<button class="fluid ui button">
{{if $.IssueWatch.IsWatching}}
- <i class="octicon octicon-mute"></i>
+ {{svg "octicon-mute" 16}}
{{.i18n.Tr "repo.issues.unsubscribe"}}
{{else}}
- <i class="octicon octicon-unmute"></i>
+ {{svg "octicon-unmute" 16}}
{{.i18n.Tr "repo.issues.subscribe"}}
{{end}}
</button>
@@ -218,7 +220,7 @@
</div>
{{if ne .Issue.DeadlineUnix 0}}
<p>
- <span class="octicon octicon-calendar"></span>
+ {{svg "octicon-calendar" 16}}
{{.Issue.DeadlineUnix.FormatShort}}
{{if .Issue.IsOverdue}}
<span style="color: red;">{{.i18n.Tr "repo.issues.due_date_overdue"}}</span>
@@ -344,10 +346,10 @@
<div>
<button class="fluid ui show-modal button {{if .Issue.IsLocked }} negative {{ end }}" data-modal="#lock">
{{if .Issue.IsLocked}}
- <i class="octicon octicon-key"></i>
+ {{svg "octicon-key" 16}}
{{.i18n.Tr "repo.issues.unlock"}}
{{else}}
- <i class="octicon octicon-lock"></i>
+ {{svg "octicon-lock" 16}}
{{.i18n.Tr "repo.issues.lock"}}
{{end}}
</button>
diff --git a/templates/repo/issue/view_title.tmpl b/templates/repo/issue/view_title.tmpl
index 11bede3713..21ebf62129 100644
--- a/templates/repo/issue/view_title.tmpl
+++ b/templates/repo/issue/view_title.tmpl
@@ -17,13 +17,13 @@
{{end}}
</div>
{{if .HasMerged}}
- <div class="ui purple large label"><i class="octicon octicon-git-pull-request"></i> {{.i18n.Tr "repo.pulls.merged"}}</div>
+ <div class="ui purple large label">{{svg "octicon-gt-pull-request" 16}} {{.i18n.Tr "repo.pulls.merged"}}</div>
{{else if .Issue.IsClosed}}
- <div class="ui red large label"><i class="octicon octicon-issue-closed"></i> {{.i18n.Tr "repo.issues.closed_title"}}</div>
+ <div class="ui red large label">{{svg "octicon-issue-closed" 16}} {{.i18n.Tr "repo.issues.closed_title"}}</div>
{{else if .Issue.IsPull}}
- <div class="ui green large label"><i class="octicon octicon-git-pull-request"></i> {{.i18n.Tr "repo.issues.open_title"}}</div>
+ <div class="ui green large label">{{svg "octicon-git-pull-request" 16}} {{.i18n.Tr "repo.issues.open_title"}}</div>
{{else}}
- <div class="ui green large label"><i class="octicon octicon-issue-opened"></i> {{.i18n.Tr "repo.issues.open_title"}}</div>
+ <div class="ui green large label">{{svg "octicon-issue-opened" 16}} {{.i18n.Tr "repo.issues.open_title"}}</div>
{{end}}
{{if .Issue.IsPull}}
@@ -51,7 +51,7 @@
<span class="text">{{.i18n.Tr "repo.pulls.compare_compare"}}: {{$.HeadTarget}}</span>
</div>
</div>
- <i class="octicon octicon-arrow-right"></i>
+ {{svg "octicon-arrow-right" 16}}
<div class="ui floating filter dropdown" data-no-results="{{.i18n.Tr "repo.pulls.no_results"}}">
<div class="ui basic small button">
<span class="text" id="pull-target-branch" data-basename="{{$.BaseName}}" data-branch="{{$.BaseBranch}}">{{.i18n.Tr "repo.pulls.compare_base"}}: {{$.BaseName}}:{{$.BaseBranch}}</span>
diff --git a/templates/repo/pulls/tab_menu.tmpl b/templates/repo/pulls/tab_menu.tmpl
index e3f39e8ad2..b54751a401 100644
--- a/templates/repo/pulls/tab_menu.tmpl
+++ b/templates/repo/pulls/tab_menu.tmpl
@@ -1,16 +1,16 @@
<div class="ui top attached pull tabular stackable menu">
<a class="item {{if .PageIsPullConversation}}active{{end}}" href="{{.RepoLink}}/pulls/{{.Issue.Index}}">
- <span class="octicon octicon-comment-discussion"></span>
+ {{svg "octicon-comment-discussion" 16}}
{{$.i18n.Tr "repo.pulls.tab_conversation"}}
<span class="ui {{if not .Issue.NumComments}}gray{{else}}blue{{end}} small label">{{.Issue.NumComments}}</span>
</a>
<a class="item {{if .PageIsPullCommits}}active{{end}}" {{if .NumCommits}}href="{{.RepoLink}}/pulls/{{.Issue.Index}}/commits"{{end}}>
- <span class="octicon octicon-git-commit"></span>
+ {{svg "octicon-git-commit" 16}}
{{$.i18n.Tr "repo.pulls.tab_commits"}}
<span class="ui {{if not .NumCommits}}gray{{else}}blue{{end}} small label">{{if .NumCommits}}{{.NumCommits}}{{else}}N/A{{end}}</span>
</a>
<a class="item {{if .PageIsPullFiles}}active{{end}}" {{if .NumFiles}}href="{{.RepoLink}}/pulls/{{.Issue.Index}}/files"{{end}}>
- <span class="octicon octicon-diff"></span>
+ {{svg "octicon-diff" 16}}
{{$.i18n.Tr "repo.pulls.tab_files"}}
<span class="ui {{if not .NumFiles}}gray{{else}}blue{{end}} small label">{{if .NumFiles}}{{.NumFiles}}{{else}}N/A{{end}}</span>
</a>
diff --git a/templates/repo/release/list.tmpl b/templates/repo/release/list.tmpl
index 71cf697495..eb3b043238 100644
--- a/templates/repo/release/list.tmpl
+++ b/templates/repo/release/list.tmpl
@@ -43,8 +43,8 @@
<div class="download">
{{if $.Permission.CanRead $.UnitTypeCode}}
<a href="{{$.RepoLink}}/src/commit/{{.Sha1}}" rel="nofollow"><i class="code icon"></i> {{ShortSha .Sha1}}</a>
- <a href="{{$.RepoLink}}/archive/{{.TagName | EscapePound}}.zip" rel="nofollow"><i class="octicon octicon-file-zip"></i> ZIP</a>
- <a href="{{$.RepoLink}}/archive/{{.TagName | EscapePound}}.tar.gz"><i class="octicon octicon-file-zip"></i> TAR.GZ</a>
+ <a href="{{$.RepoLink}}/archive/{{.TagName | EscapePound}}.zip" rel="nofollow">{{svg "octicon-file-zip" 16}}&nbsp;ZIP</a>
+ <a href="{{$.RepoLink}}/archive/{{.TagName | EscapePound}}.tar.gz">{{svg "octicon-file-zip" 16}}&nbsp;TAR.GZ</a>
{{end}}
</div>
{{else}}
@@ -75,18 +75,18 @@
<ul class="list">
{{if $.Permission.CanRead $.UnitTypeCode}}
<li>
- <a href="{{$.RepoLink}}/archive/{{.TagName | EscapePound}}.zip" rel="nofollow"><strong><i class="octicon octicon-file-zip"></i> {{$.i18n.Tr "repo.release.source_code"}} (ZIP)</strong></a>
+ <a href="{{$.RepoLink}}/archive/{{.TagName | EscapePound}}.zip" rel="nofollow"><strong>{{svg "octicon-file-zip" 16}} {{$.i18n.Tr "repo.release.source_code"}} (ZIP)</strong></a>
</li>
<li>
- <a href="{{$.RepoLink}}/archive/{{.TagName | EscapePound}}.tar.gz"><strong><i class="octicon octicon-file-zip"></i> {{$.i18n.Tr "repo.release.source_code"}} (TAR.GZ)</strong></a>
+ <a href="{{$.RepoLink}}/archive/{{.TagName | EscapePound}}.tar.gz"><strong>{{svg "octicon-file-zip" 16}} {{$.i18n.Tr "repo.release.source_code"}} (TAR.GZ)</strong></a>
</li>
{{end}}
{{if .Attachments}}
{{range .Attachments}}
<li>
- <span class="ui text right" data-tooltip="{{$.i18n.Tr "repo.release.download_count" (.DownloadCount | PrettyNumber)}}" data-position="bottom right"><i class="ui octicon octicon-info"></i></span>
+ <span class="ui text right" data-tooltip="{{$.i18n.Tr "repo.release.download_count" (.DownloadCount | PrettyNumber)}}" data-position="bottom right">{{svg "octicon-info" 16}}</span>
<a target="_blank" rel="noopener noreferrer" href="{{.DownloadURL}}">
- <strong><span class="ui image octicon octicon-package" title='{{.Name}}'></span> {{.Name}}</strong>
+ <strong><span class="ui image" title='{{.Name}}'>{{svg "octicon-package" 16}}</span> {{.Name}}</strong>
<span class="ui text grey right">{{.Size | FileSize}}</span>
</a>
</li>
diff --git a/templates/repo/release/new.tmpl b/templates/repo/release/new.tmpl
index 01af6edc12..c45c5b20bf 100644
--- a/templates/repo/release/new.tmpl
+++ b/templates/repo/release/new.tmpl
@@ -23,7 +23,7 @@
<span class="at">@</span>
<div class="ui selection dropdown">
<input type="hidden" name="tag_target" value="{{.tag_target}}"/>
- <i class="octicon octicon-git-branch"></i>
+ {{svg "octicon-git-branch" 16}}
<div class="text">
{{.i18n.Tr "repo.release.target"}} :
<strong id="repo-branch-current">{{.Repository.DefaultBranch}}</strong>
diff --git a/templates/repo/settings/collaboration.tmpl b/templates/repo/settings/collaboration.tmpl
index f6234f94a0..8c6e6461ad 100644
--- a/templates/repo/settings/collaboration.tmpl
+++ b/templates/repo/settings/collaboration.tmpl
@@ -18,7 +18,7 @@
</a>
</div>
<div class="ui eight wide column">
- <span class="octicon octicon-shield"></span>
+ {{svg "octicon-shield-lock" 16}}
<div class="ui inline dropdown">
<div class="text">{{if eq .Collaboration.Mode 1}}{{$.i18n.Tr "repo.settings.collaboration.read"}}{{else if eq .Collaboration.Mode 2}}{{$.i18n.Tr "repo.settings.collaboration.write"}}{{else if eq .Collaboration.Mode 3}}{{$.i18n.Tr "repo.settings.collaboration.admin"}}{{else}}{{$.i18n.Tr "repo.settings.collaboration.undefined"}}{{end}}</div>
<i class="dropdown icon"></i>
@@ -67,7 +67,7 @@
</a>
</div>
<div class="ui eight wide column poping up" data-content="Team's permission is set on the team setting page and can't be changed per repository">
- <span class="octicon octicon-shield"></span>
+ {{svg "octicon-shield-lock" 16}}
<div class="ui inline dropdown">
<div class="text">{{if eq .Authorize 1}}{{$.i18n.Tr "repo.settings.collaboration.read"}}{{else if eq .Authorize 2}}{{$.i18n.Tr "repo.settings.collaboration.write"}}{{else if eq .Authorize 3}}{{$.i18n.Tr "repo.settings.collaboration.admin"}}{{else if eq .Authorize 4}}{{$.i18n.Tr "repo.settings.collaboration.owner"}}{{else}}{{$.i18n.Tr "repo.settings.collaboration.undefined"}}{{end}}</div>
</div>
diff --git a/templates/repo/settings/deploy_keys.tmpl b/templates/repo/settings/deploy_keys.tmpl
index 57477b37a8..2d228597e1 100644
--- a/templates/repo/settings/deploy_keys.tmpl
+++ b/templates/repo/settings/deploy_keys.tmpl
@@ -24,14 +24,14 @@
{{$.i18n.Tr "settings.delete_key"}}
</button>
</div>
- <i class="mega-octicon octicon-key {{if .HasRecentActivity}}green{{end}}" {{if .HasRecentActivity}}data-content="{{$.i18n.Tr "settings.key_state_desc"}}" data-variation="inverted"{{end}}></i>
+ <i class="{{if .HasRecentActivity}}green{{end}}" {{if .HasRecentActivity}}data-content="{{$.i18n.Tr "settings.key_state_desc"}}" data-variation="inverted"{{end}}>{{svg "octicon-key" 32}}</i>
<div class="content">
<strong>{{.Name}}</strong>
<div class="print meta">
{{.Fingerprint}}
</div>
<div class="activity meta">
- <i>{{$.i18n.Tr "settings.add_on"}} <span>{{.CreatedUnix.FormatShort}}</span> — <i class="octicon octicon-info"></i> {{if .HasUsed}}{{$.i18n.Tr "settings.last_used"}} <span {{if .HasRecentActivity}}class="green"{{end}}>{{.UpdatedUnix.FormatShort}}</span>{{else}}{{$.i18n.Tr "settings.no_activity"}}{{end}} - <span>{{$.i18n.Tr "settings.can_read_info"}}{{if not .IsReadOnly}} / {{$.i18n.Tr "settings.can_write_info"}} {{end}}</span></i>
+ <i>{{$.i18n.Tr "settings.add_on"}} <span>{{.CreatedUnix.FormatShort}}</span> — {{svg "octicon-info" 16}} {{if .HasUsed}}{{$.i18n.Tr "settings.last_used"}} <span {{if .HasRecentActivity}}class="green"{{end}}>{{.UpdatedUnix.FormatShort}}</span>{{else}}{{$.i18n.Tr "settings.no_activity"}}{{end}} - <span>{{$.i18n.Tr "settings.can_read_info"}}{{if not .IsReadOnly}} / {{$.i18n.Tr "settings.can_write_info"}} {{end}}</span></i>
</div>
</div>
</div>
diff --git a/templates/repo/settings/githooks.tmpl b/templates/repo/settings/githooks.tmpl
index 2af66780f9..99a38cb800 100644
--- a/templates/repo/settings/githooks.tmpl
+++ b/templates/repo/settings/githooks.tmpl
@@ -14,7 +14,7 @@
</div>
{{range .Hooks}}
<div class="item">
- <span class="text {{if .IsActive}}green{{else}}grey{{end}}"><i class="octicon octicon-primitive-dot"></i></span>
+ <span class="text {{if .IsActive}}green{{else}}grey{{end}}">{{svg "octicon-primitive-dot" 16}}</span>
<span>{{.Name}}</span>
<a class="text blue ui right" href="{{$.RepoLink}}/settings/hooks/git/{{.Name}}"><i class="fa fa-pencil"></i></a>
</div>
diff --git a/templates/repo/settings/lfs.tmpl b/templates/repo/settings/lfs.tmpl
index f43f9479a2..cde718d0cc 100644
--- a/templates/repo/settings/lfs.tmpl
+++ b/templates/repo/settings/lfs.tmpl
@@ -7,8 +7,8 @@
<h4 class="ui top attached header">
{{.i18n.Tr "repo.settings.lfs_filelist"}} ({{.i18n.Tr "admin.total" .Total}})
<div class="ui right">
- <a class="ui black tiny show-panel button" href="{{.Link}}/locks"><i class="octicon octicon-lock octicon-tiny"></i>{{.i18n.Tr "repo.settings.lfs_locks"}}</a>
- <a class="ui blue tiny show-panel button" href="{{.Link}}/pointers"><i class="octicon octicon-search octicon-tiny"></i>&nbsp;{{.i18n.Tr "repo.settings.lfs_findpointerfiles"}}</a>
+ <a class="ui black tiny show-panel button" href="{{.Link}}/locks"><span class="octicon-tiny">{{svg "octicon-lock" 16}}</span>{{.i18n.Tr "repo.settings.lfs_locks"}}</a>
+ <a class="ui blue tiny show-panel button" href="{{.Link}}/pointers"><span class="octicon-tiny">{{svg "octicon-search" 16}}</span>&nbsp;{{.i18n.Tr "repo.settings.lfs_findpointerfiles"}}</a>
</div>
</h4>
<table id="lfs-files-table" class="ui attached segment single line table">
@@ -27,7 +27,7 @@
<td class="right aligned">
<a class="ui blue show-panel button" href="{{$.Link}}/find?oid={{.Oid}}&size={{.Size}}">{{$.i18n.Tr "repo.settings.lfs_findcommits"}}</a>
<button class="ui basic show-modal icon button" data-modal="#delete-{{.Oid}}">
- <i class="octicon octicon-trashcan btn-octicon btn-octicon-danger poping up" data-content="{{$.i18n.Tr "repo.editor.delete_this_file"}}" data-position="bottom center" data-variation="tiny inverted"></i>
+ <span class="btn-octicon btn-octicon-danger poping up" data-content="{{$.i18n.Tr "repo.editor.delete_this_file"}}" data-position="bottom center" data-variation="tiny inverted">{{svg "octicon-trashcan" 16}}</span>
</button>
</td>
</tr>
diff --git a/templates/repo/settings/lfs_file_find.tmpl b/templates/repo/settings/lfs_file_find.tmpl
index 18db0215a5..1057cfa945 100644
--- a/templates/repo/settings/lfs_file_find.tmpl
+++ b/templates/repo/settings/lfs_file_find.tmpl
@@ -13,7 +13,7 @@
{{range .Results}}
<tr>
<td>
- <span class="octicon octicon-file-text"></span>
+ {{svg "octicon-file" 16}}
<a href="{{EscapePound $.RepoLink}}/src/commit/{{.SHA}}/{{EscapePound .Name}}" title="{{.Name}}">{{.Name}}</a>
</td>
<td class="message has-emoji">
@@ -24,7 +24,7 @@
</span>
</td>
<td>
- <span class="text grey"><i class="octicon octicon-git-branch"></i>{{.BranchName}}</span>
+ <span class="text grey">{{svg "octicon-git-branch" 16}}{{.BranchName}}</span>
</td>
<td>
{{if .ParentHashes}}
diff --git a/templates/repo/settings/lfs_locks.tmpl b/templates/repo/settings/lfs_locks.tmpl
index 8a5f6e1658..4830fb2542 100644
--- a/templates/repo/settings/lfs_locks.tmpl
+++ b/templates/repo/settings/lfs_locks.tmpl
@@ -23,14 +23,14 @@
<tr>
<td>
{{if index $.Linkable $index}}
- <span class="octicon octicon-file-text"></span>
+ {{svg "octicon-file" 16}}
<a href="{{EscapePound $.RepoLink}}/src/branch/{{EscapePound $lock.Repo.DefaultBranch}}/{{EscapePound $lock.Path}}" title="{{$lock.Path}}">{{$lock.Path}}</a>
{{else}}
- <span class="octicon octicon-diff"></span>
+ {{svg "octicon-diff" 16}}
<span class="poping up" title="{{$.i18n.Tr "repo.settings.lfs_lock_file_no_exist"}}">{{$lock.Path}}</span>
{{end}}
{{if not (index $.Lockables $index)}}
- <i class="octicon octicon-alert poping up" title="{{$.i18n.Tr "repo.settings.lfs_noattribute"}}"></i>
+ <span class="poping up" title="{{$.i18n.Tr "repo.settings.lfs_noattribute"}}">{{svg "octicon-alert" 16}}</span>
{{end}}
</td>
<td>
@@ -43,7 +43,7 @@
<td class="right aligned">
<form action="{{$.LFSFilesLink}}/locks/{{$lock.ID}}/unlock" method="POST">
{{$.CsrfTokenHtml}}
- <button class="ui blue button"><i class="octicon octicon-lock btn-octicon"></i>{{$.i18n.Tr "repo.settings.lfs_force_unlock"}}</button>
+ <button class="ui blue button"><span class="btn-octicon">{{svg "octicon-lock" 16}}</span>{{$.i18n.Tr "repo.settings.lfs_force_unlock"}}</button>
</form>
</td>
</tr>
diff --git a/templates/repo/settings/protected_branch.tmpl b/templates/repo/settings/protected_branch.tmpl
index b4c65f7830..86045f433f 100644
--- a/templates/repo/settings/protected_branch.tmpl
+++ b/templates/repo/settings/protected_branch.tmpl
@@ -65,7 +65,7 @@
<div class="menu">
{{range .Teams}}
<div class="item" data-value="{{.ID}}">
- <i class="octicon octicon-jersey"></i>
+ {{svg "octicon-jersey" 16}}
{{.Name}}
</div>
{{end}}
@@ -115,7 +115,7 @@
<div class="menu">
{{range .Teams}}
<div class="item" data-value="{{.ID}}">
- <i class="octicon octicon-jersey"></i>
+ {{svg "octicon-jersey" 16}}
{{.Name}}
</div>
{{end}}
@@ -195,7 +195,7 @@
<div class="menu">
{{range .Teams}}
<div class="item" data-value="{{.ID}}">
- <i class="octicon octicon-jersey"></i>
+ {{svg "octicon-jersey" 16}}
{{.Name}}
</div>
{{end}}
diff --git a/templates/repo/settings/webhook/history.tmpl b/templates/repo/settings/webhook/history.tmpl
index 577f357720..53c01c168b 100644
--- a/templates/repo/settings/webhook/history.tmpl
+++ b/templates/repo/settings/webhook/history.tmpl
@@ -14,9 +14,9 @@
<div class="item">
<div class="meta">
{{if .IsSucceed}}
- <span class="text green"><i class="octicon octicon-check"></i></span>
+ <span class="text green">{{svg "octicon-check" 16}}</span>
{{else}}
- <span class="text red"><i class="octicon octicon-alert"></i></span>
+ <span class="text red">{{svg "octicon-alert" 16}}</span>
{{end}}
<a class="ui blue sha label toggle button" data-target="#info-{{.ID}}">{{.UUID}}</a>
<div class="ui right">
diff --git a/templates/repo/settings/webhook/list.tmpl b/templates/repo/settings/webhook/list.tmpl
index d1784564dc..5813b74914 100644
--- a/templates/repo/settings/webhook/list.tmpl
+++ b/templates/repo/settings/webhook/list.tmpl
@@ -38,11 +38,11 @@
{{range .Webhooks}}
<div class="item">
{{if eq .LastStatus 1}}
- <span class="text green"><i class="octicon octicon-check"></i></span>
+ <span class="text green">{{svg "octicon-check" 16}}</span>
{{else if eq .LastStatus 2}}
- <span class="text red"><i class="octicon octicon-alert"></i></span>
+ <span class="text red">{{svg "octicon-alert" 16}}</span>
{{else}}
- <span class="text grey"><i class="octicon octicon-primitive-dot"></i></span>
+ <span class="text grey">{{svg "octicon-primitive-dot" 16}}</span>
{{end}}
<a class="dont-break-out" href="{{$.BaseLink}}/{{.ID}}">{{.URL}}</a>
<div class="ui right">
diff --git a/templates/repo/sub_menu.tmpl b/templates/repo/sub_menu.tmpl
index 96128fb2af..51d8d26c30 100644
--- a/templates/repo/sub_menu.tmpl
+++ b/templates/repo/sub_menu.tmpl
@@ -3,15 +3,15 @@
<div class="ui two horizontal center link list">
{{if and (.Permission.CanRead $.UnitTypeCode) (not .IsEmptyRepo)}}
<div class="item{{if .PageIsCommits}} active{{end}}">
- <a class="ui" href="{{.RepoLink}}/commits{{if .IsViewBranch}}/branch{{else if .IsViewTag}}/tag{{else if .IsViewCommit}}/commit{{end}}/{{EscapePound .BranchName}}"><i class="octicon octicon-history"></i> <b>{{.CommitsCount}}</b> {{.i18n.Tr (TrN .i18n.Lang .CommitsCount "repo.commit" "repo.commits") }}</a>
+ <a class="ui" href="{{.RepoLink}}/commits{{if .IsViewBranch}}/branch{{else if .IsViewTag}}/tag{{else if .IsViewCommit}}/commit{{end}}/{{EscapePound .BranchName}}">{{svg "octicon-history" 16}} <b>{{.CommitsCount}}</b> {{.i18n.Tr (TrN .i18n.Lang .CommitsCount "repo.commit" "repo.commits") }}</a>
</div>
{{end}}
{{if and (.Permission.CanRead $.UnitTypeCode) (not .IsEmptyRepo) }}
<div class="item{{if .PageIsBranches}} active{{end}}">
- <a class="ui" href="{{.RepoLink}}/branches/"><i class="octicon octicon-git-branch"></i> <b>{{.BranchesCount}}</b> {{.i18n.Tr (TrN .i18n.Lang .BranchesCount "repo.branch" "repo.branches") }}</a>
+ <a class="ui" href="{{.RepoLink}}/branches/">{{svg "octicon-git-branch" 16}} <b>{{.BranchesCount}}</b> {{.i18n.Tr (TrN .i18n.Lang .BranchesCount "repo.branch" "repo.branches") }}</a>
</div>
<div class="item">
- <a class="ui" href="#"><i class="octicon octicon-database"></i> <b>{{SizeFmt .Repository.Size}}</b></a>
+ <a class="ui" href="#">{{svg "octicon-database" 16}} <b>{{SizeFmt .Repository.Size}}</b></a>
</div>
{{end}}
</div>
diff --git a/templates/repo/user_cards.tmpl b/templates/repo/user_cards.tmpl
index cd7f15a710..9bf0560427 100644
--- a/templates/repo/user_cards.tmpl
+++ b/templates/repo/user_cards.tmpl
@@ -14,11 +14,11 @@
<div class="meta">
{{if .Website}}
- <span class="octicon octicon-link"></span> <a href="{{.Website}}" target="_blank" rel="noopener noreferrer">{{.Website}}</a>
+ {{svg "octicon-link" 16}} <a href="{{.Website}}" target="_blank" rel="noopener noreferrer">{{.Website}}</a>
{{else if .Location}}
- <span class="octicon octicon-location"></span> {{.Location}}
+ {{svg "octicon-location" 16}} {{.Location}}
{{else}}
- <span class="octicon octicon-clock"></span> {{$.i18n.Tr "user.join_on"}} {{.CreatedUnix.FormatShort}}
+ {{svg "octicon-clock" 16}} {{$.i18n.Tr "user.join_on"}} {{.CreatedUnix.FormatShort}}
{{end}}
</div>
</li>
diff --git a/templates/repo/view_file.tmpl b/templates/repo/view_file.tmpl
index f95076272e..f1cf198dee 100644
--- a/templates/repo/view_file.tmpl
+++ b/templates/repo/view_file.tmpl
@@ -40,14 +40,14 @@
</div>
{{if .Repository.CanEnableEditor}}
{{if .CanEditFile}}
- <a href="{{.RepoLink}}/_edit/{{EscapePound .BranchName}}/{{EscapePound .TreePath}}"><i class="octicon octicon-pencil btn-octicon poping up" data-content="{{.EditFileTooltip}}" data-position="bottom center" data-variation="tiny inverted"></i></a>
+ <a href="{{.RepoLink}}/_edit/{{EscapePound .BranchName}}/{{EscapePound .TreePath}}"><span class="btn-octicon poping up" data-content="{{.EditFileTooltip}}" data-position="bottom center" data-variation="tiny inverted">{{svg "octicon-pencil" 16}}</span></a>
{{else}}
- <i class="octicon octicon-pencil btn-octicon poping up disabled" data-content="{{.EditFileTooltip}}" data-position="bottom center" data-variation="tiny inverted"></i>
+ <span class="btn-octicon poping up disabled" data-content="{{.EditFileTooltip}}" data-position="bottom center" data-variation="tiny inverted">{{svg "octicon-pencil" 16}}</span>
{{end}}
{{if .CanDeleteFile}}
- <a href="{{.RepoLink}}/_delete/{{EscapePound .BranchName}}/{{EscapePound .TreePath}}"><i class="octicon octicon-trashcan btn-octicon btn-octicon-danger poping up" data-content="{{.DeleteFileTooltip}}" data-position="bottom center" data-variation="tiny inverted"></i></a>
+ <a href="{{.RepoLink}}/_delete/{{EscapePound .BranchName}}/{{EscapePound .TreePath}}"><span class="btn-octicon btn-octicon-danger poping up" data-content="{{.DeleteFileTooltip}}" data-position="bottom center" data-variation="tiny inverted">{{svg "octicon-trashcan" 16}}</span></a>
{{else}}
- <i class="octicon octicon-trashcan btn-octicon poping up disabled" data-content="{{.DeleteFileTooltip}}" data-position="bottom center" data-variation="tiny inverted"></i>
+ <span class="btn-octicon poping up disabled" data-content="{{.DeleteFileTooltip}}" data-position="bottom center" data-variation="tiny inverted">{{svg "octicon-trashcan" 16}}</span>
{{end}}
{{end}}
</div>
diff --git a/templates/repo/view_list.tmpl b/templates/repo/view_list.tmpl
index 3ba0eeec8d..3d4fc14cbb 100644
--- a/templates/repo/view_list.tmpl
+++ b/templates/repo/view_list.tmpl
@@ -42,7 +42,7 @@
<tbody>
{{if .HasParentPath}}
<tr class="has-parent">
- <td colspan="3"><i class="octicon octicon-mail-reply"></i><a href="{{EscapePound .BranchLink}}{{.ParentPath}}">..</a></td>
+ <td colspan="3">{{svg "octicon-mail-reply" 16}}<a href="{{EscapePound .BranchLink}}{{.ParentPath}}">..</a></td>
</tr>
{{end}}
{{range $item := .Files}}
@@ -52,7 +52,7 @@
{{if $entry.IsSubModule}}
<td>
<span class="truncate">
- <span class="octicon octicon-file-submodule"></span>
+ {{svg "octicon-file-submodule" 16}}
{{$refURL := $commit.RefURL AppUrl $.BranchLink}}
{{if $refURL}}
<a href="{{$refURL}}">{{$entry.Name}}</a> @ <a href="{{$refURL}}/commit/{{$commit.RefID}}">{{ShortSha $commit.RefID}}</a>
@@ -67,7 +67,7 @@
{{if $entry.IsDir}}
{{$subJumpablePathName := $entry.GetSubJumpablePathName}}
{{$subJumpablePath := SubJumpablePath $subJumpablePathName}}
- <span class="octicon octicon-file-directory"></span>
+ {{svg "octicon-file-directory" 16}}
<a href="{{EscapePound $.TreeLink}}/{{EscapePound $subJumpablePathName}}" title="{{$subJumpablePathName}}">
{{if eq (len $subJumpablePath) 2}}
<span class="jumpable-path">{{index $subJumpablePath 0}}</span>{{index $subJumpablePath 1}}
@@ -76,7 +76,7 @@
{{end}}
</a>
{{else}}
- <span class="octicon octicon-{{EntryIcon $entry}}"></span>
+ {{svg (printf "octicon-%s" (EntryIcon $entry)) 16}}
<a href="{{EscapePound $.TreeLink}}/{{EscapePound $entry.Name}}" title="{{$entry.Name}}">{{$entry.Name}}</a>
{{end}}
</span>
diff --git a/templates/repo/wiki/pages.tmpl b/templates/repo/wiki/pages.tmpl
index 61903423f3..01e8627944 100644
--- a/templates/repo/wiki/pages.tmpl
+++ b/templates/repo/wiki/pages.tmpl
@@ -15,7 +15,7 @@
{{range .Pages}}
<tr>
<td>
- <i class="octicon octicon-file-text"></i>
+ {{svg "octicon-file" 16}}
<a href="{{$.RepoLink}}/wiki/{{.SubURL}}">{{.Name}}</a>
</td>
{{$timeSince := TimeSinceUnix .UpdatedUnix $.Lang}}
diff --git a/templates/repo/wiki/revision.tmpl b/templates/repo/wiki/revision.tmpl
index 13d3a6227f..019bd1ea45 100644
--- a/templates/repo/wiki/revision.tmpl
+++ b/templates/repo/wiki/revision.tmpl
@@ -23,7 +23,7 @@
{{end}}
{{if or ((not $.DisableHTTP) (and (not $.DisableSSH) (or $.IsSigned $.ExposeAnonSSH)))}}
<button class="ui basic icon button poping up clipboard" id="clipboard-btn" data-original="{{.i18n.Tr "repo.copy_link"}}" data-success="{{.i18n.Tr "repo.copy_link_success"}}" data-error="{{.i18n.Tr "repo.copy_link_error"}}" data-content="{{.i18n.Tr "repo.copy_link"}}" data-variation="inverted tiny" data-clipboard-target="#repo-clone-url">
- <i class="octicon octicon-clippy"></i>
+ {{svg "octicon-clippy" 16}}
</button>
{{end}}
</div>
diff --git a/templates/repo/wiki/start.tmpl b/templates/repo/wiki/start.tmpl
index 0341e8067b..d8de0fcb77 100644
--- a/templates/repo/wiki/start.tmpl
+++ b/templates/repo/wiki/start.tmpl
@@ -3,7 +3,7 @@
{{template "repo/header" .}}
<div class="ui container">
<div class="ui center segment">
- <span class="mega-octicon octicon-book"></span>
+ {{svg "octicon-book" 32}}
<h2>{{.i18n.Tr "repo.wiki.welcome"}}</h2>
<p>{{.i18n.Tr "repo.wiki.welcome_desc"}}</p>
{{if and .CanWriteWiki (not .Repository.IsMirror)}}
diff --git a/templates/repo/wiki/view.tmpl b/templates/repo/wiki/view.tmpl
index f775ac9429..f160deedbd 100644
--- a/templates/repo/wiki/view.tmpl
+++ b/templates/repo/wiki/view.tmpl
@@ -47,7 +47,7 @@
{{end}}
{{if or ((not $.DisableHTTP) (and (not $.DisableSSH) (or $.IsSigned $.ExposeAnonSSH)))}}
<button class="ui basic icon button poping up clipboard" id="clipboard-btn" data-original="{{.i18n.Tr "repo.copy_link"}}" data-success="{{.i18n.Tr "repo.copy_link_success"}}" data-error="{{.i18n.Tr "repo.copy_link_error"}}" data-content="{{.i18n.Tr "repo.copy_link"}}" data-variation="inverted tiny" data-clipboard-target="#repo-clone-url">
- <i class="octicon octicon-clippy"></i>
+ {{svg "octicon-clippy" 16}}
</button>
{{end}}
</div>
diff --git a/templates/user/dashboard/dashboard.tmpl b/templates/user/dashboard/dashboard.tmpl
index 27a0a76bc4..7ebe28195a 100644
--- a/templates/user/dashboard/dashboard.tmpl
+++ b/templates/user/dashboard/dashboard.tmpl
@@ -85,11 +85,11 @@
<ul class="repo-owner-name-list">
<li v-for="repo in repos" :class="{'private': repo.private}" v-show="showRepo(repo, reposFilter)">
<a :href="suburl + '/' + repo.full_name">
- <i :class="repoClass(repo)"></i>
+ <svg :class="'svg ' + repoClass(repo)" width="16" height="16" aria-hidden="true"><use :xlink:href="staticPrefix + '/img/svg/icons.svg#' + repoClass(repo)" /></svg>
<strong class="text truncate item-name">${repo.full_name}</strong>
<i v-if="repo.archived" class="archive icon archived-icon"></i>
<span class="ui right text light grey">
- ${repo.stars_count} <i class="octicon octicon-star rear"></i>
+ ${repo.stars_count} <span class="rear">{{svg "octicon-star" 16}}</span>
</span>
</a>
</li>
@@ -113,10 +113,10 @@
<ul class="repo-owner-name-list">
<li v-for="org in organizations">
<a :href="suburl + '/' + org.name">
- <i class="octicon octicon-organization"></i>
+ {{svg "octicon-organization" 16}}
<strong class="text truncate item-name">${org.name}</strong>
<span class="ui right text light grey">
- ${org.num_repos} <i class="octicon octicon-repo rear"></i>
+ ${org.num_repos} <span class="rear">{{svg "octicon-repo" 16}}</span>
</span>
</a>
</li>
diff --git a/templates/user/dashboard/feeds.tmpl b/templates/user/dashboard/feeds.tmpl
index 7c4b1da0c7..fe92cad559 100644
--- a/templates/user/dashboard/feeds.tmpl
+++ b/templates/user/dashboard/feeds.tmpl
@@ -101,7 +101,7 @@
</div>
</div>
<div class="ui two wide right aligned column">
- <i class="text grey mega-octicon octicon-{{ActionIcon .GetOpType}}"></i>
+ <span class="text grey">{{svg (printf "octicon-%s" (ActionIcon .GetOpType)) 32}}</span>
</div>
</div>
<div class="ui divider"></div>
diff --git a/templates/user/dashboard/issues.tmpl b/templates/user/dashboard/issues.tmpl
index c8cc8b09df..dfb94560e5 100644
--- a/templates/user/dashboard/issues.tmpl
+++ b/templates/user/dashboard/issues.tmpl
@@ -54,11 +54,11 @@
<div class="twelve wide column content">
<div class="ui tiny basic status buttons">
<a class="ui {{if not .IsShowClosed}}green active{{end}} basic button" href="{{.Link}}?type={{$.ViewType}}&repos=[{{range $.RepoIDs}}{{.}}%2C{{end}}]&sort={{$.SortType}}&state=open">
- <i class="octicon octicon-issue-opened"></i>
+ {{svg "octicon-issue-opened" 16}}
{{.i18n.Tr "repo.issues.open_tab" .IssueStats.OpenCount}}
</a>
<a class="ui {{if .IsShowClosed}}red active{{end}} basic button" href="{{.Link}}?type={{$.ViewType}}&repos=[{{range $.RepoIDs}}{{.}}%2C{{end}}]&sort={{$.SortType}}&state=closed">
- <i class="octicon octicon-issue-closed"></i>
+ {{svg "octicon-issue-closed" 16}}
{{.i18n.Tr "repo.issues.close_tab" .IssueStats.ClosedCount}}
</a>
</div>
@@ -110,10 +110,10 @@
{{end}}
{{if .NumComments}}
- <span class="comment ui right"><i class="octicon octicon-comment"></i> {{.NumComments}}</span>
+ <span class="comment ui right">{{svg "octicon-comment" 16}} {{.NumComments}}</span>
{{end}}
{{if .TotalTrackedTime}}
- <span class="comment ui right"><i class="octicon octicon-clock"></i> {{.TotalTrackedTime | Sec2Time}}</span>
+ <span class="comment ui right">{{svg "octicon-clock" 16}} {{.TotalTrackedTime | Sec2Time}}</span>
{{end}}
<p class="desc">
@@ -126,12 +126,12 @@
{{end}}
{{if .Milestone}}
<a class="milestone" href="{{AppSubUrl}}/{{.Repo.Owner.Name}}/{{.Repo.Name}}{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{.Milestone.ID}}&assignee={{$.AssigneeID}}">
- <span class="octicon octicon-milestone"></span> {{.Milestone.Name}}
+ {{svg "octicon-milestone" 16}} {{.Milestone.Name}}
</a>
{{end}}
{{if .Ref}}
<a class="ref" href="{{AppSubUrl}}/{{.Repo.Owner.Name}}/{{.Repo.Name}}/src/branch/{{.Ref}}">
- <span class="octicon octicon-git-branch"></span> {{.Ref}}
+ {{svg "octicon-git-branch" 16}} {{.Ref}}
</a>
{{end}}
{{range .Assignees}}
@@ -143,17 +143,17 @@
{{if gt $tasks 0}}
{{$tasksDone := .GetTasksDone}}
<span class="checklist">
- <span class="octicon octicon-checklist"></span> {{$tasksDone}} / {{$tasks}} <span class="progress-bar"><span class="progress" style="width:calc(100% * {{$tasksDone}} / {{$tasks}});"></span></span>
+ {{svg "octicon-checklist" 16}} {{$tasksDone}} / {{$tasks}} <span class="progress-bar"><span class="progress" style="width:calc(100% * {{$tasksDone}} / {{$tasks}});"></span></span>
</span>
{{end}}
{{if ne .DeadlineUnix 0}}
<span class="due-date poping up" data-content="{{$.i18n.Tr "repo.issues.due_date"}}" data-variation="tiny inverted" data-position="right center">
- <span class="octicon octicon-calendar"></span><span{{if .IsOverdue}} class="overdue"{{end}}>{{.DeadlineUnix.FormatShort}}</span>
+ {{svg "octicon-calendar" 16}}<span{{if .IsOverdue}} class="overdue"{{end}}>{{.DeadlineUnix.FormatShort}}</span>
</span>
{{end}}
{{if .IsPull}}
{{if and (not .PullRequest.HasMerged) ((len .PullRequest.ConflictedFiles) gt 0)}}
- <span class="conflicting"><i class="octicon octicon-mirror"></i> {{$.i18n.Tr (TrN $.i18n.Lang (len .PullRequest.ConflictedFiles) "repo.pulls.num_conflicting_files_1" "repo.pulls.num_conflicting_files_n") (len .PullRequest.ConflictedFiles)}}</span>
+ <span class="conflicting">{{svg "octicon-mirror" 16}} {{$.i18n.Tr (TrN $.i18n.Lang (len .PullRequest.ConflictedFiles) "repo.pulls.num_conflicting_files_1" "repo.pulls.num_conflicting_files_n") (len .PullRequest.ConflictedFiles)}}</span>
{{end}}
{{end}}
</p>
diff --git a/templates/user/dashboard/milestones.tmpl b/templates/user/dashboard/milestones.tmpl
index 98b99c6430..2a4226e923 100644
--- a/templates/user/dashboard/milestones.tmpl
+++ b/templates/user/dashboard/milestones.tmpl
@@ -36,11 +36,11 @@
<div class="twelve wide column content">
<div class="ui tiny basic status buttons">
<a class="ui {{if not .IsShowClosed}}green active{{end}} basic button" href="{{.Link}}?repos=[{{range $.RepoIDs}}{{.}}%2C{{end}}]&sort={{$.SortType}}&state=open">
- <i class="octicon octicon-issue-opened"></i>
+ {{svg "octicon-issue-opened" 16}}
{{.i18n.Tr "repo.milestones.open_tab" .MilestoneStats.OpenCount}}
</a>
<a class="ui {{if .IsShowClosed}}red active{{end}} basic button" href="{{.Link}}?repos=[{{range $.RepoIDs}}{{.}}%2C{{end}}]&sort={{$.SortType}}&state=closed">
- <i class="octicon octicon-issue-closed"></i>
+ {{svg "octicon-issue-closed" 16}}
{{.i18n.Tr "repo.milestones.close_tab" .MilestoneStats.ClosedCount}}
</a>
</div>
@@ -66,7 +66,7 @@
{{range .Milestones}}
<li class="item">
<div class="ui label">{{.Repo.FullName}}</div>
- <i class="octicon octicon-milestone"></i> <a href="{{.Repo.Link }}/milestone/{{.ID}}">{{.Name}}</a>
+ {{svg "octicon-milestone" 16}} <a href="{{.Repo.Link }}/milestone/{{.ID}}">{{.Name}}</a>
<div class="ui right green progress" data-percent="{{.Completeness}}">
<div class="bar" {{if not .Completeness}}style="background-color: transparent"{{end}}>
<div class="progress"></div>
@@ -75,9 +75,9 @@
<div class="meta">
{{ $closedDate:= TimeSinceUnix .ClosedDateUnix $.Lang }}
{{if .IsClosed}}
- <span class="octicon octicon-clock"></span> {{$.i18n.Tr "repo.milestones.closed" $closedDate|Str2html}}
+ {{svg "octicon-clock" 16}} {{$.i18n.Tr "repo.milestones.closed" $closedDate|Str2html}}
{{else}}
- <span class="octicon octicon-calendar"></span>
+ {{svg "octicon-calendar" 16}}
{{if .DeadlineString}}
<span {{if .IsOverdue}}class="overdue"{{end}}>{{.DeadlineString}}</span>
{{else}}
@@ -85,20 +85,20 @@
{{end}}
{{end}}
<span class="issue-stats">
- <i class="octicon octicon-issue-opened"></i> {{$.i18n.Tr "repo.milestones.open_tab" .NumOpenIssues}}
- <i class="octicon octicon-issue-closed"></i> {{$.i18n.Tr "repo.milestones.close_tab" .NumClosedIssues}}
- {{if .TotalTrackedTime}}<i class="octicon octicon-clock"></i> {{.TotalTrackedTime|Sec2Time}}{{end}}
+ {{svg "octicon-issue-opened" 16}} {{$.i18n.Tr "repo.milestones.open_tab" .NumOpenIssues}}
+ {{svg "octicon-issue-closed" 16}} {{$.i18n.Tr "repo.milestones.close_tab" .NumClosedIssues}}
+ {{if .TotalTrackedTime}}{{svg "octicon-clock" 16}} {{.TotalTrackedTime|Sec2Time}}{{end}}
</span>
</div>
{{if and (or $.CanWriteIssues $.CanWritePulls) (not $.Repository.IsArchived)}}
<div class="ui right operate">
- <a href="{{$.Link}}/{{.ID}}/edit" data-id={{.ID}} data-title={{.Name}}><i class="octicon octicon-pencil"></i> {{$.i18n.Tr "repo.issues.label_edit"}}</a>
+ <a href="{{$.Link}}/{{.ID}}/edit" data-id={{.ID}} data-title={{.Name}}>{{svg "octicon-pencil" 16}} {{$.i18n.Tr "repo.issues.label_edit"}}</a>
{{if .IsClosed}}
- <a href="{{$.Link}}/{{.ID}}/open" data-id={{.ID}} data-title={{.Name}}><i class="octicon octicon-check"></i> {{$.i18n.Tr "repo.milestones.open"}}</a>
+ <a href="{{$.Link}}/{{.ID}}/open" data-id={{.ID}} data-title={{.Name}}>{{svg "octicon-check" 16}} {{$.i18n.Tr "repo.milestones.open"}}</a>
{{else}}
- <a href="{{$.Link}}/{{.ID}}/close" data-id={{.ID}} data-title={{.Name}}><i class="octicon octicon-x"></i> {{$.i18n.Tr "repo.milestones.close"}}</a>
+ <a href="{{$.Link}}/{{.ID}}/close" data-id={{.ID}} data-title={{.Name}}>{{svg "octicon-x" 16}} {{$.i18n.Tr "repo.milestones.close"}}</a>
{{end}}
- <a class="delete-button" href="#" data-url="{{$.RepoLink}}/milestones/delete" data-id="{{.ID}}"><i class="octicon octicon-trashcan"></i> {{$.i18n.Tr "repo.issues.label_delete"}}</a>
+ <a class="delete-button" href="#" data-url="{{$.RepoLink}}/milestones/delete" data-id="{{.ID}}">{{svg "octicon-trashcan" 16}} {{$.i18n.Tr "repo.issues.label_delete"}}</a>
</div>
{{end}}
{{if .Content}}
diff --git a/templates/user/dashboard/navbar.tmpl b/templates/user/dashboard/navbar.tmpl
index 1ebd20c8b2..7afb975bbc 100644
--- a/templates/user/dashboard/navbar.tmpl
+++ b/templates/user/dashboard/navbar.tmpl
@@ -25,7 +25,7 @@
</div>
{{if .SignedUser.CanCreateOrganization}}
<a class="item" href="{{AppSubUrl}}/org/create">
- <i class="octicon octicon-plus"></i>&nbsp;&nbsp;&nbsp;{{.i18n.Tr "new_org"}}
+ {{svg "octicon-plus" 16}}&nbsp;&nbsp;&nbsp;{{.i18n.Tr "new_org"}}
</a>
{{end}}
</div>
@@ -35,17 +35,17 @@
{{if .ContextUser.IsOrganization}}
<div class="right stackable menu">
<a class="{{if .PageIsNews}}active{{end}} item" style="margin-left: auto" href="{{AppSubUrl}}/org/{{.ContextUser.Name}}/dashboard">
- <i class="octicon octicon-rss"></i>&nbsp;{{.i18n.Tr "activities"}}
+ {{svg "octicon-rss" 16}}&nbsp;{{.i18n.Tr "activities"}}
</a>
<a class="{{if .PageIsIssues}}active{{end}} item" href="{{AppSubUrl}}/org/{{.ContextUser.Name}}/issues">
- <i class="octicon octicon-issue-opened"></i>&nbsp;{{.i18n.Tr "issues"}}
+ {{svg "octicon-issue-opened" 16}}&nbsp;{{.i18n.Tr "issues"}}
</a>
<a class="{{if .PageIsPulls}}active{{end}} item" href="{{AppSubUrl}}/org/{{.ContextUser.Name}}/pulls">
- <i class="octicon octicon-git-pull-request"></i>&nbsp;{{.i18n.Tr "pull_requests"}}
+ {{svg "octicon-git-pull-request" 16}}&nbsp;{{.i18n.Tr "pull_requests"}}
</a>
{{if .ShowMilestonesDashboardPage}}
<a class="{{if .PageIsMilestonesDashboard}}active{{end}} item" href="{{AppSubUrl}}/org/{{.ContextUser.Name}}/milestones">
- <i class="octicon octicon-milestone"></i>&nbsp;{{.i18n.Tr "milestones"}}
+ {{svg "octicon-milestone" 16}}&nbsp;{{.i18n.Tr "milestones"}}
</a>
{{end}}
<div class="item">
diff --git a/templates/user/notification/notification.tmpl b/templates/user/notification/notification.tmpl
index beeac0181e..c4f744a291 100644
--- a/templates/user/notification/notification.tmpl
+++ b/templates/user/notification/notification.tmpl
@@ -18,7 +18,7 @@
<form action="{{AppSubUrl}}/notifications/purge" method="POST" style="margin-left: auto;">
{{$.CsrfTokenHtml}}
<button class="ui mini button primary" title='{{$.i18n.Tr "notification.mark_all_as_read"}}'>
- <i class="octicon octicon-checklist"></i>
+ {{svg "octicon-checklist" 16}}
</button>
</form>
{{end}}
@@ -41,22 +41,22 @@
<tr data-href="{{$notification.HTMLURL}}">
<td class="collapsing">
{{if eq $notification.Status 3}}
- <i class="blue octicon octicon-pin"></i>
+ <span class="blue">{{svg "octicon-pin" 16}}</span>
{{else if $issue.IsPull}}
{{if $issue.IsClosed}}
{{if $issue.GetPullRequest.HasMerged}}
- <i class="purple octicon octicon-git-merge"></i>
+ <span class="purple">{{svg "octicon-git-merge" 16}}</span>
{{else}}
- <i class="red octicon octicon-git-pull-request"></i>
+ <span class="red">{{svg "octicon-git-pull-request" 16}}</span>
{{end}}
{{else}}
- <i class="green octicon octicon-git-pull-request"></i>
+ <span class="green">{{svg "octicon-git-pull-request" 16}}</span>
{{end}}
{{else}}
{{if $issue.IsClosed}}
- <i class="red octicon octicon-issue-closed"></i>
+ <span class="red">{{svg "octicon-issue-closed" 16}}</span>
{{else}}
- <i class="green octicon octicon-issue-opened"></i>
+ <span class="green">{{svg "octicon-issue-opened" 16}}</span>
{{end}}
{{end}}
</td>
@@ -77,7 +77,7 @@
<input type="hidden" name="notification_id" value="{{$notification.ID}}" />
<input type="hidden" name="status" value="pinned" />
<button class="ui mini button" title='{{$.i18n.Tr "notification.pin"}}'>
- <i class="octicon octicon-pin"></i>
+ {{svg "octicon-pin" 16}}
</button>
</form>
{{end}}
@@ -90,7 +90,7 @@
<input type="hidden" name="status" value="read" />
<input type="hidden" name="page" value="{{$.Page.Paginater.Current}}" />
<button class="ui mini button" title='{{$.i18n.Tr "notification.mark_as_read"}}'>
- <i class="octicon octicon-check"></i>
+ {{svg "octicon-check" 16}}
</button>
</form>
{{else if eq $notification.Status 2}}
@@ -100,7 +100,7 @@
<input type="hidden" name="status" value="unread" />
<input type="hidden" name="page" value="{{$.Page.Paginater.Current}}" />
<button class="ui mini button" title='{{$.i18n.Tr "notification.mark_as_unread"}}'>
- <i class="octicon octicon-bell"></i>
+ {{svg "octicon-bell" 16}}
</button>
</form>
{{end}}
diff --git a/templates/user/profile.tmpl b/templates/user/profile.tmpl
index 101a2e7d45..945cc90f0d 100644
--- a/templates/user/profile.tmpl
+++ b/templates/user/profile.tmpl
@@ -20,23 +20,23 @@
<div class="extra content wrap">
<ul class="text black">
{{if .Owner.Location}}
- <li><i class="octicon octicon-location"></i> {{.Owner.Location}}</li>
+ <li>{{svg "octicon-location" 16}} {{.Owner.Location}}</li>
{{end}}
{{if .ShowUserEmail }}
<li>
- <i class="octicon octicon-mail"></i>
+ {{svg "octicon-mail" 16}}
<a href="mailto:{{.Owner.Email}}" rel="nofollow">{{.Owner.Email}}</a>
</li>
{{end}}
{{if .Owner.Website}}
<li>
- <i class="octicon octicon-link"></i>
+ {{svg "octicon-link" 16}}
<a target="_blank" rel="noopener noreferrer me" href="{{.Owner.Website}}">{{.Owner.Website}}</a>
</li>
{{end}}
{{if .Owner.Description}}
<li>
- <i class="octicon octicon-info"></i>
+ {{svg "octicon-info" 16}}
<span>{{.Owner.Description}}</span>
</li>
{{end}}
@@ -48,7 +48,7 @@
</li>
{{end}}
{{end}}
- <li><i class="octicon octicon-clock"></i> {{.i18n.Tr "user.join_on"}} {{.Owner.CreatedUnix.FormatShort}}</li>
+ <li>{{svg "octicon-clock" 16}} {{.i18n.Tr "user.join_on"}} {{.Owner.CreatedUnix.FormatShort}}</li>
{{if and .Orgs .HasOrgsVisible}}
<li>
<ul class="user-orgs">
@@ -65,9 +65,9 @@
{{if and .IsSigned (ne .SignedUserName .Owner.Name)}}
<li class="follow">
{{if .SignedUser.IsFollowing .Owner.ID}}
- <a class="ui basic red button" href="{{.Link}}/action/unfollow?redirect_to={{$.Link}}"><i class="octicon octicon-person"></i> {{.i18n.Tr "user.unfollow"}}</a>
+ <a class="ui basic red button" href="{{.Link}}/action/unfollow?redirect_to={{$.Link}}">{{svg "octicon-person" 16}} {{.i18n.Tr "user.unfollow"}}</a>
{{else}}
- <a class="ui basic green button" href="{{.Link}}/action/follow?redirect_to={{$.Link}}"><i class="octicon octicon-person"></i> {{.i18n.Tr "user.follow"}}</a>
+ <a class="ui basic green button" href="{{.Link}}/action/follow?redirect_to={{$.Link}}">{{svg "octicon-person" 16}} {{.i18n.Tr "user.follow"}}</a>
{{end}}
</li>
{{end}}
@@ -78,21 +78,21 @@
<div class="ui eleven wide column">
<div class="ui secondary stackable pointing menu">
<a class='{{if and (ne .TabName "activity") (ne .TabName "following") (ne .TabName "followers") (ne .TabName "stars")}}active{{end}} item' href="{{.Owner.HomeLink}}">
- <i class="octicon octicon-repo"></i> {{.i18n.Tr "user.repositories"}}
+ {{svg "octicon-repo" 16}} {{.i18n.Tr "user.repositories"}}
</a>
<a class='{{if eq .TabName "activity"}}active{{end}} item' href="{{.Owner.HomeLink}}?tab=activity">
- <i class="octicon octicon-rss"></i> {{.i18n.Tr "user.activity"}}
+ {{svg "octicon-rss" 16}} {{.i18n.Tr "user.activity"}}
</a>
<a class='{{if eq .TabName "stars"}}active{{end}} item' href="{{.Owner.HomeLink}}?tab=stars">
- <i class="octicon octicon-star"></i> {{.i18n.Tr "user.starred"}}
+ {{svg "octicon-star" 16}} {{.i18n.Tr "user.starred"}}
<div class="ui label">{{.Owner.NumStars}}</div>
</a>
<a class='{{if eq .TabName "following"}}active{{end}} item' href="{{.Owner.HomeLink}}?tab=following">
- <i class="octicon octicon-person"></i> {{.i18n.Tr "user.following"}}
+ {{svg "octicon-person" 16}} {{.i18n.Tr "user.following"}}
<div class="ui label">{{.Owner.NumFollowing}}</div>
</a>
<a class='{{if eq .TabName "followers"}}active{{end}} item' href="{{.Owner.HomeLink}}?tab=followers">
- <i class="octicon octicon-person"></i> {{.i18n.Tr "user.followers"}}
+ {{svg "octicon-person" 16}} {{.i18n.Tr "user.followers"}}
<div class="ui label">{{.Owner.NumFollowers}}</div>
</a>
</div>
diff --git a/templates/user/settings/account.tmpl b/templates/user/settings/account.tmpl
index dcb5770acc..59608a8f16 100644
--- a/templates/user/settings/account.tmpl
+++ b/templates/user/settings/account.tmpl
@@ -151,7 +151,7 @@
</h4>
<div class="ui attached warning segment">
<div class="ui red message">
- <p class="text left"><i class="octicon octicon-alert"></i> {{.i18n.Tr "settings.delete_prompt" | Str2html}}</p>
+ <p class="text left">{{svg "octicon-alert" 16}} {{.i18n.Tr "settings.delete_prompt" | Str2html}}</p>
</div>
<form class="ui form ignore-dirty" id="delete-form" action="{{AppSubUrl}}/user/settings/account/delete" method="post">
{{.CsrfTokenHtml}}
diff --git a/templates/user/settings/applications.tmpl b/templates/user/settings/applications.tmpl
index 08b2ca7195..4131350cb0 100644
--- a/templates/user/settings/applications.tmpl
+++ b/templates/user/settings/applications.tmpl
@@ -22,7 +22,7 @@
<div class="content">
<strong>{{.Name}}</strong>
<div class="activity meta">
- <i>{{$.i18n.Tr "settings.add_on"}} <span>{{.CreatedUnix.FormatShort}}</span> — <i class="octicon octicon-info"></i> {{if .HasUsed}}{{$.i18n.Tr "settings.last_used"}} <span {{if .HasRecentActivity}}class="green"{{end}}>{{.UpdatedUnix.FormatShort}}</span>{{else}}{{$.i18n.Tr "settings.no_activity"}}{{end}}</i>
+ <i>{{$.i18n.Tr "settings.add_on"}} <span>{{.CreatedUnix.FormatShort}}</span> — {{svg "octicon-info" 16}} {{if .HasUsed}}{{$.i18n.Tr "settings.last_used"}} <span {{if .HasRecentActivity}}class="green"{{end}}>{{.UpdatedUnix.FormatShort}}</span>{{else}}{{$.i18n.Tr "settings.no_activity"}}{{end}}</i>
</div>
</div>
</div>
diff --git a/templates/user/settings/keys_gpg.tmpl b/templates/user/settings/keys_gpg.tmpl
index 0a4afbfb63..3682d3237b 100644
--- a/templates/user/settings/keys_gpg.tmpl
+++ b/templates/user/settings/keys_gpg.tmpl
@@ -16,7 +16,7 @@
{{$.i18n.Tr "settings.delete_key"}}
</button>
</div>
- <i class="mega-octicon octicon-key {{if or .ExpiredUnix.IsZero ($.PageStartTime.Before .ExpiredUnix.AsTime)}}green{{end}}"></i>
+ <span class="{{if or .ExpiredUnix.IsZero ($.PageStartTime.Before .ExpiredUnix.AsTime)}}green{{end}}">{{svg "octicon-key" 32}}</span>
<div class="content">
{{range .Emails}}<strong>{{.Email}} </strong>{{end}}
<div class="print meta">
diff --git a/templates/user/settings/keys_ssh.tmpl b/templates/user/settings/keys_ssh.tmpl
index e954472ff9..f5c18d760e 100644
--- a/templates/user/settings/keys_ssh.tmpl
+++ b/templates/user/settings/keys_ssh.tmpl
@@ -20,14 +20,14 @@
{{$.i18n.Tr "settings.delete_key"}}
</button>
</div>
- <i class="mega-octicon octicon-key {{if .HasRecentActivity}}green{{end}}" {{if .HasRecentActivity}}data-content="{{$.i18n.Tr "settings.key_state_desc"}}" data-variation="inverted tiny"{{end}}></i>
+ <span class="{{if .HasRecentActivity}}green{{end}}" {{if .HasRecentActivity}}data-content="{{$.i18n.Tr "settings.key_state_desc"}}" data-variation="inverted tiny"{{end}}>{{svg "octicon-key" 32}}</span>
<div class="content">
<strong>{{.Name}}</strong>
<div class="print meta">
{{.Fingerprint}}
</div>
<div class="activity meta">
- <i>{{$.i18n.Tr "settings.add_on"}} <span>{{.CreatedUnix.FormatShort}}</span> — <i class="octicon octicon-info"></i> {{if .HasUsed}}{{$.i18n.Tr "settings.last_used"}} <span {{if .HasRecentActivity}}class="green"{{end}}>{{.UpdatedUnix.FormatShort}}</span>{{else}}{{$.i18n.Tr "settings.no_activity"}}{{end}}</i>
+ <i>{{$.i18n.Tr "settings.add_on"}} <span>{{.CreatedUnix.FormatShort}}</span> — {{svg "octicon-info" 16}} {{if .HasUsed}}{{$.i18n.Tr "settings.last_used"}} <span {{if .HasRecentActivity}}class="green"{{end}}>{{.UpdatedUnix.FormatShort}}</span>{{else}}{{$.i18n.Tr "settings.no_activity"}}{{end}}</i>
</div>
</div>
</div>
diff --git a/templates/user/settings/repos.tmpl b/templates/user/settings/repos.tmpl
index efb2c41c5b..d28f067fdd 100644
--- a/templates/user/settings/repos.tmpl
+++ b/templates/user/settings/repos.tmpl
@@ -1,53 +1,53 @@
-{{template "base/head" .}}
-<div class="user settings repos">
- {{template "user/settings/navbar" .}}
- <div class="ui container">
- {{template "base/alert" .}}
- <h4 class="ui top attached header">
- {{.i18n.Tr "settings.repos"}}
- </h4>
- <div class="ui attached segment">
- {{if .Repos}}
- <div class="ui middle aligned divided list">
- {{range .Repos}}
- <div class="item">
- <div class="content">
- {{if .IsPrivate}}
- <span class="text gold iconFloat"><i class="octicon octicon-lock"></i></span>
- {{else if .IsFork}}
- <span class="iconFloat"><i class="octicon octicon-repo-forked"></i></span>
- {{else if .IsMirror}}
- <span class="iconFloat"><i class="octicon octicon-repo-clone"></i></span>
- {{else}}
- <span class="iconFloat"><i class="octicon octicon-repo"></i></span>
- {{end}}
- <a class="name" href="{{AppSubUrl}}/{{$.Owner.Name}}/{{.Name}}">{{$.Owner.Name}}/{{.Name}}</a>
- <span>{{SizeFmt .Size}}</span>
- {{if .IsFork}}
- {{$.i18n.Tr "repo.forked_from"}}
- <span><a href="{{AppSubUrl}}/{{.BaseRepo.Owner.Name}}/{{.BaseRepo.Name}}">{{.BaseRepo.Owner.Name}}/{{.BaseRepo.Name}}</a></span>
- {{end}}
- </div>
- </div>
- {{end}}
- </div>
- {{else}}
- <div class="item">
- {{.i18n.Tr "settings.repos_none"}}
- </div>
- {{end}}
- </div>
- </div>
-</div>
-
-<div class="ui small basic delete modal">
- <div class="ui icon header">
- <i class="trash icon"></i>
- {{.i18n.Tr "settings.remove_account_link"}}
- </div>
- <div class="content">
- <p>{{.i18n.Tr "settings.remove_account_link_desc"}}</p>
- </div>
- {{template "base/delete_modal_actions" .}}
-</div>
-{{template "base/footer" .}}
+{{template "base/head" .}}
+<div class="user settings repos">
+ {{template "user/settings/navbar" .}}
+ <div class="ui container">
+ {{template "base/alert" .}}
+ <h4 class="ui top attached header">
+ {{.i18n.Tr "settings.repos"}}
+ </h4>
+ <div class="ui attached segment">
+ {{if .Repos}}
+ <div class="ui middle aligned divided list">
+ {{range .Repos}}
+ <div class="item">
+ <div class="content">
+ {{if .IsPrivate}}
+ <span class="text gold iconFloat">{{svg "octicon-lock" 16}}</span>
+ {{else if .IsFork}}
+ <span class="iconFloat">{{svg "octicon-repo-forked" 16}}</span>
+ {{else if .IsMirror}}
+ <span class="iconFloat">{{svg "octicon-repo-clone" 16}}</span>
+ {{else}}
+ <span class="iconFloat">{{svg "octicon-repo" 16}}</span>
+ {{end}}
+ <a class="name" href="{{AppSubUrl}}/{{$.Owner.Name}}/{{.Name}}">{{$.Owner.Name}}/{{.Name}}</a>
+ <span>{{SizeFmt .Size}}</span>
+ {{if .IsFork}}
+ {{$.i18n.Tr "repo.forked_from"}}
+ <span><a href="{{AppSubUrl}}/{{.BaseRepo.Owner.Name}}/{{.BaseRepo.Name}}">{{.BaseRepo.Owner.Name}}/{{.BaseRepo.Name}}</a></span>
+ {{end}}
+ </div>
+ </div>
+ {{end}}
+ </div>
+ {{else}}
+ <div class="item">
+ {{.i18n.Tr "settings.repos_none"}}
+ </div>
+ {{end}}
+ </div>
+ </div>
+</div>
+
+<div class="ui small basic delete modal">
+ <div class="ui icon header">
+ <i class="trash icon"></i>
+ {{.i18n.Tr "settings.remove_account_link"}}
+ </div>
+ <div class="content">
+ <p>{{.i18n.Tr "settings.remove_account_link_desc"}}</p>
+ </div>
+ {{template "base/delete_modal_actions" .}}
+</div>
+{{template "base/footer" .}}
diff --git a/vendor/golang.org/x/net/html/const.go b/vendor/golang.org/x/net/html/const.go
index a3a918f0b3..73804d3472 100644
--- a/vendor/golang.org/x/net/html/const.go
+++ b/vendor/golang.org/x/net/html/const.go
@@ -52,7 +52,6 @@ var isSpecialElementMap = map[string]bool{
"iframe": true,
"img": true,
"input": true,
- "isindex": true, // The 'isindex' element has been removed, but keep it for backwards compatibility.
"keygen": true,
"li": true,
"link": true,
diff --git a/vendor/golang.org/x/net/html/foreign.go b/vendor/golang.org/x/net/html/foreign.go
index 01477a9639..74774c458a 100644
--- a/vendor/golang.org/x/net/html/foreign.go
+++ b/vendor/golang.org/x/net/html/foreign.go
@@ -172,7 +172,6 @@ var svgAttributeAdjustments = map[string]string{
"diffuseconstant": "diffuseConstant",
"edgemode": "edgeMode",
"externalresourcesrequired": "externalResourcesRequired",
- "filterres": "filterRes",
"filterunits": "filterUnits",
"glyphref": "glyphRef",
"gradienttransform": "gradientTransform",
diff --git a/vendor/golang.org/x/net/html/parse.go b/vendor/golang.org/x/net/html/parse.go
index 992cff2a33..2cd12fc816 100644
--- a/vendor/golang.org/x/net/html/parse.go
+++ b/vendor/golang.org/x/net/html/parse.go
@@ -184,6 +184,17 @@ func (p *parser) clearStackToContext(s scope) {
}
}
+// parseGenericRawTextElements implements the generic raw text element parsing
+// algorithm defined in 12.2.6.2.
+// https://html.spec.whatwg.org/multipage/parsing.html#parsing-elements-that-contain-only-text
+// TODO: Since both RAWTEXT and RCDATA states are treated as tokenizer's part
+// officially, need to make tokenizer consider both states.
+func (p *parser) parseGenericRawTextElement() {
+ p.addElement()
+ p.originalIM = p.im
+ p.im = textIM
+}
+
// generateImpliedEndTags pops nodes off the stack of open elements as long as
// the top node has a tag name of dd, dt, li, optgroup, option, p, rb, rp, rt or rtc.
// If exceptions are specified, nodes with that name will not be popped off.
@@ -192,16 +203,17 @@ func (p *parser) generateImpliedEndTags(exceptions ...string) {
loop:
for i = len(p.oe) - 1; i >= 0; i-- {
n := p.oe[i]
- if n.Type == ElementNode {
- switch n.DataAtom {
- case a.Dd, a.Dt, a.Li, a.Optgroup, a.Option, a.P, a.Rb, a.Rp, a.Rt, a.Rtc:
- for _, except := range exceptions {
- if n.Data == except {
- break loop
- }
+ if n.Type != ElementNode {
+ break
+ }
+ switch n.DataAtom {
+ case a.Dd, a.Dt, a.Li, a.Optgroup, a.Option, a.P, a.Rb, a.Rp, a.Rt, a.Rtc:
+ for _, except := range exceptions {
+ if n.Data == except {
+ break loop
}
- continue
}
+ continue
}
break
}
@@ -369,8 +381,7 @@ findIdenticalElements:
// Section 12.2.4.3.
func (p *parser) clearActiveFormattingElements() {
for {
- n := p.afe.pop()
- if len(p.afe) == 0 || n.Type == scopeMarkerNode {
+ if n := p.afe.pop(); len(p.afe) == 0 || n.Type == scopeMarkerNode {
return
}
}
@@ -625,25 +636,29 @@ func inHeadIM(p *parser) bool {
switch p.tok.DataAtom {
case a.Html:
return inBodyIM(p)
- case a.Base, a.Basefont, a.Bgsound, a.Command, a.Link, a.Meta:
+ case a.Base, a.Basefont, a.Bgsound, a.Link, a.Meta:
p.addElement()
p.oe.pop()
p.acknowledgeSelfClosingTag()
return true
case a.Noscript:
- p.addElement()
if p.scripting {
- p.setOriginalIM()
- p.im = textIM
- } else {
- p.im = inHeadNoscriptIM
+ p.parseGenericRawTextElement()
+ return true
}
+ p.addElement()
+ p.im = inHeadNoscriptIM
+ // Don't let the tokenizer go into raw text mode when scripting is disabled.
+ p.tokenizer.NextIsNotRawText()
return true
- case a.Script, a.Title, a.Noframes, a.Style:
+ case a.Script, a.Title:
p.addElement()
p.setOriginalIM()
p.im = textIM
return true
+ case a.Noframes, a.Style:
+ p.parseGenericRawTextElement()
+ return true
case a.Head:
// Ignore the token.
return true
@@ -855,7 +870,7 @@ func inBodyIM(p *parser) bool {
return true
}
copyAttributes(p.oe[0], p.tok)
- case a.Base, a.Basefont, a.Bgsound, a.Command, a.Link, a.Meta, a.Noframes, a.Script, a.Style, a.Template, a.Title:
+ case a.Base, a.Basefont, a.Bgsound, a.Link, a.Meta, a.Noframes, a.Script, a.Style, a.Template, a.Title:
return inHeadIM(p)
case a.Body:
if p.oe.contains(a.Template) {
@@ -881,7 +896,7 @@ func inBodyIM(p *parser) bool {
p.addElement()
p.im = inFramesetIM
return true
- case a.Address, a.Article, a.Aside, a.Blockquote, a.Center, a.Details, a.Dir, a.Div, a.Dl, a.Fieldset, a.Figcaption, a.Figure, a.Footer, a.Header, a.Hgroup, a.Menu, a.Nav, a.Ol, a.P, a.Section, a.Summary, a.Ul:
+ case a.Address, a.Article, a.Aside, a.Blockquote, a.Center, a.Details, a.Dialog, a.Dir, a.Div, a.Dl, a.Fieldset, a.Figcaption, a.Figure, a.Footer, a.Header, a.Hgroup, a.Main, a.Menu, a.Nav, a.Ol, a.P, a.Section, a.Summary, a.Ul:
p.popUntil(buttonScope, a.P)
p.addElement()
case a.H1, a.H2, a.H3, a.H4, a.H5, a.H6:
@@ -1014,53 +1029,6 @@ func inBodyIM(p *parser) bool {
p.tok.DataAtom = a.Img
p.tok.Data = a.Img.String()
return false
- case a.Isindex:
- if p.form != nil {
- // Ignore the token.
- return true
- }
- action := ""
- prompt := "This is a searchable index. Enter search keywords: "
- attr := []Attribute{{Key: "name", Val: "isindex"}}
- for _, t := range p.tok.Attr {
- switch t.Key {
- case "action":
- action = t.Val
- case "name":
- // Ignore the attribute.
- case "prompt":
- prompt = t.Val
- default:
- attr = append(attr, t)
- }
- }
- p.acknowledgeSelfClosingTag()
- p.popUntil(buttonScope, a.P)
- p.parseImpliedToken(StartTagToken, a.Form, a.Form.String())
- if p.form == nil {
- // NOTE: The 'isindex' element has been removed,
- // and the 'template' element has not been designed to be
- // collaborative with the index element.
- //
- // Ignore the token.
- return true
- }
- if action != "" {
- p.form.Attr = []Attribute{{Key: "action", Val: action}}
- }
- p.parseImpliedToken(StartTagToken, a.Hr, a.Hr.String())
- p.parseImpliedToken(StartTagToken, a.Label, a.Label.String())
- p.addText(prompt)
- p.addChild(&Node{
- Type: ElementNode,
- DataAtom: a.Input,
- Data: a.Input.String(),
- Attr: attr,
- })
- p.oe.pop()
- p.parseImpliedToken(EndTagToken, a.Label, a.Label.String())
- p.parseImpliedToken(StartTagToken, a.Hr, a.Hr.String())
- p.parseImpliedToken(EndTagToken, a.Form, a.Form.String())
case a.Textarea:
p.addElement()
p.setOriginalIM()
@@ -1070,18 +1038,21 @@ func inBodyIM(p *parser) bool {
p.popUntil(buttonScope, a.P)
p.reconstructActiveFormattingElements()
p.framesetOK = false
- p.addElement()
- p.setOriginalIM()
- p.im = textIM
+ p.parseGenericRawTextElement()
case a.Iframe:
p.framesetOK = false
+ p.parseGenericRawTextElement()
+ case a.Noembed:
+ p.parseGenericRawTextElement()
+ case a.Noscript:
+ if p.scripting {
+ p.parseGenericRawTextElement()
+ return true
+ }
+ p.reconstructActiveFormattingElements()
p.addElement()
- p.setOriginalIM()
- p.im = textIM
- case a.Noembed, a.Noscript:
- p.addElement()
- p.setOriginalIM()
- p.im = textIM
+ // Don't let the tokenizer go into raw text mode when scripting is disabled.
+ p.tokenizer.NextIsNotRawText()
case a.Select:
p.reconstructActiveFormattingElements()
p.addElement()
@@ -1137,7 +1108,7 @@ func inBodyIM(p *parser) bool {
return false
}
return true
- case a.Address, a.Article, a.Aside, a.Blockquote, a.Button, a.Center, a.Details, a.Dir, a.Div, a.Dl, a.Fieldset, a.Figcaption, a.Figure, a.Footer, a.Header, a.Hgroup, a.Listing, a.Menu, a.Nav, a.Ol, a.Pre, a.Section, a.Summary, a.Ul:
+ case a.Address, a.Article, a.Aside, a.Blockquote, a.Button, a.Center, a.Details, a.Dialog, a.Dir, a.Div, a.Dl, a.Fieldset, a.Figcaption, a.Figure, a.Footer, a.Header, a.Hgroup, a.Listing, a.Main, a.Menu, a.Nav, a.Ol, a.Pre, a.Section, a.Summary, a.Ul:
p.popUntil(defaultScope, p.tok.DataAtom)
case a.Form:
if p.oe.contains(a.Template) {
@@ -1198,14 +1169,13 @@ func inBodyIM(p *parser) bool {
if len(p.templateStack) > 0 {
p.im = inTemplateIM
return false
- } else {
- for _, e := range p.oe {
- switch e.DataAtom {
- case a.Dd, a.Dt, a.Li, a.Optgroup, a.Option, a.P, a.Rb, a.Rp, a.Rt, a.Rtc, a.Tbody, a.Td, a.Tfoot, a.Th,
- a.Thead, a.Tr, a.Body, a.Html:
- default:
- return true
- }
+ }
+ for _, e := range p.oe {
+ switch e.DataAtom {
+ case a.Dd, a.Dt, a.Li, a.Optgroup, a.Option, a.P, a.Rb, a.Rp, a.Rt, a.Rtc, a.Tbody, a.Td, a.Tfoot, a.Th,
+ a.Thead, a.Tr, a.Body, a.Html:
+ default:
+ return true
}
}
}
@@ -1221,9 +1191,15 @@ func (p *parser) inBodyEndTagFormatting(tagAtom a.Atom, tagName string) {
// Once the code successfully parses the comprehensive test suite, we should
// refactor this code to be more idiomatic.
- // Steps 1-4. The outer loop.
+ // Steps 1-2
+ if current := p.oe.top(); current.Data == tagName && p.afe.index(current) == -1 {
+ p.oe.pop()
+ return
+ }
+
+ // Steps 3-5. The outer loop.
for i := 0; i < 8; i++ {
- // Step 5. Find the formatting element.
+ // Step 6. Find the formatting element.
var formattingElement *Node
for j := len(p.afe) - 1; j >= 0; j-- {
if p.afe[j].Type == scopeMarkerNode {
@@ -1238,17 +1214,22 @@ func (p *parser) inBodyEndTagFormatting(tagAtom a.Atom, tagName string) {
p.inBodyEndTagOther(tagAtom, tagName)
return
}
+
+ // Step 7. Ignore the tag if formatting element is not in the stack of open elements.
feIndex := p.oe.index(formattingElement)
if feIndex == -1 {
p.afe.remove(formattingElement)
return
}
+ // Step 8. Ignore the tag if formatting element is not in the scope.
if !p.elementInScope(defaultScope, tagAtom) {
// Ignore the tag.
return
}
- // Steps 9-10. Find the furthest block.
+ // Step 9. This step is omitted because it's just a parse error but no need to return.
+
+ // Steps 10-11. Find the furthest block.
var furthestBlock *Node
for _, e := range p.oe[feIndex:] {
if isSpecialElement(e) {
@@ -1265,47 +1246,65 @@ func (p *parser) inBodyEndTagFormatting(tagAtom a.Atom, tagName string) {
return
}
- // Steps 11-12. Find the common ancestor and bookmark node.
+ // Steps 12-13. Find the common ancestor and bookmark node.
commonAncestor := p.oe[feIndex-1]
bookmark := p.afe.index(formattingElement)
- // Step 13. The inner loop. Find the lastNode to reparent.
+ // Step 14. The inner loop. Find the lastNode to reparent.
lastNode := furthestBlock
node := furthestBlock
x := p.oe.index(node)
- // Steps 13.1-13.2
- for j := 0; j < 3; j++ {
- // Step 13.3.
+ // Step 14.1.
+ j := 0
+ for {
+ // Step 14.2.
+ j++
+ // Step. 14.3.
x--
node = p.oe[x]
- // Step 13.4 - 13.5.
+ // Step 14.4. Go to the next step if node is formatting element.
+ if node == formattingElement {
+ break
+ }
+ // Step 14.5. Remove node from the list of active formatting elements if
+ // inner loop counter is greater than three and node is in the list of
+ // active formatting elements.
+ if ni := p.afe.index(node); j > 3 && ni > -1 {
+ p.afe.remove(node)
+ // If any element of the list of active formatting elements is removed,
+ // we need to take care whether bookmark should be decremented or not.
+ // This is because the value of bookmark may exceed the size of the
+ // list by removing elements from the list.
+ if ni <= bookmark {
+ bookmark--
+ }
+ continue
+ }
+ // Step 14.6. Continue the next inner loop if node is not in the list of
+ // active formatting elements.
if p.afe.index(node) == -1 {
p.oe.remove(node)
continue
}
- // Step 13.6.
- if node == formattingElement {
- break
- }
- // Step 13.7.
+ // Step 14.7.
clone := node.clone()
p.afe[p.afe.index(node)] = clone
p.oe[p.oe.index(node)] = clone
node = clone
- // Step 13.8.
+ // Step 14.8.
if lastNode == furthestBlock {
bookmark = p.afe.index(node) + 1
}
- // Step 13.9.
+ // Step 14.9.
if lastNode.Parent != nil {
lastNode.Parent.RemoveChild(lastNode)
}
node.AppendChild(lastNode)
- // Step 13.10.
+ // Step 14.10.
lastNode = node
}
- // Step 14. Reparent lastNode to the common ancestor,
+ // Step 15. Reparent lastNode to the common ancestor,
// or for misnested table nodes, to the foster parent.
if lastNode.Parent != nil {
lastNode.Parent.RemoveChild(lastNode)
@@ -1317,13 +1316,13 @@ func (p *parser) inBodyEndTagFormatting(tagAtom a.Atom, tagName string) {
commonAncestor.AppendChild(lastNode)
}
- // Steps 15-17. Reparent nodes from the furthest block's children
+ // Steps 16-18. Reparent nodes from the furthest block's children
// to a clone of the formatting element.
clone := formattingElement.clone()
reparentChildren(clone, furthestBlock)
furthestBlock.AppendChild(clone)
- // Step 18. Fix up the list of active formatting elements.
+ // Step 19. Fix up the list of active formatting elements.
if oldLoc := p.afe.index(formattingElement); oldLoc != -1 && oldLoc < bookmark {
// Move the bookmark with the rest of the list.
bookmark--
@@ -1331,7 +1330,7 @@ func (p *parser) inBodyEndTagFormatting(tagAtom a.Atom, tagName string) {
p.afe.remove(formattingElement)
p.afe.insert(bookmark, clone)
- // Step 19. Fix up the stack of open elements.
+ // Step 20. Fix up the stack of open elements.
p.oe.remove(formattingElement)
p.oe.insert(p.oe.index(furthestBlock)+1, clone)
}
@@ -1502,14 +1501,13 @@ func inCaptionIM(p *parser) bool {
case StartTagToken:
switch p.tok.DataAtom {
case a.Caption, a.Col, a.Colgroup, a.Tbody, a.Td, a.Tfoot, a.Thead, a.Tr:
- if p.popUntil(tableScope, a.Caption) {
- p.clearActiveFormattingElements()
- p.im = inTableIM
- return false
- } else {
+ if !p.popUntil(tableScope, a.Caption) {
// Ignore the token.
return true
}
+ p.clearActiveFormattingElements()
+ p.im = inTableIM
+ return false
case a.Select:
p.reconstructActiveFormattingElements()
p.addElement()
@@ -1526,14 +1524,13 @@ func inCaptionIM(p *parser) bool {
}
return true
case a.Table:
- if p.popUntil(tableScope, a.Caption) {
- p.clearActiveFormattingElements()
- p.im = inTableIM
- return false
- } else {
+ if !p.popUntil(tableScope, a.Caption) {
// Ignore the token.
return true
}
+ p.clearActiveFormattingElements()
+ p.im = inTableIM
+ return false
case a.Body, a.Col, a.Colgroup, a.Html, a.Tbody, a.Td, a.Tfoot, a.Th, a.Thead, a.Tr:
// Ignore the token.
return true
@@ -1777,12 +1774,11 @@ func inSelectIM(p *parser) bool {
}
p.addElement()
case a.Select:
- if p.popUntil(selectScope, a.Select) {
- p.resetInsertionMode()
- } else {
+ if !p.popUntil(selectScope, a.Select) {
// Ignore the token.
return true
}
+ p.resetInsertionMode()
case a.Input, a.Keygen, a.Textarea:
if p.elementInScope(selectScope, a.Select) {
p.parseImpliedToken(EndTagToken, a.Select, a.Select.String())
@@ -1810,12 +1806,11 @@ func inSelectIM(p *parser) bool {
p.oe = p.oe[:i]
}
case a.Select:
- if p.popUntil(selectScope, a.Select) {
- p.resetInsertionMode()
- } else {
+ if !p.popUntil(selectScope, a.Select) {
// Ignore the token.
return true
}
+ p.resetInsertionMode()
case a.Template:
return inHeadIM(p)
}
@@ -2136,28 +2131,31 @@ func parseForeignContent(p *parser) bool {
Data: p.tok.Data,
})
case StartTagToken:
- b := breakout[p.tok.Data]
- if p.tok.DataAtom == a.Font {
- loop:
- for _, attr := range p.tok.Attr {
- switch attr.Key {
- case "color", "face", "size":
- b = true
- break loop
+ if !p.fragment {
+ b := breakout[p.tok.Data]
+ if p.tok.DataAtom == a.Font {
+ loop:
+ for _, attr := range p.tok.Attr {
+ switch attr.Key {
+ case "color", "face", "size":
+ b = true
+ break loop
+ }
}
}
- }
- if b {
- for i := len(p.oe) - 1; i >= 0; i-- {
- n := p.oe[i]
- if n.Namespace == "" || htmlIntegrationPoint(n) || mathMLTextIntegrationPoint(n) {
- p.oe = p.oe[:i+1]
- break
+ if b {
+ for i := len(p.oe) - 1; i >= 0; i-- {
+ n := p.oe[i]
+ if n.Namespace == "" || htmlIntegrationPoint(n) || mathMLTextIntegrationPoint(n) {
+ p.oe = p.oe[:i+1]
+ break
+ }
}
+ return false
}
- return false
}
- switch p.top().Namespace {
+ current := p.adjustedCurrentNode()
+ switch current.Namespace {
case "math":
adjustAttributeNames(p.tok.Attr, mathMLAttributeAdjustments)
case "svg":
@@ -2172,7 +2170,7 @@ func parseForeignContent(p *parser) bool {
panic("html: bad parser state: unexpected namespace")
}
adjustForeignAttributes(p.tok.Attr)
- namespace := p.top().Namespace
+ namespace := current.Namespace
p.addElement()
p.top().Namespace = namespace
if namespace != "" {
@@ -2201,12 +2199,20 @@ func parseForeignContent(p *parser) bool {
return true
}
+// Section 12.2.4.2.
+func (p *parser) adjustedCurrentNode() *Node {
+ if len(p.oe) == 1 && p.fragment && p.context != nil {
+ return p.context
+ }
+ return p.oe.top()
+}
+
// Section 12.2.6.
func (p *parser) inForeignContent() bool {
if len(p.oe) == 0 {
return false
}
- n := p.oe[len(p.oe)-1]
+ n := p.adjustedCurrentNode()
if n.Namespace == "" {
return false
}
@@ -2341,8 +2347,7 @@ func ParseWithOptions(r io.Reader, opts ...ParseOption) (*Node, error) {
f(p)
}
- err := p.parse()
- if err != nil {
+ if err := p.parse(); err != nil {
return nil, err
}
return p.doc, nil
@@ -2364,7 +2369,6 @@ func ParseFragmentWithOptions(r io.Reader, context *Node, opts ...ParseOption) (
contextTag = context.DataAtom.String()
}
p := &parser{
- tokenizer: NewTokenizerFragment(r, contextTag),
doc: &Node{
Type: DocumentNode,
},
@@ -2372,6 +2376,11 @@ func ParseFragmentWithOptions(r io.Reader, context *Node, opts ...ParseOption) (
fragment: true,
context: context,
}
+ if context != nil && context.Namespace != "" {
+ p.tokenizer = NewTokenizer(r)
+ } else {
+ p.tokenizer = NewTokenizerFragment(r, contextTag)
+ }
for _, f := range opts {
f(p)
@@ -2396,8 +2405,7 @@ func ParseFragmentWithOptions(r io.Reader, context *Node, opts ...ParseOption) (
}
}
- err := p.parse()
- if err != nil {
+ if err := p.parse(); err != nil {
return nil, err
}
diff --git a/vendor/golang.org/x/net/html/render.go b/vendor/golang.org/x/net/html/render.go
index d34564f49d..8bf47ede79 100644
--- a/vendor/golang.org/x/net/html/render.go
+++ b/vendor/golang.org/x/net/html/render.go
@@ -252,20 +252,19 @@ func writeQuoted(w writer, s string) error {
// Section 12.1.2, "Elements", gives this list of void elements. Void elements
// are those that can't have any contents.
var voidElements = map[string]bool{
- "area": true,
- "base": true,
- "br": true,
- "col": true,
- "command": true,
- "embed": true,
- "hr": true,
- "img": true,
- "input": true,
- "keygen": true,
- "link": true,
- "meta": true,
- "param": true,
- "source": true,
- "track": true,
- "wbr": true,
+ "area": true,
+ "base": true,
+ "br": true,
+ "col": true,
+ "embed": true,
+ "hr": true,
+ "img": true,
+ "input": true,
+ "keygen": true,
+ "link": true,
+ "meta": true,
+ "param": true,
+ "source": true,
+ "track": true,
+ "wbr": true,
}
diff --git a/vendor/golang.org/x/net/html/token.go b/vendor/golang.org/x/net/html/token.go
index ae0d1b05cd..877709f991 100644
--- a/vendor/golang.org/x/net/html/token.go
+++ b/vendor/golang.org/x/net/html/token.go
@@ -296,8 +296,7 @@ func (z *Tokenizer) Buffered() []byte {
// too many times in succession.
func readAtLeastOneByte(r io.Reader, b []byte) (int, error) {
for i := 0; i < 100; i++ {
- n, err := r.Read(b)
- if n != 0 || err != nil {
+ if n, err := r.Read(b); n != 0 || err != nil {
return n, err
}
}
diff --git a/vendor/modules.txt b/vendor/modules.txt
index f21fb744ab..daf4e7dc0e 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -486,7 +486,7 @@ golang.org/x/crypto/scrypt
golang.org/x/crypto/ssh
golang.org/x/crypto/ssh/agent
golang.org/x/crypto/ssh/knownhosts
-# golang.org/x/net v0.0.0-20191101175033-0deb6923b6d9
+# golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa
golang.org/x/net/context
golang.org/x/net/context/ctxhttp
golang.org/x/net/html
diff --git a/web_src/js/index.js b/web_src/js/index.js
index c84a2c8991..5d195774dd 100644
--- a/web_src/js/index.js
+++ b/web_src/js/index.js
@@ -18,8 +18,13 @@ function htmlEncode(text) {
return jQuery('<div />').text(text).html();
}
+function svg(name, size) {
+ return `<svg class="svg ${name}" width="${size}" height="${size}" aria-hidden="true"><use xlink:href="${staticPrefix}/img/svg/icons.svg#${name}"/></svg>`;
+}
+
let csrf;
let suburl;
+let staticPrefix;
let previewFileModes;
let simpleMDEditor;
const commentMDEditors = {};
@@ -377,10 +382,10 @@ function initCommentForm() {
// adding/removing labels
if ($(this).hasClass('checked')) {
$(this).removeClass('checked');
- $(this).find('.octicon').removeClass('octicon-check');
+ $(this).find('.octicon-check').addClass('invisible');
} else {
$(this).addClass('checked');
- $(this).find('.octicon').addClass('octicon-check');
+ $(this).find('.octicon-check').removeClass('invisible');
}
updateIssuesMeta(
@@ -395,7 +400,7 @@ function initCommentForm() {
if ($(this).hasClass('checked')) {
$(this).removeClass('checked');
- $(this).find('.octicon').removeClass('octicon-check');
+ $(this).find('.octicon-check').addClass('invisible');
if (hasLabelUpdateAction) {
if (!($(this).data('id') in labels)) {
labels[$(this).data('id')] = {
@@ -409,7 +414,7 @@ function initCommentForm() {
}
} else {
$(this).addClass('checked');
- $(this).find('.octicon').addClass('octicon-check');
+ $(this).find('.octicon-check').removeClass('invisible');
if (hasLabelUpdateAction) {
if (!($(this).data('id') in labels)) {
labels[$(this).data('id')] = {
@@ -452,7 +457,7 @@ function initCommentForm() {
$(this).parent().find('.item').each(function () {
$(this).removeClass('checked');
- $(this).find('.octicon').removeClass('octicon-check');
+ $(this).find('.octicon').addClass('invisible');
});
$list.find('.item').each(function () {
@@ -2361,6 +2366,7 @@ function initTemplateSearch() {
$(document).ready(async () => {
csrf = $('meta[name=_csrf]').attr('content');
suburl = $('meta[name=_suburl]').attr('content');
+ staticPrefix = $('meta[name=_staticprefix]').attr('content');
// Show exact time
$('.time-since').each(function () {
@@ -2497,7 +2503,7 @@ $(document).ready(async () => {
$(this).find('h1, h2, h3, h4, h5, h6').each(function () {
let node = $(this);
node = node.wrap('<div class="anchor-wrap"></div>');
- node.append(`<a class="anchor" href="#${encodeURIComponent(node.attr('id'))}"><span class="octicon octicon-link"></span></a>`);
+ node.append(`<a class="anchor" href="#${encodeURIComponent(node.attr('id'))}">${svg('octicon-link', 16)}</a>`);
});
});
@@ -2779,6 +2785,7 @@ function initVueComponents() {
reposFilter: 'all',
searchQuery: '',
isLoading: false,
+ staticPrefix,
repoTypes: {
all: {
count: 0,
@@ -2881,13 +2888,13 @@ function initVueComponents() {
repoClass(repo) {
if (repo.fork) {
- return 'octicon octicon-repo-forked';
+ return 'octicon-repo-forked';
} if (repo.mirror) {
- return 'octicon octicon-repo-clone';
+ return 'octicon-repo-clone';
} if (repo.private) {
- return 'octicon octicon-lock';
+ return 'octicon-lock';
}
- return 'octicon octicon-repo';
+ return 'octicon-repo';
}
}
});
diff --git a/web_src/less/_base.less b/web_src/less/_base.less
index d1851d5d88..9627ba7914 100644
--- a/web_src/less/_base.less
+++ b/web_src/less/_base.less
@@ -261,11 +261,11 @@ code,
z-index: 900;
}
- .octicon {
- &.fitted {
- margin-right: 0;
- }
+ .fitted .svg {
+ margin-right: 0;
+ }
+ .svg {
margin-right: 0.75em;
}
@@ -277,7 +277,7 @@ code,
}
}
- .text .octicon {
+ .text .svg {
width: 16px;
text-align: center;
}
@@ -597,7 +597,7 @@ code,
}
&.status.buttons {
- .octicon {
+ .svg {
margin-right: 4px;
}
}
@@ -1136,7 +1136,7 @@ i.icon.centerlock {
overflow-y: visible;
}
- *:not(.fa):not(.octicon):not(.icon) {
+ *:not(.fa):not(.svg):not(.icon) {
font-size: 12px;
font-family: @monospaced-fonts, monospace;
line-height: 20px;
@@ -1167,7 +1167,7 @@ i.icon.centerlock {
height: 2.1666em !important;
}
-.octicon {
+.svg {
&.green {
color: #21ba45;
}
@@ -1192,3 +1192,7 @@ i.icon.centerlock {
border: 1px solid #ccc;
border-radius: 500em;
}
+
+.invisible {
+ visibility: hidden;
+}
diff --git a/web_src/less/_dashboard.less b/web_src/less/_dashboard.less
index 71239ffc3e..ab0d3b61b9 100644
--- a/web_src/less/_dashboard.less
+++ b/web_src/less/_dashboard.less
@@ -155,7 +155,7 @@
padding: 6px 1.2em;
display: block;
- .octicon {
+ .svg {
color: #888888;
&.rear {
diff --git a/web_src/less/_explore.less b/web_src/less/_explore.less
index ad9adc70e0..e9a2546896 100644
--- a/web_src/less/_explore.less
+++ b/web_src/less/_explore.less
@@ -9,7 +9,7 @@
background-color: #fafafa !important;
border-width: 1px !important;
- .octicon {
+ .svg {
width: 16px;
text-align: center;
margin-right: 5px;
@@ -95,7 +95,7 @@
.description {
margin-top: 5px;
- .octicon:not(:first-child) {
+ .svg:not(:first-child) {
margin-left: 5px;
}
diff --git a/web_src/less/_home.less b/web_src/less/_home.less
index 53fd76f098..90390239a1 100644
--- a/web_src/less/_home.less
+++ b/web_src/less/_home.less
@@ -24,10 +24,11 @@
}
}
- .octicon {
+ .svg {
color: #5aa509;
- font-size: 40px;
+ height: 40px;
width: 50px;
+ vertical-align: bottom;
}
&.header {
diff --git a/web_src/less/_repository.less b/web_src/less/_repository.less
index 7a84c7d636..bd2449ba1e 100644
--- a/web_src/less/_repository.less
+++ b/web_src/less/_repository.less
@@ -1,5 +1,4 @@
.repository {
- @mega-octicon-width: 30px;
padding-top: 15px;
@@ -12,34 +11,29 @@
margin-top: 0;
}
- .mega-octicon {
- width: @mega-octicon-width;
- font-size: 30px;
- }
-
.ui.huge.breadcrumb {
font-weight: 400;
font-size: 1.5rem;
- i.mega-octicon {
+ svg {
position: relative;
top: 5px;
}
- i.octicon-lock {
+ svg.octicon-lock {
margin-left: 5px;
}
}
.fork-flag {
- margin-left: @mega-octicon-width + 6px;
+ margin-left: 36px;
margin-top: 3px;
display: block;
font-size: 12px;
white-space: nowrap;
}
- .octicon.octicon-repo-forked {
+ .svg.octicon-repo-forked {
margin-top: -1px;
font-size: 15px;
}
@@ -135,7 +129,7 @@
border-bottom: 0;
}
- .ui.tabular .octicon {
+ .ui.tabular .svg {
margin-right: 5px;
}
}
@@ -147,13 +141,13 @@
padding: 0 8px;
}
- .octicon {
+ .svg {
float: left;
margin: 0 -7px 0 -5px;
width: 16px;
}
- &.labels .octicon {
+ &.labels .svg {
margin: -2px -7px 0 -5px;
}
@@ -325,7 +319,7 @@
}
tbody {
- .octicon {
+ .svg {
margin-left: 3px;
margin-right: 5px;
color: #777777;
@@ -456,7 +450,7 @@
.sidebar {
padding-left: 0;
- .octicon {
+ .svg {
width: 16px;
}
}
@@ -476,7 +470,7 @@
}
.tabular.menu {
- .octicon {
+ .svg {
margin-right: 5px;
}
}
@@ -637,7 +631,7 @@
&.tabular.menu {
margin-bottom: 10px;
- .octicon {
+ .svg {
margin-right: 5px;
}
}
@@ -675,7 +669,7 @@
text-align: center;
vertical-align: middle;
- .octicon {
+ .svg {
width: 23px;
font-size: 23px;
margin-top: 0.45em;
@@ -896,11 +890,11 @@
margin: 15px 0 15px 79px;
padding-left: 25px;
- & > .octicon:not(.issue-symbol) {
+ & > .svg:not(.issue-symbol) {
text-shadow: -2px 0 #fff, 0 2px #fff, 2px 0 #fff, 0 -2px #fff;
}
- & > .octicon.issue-symbol {
+ & > .svg.issue-symbol {
font-size: 20px;
margin-left: -35px;
margin-right: -1px;
@@ -935,7 +929,7 @@
}
}
- .octicon {
+ .svg {
width: 30px;
float: left;
text-align: center;
@@ -980,7 +974,7 @@
margin-top: 5px;
margin-left: 35px;
- .octicon {
+ .svg {
&.octicon-git-commit {
margin-top: 2px;
}
@@ -1104,7 +1098,7 @@
color: #999999;
padding-top: 5px;
- .issue-stats .octicon {
+ .issue-stats .svg {
padding-left: 5px;
}
@@ -1150,7 +1144,7 @@
}
.choose.branch {
- .octicon {
+ .svg {
padding-right: 10px;
}
}
@@ -1617,7 +1611,7 @@
margin-top: 20px;
> a {
- .octicon {
+ .svg {
margin-left: 5px;
margin-right: 5px;
}
@@ -1730,7 +1724,7 @@
padding-top: 70px;
padding-bottom: 100px;
- .mega-octicon {
+ .svg {
font-size: 48px;
}
}
@@ -2232,11 +2226,11 @@
margin: 15px -1rem -1rem -1rem;
}
- > .mega-octicon {
+ > .svg {
display: table-cell;
}
- > .mega-octicon + .content {
+ > .svg + .content {
display: table-cell;
padding: 0 0 0 0.5em;
vertical-align: top;
diff --git a/web_src/less/_svg.less b/web_src/less/_svg.less
new file mode 100644
index 0000000000..b17b9a8b32
--- /dev/null
+++ b/web_src/less/_svg.less
@@ -0,0 +1,9 @@
+.svg {
+ display: inline-block;
+ vertical-align: text-top;
+ fill: currentColor;
+
+ .middle & {
+ vertical-align: middle;
+ }
+}
diff --git a/web_src/less/_user.less b/web_src/less/_user.less
index 52c59464d8..2bec3489e7 100644
--- a/web_src/less/_user.less
+++ b/web_src/less/_user.less
@@ -24,7 +24,7 @@
border-bottom: 1px solid #eaeaea;
}
- .octicon,
+ .svg,
.fa {
margin-left: 1px;
margin-right: 5px;
@@ -80,7 +80,7 @@
}
&.notification {
- .octicon {
+ .svg {
float: left;
font-size: 2em;
diff --git a/web_src/less/index.less b/web_src/less/index.less
index 1b93024329..12eb8cf8e5 100644
--- a/web_src/less/index.less
+++ b/web_src/less/index.less
@@ -1,6 +1,7 @@
@import "~highlight.js/styles/github.css";
@import "./vendor/gitGraph.css";
+@import "_svg";
@import "_tribute";
@import "_emojify";
@import "_base";
diff --git a/web_src/less/themes/theme-arc-green.less b/web_src/less/themes/theme-arc-green.less
index bd8033e302..0d2a1a4e98 100644
--- a/web_src/less/themes/theme-arc-green.less
+++ b/web_src/less/themes/theme-arc-green.less
@@ -654,11 +654,11 @@ a.ui.basic.green.label:hover {
border-top: 1px solid #353944;
}
-.repository.view.issue .comment-list .event > .octicon.issue-symbol {
+.repository.view.issue .comment-list .event > .svg.issue-symbol {
background: #3b4954;
}
-.repository.view.issue .comment-list .event > .octicon:not(.issue-symbol) {
+.repository.view.issue .comment-list .event > .svg:not(.issue-symbol) {
text-shadow: -2px 0 #383c4a, 0 2px #383c4a, 2px 0 #383c4a, 0 -2px #383c4a;
}
@@ -1065,8 +1065,8 @@ input {
color: #668cb1;
}
-.repository.file.list #repo-files-table tbody .octicon.octicon-file-directory,
-.repository.file.list #repo-files-table tbody .octicon.octicon-file-submodule {
+.repository.file.list #repo-files-table tbody .svg.octicon-file-directory,
+.repository.file.list #repo-files-table tbody .svg.octicon-file-submodule {
color: #7c9b5e;
}
diff --git a/webpack.config.js b/webpack.config.js
index 08926bf58a..c3d3ad88e0 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -5,14 +5,17 @@ const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
const PostCSSPresetEnv = require('postcss-preset-env');
const PostCSSSafeParser = require('postcss-safe-parser');
+const SpriteLoaderPlugin = require('svg-sprite-loader/plugin');
const TerserPlugin = require('terser-webpack-plugin');
const VueLoaderPlugin = require('vue-loader/lib/plugin');
const { statSync } = require('fs');
const { resolve, parse } = require('path');
const { SourceMapDevToolPlugin } = require('webpack');
+const glob = (pattern) => fastGlob.sync(pattern, { cwd: __dirname, absolute: true });
+
const themes = {};
-for (const path of fastGlob.sync(resolve(__dirname, 'web_src/less/themes/*.less'))) {
+for (const path of glob('web_src/less/themes/*.less')) {
themes[parse(path).name] = [path];
}
@@ -29,6 +32,7 @@ module.exports = {
jquery: [
resolve(__dirname, 'web_src/js/jquery.js'),
],
+ icons: glob('node_modules/@primer/octicons/build/svg/**/*.svg'),
...themes,
},
devtool: false,
@@ -140,12 +144,35 @@ module.exports = {
},
],
},
+ {
+ test: /\.svg$/,
+ use: [
+ {
+ loader: 'svg-sprite-loader',
+ options: {
+ extract: true,
+ spriteFilename: 'img/svg/icons.svg',
+ symbolId: (path) => {
+ const { name } = parse(path);
+ if (/@primer[/\\]octicons/.test(path)) {
+ return `octicon-${name}`;
+ }
+ return name;
+ },
+ },
+ },
+ {
+ loader: 'svgo-loader',
+ },
+ ],
+ },
],
},
plugins: [
new VueLoaderPlugin(),
- // needed so themes don't generate useless js files
+ // avoid generating useless js output files for css- and svg-only chunks
new FixStyleOnlyEntriesPlugin({
+ extensions: ['less', 'scss', 'css', 'svg'],
silent: true,
}),
new MiniCssExtractPlugin({
@@ -158,6 +185,9 @@ module.exports = {
'js/index.js',
],
}),
+ new SpriteLoaderPlugin({
+ plainSprite: true,
+ }),
],
performance: {
maxEntrypointSize: 512000,