diff --git a/options/label/blog b/options/label/blog new file mode 100644 index 0000000..47af3c8 --- /dev/null +++ b/options/label/blog @@ -0,0 +1,8 @@ +#e11d21 ambiguity ; Words or phrases are not clear in their meaning +#70c24a content ; Writing of public-facing content +#cccccc duplicate ; This issue or pull request already exists +#207de5 miswording ; The wrong word is used +#006b75 solecism ; Need some help +#5319e7 technical ; Relates to static site generation +#fbca04 typo ; A word is misspelled +#ffffff wontfix ; This won't be fixed \ No newline at end of file diff --git a/public/css/theme-martian.css b/public/css/theme-martian.css new file mode 100644 index 0000000..a32e5b3 --- /dev/null +++ b/public/css/theme-martian.css @@ -0,0 +1,554 @@ +/* derived from https://github.com/go-gitea/gitea/blob/main/web_src/less/themes/theme-arc-green.less */ + +@font-face { + font-family: Mononoki; + src: url("https://tebibyte.media/blog/assets/mononoki.ttf") format("ttf"), + url("https://tebibyte.media/blog/assets/mononoki.woff2") format("woff2"), + url("https://tebibyte.media/blog/assets/mononoki.woff") format("woff"); +} + +@font-face { + font-family: Ubuntu; + src: url("https://tebibyte.media/assets/fonts/ubuntu.ttf") format("ttf"), + url("https://tebibyte.media/assets/fonts/ubuntu.woff2") format("woff2"), + url("https://tebibyte.media/assets/fonts/ubuntu.woff") format("woff"); +} + +@font-face { + font-family: Ubuntu Mono Ligaturized; + src: url("https://tebibyte.media/assets/fonts/UbuntuMonoLigaturized-Regular.ttf") format("ttf"); +} + +:root { + --fonts-override: Ubuntu !important; + --fonts-monospace: Ubuntu Mono Ligaturized !important; + + --is-dark-theme: true; + --textured-background: url("https://tebibyte.media/blog/assets/tib_bg.jpg"); + --color-primary: hsl(0, 80%, 40%); + --color-primary-dark-1: hsl(0, 80%, 38%); + --color-primary-dark-2: hsl(0, 80%, 36%); + --color-primary-dark-3: hsl(0, 80%, 34%); + --color-primary-dark-4: hsl(0, 80%, 32%); + --color-primary-dark-5: hsl(0, 80%, 30%); + --color-primary-dark-6: hsl(0, 80%, 28%); + --color-primary-dark-7: hsl(0, 80%, 26%); + --color-primary-light-1: hsl(0, 80%, 42%); + --color-primary-light-2: hsl(0, 80%, 44%); + --color-primary-light-3: hsl(0, 80%, 46%); + --color-primary-light-4: hsl(0, 80%, 48%); + --color-primary-light-5: hsl(0, 80%, 50%); + --color-primary-light-6: hsl(0, 80%, 52%); + --color-primary-light-7: hsl(0, 80%, 54%); + --color-primary-alpha-10: hsla(0, 80%, 40%, 10%); + --color-primary-alpha-20: hsla(0, 80%, 40%, 20%); + --color-primary-alpha-30: hsla(0, 80%, 40%, 30%); + --color-primary-alpha-40: hsla(0, 80%, 40%, 40%); + --color-primary-alpha-50: hsla(0, 80%, 40%, 50%); + --color-primary-alpha-60: hsla(0, 80%, 40%, 60%); + --color-primary-alpha-70: hsla(0, 80%, 40%, 70%); + --color-primary-alpha-80: hsla(0, 80%, 40%, 80%); + --color-primary-alpha-90: hsla(0, 80%, 40%, 90%); + --color-secondary: hsl(0, 20%, 20%); + --color-secondary-dark-1: hsl(0, 20%, 22%); + --color-secondary-dark-2: hsl(0, 20%, 24%); + --color-secondary-dark-3: hsl(0, 20%, 26%); + --color-secondary-dark-4: hsl(0, 20%, 28%); + --color-secondary-dark-5: hsl(0, 20%, 30%); + --color-secondary-dark-6: hsl(0, 20%, 32%); + --color-secondary-dark-7: hsl(0, 20%, 34%); + --color-secondary-dark-8: hsl(0, 20%, 36%); + --color-secondary-dark-9: hsl(0, 20%, 38%); + --color-secondary-dark-10: hsl(0, 20%, 40%); + --color-secondary-dark-11: hsl(0, 20%, 42%); + --color-secondary-dark-12: hsl(0, 20%, 44%); + --color-secondary-dark-13: hsl(0, 20%, 46%); + --color-secondary-light-1: hsl(0, 20%, 18%); + --color-secondary-light-2: hsl(0, 20%, 16%); + --color-secondary-light-3: hsl(0, 20%, 14%); + --color-secondary-light-4: hsl(0, 20%, 12%); + --color-secondary-alpha-10: hsla(0, 20%, 20%, 10%); + --color-secondary-alpha-20: hsla(0, 20%, 20%, 20%); + --color-secondary-alpha-30: hsla(0, 20%, 20%, 30%); + --color-secondary-alpha-40: hsla(0, 20%, 20%, 40%); + --color-secondary-alpha-50: hsla(0, 20%, 20%, 50%); + --color-secondary-alpha-60: hsla(0, 20%, 20%, 60%); + --color-secondary-alpha-70: hsla(0, 20%, 20%, 70%); + --color-secondary-alpha-80: hsla(0, 20%, 20%, 80%); + --color-secondary-alpha-90: hsla(0, 0%, 20%, 90%); + /* 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: hsl(0, 20%, 7%); + --color-box-header: hsl(0, 20%, 12%); + --color-box-body: hsl(0, 20%, 9%); + + --color-box-body-highlight: #353945; + --color-text-dark: hsl(0, 25%, 95%); + --color-text: hsl(0, 25%, 90%); + --color-text-light: hsl(0, 25%, 80%); + --color-text-light-1: hsl(0, 25%, 70%); + --color-text-light-2: hsl(0, 25%, 60%); + --color-text-light-3: hsl(0, 25%, 50%); + --color-footer: hsl(0, 20%, 5%); + --color-timeline: #4c525e; + --color-input-text: hsl(0, 25%, 90%); + --color-input-background: hsl(0, 20%, 7%); + --color-input-border: hsl(0, 80%, 20%); + --color-input-border-hover: hsl(0, 80%, 30%); + --color-navbar: hsl(0, 20%, 10%); + --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: hsla(0, 80%, 40%, 40%); + --color-hover: #ffffff10; + --color-active: #ffffff16; + --color-menu: hsl(0, 20%, 15%); + --color-card: hsl(0, 20%, 10%); + --color-markup-table-row: #ffffff06; + --color-markup-code-block: #292d39; + --color-button: hsl(0, 20%, 13%); + --color-code-bg: hsl(0, 20%, 7%); + --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); + --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; +} + +.ui.divider:not(.vertical):not(.horizontal) { + border-bottom-color: var(--color-secondary); + border-top-color: transparent; +} + +.repository .header-wrapper .ui.tabs.divider { + border: none; +} + +.following.bar.light { + background: hsl(0, 20%, 13%); + border-color: hsl(0, 20%, 16%); +} + +.following.bar .top.menu a.item:hover { + color: var(--color-text); +} + +.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; +} + +.form .help { + color: #7f8699; +} + +.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: hsl(0, 80%, 40%); +} + +.ui.green.button:hover, +.ui.green.buttons .button:hover { + background-color: hsl(0, 80%, 50%); +} + +.ui.green.button:focus, +.ui.green.buttons .button:focus { + background-color: hsl(0, 80%, 40%); + border-color: hsl(0, 80%, 50%); +} + +.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: var(--color-text); +} + +.ui.table > thead > tr > th { + background: var(--color-secondary-light-4); + color: var(--color-text) !important; +} + +.repository.file.list #repo-files-table tr { + background: hsl(0, 20%, 10%); +} + +.repository.file.list #repo-files-table tr:hover { + background-color: hsl(0, 20%, 13%) !important; +} + +.header-wrapper { + background: var(--textured-background); +} + +.repo-header { + background-color: hsla(0, 20%, 13%, .30); + border: 1px solid var(--color-primary-dark-6); + border-radius: .28571429rem; + padding: 1rem; + backdrop-filter: blur(10px); +} + +.repo-header .ui.button { + margin-left: 1em; +} + +.ui.tabular.menu .item { + border-top-width: 1px; + font-weight: 500; + margin-bottom: -1px; + box-shadow: none; + border-radius: .28571429rem .28571429rem 0 0 !important; + background-color: hsla(0, 20%, 4%, .30); + backdrop-filter: blur(10px); +} + +.ui.tabular.menu .item:not(:last-child) { + margin-right: 1rem; +} + +.ui.tabular.menu .item:hover { + background-color: hsla(0, 20%, 6%, .70); +} + +.ui.tabular.menu .item, +.ui.tabular.menu .item.active, +.ui.tabular.menu .item.active:hover { + border: 1px solid var(--color-secondary) !important; + border-bottom: none !important; +} + +.ui.dropdown > .text > img, .ui.dropdown > .text > .image:not(.icon) { + margin-top: -0.2rem; +} + +.overflow.menu .items .item { + color: #9d9d9d; +} + +.overflow.menu .items .item:hover { + color: var(--color-text); +} + +.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; +} + +.ui.grey.labels .label, .ui.ui.ui.grey.label { + background-color: var(--color-primary); + border: none; + color: var(--color-text); +} + +.feeds .list ul li.private { + background-color: hsla(20, 40%, 50%, .08); +} + +/* +* martian.css is free software: you can redistribute and/or modify +* it under the terms of the GNU Affero General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* martian.css is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with martian.css. If not, see . +*/ diff --git a/public/img/apple-touch-icon.png b/public/img/apple-touch-icon.png new file mode 100644 index 0000000..7b533ef Binary files /dev/null and b/public/img/apple-touch-icon.png differ diff --git a/public/img/avatar_default.png b/public/img/avatar_default.png new file mode 100644 index 0000000..6eee96d Binary files /dev/null and b/public/img/avatar_default.png differ diff --git a/public/img/favicon.png b/public/img/favicon.png new file mode 100644 index 0000000..7669494 Binary files /dev/null and b/public/img/favicon.png differ diff --git a/public/img/favicon.svg b/public/img/favicon.svg new file mode 100644 index 0000000..1b4c37d --- /dev/null +++ b/public/img/favicon.svg @@ -0,0 +1 @@ +TiB. \ No newline at end of file diff --git a/public/img/logo.png b/public/img/logo.png new file mode 100644 index 0000000..1727793 Binary files /dev/null and b/public/img/logo.png differ diff --git a/public/img/logo.svg b/public/img/logo.svg new file mode 100644 index 0000000..1b4c37d --- /dev/null +++ b/public/img/logo.svg @@ -0,0 +1 @@ +TiB. \ No newline at end of file diff --git a/public/img/tebitea.svg b/public/img/tebitea.svg new file mode 100644 index 0000000..40aeb77 --- /dev/null +++ b/public/img/tebitea.svg @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + TiB. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +