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>
tokarchuk/v1.17
John Olheiser 5 years ago committed by GitHub
parent e704f7fae7
commit 86fdba177a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      .gitignore
  2. 2
      go.mod
  3. 4
      go.sum
  4. 12
      integrations/repo_test.go
  5. 2
      modules/base/tool.go
  6. 3
      modules/templates/helper.go
  7. 632
      package-lock.json
  8. 4
      package.json
  9. 21
      public/vendor/assets/octicons/LICENSE
  10. BIN
      public/vendor/assets/octicons/octicons.eot
  11. 1
      public/vendor/assets/octicons/octicons.min.css
  12. 429
      public/vendor/assets/octicons/octicons.svg
  13. BIN
      public/vendor/assets/octicons/octicons.ttf
  14. BIN
      public/vendor/assets/octicons/octicons.woff
  15. BIN
      public/vendor/assets/octicons/octicons.woff2
  16. 2
      templates/admin/org/list.tmpl
  17. 2
      templates/admin/repo/list.tmpl
  18. 4
      templates/base/head.tmpl
  19. 28
      templates/base/head_navbar.tmpl
  20. 8
      templates/explore/navbar.tmpl
  21. 18
      templates/explore/organizations.tmpl
  22. 12
      templates/explore/repo_list.tmpl
  23. 16
      templates/explore/users.tmpl
  24. 8
      templates/home.tmpl
  25. 4
      templates/org/header.tmpl
  26. 12
      templates/org/home.tmpl
  27. 10
      templates/org/member/members.tmpl
  28. 2
      templates/org/settings/delete.tmpl
  29. 6
      templates/org/team/navbar.tmpl
  30. 10
      templates/org/team/repositories.tmpl
  31. 2
      templates/org/team/sidebar.tmpl
  32. 2
      templates/org/team/teams.tmpl
  33. 3
      templates/pwa/serviceworker_js.tmpl
  34. 20
      templates/repo/activity.tmpl
  35. 8
      templates/repo/blame.tmpl
  36. 26
      templates/repo/branch/list.tmpl
  37. 6
      templates/repo/branch_dropdown.tmpl
  38. 2
      templates/repo/commit_page.tmpl
  39. 2
      templates/repo/commits.tmpl
  40. 4
      templates/repo/commits_table.tmpl
  41. 6
      templates/repo/diff/blob_excerpt.tmpl
  42. 2
      templates/repo/diff/box.tmpl
  43. 2
      templates/repo/diff/comment_form.tmpl
  44. 2
      templates/repo/diff/compare.tmpl
  45. 2
      templates/repo/diff/section_unified.tmpl
  46. 6
      templates/repo/editor/commit_form.tmpl
  47. 8
      templates/repo/editor/edit.tmpl
  48. 2
      templates/repo/editor/upload.tmpl
  49. 2
      templates/repo/empty.tmpl
  50. 57
      templates/repo/header.tmpl
  51. 6
      templates/repo/home.tmpl
  52. 4
      templates/repo/issue/branch_selector_field.tmpl
  53. 8
      templates/repo/issue/labels.tmpl
  54. 26
      templates/repo/issue/list.tmpl
  55. 30
      templates/repo/issue/milestone_issues.tmpl
  56. 24
      templates/repo/issue/milestones.tmpl
  57. 14
      templates/repo/issue/new_form.tmpl
  58. 4
      templates/repo/issue/view_content/add_reaction.tmpl
  59. 2
      templates/repo/issue/view_content/attachments.tmpl
  60. 64
      templates/repo/issue/view_content/comments.tmpl
  61. 46
      templates/repo/issue/view_content/pull.tmpl
  62. 32
      templates/repo/issue/view_content/sidebar.tmpl
  63. 10
      templates/repo/issue/view_title.tmpl
  64. 6
      templates/repo/pulls/tab_menu.tmpl
  65. 12
      templates/repo/release/list.tmpl
  66. 2
      templates/repo/release/new.tmpl
  67. 4
      templates/repo/settings/collaboration.tmpl
  68. 4
      templates/repo/settings/deploy_keys.tmpl
  69. 2
      templates/repo/settings/githooks.tmpl
  70. 6
      templates/repo/settings/lfs.tmpl
  71. 4
      templates/repo/settings/lfs_file_find.tmpl
  72. 8
      templates/repo/settings/lfs_locks.tmpl
  73. 6
      templates/repo/settings/protected_branch.tmpl
  74. 4
      templates/repo/settings/webhook/history.tmpl
  75. 6
      templates/repo/settings/webhook/list.tmpl
  76. 6
      templates/repo/sub_menu.tmpl
  77. 6
      templates/repo/user_cards.tmpl
  78. 8
      templates/repo/view_file.tmpl
  79. 8
      templates/repo/view_list.tmpl
  80. 2
      templates/repo/wiki/pages.tmpl
  81. 2
      templates/repo/wiki/revision.tmpl
  82. 2
      templates/repo/wiki/start.tmpl
  83. 2
      templates/repo/wiki/view.tmpl
  84. 8
      templates/user/dashboard/dashboard.tmpl
  85. 2
      templates/user/dashboard/feeds.tmpl
  86. 18
      templates/user/dashboard/issues.tmpl
  87. 24
      templates/user/dashboard/milestones.tmpl
  88. 10
      templates/user/dashboard/navbar.tmpl
  89. 20
      templates/user/notification/notification.tmpl
  90. 24
      templates/user/profile.tmpl
  91. 2
      templates/user/settings/account.tmpl
  92. 2
      templates/user/settings/applications.tmpl
  93. 2
      templates/user/settings/keys_gpg.tmpl
  94. 4
      templates/user/settings/keys_ssh.tmpl
  95. 106
      templates/user/settings/repos.tmpl
  96. 1
      vendor/golang.org/x/net/html/const.go
  97. 1
      vendor/golang.org/x/net/html/foreign.go
  98. 298
      vendor/golang.org/x/net/html/parse.go
  99. 31
      vendor/golang.org/x/net/html/render.go
  100. 3
      vendor/golang.org/x/net/html/token.go
  101. Some files were not shown because too many files have changed in this diff Show More

1
.gitignore vendored

@ -73,6 +73,7 @@ coverage.all
/public/js
/public/css
/public/fomantic
/public/img/svg
# Snapcraft
snap/.snapcraft/

@ -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

@ -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=

@ -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

@ -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

@ -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))
},
}}
}

632
package-lock.json generated

@ -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",

@ -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",

@ -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.

Binary file not shown.

File diff suppressed because one or more lines are too long

