From 86fdba177ad82f3dcdfc237631fef4588042b9d6 Mon Sep 17 00:00:00 2001 From: John Olheiser <42128690+jolheiser@users.noreply.github.com> Date: Tue, 11 Feb 2020 11:02:41 -0600 Subject: [PATCH] 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> --- .gitignore | 1 + go.mod | 2 +- go.sum | 4 +- integrations/repo_test.go | 12 +- modules/base/tool.go | 2 +- modules/templates/helper.go | 3 + package-lock.json | 632 +++++++++++++++++- package.json | 4 + public/vendor/assets/octicons/LICENSE | 21 - public/vendor/assets/octicons/octicons.eot | Bin 44098 -> 0 bytes .../vendor/assets/octicons/octicons.min.css | 1 - public/vendor/assets/octicons/octicons.svg | 429 ------------ public/vendor/assets/octicons/octicons.ttf | Bin 43920 -> 0 bytes public/vendor/assets/octicons/octicons.woff | Bin 24004 -> 0 bytes public/vendor/assets/octicons/octicons.woff2 | Bin 20248 -> 0 bytes templates/admin/org/list.tmpl | 2 +- templates/admin/repo/list.tmpl | 2 +- templates/base/head.tmpl | 4 +- templates/base/head_navbar.tmpl | 28 +- templates/explore/navbar.tmpl | 8 +- templates/explore/organizations.tmpl | 18 +- templates/explore/repo_list.tmpl | 12 +- templates/explore/users.tmpl | 16 +- templates/home.tmpl | 8 +- templates/org/header.tmpl | 4 +- templates/org/home.tmpl | 12 +- templates/org/member/members.tmpl | 10 +- templates/org/settings/delete.tmpl | 2 +- templates/org/team/navbar.tmpl | 6 +- templates/org/team/repositories.tmpl | 10 +- templates/org/team/sidebar.tmpl | 2 +- templates/org/team/teams.tmpl | 2 +- templates/pwa/serviceworker_js.tmpl | 3 + templates/repo/activity.tmpl | 20 +- templates/repo/blame.tmpl | 8 +- templates/repo/branch/list.tmpl | 26 +- templates/repo/branch_dropdown.tmpl | 6 +- templates/repo/commit_page.tmpl | 2 +- templates/repo/commits.tmpl | 2 +- templates/repo/commits_table.tmpl | 4 +- templates/repo/diff/blob_excerpt.tmpl | 6 +- templates/repo/diff/box.tmpl | 2 +- templates/repo/diff/comment_form.tmpl | 2 +- templates/repo/diff/compare.tmpl | 2 +- templates/repo/diff/section_unified.tmpl | 2 +- templates/repo/editor/commit_form.tmpl | 6 +- templates/repo/editor/edit.tmpl | 8 +- templates/repo/editor/upload.tmpl | 2 +- templates/repo/empty.tmpl | 2 +- templates/repo/header.tmpl | 57 +- templates/repo/home.tmpl | 6 +- .../repo/issue/branch_selector_field.tmpl | 4 +- templates/repo/issue/labels.tmpl | 8 +- templates/repo/issue/list.tmpl | 26 +- templates/repo/issue/milestone_issues.tmpl | 30 +- templates/repo/issue/milestones.tmpl | 24 +- templates/repo/issue/new_form.tmpl | 14 +- .../repo/issue/view_content/add_reaction.tmpl | 4 +- .../repo/issue/view_content/attachments.tmpl | 2 +- .../repo/issue/view_content/comments.tmpl | 64 +- templates/repo/issue/view_content/pull.tmpl | 46 +- .../repo/issue/view_content/sidebar.tmpl | 32 +- templates/repo/issue/view_title.tmpl | 10 +- templates/repo/pulls/tab_menu.tmpl | 6 +- templates/repo/release/list.tmpl | 12 +- templates/repo/release/new.tmpl | 2 +- templates/repo/settings/collaboration.tmpl | 4 +- templates/repo/settings/deploy_keys.tmpl | 4 +- templates/repo/settings/githooks.tmpl | 2 +- templates/repo/settings/lfs.tmpl | 6 +- templates/repo/settings/lfs_file_find.tmpl | 4 +- templates/repo/settings/lfs_locks.tmpl | 8 +- templates/repo/settings/protected_branch.tmpl | 6 +- templates/repo/settings/webhook/history.tmpl | 4 +- templates/repo/settings/webhook/list.tmpl | 6 +- templates/repo/sub_menu.tmpl | 6 +- templates/repo/user_cards.tmpl | 6 +- templates/repo/view_file.tmpl | 8 +- templates/repo/view_list.tmpl | 8 +- templates/repo/wiki/pages.tmpl | 2 +- templates/repo/wiki/revision.tmpl | 2 +- templates/repo/wiki/start.tmpl | 2 +- templates/repo/wiki/view.tmpl | 2 +- templates/user/dashboard/dashboard.tmpl | 8 +- templates/user/dashboard/feeds.tmpl | 2 +- templates/user/dashboard/issues.tmpl | 18 +- templates/user/dashboard/milestones.tmpl | 24 +- templates/user/dashboard/navbar.tmpl | 10 +- templates/user/notification/notification.tmpl | 20 +- templates/user/profile.tmpl | 24 +- templates/user/settings/account.tmpl | 2 +- templates/user/settings/applications.tmpl | 2 +- templates/user/settings/keys_gpg.tmpl | 2 +- templates/user/settings/keys_ssh.tmpl | 4 +- templates/user/settings/repos.tmpl | 106 +-- vendor/golang.org/x/net/html/const.go | 1 - vendor/golang.org/x/net/html/foreign.go | 1 - vendor/golang.org/x/net/html/parse.go | 298 +++++---- vendor/golang.org/x/net/html/render.go | 31 +- vendor/golang.org/x/net/html/token.go | 3 +- vendor/modules.txt | 2 +- web_src/js/index.js | 27 +- web_src/less/_base.less | 20 +- web_src/less/_dashboard.less | 2 +- web_src/less/_explore.less | 4 +- web_src/less/_home.less | 5 +- web_src/less/_repository.less | 50 +- web_src/less/_svg.less | 9 + web_src/less/_user.less | 4 +- web_src/less/index.less | 1 + web_src/less/themes/theme-arc-green.less | 8 +- webpack.config.js | 34 +- 112 files changed, 1387 insertions(+), 1122 deletions(-) delete mode 100644 public/vendor/assets/octicons/LICENSE delete mode 100644 public/vendor/assets/octicons/octicons.eot delete mode 100644 public/vendor/assets/octicons/octicons.min.css delete mode 100644 public/vendor/assets/octicons/octicons.svg delete mode 100644 public/vendor/assets/octicons/octicons.ttf delete mode 100644 public/vendor/assets/octicons/octicons.woff delete mode 100644 public/vendor/assets/octicons/octicons.woff2 create mode 100644 web_src/less/_svg.less diff --git a/.gitignore b/.gitignore index 0a1d2e3b23c..f223edabffc 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 f28b199f0dc..b3e8db7785d 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 30109a24e40..81150c0fd1a 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 d2e02dd37fb..485b77c00f2 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 aaa6e3ffb32..cb9b996142a 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 741161eb8bd..30ca9c1638b 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 e00bae199cf..3ca1b0629ea 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 cfae51b5676..7f30cb9c240 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 4cf2020ce77..00000000000 --- 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 b4c7a989ae645fe4dcab1dea34cfffa8487b28c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44098 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 diff --git a/public/vendor/assets/octicons/octicons.min.css b/public/vendor/assets/octicons/octicons.min.css deleted file mode 100644 index a000669c948..00000000000 --- 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 41cbd3f1fc9..00000000000 --- 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="♥" -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="⚡" -d="M60 42l-54 -54l18 42h-24l54 54l-18 -42h24z" /> - <glyph glyph-name="light-bulb" unicode="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -d="M84 48l-22 -20l6 -28l-26 14l-26 -14l6 28l-22 20l29 4l13 26l13 -26z" /> - <glyph glyph-name="comment" unicode="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -d="M72 54l-48 -48l-24 24l9 9l15 -15l39 39z" /> - <glyph glyph-name="mail" unicode="" -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="" -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="" -d="M30 66l30 -36h-18v-24h-24v24h-18z" /> - <glyph glyph-name="arrow-right" unicode="" -d="M60 36l-36 -30v18h-24v24h24v18z" /> - <glyph glyph-name="arrow-down" unicode="" -d="M42 42h18l-30 -36l-30 36h18v24h24v-24z" /> - <glyph glyph-name="arrow-left" unicode="" -d="M36 66v-18h24v-24h-24v-18l-36 30z" /> - <glyph glyph-name="pin" unicode="" -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="" -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="" -d="M96 0v-6h-96v90h6v-84h90zM30 6h-12v30h12v-30zM54 6h-12v60h12v-60zM78 6h-12v42h12v-42z" /> - <glyph glyph-name="triangle-left" unicode="" -d="M36 72v-72l-36 36z" /> - <glyph glyph-name="credit-card" unicode="" -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="" -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="" -d="M78 48l-30 -30v42h18zM96 48l-48 -48l-48 48l24 24h48zM48 9l39 39l-18 18h-42l-18 -18z" /> - <glyph glyph-name="broadcast" unicode="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -d="M0 36q0 10 7 17t17 7t17 -7t7 -17t-7 -17t-17 -7t-17 7t-7 17z" /> - <glyph glyph-name="primitive-square" unicode="" -d="M48 12h-48v48h48v-48z" /> - <glyph glyph-name="device-camera" unicode="" -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="" -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="" -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="" -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="" -d="M0 0v72l36 -36z" /> - <glyph glyph-name="triangle-down" unicode="" -d="M0 54h72l-36 -36z" /> - <glyph glyph-name="link" unicode="" -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="" -d="M72 30h-30v-30h-12v30h-30v12h30v30h12v-30h30v-12z" /> - <glyph glyph-name="three-bars" unicode="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -d="M36 36l-24 -18v12h-12v12h12v12z" /> - <glyph glyph-name="milestone" unicode="" -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="" -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="" -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="" -d="M45 36l-30 -30l-9 9l22 21l-22 21l9 9z" /> - <glyph glyph-name="bookmark" unicode="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -d="M69 36h15v-12h-20l-10 9l-22 -31l-5 33l-5 -11h-22v12h14l19 38l7 -41l13 19z" /> - <glyph glyph-name="sync" unicode="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -d="M18 54l18 -24h-12v-12h-12v12h-12z" /> - <glyph glyph-name="arrow-small-down" unicode="" -d="M24 42h12l-18 -24l-18 24h12v12h12v-12z" /> - <glyph glyph-name="arrow-small-left" unicode="" -d="M24 42h12v-12h-12v-12l-24 18l24 18v-12z" /> - <glyph glyph-name="chevron-up" unicode="" -d="M60 24l-9 -9l-21 23l-21 -23l-9 9l30 30z" /> - <glyph glyph-name="chevron-down" unicode="" -d="M30 18l-30 30l9 9l21 -23l21 23l9 -9z" /> - <glyph glyph-name="chevron-left" unicode="" -d="M33 66l9 -9l-22 -21l22 -21l-9 -9l-30 30z" /> - <glyph glyph-name="triangle-up" unicode="" -d="M72 18h-72l36 36z" /> - <glyph glyph-name="git-compare" unicode="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -d="M0 42h48v-12h-48v12z" /> - <glyph glyph-name="fold" unicode="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -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="" -d="M48 60v-6h-48v6h48zM0 36v6h48v-6h-48zM0 18v6h48v-6h-48z" /> - <glyph glyph-name="plus-small" unicode="" -d="M24 42h18v-6h-18v-18h-6v18h-18v6h18v18h6v-18z" /> - <glyph glyph-name="reply" unicode="" -d="M36 63q20 -2 34 -16.5t14 -43.5q-16 36 -48 36v-21l-33 33l33 33v-21z" /> - <glyph glyph-name="device-desktop" unicode="" -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 ff0dda18470bed62d7090c8dd6762dba05e098c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43920 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 L-YzJe4$S!<Atr^d diff --git a/public/vendor/assets/octicons/octicons.woff b/public/vendor/assets/octicons/octicons.woff deleted file mode 100644 index 01aa43d7756c645e161347d3573af41a7d893087..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24004 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 RgUe>t6gCDI7Xa&RB`>?C>4N|O diff --git a/public/vendor/assets/octicons/octicons.woff2 b/public/vendor/assets/octicons/octicons.woff2 deleted file mode 100644 index 69e7b2a4044aab1229fb72eee8379df10f82e4cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20248 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 diff --git a/templates/admin/org/list.tmpl b/templates/admin/org/list.tmpl index 26f91faa743..fc512f2ad92 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 793d9c620eb..f946b8a461b 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 440dd3e5e28..c9ae07f6329 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 4219e33775f..51a021d0e59 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 3bd52645e21..54334259721 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 4e2bfc9fd9a..6980622de18 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 fec304cc917..2dbfac5a2af 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 32a36931c70..1929eb296cc 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 6616e3c870b..5daea544fe8 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 806682aca90..2dc93dbf8d1 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> {{$.i18n.Tr "org.people"}} + {{svg "octicon-organization" 16}} {{$.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> {{$.i18n.Tr "org.teams"}} + {{svg "octicon-jersey" 16}} {{$.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 0aa575707ab..46c590342bb 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 03aadf97b83..81cfcf51e6c 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 3b0ee09b17e..729126b7b9c 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 1a8f1083319..95329a2be33 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> {{$.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> {{$.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> {{$.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> {{$.i18n.Tr "org.lower_repositories"}}</a> +</div> diff --git a/templates/org/team/repositories.tmpl b/templates/org/team/repositories.tmpl index 66af5195b00..e81ff889eb9 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 75c5ce756d4..ee612069b54 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 87141811407..9d4a4690289 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 e7751714f47..f1dd63a2503 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 8c3167bca7f..c11a841b2d6 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 483f8d38eb8..0a906d1f181 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 a24360795eb..26a14eb6ffb 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}} ZIP</a> + <a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.DefaultBranch}}.tar.gz">{{svg "octicon-file-zip" 16}} 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}} ZIP</a> + <a class="item" href="{{$.RepoLink}}/archive/{{EscapePound .Name}}.tar.gz">{{svg "octicon-file-zip" 16}} 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 b7f4c912128..28aa14abea0 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 5b19523cf2a..e8477ed985f 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 32301a038a3..3b4c39524de 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 0e53936f0ae..da2a1349947 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 5f0cd30bb7b..ad5e3b1b105 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 15ba387dca0..0b5c7a0564a 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 822b1e54f67..0bcd5d20283 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 50a51c44acc..e98823953c7 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 fcc511af75e..33544fd0322 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 1915e9be21b..35fe1a910da 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 d0ba1becc80..3eac405aa62 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 23fdc8bafc1..f1ca5b756fc 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 07c01fe5425..d6965d6fb99 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 b3757b2764b..c92feb5a789 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 19989bbe061..2397cb1b889 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}} ZIP</a> + <a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.BranchName}}.tar.gz">{{svg "octicon-file-zip" 16}} 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 8758be4ae0a..a584152d61f 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 32a5c2a4ef1..4719c8f1fb2 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 ca6fa72b983..0b618daaa9d 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 fb0609601ca..fdde0ad6b4e 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}} - + <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 ef5eece770d..e33124e66e9 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 470139d7f30..524b849c144 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 9e1dc3cc875..543f313f0ab 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 a97f5d85da4..17bf9bb9ed8 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 9c99f44ba80..2e9d8a32ba1 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 32c744515c0..0d98f08e69c 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 4d571736171..a9a4035594f 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 11bede37134..21ebf62129c 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 e3f39e8ad2d..b54751a4011 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 71cf697495c..eb3b0432384 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}} ZIP</a> + <a href="{{$.RepoLink}}/archive/{{.TagName | EscapePound}}.tar.gz">{{svg "octicon-file-zip" 16}} 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 01af6edc125..c45c5b20bf7 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 f6234f94a00..8c6e6461ad8 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 57477b37a8a..2d228597e1b 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 2af66780f9a..99a38cb800b 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 f43f9479a25..cde718d0cc5 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> {{.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> {{.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 18db0215a5b..1057cfa9452 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 8a5f6e16584..4830fb2542b 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 b4c65f78302..86045f433f0 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 577f3577203..53c01c168b9 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 d1784564dc5..5813b749141 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 96128fb2af0..51d8d26c307 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 cd7f15a710f..9bf05604275 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 f95076272ec..f1cf198dee6 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 3ba0eeec8d6..3d4fc14cbb9 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 61903423f39..01e86279447 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 13d3a6227f3..019bd1ea45a 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 0341e8067b1..d8de0fcb77c 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 f775ac94292..f160deedbd5 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 27a0a76bc44..7ebe28195a2 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 7c4b1da0c78..fe92cad5597 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 c8cc8b09df2..dfb94560e56 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 98b99c6430e..2a4226e9236 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 1ebd20c8b24..7afb975bbc5 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> {{.i18n.Tr "new_org"}} + {{svg "octicon-plus" 16}} {{.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> {{.i18n.Tr "activities"}} + {{svg "octicon-rss" 16}} {{.i18n.Tr "activities"}} </a> <a class="{{if .PageIsIssues}}active{{end}} item" href="{{AppSubUrl}}/org/{{.ContextUser.Name}}/issues"> - <i class="octicon octicon-issue-opened"></i> {{.i18n.Tr "issues"}} + {{svg "octicon-issue-opened" 16}} {{.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> {{.i18n.Tr "pull_requests"}} + {{svg "octicon-git-pull-request" 16}} {{.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> {{.i18n.Tr "milestones"}} + {{svg "octicon-milestone" 16}} {{.i18n.Tr "milestones"}} </a> {{end}} <div class="item"> diff --git a/templates/user/notification/notification.tmpl b/templates/user/notification/notification.tmpl index beeac0181e3..c4f744a2917 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 101a2e7d453..945cc90f0d3 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 dcb5770acc5..59608a8f16b 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 08b2ca71952..4131350cb09 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 0a4afbfb635..3682d3237b4 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 e954472ff94..f5c18d760ea 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 efb2c41c5b7..d28f067fdde 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 a3a918f0b38..73804d3472c 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 01477a96397..74774c458ae 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 992cff2a33a..2cd12fc816e 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 d34564f49dd..8bf47ede797 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 ae0d1b05cd3..877709f991b 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 f21fb744abd..daf4e7dc0ed 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 c84a2c89914..5d195774ddc 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 d1851d5d88c..9627ba79142 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 71239ffc3ed..ab0d3b61b98 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 ad9adc70e07..e9a25468961 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 53fd76f0983..90390239a15 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 7a84c7d636f..bd2449ba1e6 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 00000000000..b17b9a8b329 --- /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 52c59464d82..2bec3489e7e 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 1b93024329f..12eb8cf8e5e 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 bd8033e302b..0d2a1a4e98f 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 08926bf58a1..c3d3ad88e0d 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,