From 98eec4832cde6ed6c4d1b6f187b1aba11e872c6d Mon Sep 17 00:00:00 2001 From: Jack F Date: Fri, 1 Jul 2022 17:01:26 +1200 Subject: [PATCH] Copy in original gitea files for modifying --- .gitignore | 1 + .husky/pre-commit | 4 + .lintstagedrc.cjs | 6 + README.md | 36 +- css/dist/theme-od.css | 757 +++++++++++++++++++++++++++ css/less/chroma/dark.less | 67 +++ css/less/codemirror/dark.less | 89 ++++ css/less/themes/theme-arc-green.less | 457 ++++++++++++++++ css/less/themes/theme-od.less | 3 + img/.gitkeep | 0 package.json | 25 + templates/home.tmpl | 53 ++ 12 files changed, 1496 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100755 .husky/pre-commit create mode 100644 .lintstagedrc.cjs create mode 100644 css/dist/theme-od.css create mode 100644 css/less/chroma/dark.less create mode 100644 css/less/codemirror/dark.less create mode 100644 css/less/themes/theme-arc-green.less create mode 100644 css/less/themes/theme-od.less create mode 100644 img/.gitkeep create mode 100644 package.json create mode 100644 templates/home.tmpl diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..07e6e47 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/node_modules diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..5c72c52 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx lint-staged -v diff --git a/.lintstagedrc.cjs b/.lintstagedrc.cjs new file mode 100644 index 0000000..9940d3f --- /dev/null +++ b/.lintstagedrc.cjs @@ -0,0 +1,6 @@ +module.exports = { + '{css/less/**/*.less}': [ + () => 'npx lessc css/less/themes/theme-od.less css/dist/theme-od.css', + 'git add css/dist/theme-od.css' + ] +}; diff --git a/README.md b/README.md index 4df9568..a1905c2 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,35 @@ -# gitea_customization +# [Opening Design][] [Gitea][] Customization -Gitea instance customization files \ No newline at end of file +Gitea instance customization files + +## Installation + +The components of the repository are mapped onto the [Opening Design][] +[Gitea][] instance using the +[customizing Gitea](https://docs.gitea.io/en-us/customizing-gitea/) +instructions: +- the *templates* folder is mapped to *$GITEA_CUSTOM/templates/custom/* +- the *images* contents is mapped into *$GITEA_CUSTOM/public/img* +- the *css/dist* contents is mapped into *$GITEA_CUSTOM/public/css/* + +## Development + +The source is hosted on +[Gitea](https://hub.openingdesign.com/OpeningDesign/gitea_customization) and +uses [prettier][], [lint-staged][] and [husky][] to keep things pretty. +As such, when you first [clone][git-clone] the repository, as well as +installing the npm dependencies, you will also need to install [husky][]. + +```bash +# Install NPM dependencies +npm install +# Set up husky Git hooks stored in .husky +npx husky install +``` + +[opening design]: http://openingdesign.com/ +[gitea]: https://gitea.io/ +[husky]: https://typicode.github.io/husky +[git-clone]: https://www.git-scm.com/docs/git-clone +[prettier]: https://prettier.io/ +[lint-staged]: https://github.com/okonet/lint-staged#readme diff --git a/css/dist/theme-od.css b/css/dist/theme-od.css new file mode 100644 index 0000000..9017d35 --- /dev/null +++ b/css/dist/theme-od.css @@ -0,0 +1,757 @@ +@media (prefers-color-scheme: dark) { + .chroma .hl { + background-color: #3f424d; + } + /* LineHighlight */ + .chroma .lnt { + color: #7f7f7f; + } + /* LineNumbersTable */ + .chroma .ln { + color: #7f7f7f; + } + /* LineNumbers */ + .chroma .k { + color: #f63; + } + /* Keyword */ + .chroma .kc { + color: #fa1; + } + /* KeywordConstant */ + .chroma .kd { + color: #9daccc; + } + /* KeywordDeclaration */ + .chroma .kn { + color: #fa1; + } + /* KeywordNamespace */ + .chroma .kp { + color: #5f8700; + } + /* KeywordPseudo */ + .chroma .kr { + color: #f63; + } + /* KeywordReserved */ + .chroma .kt { + color: #9daccc; + } + /* KeywordType */ + .chroma .na { + color: #8a8a8a; + } + /* NameAttribute */ + .chroma .nb { + color: #9daccc; + } + /* NameBuiltin */ + .chroma .bp { + color: #9daccc; + } + /* NameBuiltinPseudo */ + .chroma .nc { + color: #fa1; + } + /* NameClass */ + .chroma .no { + color: #fa1; + } + /* NameConstant */ + .chroma .nd { + color: #9daccc; + } + /* NameDecorator */ + .chroma .ni { + color: #fa1; + } + /* NameEntity */ + .chroma .ne { + color: #af8700; + } + /* NameException */ + .chroma .nf { + color: #9daccc; + } + /* NameFunction */ + .chroma .nl { + color: #fa1; + } + /* NameLabel */ + .chroma .nn { + color: #fa1; + } + /* NameNamespace */ + .chroma .nx { + color: #9daccc; + } + /* NameOther */ + .chroma .nt { + color: #9daccc; + } + /* NameTag */ + .chroma .nv { + color: #9daccc; + } + /* NameVariable */ + .chroma .vc { + color: #f81; + } + /* NameVariableClass */ + .chroma .vg { + color: #fa1; + } + /* NameVariableGlobal */ + .chroma .vi { + color: #fa1; + } + /* NameVariableInstance */ + .chroma .s { + color: #1af; + } + /* LiteralString */ + .chroma .sa { + color: #1af; + } + /* LiteralStringAffix */ + .chroma .sb { + color: #a0cc75; + } + /* LiteralStringBacktick */ + .chroma .sc { + color: #1af; + } + /* LiteralStringChar */ + .chroma .dl { + color: #1af; + } + /* LiteralStringDelimiter */ + .chroma .sd { + color: #6a737d; + } + /* LiteralStringDoc */ + .chroma .s2 { + color: #a0cc75; + } + /* LiteralStringDouble */ + .chroma .se { + color: #f63; + } + /* LiteralStringEscape */ + .chroma .sh { + color: #1af; + } + /* LiteralStringHeredoc */ + .chroma .si { + color: #fa1; + } + /* LiteralStringInterpol */ + .chroma .sx { + color: #fa1; + } + /* LiteralStringOther */ + .chroma .sr { + color: #97c; + } + /* LiteralStringRegex */ + .chroma .s1 { + color: #a0cc75; + } + /* LiteralStringSingle */ + .chroma .ss { + color: #fa1; + } + /* LiteralStringSymbol */ + .chroma .m { + color: #1af; + } + /* LiteralNumber */ + .chroma .mb { + color: #1af; + } + /* LiteralNumberBin */ + .chroma .mf { + color: #1af; + } + /* LiteralNumberFloat */ + .chroma .mh { + color: #1af; + } + /* LiteralNumberHex */ + .chroma .mi { + color: #1af; + } + /* LiteralNumberInteger */ + .chroma .il { + color: #1af; + } + /* LiteralNumberIntegerLong */ + .chroma .mo { + color: #1af; + } + /* LiteralNumberOct */ + .chroma .o { + color: #f63; + } + /* Operator */ + .chroma .ow { + color: #5f8700; + } + /* OperatorWord */ + .chroma .c { + color: #6a737d; + } + /* Comment */ + .chroma .ch { + color: #6a737d; + } + /* CommentHashbang */ + .chroma .cm { + color: #6a737d; + } + /* CommentMultiline */ + .chroma .c1 { + color: #6a737d; + } + /* CommentSingle */ + .chroma .cs { + color: #95ad; + } + /* CommentSpecial */ + .chroma .cp { + color: #fc6; + } + /* CommentPreproc */ + .chroma .cpf { + color: #03dfff; + } + /* CommentPreprocFile */ + .chroma .gd { + color: #fff; + background-color: #5f3737; + } + /* GenericDeleted */ + .chroma .ge { + color: #ef5; + } + /* GenericEmph */ + .chroma .gr { + color: #f33; + } + /* GenericError */ + .chroma .gh { + color: #fa1; + } + /* GenericHeading */ + .chroma .gi { + color: #fff; + background-color: #3a523a; + } + /* GenericInserted */ + .chroma .go { + color: #888888; + } + /* GenericOutput */ + .chroma .gp { + color: #555555; + } + /* GenericPrompt */ + .chroma .gu { + color: #9daccc; + } + /* GenericSubheading */ + .chroma .gt { + color: #f63; + } + /* GenericTraceback */ + .chroma .w { + color: #bbbbbb; + } + /* TextWhitespace */ + .CodeMirror.cm-s-default .cm-property, + .CodeMirror.cm-s-paper .cm-property { + color: #a0cc75; + } + .CodeMirror.cm-s-default .cm-header, + .CodeMirror.cm-s-paper .cm-header { + color: #9daccc; + } + .CodeMirror.cm-s-default .cm-quote, + .CodeMirror.cm-s-paper .cm-quote { + color: #009900; + } + .CodeMirror.cm-s-default .cm-keyword, + .CodeMirror.cm-s-paper .cm-keyword { + color: #cc8a61; + } + .CodeMirror.cm-s-default .cm-atom, + .CodeMirror.cm-s-paper .cm-atom { + color: #ef5e77; + } + .CodeMirror.cm-s-default .cm-number, + .CodeMirror.cm-s-paper .cm-number { + color: #ff5656; + } + .CodeMirror.cm-s-default .cm-def, + .CodeMirror.cm-s-paper .cm-def { + color: #e4e4e4; + } + .CodeMirror.cm-s-default .cm-variable-2, + .CodeMirror.cm-s-paper .cm-variable-2 { + color: #00bdbf; + } + .CodeMirror.cm-s-default .cm-variable-3, + .CodeMirror.cm-s-paper .cm-variable-3 { + color: #008855; + } + .CodeMirror.cm-s-default .cm-comment, + .CodeMirror.cm-s-paper .cm-comment { + color: #8e9ab3; + } + .CodeMirror.cm-s-default .cm-string, + .CodeMirror.cm-s-paper .cm-string { + color: #a77272; + } + .CodeMirror.cm-s-default .cm-string-2, + .CodeMirror.cm-s-paper .cm-string-2 { + color: #ff5500; + } + .CodeMirror.cm-s-default .cm-meta, + .CodeMirror.cm-s-paper .cm-meta, + .CodeMirror.cm-s-default .cm-qualifier, + .CodeMirror.cm-s-paper .cm-qualifier { + color: #ffb176; + } + .CodeMirror.cm-s-default .cm-builtin, + .CodeMirror.cm-s-paper .cm-builtin { + color: #b7c951; + } + .CodeMirror.cm-s-default .cm-bracket, + .CodeMirror.cm-s-paper .cm-bracket { + color: #999977; + } + .CodeMirror.cm-s-default .cm-tag, + .CodeMirror.cm-s-paper .cm-tag { + color: #f1d273; + } + .CodeMirror.cm-s-default .cm-attribute, + .CodeMirror.cm-s-paper .cm-attribute { + color: #bfcc70; + } + .CodeMirror.cm-s-default .cm-hr, + .CodeMirror.cm-s-paper .cm-hr { + color: #999999; + } + .CodeMirror.cm-s-default .cm-url, + .CodeMirror.cm-s-paper .cm-url { + color: #c5cfd0; + } + .CodeMirror.cm-s-default .cm-link, + .CodeMirror.cm-s-paper .cm-link { + color: #d8c792; + } + .CodeMirror.cm-s-default .cm-error, + .CodeMirror.cm-s-paper .cm-error { + color: #dbdbeb; + } + :root { + --is-dark-theme: true; + --color-primary: #87ab63; + --color-primary-dark-1: #93b373; + --color-primary-dark-2: #9fbc82; + --color-primary-dark-3: #abc492; + --color-primary-dark-4: #b7cda1; + --color-primary-dark-5: #cfddc1; + --color-primary-dark-6: #e7eee0; + --color-primary-dark-7: #f8faf6; + --color-primary-light-1: #7a9e55; + --color-primary-light-2: #6c8c4c; + --color-primary-light-3: #5f7b42; + --color-primary-light-4: #516939; + --color-primary-light-5: #364626; + --color-primary-light-6: #1b2313; + --color-primary-light-7: #080b06; + --color-primary-alpha-10: #87ab6319; + --color-primary-alpha-20: #87ab6333; + --color-primary-alpha-30: #87ab634b; + --color-primary-alpha-40: #87ab6366; + --color-primary-alpha-50: #87ab6380; + --color-primary-alpha-60: #87ab6399; + --color-primary-alpha-70: #87ab63b3; + --color-primary-alpha-80: #87ab63cc; + --color-primary-alpha-90: #87ab63e1; + --color-secondary: #454a57; + --color-secondary-dark-1: #505665; + --color-secondary-dark-2: #5b6273; + --color-secondary-dark-3: #71798e; + --color-secondary-dark-4: #7f8699; + --color-secondary-dark-5: #8c93a4; + --color-secondary-dark-6: #9aa0af; + --color-secondary-dark-7: #a8adba; + --color-secondary-dark-8: #b6bac5; + --color-secondary-dark-9: #c4c7d0; + --color-secondary-dark-10: #d2d4db; + --color-secondary-dark-11: #dfe1e6; + --color-secondary-dark-12: #edeef1; + --color-secondary-dark-13: #fbfbfc; + --color-secondary-light-1: #373b46; + --color-secondary-light-2: #292c34; + --color-secondary-light-3: #1c1e23; + --color-secondary-light-4: #0e0f11; + --color-secondary-alpha-10: #454a5719; + --color-secondary-alpha-20: #454a5733; + --color-secondary-alpha-30: #454a574b; + --color-secondary-alpha-40: #454a5766; + --color-secondary-alpha-50: #454a5780; + --color-secondary-alpha-60: #454a5799; + --color-secondary-alpha-70: #454a57b3; + --color-secondary-alpha-80: #454a57cc; + --color-secondary-alpha-90: #454a57e1; + /* colors */ + --color-red: #db2828; + --color-orange: #f2711c; + --color-yellow: #fbbd08; + --color-olive: #b5cc18; + --color-green: #21ba45; + --color-teal: #00b5ad; + --color-blue: #2185d0; + --color-violet: #6435c9; + --color-purple: #a333c8; + --color-pink: #e03997; + --color-brown: #a5673f; + --color-grey: #767a85; + --color-black: #1e222e; + --color-gold: #a1882b; + --color-white: #ffffff; + --color-diff-removed-word-bg: #6f3333; + --color-diff-added-word-bg: #3c653c; + --color-diff-removed-row-bg: #3c2626; + --color-diff-moved-row-bg: #818044; + --color-diff-added-row-bg: #283e2d; + --color-diff-removed-row-border: #634343; + --color-diff-moved-row-border: #bcca6f; + --color-diff-added-row-border: #314a37; + --color-diff-inactive: #353846; + --color-error-border: #a53a37; + --color-error-bg: #482c2c; + --color-error-text: #ff4433; + --color-success-border: #458a57; + --color-success-bg: #284034; + --color-success-text: #6cc664; + --color-warning-border: #bb9d00; + --color-warning-bg: #3a3a30; + --color-warning-text: #fbbd08; + --color-info-border: #306090; + --color-info-bg: #26354c; + --color-info-text: #38a8e8; + /* target-based colors */ + --color-body: #383c4a; + --color-box-header: #404652; + --color-box-body: #303440; + --color-text-dark: #dbe0ea; + --color-text: #bbc0ca; + --color-text-light: #a6aab5; + --color-text-light-2: #8a8e99; + --color-text-light-3: #707687; + --color-footer: #2e323e; + --color-timeline: #4c525e; + --color-input-text: #d5dbe6; + --color-input-background: #292d39; + --color-input-border: #454a57; + --color-input-border-hover: #505667; + --color-navbar: #2a2e3a; + --color-navbar-transparent: #2a2e3a00; + --color-light: #00000028; + --color-light-mimic-enabled: rgba(0, 0, 0, calc(40 / 255 * 222 / 255 / var(--opacity-disabled))); + --color-light-border: #ffffff28; + --color-hover: #ffffff10; + --color-active: #ffffff16; + --color-menu: #2e323e; + --color-card: #2e323e; + --color-markup-table-row: #ffffff06; + --color-markup-code-block: #292d39; + --color-button: #353846; + --color-code-bg: #2a2e3a; + --color-code-sidebar-bg: #2e323e; + --color-shadow: #00000060; + --color-secondary-bg: #2a2e3a; + --color-text-focus: #fff; + --color-expand-button: #3c404d; + --color-placeholder-text: #6a737d; + --color-editor-line-highlight: var(--color-primary-light-5); + --color-project-board-bg: var(--color-secondary-light-2); + --color-caret: var(--color-text); + /* should ideally be --color-text-dark, see #15651 */ + --color-reaction-bg: #ffffff12; + --color-reaction-active-bg: var(--color-primary-alpha-40); + } + ::-webkit-calendar-picker-indicator { + filter: invert(0.8); + } + .ui.horizontal.segments > .segment { + background-color: #383c4a; + } + .following.bar.light { + background: #2e323e; + border-color: var(--color-secondary-alpha-40); + } + .following.bar .top.menu a.item:hover { + color: #fff; + } + .feeds .list ul li.private { + background: #353945; + } + .ui.red.label, + .ui.red.labels .label { + background-color: #7d3434 !important; + border-color: #8a2121 !important; + } + .ui.yellow.label, + .ui.yellow.labels .label { + border-color: #664d02 !important; + background-color: #936e00 !important; + } + .ui.accordion .title:not(.ui) { + color: #dbdbdb; + } + .ui.green.label, + .ui.green.labels .label, + .ui.basic.green.label { + background-color: #2d693b !important; + border-color: #2d693b !important; + } + .ui.green.labels a.label:hover, + .ui.basic.green.labels a.label:hover, + a.ui.ui.ui.green.label:hover, + a.ui.basic.green.label:hover { + background-color: #3d794b !important; + border-color: #3d794b !important; + color: #fff !important; + } + .ui.divider:not(.vertical):not(.horizontal) { + border-bottom-color: var(--color-secondary); + border-top-color: transparent; + } + .form .help { + color: #7f8699; + } + .ui .text.light.grey { + color: #7f8699 !important; + } + .ui.form .fields.error .field textarea, + .ui.form .fields.error .field select, + .ui.form .fields.error .field input:not([type]), + .ui.form .fields.error .field input[type="date"], + .ui.form .fields.error .field input[type="datetime-local"], + .ui.form .fields.error .field input[type="email"], + .ui.form .fields.error .field input[type="number"], + .ui.form .fields.error .field input[type="password"], + .ui.form .fields.error .field input[type="search"], + .ui.form .fields.error .field input[type="tel"], + .ui.form .fields.error .field input[type="time"], + .ui.form .fields.error .field input[type="text"], + .ui.form .fields.error .field input[type="file"], + .ui.form .fields.error .field input[type="url"], + .ui.form .field.error textarea, + .ui.form .field.error select, + .ui.form .field.error input:not([type]), + .ui.form .field.error input[type="date"], + .ui.form .field.error input[type="datetime-local"], + .ui.form .field.error input[type="email"], + .ui.form .field.error input[type="number"], + .ui.form .field.error input[type="password"], + .ui.form .field.error input[type="search"], + .ui.form .field.error input[type="tel"], + .ui.form .field.error input[type="time"], + .ui.form .field.error input[type="text"], + .ui.form .field.error input[type="file"], + .ui.form .field.error input[type="url"] { + background-color: #522; + border: 1px solid #7d3434; + color: #f9cbcb; + } + .ui.form .field.error select:focus, + .ui.form .field.error input:not([type]):focus, + .ui.form .field.error input[type="date"]:focus, + .ui.form .field.error input[type="datetime-local"]:focus, + .ui.form .field.error input[type="email"]:focus, + .ui.form .field.error input[type="number"]:focus, + .ui.form .field.error input[type="password"]:focus, + .ui.form .field.error input[type="search"]:focus, + .ui.form .field.error input[type="tel"]:focus, + .ui.form .field.error input[type="time"]:focus, + .ui.form .field.error input[type="text"]:focus, + .ui.form .field.error input[type="file"]:focus, + .ui.form .field.error input[type="url"]:focus { + background-color: #522; + border: 1px solid #a04141; + color: #f9cbcb; + } + .ui.green.button, + .ui.green.buttons .button { + background-color: #87ab63; + } + .ui.green.button:hover, + .ui.green.buttons .button:hover { + background-color: #a0cc75; + } + .ui.search > .results { + background: #383c4a; + border-color: var(--color-secondary); + } + .ui.search > .results .result:hover, + .ui.category.search > .results .category .result:hover { + background: var(--color-secondary); + } + .ui.search > .results .result .title { + color: #dbdbdb; + } + .ui.table > thead > tr > th { + background: var(--color-secondary); + color: #dbdbdb !important; + } + .repository.file.list #repo-files-table tr { + background: #2a2e3a; + } + .repository.file.list #repo-files-table tr:hover { + background-color: #393d4a !important; + } + .overflow.menu .items .item { + color: #9d9d9d; + } + .overflow.menu .items .item:hover { + color: #dbdbdb; + } + .ui.list > .item > .content { + color: var(--color-secondary-dark-6) !important; + } + .repository .navbar .active.item, + .repository .navbar .active.item:hover { + border-color: transparent !important; + } + .repository .diff-stats li { + border-color: var(--color-secondary); + } + .tag-code, + .tag-code td { + background: #353945 !important; + } + .tag-code td.lines-num { + background-color: #3a3e4c !important; + } + .tag-code td.lines-type-marker, + td.blob-hunk { + color: #dbdbdb !important; + } + .ui.red.button, + .ui.red.buttons .button { + background-color: #7d3434; + } + .ui.red.button:hover, + .ui.red.buttons .button:hover { + background-color: #984646; + } + .ui.list .list > .item .header, + .ui.list > .item .header { + color: #dedede; + } + .ui.list .list > .item .description, + .ui.list > .item .description { + color: var(--color-secondary-dark-6); + } + .repository.labels .ui.basic.black.label { + background-color: #bbbbbb !important; + } + .lines-num { + color: var(--color-secondary-dark-6) !important; + border-color: var(--color-secondary) !important; + } + td.blob-excerpt { + background-color: rgba(0, 0, 0, 0.15); + } + .lines-code.active, + .lines-code .active { + background: #534d1b !important; + } + .ui.ui.ui.ui.table tr.active, + .ui.ui.table td.active { + color: #dbdbdb; + } + .ui.active.label { + background: #393d4a; + border-color: #393d4a; + color: #dbdbdb; + } + .ui.header .sub.header { + color: var(--color-secondary-dark-6); + } + .ui.dividing.header { + border-bottom: 1px solid var(--color-secondary); + } + .ui.modal > .header { + background: var(--color-secondary); + color: #dbdbdb; + } + .ui.modal > .actions { + background: var(--color-secondary); + border-color: var(--color-secondary); + } + .ui.modal > .content { + background: #383c4a; + } + .minicolors-panel { + background: var(--color-secondary) !important; + border-color: #6a737d !important; + } + /* invert emojis that are hard to read otherwise */ + .emoji[aria-label="check mark"], + .emoji[aria-label="currency exchange"], + .emoji[aria-label="TOP arrow"], + .emoji[aria-label="END arrow"], + .emoji[aria-label="ON! arrow"], + .emoji[aria-label="SOON arrow"], + .emoji[aria-label="heavy dollar sign"], + .emoji[aria-label="copyright"], + .emoji[aria-label="registered"], + .emoji[aria-label="trade mark"], + .emoji[aria-label="multiply"], + .emoji[aria-label="plus"], + .emoji[aria-label="minus"], + .emoji[aria-label="divide"], + .emoji[aria-label="curly loop"], + .emoji[aria-label="double curly loop"], + .emoji[aria-label="wavy dash"], + .emoji[aria-label="paw prints"], + .emoji[aria-label="musical note"], + .emoji[aria-label="musical notes"] { + filter: invert(100%) hue-rotate(180deg); + } + .edit-diff > div > .ui.table { + border-left-color: var(--color-secondary) !important; + border-right-color: var(--color-secondary) !important; + } + footer .container .links > * { + border-left-color: #888; + } + .repository.release #release-list > li .detail .dot { + background-color: #505667; + border-color: #383c4a; + } + .tribute-container { + box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.6); + } + .repository .repo-header .ui.huge.breadcrumb.repo-title .repo-header-icon .avatar { + color: #2a2e3a; + } + img[src$="/img/matrix.svg"] { + filter: invert(80%); + } + .is-loading::after { + border-color: #4a4c58 #4a4c58 #d7d7da #d7d7da; + } + .markup-block-error { + border: 1px solid rgba(121, 71, 66, 0.5) !important; + border-bottom: none !important; + } +} diff --git a/css/less/chroma/dark.less b/css/less/chroma/dark.less new file mode 100644 index 0000000..67531ec --- /dev/null +++ b/css/less/chroma/dark.less @@ -0,0 +1,67 @@ +.chroma .hl { background-color: #3f424d; } /* LineHighlight */ +.chroma .lnt { color: #7f7f7f; } /* LineNumbersTable */ +.chroma .ln { color: #7f7f7f; } /* LineNumbers */ +.chroma .k { color: #f63; } /* Keyword */ +.chroma .kc { color: #fa1; } /* KeywordConstant */ +.chroma .kd { color: #9daccc; } /* KeywordDeclaration */ +.chroma .kn { color: #fa1; } /* KeywordNamespace */ +.chroma .kp { color: #5f8700; } /* KeywordPseudo */ +.chroma .kr { color: #f63; } /* KeywordReserved */ +.chroma .kt { color: #9daccc; } /* KeywordType */ +.chroma .na { color: #8a8a8a; } /* NameAttribute */ +.chroma .nb { color: #9daccc; } /* NameBuiltin */ +.chroma .bp { color: #9daccc; } /* NameBuiltinPseudo */ +.chroma .nc { color: #fa1; } /* NameClass */ +.chroma .no { color: #fa1; } /* NameConstant */ +.chroma .nd { color: #9daccc; } /* NameDecorator */ +.chroma .ni { color: #fa1; } /* NameEntity */ +.chroma .ne { color: #af8700; } /* NameException */ +.chroma .nf { color: #9daccc; } /* NameFunction */ +.chroma .nl { color: #fa1; } /* NameLabel */ +.chroma .nn { color: #fa1; } /* NameNamespace */ +.chroma .nx { color: #9daccc; } /* NameOther */ +.chroma .nt { color: #9daccc; } /* NameTag */ +.chroma .nv { color: #9daccc; } /* NameVariable */ +.chroma .vc { color: #f81; } /* NameVariableClass */ +.chroma .vg { color: #fa1; } /* NameVariableGlobal */ +.chroma .vi { color: #fa1; } /* NameVariableInstance */ +.chroma .s { color: #1af; } /* LiteralString */ +.chroma .sa { color: #1af; } /* LiteralStringAffix */ +.chroma .sb { color: #a0cc75; } /* LiteralStringBacktick */ +.chroma .sc { color: #1af; } /* LiteralStringChar */ +.chroma .dl { color: #1af; } /* LiteralStringDelimiter */ +.chroma .sd { color: #6a737d; } /* LiteralStringDoc */ +.chroma .s2 { color: #a0cc75; } /* LiteralStringDouble */ +.chroma .se { color: #f63; } /* LiteralStringEscape */ +.chroma .sh { color: #1af; } /* LiteralStringHeredoc */ +.chroma .si { color: #fa1; } /* LiteralStringInterpol */ +.chroma .sx { color: #fa1; } /* LiteralStringOther */ +.chroma .sr { color: #97c; } /* LiteralStringRegex */ +.chroma .s1 { color: #a0cc75; } /* LiteralStringSingle */ +.chroma .ss { color: #fa1; } /* LiteralStringSymbol */ +.chroma .m { color: #1af; } /* LiteralNumber */ +.chroma .mb { color: #1af; } /* LiteralNumberBin */ +.chroma .mf { color: #1af; } /* LiteralNumberFloat */ +.chroma .mh { color: #1af; } /* LiteralNumberHex */ +.chroma .mi { color: #1af; } /* LiteralNumberInteger */ +.chroma .il { color: #1af; } /* LiteralNumberIntegerLong */ +.chroma .mo { color: #1af; } /* LiteralNumberOct */ +.chroma .o { color: #f63; } /* Operator */ +.chroma .ow { color: #5f8700; } /* OperatorWord */ +.chroma .c { color: #6a737d; } /* Comment */ +.chroma .ch { color: #6a737d; } /* CommentHashbang */ +.chroma .cm { color: #6a737d; } /* CommentMultiline */ +.chroma .c1 { color: #6a737d; } /* CommentSingle */ +.chroma .cs { color: #95ad; } /* CommentSpecial */ +.chroma .cp { color: #fc6; } /* CommentPreproc */ +.chroma .cpf { color: #03dfff; } /* CommentPreprocFile */ +.chroma .gd { color: #fff; background-color: #5f3737; } /* GenericDeleted */ +.chroma .ge { color: #ef5; } /* GenericEmph */ +.chroma .gr { color: #f33; } /* GenericError */ +.chroma .gh { color: #fa1; } /* GenericHeading */ +.chroma .gi { color: #fff; background-color: #3a523a; } /* GenericInserted */ +.chroma .go { color: #888888; } /* GenericOutput */ +.chroma .gp { color: #555555; } /* GenericPrompt */ +.chroma .gu { color: #9daccc; } /* GenericSubheading */ +.chroma .gt { color: #f63; } /* GenericTraceback */ +.chroma .w { color: #bbbbbb; } /* TextWhitespace */ diff --git a/css/less/codemirror/dark.less b/css/less/codemirror/dark.less new file mode 100644 index 0000000..d0e954d --- /dev/null +++ b/css/less/codemirror/dark.less @@ -0,0 +1,89 @@ +.CodeMirror { + &.cm-s-default, + &.cm-s-paper { + .cm-property { + color: #a0cc75; + } + + .cm-header { + color: #9daccc; + } + + .cm-quote { + color: #009900; + } + + .cm-keyword { + color: #cc8a61; + } + + .cm-atom { + color: #ef5e77; + } + + .cm-number { + color: #ff5656; + } + + .cm-def { + color: #e4e4e4; + } + + .cm-variable-2 { + color: #00bdbf; + } + + .cm-variable-3 { + color: #008855; + } + + .cm-comment { + color: #8e9ab3; + } + + .cm-string { + color: #a77272; + } + + .cm-string-2 { + color: #ff5500; + } + + .cm-meta, + .cm-qualifier { + color: #ffb176; + } + + .cm-builtin { + color: #b7c951; + } + + .cm-bracket { + color: #999977; + } + + .cm-tag { + color: #f1d273; + } + + .cm-attribute { + color: #bfcc70; + } + + .cm-hr { + color: #999999; + } + + .cm-url { + color: #c5cfd0; + } + + .cm-link { + color: #d8c792; + } + + .cm-error { + color: #dbdbeb; + } + } +} diff --git a/css/less/themes/theme-arc-green.less b/css/less/themes/theme-arc-green.less new file mode 100644 index 0000000..01150d3 --- /dev/null +++ b/css/less/themes/theme-arc-green.less @@ -0,0 +1,457 @@ +@import "../chroma/dark.less"; +@import "../codemirror/dark.less"; + +:root { + --is-dark-theme: true; + --color-primary: #87ab63; + --color-primary-dark-1: #93b373; + --color-primary-dark-2: #9fbc82; + --color-primary-dark-3: #abc492; + --color-primary-dark-4: #b7cda1; + --color-primary-dark-5: #cfddc1; + --color-primary-dark-6: #e7eee0; + --color-primary-dark-7: #f8faf6; + --color-primary-light-1: #7a9e55; + --color-primary-light-2: #6c8c4c; + --color-primary-light-3: #5f7b42; + --color-primary-light-4: #516939; + --color-primary-light-5: #364626; + --color-primary-light-6: #1b2313; + --color-primary-light-7: #080b06; + --color-primary-alpha-10: #87ab6319; + --color-primary-alpha-20: #87ab6333; + --color-primary-alpha-30: #87ab634b; + --color-primary-alpha-40: #87ab6366; + --color-primary-alpha-50: #87ab6380; + --color-primary-alpha-60: #87ab6399; + --color-primary-alpha-70: #87ab63b3; + --color-primary-alpha-80: #87ab63cc; + --color-primary-alpha-90: #87ab63e1; + --color-secondary: #454a57; + --color-secondary-dark-1: #505665; + --color-secondary-dark-2: #5b6273; + --color-secondary-dark-3: #71798e; + --color-secondary-dark-4: #7f8699; + --color-secondary-dark-5: #8c93a4; + --color-secondary-dark-6: #9aa0af; + --color-secondary-dark-7: #a8adba; + --color-secondary-dark-8: #b6bac5; + --color-secondary-dark-9: #c4c7d0; + --color-secondary-dark-10: #d2d4db; + --color-secondary-dark-11: #dfe1e6; + --color-secondary-dark-12: #edeef1; + --color-secondary-dark-13: #fbfbfc; + --color-secondary-light-1: #373b46; + --color-secondary-light-2: #292c34; + --color-secondary-light-3: #1c1e23; + --color-secondary-light-4: #0e0f11; + --color-secondary-alpha-10: #454a5719; + --color-secondary-alpha-20: #454a5733; + --color-secondary-alpha-30: #454a574b; + --color-secondary-alpha-40: #454a5766; + --color-secondary-alpha-50: #454a5780; + --color-secondary-alpha-60: #454a5799; + --color-secondary-alpha-70: #454a57b3; + --color-secondary-alpha-80: #454a57cc; + --color-secondary-alpha-90: #454a57e1; + /* colors */ + --color-red: #db2828; + --color-orange: #f2711c; + --color-yellow: #fbbd08; + --color-olive: #b5cc18; + --color-green: #21ba45; + --color-teal: #00b5ad; + --color-blue: #2185d0; + --color-violet: #6435c9; + --color-purple: #a333c8; + --color-pink: #e03997; + --color-brown: #a5673f; + --color-grey: #767a85; + --color-black: #1e222e; + --color-gold: #a1882b; + --color-white: #ffffff; + --color-diff-removed-word-bg: #6f3333; + --color-diff-added-word-bg: #3c653c; + --color-diff-removed-row-bg: #3c2626; + --color-diff-moved-row-bg: #818044; + --color-diff-added-row-bg: #283e2d; + --color-diff-removed-row-border: #634343; + --color-diff-moved-row-border: #bcca6f; + --color-diff-added-row-border: #314a37; + --color-diff-inactive: #353846; + --color-error-border: #a53a37; + --color-error-bg: #482c2c; + --color-error-text: #ff4433; + --color-success-border: #458a57; + --color-success-bg: #284034; + --color-success-text: #6cc664; + --color-warning-border: #bb9d00; + --color-warning-bg: #3a3a30; + --color-warning-text: #fbbd08; + --color-info-border: #306090; + --color-info-bg: #26354c; + --color-info-text: #38a8e8; + /* target-based colors */ + --color-body: #383c4a; + --color-box-header: #404652; + --color-box-body: #303440; + --color-text-dark: #dbe0ea; + --color-text: #bbc0ca; + --color-text-light: #a6aab5; + --color-text-light-2: #8a8e99; + --color-text-light-3: #707687; + --color-footer: #2e323e; + --color-timeline: #4c525e; + --color-input-text: #d5dbe6; + --color-input-background: #292d39; + --color-input-border: #454a57; + --color-input-border-hover: #505667; + --color-navbar: #2a2e3a; + --color-navbar-transparent: #2a2e3a00; + --color-light: #00000028; + --color-light-mimic-enabled: rgba(0, 0, 0, calc(40 / 255 * 222 / 255 / var(--opacity-disabled))); + --color-light-border: #ffffff28; + --color-hover: #ffffff10; + --color-active: #ffffff16; + --color-menu: #2e323e; + --color-card: #2e323e; + --color-markup-table-row: #ffffff06; + --color-markup-code-block: #292d39; + --color-button: #353846; + --color-code-bg: #2a2e3a; + --color-code-sidebar-bg: #2e323e; + --color-shadow: #00000060; + --color-secondary-bg: #2a2e3a; + --color-text-focus: #fff; + --color-expand-button: #3c404d; + --color-placeholder-text: #6a737d; + --color-editor-line-highlight: var(--color-primary-light-5); + --color-project-board-bg: var(--color-secondary-light-2); + --color-caret: var(--color-text); /* should ideally be --color-text-dark, see #15651 */ + --color-reaction-bg: #ffffff12; + --color-reaction-active-bg: var(--color-primary-alpha-40); +} + +::-webkit-calendar-picker-indicator { + filter: invert(.8); +} + +.ui.horizontal.segments > .segment { + background-color: #383c4a; +} + +.following.bar.light { + background: #2e323e; + border-color: var(--color-secondary-alpha-40); +} + +.following.bar .top.menu a.item:hover { + color: #fff; +} + +.feeds .list ul li.private { + background: #353945; +} + +.ui.red.label, +.ui.red.labels .label { + background-color: #7d3434 !important; + border-color: #8a2121 !important; +} + +.ui.yellow.label, +.ui.yellow.labels .label { + border-color: #664d02 !important; + background-color: #936e00 !important; +} + +.ui.accordion .title:not(.ui) { + color: #dbdbdb; +} + +.ui.green.label, +.ui.green.labels .label, +.ui.basic.green.label { + background-color: #2d693b !important; + border-color: #2d693b !important; +} + +.ui.green.labels a.label:hover, +.ui.basic.green.labels a.label:hover, +a.ui.ui.ui.green.label:hover, +a.ui.basic.green.label:hover { + background-color: #3d794b !important; + border-color: #3d794b !important; + color: #fff !important; +} + +.ui.divider:not(.vertical):not(.horizontal) { + border-bottom-color: var(--color-secondary); + border-top-color: transparent; +} + +.form .help { + color: #7f8699; +} + +.ui .text.light.grey { + color: #7f8699 !important; +} + +.ui.form .fields.error .field textarea, +.ui.form .fields.error .field select, +.ui.form .fields.error .field input:not([type]), +.ui.form .fields.error .field input[type="date"], +.ui.form .fields.error .field input[type="datetime-local"], +.ui.form .fields.error .field input[type="email"], +.ui.form .fields.error .field input[type="number"], +.ui.form .fields.error .field input[type="password"], +.ui.form .fields.error .field input[type="search"], +.ui.form .fields.error .field input[type="tel"], +.ui.form .fields.error .field input[type="time"], +.ui.form .fields.error .field input[type="text"], +.ui.form .fields.error .field input[type="file"], +.ui.form .fields.error .field input[type="url"], +.ui.form .field.error textarea, +.ui.form .field.error select, +.ui.form .field.error input:not([type]), +.ui.form .field.error input[type="date"], +.ui.form .field.error input[type="datetime-local"], +.ui.form .field.error input[type="email"], +.ui.form .field.error input[type="number"], +.ui.form .field.error input[type="password"], +.ui.form .field.error input[type="search"], +.ui.form .field.error input[type="tel"], +.ui.form .field.error input[type="time"], +.ui.form .field.error input[type="text"], +.ui.form .field.error input[type="file"], +.ui.form .field.error input[type="url"] { + background-color: #522; + border: 1px solid #7d3434; + color: #f9cbcb; +} + +.ui.form .field.error select:focus, +.ui.form .field.error input:not([type]):focus, +.ui.form .field.error input[type="date"]:focus, +.ui.form .field.error input[type="datetime-local"]:focus, +.ui.form .field.error input[type="email"]:focus, +.ui.form .field.error input[type="number"]:focus, +.ui.form .field.error input[type="password"]:focus, +.ui.form .field.error input[type="search"]:focus, +.ui.form .field.error input[type="tel"]:focus, +.ui.form .field.error input[type="time"]:focus, +.ui.form .field.error input[type="text"]:focus, +.ui.form .field.error input[type="file"]:focus, +.ui.form .field.error input[type="url"]:focus { + background-color: #522; + border: 1px solid #a04141; + color: #f9cbcb; +} + +.ui.green.button, +.ui.green.buttons .button { + background-color: #87ab63; +} + +.ui.green.button:hover, +.ui.green.buttons .button:hover { + background-color: #a0cc75; +} + +.ui.search > .results { + background: #383c4a; + border-color: var(--color-secondary); +} + +.ui.search > .results .result:hover, +.ui.category.search > .results .category .result:hover { + background: var(--color-secondary); +} + +.ui.search > .results .result .title { + color: #dbdbdb; +} + +.ui.table > thead > tr > th { + background: var(--color-secondary); + color: #dbdbdb !important; +} + +.repository.file.list #repo-files-table tr { + background: #2a2e3a; +} + +.repository.file.list #repo-files-table tr:hover { + background-color: #393d4a !important; +} + +.overflow.menu .items .item { + color: #9d9d9d; +} + +.overflow.menu .items .item:hover { + color: #dbdbdb; +} + +.ui.list > .item > .content { + color: var(--color-secondary-dark-6) !important; +} + +.repository .navbar .active.item, +.repository .navbar .active.item:hover { + border-color: transparent !important; +} + +.repository .diff-stats li { + border-color: var(--color-secondary); +} + +.tag-code, +.tag-code td { + background: #353945 !important; + +} +.tag-code td.lines-num { + background-color: #3a3e4c !important; +} + +.tag-code td.lines-type-marker, +td.blob-hunk { + color: #dbdbdb !important; +} + +.ui.red.button, +.ui.red.buttons .button { + background-color: #7d3434; +} + +.ui.red.button:hover, +.ui.red.buttons .button:hover { + background-color: #984646; +} + +.ui.list .list > .item .header, +.ui.list > .item .header { + color: #dedede; +} + +.ui.list .list > .item .description, +.ui.list > .item .description { + color: var(--color-secondary-dark-6); +} + +.repository.labels .ui.basic.black.label { + background-color: #bbbbbb !important; +} + +.lines-num { + color: var(--color-secondary-dark-6) !important; + border-color: var(--color-secondary) !important; +} + +td.blob-excerpt { + background-color: rgba(0, 0, 0, .15); +} + +.lines-code.active, +.lines-code .active { + background: #534d1b !important; +} + +.ui.ui.ui.ui.table tr.active, +.ui.ui.table td.active { + color: #dbdbdb; +} + +.ui.active.label { + background: #393d4a; + border-color: #393d4a; + color: #dbdbdb; +} + +.ui.header .sub.header { + color: var(--color-secondary-dark-6); +} + +.ui.dividing.header { + border-bottom: 1px solid var(--color-secondary); +} + +.ui.modal > .header { + background: var(--color-secondary); + color: #dbdbdb; +} + +.ui.modal > .actions { + background: var(--color-secondary); + border-color: var(--color-secondary); +} + +.ui.modal > .content { + background: #383c4a; +} + +.minicolors-panel { + background: var(--color-secondary) !important; + border-color: #6a737d !important; +} + +/* invert emojis that are hard to read otherwise */ +.emoji[aria-label="check mark"], +.emoji[aria-label="currency exchange"], +.emoji[aria-label="TOP arrow"], +.emoji[aria-label="END arrow"], +.emoji[aria-label="ON! arrow"], +.emoji[aria-label="SOON arrow"], +.emoji[aria-label="heavy dollar sign"], +.emoji[aria-label="copyright"], +.emoji[aria-label="registered"], +.emoji[aria-label="trade mark"], +.emoji[aria-label="multiply"], +.emoji[aria-label="plus"], +.emoji[aria-label="minus"], +.emoji[aria-label="divide"], +.emoji[aria-label="curly loop"], +.emoji[aria-label="double curly loop"], +.emoji[aria-label="wavy dash"], +.emoji[aria-label="paw prints"], +.emoji[aria-label="musical note"], +.emoji[aria-label="musical notes"] { + filter: invert(100%) hue-rotate(180deg); +} + +.edit-diff > div > .ui.table { + border-left-color: var(--color-secondary) !important; + border-right-color: var(--color-secondary) !important; +} + +footer .container .links > * { + border-left-color: #888; +} + +.repository.release #release-list > li .detail .dot { + background-color: #505667; + border-color: #383c4a; +} + +.tribute-container { + box-shadow: 0 .25rem .5rem rgba(0, 0, 0, .6); +} + +.repository .repo-header .ui.huge.breadcrumb.repo-title .repo-header-icon .avatar { + color: #2a2e3a; +} + +img[src$="/img/matrix.svg"] { + filter: invert(80%); +} + +.is-loading::after { + border-color: #4a4c58 #4a4c58 #d7d7da #d7d7da; +} + +.markup-block-error { + border: 1px solid rgba(121, 71, 66, .5) !important; + border-bottom: none !important; +} diff --git a/css/less/themes/theme-od.less b/css/less/themes/theme-od.less new file mode 100644 index 0000000..f49e194 --- /dev/null +++ b/css/less/themes/theme-od.less @@ -0,0 +1,3 @@ +@media (prefers-color-scheme: dark) { + @import "theme-arc-green.less"; +} diff --git a/img/.gitkeep b/img/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/package.json b/package.json new file mode 100644 index 0000000..96e50f3 --- /dev/null +++ b/package.json @@ -0,0 +1,25 @@ +{ + "name": "od_gitea_customization", + "version": "1.0.0", + "description": "Opening Design Gitea theming", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "https://hub.openingdesign.com/OpeningDesign/gitea_customization" + }, + "keywords": [ + "gitea", + "them" + ], + "author": "", + "license": "GPL-3.0", + "devDependencies": { + "husky": "^8.0.1", + "less": "^4.1.3", + "lint-staged": "^13.0.3", + "prettier": "^2.7.1" + } +} diff --git a/templates/home.tmpl b/templates/home.tmpl new file mode 100644 index 0000000..7667db2 --- /dev/null +++ b/templates/home.tmpl @@ -0,0 +1,53 @@ +{{template "base/head" .}} +
+
+
+
+ +
+
+

+ {{AppName}} +

+

{{.locale.Tr "startpage.app_desc"}}

+
+
+
+
+
+

+ {{svg "octicon-flame"}} {{.locale.Tr "startpage.install"}} +

+

+ {{.locale.Tr "startpage.install_desc" | Str2html}} +

+
+
+

+ {{svg "octicon-device-desktop"}} {{.locale.Tr "startpage.platform"}} +

+

+ {{.locale.Tr "startpage.platform_desc" | Str2html}} +

+
+
+
+
+

+ {{svg "octicon-rocket"}} {{.locale.Tr "startpage.lightweight"}} +

+

+ {{.locale.Tr "startpage.lightweight_desc" | Str2html}} +

+
+
+

+ {{svg "octicon-code"}} {{.locale.Tr "startpage.license"}} +

+

+ {{.locale.Tr "startpage.license_desc" | Str2html}} +

+
+
+
+{{template "base/footer" .}}