@ -1,429 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<metadata>
Created by FontForge 20150913 at Mon Jul 11 12:02:11 2016
By Aaron Shekey
</metadata>
<defs>
<font id="octicons" horiz-adv-x="96" >
<font-face
font-family="octicons"
font-weight="400"
font-stretch="normal"
units-per-em="96"
panose-1="2 0 5 9 0 0 0 0 0 0"
ascent="84"
descent="-12"
bbox="-0.5 -12.5 96.5 84.5"
underline-thickness="4"
underline-position="-14"
unicode-range="U+2665-F27C"
/>
<missing-glyph
d="M3 0v64h24v-64h-24zM6 3h18v58h-18v-58z" />
<glyph glyph-name=".notdef"
d="M3 0v64h24v-64h-24zM6 3h18v58h-18v-58z" />
<glyph glyph-name=".null" horiz-adv-x="0"
/>
<glyph glyph-name="nonmarkingreturn"
/>
<glyph glyph-name="heart" unicode="&#x2665;"
d="M67.5 66.5q4.5 -5.5 4.5 -12.5q0 -8 -4 -16q-5 -10 -32 -32q-27 21 -32 32q-4 8 -4 16q0 7 4.5 12.5t13.5 5.5q8 0 13 -6q5 -5 5 -6q0 1 5 6q5 6 13 6q9 0 13.5 -5.5z" />
<glyph glyph-name="zap" unicode="&#x26a1;"
d="M60 42l-54 -54l18 42h-24l54 54l-18 -42h24z" />
<glyph glyph-name="light-bulb" unicode="&#xf000;"
d="M39 84q14 0 23.5 -8.5t9.5 -21.5q0 -8 -6 -18q-11 -18 -12 -24v-6h-30v6q-1 6 -12 24q-6 10 -6 18q0 13 9.5 21.5t23.5 8.5zM61 39q5 9 5 15q0 10 -8 17t-19 7t-19 -7t-8 -17q0 -6 5 -15q2 -3 4 -7q8 -12 9 -19v-1h18v1q1 7 9 19q2 4 4 7zM24 0h30q-2 -12 -15 -12t-15 12
z" />
<glyph glyph-name="repo" unicode="&#xf001;"
d="M24 30h-6v6h6v-6zM24 48v-6h-6v6h6zM24 60v-6h-6v6h6zM24 72v-6h-6v6h6zM72 78v-72q0 -6 -6 -6h-30v-12l-9 9l-9 -9v12h-12q-6 0 -6 6v72q0 6 6 6h60q6 0 6 -6zM66 18h-60v-12h12v6h18v-6h30v12zM66 78h-54v-54h54v54z" />
<glyph glyph-name="repo-forked" unicode="&#xf002;"
d="M48 78q12 0 12 -12q0 -7 -6 -10v-11l-18 -18v-11q6 -3 6 -10q0 -12 -12 -12t-12 12q0 7 6 10v11l-18 18v11q-6 3 -6 10q0 12 12 12t12 -12q0 -7 -6 -10v-8l12 -12l12 12v8q-6 3 -6 10q0 12 12 12zM12 59q7 0 7 7t-7 7t-7 -7t7 -7zM30 -1q7 0 7 7t-7 7t-7 -7t7 -7zM48 59
q7 0 7 7t-7 7t-7 -7t7 -7z" />
<glyph glyph-name="repo-push" unicode="&#xf005;"
d="M24 66h-6v6h6v-6zM18 54v6h6v-6h-6zM42 54l18 -24h-12v-42h-12v42h-12zM66 84q6 0 6 -6v-72q0 -6 -6 -6h-12v6h12v12h-12v6h12v54h-54v-54h18v-6h-24v-12h24v-6h-24q-6 0 -6 6v72q0 6 6 6h60z" />
<glyph glyph-name="repo-pull" unicode="&#xf006;"
d="M78 36v12h-36v12h36v12l18 -18zM24 72v-6h-6v6h6zM66 42h6v-36q0 -6 -6 -6h-30v-12l-9 9l-9 -9v12h-12q-6 0 -6 6v72q0 6 6 6h60q6 0 6 -6v-12h-6v12h-54v-54h54v18zM66 18h-60v-12h12v6h18v-6h30v12zM24 48v-6h-6v6h6zM24 60v-6h-6v6h6zM18 30v6h6v-6h-6z" />
<glyph glyph-name="book" unicode="&#xf007;"
d="M18 54h24v-6h-24v6zM18 36v6h24v-6h-24zM18 24v6h24v-6h-24zM84 54v-6h-24v6h24zM84 42v-6h-24v6h24zM84 30v-6h-24v6h24zM96 66v-54q0 -6 -6 -6h-33l-6 -6l-6 6h-33q-6 0 -6 6v54q0 6 6 6h33l6 -6l6 6h33q6 0 6 -6zM48 63l-3 3h-33v-54h36v51zM90 66h-33l-3 -3v-51h36
v54z" />
<glyph glyph-name="octoface" unicode="&#xf008;"
d="M88 52q8 -8 8 -20q0 -15 -6.5 -23.5t-16.5 -11.5t-25 -3q-23 0 -35.5 8t-12.5 30q0 12 8 20q-4 9 1 20q6 2 20 -8q7 2 19 2t19 -2q4 3 7.5 4.5t6 2.5t4 1h2.5q5 -11 1 -20zM48 0q12 0 18.5 1t12 5.5t5.5 13.5q0 7 -6 12q-3 3 -7 3.5t-12 0t-11 -0.5t-8.5 0.5t-8.5 0.5
t-7 -1t-6 -3q-6 -5 -6 -12q0 -13 9 -16.5t27 -3.5zM33 30q7 0 7 -10.5t-7 -10.5t-7 10.5t7 10.5zM63 30q7 0 7 -10.5t-7 -10.5t-7 10.5t7 10.5z" />
<glyph glyph-name="git-pull-request" unicode="&#xf009;"
d="M66 16q6 -3 6 -10q0 -12 -12 -12t-12 12q0 7 6 10v38q0 2 -2 4t-4 2h-6v-12l-18 18l18 18v-12h6q7 0 12.5 -5.5t5.5 -12.5v-38zM60 -1q7 0 7 7t-7 7t-7 -7t7 -7zM24 66q0 -7 -6 -10v-40q6 -3 6 -10q0 -12 -12 -12t-12 12q0 7 6 10v40q-6 3 -6 10q0 12 12 12t12 -12zM19 6
q0 7 -7 7t-7 -7t7 -7t7 7zM12 59q7 0 7 7t-7 7t-7 -7t7 -7z" />
<glyph glyph-name="mark-github" unicode="&#xf00a;"
d="M48 84q20 0 34 -14t14 -34q0 -10 -4 -19.5t-11.5 -16t-17.5 -10.5q-3 0 -3 3v4.5v8.5q0 6 -3 9q22 2 22 24q0 7 -5 12q2 6 -1 13q-4 1 -13 -5q-6 2 -12 2t-12 -2q-4 3 -7.5 4t-4.5 1h-1q-3 -7 -1 -13q-4 -5 -4 -12q0 -22 21 -24q-2 -2 -3 -7q-9 -4 -14 4q-3 5 -7 5
q-3 0 -2.5 -1t2.5 -2q3 -2 5 -7q3 -8 16 -5v-6v-3q0 -3 -3 -3q-15 5 -24 17.5t-9 28.5q0 20 14 34t34 14z" />
<glyph glyph-name="cloud-download" unicode="&#xf00b;"
d="M54 12h12l-18 -18l-18 18h12v30h12v-30zM72 60q24 0 24 -21t-24 -21h-12v8h12q16 0 16 13t-16 13h-8v7q-3 11 -19 11q-7 0 -13 -5t-6 -11v-8h-8q-10 0 -10 -10t10 -10h18v-8h-18q-18 0 -18 18t18 18q0 9 8 16.5t19 7.5q10 0 16.5 -4t8.5 -8t2 -6z" />
<glyph glyph-name="cloud-upload" unicode="&#xf00c;"
d="M42 30h-12l18 18l18 -18h-12v-30h-12v30zM72 54q24 0 24 -21t-24 -21h-12v8h12q16 0 16 13t-16 13h-8v7q-3 11 -19 11q-7 0 -13 -5t-6 -11v-8h-8q-10 0 -10 -10t10 -10h18v-8h-18q-18 0 -18 18t18 18q0 9 8 16.5t19 7.5q10 0 16.5 -4t8.5 -8t2 -6z" />
<glyph glyph-name="keyboard" unicode="&#xf00d;"
d="M60 54h-6v6h6v-6zM18 48v-6h-6v6h6zM48 60v-6h-6v6h6zM24 60v-6h-12v6h12zM72 18v6h12v-6h-12zM48 42v6h6v-6h-6zM24 24v-6h-12v6h12zM72 60v-6h-6v6h6zM84 60v-6h-6v6h6zM72 30v18h12v-18h-12zM96 66v-54q0 -6 -6 -6h-84q-6 0 -6 6v54q0 6 6 6h84q6 0 6 -6zM90 66h-84
v-54h84v54zM36 42v6h6v-6h-6zM36 60v-6h-6v6h6zM24 42v6h6v-6h-6zM30 18v6h36v-6h-36zM60 42v6h6v-6h-6zM18 36v-6h-6v6h6zM48 36h6v-6h-6v6zM36 36h6v-6h-6v6zM30 36v-6h-6v6h6zM60 30v6h6v-6h-6z" />
<glyph glyph-name="gist" unicode="&#xf00e;"
d="M45 54l15 -15l-15 -15l-5 4l11 11l-11 11zM27 54l5 -4l-11 -11l11 -11l-5 -4l-15 15zM0 6v66q0 6 6 6h60q6 0 6 -6v-66q0 -6 -6 -6h-60q-6 0 -6 6zM6 6h60v66h-60v-66z" />
<glyph glyph-name="file-code" unicode="&#xf010;"
d="M51 78l21 -21v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM66 0v54l-18 18h-42v-72h60zM30 42l-9 -9l9 -9l-3 -6l-15 15l15 15zM45 48l15 -15l-15 -15l-3 6l9 9l-9 9z" />
<glyph glyph-name="file-text" unicode="&#xf011;"
d="M36 54h-24v6h24v-6zM12 36v6h42v-6h-42zM12 24v6h42v-6h-42zM12 12v6h42v-6h-42zM72 57v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM66 54l-18 18h-42v-72h60v54z" />
<glyph glyph-name="file-media" unicode="&#xf012;"
d="M36 54h12v-12h-12v12zM72 57v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM66 54l-18 18h-42v-66l18 30l12 -24l12 12l18 -18v48z" />
<glyph glyph-name="file-zip" unicode="&#xf013;"
d="M51 78l21 -21v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM66 0v54l-18 18h-18v-6h-6v6h-18v-72h60zM30 60v6h6v-6h-6zM24 60h6v-6h-6v6zM30 48v6h6v-6h-6zM24 48h6v-6h-6v6zM30 36v6h6v-6h-6zM24 28v8h6v-6q12 0 12 -12v-6h-24v6q0 7 6 10zM36 24h-12v-6h12v6z" />
<glyph glyph-name="file-pdf" unicode="&#xf014;"
d="M51 78l21 -21v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM6 72v-56l6 4q2 1 4 1q0 1 1 2.5t2 4t3 4.5l6 16q-1 6 -2 11q0 5 1 9q0 2 1 3t2 1h-24zM33 43v0l-6 -14t-4 -7q6 2 11.5 3.5t10.5 1.5q-3 2 -5 4q-5 5 -7 12zM66 0v0v18h-2l-8 2t-8 3q-5 -1 -9 -1q-6 -2 -9 -2
l-2 -1q-3 -1 -5 -2q-4 -8 -11 -14q-2 -2 -4 -3h1h57zM66 29v0v25l-18 18h-15q2 0 4 -1q1 -3 1 -6v-4q0 -6 -1 -12q2 -8 7 -14q3 -3 6 -4q4 0 8 1q2 -1 4 -1z" />
<glyph glyph-name="tag" unicode="&#xf015;"
d="M46 74l37 -37q4 -4 0 -8l-28 -28q-4 -4 -8 0l-37 37q-4 4 -4 10v15q0 6 4.5 10.5t10.5 4.5h15q6 0 10 -4zM14 41l37 -36l28 28l-36 37q-3 3 -7 3h-15q-10 0 -10 -10v-15q0 -4 3 -7zM18 66h12v-12h-12v12z" />
<glyph glyph-name="file-directory" unicode="&#xf016;"
d="M78 60q6 0 6 -6v-48q0 -6 -6 -6h-72q-6 0 -6 6v60q0 6 6 6h30q6 0 6 -6v-6h36zM36 60v6h-30v-6h30z" />
<glyph glyph-name="file-submodule" unicode="&#xf017;"
d="M60 42v-6h24v-30q0 -6 -6 -6h-54v42h36zM54 30v6h-24v-6h24zM78 60q6 0 6 -6v-12h-18q0 6 -6 6h-36q-6 0 -6 -6v-42h-12q-6 0 -6 6v60q0 6 6 6h30q6 0 6 -6v-6h36zM36 60v6h-30v-6h30z" />
<glyph glyph-name="person" unicode="&#xf018;"
d="M72 0q0 -6 -6 -6h-60q-6 0 -6 6v6q0 7 6 13t12 9l6 2q1 2 0 6q-6 4 -6 24q1 18 18 18t18 -18q0 -20 -6 -24v-6q24 -8 24 -24v-6z" />
<glyph glyph-name="jersey" unicode="&#xf019;"
d="M27 48h12l3 -3v-30l-3 -3h-12l-3 3v30zM36 18v24h-6v-24h6zM73.5 61.5q1.5 -12.5 10.5 -13.5v-54q0 -2 -2 -4t-4 -2h-66q-2 0 -4 2t-2 4v54q9 1 10 14q2 12 2 22h18q0 -2 2 -4t7 -2t7 2t2 4h18q0 -10 1.5 -22.5zM78 -6v48q-7 5 -10 16q-2 7 -2 20h-6q0 -7 -3 -12
q-3 -6 -12 -6t-12 6q-3 5 -3 12h-6q0 -14 -2 -22q-2 -9 -10 -14v-48h66zM51 48h12l3 -3v-30l-3 -3h-12l-3 3v30zM60 18v24h-6v-24h6z" />
<glyph glyph-name="git-commit" unicode="&#xf01f;"
d="M65 42h19v-12h-19q-5 -18 -23 -18t-23 18h-19v12h19q5 18 23 18t23 -18zM42 23q5 0 9 4t4 9t-4 9t-9 4t-9 -4t-4 -9t4 -9t9 -4z" />
<glyph glyph-name="git-branch" unicode="&#xf020;"
d="M60 54q0 -7 -6 -10q-1 -12 -8 -19t-16 -7q-3 0 -6 -1l-1.5 -1.5l-1.5 -1.5q3 -3 3 -8q0 -12 -12 -12t-12 12q0 7 6 10v40q-6 3 -6 10q0 5 3.5 8.5t8.5 3.5t8.5 -3.5t3.5 -8.5q0 -7 -6 -10v-29q4 3 12 3q5 0 8.5 3.5t3.5 8.5v2q-6 3 -6 10q0 12 12 12t12 -12zM12 73
q-7 0 -7 -7t7 -7t7 7t-7 7zM12 -1q7 0 7 7t-7 7t-7 -7t7 -7zM48 47q7 0 7 7t-7 7t-7 -7t7 -7z" />
<glyph glyph-name="git-merge" unicode="&#xf023;"
d="M60 42q12 0 12 -12t-12 -12q-7 0 -10 6q-11 0 -18.5 4t-13.5 10v-22q6 -3 6 -10q0 -12 -12 -12t-12 12q0 7 6 10v40q-6 3 -6 10q0 3 1.5 6t4.5 4.5t6 1.5q5 0 8.5 -3.5t3.5 -8.5q0 -6 -4 -9q4 -9 11 -15q8 -6 19 -6q3 6 10 6zM19 6q0 7 -7 7t-7 -7t7 -7t7 7zM12 59
q7 0 7 7t-7 7t-7 -7t7 -7zM60 23q7 0 7 7t-7 7t-7 -7t7 -7z" />
<glyph glyph-name="mirror" unicode="&#xf024;"
d="M93 56q3 -2 3 -5v-63l-45 24l-45 -24v63q0 3 3 5l42 28zM90 -3v54l-36 24v-27h-6v27l-36 -24v-54l36 19v8h6v-8zM36 42h30v12l18 -18l-18 -18v12h-30v-12l-18 18l18 18v-12z" />
<glyph glyph-name="issue-opened" unicode="&#xf026;"
d="M42 70q-14 0 -24 -10t-10 -24t10 -24t24 -10t24 10t10 24t-10 24t-24 10zM42 78q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5zM48 60v-30h-12v30h12zM48 24v-12h-12v12h12z" />
<glyph glyph-name="issue-reopened" unicode="&#xf027;"
d="M48 30h-12v30h12v-30zM36 12v12h12v-12h-12zM74 24h10v-24l-10 10q-12 -16 -32 -16q-17 0 -29.5 12.5t-12.5 29.5v6h8v-6q0 -14 10 -24t24 -10q17 0 27 13l-9 9h14zM10 48h-10v24l10 -10q12 16 32 16q17 0 29.5 -12.5t12.5 -29.5v-6h-8v6q0 14 -10 24t-24 10
q-17 0 -27 -13l9 -9h-14z" />
<glyph glyph-name="issue-closed" unicode="&#xf028;"
d="M42 24h12v-12h-12v12zM54 60v-30h-12v30h12zM63 51l9 -9l18 21l6 -6l-24 -27l-15 15zM48 2q12 0 21 7t12 18l9 9q0 -17 -12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5q20 0 33 -15l-6 -6q-10 13 -27 13q-14 0 -24 -10t-10 -24t10 -24t24 -10z" />
<glyph glyph-name="star" unicode="&#xf02a;"
d="M84 48l-22 -20l6 -28l-26 14l-26 -14l6 28l-22 20l29 4l13 26l13 -26z" />
<glyph glyph-name="comment" unicode="&#xf02b;"
d="M84 78q6 0 6 -6v-48q0 -6 -6 -6h-39l-21 -21v21h-12q-6 0 -6 6v48q0 6 6 6h72zM84 24v48h-72v-48h18v-12l12 12h42z" />
<glyph glyph-name="question" unicode="&#xf02c;"
d="M36 24h12v-12h-12v12zM60 45q0 -6 -3 -9.5t-6 -4.5l-3 -1h-12q0 6 6 6h3q3 0 3 3v6q0 3 -3 3h-6q-3 0 -3 -3v-3h-12q0 7 5.5 12.5t12.5 5.5q18 0 18 -15zM42 70q-14 0 -24 -10t-10 -24t10 -24t24 -10t24 10t10 24t-10 24t-24 10zM42 78q17 0 29.5 -12.5t12.5 -29.5
t-12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5z" />
<glyph glyph-name="alert" unicode="&#xf02d;"
d="M53 75l41 -72q2 -3 0.5 -6t-5.5 -3h-82q-4 0 -5.5 3t0.5 6l41 72q1 3 4.5 3t5.5 -3zM54 6v12h-12v-12h12zM54 24v24h-12v-24h12z" />
<glyph glyph-name="search" unicode="&#xf02e;"
d="M94 4q4 -4 0 -8q-1 -2 -3.5 -2t-4.5 2l-23 23q-10 -7 -21 -7q-15 0 -25.5 10.5t-10.5 25.5t10.5 25.5t25.5 10.5t25.5 -10.5t10.5 -25.5q0 -11 -7 -21zM42 20q12 0 20 8t8 20t-8 20t-20 8t-20 -8t-8 -20t8 -20t20 -8z" />
<glyph glyph-name="gear" unicode="&#xf02f;"
d="M84 31v1l-12 -5l-2 -6l5 -11l-7 -7l-11 5l-6 -2l-4 -12h-10l-4 12l-6 2l-11 -5l-7 7l5 11l-2 6l-12 4v10l12 4l2 6l-5 11l7 7l11 -5l6 2l4 12h10l4 -12l6 -2l11 5l7 -7l-5 -11l2 -6l12 -4v-10zM42 18q7 0 12.5 5.5t5.5 12.5t-5.5 12.5t-12.5 5.5t-12.5 -5.5t-5.5 -12.5
t5.5 -12.5t12.5 -5.5z" />
<glyph glyph-name="radio-tower" unicode="&#xf030;"
d="M29 47.5q-3 -2.5 -6 -0.5q-5 6 -5 13t5 13q1 1 3 1t3 -1q2 -3 -0.5 -6t-2.5 -7t3 -7t0 -5.5zM14 81q3 -3 0 -6q-6 -6 -6 -15t6 -15q3 -3 0 -6t-6 0q-8 9 -8 21t8 21q2 1 3.5 1t2.5 -1zM48 50q-10 0 -10 10t10 10t10 -10t-10 -10zM88 81q8 -9 8 -21t-8 -21q-2 -1 -3.5 -1
t-2.5 1q-3 3 0 6q6 6 6 15t-6 15q-3 3 0 6t6 0zM48 42q4 0 7 2l19 -50h-9l-5 6h-24l-5 -6h-9l19 50q3 -2 7 -2zM48 40l-6 -22h12zM36 6h24l-6 6h-12zM67 72.5q3 2.5 6 0.5q5 -6 5 -13t-5 -13q-1 -1 -3 -1t-3 1q-2 3 0.5 6t2.5 7t-3 7t0 5.5z" />
<glyph glyph-name="tools" unicode="&#xf031;"
d="M27 40q-12 -4 -21 6q-8 8 -5 20l11 -12l12 3l3 12l-12 12q12 3 20 -5.5t5 -20.5l3 -3l-10 -11l5 -5l-3 -4zM66 29l22 -24q3 -3 3 -7t-3 -7t-7 -3t-6 3l-23 24zM96 69l-43 -45l-6 6l-26 -27l-3 -6l-13 -9l-2 2l8 14l6 3l26 27l-5 5l43 45z" />
<glyph glyph-name="sign-out" unicode="&#xf032;"
d="M72 30v12h-24v12h24v12l24 -18zM60 12v24h6v-24q0 -6 -6 -6h-24v-18l-33 16q-3 2 -3 6v68q0 6 6 6h54q6 0 6 -6v-18h-6v18h-48l24 -12v-54h24z" />
<glyph glyph-name="rocket" unicode="&#xf033;"
d="M73 61q2 -2 5 -3.5t6 -2.5q-3 -6 -6 -10q-4 -5 -9 -10q-2 -2 -15 -11v-18l-18 -18v18l12 12q-2 -1 -6.5 -2.5l-7.5 -2.5l-4 -1l-6 6q-1 1 6 18l-12 -12h-18l18 18h18q10 14 11 15q5 5 10 8.5t10 6.5l2 -6q2 -3 4 -5zM96 84q-1 -2 -2 -6q-2 -7 -6 -16q-7 0 -10.5 4
t-3.5 10q10 5 16 6l6 2v0z" />
<glyph glyph-name="rss" unicode="&#xf034;"
d="M12 6h-12v12q12 0 12 -12zM0 66q25 0 42.5 -17.5t17.5 -42.5h-6q0 22 -16 38t-38 16v6zM0 42q15 0 25.5 -10.5t10.5 -25.5h-6q0 12 -9 21t-21 9v6z" />
<glyph glyph-name="clippy" unicode="&#xf035;"
d="M12 6h24v-6h-24v6zM42 42v-6h-30v6h30zM54 24h30v-12h-30v-12l-18 18l18 18v-12zM27 30v-6h-15v6h15zM12 12v6h15v-6h-15zM66 6h6v-12q0 -3 -2 -4.5t-4 -1.5h-60q-6 0 -6 6v66q0 6 6 6h18q0 12 12 12t12 -12h18q6 0 6 -6v-30h-6v18h-60v-54h60v12zM12 54h48q0 6 -6 6h-6
q-6 0 -6 6t-6 6t-6 -6t-6 -6h-6q-6 0 -6 -6z" />
<glyph glyph-name="sign-in" unicode="&#xf036;"
d="M42 44v-32h24v24h6v-24q0 -6 -6 -6h-24v-18l-33 16q-3 2 -3 6v68q0 6 6 6h54q6 0 6 -6v-18h-6v18h-48l24 -12v-14l18 14v-12h24v-12h-24v-12z" />
<glyph glyph-name="organization" unicode="&#xf037;"
d="M96 6q0 -6 -6 -6h-42q-6 0 -6 6h-36q-6 0 -6 6q0 7 4.5 13t9.5 9l4 2q1 2 0 6q-6 5 -6 18q0 18 15 18t15 -18q0 -13 -6 -18v-6q9 -4 15 -13l9 7q1 2 0 6l-1 1q-5 4 -5 17q0 18 15 18t15 -18q0 -7 -0.5 -10.5t-1.5 -4.5t-4 -3v-6q18 -8 18 -24v0z" />
<glyph glyph-name="device-mobile" unicode="&#xf038;"
d="M54 84q6 0 6 -6v-84q0 -6 -6 -6h-48q-6 0 -6 6v84q0 6 6 6h48zM30 -8q8 0 8 8t-8 8t-8 -8t8 -8zM54 12v60h-48v-60h48z" />
<glyph glyph-name="unfold" unicode="&#xf039;"
d="M69 39l15 -15q0 -6 -6 -6h-24v6h21l-12 12h-42l-12 -12h21v-6h-24q-6 0 -6 6l15 15l-15 15q0 6 6 6h24v-6h-21l12 -12h42l12 12h-21v6h24q6 0 6 -6zM36 48v18h-12l18 18l18 -18h-12v-18h-12zM48 30v-18h12l-18 -18l-18 18h12v18h12z" />
<glyph glyph-name="check" unicode="&#xf03a;"
d="M72 54l-48 -48l-24 24l9 9l15 -15l39 39z" />
<glyph glyph-name="mail" unicode="&#xf03b;"
d="M0 60q0 6 6 6h72q6 0 6 -6v-48q0 -6 -6 -6h-72q-6 0 -6 6v48zM78 60h-72l36 -30zM6 51v-36l24 18zM12 12h60l-21 18l-9 -9l-9 9zM78 15v36l-24 -18z" />
<glyph glyph-name="mail-read" unicode="&#xf03c;"
d="M36 54h-12v6h12v-6zM54 48v-6h-30v6h30zM84 51v-51q0 -6 -6 -6h-72q-6 0 -6 6v51q0 3 3 5l9 7v3q0 6 6 6h7l17 12l17 -12h7q6 0 6 -6v-3l9 -7q3 -2 3 -5zM18 39l24 -15l24 15v27h-48v-27zM6 3l27 18l-27 18v-36zM72 0l-30 18l-30 -18h60zM78 39l-27 -18l27 -18v36z" />
<glyph glyph-name="arrow-up" unicode="&#xf03d;"
d="M30 66l30 -36h-18v-24h-24v24h-18z" />
<glyph glyph-name="arrow-right" unicode="&#xf03e;"
d="M60 36l-36 -30v18h-24v24h24v18z" />
<glyph glyph-name="arrow-down" unicode="&#xf03f;"
d="M42 42h18l-30 -36l-30 36h18v24h24v-24z" />
<glyph glyph-name="arrow-left" unicode="&#xf040;"
d="M36 66v-18h24v-24h-24v-18l-36 30z" />
<glyph glyph-name="pin" unicode="&#xf041;"
d="M60 77q0 2 2 2.5t3 -0.5l26 -26q1 -1 0.5 -3t-2.5 -2h-5l-6 3l-18 -27v-23q0 -2 -2 -2.5t-3 0.5l-19 19l-30 -24l24 30l-19 19q-1 1 -0.5 3t2.5 2h23l27 18l-3 6v5z" />
<glyph glyph-name="gift" unicode="&#xf042;"
d="M78 60q6 0 6 -6v-18h-6v-30q0 -6 -6 -6h-54q-6 0 -6 6v30h-6v18q0 6 6 6h8q-2 3 -2 5q-1 7 3 10q3 3 9 3q5 0 9 -3t6 -8q2 5 6 8t9 3h1q5 0 8 -3t3 -10q0 -2 -2 -5h8zM49 65l-2 -5h17q3 4 3 6q0 4 -2 6q-1 1 -4 1h-1q-3 0 -6 -2t-5 -6zM25 72q-2 -2 -2 -6q0 -2 3 -6h17
l-2 5q-2 4 -5 6t-6 2q-4 0 -5 -1zM42 6v30h-24v-30h24zM42 42v12h-30v-12h30zM72 6v30h-24v-30h24zM78 42v12h-30v-12h30z" />
<glyph glyph-name="graph" unicode="&#xf043;"
d="M96 0v-6h-96v90h6v-84h90zM30 6h-12v30h12v-30zM54 6h-12v60h12v-60zM78 6h-12v42h12v-42z" />
<glyph glyph-name="triangle-left" unicode="&#xf044;"
d="M36 72v-72l-36 36z" />
<glyph glyph-name="credit-card" unicode="&#xf045;"
d="M72 30h-60v6h60v-6zM96 66v-54q0 -6 -6 -6h-84q-6 0 -6 6v54q0 6 6 6h84q6 0 6 -6zM90 48h-84v-36h84v36zM90 66h-84v-6h84v6zM36 24v-6h-24v6h24z" />
<glyph glyph-name="clock" unicode="&#xf046;"
d="M48 36h18v-12h-24q-6 0 -6 6v30h12v-24zM42 70q-14 0 -24 -10t-10 -24t10 -24t24 -10t24 10t10 24t-10 24t-24 10zM42 78q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5z" />
<glyph glyph-name="ruby" unicode="&#xf047;"
d="M78 48l-30 -30v42h18zM96 48l-48 -48l-48 48l24 24h48zM48 9l39 39l-18 18h-42l-18 -18z" />
<glyph glyph-name="broadcast" unicode="&#xf048;"
d="M54 30q6 0 6 -6v-12h-6v-18q0 -6 -6 -6h-6q-6 0 -6 6v18h-6v12q0 6 6 6h6q-6 0 -6 6v6q0 6 6 6h6q6 0 6 -6v-6q0 -6 -6 -6h6zM42 42v-6h6v6h-6zM54 18v6h-18v-6h6v-24h6v24h6zM67 39q0 9 -6.5 15.5t-15.5 6.5t-15.5 -6.5t-6.5 -15.5q0 -3 1 -5v-12q-6 8 -6 17q0 11 8 19
t19 8q7 0 13.5 -3.5t10 -10t3.5 -13.5q0 -9 -6 -17v12q1 3 1 5zM90 39q0 -27 -24 -40v7q19 11 19 33q0 16 -12 28t-28 12t-28 -12t-12 -28q0 -22 19 -33v-7q-24 13 -24 40q0 19 13 32t32 13t32 -13t13 -32z" />
<glyph glyph-name="key" unicode="&#xf049;"
d="M77 71q7 -7 7 -17t-7 -17t-17 -7q-3 0 -5 1l-7 -7h-12v-6h-6v-6h-6v-6l-6 -6h-12l-6 6v6l37 37q-1 2 -1 5q0 10 7 17t17 7t17 -7zM66 52q8 0 8 8t-8 8t-8 -8t8 -8z" />
<glyph glyph-name="repo-force-push" unicode="&#xf04a;"
d="M60 30h-12v-42h-12v42h-12l14 18h-14l18 24l18 -24h-14zM66 84q6 0 6 -6v-72q0 -6 -6 -6h-12v6h12v12h-12v6h12v54h-54v-54h18v-6h-24v-12h24v-6h-24q-6 0 -6 6v72q0 6 6 6h60z" />
<glyph glyph-name="repo-clone" unicode="&#xf04c;"
d="M90 84q6 0 6 -6v-36q0 -6 -6 -6h-18v-6h-6v6h-6q-6 0 -6 6v42h36zM66 42v6h-6v-6h6zM90 42v6h-18v-6h18zM90 54v24h-24v-24h24zM24 54h-6v6h6v-6zM24 66h-6v6h6v-6zM12 78v-54h60v-18q0 -6 -6 -6h-30v-12l-9 9l-9 -9v12h-12q-6 0 -6 6v72q0 6 6 6h42v-6h-36zM66 18h-60
v-12h12v6h18v-6h30v12zM18 36h6v-6h-6v6zM24 42h-6v6h6v-6z" />
<glyph glyph-name="diff" unicode="&#xf04d;"
d="M36 42h12v-6h-12v-12h-6v12h-12v6h12v12h6v-12zM18 6v6h30v-6h-30zM45 72l21 -21v-57q0 -6 -6 -6h-54q-6 0 -6 6v72q0 6 6 6h39zM60 48l-18 18h-36v-72h54v54zM51 84l27 -27v-51h-6v48l-24 24h-30v6h33z" />
<glyph glyph-name="eye" unicode="&#xf04e;"
d="M48 72q9 0 17 -3.5t13 -9t9.5 -11t6.5 -8.5l2 -4q-2 -4 -6 -10t-16 -16t-26 -10q-8 0 -16 3.5t-13.5 9t-10 11t-6.5 8.5l-2 4q2 4 6 10t16.5 16t25.5 10zM48 12q10 0 17 7t7 17t-7 17t-17 7t-17 -7t-7 -17t7 -17t17 -7zM60 36q0 -12 -12 -12t-12 12t12 12t12 -12z" />
<glyph glyph-name="comment-discussion" unicode="&#xf04f;"
d="M90 78q6 0 6 -6v-36q0 -6 -6 -6h-6v-18l-18 18h-6v-12q0 -6 -6 -6h-24l-18 -18v18h-6q-6 0 -6 6v36q0 6 6 6h24v12q0 6 6 6h54zM54 18v12h-18q-6 0 -6 6v18h-24v-36h12v-9l9 9h27zM90 36v36h-54v-36h33l9 -9v9h12z" />
<glyph glyph-name="mail-reply" unicode="&#xf051;"
d="M36 69v-18q15 -2 25.5 -13.5t10.5 -30.5q-3 13 -14.5 19.5t-21.5 6.5v-18l-36 27z" />
<glyph glyph-name="primitive-dot" unicode="&#xf052;"
d="M0 36q0 10 7 17t17 7t17 -7t7 -17t-7 -17t-17 -7t-17 7t-7 17z" />
<glyph glyph-name="primitive-square" unicode="&#xf053;"
d="M48 12h-48v48h48v-48z" />
<glyph glyph-name="device-camera" unicode="&#xf056;"
d="M90 66q6 0 6 -6v-54q0 -6 -6 -6h-84q-6 0 -6 6v54q0 6 6 6q0 6 6 6h24q6 0 6 -6h48zM36 54v6h-24v-6h24zM63 12q9 0 15 6t6 15t-6 15t-15 6t-15 -6t-6 -15t6 -15t15 -6zM78 33q0 -15 -15 -15q-6 0 -10.5 4.5t-4.5 10.5t4.5 10.5t10.5 4.5t10.5 -4.5t4.5 -10.5z" />
<glyph glyph-name="device-camera-video" unicode="&#xf057;"
d="M91 71q2 2 3.5 1t1.5 -3v-60q0 -2 -1.5 -3t-3.5 1l-31 21v-16q0 -6 -6 -6h-48q-6 0 -6 6v54q0 6 6 6h48q6 0 6 -6v-16z" />
<glyph glyph-name="pencil" unicode="&#xf058;"
d="M0 12l48 48l18 -18l-48 -48h-18v18zM18 0v6h-6v6h-6v-12h12zM80 56l-8 -8l-18 18l8 8q4 4 8 0l10 -10q4 -4 0 -8z" />
<glyph glyph-name="info" unicode="&#xf059;"
d="M38 50q-2 2 -2 4.5t2 4t4.5 1.5t4 -2t1.5 -4.5t-2 -3.5q-2 -2 -4 -2t-4 2zM48 36v-18h6q0 -2 -2 -4t-4 -2h-6q-2 0 -4 2t-2 4v18h-6q0 2 2 4t4 2h6q2 0 4 -2t2 -4zM42 70q-14 0 -24 -10t-10 -24t10 -24t24 -10t24 10t10 24t-10 24t-24 10zM42 78q17 0 29.5 -12.5
t12.5 -29.5t-12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 30t12.5 29.5t29.5 12z" />
<glyph glyph-name="triangle-right" unicode="&#xf05a;"
d="M0 0v72l36 -36z" />
<glyph glyph-name="triangle-down" unicode="&#xf05b;"
d="M0 54h72l-36 -36z" />
<glyph glyph-name="link" unicode="&#xf05c;"
d="M24 30h6v-6h-6q-7 0 -12.5 6.5t-5.5 14.5t5.5 14.5t12.5 6.5h24q7 0 12.5 -6.5t5.5 -14.5q0 -14 -12 -19v6q6 5 6 13q0 6 -4 10.5t-8 4.5h-24q-4 0 -8 -4.5t-4 -10.5t3.5 -10.5t8.5 -4.5zM78 48q7 0 12.5 -6.5t5.5 -14.5t-5.5 -14.5t-12.5 -6.5h-24q-7 0 -12.5 6.5
t-5.5 14.5q0 14 12 19v-6q-6 -5 -6 -13q0 -6 4 -10.5t8 -4.5h24q4 0 8 4.5t4 10.5t-3.5 10.5t-8.5 4.5h-6v6h6z" />
<glyph glyph-name="plus" unicode="&#xf05d;"
d="M72 30h-30v-30h-12v30h-30v12h30v30h12v-30h30v-12z" />
<glyph glyph-name="three-bars" unicode="&#xf05e;"
d="M68 30h-64q-4 0 -4 6t4 6h64q4 0 4 -6t-4 -6zM68 54h-64q-4 0 -4 6t4 6h64q4 0 4 -6t-4 -6zM4 18h64q4 0 4 -6t-4 -6h-64q-4 0 -4 6t4 6z" />
<glyph glyph-name="code" unicode="&#xf05f;"
d="M57 66l27 -30l-27 -30l-9 9l21 21l-21 21zM27 66l9 -9l-21 -21l21 -21l-9 -9l-27 30z" />
<glyph glyph-name="location" unicode="&#xf060;"
d="M36 84q15 0 25.5 -9.5t10.5 -23.5q0 -12 -9 -28t-18 -25l-9 -10q-36 36 -36 63q0 14 10.5 23.5t25.5 9.5zM36 -3q30 32 30 54q0 11 -8.5 19t-21.5 8q-12 0 -21 -8t-9 -19q0 -22 30 -54zM48 51q0 -12 -12 -12t-12 12t12 12t12 -12z" />
<glyph glyph-name="list-unordered" unicode="&#xf061;"
d="M12 6q0 -6 -4 -6h-4q-4 0 -4 6t4 6h4q4 0 4 -6zM28 60q-4 0 -4 6t4 6h40q4 0 4 -6t-4 -6h-40zM8 42q4 0 4 -6t-4 -6h-4q-4 0 -4 6t4 6h4zM8 72q4 0 4 -6t-4 -6h-4q-4 0 -4 6t4 6h4zM68 42q4 0 4 -6t-4 -6h-40q-4 0 -4 6t4 6h40zM68 12q4 0 4 -6t-4 -6h-40q-4 0 -4 6t4 6
h40z" />
<glyph glyph-name="list-ordered" unicode="&#xf062;"
d="M72 6q0 -6 -4 -6h-40q-4 0 -4 6t4 6h40q4 0 4 -6zM28 60q-4 0 -4 6t4 6h40q4 0 4 -6t-4 -6h-40zM68 42q4 0 4 -6t-4 -6h-40q-4 0 -4 6t4 6h40zM12 78v-19h6v-5h-17v5h5v13h-4v4q4 1 6 2h4zM14 29h-1h4l1 -5h-18v3q10 10 10 13t-3 3q-1 0 -4 -2l-3 3q4 4 8 4q8 0 8 -8
q0 -4 -6 -11h4zM13 7q5 -2 5 -6q0 -7 -10 -7q-5 0 -8 3l3 4q2 -2 5 -2t3 2q0 3 -6 3v5q5 0 5 2t-2 2t-4 -1l-3 3q3 4 7 4q9 0 9 -7q0 -4 -4 -5z" />
<glyph glyph-name="quote" unicode="&#xf063;"
d="M37 63q-22 -14 -22 -35h3q6 0 10.5 -4t4.5 -10q0 -16 -15 -16q-18 0 -18 26q0 33 30 50zM79 63q-22 -14 -22 -35h3q4 0 7.5 -1.5t5.5 -5t2 -7.5q0 -16 -15 -16q-18 0 -18 26q0 33 30 50z" />
<glyph glyph-name="versions" unicode="&#xf064;"
d="M78 66q6 0 6 -6v-48q0 -6 -6 -6h-36q-6 0 -6 6v48q0 6 6 6h36zM72 18v36h-24v-36h24zM24 60h6v-6h-6v-36h6v-6h-6q-6 0 -6 6v36q0 6 6 6zM6 54h6v-6h-6v-24h6v-6h-6q-6 0 -6 6v24q0 6 6 6z" />
<glyph glyph-name="calendar" unicode="&#xf068;"
d="M78 72q6 0 6 -6v-66q0 -6 -6 -6h-66q-6 0 -6 6v66q0 6 6 6h6v-9q0 -3 3 -3h12q3 0 3 3v9h18v-9q0 -3 3 -3h12q3 0 3 3v9h6zM78 0v54h-66v-54h66zM30 66h-6v12h6v-12zM66 66h-6v12h6v-12zM36 42h-6v6h6v-6zM48 42h-6v6h6v-6zM60 42h-6v6h6v-6zM72 42h-6v6h6v-6zM24 30h-6
v6h6v-6zM36 30h-6v6h6v-6zM48 30h-6v6h6v-6zM60 30h-6v6h6v-6zM72 30h-6v6h6v-6zM24 18h-6v6h6v-6zM36 18h-6v6h6v-6zM48 18h-6v6h6v-6zM60 18h-6v6h6v-6zM72 18h-6v6h6v-6zM24 6h-6v6h6v-6zM36 6h-6v6h6v-6zM48 6h-6v6h6v-6zM60 6h-6v6h6v-6z" />
<glyph glyph-name="lock" unicode="&#xf06a;"
d="M24 6h-6v6h6v-6zM72 42v-42q0 -6 -6 -6h-60q-6 0 -6 6v42q0 6 6 6h6v12q0 10 7 17t17 7t17 -7t7 -17v-12h6q6 0 6 -6zM23 48h26v12q0 5 -3.5 9t-9 4t-9.5 -4t-4 -9v-12zM66 42h-54v-42h54v42zM24 36v-6h-6v6h6zM24 24v-6h-6v6h6z" />
<glyph glyph-name="diff-added" unicode="&#xf06b;"
d="M78 78q6 0 6 -6v-72q0 -6 -6 -6h-72q-6 0 -6 6v72q0 6 6 6h72zM78 0v72h-72v-72h72zM36 30h-18v12h18v18h12v-18h18v-12h-18v-18h-12v18z" />
<glyph glyph-name="diff-removed" unicode="&#xf06c;"
d="M78 78q6 0 6 -6v-72q0 -6 -6 -6h-72q-6 0 -6 6v72q0 6 6 6h72zM78 0v72h-72v-72h72zM66 30h-48v12h48v-12z" />
<glyph glyph-name="diff-modified" unicode="&#xf06d;"
d="M78 78q6 0 6 -6v-72q0 -6 -6 -6h-72q-6 0 -6 6v72q0 6 6 6h72zM78 0v72h-72v-72h72zM24 36q0 7 5.5 12.5t12.5 5.5t12.5 -5.5t5.5 -12.5t-5.5 -12.5t-12.5 -5.5t-12.5 5.5t-5.5 12.5z" />
<glyph glyph-name="diff-renamed" unicode="&#xf06e;"
d="M36 30h-18v12h18v18l30 -24l-30 -24v18zM84 72v-72q0 -6 -6 -6h-72q-6 0 -6 6v72q0 6 6 6h72q6 0 6 -6zM78 72h-72v-72h72v72z" />
<glyph glyph-name="horizontal-rule" unicode="&#xf070;"
d="M6 42v-12h-6v36h6v-18h12v18h6v-36h-6v12h-12zM60 30h-6v12h6v-12zM60 48h-6v12h6v-12zM42 48h12v-6h-12v-12h-6v36h18v-6h-12v-12zM0 6v12h60v-12h-60z" />
<glyph glyph-name="arrow-small-right" unicode="&#xf071;"
d="M36 36l-24 -18v12h-12v12h12v12z" />
<glyph glyph-name="milestone" unicode="&#xf075;"
d="M48 72h-12v12h12v-12zM72 42h-60q-6 0 -6 6v12q0 6 6 6h60l12 -12zM48 60h-12v-12h12v12zM36 -12v48h12v-48h-12z" />
<glyph glyph-name="checklist" unicode="&#xf076;"
d="M96 33l-36 -36l-18 18l9 9l9 -9l27 27zM34 11l5 -5h-27q-6 0 -6 6v54q0 6 6 6h42q6 0 6 -6v-39l-5 5q-4 4 -8 0l-13 -13q-4 -4 0 -8zM24 60h30v6h-30v-6zM24 48h30v6h-30v-6zM24 36h18v6h-18v-6zM18 30h-6v-6h6v6zM18 42h-6v-6h6v6zM18 54h-6v-6h6v6zM18 66h-6v-6h6v6z
" />
<glyph glyph-name="megaphone" unicode="&#xf077;"
d="M60 78q6 0 6 -6v-66q0 -6 -6 -6q-2 0 -3 1q-2 1 -5.5 3.5t-8 5.5l-7.5 5v-21h-12v28q-4 1 -6 2q-18 0 -18 15t18 15q4 1 11.5 5.5t16.5 10.5t11 7q1 1 3 1zM60 6v66l-9 -6q-1 0 -2 -1l-1 -1v-50q1 0 2 -1l1 -1q7 -5 9 -6zM72 42h24v-6h-24v6zM72 30l24 -12v-6l-24 12v6z
M96 66v-6l-24 -12v6z" />
<glyph glyph-name="chevron-right" unicode="&#xf078;"
d="M45 36l-30 -30l-9 9l22 21l-22 21l9 9z" />
<glyph glyph-name="bookmark" unicode="&#xf07b;"
d="M54 84q6 0 6 -6v-90l-30 19l-30 -19v90q0 6 6 6h48zM49 58q2 2 0 2h-14l-4 13h-2l-4 -13h-14q-2 0 0 -2l11 -8l-4 -13q-1 -2 1 -1l11 8l11 -8h1.5t-0.5 1l-4 13z" />
<glyph glyph-name="settings" unicode="&#xf07c;"
d="M24 42h-6v30h6v-30zM18 0v18h6v-18h-6zM48 0v36h6v-36h-6zM78 0v12h6v-12h-6zM84 72v-36h-6v36h6zM54 72v-12h-6v12h6zM30 36q6 0 6 -6t-6 -6h-18q-6 0 -6 6t6 6h18zM60 54q6 0 6 -6t-6 -6h-18q-6 0 -6 6t6 6h18zM90 30q6 0 6 -6t-6 -6h-18q-6 0 -6 6t6 6h18z" />
<glyph glyph-name="dashboard" unicode="&#xf07d;"
d="M54 54h-6v6h6v-6zM78 36v-6h-6v6h6zM36 54v-6h-6v6h6zM30 36v-6h-6v6h6zM96 69l-36 -33v-6q0 -6 -6 -6h-6q-6 0 -6 6v6q0 6 6 6h6l39 30zM86 44l6 6q4 -8 4 -17q0 -19 -13 -32t-32 -13t-32 13t-13 32t13 32t32 13q14 0 25 -8l-5 -5q-9 5 -20 5q-15 0 -26 -11t-11 -26
t11 -26t26 -11q10 0 18.5 5t13.5 13.5t5 18.5q0 6 -2 11z" />
<glyph glyph-name="history" unicode="&#xf07e;"
d="M48 6h-12v42h30v-12h-18v-30zM42 78q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 29.5v6h8v-6q0 -14 10 -24t24 -10t24 10t10 24t-10 24t-24 10q-17 0 -27 -13l9 -9h-24v24l10 -10q12 16 32 16z" />
<glyph glyph-name="link-external" unicode="&#xf07f;"
d="M66 24h6v-18q0 -6 -6 -6h-60q-6 0 -6 6v60q0 6 6 6h18v-6h-18v-60h60v18zM36 72h36v-36l-14 14l-19 -20l-9 9l20 19z" />
<glyph glyph-name="mute" unicode="&#xf080;"
d="M48 67v-62q0 -3 -3 -4t-5 1l-22 22h-12q-6 0 -6 6v12q0 6 6 6h12l22 22q2 2 5 1t3 -4zM93 48l-12 -12l12 -12l-6 -6l-12 12l-12 -12l-6 6l12 12l-12 12l6 6l12 -12l12 12z" />
<glyph glyph-name="x" unicode="&#xf081;"
d="M45 36l22 -22l-9 -9l-22 22l-22 -22l-9 9l22 22l-22 22l9 9l22 -22l22 22l9 -9z" />
<glyph glyph-name="circle-slash" unicode="&#xf084;"
d="M42 78q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5zM42 70q-14 0 -24 -10t-10 -24q0 -11 7 -21l48 48q-10 7 -21 7zM42 2q14 0 24 10t10 24q0 11 -7 21l-48 -48q10 -7 21 -7z" />
<glyph glyph-name="pulse" unicode="&#xf085;"
d="M69 36h15v-12h-20l-10 9l-22 -31l-5 33l-5 -11h-22v12h14l19 38l7 -41l13 19z" />
<glyph glyph-name="sync" unicode="&#xf087;"
d="M61 40l11 -2q1 -16 -10 -27q-10 -10 -23.5 -10.5t-24.5 7.5l-7 -8l-4 25l26 -3l-7 -7q17 -12 32 3q9 9 7 22zM18 54q-9 -9 -7 -22l-11 2q-1 16 10 27q10 10 23.5 10.5t24.5 -7.5l7 8l4 -25l-26 3l7 7q-17 12 -32 -3z" />
<glyph glyph-name="telescope" unicode="&#xf088;"
d="M48 30l18 -36h-6l-12 24v-30h-6v36l-12 -30h-6l12 30zM42 84v-6h-6v6h6zM30 66v-6h-6v6h6zM12 78v-6h-6v6h6zM4 30l7 5l7 -12l-8 -4q-3 -1 -4 1l-3 6q-1 2 1 4zM51 62l11 -18l-38 -18l-8 13zM76 55q2 -3 -1 -5l-8 -3l-11 19l7 5q3 2 5 -1z" />
<glyph glyph-name="gist-secret" unicode="&#xf08c;"
d="M48 21l6 -21h-24l6 21l-4 9h20zM60 48l12 -6h-60l12 6h36zM54 72l6 -18h-36l6 18l12 -6zM78 26q6 -2 4 -8l-3 -14q-1 -4 -6 -4h-19l12 18l-6 12zM24 30l-6 -12l12 -18h-19q-5 0 -6 4l-3 14q-2 6 4 8z" />
<glyph glyph-name="home" unicode="&#xf08d;"
d="M96 30h-12l-6 -30q0 -6 -6 -6h-48q-6 0 -6 6l-6 30h-12l48 48l18 -18v12h12v-24zM72 0l7 38l-31 31l-31 -31l7 -38h18v24h12v-24h18z" />
<glyph glyph-name="stop" unicode="&#xf08f;"
d="M60 78l24 -24v-36l-24 -24h-36l-24 24v36l24 24h36zM78 21v30l-21 21h-30l-21 -21v-30l21 -21h30zM36 60h12v-30h-12v30zM36 24h12v-12h-12v12z" />
<glyph glyph-name="bug" unicode="&#xf091;"
d="M66 24v-6l19 -6l-2 -6l-17 6v-6q0 -6 -6 -6h-6l-6 6v42h-6v-42l-6 -6h-6q-6 0 -6 6v6l-17 -6l-2 6l19 6v6h-18v6h18v6l-19 6l2 6l17 -6v6q0 6 6 6v6q0 5 5 6l-6 6h-11v6h13l12 -12h4l12 12h13v-6h-11l-6 -6q5 -1 5 -6v-6q6 0 6 -6v-6l17 6l2 -6l-19 -6v-6h18v-6h-18z
M54 54v6h-18v-6h18z" />
<glyph glyph-name="logo-github" unicode="&#xf092;"
d="M40 58h-1h1v0zM40 58v0v-3v-1h-3q-6 0 -6 6v7h-3v3l3 1v5h5v-5h3h1v-4h-1h-3v-7q0 -2 2 -2h1h1zM90 63q0 5 -3 4l-2 -1v-7q1 -1 2 -1q3 0 3 5zM95 63q0 -9 -6 -9l-6 2v-1v-1h-3l-1 1v23l1 1h4l1 -1v-8q1 2 4 2q6 0 6 -9zM77 71v0v-16v-1h-3l-1 1v1q-2 -2 -5 -2q-6 0 -6 6
v11h5v-10q0 -3 2 -3l3 1v12h5zM26 71v0v-16v-1h-4q-1 0 -1 1v16h1h4zM24 78q3 0 3 -3t-3 -3t-3 3t3 3zM59 79v-1v-23v-1h-4l-1 1v10h-7v-10v-1h-5v1v23v1h5v-1v-8h7v8l1 1h4zM19 68v-12q-3 -2 -7 -2q-12 0 -12 13t11 13q5 0 7 -2l-1 -4q-3 1 -5 1q-7 0 -7 -8t6 -8h3v5h-4v4
v1h8z" />
<glyph glyph-name="file-binary" unicode="&#xf094;"
d="M24 12h6v-6h-18v6h6v12h-6v6h12v-18zM72 57v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM66 54l-18 18h-42v-72h60v54zM48 60v-18h6v-6h-18v6h6v12h-6v6h12zM12 60h18v-24h-18v24zM18 42h6v12h-6v-12zM36 30h18v-24h-18v24zM42 12h6v12h-6v-12z" />
<glyph glyph-name="database" unicode="&#xf096;"
d="M36 -6q-36 0 -36 12v12q0 1 1 3q7 -9 35 -9t35 9q1 -2 1 -3v-12q0 -12 -36 -12zM36 18q-36 0 -36 12v12q0 1 1 2v1q7 -9 35 -9t35 9v-1q1 -1 1 -2v-12q0 -12 -36 -12zM36 42q-36 0 -36 12v6v6q0 12 36 12t36 -12v-6v-6q0 -12 -36 -12zM36 72q-24 0 -24 -6t24 -6t24 6
t-24 6z" />
<glyph glyph-name="server" unicode="&#xf097;"
d="M66 48q6 0 6 -6v-12q0 -6 -6 -6h-60q-6 0 -6 6v12q0 6 6 6h60zM12 30v12h-6v-12h6zM24 30v12h-6v-12h6zM36 30v12h-6v-12h6zM48 30v12h-6v-12h6zM66 78q6 0 6 -6v-12q0 -6 -6 -6h-60q-6 0 -6 6v12q0 6 6 6h60zM12 60v12h-6v-12h6zM24 60v12h-6v-12h6zM36 60v12h-6v-12h6z
M48 60v12h-6v-12h6zM66 66v6h-6v-6h6zM66 18q6 0 6 -6v-12q0 -6 -6 -6h-60q-6 0 -6 6v12q0 6 6 6h60zM12 0v12h-6v-12h6zM24 0v12h-6v-12h6zM36 0v12h-6v-12h6zM48 0v12h-6v-12h6z" />
<glyph glyph-name="diff-ignored" unicode="&#xf099;"
d="M78 78q6 0 6 -6v-72q0 -6 -6 -6h-72q-6 0 -6 6v72q0 6 6 6h72zM78 0v72h-72v-72h72zM27 12h-9v9l39 39h9v-9z" />
<glyph glyph-name="ellipsis" unicode="&#xf09a;"
d="M66 54q6 0 6 -6v-24q0 -6 -6 -6h-60q-6 0 -6 6v24q0 6 6 6h60zM24 30v12h-12v-12h12zM42 30v12h-12v-12h12zM60 30v12h-12v-12h12z" />
<glyph glyph-name="no-newline" unicode="&#xf09c;"
d="M96 54v-18q0 -6 -6 -6h-18v-12l-18 18l18 18v-12h12v12h12zM48 36q0 -10 -7 -17t-17 -7t-17 7t-7 17t7 17t17 7t17 -7t7 -17zM9 26l25 25q-5 3 -10 3q-7 0 -12.5 -5.5t-5.5 -12.5q0 -5 3 -10zM42 36q0 5 -3 10l-25 -25q5 -3 10 -3q7 0 12.5 5.5t5.5 12.5z" />
<glyph glyph-name="hubot" unicode="&#xf09d;"
d="M18 48h48q6 0 6 -6v-12q0 -6 -6 -6h-48q-6 0 -6 6v12q0 6 6 6zM66 38v4h-4l-8 -8l-8 8h-8l-8 -8l-8 8h-4v-4l8 -8h8l8 8l8 -8h8zM30 18h24v-6h-24v6zM42 72q17 0 29.5 -11.5t12.5 -27.5v-27q0 -6 -6 -6h-72q-6 0 -6 6v27q0 16 12.5 27.5t29.5 11.5zM78 6v27
q0 14 -10.5 24t-25.5 10t-25.5 -10t-10.5 -24v-27h72z" />
<glyph glyph-name="arrow-small-up" unicode="&#xf09f;"
d="M18 54l18 -24h-12v-12h-12v12h-12z" />
<glyph glyph-name="arrow-small-down" unicode="&#xf0a0;"
d="M24 42h12l-18 -24l-18 24h12v12h12v-12z" />
<glyph glyph-name="arrow-small-left" unicode="&#xf0a1;"
d="M24 42h12v-12h-12v-12l-24 18l24 18v-12z" />
<glyph glyph-name="chevron-up" unicode="&#xf0a2;"
d="M60 24l-9 -9l-21 23l-21 -23l-9 9l30 30z" />
<glyph glyph-name="chevron-down" unicode="&#xf0a3;"
d="M30 18l-30 30l9 9l21 -23l21 23l9 -9z" />
<glyph glyph-name="chevron-left" unicode="&#xf0a4;"
d="M33 66l9 -9l-22 -21l22 -21l-9 -9l-30 30z" />
<glyph glyph-name="triangle-up" unicode="&#xf0aa;"
d="M72 18h-72l36 36z" />
<glyph glyph-name="git-compare" unicode="&#xf0ac;"
d="M30 12v12l18 -18l-18 -18v12h-6q-7 0 -12.5 5.5t-5.5 12.5v38q-6 3 -6 10q0 12 12 12t12 -12q0 -7 -6 -10v-38q0 -2 2 -4t4 -2h6zM12 73q-7 0 -7 -7t7 -7t7 7t-7 7zM78 16q6 -3 6 -10q0 -12 -12 -12t-12 12q0 7 6 10v38q0 2 -2 4t-4 2h-6v-12l-18 18l18 18v-12h6
q7 0 12.5 -5.5t5.5 -12.5v-38zM72 -1q7 0 7 7t-7 7t-7 -7t7 -7z" />
<glyph glyph-name="logo-gist" unicode="&#xf0ad;"
d="M18 50v4h14v-22q-6 -2 -14 -2q-18 0 -18 23t18 23q7 0 12 -2v-4q-6 3 -12 3q-14 0 -14 -19.5t14 -19.5q7 0 9 1v15h-9zM43 36v0q0 -3 2 -3v-3q-6 0 -6 7v24h4v-25zM44 70q0 -3 -3 -3t-3 3t3 3t3 -3zM60 48v0q11 -1 11 -9q0 -9 -12 -9q-5 0 -9 2v3q4 -1 9 -1q8 0 8 5t-7 5
q-11 1 -11 8q0 9 12 9q5 0 8 -1v-4q-4 1 -8 1q-8 0 -8 -5q0 -4 7 -4zM93 57v0h-9v-18q0 -5 6 -5h2v-4h-3q-9 0 -9 8v19h-6v2l6 2v8l4 1v-9h9v-4z" />
<glyph glyph-name="file-symlink-file" unicode="&#xf0b0;"
d="M51 78l21 -21v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM66 0v54l-18 18h-42v-72h60zM36 57l24 -18l-24 -18v12q-9 0 -15.5 -4t-8.5 -14q0 15 6.5 22.5t17.5 7.5v12z" />
<glyph glyph-name="file-symlink-directory" unicode="&#xf0b1;"
d="M78 60q6 0 6 -6v-48q0 -6 -6 -6h-72q-6 0 -6 6v60q0 6 6 6h30q6 0 6 -6v-6h36zM6 66v-6h30v6h-30zM42 12l24 18l-24 18v-12q-11 0 -17.5 -7.5t-6.5 -22.5q2 10 8.5 14t15.5 4v-12z" />
<glyph glyph-name="squirrel" unicode="&#xf0b2;"
d="M72 78q10 0 17 -7t7 -17q0 -12 -7.5 -14.5t-10.5 2.5q-5 4 -8 -3q-2 -4 2 -9q6 -8 6 -15q0 -21 -30 -21h-36q0 6 6 6h6q-19 17 0 24q-7 0 -11.5 3t-6.5 3q-5 0 -4.5 3t4.5 3q2 0 8.5 -3t7.5 1q1 1 0.5 3.5t-3.5 2.5q-12 -2 -15 3q0 7 3 11.5t5 6.5l3 1l1 4q2 0 3 -2l2 2
l3 -4q7 0 15.5 -10t8.5 -28q1 6 1 11.5v9t-0.5 8t-0.5 7.5q0 8 7 13t17 5zM15 48q3 0 3 3t-3 3t-3 -3t3 -3z" />
<glyph glyph-name="globe" unicode="&#xf0b6;"
d="M42 78q17 0 29.5 -12.5t12.5 -29.5q0 -15 -9.5 -26.5t-23.5 -14.5l1.5 2t2.5 3q2 1 8 5q1 1 2 3l3 3q1 1 4.5 6.5t2.5 6.5q-1 2 -4.5 2h-3.5l-0.5 1.5t-1 2t-2.5 1t-5 1.5q-3 2 -6 1l-2 -1.5l-2 -1.5q-6 1 -6 4q0 2 -3 3v1q1 2 0 3l-3 -2t-4 1q-2 5 4 6q2 1 4 0.5
t2.5 -1.5t1.5 -1v2q-1 1 -1 2t1.5 2l1.5 1q-1 5 3 5q-1 1 0 2t1 0l2 2q-2 2 1 4q-4 3 -5 3q-1 1 -1.5 0.5t-1.5 0.5q-1 0 -1.5 0.5t-1.5 -0.5q1 -2 1 -3.5t-3 -0.5q0 1 -0.5 1t-1.5 1q-2 1 -1 2q1 0 2 0.5t0 1.5l1 1h-1q-2 0 -3.5 1l-1.5 1l-2 -1h-2q-5 2 -7 0l-7 -5l5 1
q1 0 1 -2.5v-3.5l-1 -1q0 -1 -1 -3t-1 -3t1 -5q2 -3 2 -4v-1q2 -3 2 -2.5t-1 2.5l-1 2h1l1 -2q0 -1 1 -1q1 -2 1 -3q0 -3 3 -4q6 -2 8 -3h1t1 -0.5t0.5 -1l1.5 -1.5q2 -2 3 -2l1 1q2 0 2 -1v-1.5v-0.5q-2 -5 -2 -6q1 -2 1 -3q1 -1 2 -3t3 -3q3 -2 -1 -11q-1 -1 -1 -3.5
t1 -2.5q-4 -1 -8 -1q-17 0 -29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5zM52 39q-3 -1 -5 0l-4 2h-1l1 1q2 0 4.5 -1.5l2.5 -1.5l1 0.5t1 -0.5v0zM38 74l1 1v0h3zM45 68q2 0 1 2q0 1 -2 2h-1q0 1 -2 1h-2l1 -1q5 0 2 -3zM54 69q1 0 0 2q-1 1 -1 2q0 2 -4 3h-6q-1 -1 0 -2h1
q2 0 5 -2q4 -4 5 -3z" />
<glyph glyph-name="unmute" unicode="&#xf0ba;"
d="M72 36q0 -10 -7 -17l-4 4q5 5 5 13t-5 13l4 4q7 -7 7 -17zM46 70q2 2 5 1t3 -4v-62q0 -3 -3 -4t-5 1l-22 22h-12q-6 0 -6 6v12q0 6 6 6h12zM82 70q14 -14 14 -34t-14 -34l-4 4q12 12 12 29.5t-12 30.5zM74 61q10 -10 10 -25t-10 -26l-5 5q9 8 9 20.5t-9 21.5z" />
<glyph glyph-name="mention" unicode="&#xf0be;"
d="M39 -6q-17 0 -28 10.5t-11 29.5q0 22 14 36t33 14q17 0 27 -10.5t10 -27.5q0 -13 -7 -21.5t-16 -8.5q-10 0 -11 9q-7 -7 -14 -7q-14 0 -14 15q0 10 6.5 18.5t15.5 8.5q6 0 9 -5l1 4h6l-4 -23q-3 -13 6 -13q6 0 10.5 6.5t4.5 16.5t-3.5 17t-10.5 11t-17 4q-16 0 -28 -12
t-12 -31q0 -16 9.5 -25.5t24.5 -9.5q10 0 18 5l3 -5q-9 -6 -22 -6zM38 24q5 0 10 6l3 18q-3 5 -7 5q-6 0 -10.5 -6t-4.5 -13q0 -10 9 -10z" />
<glyph glyph-name="package" unicode="&#xf0c4;"
d="M6 58q0 5 4 6l40 11h2l40 -11q4 -1 4 -6v-44q0 -5 -4 -6l-40 -11h-2l-40 11q-4 1 -4 6v44zM48 4v40l-36 10v-41zM12 60l39 -10l15 4l-39 10zM90 13v41l-12 -3v-15l-12 -3v15l-12 -4v-40zM78 57l12 3l-39 10l-12 -3z" />
<glyph glyph-name="browser" unicode="&#xf0c5;"
d="M30 66v-6h6v6h-6zM18 66v-6h6v6h-6zM6 66v-6h6v6h-6zM78 6v48h-72v-48h72zM78 60v6h-36v-6h36zM84 66v-60q0 -6 -6 -6h-72q-6 0 -6 6v60q0 6 6 6h72q6 0 6 -6z" />
<glyph glyph-name="terminal" unicode="&#xf0c8;"
d="M42 24h24v-6h-24v6zM24 18l-4 4l13 14l-13 14l4 4l18 -18zM84 66v-60q0 -6 -6 -6h-72q-6 0 -6 6v60q0 6 6 6h72q6 0 6 -6zM78 66h-72v-60h72v60z" />
<glyph glyph-name="markdown" unicode="&#xf0c9;"
d="M89 66q7 0 7 -7v-46q0 -7 -7 -7h-82q-7 0 -7 7v46q0 7 7 7h82zM54 18v36h-12l-9 -12l-9 12h-12v-36h12v18l9 -12l9 12v-18h12zM72 15l15 21h-9v18h-12v-18h-9z" />
<glyph glyph-name="dash" unicode="&#xf0ca;"
d="M0 42h48v-12h-48v12z" />
<glyph glyph-name="fold" unicode="&#xf0cc;"
d="M42 30l18 -18h-12v-18h-12v18h-12zM60 66l-18 -18l-18 18h12v18h12v-18h12zM84 54l-15 -15l15 -15q0 -6 -6 -6h-15l-6 6h18l-12 12h-42l-12 -12h18l-6 -6h-15q-6 0 -6 6l15 15l-15 15q0 6 6 6h15l6 -6h-18l12 -12h42l12 12h-18l6 6h15q6 0 6 -6z" />
<glyph glyph-name="inbox" unicode="&#xf0cf;"
d="M84 30v-30q0 -6 -6 -6h-72q-6 0 -6 6v30l7 43q1 5 6 5h58q5 0 6 -5zM64 27q2 3 6 3h8l-6 42h-60l-6 -42h8q4 0 6 -3l2 -6q2 -3 6 -3h28q4 0 6 3z" />
<glyph glyph-name="trashcan" unicode="&#xf0d0;"
d="M66 72q6 0 6 -6v-6q0 -6 -6 -6v-54q0 -6 -6 -6h-42q-6 0 -6 6v54q-6 0 -6 6v6q0 6 6 6h12q0 6 6 6h18q6 0 6 -6h12zM60 0v54h-6v-48h-6v48h-6v-48h-6v48h-6v-48h-6v48h-6v-54h42zM66 60v6h-54v-6h54z" />
<glyph glyph-name="paintcan" unicode="&#xf0d1;"
d="M36 84q15 0 25.5 -10.5t10.5 -25.5v-6q0 -6 -6 -6v-30q0 -12 -30 -12t-30 12v30q-6 0 -6 6v6q0 15 10.5 25.5t25.5 10.5zM54 24q6 0 6 6v11q-9 -5 -24 -5t-24 5v-11q0 -6 6 -6v-6q0 -6 6 -6t6 6v3q0 3 3 3t3 -3v-12q0 -3 3 -3t3 3v15q0 3 3 3t3 -3v-3q0 -3 3 -3t3 3v3z
M36 42q16 0 22 6q-6 6 -22 6t-22 -6q6 -6 22 -6zM36 60q30 0 30 -12q0 12 -9 21t-21 9t-21 -9t-9 -21q0 12 30 12z" />
<glyph glyph-name="flame" unicode="&#xf0d2;"
d="M30 82v0q15 -9 17 -21t-5 -16q-7 -7 0 -11q4 -2 7.5 0.5t3.5 7.5q-1 15 11 17q-2 -5 -1.5 -9.5t2.5 -7t4.5 -7.5t2.5 -10q0 -7 -3 -13.5t-9.5 -12.5t-16.5 -7q7 3 7 10q0 6 -4 9t-10 1t-10 3.5t-1 14.5q-11 -10 -10 -22.5t12 -17.5q-15 3 -21.5 12t-5.5 18t5 16
q4 5 12 11.5t10 8.5q9 10 3 26z" />
<glyph glyph-name="briefcase" unicode="&#xf0d3;"
d="M54 60h24q6 0 6 -6v-48q0 -6 -6 -6h-72q-6 0 -6 6v48q0 6 6 6h24v6q0 6 6 6h12q6 0 6 -6v-6zM36 66v-6h12v6h-12zM78 30v24h-6v-18h-60v18h-6v-24h30v-6h12v6h30z" />
<glyph glyph-name="plug" unicode="&#xf0d4;"
d="M84 48h-24v-18h24v-6h-24v-12h-12v6h-12q-9 0 -12 12l-6 6q-12 0 -12 -12v-12h-6v12q0 7 5.5 12.5t12.5 5.5l6 6q2 12 12 12h12v6h12v-12h24v-6z" />
<glyph glyph-name="circuit-board" unicode="&#xf0d6;"
d="M18 54q0 6 6 6t6 -6t-6 -6t-6 6zM66 54q0 -6 -6 -6t-6 6t6 6t6 -6zM66 18q0 -6 -6 -6t-6 6t6 6t6 -6zM78 78q6 0 6 -6v-72q0 -6 -6 -6h-54l18 18h7q3 -7 11 -7q6 0 10 5t2 11q-1 7 -9 9q-9 2 -14 -6h-13l-30 -30q-6 0 -6 6v72q0 6 6 6h12v-13q-9 -4 -6 -14q2 -7 9 -9
q9 -3 14 6h14q3 -7 11 -7q6 0 10 5t2 11q-1 7 -9 9q-9 2 -14 -6h-14q-2 3 -5 5v13h48z" />
<glyph glyph-name="mortar-board" unicode="&#xf0d7;"
d="M47 29v0h2l23 7v-15q0 -9 -24 -9t-24 9q0 2 -6 19l-4 14q3 -3 10 -18zM49 67l45 -14q2 -1 2 -2.5t-2 -1.5l-45 -15h-2l-29 10v-9q3 -2 3 -5q0 -2 -1 -3q1 -1 1 -3v-16q0 -2 -6 -2t-6 2v16q0 1 1 3q-1 1 -1 3q0 3 3 5v11l-10 3q-2 0 -2 1.5t2 2.5l45 14h2zM48 48q6 0 6 3
t-6 3t-6 -3t6 -3z" />
<glyph glyph-name="law" unicode="&#xf0d8;"
d="M42 60q-9 0 -9 9t9 9t9 -9t-9 -9zM84 24q0 -12 -12 -12h-6q-12 0 -12 12l12 24h-6q-6 0 -6 6h-6v-48q6 0 6 -6h6q6 0 6 -6h-48q0 6 6 6h6q0 6 6 6v48h-6q0 -6 -6 -6h-6l12 -24q0 -12 -12 -12h-6q-12 0 -12 12l12 24h-6v6h18q0 6 6 6h24q6 0 6 -6h18v-6h-6zM15 42l-9 -18
h18zM78 24l-9 18l-9 -18h18z" />
<glyph glyph-name="thumbsup" unicode="&#xf0da;"
d="M84 0l6 36q0 6 -6 6h-12q-6 0 -6 6v6q0 6 -4 15t-8 9q-2 0 -4 -2t-2 -4q3 -16 -5 -25q-10 -11 -19 -11v-36l10 -6h38q12 0 12 6zM84 48q12 0 12 -12v-1l-6 -36q-1 -11 -18 -11h-38q-2 0 -3 1l-9 5h-10q-12 0 -12 12v24q0 5 3.5 8.5t8.5 3.5h12q6 0 14 9q6 7 4 20
q-1 5 3 8q3 5 9 5q7 0 12.5 -11t5.5 -19v-6h12z" />
<glyph glyph-name="thumbsdown" unicode="&#xf0db;"
d="M96 37v-1q0 -12 -12 -12h-12v-6q0 -8 -5.5 -19t-12.5 -11q-6 0 -9 5q-4 3 -3 8q2 13 -4 20q-8 9 -14 9h-12q-12 0 -12 12v24q0 12 12 12h10l9 5q1 1 3 1h38q17 0 18 -11zM84 30q6 0 6 6l-6 36q0 6 -12 6h-38l-10 -6v-36q9 0 19 -11q8 -9 5 -25q0 -2 2 -4t4 -2t5 4.5t5 10
t2 9.5v6q0 6 6 6h12z" />
<glyph glyph-name="desktop-download" unicode="&#xf0dc;"
d="M24 48h18v36h12v-36h18l-24 -24zM90 72q6 0 6 -6v-54q0 -6 -6 -6h-32q3 -7 14 -12h-48q11 5 14 12h-32q-6 0 -6 6v54q0 6 6 6h24v-6h-24v-48h84v48h-24v6h24z" />
<glyph glyph-name="beaker" unicode="&#xf0dd;"
d="M86 -4q4 -8 -5 -8h-72q-3 0 -5 2.5t0 5.5l20 46v24h-6v6h54v-6h-6v-24zM22 24h45l-7 18v24h-30v-24zM48 36h6v-6h-6v6zM42 42h-6v6h6v-6zM42 60h6v-6h-6v6zM42 78h-6v6h6v-6z" />
<glyph glyph-name="bell" unicode="&#xf0de;"
d="M84 12v-6h-84v6l4 3q3 3 8 27q2 10 8 17.5t11 10.5l5 2q0 6 6 6t6 -6q20 -7 25 -30q5 -24 7 -27zM42 -12q-12 0 -12 12h24q0 -12 -12 -12z" />
<glyph glyph-name="watch" unicode="&#xf0e0;"
d="M36 36h12v-6h-18v24h6v-18zM72 36q0 -21 -18 -31v-11q0 -6 -6 -6h-24q-6 0 -6 6v11q-18 10 -18 31t18 31v11q0 6 6 6h24q6 0 6 -6v-11q18 -10 18 -31zM66 36q0 12 -9 21t-21 9t-21 -9t-9 -21t9 -21t21 -9t21 9t9 21z" />
<glyph glyph-name="shield" unicode="&#xf0e1;"
d="M42 84l42 -12v-36q0 -19 -16 -33.5t-26 -14.5t-26 14.5t-16 33.5v36zM30 18h24l-7 17q0 2 2 3q5 4 5 10q0 3 -1.5 6t-4.5 4.5t-6 1.5q-5 0 -8.5 -3.5t-3.5 -8.5q0 -6 5 -10q2 -1 2 -3z" />
<glyph glyph-name="bold" unicode="&#xf0e2;"
d="M6 72h23q26 0 26 -18q0 -12 -10 -15v-1q14 -3 14 -17q0 -21 -28 -21h-25v72zM28 42q14 0 14 10t-14 10h-9v-20h9zM30 10q16 0 16 12q0 11 -16 11h-11v-23h11z" />
<glyph glyph-name="text-size" unicode="&#xf0e3;"
d="M73 36l-8 28h-1l-8 -28h17zM30 30q-5 19 -6 22l-6 -22h12zM92 9h-12l-5 18h-21l-6 -18h-12l-3 13h-18l-3 -13h-12l18 51h13l12 -33l15 46h13z" />
<glyph glyph-name="italic" unicode="&#xf0e4;"
d="M17 54h12l-11 -54h-12zM19 70q0 8 8 8q7 0 7 -6q0 -8 -8 -8q-7 0 -7 6z" />
<glyph glyph-name="tasklist" unicode="&#xf0e5;"
d="M92 30h-46q-4 0 -4 6t4 6h46q4 0 4 -6t-4 -6zM58 60q-4 0 -4 6t4 6h34q4 0 4 -6t-4 -6h-34zM0 61l8 7l10 -9l25 25l8 -8l-33 -33zM46 12h46q4 0 4 -6t-4 -6h-46q-4 0 -4 6t4 6z" />
<glyph glyph-name="verified" unicode="&#xf0e6;"
d="M94 42q5 -6 0 -12l-6 -8q-2 -2 -2 -4l-2 -11q0 -7 -8 -8l-10 -1q-2 0 -4 -2l-8 -6q-6 -5 -12 0l-8 6q-2 2 -4 2l-11 2q-7 0 -8 8l-1 10q0 2 -2 4l-6 8q-5 6 0 12l6 8q2 2 2 4l2 11q0 7 8 8l10 1q2 0 4 2l8 6q6 5 12 0l8 -6q2 -2 4 -2l11 -2q7 0 8 -8l1 -10q0 -2 2 -4z
M39 12l39 39l-9 9l-30 -30l-12 12l-9 -9z" />
<glyph glyph-name="smiley" unicode="&#xf0e7;"
d="M48 84q20 0 34 -14t14 -34t-14 -34t-34 -14t-34 14t-14 34t14 34t34 14zM76.5 7.5q5.5 5.5 9 12.5t3.5 16t-3.5 16t-9 12.5t-12.5 9t-16 3.5t-16 -3.5t-12.5 -9t-9 -12.5t-3.5 -16t3.5 -16t9 -12.5t12.5 -9t16 -3.5t16 3.5t12.5 9zM24 43v4q0 7 7 7h4q7 0 7 -7v-4
q0 -7 -7 -7h-4q-7 0 -7 7zM54 43v4q0 7 7 7h4q7 0 7 -7v-4q0 -7 -7 -7h-4q-7 0 -7 7zM78 24q-7 -18 -30 -18t-30 18q-2 6 4 6h52q6 0 4 -6z" />
<glyph glyph-name="unverified" unicode="&#xf0e8;"
d="M94 42q5 -6 0 -12l-6 -8q-2 -2 -2 -4l-2 -11q0 -7 -8 -8l-10 -1q-2 0 -4 -2l-8 -6q-6 -5 -12 0l-8 6q-2 2 -4 2l-11 2q-7 0 -8 8l-1 10q0 2 -2 4l-6 8q-5 6 0 12l6 8q2 2 2 4l2 11q0 7 8 8l10 1q2 0 4 2l8 6q6 5 12 0l8 -6q2 -2 4 -2l11 -2q7 0 8 -8l1 -10q0 -2 2 -4z
M54 15v6q0 3 -3 3h-6q-3 0 -3 -3v-6q0 -3 3 -3h6q3 0 3 3zM63 44q1 1 1 4t-1 5t-3 4l-6 2t-7 1q-3 0 -6 -1t-5.5 -2.5t-3.5 -3.5q-2 -3 -2 -5h12q0 1 1 2l1 1l1 1h2q3 0 4 -1t1 -4q0 -1 -1 -3t-3 -3t-3 -2.5t-1 -2.5q-1 -2 -1 -3v-3h10v2t1 1q0 1 1 2t1 2l4 2q0 1 1.5 2.5
t1.5 2.5z" />
<glyph glyph-name="ellipses" unicode="&#xf101;"
d="M66 54q6 0 6 -6v-24q0 -6 -6 -6h-60q-6 0 -6 6v24q0 6 6 6h60zM24 30v12h-12v-12h12zM42 30v12h-12v-12h12zM60 30v12h-12v-12h12z" />
<glyph glyph-name="file" unicode="&#xf102;"
d="M36 54h-24v6h24v-6zM12 36v6h42v-6h-42zM12 24v6h42v-6h-42zM12 12v6h42v-6h-42zM72 57v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM66 54l-18 18h-42v-72h60v54z" />
<glyph glyph-name="grabber" unicode="&#xf103;"
d="M48 60v-6h-48v6h48zM0 36v6h48v-6h-48zM0 18v6h48v-6h-48z" />
<glyph glyph-name="plus-small" unicode="&#xf104;"
d="M24 42h18v-6h-18v-18h-6v18h-18v6h18v18h6v-18z" />
<glyph glyph-name="reply" unicode="&#xf105;"
d="M36 63q20 -2 34 -16.5t14 -43.5q-16 36 -48 36v-21l-33 33l33 33v-21z" />
<glyph glyph-name="device-desktop" unicode="&#xf27c;"
d="M90 72q6 0 6 -6v-54q0 -6 -6 -6h-32q3 -7 14 -12h-48q11 5 14 12h-32q-6 0 -6 6v54q0 6 6 6h84zM90 18v48h-84v-48h84z" />
</font>
</defs></svg>

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -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>

