From 8188176b588264fe0ff8e3f82a623ea007a1af41 Mon Sep 17 00:00:00 2001 From: silverwind Date: Sun, 12 Jul 2020 11:10:56 +0200 Subject: [PATCH] Direct SVG rendering (#12157) Introduce 'make svg' which calls a node script that compiles svg files to `public/img/svg`. These files are vendored to not create a dependency on Node for the backend build. On the frontend side, configure webpack using `raw-loader` so SVGs can be imported as string. Also moved our existing SVGs to web_src/svg for consistency. Fixes: https://github.com/go-gitea/gitea/issues/11618 --- .gitignore | 1 - Makefile | 23 +- build/generate-svg.js | 63 ++ .../doc/advanced/hacking-on-gitea.en-us.md | 4 + modules/svg/discover_bindata.go | 32 + modules/svg/discover_nobindata.go | 31 + modules/svg/svg.go | 13 + modules/templates/helper.go | 13 +- package-lock.json | 587 +----------------- package.json | 5 +- public/img/svg/gitea-lock-cog.svg | 1 + public/img/svg/gitea-lock.svg | 1 + public/img/svg/gitea-unlock.svg | 1 + public/img/svg/octicon-alert.svg | 1 + public/img/svg/octicon-archive.svg | 1 + public/img/svg/octicon-arrow-both.svg | 1 + public/img/svg/octicon-arrow-down.svg | 1 + public/img/svg/octicon-arrow-left.svg | 1 + public/img/svg/octicon-arrow-right.svg | 1 + public/img/svg/octicon-arrow-small-down.svg | 1 + public/img/svg/octicon-arrow-small-left.svg | 1 + public/img/svg/octicon-arrow-small-right.svg | 1 + public/img/svg/octicon-arrow-small-up.svg | 1 + public/img/svg/octicon-arrow-up.svg | 1 + public/img/svg/octicon-beaker.svg | 1 + public/img/svg/octicon-bell.svg | 1 + public/img/svg/octicon-bold.svg | 1 + public/img/svg/octicon-book.svg | 1 + public/img/svg/octicon-bookmark.svg | 1 + public/img/svg/octicon-briefcase.svg | 1 + public/img/svg/octicon-broadcast.svg | 1 + public/img/svg/octicon-browser.svg | 1 + public/img/svg/octicon-bug.svg | 1 + public/img/svg/octicon-calendar.svg | 1 + public/img/svg/octicon-check.svg | 1 + public/img/svg/octicon-checklist.svg | 1 + public/img/svg/octicon-chevron-down.svg | 1 + public/img/svg/octicon-chevron-left.svg | 1 + public/img/svg/octicon-chevron-right.svg | 1 + public/img/svg/octicon-chevron-up.svg | 1 + public/img/svg/octicon-circle-slash.svg | 1 + public/img/svg/octicon-circuit-board.svg | 1 + public/img/svg/octicon-clippy.svg | 1 + public/img/svg/octicon-clock.svg | 1 + public/img/svg/octicon-cloud-download.svg | 1 + public/img/svg/octicon-cloud-upload.svg | 1 + public/img/svg/octicon-code.svg | 1 + public/img/svg/octicon-comment-discussion.svg | 1 + public/img/svg/octicon-comment.svg | 1 + public/img/svg/octicon-credit-card.svg | 1 + public/img/svg/octicon-dash.svg | 1 + public/img/svg/octicon-dashboard.svg | 1 + public/img/svg/octicon-database.svg | 1 + public/img/svg/octicon-dependent.svg | 1 + public/img/svg/octicon-desktop-download.svg | 1 + .../img/svg/octicon-device-camera-video.svg | 1 + public/img/svg/octicon-device-camera.svg | 1 + public/img/svg/octicon-device-desktop.svg | 1 + public/img/svg/octicon-device-mobile.svg | 1 + public/img/svg/octicon-diff-added.svg | 1 + public/img/svg/octicon-diff-ignored.svg | 1 + public/img/svg/octicon-diff-modified.svg | 1 + public/img/svg/octicon-diff-removed.svg | 1 + public/img/svg/octicon-diff-renamed.svg | 1 + public/img/svg/octicon-diff.svg | 1 + public/img/svg/octicon-ellipsis.svg | 1 + public/img/svg/octicon-eye-closed.svg | 1 + public/img/svg/octicon-eye.svg | 1 + public/img/svg/octicon-file-binary.svg | 1 + public/img/svg/octicon-file-code.svg | 1 + public/img/svg/octicon-file-directory.svg | 1 + public/img/svg/octicon-file-media.svg | 1 + public/img/svg/octicon-file-pdf.svg | 1 + public/img/svg/octicon-file-submodule.svg | 1 + .../svg/octicon-file-symlink-directory.svg | 1 + public/img/svg/octicon-file-symlink-file.svg | 1 + public/img/svg/octicon-file-zip.svg | 1 + public/img/svg/octicon-file.svg | 1 + public/img/svg/octicon-flame.svg | 1 + public/img/svg/octicon-fold-down.svg | 1 + public/img/svg/octicon-fold-up.svg | 1 + public/img/svg/octicon-fold.svg | 1 + public/img/svg/octicon-gear.svg | 1 + public/img/svg/octicon-gift.svg | 1 + public/img/svg/octicon-gist-secret.svg | 1 + public/img/svg/octicon-gist.svg | 1 + public/img/svg/octicon-git-branch.svg | 1 + public/img/svg/octicon-git-commit.svg | 1 + public/img/svg/octicon-git-compare.svg | 1 + public/img/svg/octicon-git-merge.svg | 1 + public/img/svg/octicon-git-pull-request.svg | 1 + public/img/svg/octicon-github-action.svg | 1 + public/img/svg/octicon-globe.svg | 1 + public/img/svg/octicon-grabber.svg | 1 + public/img/svg/octicon-graph.svg | 1 + public/img/svg/octicon-heart-outline.svg | 1 + public/img/svg/octicon-heart.svg | 1 + public/img/svg/octicon-history.svg | 1 + public/img/svg/octicon-home.svg | 1 + public/img/svg/octicon-horizontal-rule.svg | 1 + public/img/svg/octicon-hubot.svg | 1 + public/img/svg/octicon-inbox.svg | 1 + public/img/svg/octicon-infinity.svg | 1 + public/img/svg/octicon-info.svg | 1 + public/img/svg/octicon-internal-repo.svg | 1 + public/img/svg/octicon-issue-closed.svg | 1 + public/img/svg/octicon-issue-opened.svg | 1 + public/img/svg/octicon-issue-reopened.svg | 1 + public/img/svg/octicon-italic.svg | 1 + public/img/svg/octicon-jersey.svg | 1 + public/img/svg/octicon-kebab-horizontal.svg | 1 + public/img/svg/octicon-kebab-vertical.svg | 1 + public/img/svg/octicon-key.svg | 1 + public/img/svg/octicon-keyboard.svg | 1 + public/img/svg/octicon-law.svg | 1 + public/img/svg/octicon-light-bulb.svg | 1 + public/img/svg/octicon-line-arrow-down.svg | 1 + public/img/svg/octicon-line-arrow-left.svg | 1 + public/img/svg/octicon-line-arrow-right.svg | 1 + public/img/svg/octicon-line-arrow-up.svg | 1 + public/img/svg/octicon-link-external.svg | 1 + public/img/svg/octicon-link.svg | 1 + public/img/svg/octicon-list-ordered.svg | 1 + public/img/svg/octicon-list-unordered.svg | 1 + public/img/svg/octicon-location.svg | 1 + public/img/svg/octicon-lock.svg | 1 + public/img/svg/octicon-logo-gist.svg | 1 + public/img/svg/octicon-logo-github.svg | 1 + public/img/svg/octicon-mail-read.svg | 1 + public/img/svg/octicon-mail.svg | 1 + public/img/svg/octicon-mark-github.svg | 1 + public/img/svg/octicon-markdown.svg | 1 + public/img/svg/octicon-megaphone.svg | 1 + public/img/svg/octicon-mention.svg | 1 + public/img/svg/octicon-milestone.svg | 1 + public/img/svg/octicon-mirror.svg | 1 + public/img/svg/octicon-mortar-board.svg | 1 + public/img/svg/octicon-mute.svg | 1 + public/img/svg/octicon-no-newline.svg | 1 + public/img/svg/octicon-north-star.svg | 1 + public/img/svg/octicon-note.svg | 1 + public/img/svg/octicon-octoface.svg | 1 + public/img/svg/octicon-organization.svg | 1 + public/img/svg/octicon-package.svg | 1 + public/img/svg/octicon-paintcan.svg | 1 + public/img/svg/octicon-pencil.svg | 1 + public/img/svg/octicon-person.svg | 1 + public/img/svg/octicon-pin.svg | 1 + public/img/svg/octicon-play.svg | 1 + public/img/svg/octicon-plug.svg | 1 + public/img/svg/octicon-plus-small.svg | 1 + public/img/svg/octicon-plus.svg | 1 + .../img/svg/octicon-primitive-dot-stroke.svg | 1 + public/img/svg/octicon-primitive-dot.svg | 1 + public/img/svg/octicon-primitive-square.svg | 1 + public/img/svg/octicon-project.svg | 1 + public/img/svg/octicon-pulse.svg | 1 + public/img/svg/octicon-question.svg | 1 + public/img/svg/octicon-quote.svg | 1 + public/img/svg/octicon-radio-tower.svg | 1 + public/img/svg/octicon-reply.svg | 1 + public/img/svg/octicon-repo-clone.svg | 1 + public/img/svg/octicon-repo-force-push.svg | 1 + public/img/svg/octicon-repo-forked.svg | 1 + public/img/svg/octicon-repo-pull.svg | 1 + public/img/svg/octicon-repo-push.svg | 1 + .../img/svg/octicon-repo-template-private.svg | 1 + public/img/svg/octicon-repo-template.svg | 1 + public/img/svg/octicon-repo.svg | 1 + public/img/svg/octicon-report.svg | 1 + public/img/svg/octicon-request-changes.svg | 1 + public/img/svg/octicon-rocket.svg | 1 + public/img/svg/octicon-rss.svg | 1 + public/img/svg/octicon-ruby.svg | 1 + public/img/svg/octicon-saved.svg | 1 + public/img/svg/octicon-screen-full.svg | 1 + public/img/svg/octicon-screen-normal.svg | 1 + public/img/svg/octicon-search.svg | 1 + public/img/svg/octicon-server.svg | 1 + public/img/svg/octicon-settings.svg | 1 + public/img/svg/octicon-shield-check.svg | 1 + public/img/svg/octicon-shield-lock.svg | 1 + public/img/svg/octicon-shield-x.svg | 1 + public/img/svg/octicon-shield.svg | 1 + public/img/svg/octicon-sign-in.svg | 1 + public/img/svg/octicon-sign-out.svg | 1 + public/img/svg/octicon-skip.svg | 1 + public/img/svg/octicon-smiley.svg | 1 + public/img/svg/octicon-squirrel.svg | 1 + public/img/svg/octicon-star.svg | 1 + public/img/svg/octicon-stop.svg | 1 + public/img/svg/octicon-sync.svg | 1 + public/img/svg/octicon-tag.svg | 1 + public/img/svg/octicon-tasklist.svg | 1 + public/img/svg/octicon-telescope.svg | 1 + public/img/svg/octicon-terminal.svg | 1 + public/img/svg/octicon-text-size.svg | 1 + public/img/svg/octicon-three-bars.svg | 1 + public/img/svg/octicon-thumbsdown.svg | 1 + public/img/svg/octicon-thumbsup.svg | 1 + public/img/svg/octicon-tools.svg | 1 + public/img/svg/octicon-trashcan.svg | 1 + public/img/svg/octicon-triangle-down.svg | 1 + public/img/svg/octicon-triangle-left.svg | 1 + public/img/svg/octicon-triangle-right.svg | 1 + public/img/svg/octicon-triangle-up.svg | 1 + public/img/svg/octicon-unfold.svg | 1 + public/img/svg/octicon-unmute.svg | 1 + public/img/svg/octicon-unsaved.svg | 1 + public/img/svg/octicon-unverified.svg | 1 + public/img/svg/octicon-verified.svg | 1 + public/img/svg/octicon-versions.svg | 1 + public/img/svg/octicon-watch.svg | 1 + public/img/svg/octicon-workflow-all.svg | 1 + public/img/svg/octicon-workflow.svg | 1 + public/img/svg/octicon-x.svg | 1 + public/img/svg/octicon-zap.svg | 1 + routers/init.go | 3 + web_src/js/features/contextpopup.js | 2 +- web_src/js/index.js | 9 - web_src/js/markdown/anchors.js | 2 +- web_src/js/svg.js | 30 + web_src/js/utils.js | 5 - {assets => web_src}/svg/gitea-lock-cog.svg | 0 {assets => web_src}/svg/gitea-lock.svg | 0 {assets => web_src}/svg/gitea-unlock.svg | 0 webpack.config.js | 31 +- 227 files changed, 452 insertions(+), 609 deletions(-) create mode 100755 build/generate-svg.js create mode 100644 modules/svg/discover_bindata.go create mode 100644 modules/svg/discover_nobindata.go create mode 100644 modules/svg/svg.go create mode 100644 public/img/svg/gitea-lock-cog.svg create mode 100644 public/img/svg/gitea-lock.svg create mode 100644 public/img/svg/gitea-unlock.svg create mode 100644 public/img/svg/octicon-alert.svg create mode 100644 public/img/svg/octicon-archive.svg create mode 100644 public/img/svg/octicon-arrow-both.svg create mode 100644 public/img/svg/octicon-arrow-down.svg create mode 100644 public/img/svg/octicon-arrow-left.svg create mode 100644 public/img/svg/octicon-arrow-right.svg create mode 100644 public/img/svg/octicon-arrow-small-down.svg create mode 100644 public/img/svg/octicon-arrow-small-left.svg create mode 100644 public/img/svg/octicon-arrow-small-right.svg create mode 100644 public/img/svg/octicon-arrow-small-up.svg create mode 100644 public/img/svg/octicon-arrow-up.svg create mode 100644 public/img/svg/octicon-beaker.svg create mode 100644 public/img/svg/octicon-bell.svg create mode 100644 public/img/svg/octicon-bold.svg create mode 100644 public/img/svg/octicon-book.svg create mode 100644 public/img/svg/octicon-bookmark.svg create mode 100644 public/img/svg/octicon-briefcase.svg create mode 100644 public/img/svg/octicon-broadcast.svg create mode 100644 public/img/svg/octicon-browser.svg create mode 100644 public/img/svg/octicon-bug.svg create mode 100644 public/img/svg/octicon-calendar.svg create mode 100644 public/img/svg/octicon-check.svg create mode 100644 public/img/svg/octicon-checklist.svg create mode 100644 public/img/svg/octicon-chevron-down.svg create mode 100644 public/img/svg/octicon-chevron-left.svg create mode 100644 public/img/svg/octicon-chevron-right.svg create mode 100644 public/img/svg/octicon-chevron-up.svg create mode 100644 public/img/svg/octicon-circle-slash.svg create mode 100644 public/img/svg/octicon-circuit-board.svg create mode 100644 public/img/svg/octicon-clippy.svg create mode 100644 public/img/svg/octicon-clock.svg create mode 100644 public/img/svg/octicon-cloud-download.svg create mode 100644 public/img/svg/octicon-cloud-upload.svg create mode 100644 public/img/svg/octicon-code.svg create mode 100644 public/img/svg/octicon-comment-discussion.svg create mode 100644 public/img/svg/octicon-comment.svg create mode 100644 public/img/svg/octicon-credit-card.svg create mode 100644 public/img/svg/octicon-dash.svg create mode 100644 public/img/svg/octicon-dashboard.svg create mode 100644 public/img/svg/octicon-database.svg create mode 100644 public/img/svg/octicon-dependent.svg create mode 100644 public/img/svg/octicon-desktop-download.svg create mode 100644 public/img/svg/octicon-device-camera-video.svg create mode 100644 public/img/svg/octicon-device-camera.svg create mode 100644 public/img/svg/octicon-device-desktop.svg create mode 100644 public/img/svg/octicon-device-mobile.svg create mode 100644 public/img/svg/octicon-diff-added.svg create mode 100644 public/img/svg/octicon-diff-ignored.svg create mode 100644 public/img/svg/octicon-diff-modified.svg create mode 100644 public/img/svg/octicon-diff-removed.svg create mode 100644 public/img/svg/octicon-diff-renamed.svg create mode 100644 public/img/svg/octicon-diff.svg create mode 100644 public/img/svg/octicon-ellipsis.svg create mode 100644 public/img/svg/octicon-eye-closed.svg create mode 100644 public/img/svg/octicon-eye.svg create mode 100644 public/img/svg/octicon-file-binary.svg create mode 100644 public/img/svg/octicon-file-code.svg create mode 100644 public/img/svg/octicon-file-directory.svg create mode 100644 public/img/svg/octicon-file-media.svg create mode 100644 public/img/svg/octicon-file-pdf.svg create mode 100644 public/img/svg/octicon-file-submodule.svg create mode 100644 public/img/svg/octicon-file-symlink-directory.svg create mode 100644 public/img/svg/octicon-file-symlink-file.svg create mode 100644 public/img/svg/octicon-file-zip.svg create mode 100644 public/img/svg/octicon-file.svg create mode 100644 public/img/svg/octicon-flame.svg create mode 100644 public/img/svg/octicon-fold-down.svg create mode 100644 public/img/svg/octicon-fold-up.svg create mode 100644 public/img/svg/octicon-fold.svg create mode 100644 public/img/svg/octicon-gear.svg create mode 100644 public/img/svg/octicon-gift.svg create mode 100644 public/img/svg/octicon-gist-secret.svg create mode 100644 public/img/svg/octicon-gist.svg create mode 100644 public/img/svg/octicon-git-branch.svg create mode 100644 public/img/svg/octicon-git-commit.svg create mode 100644 public/img/svg/octicon-git-compare.svg create mode 100644 public/img/svg/octicon-git-merge.svg create mode 100644 public/img/svg/octicon-git-pull-request.svg create mode 100644 public/img/svg/octicon-github-action.svg create mode 100644 public/img/svg/octicon-globe.svg create mode 100644 public/img/svg/octicon-grabber.svg create mode 100644 public/img/svg/octicon-graph.svg create mode 100644 public/img/svg/octicon-heart-outline.svg create mode 100644 public/img/svg/octicon-heart.svg create mode 100644 public/img/svg/octicon-history.svg create mode 100644 public/img/svg/octicon-home.svg create mode 100644 public/img/svg/octicon-horizontal-rule.svg create mode 100644 public/img/svg/octicon-hubot.svg create mode 100644 public/img/svg/octicon-inbox.svg create mode 100644 public/img/svg/octicon-infinity.svg create mode 100644 public/img/svg/octicon-info.svg create mode 100644 public/img/svg/octicon-internal-repo.svg create mode 100644 public/img/svg/octicon-issue-closed.svg create mode 100644 public/img/svg/octicon-issue-opened.svg create mode 100644 public/img/svg/octicon-issue-reopened.svg create mode 100644 public/img/svg/octicon-italic.svg create mode 100644 public/img/svg/octicon-jersey.svg create mode 100644 public/img/svg/octicon-kebab-horizontal.svg create mode 100644 public/img/svg/octicon-kebab-vertical.svg create mode 100644 public/img/svg/octicon-key.svg create mode 100644 public/img/svg/octicon-keyboard.svg create mode 100644 public/img/svg/octicon-law.svg create mode 100644 public/img/svg/octicon-light-bulb.svg create mode 100644 public/img/svg/octicon-line-arrow-down.svg create mode 100644 public/img/svg/octicon-line-arrow-left.svg create mode 100644 public/img/svg/octicon-line-arrow-right.svg create mode 100644 public/img/svg/octicon-line-arrow-up.svg create mode 100644 public/img/svg/octicon-link-external.svg create mode 100644 public/img/svg/octicon-link.svg create mode 100644 public/img/svg/octicon-list-ordered.svg create mode 100644 public/img/svg/octicon-list-unordered.svg create mode 100644 public/img/svg/octicon-location.svg create mode 100644 public/img/svg/octicon-lock.svg create mode 100644 public/img/svg/octicon-logo-gist.svg create mode 100644 public/img/svg/octicon-logo-github.svg create mode 100644 public/img/svg/octicon-mail-read.svg create mode 100644 public/img/svg/octicon-mail.svg create mode 100644 public/img/svg/octicon-mark-github.svg create mode 100644 public/img/svg/octicon-markdown.svg create mode 100644 public/img/svg/octicon-megaphone.svg create mode 100644 public/img/svg/octicon-mention.svg create mode 100644 public/img/svg/octicon-milestone.svg create mode 100644 public/img/svg/octicon-mirror.svg create mode 100644 public/img/svg/octicon-mortar-board.svg create mode 100644 public/img/svg/octicon-mute.svg create mode 100644 public/img/svg/octicon-no-newline.svg create mode 100644 public/img/svg/octicon-north-star.svg create mode 100644 public/img/svg/octicon-note.svg create mode 100644 public/img/svg/octicon-octoface.svg create mode 100644 public/img/svg/octicon-organization.svg create mode 100644 public/img/svg/octicon-package.svg create mode 100644 public/img/svg/octicon-paintcan.svg create mode 100644 public/img/svg/octicon-pencil.svg create mode 100644 public/img/svg/octicon-person.svg create mode 100644 public/img/svg/octicon-pin.svg create mode 100644 public/img/svg/octicon-play.svg create mode 100644 public/img/svg/octicon-plug.svg create mode 100644 public/img/svg/octicon-plus-small.svg create mode 100644 public/img/svg/octicon-plus.svg create mode 100644 public/img/svg/octicon-primitive-dot-stroke.svg create mode 100644 public/img/svg/octicon-primitive-dot.svg create mode 100644 public/img/svg/octicon-primitive-square.svg create mode 100644 public/img/svg/octicon-project.svg create mode 100644 public/img/svg/octicon-pulse.svg create mode 100644 public/img/svg/octicon-question.svg create mode 100644 public/img/svg/octicon-quote.svg create mode 100644 public/img/svg/octicon-radio-tower.svg create mode 100644 public/img/svg/octicon-reply.svg create mode 100644 public/img/svg/octicon-repo-clone.svg create mode 100644 public/img/svg/octicon-repo-force-push.svg create mode 100644 public/img/svg/octicon-repo-forked.svg create mode 100644 public/img/svg/octicon-repo-pull.svg create mode 100644 public/img/svg/octicon-repo-push.svg create mode 100644 public/img/svg/octicon-repo-template-private.svg create mode 100644 public/img/svg/octicon-repo-template.svg create mode 100644 public/img/svg/octicon-repo.svg create mode 100644 public/img/svg/octicon-report.svg create mode 100644 public/img/svg/octicon-request-changes.svg create mode 100644 public/img/svg/octicon-rocket.svg create mode 100644 public/img/svg/octicon-rss.svg create mode 100644 public/img/svg/octicon-ruby.svg create mode 100644 public/img/svg/octicon-saved.svg create mode 100644 public/img/svg/octicon-screen-full.svg create mode 100644 public/img/svg/octicon-screen-normal.svg create mode 100644 public/img/svg/octicon-search.svg create mode 100644 public/img/svg/octicon-server.svg create mode 100644 public/img/svg/octicon-settings.svg create mode 100644 public/img/svg/octicon-shield-check.svg create mode 100644 public/img/svg/octicon-shield-lock.svg create mode 100644 public/img/svg/octicon-shield-x.svg create mode 100644 public/img/svg/octicon-shield.svg create mode 100644 public/img/svg/octicon-sign-in.svg create mode 100644 public/img/svg/octicon-sign-out.svg create mode 100644 public/img/svg/octicon-skip.svg create mode 100644 public/img/svg/octicon-smiley.svg create mode 100644 public/img/svg/octicon-squirrel.svg create mode 100644 public/img/svg/octicon-star.svg create mode 100644 public/img/svg/octicon-stop.svg create mode 100644 public/img/svg/octicon-sync.svg create mode 100644 public/img/svg/octicon-tag.svg create mode 100644 public/img/svg/octicon-tasklist.svg create mode 100644 public/img/svg/octicon-telescope.svg create mode 100644 public/img/svg/octicon-terminal.svg create mode 100644 public/img/svg/octicon-text-size.svg create mode 100644 public/img/svg/octicon-three-bars.svg create mode 100644 public/img/svg/octicon-thumbsdown.svg create mode 100644 public/img/svg/octicon-thumbsup.svg create mode 100644 public/img/svg/octicon-tools.svg create mode 100644 public/img/svg/octicon-trashcan.svg create mode 100644 public/img/svg/octicon-triangle-down.svg create mode 100644 public/img/svg/octicon-triangle-left.svg create mode 100644 public/img/svg/octicon-triangle-right.svg create mode 100644 public/img/svg/octicon-triangle-up.svg create mode 100644 public/img/svg/octicon-unfold.svg create mode 100644 public/img/svg/octicon-unmute.svg create mode 100644 public/img/svg/octicon-unsaved.svg create mode 100644 public/img/svg/octicon-unverified.svg create mode 100644 public/img/svg/octicon-verified.svg create mode 100644 public/img/svg/octicon-versions.svg create mode 100644 public/img/svg/octicon-watch.svg create mode 100644 public/img/svg/octicon-workflow-all.svg create mode 100644 public/img/svg/octicon-workflow.svg create mode 100644 public/img/svg/octicon-x.svg create mode 100644 public/img/svg/octicon-zap.svg create mode 100644 web_src/js/svg.js rename {assets => web_src}/svg/gitea-lock-cog.svg (100%) rename {assets => web_src}/svg/gitea-lock.svg (100%) rename {assets => web_src}/svg/gitea-unlock.svg (100%) diff --git a/.gitignore b/.gitignore index b5929cd12a..427d5dee3c 100644 --- a/.gitignore +++ b/.gitignore @@ -79,7 +79,6 @@ coverage.all /public/serviceworker.js /public/css /public/fonts -/public/img/svg /web_src/fomantic/build /VERSION diff --git a/Makefile b/Makefile index 03f2b8272d..56002e6e10 100644 --- a/Makefile +++ b/Makefile @@ -95,11 +95,13 @@ FOMANTIC_DEST_DIR := web_src/fomantic/build WEBPACK_SOURCES := $(shell find web_src/js web_src/less -type f) $(FOMANTIC_DEST) WEBPACK_CONFIGS := webpack.config.js WEBPACK_DEST := public/js/index.js public/css/index.css -WEBPACK_DEST_ENTRIES := public/js public/css public/fonts public/serviceworker.js public/img/svg +WEBPACK_DEST_ENTRIES := public/js public/css public/fonts public/serviceworker.js BINDATA_DEST := modules/public/bindata.go modules/options/bindata.go modules/templates/bindata.go BINDATA_HASH := $(addsuffix .hash,$(BINDATA_DEST)) +SVG_DEST_DIR := public/img/svg + TAGS ?= TAGS_SPLIT := $(subst $(COMMA), ,$(TAGS)) TAGS_EVIDENCE := $(MAKE_EVIDENCE_DIR)/tags @@ -158,6 +160,7 @@ help: @echo " - lint-backend lint backend files" @echo " - watch-frontend watch frontend files and continuously rebuild" @echo " - webpack build webpack files" + @echo " - svg build svg files" @echo " - fomantic build fomantic files" @echo " - generate run \"go generate\"" @echo " - fmt format the Go code" @@ -292,8 +295,8 @@ lint: lint-backend lint-frontend lint-backend: golangci-lint revive vet swagger-check swagger-validate test-vendor .PHONY: lint-frontend -lint-frontend: node_modules - npx eslint web_src/js webpack.config.js +lint-frontend: node_modules svg-check + npx eslint web_src/js build webpack.config.js npx stylelint web_src/less .PHONY: watch-frontend @@ -605,6 +608,20 @@ $(WEBPACK_DEST): $(WEBPACK_SOURCES) $(WEBPACK_CONFIGS) package-lock.json | node_ npx webpack --hide-modules --display-entrypoints=false @touch $(WEBPACK_DEST) +.PHONY: svg +svg: node-check | node_modules + rm -rf $(SVG_DEST_DIR) + node build/generate-svg.js + +.PHONY: svg-check +svg-check: svg + @diff=$$(git diff $(SVG_DEST_DIR)); \ + if [ -n "$$diff" ]; then \ + echo "Please run 'make svg' and commit the result:"; \ + echo "$${diff}"; \ + exit 1; \ + fi; + .PHONY: update-translations update-translations: mkdir -p ./translations diff --git a/build/generate-svg.js b/build/generate-svg.js new file mode 100755 index 0000000000..f2c2d3ed8a --- /dev/null +++ b/build/generate-svg.js @@ -0,0 +1,63 @@ +#!/usr/bin/env node +'use strict'; + +const fastGlob = require('fast-glob'); +const Svgo = require('svgo'); +const {resolve, parse} = require('path'); +const {readFile, writeFile, mkdir} = require('fs').promises; + +const glob = (pattern) => fastGlob.sync(pattern, {cwd: resolve(__dirname), absolute: true}); +const outputDir = resolve(__dirname, '../public/img/svg'); + +function exit(err) { + if (err) console.error(err); + process.exit(err ? 1 : 0); +} + +async function processFile(file, {prefix = ''} = {}) { + const name = `${prefix}${parse(file).name}`; + + const svgo = new Svgo({ + plugins: [ + {removeXMLNS: true}, + {removeDimensions: true}, + { + addClassesToSVGElement: { + classNames: [ + 'svg', + name, + ], + }, + }, + { + addAttributesToSVGElement: { + attributes: [ + {'width': '16'}, + {'height': '16'}, + {'aria-hidden': 'true'}, + ], + }, + }, + ], + }); + + const {data} = await svgo.optimize(await readFile(file, 'utf8')); + await writeFile(resolve(outputDir, `${name}.svg`), data); +} + +async function main() { + try { + await mkdir(outputDir); + } catch {} + + for (const file of glob('../node_modules/@primer/octicons/build/svg/*.svg')) { + await processFile(file, {prefix: 'octicon-'}); + } + + for (const file of glob('../web_src/svg/*.svg')) { + await processFile(file); + } +} + +main().then(exit).catch(exit); + diff --git a/docs/content/doc/advanced/hacking-on-gitea.en-us.md b/docs/content/doc/advanced/hacking-on-gitea.en-us.md index a76aacc9d2..e6ffe908e9 100644 --- a/docs/content/doc/advanced/hacking-on-gitea.en-us.md +++ b/docs/content/doc/advanced/hacking-on-gitea.en-us.md @@ -151,6 +151,10 @@ make lint-frontend Note: When working on frontend code, set `USE_SERVICE_WORKER` to `false` in `app.ini` to prevent undesirable caching of frontend assets. +### Building and adding SVGs + +SVG icons are built using the `make svg` target which compiles the icon sources defined in `build/generate-svg.js` into the output directory `public/img/svg`. Custom icons can be added in the `web_src/svg` directory. + ### Building Images To build the images, ImageMagick, `inkscape` and `zopflipng` binaries must be available in diff --git a/modules/svg/discover_bindata.go b/modules/svg/discover_bindata.go new file mode 100644 index 0000000000..51fd8a4a6c --- /dev/null +++ b/modules/svg/discover_bindata.go @@ -0,0 +1,32 @@ +// Copyright 2020 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +// +build bindata + +package svg + +import ( + "path" + "path/filepath" + + "code.gitea.io/gitea/modules/public" +) + +// Discover returns a map of discovered SVG icons in bindata +func Discover() map[string]string { + svgs := make(map[string]string) + + for _, file := range public.AssetNames() { + matched, _ := filepath.Match("img/svg/*.svg", file) + if matched { + content, err := public.Asset(file) + if err == nil { + filename := path.Base(file) + svgs[filename[:len(filename)-4]] = string(content) + } + } + } + + return svgs +} diff --git a/modules/svg/discover_nobindata.go b/modules/svg/discover_nobindata.go new file mode 100644 index 0000000000..04ce447de8 --- /dev/null +++ b/modules/svg/discover_nobindata.go @@ -0,0 +1,31 @@ +// Copyright 2020 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +// +build !bindata + +package svg + +import ( + "io/ioutil" + "path" + "path/filepath" + + "code.gitea.io/gitea/modules/setting" +) + +// Discover returns a map of discovered SVG icons in the file system +func Discover() map[string]string { + svgs := make(map[string]string) + + files, _ := filepath.Glob(path.Join(setting.StaticRootPath, "public", "img", "svg", "*.svg")) + for _, file := range files { + content, err := ioutil.ReadFile(file) + if err == nil { + filename := path.Base(file) + svgs[filename[:len(filename)-4]] = string(content) + } + } + + return svgs +} diff --git a/modules/svg/svg.go b/modules/svg/svg.go new file mode 100644 index 0000000000..1d1f8a90eb --- /dev/null +++ b/modules/svg/svg.go @@ -0,0 +1,13 @@ +// Copyright 2020 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package svg + +// SVGs contains discovered SVGs +var SVGs map[string]string + +// Init discovers SVGs and populates the `SVGs` variable +func Init() { + SVGs = Discover() +} diff --git a/modules/templates/helper.go b/modules/templates/helper.go index 5001963e90..bb60db541c 100644 --- a/modules/templates/helper.go +++ b/modules/templates/helper.go @@ -30,6 +30,7 @@ import ( "code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/repository" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/svg" "code.gitea.io/gitea/modules/timeutil" "code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/services/gitdiff" @@ -439,9 +440,19 @@ func NewTextFuncMap() []texttmpl.FuncMap { }} } +var widthRe = regexp.MustCompile(`width="[0-9]+?"`) +var heightRe = regexp.MustCompile(`height="[0-9]+?"`) + // SVG render icons func SVG(icon string, size int) template.HTML { - return template.HTML(fmt.Sprintf(``, icon, size, size, icon)) + if svgStr, ok := svg.SVGs[icon]; ok { + if size != 16 { + svgStr = widthRe.ReplaceAllString(svgStr, fmt.Sprintf(`width="%d"`, size)) + svgStr = heightRe.ReplaceAllString(svgStr, fmt.Sprintf(`height="%d"`, size)) + } + return template.HTML(svgStr) + } + return template.HTML("") } // Safe render raw as HTML diff --git a/package-lock.json b/package-lock.json index 588d52f106..515d8e98e8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2492,15 +2492,6 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -3763,14 +3754,6 @@ "esutils": "^2.0.2" } }, - "dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "requires": { - "utila": "~0.4" - } - }, "dom-serializer": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", @@ -3801,6 +3784,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, "requires": { "domelementtype": "1" } @@ -3810,11 +3794,6 @@ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.0.12.tgz", "integrity": "sha512-Fl8KseK1imyhErHypFPA8qpq9gPzlsJ/EukA6yk9o0gX23p1TzC+rh9LqNg1qvErRTc0UNMYlKxEGSfSh43NDg==" }, - "domready": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/domready/-/domready-1.0.8.tgz", - "integrity": "sha1-kfJS5Ze2Wvd+dFriTdAYXV4m1Yw=" - }, "domutils": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", @@ -6870,109 +6849,17 @@ "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" }, - "html-minifier": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", - "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", - "requires": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" - }, - "dependencies": { - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "uglify-js": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", - "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", - "requires": { - "commander": "~2.19.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" - } - } - } - } - }, "html-tags": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", "dev": true }, - "html-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", - "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", - "requires": { - "html-minifier": "^3.2.3", - "loader-utils": "^0.2.16", - "lodash": "^4.17.3", - "pretty-error": "^2.0.2", - "tapable": "^1.0.0", - "toposort": "^1.0.0", - "util.promisify": "1.0.0" - }, - "dependencies": { - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - } - } - }, "htmlparser2": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, "requires": { "domelementtype": "^1.3.1", "domhandler": "^2.3.0", @@ -6985,12 +6872,14 @@ "entities": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -7050,7 +6939,8 @@ "image-size": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=" + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "optional": true }, "immutable": { "version": "3.8.2", @@ -7688,11 +7578,6 @@ "jquery": ">=1.4.2" } }, - "js-base64": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.2.tgz", - "integrity": "sha512-1hgLrLIrmCgZG+ID3VoLNLOSwjGnoZa8tyrUdEteMeIzsT6PH7PMLyUvbDwzNE56P3PNxyvuIOx4Uh2E5rzQIw==" - }, "js-beautify": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.11.0.tgz", @@ -8333,11 +8218,6 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" - }, "lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", @@ -8748,14 +8628,6 @@ } } }, - "merge-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-1.0.1.tgz", - "integrity": "sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==", - "requires": { - "is-plain-obj": "^1.1" - } - }, "merge-source-map": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", @@ -8984,11 +8856,6 @@ "through2": "^2.0.0" } }, - "mitt": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.1.2.tgz", - "integrity": "sha1-OA5hSA1qYVtmDwertg1R4KTkvtY=" - }, "mixin-deep": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", @@ -9124,14 +8991,6 @@ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "requires": { - "lower-case": "^1.1.1" - } - }, "node-fetch": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", @@ -9540,14 +9399,6 @@ "readable-stream": "^2.1.5" } }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "requires": { - "no-case": "^2.2.0" - } - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -10531,14 +10382,6 @@ "postcss-values-parser": "^2.0.0" } }, - "postcss-prefix-selector": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/postcss-prefix-selector/-/postcss-prefix-selector-1.7.2.tgz", - "integrity": "sha512-ddmzjWNmGs7E/nyolJ021/Gk6oBLRQLyyXKGV4Mu+Y0gquo+XlXSDP0/Y2J8C/cad/GLyftf2H0XtuDFQZxN3w==", - "requires": { - "postcss": "^7.0.0" - } - }, "postcss-preset-env": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", @@ -10780,58 +10623,6 @@ "uniq": "^1.0.1" } }, - "posthtml": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.9.2.tgz", - "integrity": "sha1-9MBtufZ7Yf0XxOJW5+PZUVv3Jv0=", - "requires": { - "posthtml-parser": "^0.2.0", - "posthtml-render": "^1.0.5" - } - }, - "posthtml-parser": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.2.1.tgz", - "integrity": "sha1-NdUw3jhnQMK6JP8usvrznM3ycd0=", - "requires": { - "htmlparser2": "^3.8.3", - "isobject": "^2.1.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "posthtml-rename-id": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/posthtml-rename-id/-/posthtml-rename-id-1.0.12.tgz", - "integrity": "sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==", - "requires": { - "escape-string-regexp": "1.0.5" - } - }, - "posthtml-render": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.2.2.tgz", - "integrity": "sha512-MbIXTWwAfJ9qET6Zl29UNwJcDJEEz9Zkr5oDhiujitJa7YBJwEpbkX2cmuklCDxubTMoRWpid3q8DrSyGnUUzQ==" - }, - "posthtml-svg-mode": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/posthtml-svg-mode/-/posthtml-svg-mode-1.0.3.tgz", - "integrity": "sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==", - "requires": { - "merge-options": "1.0.1", - "posthtml": "^0.9.2", - "posthtml-parser": "^0.2.1", - "posthtml-render": "^1.0.6" - } - }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -10849,15 +10640,6 @@ "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", "optional": true }, - "pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", - "requires": { - "renderkid": "^2.0.1", - "utila": "~0.4" - } - }, "pretty-hrtime": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", @@ -11049,6 +10831,27 @@ "safe-buffer": "^5.1.0" } }, + "raw-loader": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.1.tgz", + "integrity": "sha512-baolhQBSi3iNh1cglJjA0mYzga+wePk7vdEX//1dTFd+v4TsQlQE0jitJSNF1OIP82rdYulH7otaVmdlDaJ64A==", + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, "react": { "version": "15.6.2", "resolved": "https://registry.npmjs.org/react/-/react-15.6.2.tgz", @@ -11424,11 +11227,6 @@ } } }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" - }, "remark": { "version": "12.0.0", "resolved": "https://registry.npmjs.org/remark/-/remark-12.0.0.tgz", @@ -11519,45 +11317,6 @@ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" }, - "renderkid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", - "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", - "requires": { - "css-select": "^1.1.0", - "dom-converter": "^0.2", - "htmlparser2": "^3.3.0", - "strip-ansi": "^3.0.0", - "utila": "^0.4.0" - }, - "dependencies": { - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - } - } - }, "repeat-element": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", @@ -12832,259 +12591,6 @@ "es6-symbol": "^3.1.1" } }, - "svg-baker": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/svg-baker/-/svg-baker-1.7.0.tgz", - "integrity": "sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==", - "requires": { - "bluebird": "^3.5.0", - "clone": "^2.1.1", - "he": "^1.1.1", - "image-size": "^0.5.1", - "loader-utils": "^1.1.0", - "merge-options": "1.0.1", - "micromatch": "3.1.0", - "postcss": "^5.2.17", - "postcss-prefix-selector": "^1.6.0", - "posthtml-rename-id": "^1.0", - "posthtml-svg-mode": "^1.0.3", - "query-string": "^4.3.2", - "traverse": "^0.6.6" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - }, - "micromatch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.0.tgz", - "integrity": "sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.2.2", - "define-property": "^1.0.0", - "extend-shallow": "^2.0.1", - "extglob": "^2.0.2", - "fragment-cache": "^0.2.1", - "kind-of": "^5.0.2", - "nanomatch": "^1.2.1", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "svg-baker-runtime": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/svg-baker-runtime/-/svg-baker-runtime-1.4.7.tgz", - "integrity": "sha512-Zorfwwj5+lWjk/oxwSMsRdS2sPQQdTmmsvaSpzU+i9ZWi3zugHLt6VckWfnswphQP0LmOel3nggpF5nETbt6xw==", - "requires": { - "deepmerge": "1.3.2", - "mitt": "1.1.2", - "svg-baker": "^1.7.0" - }, - "dependencies": { - "deepmerge": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.3.2.tgz", - "integrity": "sha1-FmNpFinU2/42T6EqKk8KqGqjoFA=" - } - } - }, - "svg-sprite-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/svg-sprite-loader/-/svg-sprite-loader-5.0.0.tgz", - "integrity": "sha512-/hedkRC2IS0E+kFIb+OUCfqQlbVx72/WEEeRGw2uPsNgOOgJEONXzjfSm+CJ3pB9gOHytlBmPMS8ijMCp5s2Eg==", - "requires": { - "bluebird": "^3.5.0", - "deepmerge": "1.3.2", - "domready": "1.0.8", - "escape-string-regexp": "1.0.5", - "html-webpack-plugin": "^3.2.0", - "loader-utils": "^1.1.0", - "svg-baker": "^1.5.0", - "svg-baker-runtime": "^1.4.7", - "url-slug": "2.0.0" - }, - "dependencies": { - "deepmerge": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.3.2.tgz", - "integrity": "sha1-FmNpFinU2/42T6EqKk8KqGqjoFA=" - } - } - }, "svg-tags": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", @@ -13111,15 +12617,6 @@ "util.promisify": "~1.0.0" } }, - "svgo-loader": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/svgo-loader/-/svgo-loader-2.2.1.tgz", - "integrity": "sha512-9dyz/h6ae04pAVRz7QY8bLXtMbwA19NPpCPfCixgW0qXNDCOlHbDRqvtT5/2gzRxfuibWCUP6ZBQmZWF9rjWhQ==", - "requires": { - "js-yaml": "^3.13.1", - "loader-utils": "^1.0.3" - } - }, "swagger-client": { "version": "3.10.9", "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.10.9.tgz", @@ -13585,11 +13082,6 @@ "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=" }, - "toposort": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", - "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=" - }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", @@ -13831,11 +13323,6 @@ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" }, - "unidecode": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/unidecode/-/unidecode-0.1.8.tgz", - "integrity": "sha1-77swFTi8RSRqmsjFWdcvAVMFBT4=" - }, "unified": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/unified/-/unified-9.0.0.tgz", @@ -14024,11 +13511,6 @@ "integrity": "sha512-NkghVbjJeIBaiuC+Yvr8B99L2E/THCBoO9REo1uH+ulpxJyO2S4UNKSwXgbSC7GBRjTd/+0LFYFTQsbVfLQNaw==", "dev": true }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" - }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -14075,14 +13557,6 @@ "ip-regex": "^1.0.1" } }, - "url-slug": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/url-slug/-/url-slug-2.0.0.tgz", - "integrity": "sha1-p4nVrtSZXA2VrzM3etHVxo1NcCc=", - "requires": { - "unidecode": "0.1.8" - } - }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -14119,11 +13593,6 @@ "object.getownpropertydescriptors": "^2.1.0" } }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" - }, "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", diff --git a/package.json b/package.json index 88eab49ea1..a751dd528f 100644 --- a/package.json +++ b/package.json @@ -30,9 +30,7 @@ "monaco-editor-webpack-plugin": "1.9.0", "postcss-loader": "3.0.0", "postcss-preset-env": "6.7.0", - "svg-sprite-loader": "5.0.0", - "svgo": "1.3.2", - "svgo-loader": "2.2.1", + "raw-loader": "4.0.1", "swagger-ui": "3.28.0", "terser-webpack-plugin": "3.0.6", "tributejs": "5.1.3", @@ -56,6 +54,7 @@ "eslint-plugin-unicorn": "20.1.0", "stylelint": "13.6.1", "stylelint-config-standard": "20.0.0", + "svgo": "1.3.2", "updates": "10.2.15" }, "browserslist": [ diff --git a/public/img/svg/gitea-lock-cog.svg b/public/img/svg/gitea-lock-cog.svg new file mode 100644 index 0000000000..11a9d11728 --- /dev/null +++ b/public/img/svg/gitea-lock-cog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/gitea-lock.svg b/public/img/svg/gitea-lock.svg new file mode 100644 index 0000000000..a3ebc34441 --- /dev/null +++ b/public/img/svg/gitea-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/gitea-unlock.svg b/public/img/svg/gitea-unlock.svg new file mode 100644 index 0000000000..c798f15b75 --- /dev/null +++ b/public/img/svg/gitea-unlock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-alert.svg b/public/img/svg/octicon-alert.svg new file mode 100644 index 0000000000..3ced9bda5d --- /dev/null +++ b/public/img/svg/octicon-alert.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-archive.svg b/public/img/svg/octicon-archive.svg new file mode 100644 index 0000000000..9414b7461d --- /dev/null +++ b/public/img/svg/octicon-archive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-arrow-both.svg b/public/img/svg/octicon-arrow-both.svg new file mode 100644 index 0000000000..be90f8a984 --- /dev/null +++ b/public/img/svg/octicon-arrow-both.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-arrow-down.svg b/public/img/svg/octicon-arrow-down.svg new file mode 100644 index 0000000000..ade603ce09 --- /dev/null +++ b/public/img/svg/octicon-arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-arrow-left.svg b/public/img/svg/octicon-arrow-left.svg new file mode 100644 index 0000000000..91154001ae --- /dev/null +++ b/public/img/svg/octicon-arrow-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-arrow-right.svg b/public/img/svg/octicon-arrow-right.svg new file mode 100644 index 0000000000..0ebd24e098 --- /dev/null +++ b/public/img/svg/octicon-arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-arrow-small-down.svg b/public/img/svg/octicon-arrow-small-down.svg new file mode 100644 index 0000000000..4b41b5af58 --- /dev/null +++ b/public/img/svg/octicon-arrow-small-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-arrow-small-left.svg b/public/img/svg/octicon-arrow-small-left.svg new file mode 100644 index 0000000000..07d6892a12 --- /dev/null +++ b/public/img/svg/octicon-arrow-small-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-arrow-small-right.svg b/public/img/svg/octicon-arrow-small-right.svg new file mode 100644 index 0000000000..832f9183d3 --- /dev/null +++ b/public/img/svg/octicon-arrow-small-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-arrow-small-up.svg b/public/img/svg/octicon-arrow-small-up.svg new file mode 100644 index 0000000000..bc278e9127 --- /dev/null +++ b/public/img/svg/octicon-arrow-small-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-arrow-up.svg b/public/img/svg/octicon-arrow-up.svg new file mode 100644 index 0000000000..1984167ef1 --- /dev/null +++ b/public/img/svg/octicon-arrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-beaker.svg b/public/img/svg/octicon-beaker.svg new file mode 100644 index 0000000000..49f2cd5150 --- /dev/null +++ b/public/img/svg/octicon-beaker.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-bell.svg b/public/img/svg/octicon-bell.svg new file mode 100644 index 0000000000..ded6f7447e --- /dev/null +++ b/public/img/svg/octicon-bell.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-bold.svg b/public/img/svg/octicon-bold.svg new file mode 100644 index 0000000000..4cc47fb4f9 --- /dev/null +++ b/public/img/svg/octicon-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-book.svg b/public/img/svg/octicon-book.svg new file mode 100644 index 0000000000..cad407388b --- /dev/null +++ b/public/img/svg/octicon-book.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-bookmark.svg b/public/img/svg/octicon-bookmark.svg new file mode 100644 index 0000000000..2376d4b7bc --- /dev/null +++ b/public/img/svg/octicon-bookmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-briefcase.svg b/public/img/svg/octicon-briefcase.svg new file mode 100644 index 0000000000..a35856e983 --- /dev/null +++ b/public/img/svg/octicon-briefcase.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-broadcast.svg b/public/img/svg/octicon-broadcast.svg new file mode 100644 index 0000000000..7b1b10e7b4 --- /dev/null +++ b/public/img/svg/octicon-broadcast.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-browser.svg b/public/img/svg/octicon-browser.svg new file mode 100644 index 0000000000..43b7c50520 --- /dev/null +++ b/public/img/svg/octicon-browser.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-bug.svg b/public/img/svg/octicon-bug.svg new file mode 100644 index 0000000000..a4bc334ac2 --- /dev/null +++ b/public/img/svg/octicon-bug.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-calendar.svg b/public/img/svg/octicon-calendar.svg new file mode 100644 index 0000000000..9eab225f3f --- /dev/null +++ b/public/img/svg/octicon-calendar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-check.svg b/public/img/svg/octicon-check.svg new file mode 100644 index 0000000000..1543bd246e --- /dev/null +++ b/public/img/svg/octicon-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-checklist.svg b/public/img/svg/octicon-checklist.svg new file mode 100644 index 0000000000..d6d527c296 --- /dev/null +++ b/public/img/svg/octicon-checklist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-chevron-down.svg b/public/img/svg/octicon-chevron-down.svg new file mode 100644 index 0000000000..9871741a96 --- /dev/null +++ b/public/img/svg/octicon-chevron-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-chevron-left.svg b/public/img/svg/octicon-chevron-left.svg new file mode 100644 index 0000000000..3c24eb19e4 --- /dev/null +++ b/public/img/svg/octicon-chevron-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-chevron-right.svg b/public/img/svg/octicon-chevron-right.svg new file mode 100644 index 0000000000..0741c274e9 --- /dev/null +++ b/public/img/svg/octicon-chevron-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-chevron-up.svg b/public/img/svg/octicon-chevron-up.svg new file mode 100644 index 0000000000..ba92f17dd0 --- /dev/null +++ b/public/img/svg/octicon-chevron-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-circle-slash.svg b/public/img/svg/octicon-circle-slash.svg new file mode 100644 index 0000000000..f8f5120ec6 --- /dev/null +++ b/public/img/svg/octicon-circle-slash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-circuit-board.svg b/public/img/svg/octicon-circuit-board.svg new file mode 100644 index 0000000000..d3c9d2cc44 --- /dev/null +++ b/public/img/svg/octicon-circuit-board.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-clippy.svg b/public/img/svg/octicon-clippy.svg new file mode 100644 index 0000000000..75accdad8c --- /dev/null +++ b/public/img/svg/octicon-clippy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-clock.svg b/public/img/svg/octicon-clock.svg new file mode 100644 index 0000000000..42d7f56bf8 --- /dev/null +++ b/public/img/svg/octicon-clock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-cloud-download.svg b/public/img/svg/octicon-cloud-download.svg new file mode 100644 index 0000000000..617f0bb8f9 --- /dev/null +++ b/public/img/svg/octicon-cloud-download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-cloud-upload.svg b/public/img/svg/octicon-cloud-upload.svg new file mode 100644 index 0000000000..fca34dcee2 --- /dev/null +++ b/public/img/svg/octicon-cloud-upload.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-code.svg b/public/img/svg/octicon-code.svg new file mode 100644 index 0000000000..93eb72bb0d --- /dev/null +++ b/public/img/svg/octicon-code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-comment-discussion.svg b/public/img/svg/octicon-comment-discussion.svg new file mode 100644 index 0000000000..3314c21247 --- /dev/null +++ b/public/img/svg/octicon-comment-discussion.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-comment.svg b/public/img/svg/octicon-comment.svg new file mode 100644 index 0000000000..ca5125f032 --- /dev/null +++ b/public/img/svg/octicon-comment.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-credit-card.svg b/public/img/svg/octicon-credit-card.svg new file mode 100644 index 0000000000..6f002ced51 --- /dev/null +++ b/public/img/svg/octicon-credit-card.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-dash.svg b/public/img/svg/octicon-dash.svg new file mode 100644 index 0000000000..e22ea76ebb --- /dev/null +++ b/public/img/svg/octicon-dash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-dashboard.svg b/public/img/svg/octicon-dashboard.svg new file mode 100644 index 0000000000..e7be11399e --- /dev/null +++ b/public/img/svg/octicon-dashboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-database.svg b/public/img/svg/octicon-database.svg new file mode 100644 index 0000000000..ab0df54916 --- /dev/null +++ b/public/img/svg/octicon-database.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-dependent.svg b/public/img/svg/octicon-dependent.svg new file mode 100644 index 0000000000..f9bfcf9238 --- /dev/null +++ b/public/img/svg/octicon-dependent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-desktop-download.svg b/public/img/svg/octicon-desktop-download.svg new file mode 100644 index 0000000000..8e5f38ac18 --- /dev/null +++ b/public/img/svg/octicon-desktop-download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-device-camera-video.svg b/public/img/svg/octicon-device-camera-video.svg new file mode 100644 index 0000000000..9cdc1b18ac --- /dev/null +++ b/public/img/svg/octicon-device-camera-video.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-device-camera.svg b/public/img/svg/octicon-device-camera.svg new file mode 100644 index 0000000000..66d510ee16 --- /dev/null +++ b/public/img/svg/octicon-device-camera.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-device-desktop.svg b/public/img/svg/octicon-device-desktop.svg new file mode 100644 index 0000000000..a08062a38c --- /dev/null +++ b/public/img/svg/octicon-device-desktop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-device-mobile.svg b/public/img/svg/octicon-device-mobile.svg new file mode 100644 index 0000000000..66d566768a --- /dev/null +++ b/public/img/svg/octicon-device-mobile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-diff-added.svg b/public/img/svg/octicon-diff-added.svg new file mode 100644 index 0000000000..c1f17f3990 --- /dev/null +++ b/public/img/svg/octicon-diff-added.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-diff-ignored.svg b/public/img/svg/octicon-diff-ignored.svg new file mode 100644 index 0000000000..b3d606eddd --- /dev/null +++ b/public/img/svg/octicon-diff-ignored.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-diff-modified.svg b/public/img/svg/octicon-diff-modified.svg new file mode 100644 index 0000000000..28fa41eb49 --- /dev/null +++ b/public/img/svg/octicon-diff-modified.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-diff-removed.svg b/public/img/svg/octicon-diff-removed.svg new file mode 100644 index 0000000000..eb38d456e3 --- /dev/null +++ b/public/img/svg/octicon-diff-removed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-diff-renamed.svg b/public/img/svg/octicon-diff-renamed.svg new file mode 100644 index 0000000000..e268a61a44 --- /dev/null +++ b/public/img/svg/octicon-diff-renamed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-diff.svg b/public/img/svg/octicon-diff.svg new file mode 100644 index 0000000000..377598dfc8 --- /dev/null +++ b/public/img/svg/octicon-diff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-ellipsis.svg b/public/img/svg/octicon-ellipsis.svg new file mode 100644 index 0000000000..f413acb8c3 --- /dev/null +++ b/public/img/svg/octicon-ellipsis.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-eye-closed.svg b/public/img/svg/octicon-eye-closed.svg new file mode 100644 index 0000000000..9036539d75 --- /dev/null +++ b/public/img/svg/octicon-eye-closed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-eye.svg b/public/img/svg/octicon-eye.svg new file mode 100644 index 0000000000..3b086a55dc --- /dev/null +++ b/public/img/svg/octicon-eye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-file-binary.svg b/public/img/svg/octicon-file-binary.svg new file mode 100644 index 0000000000..71897cdf3e --- /dev/null +++ b/public/img/svg/octicon-file-binary.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-file-code.svg b/public/img/svg/octicon-file-code.svg new file mode 100644 index 0000000000..8c8318cfe5 --- /dev/null +++ b/public/img/svg/octicon-file-code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-file-directory.svg b/public/img/svg/octicon-file-directory.svg new file mode 100644 index 0000000000..4ae23cfe2f --- /dev/null +++ b/public/img/svg/octicon-file-directory.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-file-media.svg b/public/img/svg/octicon-file-media.svg new file mode 100644 index 0000000000..53d4ddd180 --- /dev/null +++ b/public/img/svg/octicon-file-media.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-file-pdf.svg b/public/img/svg/octicon-file-pdf.svg new file mode 100644 index 0000000000..a986d99f8c --- /dev/null +++ b/public/img/svg/octicon-file-pdf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-file-submodule.svg b/public/img/svg/octicon-file-submodule.svg new file mode 100644 index 0000000000..d03ab9fbd3 --- /dev/null +++ b/public/img/svg/octicon-file-submodule.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-file-symlink-directory.svg b/public/img/svg/octicon-file-symlink-directory.svg new file mode 100644 index 0000000000..a1f22d5c79 --- /dev/null +++ b/public/img/svg/octicon-file-symlink-directory.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-file-symlink-file.svg b/public/img/svg/octicon-file-symlink-file.svg new file mode 100644 index 0000000000..6b9246d3e4 --- /dev/null +++ b/public/img/svg/octicon-file-symlink-file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-file-zip.svg b/public/img/svg/octicon-file-zip.svg new file mode 100644 index 0000000000..2155236ff3 --- /dev/null +++ b/public/img/svg/octicon-file-zip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-file.svg b/public/img/svg/octicon-file.svg new file mode 100644 index 0000000000..35c919a8e1 --- /dev/null +++ b/public/img/svg/octicon-file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-flame.svg b/public/img/svg/octicon-flame.svg new file mode 100644 index 0000000000..419034c2d8 --- /dev/null +++ b/public/img/svg/octicon-flame.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-fold-down.svg b/public/img/svg/octicon-fold-down.svg new file mode 100644 index 0000000000..391ab8100e --- /dev/null +++ b/public/img/svg/octicon-fold-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-fold-up.svg b/public/img/svg/octicon-fold-up.svg new file mode 100644 index 0000000000..9329748763 --- /dev/null +++ b/public/img/svg/octicon-fold-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-fold.svg b/public/img/svg/octicon-fold.svg new file mode 100644 index 0000000000..6065f94fe8 --- /dev/null +++ b/public/img/svg/octicon-fold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-gear.svg b/public/img/svg/octicon-gear.svg new file mode 100644 index 0000000000..53859ef573 --- /dev/null +++ b/public/img/svg/octicon-gear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-gift.svg b/public/img/svg/octicon-gift.svg new file mode 100644 index 0000000000..9856e57020 --- /dev/null +++ b/public/img/svg/octicon-gift.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-gist-secret.svg b/public/img/svg/octicon-gist-secret.svg new file mode 100644 index 0000000000..4b0fe5e702 --- /dev/null +++ b/public/img/svg/octicon-gist-secret.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-gist.svg b/public/img/svg/octicon-gist.svg new file mode 100644 index 0000000000..8b52e7062f --- /dev/null +++ b/public/img/svg/octicon-gist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-git-branch.svg b/public/img/svg/octicon-git-branch.svg new file mode 100644 index 0000000000..381c95c75b --- /dev/null +++ b/public/img/svg/octicon-git-branch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-git-commit.svg b/public/img/svg/octicon-git-commit.svg new file mode 100644 index 0000000000..0b2eed6c4f --- /dev/null +++ b/public/img/svg/octicon-git-commit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-git-compare.svg b/public/img/svg/octicon-git-compare.svg new file mode 100644 index 0000000000..d709e70769 --- /dev/null +++ b/public/img/svg/octicon-git-compare.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-git-merge.svg b/public/img/svg/octicon-git-merge.svg new file mode 100644 index 0000000000..a72cf0467d --- /dev/null +++ b/public/img/svg/octicon-git-merge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-git-pull-request.svg b/public/img/svg/octicon-git-pull-request.svg new file mode 100644 index 0000000000..1566fbaa0c --- /dev/null +++ b/public/img/svg/octicon-git-pull-request.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-github-action.svg b/public/img/svg/octicon-github-action.svg new file mode 100644 index 0000000000..c81543c6fd --- /dev/null +++ b/public/img/svg/octicon-github-action.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-globe.svg b/public/img/svg/octicon-globe.svg new file mode 100644 index 0000000000..ad92eaa0bb --- /dev/null +++ b/public/img/svg/octicon-globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-grabber.svg b/public/img/svg/octicon-grabber.svg new file mode 100644 index 0000000000..e63d0c26ac --- /dev/null +++ b/public/img/svg/octicon-grabber.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-graph.svg b/public/img/svg/octicon-graph.svg new file mode 100644 index 0000000000..df830a51bf --- /dev/null +++ b/public/img/svg/octicon-graph.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-heart-outline.svg b/public/img/svg/octicon-heart-outline.svg new file mode 100644 index 0000000000..bcfc9bd3f2 --- /dev/null +++ b/public/img/svg/octicon-heart-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-heart.svg b/public/img/svg/octicon-heart.svg new file mode 100644 index 0000000000..2aec363a5f --- /dev/null +++ b/public/img/svg/octicon-heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-history.svg b/public/img/svg/octicon-history.svg new file mode 100644 index 0000000000..24cbc65c30 --- /dev/null +++ b/public/img/svg/octicon-history.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-home.svg b/public/img/svg/octicon-home.svg new file mode 100644 index 0000000000..55d0ed73b1 --- /dev/null +++ b/public/img/svg/octicon-home.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-horizontal-rule.svg b/public/img/svg/octicon-horizontal-rule.svg new file mode 100644 index 0000000000..93dba6a093 --- /dev/null +++ b/public/img/svg/octicon-horizontal-rule.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-hubot.svg b/public/img/svg/octicon-hubot.svg new file mode 100644 index 0000000000..12380432f2 --- /dev/null +++ b/public/img/svg/octicon-hubot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-inbox.svg b/public/img/svg/octicon-inbox.svg new file mode 100644 index 0000000000..2602489200 --- /dev/null +++ b/public/img/svg/octicon-inbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-infinity.svg b/public/img/svg/octicon-infinity.svg new file mode 100644 index 0000000000..64df65c8c3 --- /dev/null +++ b/public/img/svg/octicon-infinity.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-info.svg b/public/img/svg/octicon-info.svg new file mode 100644 index 0000000000..873de39fa2 --- /dev/null +++ b/public/img/svg/octicon-info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-internal-repo.svg b/public/img/svg/octicon-internal-repo.svg new file mode 100644 index 0000000000..038aa429cd --- /dev/null +++ b/public/img/svg/octicon-internal-repo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-issue-closed.svg b/public/img/svg/octicon-issue-closed.svg new file mode 100644 index 0000000000..10f897c66a --- /dev/null +++ b/public/img/svg/octicon-issue-closed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-issue-opened.svg b/public/img/svg/octicon-issue-opened.svg new file mode 100644 index 0000000000..a49e17aeaf --- /dev/null +++ b/public/img/svg/octicon-issue-opened.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-issue-reopened.svg b/public/img/svg/octicon-issue-reopened.svg new file mode 100644 index 0000000000..16441a8c52 --- /dev/null +++ b/public/img/svg/octicon-issue-reopened.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-italic.svg b/public/img/svg/octicon-italic.svg new file mode 100644 index 0000000000..39e6f28b7d --- /dev/null +++ b/public/img/svg/octicon-italic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-jersey.svg b/public/img/svg/octicon-jersey.svg new file mode 100644 index 0000000000..80fac4793b --- /dev/null +++ b/public/img/svg/octicon-jersey.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-kebab-horizontal.svg b/public/img/svg/octicon-kebab-horizontal.svg new file mode 100644 index 0000000000..786c735ac7 --- /dev/null +++ b/public/img/svg/octicon-kebab-horizontal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-kebab-vertical.svg b/public/img/svg/octicon-kebab-vertical.svg new file mode 100644 index 0000000000..bc10abda22 --- /dev/null +++ b/public/img/svg/octicon-kebab-vertical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-key.svg b/public/img/svg/octicon-key.svg new file mode 100644 index 0000000000..6d1a942b83 --- /dev/null +++ b/public/img/svg/octicon-key.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-keyboard.svg b/public/img/svg/octicon-keyboard.svg new file mode 100644 index 0000000000..a62a1d2086 --- /dev/null +++ b/public/img/svg/octicon-keyboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-law.svg b/public/img/svg/octicon-law.svg new file mode 100644 index 0000000000..78502c7c7d --- /dev/null +++ b/public/img/svg/octicon-law.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-light-bulb.svg b/public/img/svg/octicon-light-bulb.svg new file mode 100644 index 0000000000..79b83ffea0 --- /dev/null +++ b/public/img/svg/octicon-light-bulb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-line-arrow-down.svg b/public/img/svg/octicon-line-arrow-down.svg new file mode 100644 index 0000000000..74b6ee33ce --- /dev/null +++ b/public/img/svg/octicon-line-arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-line-arrow-left.svg b/public/img/svg/octicon-line-arrow-left.svg new file mode 100644 index 0000000000..cfbd1e8767 --- /dev/null +++ b/public/img/svg/octicon-line-arrow-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-line-arrow-right.svg b/public/img/svg/octicon-line-arrow-right.svg new file mode 100644 index 0000000000..4aa96ba78d --- /dev/null +++ b/public/img/svg/octicon-line-arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-line-arrow-up.svg b/public/img/svg/octicon-line-arrow-up.svg new file mode 100644 index 0000000000..8488fcde48 --- /dev/null +++ b/public/img/svg/octicon-line-arrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-link-external.svg b/public/img/svg/octicon-link-external.svg new file mode 100644 index 0000000000..2e16b3b223 --- /dev/null +++ b/public/img/svg/octicon-link-external.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-link.svg b/public/img/svg/octicon-link.svg new file mode 100644 index 0000000000..f00d32ab09 --- /dev/null +++ b/public/img/svg/octicon-link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-list-ordered.svg b/public/img/svg/octicon-list-ordered.svg new file mode 100644 index 0000000000..b018fab8a9 --- /dev/null +++ b/public/img/svg/octicon-list-ordered.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-list-unordered.svg b/public/img/svg/octicon-list-unordered.svg new file mode 100644 index 0000000000..5eb49184de --- /dev/null +++ b/public/img/svg/octicon-list-unordered.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-location.svg b/public/img/svg/octicon-location.svg new file mode 100644 index 0000000000..e6d6794854 --- /dev/null +++ b/public/img/svg/octicon-location.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-lock.svg b/public/img/svg/octicon-lock.svg new file mode 100644 index 0000000000..25de262af5 --- /dev/null +++ b/public/img/svg/octicon-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-logo-gist.svg b/public/img/svg/octicon-logo-gist.svg new file mode 100644 index 0000000000..24513be6e8 --- /dev/null +++ b/public/img/svg/octicon-logo-gist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-logo-github.svg b/public/img/svg/octicon-logo-github.svg new file mode 100644 index 0000000000..10a17fb04b --- /dev/null +++ b/public/img/svg/octicon-logo-github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-mail-read.svg b/public/img/svg/octicon-mail-read.svg new file mode 100644 index 0000000000..2fdaac473a --- /dev/null +++ b/public/img/svg/octicon-mail-read.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-mail.svg b/public/img/svg/octicon-mail.svg new file mode 100644 index 0000000000..3ddbff9313 --- /dev/null +++ b/public/img/svg/octicon-mail.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-mark-github.svg b/public/img/svg/octicon-mark-github.svg new file mode 100644 index 0000000000..bb1a4ec8e5 --- /dev/null +++ b/public/img/svg/octicon-mark-github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-markdown.svg b/public/img/svg/octicon-markdown.svg new file mode 100644 index 0000000000..bce2e27b14 --- /dev/null +++ b/public/img/svg/octicon-markdown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-megaphone.svg b/public/img/svg/octicon-megaphone.svg new file mode 100644 index 0000000000..154debbfaf --- /dev/null +++ b/public/img/svg/octicon-megaphone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-mention.svg b/public/img/svg/octicon-mention.svg new file mode 100644 index 0000000000..a345c3b7f0 --- /dev/null +++ b/public/img/svg/octicon-mention.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-milestone.svg b/public/img/svg/octicon-milestone.svg new file mode 100644 index 0000000000..cf537dffd3 --- /dev/null +++ b/public/img/svg/octicon-milestone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-mirror.svg b/public/img/svg/octicon-mirror.svg new file mode 100644 index 0000000000..2f6215dca8 --- /dev/null +++ b/public/img/svg/octicon-mirror.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-mortar-board.svg b/public/img/svg/octicon-mortar-board.svg new file mode 100644 index 0000000000..8f86ca38a5 --- /dev/null +++ b/public/img/svg/octicon-mortar-board.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-mute.svg b/public/img/svg/octicon-mute.svg new file mode 100644 index 0000000000..78d254c490 --- /dev/null +++ b/public/img/svg/octicon-mute.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-no-newline.svg b/public/img/svg/octicon-no-newline.svg new file mode 100644 index 0000000000..47604ad6cc --- /dev/null +++ b/public/img/svg/octicon-no-newline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-north-star.svg b/public/img/svg/octicon-north-star.svg new file mode 100644 index 0000000000..a894bb573e --- /dev/null +++ b/public/img/svg/octicon-north-star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-note.svg b/public/img/svg/octicon-note.svg new file mode 100644 index 0000000000..d8a2d4b734 --- /dev/null +++ b/public/img/svg/octicon-note.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-octoface.svg b/public/img/svg/octicon-octoface.svg new file mode 100644 index 0000000000..3345509547 --- /dev/null +++ b/public/img/svg/octicon-octoface.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-organization.svg b/public/img/svg/octicon-organization.svg new file mode 100644 index 0000000000..64fefe2714 --- /dev/null +++ b/public/img/svg/octicon-organization.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-package.svg b/public/img/svg/octicon-package.svg new file mode 100644 index 0000000000..292b9de3d5 --- /dev/null +++ b/public/img/svg/octicon-package.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-paintcan.svg b/public/img/svg/octicon-paintcan.svg new file mode 100644 index 0000000000..fb90f3acd6 --- /dev/null +++ b/public/img/svg/octicon-paintcan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-pencil.svg b/public/img/svg/octicon-pencil.svg new file mode 100644 index 0000000000..e527171480 --- /dev/null +++ b/public/img/svg/octicon-pencil.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-person.svg b/public/img/svg/octicon-person.svg new file mode 100644 index 0000000000..b7cf33ae9d --- /dev/null +++ b/public/img/svg/octicon-person.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-pin.svg b/public/img/svg/octicon-pin.svg new file mode 100644 index 0000000000..80efebcfdf --- /dev/null +++ b/public/img/svg/octicon-pin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-play.svg b/public/img/svg/octicon-play.svg new file mode 100644 index 0000000000..57b4a987db --- /dev/null +++ b/public/img/svg/octicon-play.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-plug.svg b/public/img/svg/octicon-plug.svg new file mode 100644 index 0000000000..c5d1135cea --- /dev/null +++ b/public/img/svg/octicon-plug.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-plus-small.svg b/public/img/svg/octicon-plus-small.svg new file mode 100644 index 0000000000..d88b103ada --- /dev/null +++ b/public/img/svg/octicon-plus-small.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-plus.svg b/public/img/svg/octicon-plus.svg new file mode 100644 index 0000000000..b54dd04ffb --- /dev/null +++ b/public/img/svg/octicon-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-primitive-dot-stroke.svg b/public/img/svg/octicon-primitive-dot-stroke.svg new file mode 100644 index 0000000000..f12b062bdf --- /dev/null +++ b/public/img/svg/octicon-primitive-dot-stroke.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-primitive-dot.svg b/public/img/svg/octicon-primitive-dot.svg new file mode 100644 index 0000000000..8f7b4288ad --- /dev/null +++ b/public/img/svg/octicon-primitive-dot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-primitive-square.svg b/public/img/svg/octicon-primitive-square.svg new file mode 100644 index 0000000000..05a8f33819 --- /dev/null +++ b/public/img/svg/octicon-primitive-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-project.svg b/public/img/svg/octicon-project.svg new file mode 100644 index 0000000000..a71e5fdb3c --- /dev/null +++ b/public/img/svg/octicon-project.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-pulse.svg b/public/img/svg/octicon-pulse.svg new file mode 100644 index 0000000000..c9526a87cb --- /dev/null +++ b/public/img/svg/octicon-pulse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-question.svg b/public/img/svg/octicon-question.svg new file mode 100644 index 0000000000..ec92a013b5 --- /dev/null +++ b/public/img/svg/octicon-question.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-quote.svg b/public/img/svg/octicon-quote.svg new file mode 100644 index 0000000000..34d4f56ca2 --- /dev/null +++ b/public/img/svg/octicon-quote.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-radio-tower.svg b/public/img/svg/octicon-radio-tower.svg new file mode 100644 index 0000000000..cbb8d82d99 --- /dev/null +++ b/public/img/svg/octicon-radio-tower.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-reply.svg b/public/img/svg/octicon-reply.svg new file mode 100644 index 0000000000..eecf15795d --- /dev/null +++ b/public/img/svg/octicon-reply.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-repo-clone.svg b/public/img/svg/octicon-repo-clone.svg new file mode 100644 index 0000000000..2e551ffdd3 --- /dev/null +++ b/public/img/svg/octicon-repo-clone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-repo-force-push.svg b/public/img/svg/octicon-repo-force-push.svg new file mode 100644 index 0000000000..7d69b2c243 --- /dev/null +++ b/public/img/svg/octicon-repo-force-push.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-repo-forked.svg b/public/img/svg/octicon-repo-forked.svg new file mode 100644 index 0000000000..c9b14d1e73 --- /dev/null +++ b/public/img/svg/octicon-repo-forked.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-repo-pull.svg b/public/img/svg/octicon-repo-pull.svg new file mode 100644 index 0000000000..e396a0a4c7 --- /dev/null +++ b/public/img/svg/octicon-repo-pull.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-repo-push.svg b/public/img/svg/octicon-repo-push.svg new file mode 100644 index 0000000000..453b2e09ae --- /dev/null +++ b/public/img/svg/octicon-repo-push.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-repo-template-private.svg b/public/img/svg/octicon-repo-template-private.svg new file mode 100644 index 0000000000..88f5d26f9a --- /dev/null +++ b/public/img/svg/octicon-repo-template-private.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-repo-template.svg b/public/img/svg/octicon-repo-template.svg new file mode 100644 index 0000000000..02e7d7401a --- /dev/null +++ b/public/img/svg/octicon-repo-template.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-repo.svg b/public/img/svg/octicon-repo.svg new file mode 100644 index 0000000000..aadb21dbcc --- /dev/null +++ b/public/img/svg/octicon-repo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-report.svg b/public/img/svg/octicon-report.svg new file mode 100644 index 0000000000..7ef26b6999 --- /dev/null +++ b/public/img/svg/octicon-report.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-request-changes.svg b/public/img/svg/octicon-request-changes.svg new file mode 100644 index 0000000000..3154c7059a --- /dev/null +++ b/public/img/svg/octicon-request-changes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-rocket.svg b/public/img/svg/octicon-rocket.svg new file mode 100644 index 0000000000..0275ea0963 --- /dev/null +++ b/public/img/svg/octicon-rocket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-rss.svg b/public/img/svg/octicon-rss.svg new file mode 100644 index 0000000000..88c75d7de9 --- /dev/null +++ b/public/img/svg/octicon-rss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-ruby.svg b/public/img/svg/octicon-ruby.svg new file mode 100644 index 0000000000..6bf321508f --- /dev/null +++ b/public/img/svg/octicon-ruby.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-saved.svg b/public/img/svg/octicon-saved.svg new file mode 100644 index 0000000000..d53938516e --- /dev/null +++ b/public/img/svg/octicon-saved.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-screen-full.svg b/public/img/svg/octicon-screen-full.svg new file mode 100644 index 0000000000..d954ff47b7 --- /dev/null +++ b/public/img/svg/octicon-screen-full.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-screen-normal.svg b/public/img/svg/octicon-screen-normal.svg new file mode 100644 index 0000000000..5646e32a13 --- /dev/null +++ b/public/img/svg/octicon-screen-normal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-search.svg b/public/img/svg/octicon-search.svg new file mode 100644 index 0000000000..b1ecf424ce --- /dev/null +++ b/public/img/svg/octicon-search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-server.svg b/public/img/svg/octicon-server.svg new file mode 100644 index 0000000000..d7e443e251 --- /dev/null +++ b/public/img/svg/octicon-server.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-settings.svg b/public/img/svg/octicon-settings.svg new file mode 100644 index 0000000000..50116a6d61 --- /dev/null +++ b/public/img/svg/octicon-settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-shield-check.svg b/public/img/svg/octicon-shield-check.svg new file mode 100644 index 0000000000..5e4176e6a5 --- /dev/null +++ b/public/img/svg/octicon-shield-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-shield-lock.svg b/public/img/svg/octicon-shield-lock.svg new file mode 100644 index 0000000000..9a712ba85b --- /dev/null +++ b/public/img/svg/octicon-shield-lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-shield-x.svg b/public/img/svg/octicon-shield-x.svg new file mode 100644 index 0000000000..5b1a889968 --- /dev/null +++ b/public/img/svg/octicon-shield-x.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-shield.svg b/public/img/svg/octicon-shield.svg new file mode 100644 index 0000000000..1f4a117b5e --- /dev/null +++ b/public/img/svg/octicon-shield.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-sign-in.svg b/public/img/svg/octicon-sign-in.svg new file mode 100644 index 0000000000..ea5aeb4782 --- /dev/null +++ b/public/img/svg/octicon-sign-in.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-sign-out.svg b/public/img/svg/octicon-sign-out.svg new file mode 100644 index 0000000000..ea820897f7 --- /dev/null +++ b/public/img/svg/octicon-sign-out.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-skip.svg b/public/img/svg/octicon-skip.svg new file mode 100644 index 0000000000..167b1b44dc --- /dev/null +++ b/public/img/svg/octicon-skip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-smiley.svg b/public/img/svg/octicon-smiley.svg new file mode 100644 index 0000000000..f83328be02 --- /dev/null +++ b/public/img/svg/octicon-smiley.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-squirrel.svg b/public/img/svg/octicon-squirrel.svg new file mode 100644 index 0000000000..7b7e6daa83 --- /dev/null +++ b/public/img/svg/octicon-squirrel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-star.svg b/public/img/svg/octicon-star.svg new file mode 100644 index 0000000000..4960fa46a8 --- /dev/null +++ b/public/img/svg/octicon-star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-stop.svg b/public/img/svg/octicon-stop.svg new file mode 100644 index 0000000000..1cd1251161 --- /dev/null +++ b/public/img/svg/octicon-stop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-sync.svg b/public/img/svg/octicon-sync.svg new file mode 100644 index 0000000000..2364c1cac3 --- /dev/null +++ b/public/img/svg/octicon-sync.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-tag.svg b/public/img/svg/octicon-tag.svg new file mode 100644 index 0000000000..1b049e879e --- /dev/null +++ b/public/img/svg/octicon-tag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-tasklist.svg b/public/img/svg/octicon-tasklist.svg new file mode 100644 index 0000000000..67add4f69a --- /dev/null +++ b/public/img/svg/octicon-tasklist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-telescope.svg b/public/img/svg/octicon-telescope.svg new file mode 100644 index 0000000000..110d8f6c96 --- /dev/null +++ b/public/img/svg/octicon-telescope.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-terminal.svg b/public/img/svg/octicon-terminal.svg new file mode 100644 index 0000000000..27e96cdbde --- /dev/null +++ b/public/img/svg/octicon-terminal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-text-size.svg b/public/img/svg/octicon-text-size.svg new file mode 100644 index 0000000000..869545188b --- /dev/null +++ b/public/img/svg/octicon-text-size.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-three-bars.svg b/public/img/svg/octicon-three-bars.svg new file mode 100644 index 0000000000..b8d95d09d8 --- /dev/null +++ b/public/img/svg/octicon-three-bars.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-thumbsdown.svg b/public/img/svg/octicon-thumbsdown.svg new file mode 100644 index 0000000000..b3f17365bc --- /dev/null +++ b/public/img/svg/octicon-thumbsdown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-thumbsup.svg b/public/img/svg/octicon-thumbsup.svg new file mode 100644 index 0000000000..1e9cdab3b5 --- /dev/null +++ b/public/img/svg/octicon-thumbsup.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-tools.svg b/public/img/svg/octicon-tools.svg new file mode 100644 index 0000000000..c090db390b --- /dev/null +++ b/public/img/svg/octicon-tools.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-trashcan.svg b/public/img/svg/octicon-trashcan.svg new file mode 100644 index 0000000000..9fe3daa4c6 --- /dev/null +++ b/public/img/svg/octicon-trashcan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-triangle-down.svg b/public/img/svg/octicon-triangle-down.svg new file mode 100644 index 0000000000..02ac0dc1b1 --- /dev/null +++ b/public/img/svg/octicon-triangle-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-triangle-left.svg b/public/img/svg/octicon-triangle-left.svg new file mode 100644 index 0000000000..fcec33a857 --- /dev/null +++ b/public/img/svg/octicon-triangle-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-triangle-right.svg b/public/img/svg/octicon-triangle-right.svg new file mode 100644 index 0000000000..9474d577c7 --- /dev/null +++ b/public/img/svg/octicon-triangle-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-triangle-up.svg b/public/img/svg/octicon-triangle-up.svg new file mode 100644 index 0000000000..5b5db294cb --- /dev/null +++ b/public/img/svg/octicon-triangle-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-unfold.svg b/public/img/svg/octicon-unfold.svg new file mode 100644 index 0000000000..4951b09dc2 --- /dev/null +++ b/public/img/svg/octicon-unfold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-unmute.svg b/public/img/svg/octicon-unmute.svg new file mode 100644 index 0000000000..14b6964e1d --- /dev/null +++ b/public/img/svg/octicon-unmute.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-unsaved.svg b/public/img/svg/octicon-unsaved.svg new file mode 100644 index 0000000000..9a52e2a64f --- /dev/null +++ b/public/img/svg/octicon-unsaved.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-unverified.svg b/public/img/svg/octicon-unverified.svg new file mode 100644 index 0000000000..262e9c47d7 --- /dev/null +++ b/public/img/svg/octicon-unverified.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-verified.svg b/public/img/svg/octicon-verified.svg new file mode 100644 index 0000000000..4b7110d64d --- /dev/null +++ b/public/img/svg/octicon-verified.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-versions.svg b/public/img/svg/octicon-versions.svg new file mode 100644 index 0000000000..46ac011c1b --- /dev/null +++ b/public/img/svg/octicon-versions.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-watch.svg b/public/img/svg/octicon-watch.svg new file mode 100644 index 0000000000..9eda11f403 --- /dev/null +++ b/public/img/svg/octicon-watch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-workflow-all.svg b/public/img/svg/octicon-workflow-all.svg new file mode 100644 index 0000000000..2546c3abe9 --- /dev/null +++ b/public/img/svg/octicon-workflow-all.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-workflow.svg b/public/img/svg/octicon-workflow.svg new file mode 100644 index 0000000000..63282c0296 --- /dev/null +++ b/public/img/svg/octicon-workflow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-x.svg b/public/img/svg/octicon-x.svg new file mode 100644 index 0000000000..85e7ed7a2e --- /dev/null +++ b/public/img/svg/octicon-x.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/svg/octicon-zap.svg b/public/img/svg/octicon-zap.svg new file mode 100644 index 0000000000..febcccf6c1 --- /dev/null +++ b/public/img/svg/octicon-zap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/routers/init.go b/routers/init.go index 964da6ced6..c842b5d38e 100644 --- a/routers/init.go +++ b/routers/init.go @@ -28,6 +28,7 @@ import ( "code.gitea.io/gitea/modules/options" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/ssh" + "code.gitea.io/gitea/modules/svg" "code.gitea.io/gitea/modules/task" "code.gitea.io/gitea/modules/webhook" "code.gitea.io/gitea/services/mailer" @@ -178,4 +179,6 @@ func GlobalInit(ctx context.Context) { if setting.InstallLock { sso.Init() } + + svg.Init() } diff --git a/web_src/js/features/contextpopup.js b/web_src/js/features/contextpopup.js index 377a6a8f5a..2597c18014 100644 --- a/web_src/js/features/contextpopup.js +++ b/web_src/js/features/contextpopup.js @@ -1,4 +1,4 @@ -import {svg} from '../utils.js'; +import {svg} from '../svg.js'; const {AppSubUrl} = window.config; diff --git a/web_src/js/index.js b/web_src/js/index.js index 15ca32cfdc..8064e59507 100644 --- a/web_src/js/index.js +++ b/web_src/js/index.js @@ -3555,12 +3555,3 @@ window.onOAuthLoginClick = function () { oauthNav.show(); }, 5000); }; - -// Pull SVGs via AJAX to workaround CORS issues with tags -// https://css-tricks.com/ajaxing-svg-sprite/ -$.get(`${window.config.StaticUrlPrefix}/img/svg/icons.svg`, (data) => { - const div = document.createElement('div'); - div.style.display = 'none'; - div.innerHTML = new XMLSerializer().serializeToString(data.documentElement); - document.body.insertBefore(div, document.body.childNodes[0]); -}); diff --git a/web_src/js/markdown/anchors.js b/web_src/js/markdown/anchors.js index 766fa34a7a..73c38eef32 100644 --- a/web_src/js/markdown/anchors.js +++ b/web_src/js/markdown/anchors.js @@ -1,4 +1,4 @@ -import {svg} from '../utils.js'; +import {svg} from '../svg.js'; const headingSelector = '.markdown h1, .markdown h2, .markdown h3, .markdown h4, .markdown h5, .markdown h6'; diff --git a/web_src/js/svg.js b/web_src/js/svg.js new file mode 100644 index 0000000000..5e66a4dd1a --- /dev/null +++ b/web_src/js/svg.js @@ -0,0 +1,30 @@ +import octiconGitMerge from '../../public/img/svg/octicon-git-merge.svg'; +import octiconGitPullRequest from '../../public/img/svg/octicon-git-pull-request.svg'; +import octiconIssueClosed from '../../public/img/svg/octicon-issue-closed.svg'; +import octiconIssueOpened from '../../public/img/svg/octicon-issue-opened.svg'; +import octiconLink from '../../public/img/svg/octicon-link.svg'; + +const svgs = { + 'octicon-git-merge': octiconGitMerge, + 'octicon-git-pull-request': octiconGitPullRequest, + 'octicon-issue-closed': octiconIssueClosed, + 'octicon-issue-opened': octiconIssueOpened, + 'octicon-link': octiconLink, +}; + +const parser = new DOMParser(); +const serializer = new XMLSerializer(); + +// retrieve a HTML string for given SVG icon name and size in pixels +export function svg(name, size = 16) { + if (name in svgs) { + if (size === 16) return svgs[name]; + + const document = parser.parseFromString(svgs[name], 'image/svg+xml'); + const svgNode = document.firstChild; + svgNode.setAttribute('width', String(size)); + svgNode.setAttribute('height', String(size)); + return serializer.serializeToString(svgNode); + } + return ''; +} diff --git a/web_src/js/utils.js b/web_src/js/utils.js index b16b05a1b7..229f4d6304 100644 --- a/web_src/js/utils.js +++ b/web_src/js/utils.js @@ -1,8 +1,3 @@ -// retrieve a HTML string for given SVG icon name and size in pixels -export function svg(name, size) { - return ``; -} - // transform /path/to/file.ext to file.ext export function basename(path = '') { return path ? path.replace(/^.*\//, '') : ''; diff --git a/assets/svg/gitea-lock-cog.svg b/web_src/svg/gitea-lock-cog.svg similarity index 100% rename from assets/svg/gitea-lock-cog.svg rename to web_src/svg/gitea-lock-cog.svg diff --git a/assets/svg/gitea-lock.svg b/web_src/svg/gitea-lock.svg similarity index 100% rename from assets/svg/gitea-lock.svg rename to web_src/svg/gitea-lock.svg diff --git a/assets/svg/gitea-unlock.svg b/web_src/svg/gitea-unlock.svg similarity index 100% rename from assets/svg/gitea-unlock.svg rename to web_src/svg/gitea-unlock.svg diff --git a/webpack.config.js b/webpack.config.js index 40a184eb44..637ff5d94a 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -5,7 +5,6 @@ const FixStyleOnlyEntriesPlugin = require('webpack-fix-style-only-entries'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin'); const PostCSSPresetEnv = require('postcss-preset-env'); -const SpriteLoaderPlugin = require('svg-sprite-loader/plugin'); const TerserPlugin = require('terser-webpack-plugin'); const VueLoaderPlugin = require('vue-loader/lib/plugin'); const {statSync} = require('fs'); @@ -28,7 +27,7 @@ const filterCssImport = (parsedImport, cssFile) => { if (cssFile.includes('fomantic')) { if (/brand-icons/.test(importedFile)) return false; - if (/(eot|ttf|otf|woff)$/.test(importedFile)) return false; + if (/(eot|ttf|otf|woff|svg)$/.test(importedFile)) return false; } if (cssFile.includes('font-awesome')) { @@ -57,10 +56,6 @@ module.exports = { 'eventsource.sharedworker': [ resolve(__dirname, 'web_src/js/features/eventsource.sharedworker.js'), ], - icons: [ - ...glob('node_modules/@primer/octicons/build/svg/**/*.svg'), - ...glob('assets/svg/*.svg'), - ], ...themes, }, devtool: false, @@ -233,23 +228,10 @@ module.exports = { }, { test: /\.svg$/, + include: resolve(__dirname, 'public/img/svg'), use: [ { - loader: 'svg-sprite-loader', - options: { - extract: true, - spriteFilename: 'img/svg/icons.svg', - symbolId: (path) => { - const {name} = parse(path); - if (/@primer[/\\]octicons/.test(path)) { - return `octicon-${name}`; - } - return name; - }, - }, - }, - { - loader: 'svgo-loader', + loader: 'raw-loader', }, ], }, @@ -270,9 +252,9 @@ module.exports = { }, plugins: [ new VueLoaderPlugin(), - // avoid generating useless js output files for css- and svg-only chunks + // avoid generating useless js output files for css--only chunks new FixStyleOnlyEntriesPlugin({ - extensions: ['less', 'scss', 'css', 'svg'], + extensions: ['less', 'scss', 'css'], silent: true, }), new MiniCssExtractPlugin({ @@ -286,9 +268,6 @@ module.exports = { 'css/index.css', ], }), - new SpriteLoaderPlugin({ - plainSprite: true, - }), new MonacoWebpackPlugin({ filename: 'js/monaco-[name].worker.js', }),