@ -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>

@ -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}}

@ -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 -->

@ -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>

@ -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>

@ -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">

@ -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>

@ -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}}

@ -9,11 +9,11 @@
<div class="ui right">
<div class="ui menu">
<a class="{{if $.PageIsOrgMembers}}active{{end}} item" href="{{$.OrgLink}}/members">
<i class="octicon octicon-organization"></i>&nbsp;{{$.i18n.Tr "org.people"}}
{{svg "octicon-organization" 16}}&nbsp;{{$.i18n.Tr "org.people"}}
<div class="floating ui black label">{{.NumMembers}}</div>
</a>
<a class="{{if $.PageIsOrgTeams}}active{{end}} item" href="{{$.OrgLink}}/teams">
<i class="octicon octicon-jersey"></i>&nbsp;{{$.i18n.Tr "org.teams"}}
{{svg "octicon-jersey" 16}}&nbsp;{{$.i18n.Tr "org.teams"}}
<div class="floating ui black label">{{.NumTeams}}</div>
</a>
</div>

@ -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">

@ -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">

@ -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}}

@ -1,4 +1,4 @@
<div class="ui top attached tabular menu">
<a class="item{{if .PageIsOrgTeamMembers}} active{{end}}" href="{{.OrgLink}}/teams/{{.Team.LowerName}}"><span class="octicon octicon-person"></span> <strong>{{.Team.NumMembers}}</strong>&nbsp; {{$.i18n.Tr "org.lower_members"}}</a>
<a class="item{{if .PageIsOrgTeamRepos}} active{{end}}" href="{{.OrgLink}}/teams/{{.Team.LowerName}}/repositories"><span class="octicon octicon-repo"></span> <strong>{{.Team.NumRepos}}</strong>&nbsp; {{$.i18n.Tr "org.lower_repositories"}}</a>
</div>
<a class="item{{if .PageIsOrgTeamMembers}} active{{end}}" href="{{.OrgLink}}/teams/{{.Team.LowerName}}">{{svg "octicon-person" 16}} <strong>{{.Team.NumMembers}}</strong>&nbsp; {{$.i18n.Tr "org.lower_members"}}</a>
<a class="item{{if .PageIsOrgTeamRepos}} active{{end}}" href="{{.OrgLink}}/teams/{{.Team.LowerName}}/repositories">{{svg "octicon-repo" 16}} <strong>{{.Team.NumRepos}}</strong>&nbsp; {{$.i18n.Tr "org.lower_repositories"}}</a>
</div>

@ -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>

@ -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>

@ -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}}

@ -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',

@ -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">

@ -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>

@ -16,10 +16,10 @@
{{range .Branches}}
{{if eq .Name $.DefaultBranch}}
{{if .IsProtected}}
<i class="octicon octicon-shield"></i>
{{svg "octicon-shield-lock" 16}}
{{end}}
<a href="{{$.RepoLink}}/src/branch/{{$.DefaultBranch | EscapePound}}">{{$.DefaultBranch}}</a>
<p class="info"><i class="octicon octicon-git-commit"></i><a href="{{$.RepoLink}}/commit/{{.Commit.ID.String}}">{{ShortSha .Commit.ID.String}}</a> · <span class="commit-message">{{RenderCommitMessage .Commit.CommitMessage $.RepoLink $.Repository.ComposeMetas}}</span> · {{$.i18n.Tr "org.repo_updated"}} {{TimeSince .Commit.Committer.When $.i18n.Lang}}</p>
<p class="info">{{svg "octicon-git-commit" 16}}<a href="{{$.RepoLink}}/commit/{{.Commit.ID.String}}">{{ShortSha .Commit.ID.String}}</a> · <span class="commit-message">{{RenderCommitMessage .Commit.CommitMessage $.RepoLink $.Repository.ComposeMetas}}</span> · {{$.i18n.Tr "org.repo_updated"}} {{TimeSince .Commit.Committer.When $.i18n.Lang}}</p>
{{end}}
{{end}}
</td>
@ -27,8 +27,8 @@
<div class="ui basic jump dropdown icon button poping up" data-content="{{$.i18n.Tr "repo.branch.download" ($.DefaultBranch)}}" data-variation="tiny inverted" data-position="top right">
<i class="download icon"></i>
<div class="menu">
<a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.DefaultBranch}}.zip"><i class="octicon octicon-file-zip"></i> ZIP</a>
<a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.DefaultBranch}}.tar.gz"><i class="octicon octicon-file-zip"></i> TAR.GZ</a>
<a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.DefaultBranch}}.zip">{{svg "octicon-file-zip" 16}}&nbsp;ZIP</a>
<a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.DefaultBranch}}.tar.gz">{{svg "octicon-file-zip" 16}}&nbsp;TAR.GZ</a>
</div>
</div>
</td>
@ -53,10 +53,10 @@
<p class="info">{{$.i18n.Tr "repo.branch.deleted_by" .DeletedBranch.DeletedBy.Name}} {{TimeSinceUnix .DeletedBranch.DeletedUnix $.i18n.Lang}}</p>
{{else}}
{{if .IsProtected}}
<i class="octicon octicon-shield"></i>
{{svg "octicon-shield-lock" 16}}
{{end}}
<a href="{{$.RepoLink}}/src/branch/{{.Name | EscapePound}}">{{.Name}}</a>
<p class="info"><i class="octicon octicon-git-commit"></i><a href="{{$.RepoLink}}/commit/{{.Commit.ID.String}}">{{ShortSha .Commit.ID.String}}</a> · <span class="commit-message">{{RenderCommitMessage .Commit.CommitMessage $.RepoLink $.Repository.ComposeMetas}}</span> · {{$.i18n.Tr "org.repo_updated"}} {{TimeSince .Commit.Committer.When $.i18n.Lang}}</p>
<p class="info">{{svg "octicon-git-commit" 16}}<a href="{{$.RepoLink}}/commit/{{.Commit.ID.String}}">{{ShortSha .Commit.ID.String}}</a> · <span class="commit-message">{{RenderCommitMessage .Commit.CommitMessage $.RepoLink $.Repository.ComposeMetas}}</span> · {{$.i18n.Tr "org.repo_updated"}} {{TimeSince .Commit.Committer.When $.i18n.Lang}}</p>
{{end}}
</td>
<td class="three wide ui">
@ -77,7 +77,7 @@
{{if not .LatestPullRequest}}
{{if .IsIncluded}}
<a class="ui poping up orange small label" data-content="{{$.i18n.Tr "repo.branch.included_desc"}}" data-variation="tiny inverted" data-position="top right">
<i class="octicon octicon-git-pull-request"></i> {{$.i18n.Tr "repo.branch.included"}}
{{svg "octicon-git-pull-request" 16}} {{$.i18n.Tr "repo.branch.included"}}
</a>
{{else if and (not .IsDeleted) $.AllowsPulls (gt .CommitsAhead 0)}}
<a href="{{$.RepoLink}}/compare/{{$.DefaultBranch | EscapePound}}...{{if ne $.Repository.Owner.Name $.Owner.Name}}{{$.Owner.Name}}:{{end}}{{.Name | EscapePound}}">
@ -93,11 +93,11 @@
{{else}}
<a href="{{.LatestPullRequest.Issue.HTMLURL}}">{{if not .LatestPullRequest.IsSameRepo}}{{.LatestPullRequest.BaseRepo.FullName}}{{end}}#{{.LatestPullRequest.Issue.Index}}</a>
{{if .LatestPullRequest.HasMerged}}
<a href="{{.LatestPullRequest.Issue.HTMLURL}}" class="ui purple mini label"><i class="octicon octicon-git-pull-request"></i> {{$.i18n.Tr "repo.pulls.merged"}}</a>
<a href="{{.LatestPullRequest.Issue.HTMLURL}}" class="ui purple mini label">{{svg "octicon-git-pull-request" 16}} {{$.i18n.Tr "repo.pulls.merged"}}</a>
{{else if .LatestPullRequest.Issue.IsClosed}}
<a href="{{.LatestPullRequest.Issue.HTMLURL}}" class="ui red mini label"><i class="octicon octicon-issue-closed"></i> {{$.i18n.Tr "repo.issues.closed_title"}}</a>
<a href="{{.LatestPullRequest.Issue.HTMLURL}}" class="ui red mini label">{{svg "octicon-issue-closed" 16}} {{$.i18n.Tr "repo.issues.closed_title"}}</a>
{{else}}
<a href="{{.LatestPullRequest.Issue.HTMLURL}}" class="ui green mini label"><i class="octicon octicon-issue-opened"></i> {{$.i18n.Tr "repo.issues.open_title"}}</a>
<a href="{{.LatestPullRequest.Issue.HTMLURL}}" class="ui green mini label">{{svg "octicon-issue-opened" 16}} {{$.i18n.Tr "repo.issues.open_title"}}</a>
{{end}}
{{end}}
</td>
@ -106,14 +106,14 @@
<div class="ui basic jump dropdown icon button poping up" data-content="{{$.i18n.Tr "repo.branch.download" (.Name)}}" data-variation="tiny inverted" data-position="top right">
<i class="download icon"></i>
<div class="menu">
<a class="item" href="{{$.RepoLink}}/archive/{{EscapePound .Name}}.zip"><i class="octicon octicon-file-zip"></i> ZIP</a>
<a class="item" href="{{$.RepoLink}}/archive/{{EscapePound .Name}}.tar.gz"><i class="octicon octicon-file-zip"></i> TAR.GZ</a>
<a class="item" href="{{$.RepoLink}}/archive/{{EscapePound .Name}}.zip">{{svg "octicon-file-zip" 16}}&nbsp;ZIP</a>
<a class="item" href="{{$.RepoLink}}/archive/{{EscapePound .Name}}.tar.gz">{{svg "octicon-file-zip" 16}}&nbsp;TAR.GZ</a>
</div>
</div>
{{end}}
{{if and $.IsWriter (not $.IsMirror) (not $.Repository.IsArchived) (not .IsProtected)}}
{{if .IsDeleted}}
<a class="ui basic jump button icon poping up undo-button" href data-url="{{$.Link}}/restore?branch_id={{.DeletedBranch.ID | urlquery}}&name={{.DeletedBranch.Name | urlquery}}" data-content="{{$.i18n.Tr "repo.branch.restore" (.Name)}}" data-variation="tiny inverted" data-position="top right"><i class="octicon octicon-reply text blue"></i></a>
<a class="ui basic jump button icon poping up undo-button" href data-url="{{$.Link}}/restore?branch_id={{.DeletedBranch.ID | urlquery}}&name={{.DeletedBranch.Name | urlquery}}" data-content="{{$.i18n.Tr "repo.branch.restore" (.Name)}}" data-variation="tiny inverted" data-position="top right"><span class="text blue">{{svg "octicon-reply" 16}}</span></a>
{{else}}
<a class="ui basic jump button icon poping up delete-branch-button" href data-url="{{$.Link}}/delete?name={{.Name | urlquery}}" data-content="{{$.i18n.Tr "repo.branch.delete" (.Name)}}" data-variation="tiny inverted" data-position="top right" data-name="{{.Name}}"><i class="trash icon text red"></i></a>
{{end}}

@ -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">

@ -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">

@ -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>

@ -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>

@ -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}}
{{end}}

@ -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>

@ -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>

@ -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>

@ -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}}

@ -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>

@ -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">

@ -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}}

@ -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>

@ -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}}

@ -127,14 +127,14 @@
{{end}}
{{if or (not $.DisableHTTP) (and (not $.DisableSSH) (or $.IsSigned $.ExposeAnonSSH))}}
<button class="ui basic icon button poping up clipboard" id="clipboard-btn" data-original="{{.i18n.Tr "repo.copy_link"}}" data-success="{{.i18n.Tr "repo.copy_link_success"}}" data-error="{{.i18n.Tr "repo.copy_link_error"}}" data-content="{{.i18n.Tr "repo.copy_link"}}" data-variation="inverted tiny" data-clipboard-target="#repo-clone-url">
<i class="octicon octicon-clippy"></i>
{{svg "octicon-clippy" 16}}
</button>
{{end}}
<div class="ui basic jump dropdown icon button poping up" data-content="{{.i18n.Tr "repo.download_archive"}}" data-variation="tiny inverted" data-position="top right">
<i class="download icon"></i>
<div class="menu">
<a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.BranchName}}.zip"><i class="octicon octicon-file-zip"></i> ZIP</a>
<a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.BranchName}}.tar.gz"><i class="octicon octicon-file-zip"></i> TAR.GZ</a>
<a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.BranchName}}.zip">{{svg "octicon-file-zip" 16}}&nbsp;ZIP</a>
<a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.BranchName}}.tar.gz">{{svg "octicon-file-zip" 16}}&nbsp;TAR.GZ</a>
</div>
</div>
</div>

@ -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}}
{{end}}

@ -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>

@ -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>

@ -7,7 +7,7 @@
<h3>{{.Milestone.Name}}</h3>
</div>
<div class="column center aligned">
</div>
{{if not .Repository.IsArchived}}
<div class="column right aligned">
@ -22,16 +22,16 @@
<div class="column">
{{ $closedDate:= TimeSinceUnix .Milestone.ClosedDateUnix $.Lang }}
{{if .IsClosed}}
<span class="octicon octicon-clock"></span> {{$.i18n.Tr "repo.milestones.closed" $closedDate|Str2html}}
{{svg "octicon-clock" 16}} {{$.i18n.Tr "repo.milestones.closed" $closedDate|Str2html}}
{{else}}
<span class="octicon octicon-calendar"></span>
{{svg "octicon-calendar" 16}}
{{if .Milestone.DeadlineString}}
<span {{if .IsOverdue}}class="overdue"{{end}}>{{.Milestone.DeadlineString}}</span>
{{else}}
{{$.i18n.Tr "repo.milestones.no_due_date"}}
{{end}}
{{end}}
&nbsp;
&nbsp;
<b>{{.i18n.Tr "repo.milestones.completeness" .Milestone.Completeness}}</b>
</div>
</div>
@ -40,11 +40,11 @@
<div class="six wide column">
<div class="ui tiny basic status buttons">
<a class="ui {{if not .IsShowClosed}}green active{{end}} basic button" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state=open&labels={{.SelectLabels}}&assignee={{.AssigneeID}}">
<i class="octicon octicon-issue-opened"></i>
{{svg "octicon-issue-opened" 16}}
{{.i18n.Tr "repo.issues.open_tab" .IssueStats.OpenCount}}
</a>
<a class="ui {{if .IsShowClosed}}red active{{end}} basic button" href="{{$.Link}}?q={{$.Keyword}}&type={{.ViewType}}&sort={{$.SortType}}&state=closed&labels={{.SelectLabels}}&assignee={{.AssigneeID}}">
<i class="octicon octicon-issue-closed"></i>
{{svg "octicon-issue-closed" 16}}
{{.i18n.Tr "repo.issues.close_tab" .IssueStats.ClosedCount}}
</a>
</div>
@ -61,7 +61,7 @@
<span class="info">{{.i18n.Tr "repo.issues.filter_label_exclude" | Safe}}</span>
<a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_label_no_select"}}</a>
{{range .Labels}}
<a class="item has-emoji label-filter-item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.ID}}&assignee={{$.AssigneeID}}" data-label-id="{{.ID}}"><span class="octicon {{if .IsExcluded}}octicon-circle-slash{{else if contain $.SelLabelIDs .ID}}octicon-check{{end}}"></span><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}</a>
<a class="item has-emoji label-filter-item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.ID}}&assignee={{$.AssigneeID}}" data-label-id="{{.ID}}">{{if .IsExcluded}}{{svg "octicon-circle-slash" 16}}{{else if contain $.SelLabelIDs .ID}}{{svg "octicon-check" 16}}{{end}}"><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}</a>
{{end}}
</div>
</div>
@ -118,11 +118,11 @@
<div class="six wide column">
<div class="ui tiny basic status buttons">
<a class="ui {{if not .IsShowClosed}}green active{{end}} basic button" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state=open&labels={{.SelectLabels}}&assignee={{.AssigneeID}}">
<i class="octicon octicon-issue-opened"></i>
{{svg "octicon-issue-opened" 16}}
{{.i18n.Tr "repo.issues.open_tab" .IssueStats.OpenCount}}
</a>
<a class="ui {{if .IsShowClosed}}red active{{end}} basic button" href="{{$.Link}}?q={{$.Keyword}}&type={{.ViewType}}&sort={{$.SortType}}&state=closed&labels={{.SelectLabels}}&assignee={{.AssigneeID}}">
<i class="octicon octicon-issue-closed"></i>
{{svg "octicon-issue-closed" 16}}
{{.i18n.Tr "repo.issues.close_tab" .IssueStats.ClosedCount}}
</a>
</div>
@ -149,7 +149,7 @@
<div class="menu">
{{range .Labels}}
<div class="item issue-action has-emoji" data-action="toggle" data-element-id="{{.ID}}" data-url="{{$.RepoLink}}/issues/labels">
<span class="octicon {{if contain $.SelLabelIDs .ID}}octicon-check{{end}}"></span><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}
{{if contain $.SelLabelIDs .ID}}{{svg "octicon-check" 16}}{{end}}"><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}
</div>
{{end}}
</div>
@ -193,11 +193,11 @@
{{end}}
{{if .NumComments}}
<span class="comment ui right"><i class="octicon octicon-comment"></i> {{.NumComments}}</span>
<span class="comment ui right">{{svg "octicon-comment" 16}} {{.NumComments}}</span>
{{end}}
{{if .TotalTrackedTime}}
<span class="comment ui right"><i class="octicon octicon-clock"></i> {{.TotalTrackedTime | Sec2Time}}</span>
<span class="comment ui right">{{svg "octicon-clock" 16}} {{.TotalTrackedTime | Sec2Time}}</span>
{{end}}
<p class="desc">
@ -208,18 +208,18 @@
{{end}}
{{if .Ref}}
<a class="ref" href="{{$.RepoLink}}/src/branch/{{.Ref}}">
<span class="octicon octicon-git-branch"></span> {{.Ref}}
{{svg "octicon-git-branch" 16}} {{.Ref}}
</a>
{{end}}
{{$tasks := .GetTasks}}
{{if gt $tasks 0}}
{{$tasksDone := .GetTasksDone}}
<span class="checklist">
<span class="octicon octicon-checklist"></span> {{$tasksDone}} / {{$tasks}} <span class="progress-bar"><span class="progress" style="width:calc(100% * {{$tasksDone}} / {{$tasks}});"></span></span>
{{svg "octicon-checklist" 16}} {{$tasksDone}} / {{$tasks}} <span class="progress-bar"><span class="progress" style="width:calc(100% * {{$tasksDone}} / {{$tasks}});"></span></span>
</span>
{{end}}
{{if ne .DeadlineUnix 0}}
<span class="octicon octicon-calendar"></span>
{{svg "octicon-calendar" 16}}
<span{{if .IsOverdue}} class="overdue"{{end}}>{{.DeadlineUnix.FormatShort}}</span>
{{end}}
{{range .Assignees}}

@ -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}}

@ -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>

@ -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>

@ -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}}

@ -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>

@ -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}}

@ -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>

@ -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>

@ -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>

@ -43,8 +43,8 @@
<div class="download">
{{if $.Permission.CanRead $.UnitTypeCode}}
<a href="{{$.RepoLink}}/src/commit/{{.Sha1}}" rel="nofollow"><i class="code icon"></i> {{ShortSha .Sha1}}</a>
<a href="{{$.RepoLink}}/archive/{{.TagName | EscapePound}}.zip" rel="nofollow"><i class="octicon octicon-file-zip"></i> ZIP</a>
<a href="{{$.RepoLink}}/archive/{{.TagName | EscapePound}}.tar.gz"><i class="octicon octicon-file-zip"></i> TAR.GZ</a>
<a href="{{$.RepoLink}}/archive/{{.TagName | EscapePound}}.zip" rel="nofollow">{{svg "octicon-file-zip" 16}}&nbsp;ZIP</a>
<a href="{{$.RepoLink}}/archive/{{.TagName | EscapePound}}.tar.gz">{{svg "octicon-file-zip" 16}}&nbsp;TAR.GZ</a>
{{end}}
</div>
{{else}}
@ -75,18 +75,18 @@
<ul class="list">
{{if $.Permission.CanRead $.UnitTypeCode}}
<li>
<a href="{{$.RepoLink}}/archive/{{.TagName | EscapePound}}.zip" rel="nofollow"><strong><i class="octicon octicon-file-zip"></i> {{$.i18n.Tr "repo.release.source_code"}} (ZIP)</strong></a>
<a href="{{$.RepoLink}}/archive/{{.TagName | EscapePound}}.zip" rel="nofollow"><strong>{{svg "octicon-file-zip" 16}} {{$.i18n.Tr "repo.release.source_code"}} (ZIP)</strong></a>
</li>
<li>
<a href="{{$.RepoLink}}/archive/{{.TagName | EscapePound}}.tar.gz"><strong><i class="octicon octicon-file-zip"></i> {{$.i18n.Tr "repo.release.source_code"}} (TAR.GZ)</strong></a>
<a href="{{$.RepoLink}}/archive/{{.TagName | EscapePound}}.tar.gz"><strong>{{svg "octicon-file-zip" 16}} {{$.i18n.Tr "repo.release.source_code"}} (TAR.GZ)</strong></a>
</li>
{{end}}
{{if .Attachments}}
{{range .Attachments}}
<li>
<span class="ui text right" data-tooltip="{{$.i18n.Tr "repo.release.download_count" (.DownloadCount | PrettyNumber)}}" data-position="bottom right"><i class="ui octicon octicon-info"></i></span>
<span class="ui text right" data-tooltip="{{$.i18n.Tr "repo.release.download_count" (.DownloadCount | PrettyNumber)}}" data-position="bottom right">{{svg "octicon-info" 16}}</span>
<a target="_blank" rel="noopener noreferrer" href="{{.DownloadURL}}">
<strong><span class="ui image octicon octicon-package" title='{{.Name}}'></span> {{.Name}}</strong>
<strong><span class="ui image" title='{{.Name}}'>{{svg "octicon-package" 16}}</span> {{.Name}}</strong>
<span class="ui text grey right">{{.Size | FileSize}}</span>
</a>
</li>

@ -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>

@ -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>

@ -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>

@ -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>

@ -7,8 +7,8 @@
<h4 class="ui top attached header">
{{.i18n.Tr "repo.settings.lfs_filelist"}} ({{.i18n.Tr "admin.total" .Total}})
<div class="ui right">
<a class="ui black tiny show-panel button" href="{{.Link}}/locks"><i class="octicon octicon-lock octicon-tiny"></i>{{.i18n.Tr "repo.settings.lfs_locks"}}</a>
<a class="ui blue tiny show-panel button" href="{{.Link}}/pointers"><i class="octicon octicon-search octicon-tiny"></i>&nbsp;{{.i18n.Tr "repo.settings.lfs_findpointerfiles"}}</a>
<a class="ui black tiny show-panel button" href="{{.Link}}/locks"><span class="octicon-tiny">{{svg "octicon-lock" 16}}</span>{{.i18n.Tr "repo.settings.lfs_locks"}}</a>
<a class="ui blue tiny show-panel button" href="{{.Link}}/pointers"><span class="octicon-tiny">{{svg "octicon-search" 16}}</span>&nbsp;{{.i18n.Tr "repo.settings.lfs_findpointerfiles"}}</a>
</div>
</h4>
<table id="lfs-files-table" class="ui attached segment single line table">
@ -27,7 +27,7 @@
<td class="right aligned">
<a class="ui blue show-panel button" href="{{$.Link}}/find?oid={{.Oid}}&size={{.Size}}">{{$.i18n.Tr "repo.settings.lfs_findcommits"}}</a>
<button class="ui basic show-modal icon button" data-modal="#delete-{{.Oid}}">
<i class="octicon octicon-trashcan btn-octicon btn-octicon-danger poping up" data-content="{{$.i18n.Tr "repo.editor.delete_this_file"}}" data-position="bottom center" data-variation="tiny inverted"></i>
<span class="btn-octicon btn-octicon-danger poping up" data-content="{{$.i18n.Tr "repo.editor.delete_this_file"}}" data-position="bottom center" data-variation="tiny inverted">{{svg "octicon-trashcan" 16}}</span>
</button>
</td>
</tr>

@ -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}}

@ -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>

@ -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}}

@ -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">

@ -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">

@ -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>

@ -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>

@ -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>

@ -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>

@ -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}}

@ -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>

@ -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)}}

@ -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>

@ -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>

@ -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>

@ -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>

@ -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}}

@ -25,7 +25,7 @@
</div>
{{if .SignedUser.CanCreateOrganization}}
<a class="item" href="{{AppSubUrl}}/org/create">
<i class="octicon octicon-plus"></i>&nbsp;&nbsp;&nbsp;{{.i18n.Tr "new_org"}}
{{svg "octicon-plus" 16}}&nbsp;&nbsp;&nbsp;{{.i18n.Tr "new_org"}}
</a>
{{end}}
</div>
@ -35,17 +35,17 @@
{{if .ContextUser.IsOrganization}}
<div class="right stackable menu">
<a class="{{if .PageIsNews}}active{{end}} item" style="margin-left: auto" href="{{AppSubUrl}}/org/{{.ContextUser.Name}}/dashboard">
<i class="octicon octicon-rss"></i>&nbsp;{{.i18n.Tr "activities"}}
{{svg "octicon-rss" 16}}&nbsp;{{.i18n.Tr "activities"}}
</a>
<a class="{{if .PageIsIssues}}active{{end}} item" href="{{AppSubUrl}}/org/{{.ContextUser.Name}}/issues">
<i class="octicon octicon-issue-opened"></i>&nbsp;{{.i18n.Tr "issues"}}
{{svg "octicon-issue-opened" 16}}&nbsp;{{.i18n.Tr "issues"}}
</a>
<a class="{{if .PageIsPulls}}active{{end}} item" href="{{AppSubUrl}}/org/{{.ContextUser.Name}}/pulls">
<i class="octicon octicon-git-pull-request"></i>&nbsp;{{.i18n.Tr "pull_requests"}}
{{svg "octicon-git-pull-request" 16}}&nbsp;{{.i18n.Tr "pull_requests"}}
</a>
{{if .ShowMilestonesDashboardPage}}
<a class="{{if .PageIsMilestonesDashboard}}active{{end}} item" href="{{AppSubUrl}}/org/{{.ContextUser.Name}}/milestones">
<i class="octicon octicon-milestone"></i>&nbsp;{{.i18n.Tr "milestones"}}
{{svg "octicon-milestone" 16}}&nbsp;{{.i18n.Tr "milestones"}}
</a>
{{end}}
<div class="item">

@ -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}}

@ -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>

@ -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}}

@ -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>

@ -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">

@ -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>

@ -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" .}}

@ -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,

@ -172,7 +172,6 @@ var svgAttributeAdjustments = map[string]string{
"diffuseconstant": "diffuseConstant",
"edgemode": "edgeMode",
"externalresourcesrequired": "externalResourcesRequired",
"filterres": "filterRes",
"filterunits": "filterUnits",
"glyphref": "glyphRef",
"gradienttransform": "gradientTransform",

@ -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
}

@ -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,
}

@ -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
}
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save