chore: init
This commit is contained in:
commit
327bf34bf8
15 changed files with 1542 additions and 0 deletions
6
.vscode/settings.json
vendored
Normal file
6
.vscode/settings.json
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"files.associations": {
|
||||
// Set Go templates to HTML for better syntax highlighting
|
||||
"*.tmpl": "html"
|
||||
}
|
||||
}
|
15
README.md
Normal file
15
README.md
Normal file
|
@ -0,0 +1,15 @@
|
|||
# Astrial Git Configuration
|
||||
|
||||
These files contain the customised assets and templates that are used for Astrial Git.
|
||||
|
||||
## Installation
|
||||
|
||||
To install these files you will need to place them in the `$FORGEJO_CUSTOM` directory for your Forgejo instance.
|
||||
|
||||
Don't forget to restart after applying.
|
||||
|
||||
## Notes
|
||||
These files are not intended for installation without modification on your own instance, although we won't stop you from doing so. No support will be provided.
|
||||
|
||||
Fonts (currently just Manrope) are licensed under the OFL, a copy of that license is included alongside the fonts.
|
||||
|
858
public/assets/css/theme-catppuccin.css
Normal file
858
public/assets/css/theme-catppuccin.css
Normal file
|
@ -0,0 +1,858 @@
|
|||
/* Make sure Manrope is available */
|
||||
@import url('/assets/font/style.css');
|
||||
|
||||
:root {
|
||||
color-scheme: dark;
|
||||
--is-dark-theme: true;
|
||||
accent-color: #89b4fa;
|
||||
--color-primary: #89b4fa;
|
||||
--color-primary-contrast: #11111b;
|
||||
--color-primary-hover: #71a4f9;
|
||||
--color-primary-dark-1: #7aabf9;
|
||||
--color-primary-dark-2: #6ca1f9;
|
||||
--color-primary-dark-3: #5d98f8;
|
||||
--color-primary-dark-4: #4e8ff8;
|
||||
--color-primary-dark-5: #4085f7;
|
||||
--color-primary-dark-6: #317cf6;
|
||||
--color-primary-dark-7: #2273f6;
|
||||
--color-primary-light-1: #98bdfb;
|
||||
--color-primary-light-2: #a6c7fb;
|
||||
--color-primary-light-3: #b5d0fc;
|
||||
--color-primary-light-4: #c4d9fc;
|
||||
--color-primary-light-5: #d2e3fd;
|
||||
--color-primary-light-6: #e1ecfe;
|
||||
--color-primary-light-7: #f0f5fe;
|
||||
--color-primary-alpha-10: rgba(137, 180, 250, 0.1);
|
||||
--color-primary-alpha-20: rgba(137, 180, 250, 0.2);
|
||||
--color-primary-alpha-30: rgba(137, 180, 250, 0.3);
|
||||
--color-primary-alpha-40: rgba(137, 180, 250, 0.4);
|
||||
--color-primary-alpha-50: rgba(137, 180, 250, 0.5);
|
||||
--color-primary-alpha-60: rgba(137, 180, 250, 0.6);
|
||||
--color-primary-alpha-70: rgba(137, 180, 250, 0.7);
|
||||
--color-primary-alpha-80: rgba(137, 180, 250, 0.8);
|
||||
--color-primary-alpha-90: rgba(137, 180, 250, 0.9);
|
||||
--color-secondary: #45475a;
|
||||
--color-secondary-dark-1: #37394d;
|
||||
--color-secondary-dark-2: #3e3f56;
|
||||
--color-secondary-dark-3: #44465f;
|
||||
--color-secondary-dark-4: #4b4c68;
|
||||
--color-secondary-dark-5: #515370;
|
||||
--color-secondary-dark-6: #575979;
|
||||
--color-secondary-dark-7: #5e6082;
|
||||
--color-secondary-dark-8: #64668b;
|
||||
--color-secondary-dark-9: #6b6d94;
|
||||
--color-secondary-dark-10: #74769a;
|
||||
--color-secondary-dark-11: #7c7ea1;
|
||||
--color-secondary-dark-12: #8587a7;
|
||||
--color-secondary-dark-13: #8e90ae;
|
||||
--color-secondary-light-1: #2b2b3b;
|
||||
--color-secondary-light-2: #242532;
|
||||
--color-secondary-light-3: #1e1e29;
|
||||
--color-secondary-light-4: #171820;
|
||||
--color-secondary-alpha-10: rgba(49, 50, 68, 0.1);
|
||||
--color-secondary-alpha-20: rgba(49, 50, 68, 0.2);
|
||||
--color-secondary-alpha-30: rgba(49, 50, 68, 0.3);
|
||||
--color-secondary-alpha-40: rgba(49, 50, 68, 0.4);
|
||||
--color-secondary-alpha-50: rgba(49, 50, 68, 0.5);
|
||||
--color-secondary-alpha-60: rgba(49, 50, 68, 0.6);
|
||||
--color-secondary-alpha-70: rgba(49, 50, 68, 0.7);
|
||||
--color-secondary-alpha-80: rgba(49, 50, 68, 0.8);
|
||||
--color-secondary-alpha-90: rgba(49, 50, 68, 0.9);
|
||||
/* colors */
|
||||
--color-red: #f38ba8;
|
||||
--color-orange: #fab387;
|
||||
--color-yellow: #f9e2af;
|
||||
--color-olive: #a6e3a1;
|
||||
--color-green: #a6e3a1;
|
||||
--color-teal: #94e2d5;
|
||||
--color-blue: #89b4fa;
|
||||
--color-violet: #b4befe;
|
||||
--color-purple: #cba6f7;
|
||||
--color-pink: #f5c2e7;
|
||||
--color-brown: #f2cdcd;
|
||||
--color-grey: #9399b2;
|
||||
--color-black: #181825;
|
||||
/* light variants - produced via Sass scale-color(color, $lightness: -10%) */
|
||||
--color-red-light: #ee5d85;
|
||||
--color-orange-light: #f89456;
|
||||
--color-yellow-light: #f5d180;
|
||||
--color-olive-light: #81d77a;
|
||||
--color-green-light: #81d77a;
|
||||
--color-teal-light: #6cd7c5;
|
||||
--color-blue-light: #5895f8;
|
||||
--color-violet-light: #8292fd;
|
||||
--color-purple-light: #b077f3;
|
||||
--color-pink-light: #ee96d6;
|
||||
--color-brown-light: #e7a5a5;
|
||||
--color-grey-light: #757d9d;
|
||||
--color-black-light: #040406;
|
||||
/* dark 1 variants - produced via Sass scale-color(color, $lightness: -10%) */
|
||||
--color-red-dark-1: #ee5d85;
|
||||
--color-orange-dark-1: #f89456;
|
||||
--color-yellow-dark-1: #f5d180;
|
||||
--color-olive-dark-1: #81d77a;
|
||||
--color-green-dark-1: #81d77a;
|
||||
--color-teal-dark-1: #6cd7c5;
|
||||
--color-blue-dark-1: #5895f8;
|
||||
--color-violet-dark-1: #8292fd;
|
||||
--color-purple-dark-1: #b077f3;
|
||||
--color-pink-dark-1: #ee96d6;
|
||||
--color-brown-dark-1: #e7a5a5;
|
||||
--color-black-dark-1: #040406;
|
||||
/* dark 2 variants - produced via Sass scale-color(color, $lightness: -20%) */
|
||||
--color-red-dark-2: #e92f63;
|
||||
--color-orange-dark-2: #f67525;
|
||||
--color-yellow-dark-2: #f2c050;
|
||||
--color-olive-dark-2: #5ccc52;
|
||||
--color-green-dark-2: #5ccc52;
|
||||
--color-teal-dark-2: #44ccb6;
|
||||
--color-blue-dark-2: #2776f6;
|
||||
--color-violet-dark-2: #4f67fd;
|
||||
--color-purple-dark-2: #9448ef;
|
||||
--color-pink-dark-2: #e76ac5;
|
||||
--color-brown-dark-2: #dd7c7c;
|
||||
--color-black-dark-2: black;
|
||||
/* other colors */
|
||||
--color-gold: #f5e0dc;
|
||||
--color-white: #cdd6f4;
|
||||
--color-diff-removed-word-bg: rgba(243, 139, 168, 0.15);
|
||||
--color-diff-added-word-bg: rgba(166, 227, 161, 0.15);
|
||||
--color-diff-removed-row-bg: rgba(243, 139, 168, 0.07);
|
||||
--color-diff-moved-row-bg: rgba(249, 226, 175, 0.07);
|
||||
--color-diff-added-row-bg: rgba(166, 227, 161, 0.07);
|
||||
--color-diff-removed-row-border: rgba(243, 139, 168, 0.07);
|
||||
--color-diff-moved-row-border: rgba(249, 226, 175, 0.07);
|
||||
--color-diff-added-row-border: rgba(166, 227, 161, 0.07);
|
||||
--color-diff-inactive: #9399b2;
|
||||
--color-error-border: #f38ba8;
|
||||
--color-error-bg: #f38ba8;
|
||||
--color-error-bg-active: #f17497;
|
||||
--color-error-bg-hover: #ee5d85;
|
||||
--color-error-text: #11111b;
|
||||
--color-success-border: #81d77a;
|
||||
--color-success-bg: #a6e3a1;
|
||||
--color-success-text: #11111b;
|
||||
--color-warning-border: #f5d180;
|
||||
--color-warning-bg: #f9e2af;
|
||||
--color-warning-text: #11111b;
|
||||
--color-info-border: #5895f8;
|
||||
--color-info-bg: #11111b;
|
||||
--color-info-text: #cdd6f4;
|
||||
--color-red-badge: #ee5d85;
|
||||
--color-red-badge-bg: #11111b;
|
||||
--color-red-badge-hover-bg: #f17497;
|
||||
--color-green-badge: #a6e3a1;
|
||||
--color-green-badge-bg: #a6e3a1;
|
||||
--color-green-badge-hover-bg: #93dd8d;
|
||||
--color-yellow-badge: #f9e2af;
|
||||
--color-yellow-badge-bg: #11111b;
|
||||
--color-yellow-badge-hover-bg: #f7d997;
|
||||
--color-orange-badge: #fab387;
|
||||
--color-orange-badge-bg: #11111b;
|
||||
--color-orange-badge-hover-bg: #f9a36f;
|
||||
--color-git: #fab387;
|
||||
--color-highlight-bg: rgba(249, 226, 175, 0.15);
|
||||
/* target-based colors */
|
||||
--color-body: #11111b;
|
||||
--color-box-header: #181825;
|
||||
--color-box-body: #181825;
|
||||
--color-box-body-highlight: #313244;
|
||||
--color-text-dark: #a6adc8;
|
||||
--color-text: #cdd6f4;
|
||||
--color-text-light: #bac2de;
|
||||
--color-text-light-1: #bac2de;
|
||||
--color-text-light-2: #bac2de;
|
||||
--color-text-light-3: #bac2de;
|
||||
--color-footer: #181825;
|
||||
--color-timeline: #313244;
|
||||
--color-input-text: #cdd6f4;
|
||||
--color-input-background: #313244;
|
||||
--color-input-toggle-background: #313244;
|
||||
--color-input-border: #45475a;
|
||||
--color-input-border-hover: #585b70;
|
||||
--color-nav-bg: #181825;
|
||||
--color-nav-hover-bg: #313244;
|
||||
--color-navbar: #181825;
|
||||
--color-navbar-transparent: rgba(17, 17, 27, 0);
|
||||
--color-light: rgba(88, 91, 112, 0.3);
|
||||
--color-light-mimic-enabled: rgba(
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
calc(40 / 255 * 222 / 255 / var(--opacity-disabled))
|
||||
);
|
||||
--color-light-border: #585b70;
|
||||
--color-hover: rgba(108, 112, 134, 0.1);
|
||||
--color-active: rgba(205, 214, 244, 0.1);
|
||||
--color-menu: #313244;
|
||||
--color-card: #313244;
|
||||
--color-markup-table-row: rgba(205, 214, 244, 0.02);
|
||||
--color-markup-code-block: rgba(205, 214, 244, 0.05);
|
||||
--color-markup-code-inline: #313244;
|
||||
--color-button: #313244;
|
||||
--color-code-bg: #1e1e2e;
|
||||
--color-code-sidebar-bg: #313244;
|
||||
--color-shadow: rgba(17, 17, 27, 0.1);
|
||||
--color-tooltip-bg: #313244;
|
||||
--color-tooltip-text: var(--color-text);
|
||||
--color-secondary-bg: #313244;
|
||||
--color-text-focus: #cdd6f4;
|
||||
--color-expand-button: #585b70;
|
||||
--color-placeholder-text: #a6adc8;
|
||||
--color-editor-line-highlight: var(--color-primary-light-5);
|
||||
--color-project-board-bg: var(--color-secondary-light-2);
|
||||
/* gitea source code: */
|
||||
/* should ideally be --color-text-dark, see go-gitea/gitea#15651 */
|
||||
--color-caret: var(--color-text);
|
||||
--color-reaction-bg: rgba(205, 214, 244, 0.07);
|
||||
--color-reaction-active-bg: var(--color-primary-alpha-40);
|
||||
--color-header-wrapper: #181825;
|
||||
--color-header-wrapper-transparent: rgba(24, 24, 37, 0);
|
||||
--color-label-text: #11111b;
|
||||
--color-label-bg: #89b4fa;
|
||||
--color-label-hover-bg: #6ca1f9;
|
||||
--color-label-active-bg: #7aabf9;
|
||||
--color-accent: var(--color-primary-light-1);
|
||||
--color-small-accent: var(--color-primary-light-5);
|
||||
--color-active-line: #45475a;
|
||||
|
||||
--fonts-proportional: Manrope, -apple-system, "Segoe UI", system-ui, Roboto,
|
||||
"Helvetica Neue", Arial;
|
||||
}
|
||||
|
||||
/* 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);
|
||||
}
|
||||
|
||||
.ui.ui.ui.button:not(.inverted, .basic).primary, .ui.ui.ui.button:not(.inverted, .basic).green, .ui.ui.ui.button:not(.inverted, .basic).red, .ui.ui.ui.button:not(.inverted, .basic).teal,
|
||||
.ui.ui.ui.label:not(.inverted, .basic).primary,
|
||||
.ui.ui.ui.label:not(.inverted, .basic).green,
|
||||
.ui.ui.ui.label:not(.inverted, .basic).red,
|
||||
.ui.ui.ui.label:not(.inverted, .basic).teal {
|
||||
color: #11111b;
|
||||
}
|
||||
.ui.ui.ui.button:not(.inverted, .basic).primary:hover, .ui.ui.ui.button:not(.inverted, .basic).green:hover, .ui.ui.ui.button:not(.inverted, .basic).red:hover, .ui.ui.ui.button:not(.inverted, .basic).teal:hover,
|
||||
.ui.ui.ui.label:not(.inverted, .basic).primary:hover,
|
||||
.ui.ui.ui.label:not(.inverted, .basic).green:hover,
|
||||
.ui.ui.ui.label:not(.inverted, .basic).red:hover,
|
||||
.ui.ui.ui.label:not(.inverted, .basic).teal:hover {
|
||||
color: #1e1e2e;
|
||||
}
|
||||
|
||||
.ui.basic.modal {
|
||||
background-color: #1e1e2e;
|
||||
}
|
||||
|
||||
.ui.commit-header-row .svg.gitea-lock ~ a {
|
||||
color: #11111b;
|
||||
}
|
||||
|
||||
.ui.negative.message .header {
|
||||
color: var(--color-error-text);
|
||||
}
|
||||
|
||||
.ui.sha.isSigned.isVerified .shortsha {
|
||||
color: #11111b;
|
||||
}
|
||||
.ui.sha.isSigned.isVerified svg.gitea-lock {
|
||||
fill: #11111b;
|
||||
}
|
||||
|
||||
.ui.basic.modal,
|
||||
.ui.basic.modal > .header,
|
||||
.ui.inverted.button {
|
||||
color: #cdd6f4 !important;
|
||||
}
|
||||
|
||||
.inline-code-block {
|
||||
color: #11111b;
|
||||
}
|
||||
|
||||
::selection {
|
||||
background: rgba(137, 180, 250, 0.3) !important;
|
||||
}
|
||||
|
||||
/* NameBuiltinPseudo */
|
||||
.chroma .bp {
|
||||
color: #fab387;
|
||||
}
|
||||
|
||||
/* Comment */
|
||||
.chroma .c {
|
||||
color: #6c7086;
|
||||
}
|
||||
|
||||
/* CommentSingle */
|
||||
.chroma .c1 {
|
||||
color: #6c7086;
|
||||
}
|
||||
|
||||
/* CommentHashbang */
|
||||
.chroma .ch {
|
||||
color: #6c7086;
|
||||
}
|
||||
|
||||
/* CommentMultiline */
|
||||
.chroma .cm {
|
||||
color: #6c7086;
|
||||
}
|
||||
|
||||
/* CommentPreproc */
|
||||
.chroma .cp {
|
||||
color: #89b4fa;
|
||||
}
|
||||
|
||||
/* CommentPreprocFile */
|
||||
.chroma .cpf {
|
||||
color: #89b4fa;
|
||||
}
|
||||
|
||||
/* CommentSpecial */
|
||||
.chroma .cs {
|
||||
color: #6c7086;
|
||||
}
|
||||
|
||||
/* LiteralStringDelimiter */
|
||||
.chroma .dl {
|
||||
color: #89b4fa;
|
||||
}
|
||||
|
||||
/* NameFunctionMagic */
|
||||
/* Generic */
|
||||
/* GenericDeleted */
|
||||
.chroma .gd {
|
||||
color: #cdd6f4;
|
||||
background-color: rgba(243, 139, 168, 0.15);
|
||||
}
|
||||
|
||||
/* GenericEmph */
|
||||
.chroma .ge {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/* GenericHeading */
|
||||
.chroma .gh {
|
||||
color: #89dceb;
|
||||
}
|
||||
|
||||
/* GenericInserted */
|
||||
.chroma .gi {
|
||||
color: #cdd6f4;
|
||||
background-color: rgba(166, 227, 161, 0.15);
|
||||
}
|
||||
|
||||
/* GenericUnderline */
|
||||
/* GenericOutput */
|
||||
.chroma .go {
|
||||
color: #fab387;
|
||||
}
|
||||
|
||||
/* GenericPrompt */
|
||||
.chroma .gp {
|
||||
color: #6c7086;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* GenericError */
|
||||
.chroma .gr {
|
||||
color: #eba0ac;
|
||||
}
|
||||
|
||||
/* GenericStrong */
|
||||
.chroma .gs {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* GenericTraceback */
|
||||
.chroma .gt {
|
||||
color: #eba0ac;
|
||||
}
|
||||
|
||||
/* GenericSubheading */
|
||||
.chroma .gu {
|
||||
color: #89dceb;
|
||||
}
|
||||
|
||||
/* LiteralNumberIntegerLong */
|
||||
.chroma .il {
|
||||
color: #fab387;
|
||||
}
|
||||
|
||||
/* Keyword */
|
||||
.chroma .k {
|
||||
color: #cba6f7;
|
||||
}
|
||||
|
||||
/* KeywordConstant */
|
||||
.chroma .kc {
|
||||
color: #f9e2af;
|
||||
}
|
||||
|
||||
/* KeywordDeclaration */
|
||||
.chroma .kd {
|
||||
color: #cba6f7;
|
||||
}
|
||||
|
||||
/* KeywordNamespace */
|
||||
.chroma .kn {
|
||||
color: #f9e2af;
|
||||
}
|
||||
|
||||
/* KeywordPseudo */
|
||||
.chroma .kp {
|
||||
color: #cba6f7;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* KeywordReserved */
|
||||
.chroma .kr {
|
||||
color: #cba6f7;
|
||||
}
|
||||
|
||||
/* KeywordType */
|
||||
.chroma .kt {
|
||||
color: #f9e2af;
|
||||
}
|
||||
|
||||
/* Literal */
|
||||
/* LiteralDate */
|
||||
/* LiteralNumber */
|
||||
.chroma .m {
|
||||
color: #fab387;
|
||||
}
|
||||
|
||||
/* LiteralNumberBin */
|
||||
.chroma .mb {
|
||||
color: #fab387;
|
||||
}
|
||||
|
||||
/* LiteralNumberFloat */
|
||||
.chroma .mf {
|
||||
color: #fab387;
|
||||
}
|
||||
|
||||
/* LiteralNumberHex */
|
||||
.chroma .mh {
|
||||
color: #fab387;
|
||||
}
|
||||
|
||||
/* LiteralNumberInteger */
|
||||
.chroma .mi {
|
||||
color: #fab387;
|
||||
}
|
||||
|
||||
/* LiteralNumberOct */
|
||||
.chroma .mo {
|
||||
color: #fab387;
|
||||
}
|
||||
|
||||
/* Name */
|
||||
.chroma .n {
|
||||
color: #b4befe;
|
||||
}
|
||||
|
||||
/* NameAttribute */
|
||||
.chroma .na {
|
||||
color: #f9e2af;
|
||||
}
|
||||
|
||||
/* NameBuiltin */
|
||||
.chroma .nb {
|
||||
color: #fab387;
|
||||
}
|
||||
|
||||
/* NameClass */
|
||||
.chroma .nc {
|
||||
color: #f9e2af;
|
||||
}
|
||||
|
||||
/* NameDecorator */
|
||||
.chroma .nd {
|
||||
color: #f5c2e7;
|
||||
}
|
||||
|
||||
/* NameException */
|
||||
.chroma .ne {
|
||||
color: #eba0ac;
|
||||
}
|
||||
|
||||
/* NameFunction */
|
||||
.chroma .nf {
|
||||
color: #89b4fa;
|
||||
}
|
||||
|
||||
/* NameEntity */
|
||||
.chroma .ni {
|
||||
color: #f5c2e7;
|
||||
}
|
||||
|
||||
/* NameLabel */
|
||||
.chroma .nl {
|
||||
color: #f9e2af;
|
||||
}
|
||||
|
||||
/* NameNamespace */
|
||||
.chroma .nn {
|
||||
color: #f9e2af;
|
||||
}
|
||||
|
||||
/* NameConstant */
|
||||
.chroma .no {
|
||||
color: #f9e2af;
|
||||
}
|
||||
|
||||
/* NameTag */
|
||||
.chroma .nt {
|
||||
color: #cba6f7;
|
||||
}
|
||||
|
||||
/* NameVariable */
|
||||
.chroma .nv {
|
||||
color: #fab387;
|
||||
}
|
||||
|
||||
/* NameOther */
|
||||
.chroma .nx {
|
||||
color: #fab387;
|
||||
}
|
||||
|
||||
/* Operator */
|
||||
.chroma .o {
|
||||
color: #89dceb;
|
||||
}
|
||||
|
||||
/* OperatorWord */
|
||||
.chroma .ow {
|
||||
color: #89dceb;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Punctuation */
|
||||
.chroma .p {
|
||||
color: #9399b2;
|
||||
}
|
||||
|
||||
/* NameProperty */
|
||||
/* LiteralString */
|
||||
.chroma .s {
|
||||
color: #a6e3a1;
|
||||
}
|
||||
|
||||
/* LiteralStringSingle */
|
||||
.chroma .s1 {
|
||||
color: #a6e3a1;
|
||||
}
|
||||
|
||||
/* LiteralStringDouble */
|
||||
.chroma .s2 {
|
||||
color: #a6e3a1;
|
||||
}
|
||||
|
||||
/* LiteralStringAffix */
|
||||
.chroma .sa {
|
||||
color: #a6e3a1;
|
||||
}
|
||||
|
||||
/* LiteralStringBacktick */
|
||||
.chroma .sb {
|
||||
color: #a6e3a1;
|
||||
}
|
||||
|
||||
/* LiteralStringChar */
|
||||
.chroma .sc {
|
||||
color: #a6e3a1;
|
||||
}
|
||||
|
||||
/* LiteralStringDoc */
|
||||
.chroma .sd {
|
||||
color: #a6e3a1;
|
||||
}
|
||||
|
||||
/* LiteralStringEscape */
|
||||
.chroma .se {
|
||||
color: #89b4fa;
|
||||
}
|
||||
|
||||
/* LiteralStringHeredoc */
|
||||
.chroma .sh {
|
||||
color: #a6e3a1;
|
||||
}
|
||||
|
||||
/* LiteralStringInterpol */
|
||||
.chroma .si {
|
||||
color: #a6e3a1;
|
||||
}
|
||||
|
||||
/* LiteralStringRegex */
|
||||
.chroma .sr {
|
||||
color: #89b4fa;
|
||||
}
|
||||
|
||||
/* LiteralStringSymbol */
|
||||
.chroma .ss {
|
||||
color: #a6e3a1;
|
||||
}
|
||||
|
||||
/* LiteralStringOther */
|
||||
.chroma .sx {
|
||||
color: #a6e3a1;
|
||||
}
|
||||
|
||||
/* NameVariableClass */
|
||||
.chroma .vc {
|
||||
color: #f9e2af;
|
||||
}
|
||||
|
||||
/* NameVariableGlobal */
|
||||
.chroma .vg {
|
||||
color: #fab387;
|
||||
}
|
||||
|
||||
/* NameVariableInstance */
|
||||
.chroma .vi {
|
||||
color: #f9e2af;
|
||||
}
|
||||
|
||||
/* NameVariableMagic */
|
||||
/* TextWhitespace */
|
||||
.chroma .w {
|
||||
color: #313244;
|
||||
}
|
||||
|
||||
.CodeMirror .cm-property,
|
||||
.CodeMirror.cm-s-default .cm-property,
|
||||
.CodeMirror.cm-s-paper .cm-property {
|
||||
color: #cdd6f4;
|
||||
}
|
||||
.CodeMirror .cm-header,
|
||||
.CodeMirror.cm-s-default .cm-header,
|
||||
.CodeMirror.cm-s-paper .cm-header {
|
||||
color: #cdd6f4;
|
||||
}
|
||||
.CodeMirror .cm-quote,
|
||||
.CodeMirror.cm-s-default .cm-quote,
|
||||
.CodeMirror.cm-s-paper .cm-quote {
|
||||
color: #a6e3a1;
|
||||
}
|
||||
.CodeMirror .cm-keyword,
|
||||
.CodeMirror.cm-s-default .cm-keyword,
|
||||
.CodeMirror.cm-s-paper .cm-keyword {
|
||||
color: #cba6f7;
|
||||
}
|
||||
.CodeMirror .cm-atom,
|
||||
.CodeMirror.cm-s-default .cm-atom,
|
||||
.CodeMirror.cm-s-paper .cm-atom {
|
||||
color: #f38ba8;
|
||||
}
|
||||
.CodeMirror .cm-number,
|
||||
.CodeMirror.cm-s-default .cm-number,
|
||||
.CodeMirror.cm-s-paper .cm-number {
|
||||
color: #fab387;
|
||||
}
|
||||
.CodeMirror .cm-def,
|
||||
.CodeMirror.cm-s-default .cm-def,
|
||||
.CodeMirror.cm-s-paper .cm-def {
|
||||
color: #cdd6f4;
|
||||
}
|
||||
.CodeMirror .cm-variable-2,
|
||||
.CodeMirror.cm-s-default .cm-variable-2,
|
||||
.CodeMirror.cm-s-paper .cm-variable-2 {
|
||||
color: #89dceb;
|
||||
}
|
||||
.CodeMirror .cm-variable-3,
|
||||
.CodeMirror.cm-s-default .cm-variable-3,
|
||||
.CodeMirror.cm-s-paper .cm-variable-3 {
|
||||
color: #94e2d5;
|
||||
}
|
||||
.CodeMirror .cm-comment,
|
||||
.CodeMirror.cm-s-default .cm-comment,
|
||||
.CodeMirror.cm-s-paper .cm-comment {
|
||||
color: #585b70;
|
||||
}
|
||||
.CodeMirror .cm-string,
|
||||
.CodeMirror.cm-s-default .cm-string,
|
||||
.CodeMirror.cm-s-paper .cm-string {
|
||||
color: #a6e3a1;
|
||||
}
|
||||
.CodeMirror .cm-string-2,
|
||||
.CodeMirror.cm-s-default .cm-string-2,
|
||||
.CodeMirror.cm-s-paper .cm-string-2 {
|
||||
color: #a6e3a1;
|
||||
}
|
||||
.CodeMirror .cm-meta,
|
||||
.CodeMirror.cm-s-default .cm-meta,
|
||||
.CodeMirror.cm-s-paper .cm-meta {
|
||||
color: #fab387;
|
||||
}
|
||||
.CodeMirror .cm-qualifier,
|
||||
.CodeMirror.cm-s-default .cm-qualifier,
|
||||
.CodeMirror.cm-s-paper .cm-qualifier {
|
||||
color: #fab387;
|
||||
}
|
||||
.CodeMirror .cm-builtin,
|
||||
.CodeMirror.cm-s-default .cm-builtin,
|
||||
.CodeMirror.cm-s-paper .cm-builtin {
|
||||
color: #fab387;
|
||||
}
|
||||
.CodeMirror .cm-bracket,
|
||||
.CodeMirror.cm-s-default .cm-bracket,
|
||||
.CodeMirror.cm-s-paper .cm-bracket {
|
||||
color: #cdd6f4;
|
||||
}
|
||||
.CodeMirror .cm-tag,
|
||||
.CodeMirror.cm-s-default .cm-tag,
|
||||
.CodeMirror.cm-s-paper .cm-tag {
|
||||
color: #f9e2af;
|
||||
}
|
||||
.CodeMirror .cm-attribute,
|
||||
.CodeMirror.cm-s-default .cm-attribute,
|
||||
.CodeMirror.cm-s-paper .cm-attribute {
|
||||
color: #f9e2af;
|
||||
}
|
||||
.CodeMirror .cm-hr,
|
||||
.CodeMirror.cm-s-default .cm-hr,
|
||||
.CodeMirror.cm-s-paper .cm-hr {
|
||||
color: #9399b2;
|
||||
}
|
||||
.CodeMirror .cm-url,
|
||||
.CodeMirror.cm-s-default .cm-url,
|
||||
.CodeMirror.cm-s-paper .cm-url {
|
||||
color: #89b4fa;
|
||||
}
|
||||
.CodeMirror .cm-link,
|
||||
.CodeMirror.cm-s-default .cm-link,
|
||||
.CodeMirror.cm-s-paper .cm-link {
|
||||
color: #89b4fa;
|
||||
}
|
||||
.CodeMirror .cm-error,
|
||||
.CodeMirror.cm-s-default .cm-error,
|
||||
.CodeMirror.cm-s-paper .cm-error {
|
||||
color: #f38ba8;
|
||||
}
|
||||
|
||||
.monaco-editor .selected-text {
|
||||
background-color: #313244 !important;
|
||||
}
|
||||
.monaco-editor .margin-view-overlays .line-numbers {
|
||||
color: #a6adc8 !important;
|
||||
}
|
||||
.monaco-editor .line-numbers.active-line-number {
|
||||
color: #89b4fa !important;
|
||||
}
|
||||
.monaco-editor .view-overlays .current-line,
|
||||
.monaco-editor .margin-view-overlays .current-line-margin {
|
||||
background-color: #2a2b3c !important;
|
||||
}
|
||||
.monaco-editor .mtk1 {
|
||||
color: #cdd6f4 !important;
|
||||
}
|
||||
.monaco-editor .mtk2 {
|
||||
color: #ff69b4 !important;
|
||||
}
|
||||
.monaco-editor .mtk3 {
|
||||
color: #fab387 !important;
|
||||
}
|
||||
.monaco-editor .mtk4 {
|
||||
color: #94e2d5 !important;
|
||||
}
|
||||
.monaco-editor .mtk5 {
|
||||
color: #cdd6f4 !important;
|
||||
}
|
||||
.monaco-editor .mtk6 {
|
||||
color: #cba6f7 !important;
|
||||
}
|
||||
.monaco-editor .mtk7 {
|
||||
color: #fab387 !important;
|
||||
}
|
||||
.monaco-editor .mtk8 {
|
||||
color: #9399b2 !important;
|
||||
}
|
||||
.monaco-editor .mtk9 {
|
||||
color: #cba6f7 !important;
|
||||
}
|
||||
.monaco-editor .mtk10 {
|
||||
color: #a6adc8 !important;
|
||||
}
|
||||
.monaco-editor .mtk11 {
|
||||
color: #94e2d5 !important;
|
||||
}
|
||||
.monaco-editor .mtk12 {
|
||||
color: #94e2d5 !important;
|
||||
}
|
||||
.monaco-editor .mtk13 {
|
||||
color: #ff69b4 !important;
|
||||
}
|
||||
.monaco-editor .mtk14 {
|
||||
color: #ff69b4 !important;
|
||||
}
|
||||
.monaco-editor .mtk15 {
|
||||
color: #cba6f7 !important;
|
||||
}
|
||||
.monaco-editor .mtk16 {
|
||||
color: #9399b2 !important;
|
||||
}
|
||||
.monaco-editor .mtk17 {
|
||||
color: #ff69b4 !important;
|
||||
}
|
||||
.monaco-editor .mtk18 {
|
||||
color: #ff69b4 !important;
|
||||
}
|
||||
.monaco-editor .mtk19 {
|
||||
color: #94e2d5 !important;
|
||||
}
|
||||
.monaco-editor .mtk20 {
|
||||
color: #ff69b4 !important;
|
||||
}
|
||||
.monaco-editor .mtk21 {
|
||||
color: #a6e3a1 !important;
|
||||
}
|
||||
.monaco-editor .mtk22 {
|
||||
color: #ff69b4 !important;
|
||||
}
|
||||
.monaco-editor .mtk23 {
|
||||
color: #89b4fa !important;
|
||||
}
|
||||
.monaco-editor .mtk24 {
|
||||
color: #fab387 !important;
|
||||
}
|
||||
.monaco-editor .mtk25 {
|
||||
color: #f5c2e7 !important;
|
||||
}
|
||||
.monaco-editor .bracket-highlighting-0 {
|
||||
color: #e4a9c6 !important;
|
||||
}
|
||||
.monaco-editor .bracket-highlighting-1 {
|
||||
color: #e8c1b3 !important;
|
||||
}
|
||||
.monaco-editor .bracket-highlighting-2 {
|
||||
color: #e7ddcb !important;
|
||||
}
|
||||
.monaco-editor .bracket-highlighting-3 {
|
||||
color: #b6dec2 !important;
|
||||
}
|
||||
.monaco-editor .bracket-highlighting-4 {
|
||||
color: #a4c2f8 !important;
|
||||
}
|
||||
.monaco-editor .bracket-highlighting-5 {
|
||||
color: #ccb9f6 !important;
|
||||
}
|
BIN
public/assets/font/Manrope.ttf
Normal file
BIN
public/assets/font/Manrope.ttf
Normal file
Binary file not shown.
93
public/assets/font/OFL.txt
Normal file
93
public/assets/font/OFL.txt
Normal file
|
@ -0,0 +1,93 @@
|
|||
Copyright 2018 The Manrope Project Authors (https://github.com/sharanda/manrope)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
5
public/assets/font/style.css
Normal file
5
public/assets/font/style.css
Normal file
|
@ -0,0 +1,5 @@
|
|||
@font-face {
|
||||
font-family: Manrope;
|
||||
src: url('Manrope.ttf') format('truetype');
|
||||
}
|
||||
|
BIN
public/assets/img/apple-touch-icon.png
Normal file
BIN
public/assets/img/apple-touch-icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.1 KiB |
BIN
public/assets/img/avatar_default.png
Normal file
BIN
public/assets/img/avatar_default.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.5 KiB |
BIN
public/assets/img/favicon.png
Normal file
BIN
public/assets/img/favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.1 KiB |
12
public/assets/img/favicon.svg
Normal file
12
public/assets/img/favicon.svg
Normal file
|
@ -0,0 +1,12 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" id="svg4" version="1.1" viewBox="0 0 212 212" width="32" height="32">
|
||||
<path id="path1" d="M58 168V70a50 50 0 0 1 50-50h20" class="orange"
|
||||
style="stroke:#81a1c1;stroke-width: 25;fill: none" transform="translate(6 6)" />
|
||||
<path id="path2" d="M58 168v-30a50 50 0 0 1 50-50h20" class="red" style="stroke:#5e81ac;stroke-width: 25;fill: none"
|
||||
transform="translate(6 6)" />
|
||||
<circle id="circle2" cx="142" cy="20" r="18" style="stroke:#88c0d0;stroke-width: 15;fill: none"
|
||||
transform="translate(6 6)" />
|
||||
<circle id="circle3" cx="142" cy="88" r="18" style="stroke:#5e81ac;stroke-width: 15;fill: none"
|
||||
transform="translate(6 6)" />
|
||||
<circle id="circle4" cx="58" cy="180" r="18" style="stroke:#5e81ac;stroke-width: 15;fill: none"
|
||||
transform="translate(6 6)" />
|
||||
</svg>
|
After Width: | Height: | Size: 850 B |
BIN
public/assets/img/logo.png
Normal file
BIN
public/assets/img/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
12
public/assets/img/logo.svg
Normal file
12
public/assets/img/logo.svg
Normal file
|
@ -0,0 +1,12 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" id="svg4" version="1.1" viewBox="0 0 212 212" width="32" height="32">
|
||||
<path id="path1" d="M58 168V70a50 50 0 0 1 50-50h20" class="orange"
|
||||
style="stroke:#81a1c1;stroke-width: 25;fill: none" transform="translate(6 6)" />
|
||||
<path id="path2" d="M58 168v-30a50 50 0 0 1 50-50h20" class="red" style="stroke:#5e81ac;stroke-width: 25;fill: none"
|
||||
transform="translate(6 6)" />
|
||||
<circle id="circle2" cx="142" cy="20" r="18" style="stroke:#88c0d0;stroke-width: 15;fill: none"
|
||||
transform="translate(6 6)" />
|
||||
<circle id="circle3" cx="142" cy="88" r="18" style="stroke:#5e81ac;stroke-width: 15;fill: none"
|
||||
transform="translate(6 6)" />
|
||||
<circle id="circle4" cx="58" cy="180" r="18" style="stroke:#5e81ac;stroke-width: 15;fill: none"
|
||||
transform="translate(6 6)" />
|
||||
</svg>
|
After Width: | Height: | Size: 850 B |
35
templates/base/footer_content.tmpl
Normal file
35
templates/base/footer_content.tmpl
Normal file
|
@ -0,0 +1,35 @@
|
|||
<footer class="page-footer" role="group" aria-label="{{ctx.Locale.Tr "aria.footer"}}">
|
||||
<div class="left-links" role="contentinfo" aria-label="{{ctx.Locale.Tr "aria.footer.software"}}">
|
||||
{{if ShowFooterPoweredBy}}
|
||||
<a target="_blank" rel="noopener noreferrer" href="https://forgejo.org">{{ctx.Locale.Tr "powered_by" "Forgejo"}}</a>
|
||||
{{end}}
|
||||
{{if (or .ShowFooterVersion .PageIsAdmin)}}
|
||||
{{ctx.Locale.Tr "version"}}:
|
||||
{{if .IsAdmin}}
|
||||
<a href="{{AppSubUrl}}/admin/config">{{AppVer}}</a>
|
||||
{{else}}
|
||||
{{AppVer}}
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{if and .TemplateLoadTimes ShowFooterTemplateLoadTime}}
|
||||
{{ctx.Locale.Tr "page"}}: <strong>{{LoadTimes .PageStartTime}}</strong>
|
||||
{{ctx.Locale.Tr "template"}}{{if .TemplateName}} {{.TemplateName}}{{end}}: <strong>{{call .TemplateLoadTimes}}</strong>
|
||||
{{end}}
|
||||
</div>
|
||||
<div class="right-links" role="group" aria-label="{{ctx.Locale.Tr "aria.footer.links"}}">
|
||||
<div class="ui dropdown upward language">
|
||||
<span class="flex-text-inline">{{svg "octicon-globe" 14}} {{ctx.Locale.LangName}}</span>
|
||||
<div class="menu language-menu">
|
||||
{{range .AllLangs}}
|
||||
<a lang="{{.Lang}}" data-url="{{AppSubUrl}}/?lang={{.Lang}}" class="item {{if eq ctx.Locale.Lang .Lang}}active selected{{end}}">{{.Name}}</a>
|
||||
{{end}}
|
||||
</div>
|
||||
</div>
|
||||
<a href="https://astrial.org">Directory</a>
|
||||
<a href="https://astrial.org/privacy">Privacy</a>
|
||||
<a href="https://astrial.org/tos">Terms</a>
|
||||
<a href="{{AssetUrlPrefix}}/licenses.txt">{{ctx.Locale.Tr "licenses"}}</a>
|
||||
{{if .EnableSwagger}}<a href="{{AppSubUrl}}/api/swagger">API</a>{{end}}
|
||||
{{template "custom/extra_links_footer" .}}
|
||||
</div>
|
||||
</footer>
|
402
templates/base/head_navbar.tmpl
Normal file
402
templates/base/head_navbar.tmpl
Normal file
|
@ -0,0 +1,402 @@
|
|||
{{$notificationUnreadCount := 0}}
|
||||
{{if and .IsSigned .NotificationUnreadCount}}
|
||||
{{$notificationUnreadCount = call .NotificationUnreadCount}}
|
||||
{{end}}
|
||||
|
||||
<nav id="navbar" aria-label="{{ctx.Locale.Tr "aria.navbar"}}">
|
||||
<div class="navbar-left ui secondary menu">
|
||||
<!-- the logo -->
|
||||
<a class="item" id="navbar-logo" href="{{AppSubUrl}}/" aria-label="{{if .IsSigned}}{{ctx.Locale.Tr "dashboard"}}{{else}}{{ctx.Locale.Tr "home"}}{{end}}">
|
||||
<img width="30" height="30" src="{{AssetUrlPrefix}}/img/logo.svg" alt="{{ctx.Locale.Tr "logo"}}" aria-hidden="true">
|
||||
</a>
|
||||
|
||||
<!-- mobile right menu, it must be here because in mobile view, each item is a flex column, the first item is a full row column -->
|
||||
<div class="ui secondary menu item navbar-mobile-right only-mobile">
|
||||
{{if .IsSigned}}
|
||||
<a id="mobile-notifications-icon" class="item tw-w-auto tw-p-2" href="{{AppSubUrl}}/notifications" data-tooltip-content="{{ctx.Locale.Tr "notifications"}}" aria-label="{{ctx.Locale.Tr "notifications"}}">
|
||||
<div class="tw-relative">
|
||||
{{svg "octicon-bell"}}
|
||||
<span class="notification_count{{if not $notificationUnreadCount}} tw-hidden{{end}}">{{$notificationUnreadCount}}</span>
|
||||
</div>
|
||||
</a>
|
||||
{{end}}
|
||||
<button class="item tw-w-auto ui icon mini button tw-p-2 tw-m-0" id="navbar-expand-toggle" aria-label="{{ctx.Locale.Tr "toggle_menu"}}">{{svg "octicon-three-bars"}}</button>
|
||||
</div>
|
||||
|
||||
<!-- navbar links non-mobile -->
|
||||
{{if and .IsSigned .MustChangePassword}}
|
||||
{{/* No links */}}
|
||||
{{else if .IsSigned}}
|
||||
{{if not .UnitIssuesGlobalDisabled}}
|
||||
<a class="item{{if .PageIsI{{$notificationUnreadCount := 0}}
|
||||
{{if and .IsSigned .NotificationUnreadCount}}
|
||||
{{$notificationUnreadCount = call .NotificationUnreadCount}}
|
||||
{{end}}
|
||||
|
||||
<nav id="navbar" aria-label="{{ctx.Locale.Tr "aria.navbar"}}">
|
||||
<div class="navbar-left ui secondary menu">
|
||||
<!-- the logo -->
|
||||
<a class="item" id="navbar-logo" href="{{AppSubUrl}}/" aria-label="{{if .IsSigned}}{{ctx.Locale.Tr "dashboard"}}{{else}}{{ctx.Locale.Tr "home"}}{{end}}">
|
||||
<img width="30" height="30" src="{{AssetUrlPrefix}}/img/logo.svg" alt="{{ctx.Locale.Tr "logo"}}" aria-hidden="true">
|
||||
</a>
|
||||
|
||||
<!-- mobile right menu, it must be here because in mobile view, each item is a flex column, the first item is a full row column -->
|
||||
<div class="ui secondary menu item navbar-mobile-right only-mobile">
|
||||
{{if .IsSigned}}
|
||||
<a id="mobile-notifications-icon" class="item tw-w-auto tw-p-2" href="{{AppSubUrl}}/notifications" data-tooltip-content="{{ctx.Locale.Tr "notifications"}}" aria-label="{{ctx.Locale.Tr "notifications"}}">
|
||||
<div class="tw-relative">
|
||||
{{svg "octicon-bell"}}
|
||||
<span class="notification_count{{if not $notificationUnreadCount}} tw-hidden{{end}}">{{$notificationUnreadCount}}</span>
|
||||
</div>
|
||||
</a>
|
||||
{{end}}
|
||||
<button class="item tw-w-auto ui icon mini button tw-p-2 tw-m-0" id="navbar-expand-toggle" aria-label="{{ctx.Locale.Tr "toggle_menu"}}">{{svg "octicon-three-bars"}}</button>
|
||||
</div>
|
||||
|
||||
<!-- navbar links non-mobile -->
|
||||
{{if and .IsSigned .MustChangePassword}}
|
||||
{{/* No links */}}
|
||||
{{else if .IsSigned}}
|
||||
{{if not .UnitIssuesGlobalDisabled}}
|
||||
<a class="item{{if .PageIsIssues}} active{{end}}" href="{{AppSubUrl}}/issues">{{ctx.Locale.Tr "issues"}}</a>
|
||||
{{end}}
|
||||
{{if not .UnitPullsGlobalDisabled}}
|
||||
<a class="item{{if .PageIsPulls}} active{{end}}" href="{{AppSubUrl}}/pulls">{{ctx.Locale.Tr "pull_requests"}}</a>
|
||||
{{end}}
|
||||
{{if not (and .UnitIssuesGlobalDisabled .UnitPullsGlobalDisabled)}}
|
||||
{{if .ShowMilestonesDashboardPage}}
|
||||
<a class="item{{if .PageIsMilestonesDashboard}} active{{end}}" href="{{AppSubUrl}}/milestones">{{ctx.Locale.Tr "milestones"}}</a>
|
||||
{{end}}
|
||||
{{end}}
|
||||
<a class="item{{if .PageIsExplore}} active{{end}}" href="{{AppSubUrl}}/explore/repos">{{ctx.Locale.Tr "explore"}}</a>
|
||||
{{else if .IsLandingPageOrganizations}}
|
||||
<a class="item{{if .PageIsExplore}} active{{end}}" href="{{AppSubUrl}}/explore/organizations">{{ctx.Locale.Tr "explore"}}</a>
|
||||
{{else}}
|
||||
<a class="item{{if .PageIsExplore}} active{{end}}" href="{{AppSubUrl}}/explore/repos">{{ctx.Locale.Tr "explore"}}</a>
|
||||
{{end}}
|
||||
|
||||
{{template "custom/extra_links" .}}
|
||||
|
||||
{{if not .IsSigned}}
|
||||
<a class="item" target="_blank" rel="noopener noreferrer" href="https://forgejo.org/docs/latest/">{{ctx.Locale.Tr "help"}}</a>
|
||||
{{end}}
|
||||
</div>
|
||||
|
||||
<!-- the full dropdown menus -->
|
||||
<div class="navbar-right ui secondary menu">
|
||||
{{if and .IsSigned .MustChangePassword}}
|
||||
<div class="ui dropdown jump item" data-tooltip-content="{{ctx.Locale.Tr "user_profile_and_more"}}">
|
||||
<span class="text tw-flex tw-items-center">
|
||||
{{ctx.AvatarUtils.Avatar .SignedUser 24 "tw-mr-1"}}
|
||||
<span class="only-mobile tw-ml-2">{{.SignedUser.Name}}</span>
|
||||
<span class="not-mobile">{{svg "octicon-triangle-down"}}</span>
|
||||
</span>
|
||||
<div class="menu user-menu">
|
||||
<div class="ui header">
|
||||
{{ctx.Locale.Tr "signed_in_as"}} <strong>{{.SignedUser.Name}}</strong>
|
||||
</div>
|
||||
|
||||
<div class="divider"></div>
|
||||
<a class="item link-action" href data-url="{{AppSubUrl}}/user/logout">
|
||||
{{svg "octicon-sign-out"}}
|
||||
{{ctx.Locale.Tr "sign_out"}}
|
||||
</a>
|
||||
</div><!-- end content avatar menu -->
|
||||
</div><!-- end dropdown avatar menu -->
|
||||
{{else if .IsSigned}}
|
||||
{{if EnableTimetracking}}
|
||||
<a class="active-stopwatch-trigger item tw-mx-0{{if not .ActiveStopwatch}} tw-hidden{{end}}" href="{{.ActiveStopwatch.IssueLink}}" title="{{ctx.Locale.Tr "active_stopwatch"}}">
|
||||
<div class="tw-relative">
|
||||
{{svg "octicon-stopwatch"}}
|
||||
<span class="header-stopwatch-dot"></span>
|
||||
</div>
|
||||
<span class="only-mobile tw-ml-2">{{ctx.Locale.Tr "active_stopwatch"}}</span>
|
||||
</a>
|
||||
<div class="active-stopwatch-popup item tippy-target tw-p-2">
|
||||
<div class="tw-flex tw-items-center">
|
||||
<a class="stopwatch-link tw-flex tw-items-center" href="{{.ActiveStopwatch.IssueLink}}">
|
||||
{{svg "octicon-issue-opened" 16 "tw-mr-2"}}
|
||||
<span class="stopwatch-issue">{{.ActiveStopwatch.RepoSlug}}#{{.ActiveStopwatch.IssueIndex}}</span>
|
||||
<span class="ui primary label stopwatch-time tw-my-0 tw-mx-4" data-seconds="{{.ActiveStopwatch.Seconds}}">
|
||||
{{if .ActiveStopwatch}}{{Sec2Time .ActiveStopwatch.Seconds}}{{end}}
|
||||
</span>
|
||||
</a>
|
||||
<form class="stopwatch-commit" method="post" action="{{.ActiveStopwatch.IssueLink}}/times/stopwatch/toggle">
|
||||
{{.CsrfTokenHtml}}
|
||||
<button
|
||||
type="submit"
|
||||
class="ui button mini compact basic icon"
|
||||
data-tooltip-content="{{ctx.Locale.Tr "repo.issues.stop_tracking"}}"
|
||||
>{{svg "octicon-square-fill"}}</button>
|
||||
</form>
|
||||
<form class="stopwatch-cancel" method="post" action="{{.ActiveStopwatch.IssueLink}}/times/stopwatch/cancel">
|
||||
{{.CsrfTokenHtml}}
|
||||
<button
|
||||
type="submit"
|
||||
class="ui button mini compact basic icon"
|
||||
data-tooltip-content="{{ctx.Locale.Tr "repo.issues.cancel_tracking"}}"
|
||||
>{{svg "octicon-trash"}}</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{{end}}
|
||||
|
||||
<a class="item not-mobile tw-mx-0" href="{{AppSubUrl}}/notifications" data-tooltip-content="{{ctx.Locale.Tr "notifications"}}" aria-label="{{ctx.Locale.Tr "notifications"}}">
|
||||
<div class="tw-relative">
|
||||
{{svg "octicon-bell"}}
|
||||
<span class="notification_count{{if not $notificationUnreadCount}} tw-hidden{{end}}">{{$notificationUnreadCount}}</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<div class="ui dropdown jump item tw-mx-0 tw-pr-2" data-tooltip-content="{{ctx.Locale.Tr "create_new"}}">
|
||||
<span class="text">
|
||||
{{svg "octicon-plus"}}
|
||||
<span class="not-mobile">{{svg "octicon-triangle-down"}}</span>
|
||||
<span class="only-mobile">{{ctx.Locale.Tr "create_new"}}</span>
|
||||
</span>
|
||||
<div class="menu">
|
||||
<a class="item" href="{{AppSubUrl}}/repo/create">
|
||||
{{svg "octicon-plus"}} {{ctx.Locale.Tr "new_repo.link"}}
|
||||
</a>
|
||||
{{if not .DisableMigrations}}
|
||||
<a class="item" href="{{AppSubUrl}}/repo/migrate">
|
||||
{{svg "octicon-repo-push"}} {{ctx.Locale.Tr "new_migrate.link"}}
|
||||
</a>
|
||||
{{end}}
|
||||
{{if .SignedUser.CanCreateOrganization}}
|
||||
<a class="item" href="{{AppSubUrl}}/org/create">
|
||||
{{svg "octicon-organization"}} {{ctx.Locale.Tr "new_org.link"}}
|
||||
</a>
|
||||
{{end}}
|
||||
</div><!-- end content create new menu -->
|
||||
</div><!-- end dropdown menu create new -->
|
||||
|
||||
<div class="ui dropdown jump item tw-mx-0 tw-pr-2" data-tooltip-content="{{ctx.Locale.Tr "user_profile_and_more"}}">
|
||||
<span class="text tw-flex tw-items-center">
|
||||
{{ctx.AvatarUtils.Avatar .SignedUser 24 "tw-mr-1"}}
|
||||
<span class="only-mobile tw-ml-2">{{.SignedUser.Name}}</span>
|
||||
<span class="not-mobile">{{svg "octicon-triangle-down"}}</span>
|
||||
</span>
|
||||
<div class="menu user-menu">
|
||||
<div class="ui header">
|
||||
{{ctx.Locale.Tr "signed_in_as"}} <strong>{{.SignedUser.Name}}</strong>
|
||||
</div>
|
||||
|
||||
<div class="divider"></div>
|
||||
<a class="item" href="{{.SignedUser.HomeLink}}">
|
||||
{{svg "octicon-person"}}
|
||||
{{ctx.Locale.Tr "your_profile"}}
|
||||
</a>
|
||||
{{if not .DisableStars}}
|
||||
<a class="item" href="{{.SignedUser.HomeLink}}?tab=stars">
|
||||
{{svg "octicon-star"}}
|
||||
{{ctx.Locale.Tr "your_starred"}}
|
||||
</a>
|
||||
{{end}}
|
||||
<a class="item" href="{{AppSubUrl}}/notifications/subscriptions">
|
||||
{{svg "octicon-bell"}}
|
||||
{{ctx.Locale.Tr "notification.subscriptions"}}
|
||||
</a>
|
||||
<a class="{{if .PageIsUserSettings}}active {{end}}item" href="{{AppSubUrl}}/user/settings">
|
||||
{{svg "octicon-tools"}}
|
||||
{{ctx.Locale.Tr "your_settings"}}
|
||||
</a>
|
||||
<a class="item" target="_blank" rel="noopener noreferrer" href="https://forgejo.org/docs/latest/">
|
||||
{{svg "octicon-question"}}
|
||||
{{ctx.Locale.Tr "help"}}
|
||||
</a>
|
||||
{{if .IsAdmin}}
|
||||
<div class="divider"></div>
|
||||
|
||||
<a class="{{if .PageIsAdmin}}active {{end}}item" href="{{AppSubUrl}}/admin">
|
||||
{{svg "octicon-server"}}
|
||||
{{ctx.Locale.Tr "admin_panel"}}
|
||||
</a>
|
||||
{{end}}
|
||||
|
||||
<div class="divider"></div>
|
||||
<a class="item link-action" href data-url="{{AppSubUrl}}/user/logout">
|
||||
{{svg "octicon-sign-out"}}
|
||||
{{ctx.Locale.Tr "sign_out"}}
|
||||
</a>
|
||||
</div><!-- end content avatar menu -->
|
||||
</div><!-- end dropdown avatar menu -->
|
||||
{{else}}
|
||||
{{if .ShowRegistrationButton}}
|
||||
<a class="item{{if .PageIsSignUp}} active{{end}}" href="{{AppSubUrl}}/user/sign_up">
|
||||
{{svg "octicon-person"}} {{ctx.Locale.Tr "register"}}
|
||||
</a>
|
||||
{{end}}
|
||||
<a class="item{{if .PageIsSignIn}} active{{end}}" rel="nofollow" href="{{AppSubUrl}}/user/login{{if not .PageIsSignIn}}?redirect_to={{.CurrentURL}}{{end}}">
|
||||
{{svg "octicon-sign-in"}} {{ctx.Locale.Tr "sign_in"}}
|
||||
</a>
|
||||
{{end}}
|
||||
</div><!-- end full right menu -->
|
||||
</nav>
|
||||
ssues}} active{{end}}" href="{{AppSubUrl}}/issues">{{ctx.Locale.Tr "issues"}}</a>
|
||||
{{end}}
|
||||
{{if not .UnitPullsGlobalDisabled}}
|
||||
<a class="item{{if .PageIsPulls}} active{{end}}" href="{{AppSubUrl}}/pulls">{{ctx.Locale.Tr "pull_requests"}}</a>
|
||||
{{end}}
|
||||
{{if not (and .UnitIssuesGlobalDisabled .UnitPullsGlobalDisabled)}}
|
||||
{{if .ShowMilestonesDashboardPage}}
|
||||
<a class="item{{if .PageIsMilestonesDashboard}} active{{end}}" href="{{AppSubUrl}}/milestones">{{ctx.Locale.Tr "milestones"}}</a>
|
||||
{{end}}
|
||||
{{end}}
|
||||
<a class="item{{if .PageIsExplore}} active{{end}}" href="{{AppSubUrl}}/explore/repos">{{ctx.Locale.Tr "explore"}}</a>
|
||||
{{else if .IsLandingPageOrganizations}}
|
||||
<a class="item{{if .PageIsExplore}} active{{end}}" href="{{AppSubUrl}}/explore/organizations">{{ctx.Locale.Tr "explore"}}</a>
|
||||
{{else}}
|
||||
<a class="item{{if .PageIsExplore}} active{{end}}" href="{{AppSubUrl}}/explore/repos">{{ctx.Locale.Tr "explore"}}</a>
|
||||
{{end}}
|
||||
|
||||
{{template "custom/extra_links" .}}
|
||||
</div>
|
||||
|
||||
<!-- the full dropdown menus -->
|
||||
<div class="navbar-right ui secondary menu">
|
||||
{{if and .IsSigned .MustChangePassword}}
|
||||
<div class="ui dropdown jump item" data-tooltip-content="{{ctx.Locale.Tr "user_profile_and_more"}}">
|
||||
<span class="text tw-flex tw-items-center">
|
||||
{{ctx.AvatarUtils.Avatar .SignedUser 24 "tw-mr-1"}}
|
||||
<span class="only-mobile tw-ml-2">{{.SignedUser.Name}}</span>
|
||||
<span class="not-mobile">{{svg "octicon-triangle-down"}}</span>
|
||||
</span>
|
||||
<div class="menu user-menu">
|
||||
<div class="ui header">
|
||||
{{ctx.Locale.Tr "signed_in_as"}} <strong>{{.SignedUser.Name}}</strong>
|
||||
</div>
|
||||
|
||||
<div class="divider"></div>
|
||||
<a class="item link-action" href data-url="{{AppSubUrl}}/user/logout">
|
||||
{{svg "octicon-sign-out"}}
|
||||
{{ctx.Locale.Tr "sign_out"}}
|
||||
</a>
|
||||
</div><!-- end content avatar menu -->
|
||||
</div><!-- end dropdown avatar menu -->
|
||||
{{else if .IsSigned}}
|
||||
{{if EnableTimetracking}}
|
||||
<a class="active-stopwatch-trigger item tw-mx-0{{if not .ActiveStopwatch}} tw-hidden{{end}}" href="{{.ActiveStopwatch.IssueLink}}" title="{{ctx.Locale.Tr "active_stopwatch"}}">
|
||||
<div class="tw-relative">
|
||||
{{svg "octicon-stopwatch"}}
|
||||
<span class="header-stopwatch-dot"></span>
|
||||
</div>
|
||||
<span class="only-mobile tw-ml-2">{{ctx.Locale.Tr "active_stopwatch"}}</span>
|
||||
</a>
|
||||
<div class="active-stopwatch-popup item tippy-target tw-p-2">
|
||||
<div class="tw-flex tw-items-center">
|
||||
<a class="stopwatch-link tw-flex tw-items-center" href="{{.ActiveStopwatch.IssueLink}}">
|
||||
{{svg "octicon-issue-opened" 16 "tw-mr-2"}}
|
||||
<span class="stopwatch-issue">{{.ActiveStopwatch.RepoSlug}}#{{.ActiveStopwatch.IssueIndex}}</span>
|
||||
<span class="ui primary label stopwatch-time tw-my-0 tw-mx-4" data-seconds="{{.ActiveStopwatch.Seconds}}">
|
||||
{{if .ActiveStopwatch}}{{Sec2Time .ActiveStopwatch.Seconds}}{{end}}
|
||||
</span>
|
||||
</a>
|
||||
<form class="stopwatch-commit" method="post" action="{{.ActiveStopwatch.IssueLink}}/times/stopwatch/toggle">
|
||||
{{.CsrfTokenHtml}}
|
||||
<button
|
||||
type="submit"
|
||||
class="ui button mini compact basic icon"
|
||||
data-tooltip-content="{{ctx.Locale.Tr "repo.issues.stop_tracking"}}"
|
||||
>{{svg "octicon-square-fill"}}</button>
|
||||
</form>
|
||||
<form class="stopwatch-cancel" method="post" action="{{.ActiveStopwatch.IssueLink}}/times/stopwatch/cancel">
|
||||
{{.CsrfTokenHtml}}
|
||||
<button
|
||||
type="submit"
|
||||
class="ui button mini compact basic icon"
|
||||
data-tooltip-content="{{ctx.Locale.Tr "repo.issues.cancel_tracking"}}"
|
||||
>{{svg "octicon-trash"}}</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{{end}}
|
||||
|
||||
<a class="item not-mobile tw-mx-0" href="{{AppSubUrl}}/notifications" data-tooltip-content="{{ctx.Locale.Tr "notifications"}}" aria-label="{{ctx.Locale.Tr "notifications"}}">
|
||||
<div class="tw-relative">
|
||||
{{svg "octicon-bell"}}
|
||||
<span class="notification_count{{if not $notificationUnreadCount}} tw-hidden{{end}}">{{$notificationUnreadCount}}</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<div class="ui dropdown jump item tw-mx-0 tw-pr-2" data-tooltip-content="{{ctx.Locale.Tr "create_new"}}">
|
||||
<span class="text">
|
||||
{{svg "octicon-plus"}}
|
||||
<span class="not-mobile">{{svg "octicon-triangle-down"}}</span>
|
||||
<span class="only-mobile">{{ctx.Locale.Tr "create_new"}}</span>
|
||||
</span>
|
||||
<div class="menu">
|
||||
<a class="item" href="{{AppSubUrl}}/repo/create">
|
||||
{{svg "octicon-plus"}} {{ctx.Locale.Tr "new_repo.link"}}
|
||||
</a>
|
||||
{{if not .DisableMigrations}}
|
||||
<a class="item" href="{{AppSubUrl}}/repo/migrate">
|
||||
{{svg "octicon-repo-push"}} {{ctx.Locale.Tr "new_migrate.link"}}
|
||||
</a>
|
||||
{{end}}
|
||||
{{if .SignedUser.CanCreateOrganization}}
|
||||
<a class="item" href="{{AppSubUrl}}/org/create">
|
||||
{{svg "octicon-organization"}} {{ctx.Locale.Tr "new_org.link"}}
|
||||
</a>
|
||||
{{end}}
|
||||
</div><!-- end content create new menu -->
|
||||
</div><!-- end dropdown menu create new -->
|
||||
|
||||
<div class="ui dropdown jump item tw-mx-0 tw-pr-2" data-tooltip-content="{{ctx.Locale.Tr "user_profile_and_more"}}">
|
||||
<span class="text tw-flex tw-items-center">
|
||||
{{ctx.AvatarUtils.Avatar .SignedUser 24 "tw-mr-1"}}
|
||||
<span class="only-mobile tw-ml-2">{{.SignedUser.Name}}</span>
|
||||
<span class="not-mobile">{{svg "octicon-triangle-down"}}</span>
|
||||
</span>
|
||||
<div class="menu user-menu">
|
||||
<div class="ui header">
|
||||
{{ctx.Locale.Tr "signed_in_as"}} <strong>{{.SignedUser.Name}}</strong>
|
||||
</div>
|
||||
|
||||
<div class="divider"></div>
|
||||
<a class="item" href="{{.SignedUser.HomeLink}}">
|
||||
{{svg "octicon-person"}}
|
||||
{{ctx.Locale.Tr "your_profile"}}
|
||||
</a>
|
||||
{{if not .DisableStars}}
|
||||
<a class="item" href="{{.SignedUser.HomeLink}}?tab=stars">
|
||||
{{svg "octicon-star"}}
|
||||
{{ctx.Locale.Tr "your_starred"}}
|
||||
</a>
|
||||
{{end}}
|
||||
<a class="item" href="{{AppSubUrl}}/notifications/subscriptions">
|
||||
{{svg "octicon-bell"}}
|
||||
{{ctx.Locale.Tr "notification.subscriptions"}}
|
||||
</a>
|
||||
<a class="{{if .PageIsUserSettings}}active {{end}}item" href="{{AppSubUrl}}/user/settings">
|
||||
{{svg "octicon-tools"}}
|
||||
{{ctx.Locale.Tr "your_settings"}}
|
||||
</a>
|
||||
{{if .IsAdmin}}
|
||||
<div class="divider"></div>
|
||||
|
||||
<a class="{{if .PageIsAdmin}}active {{end}}item" href="{{AppSubUrl}}/admin">
|
||||
{{svg "octicon-server"}}
|
||||
{{ctx.Locale.Tr "admin_panel"}}
|
||||
</a>
|
||||
{{end}}
|
||||
|
||||
<div class="divider"></div>
|
||||
<a class="item link-action" href data-url="{{AppSubUrl}}/user/logout">
|
||||
{{svg "octicon-sign-out"}}
|
||||
{{ctx.Locale.Tr "sign_out"}}
|
||||
</a>
|
||||
</div><!-- end content avatar menu -->
|
||||
</div><!-- end dropdown avatar menu -->
|
||||
{{else}}
|
||||
{{if .ShowRegistrationButton}}
|
||||
<a class="item{{if .PageIsSignUp}} active{{end}}" href="{{AppSubUrl}}/user/sign_up">
|
||||
{{svg "octicon-person"}} {{ctx.Locale.Tr "register"}}
|
||||
</a>
|
||||
{{end}}
|
||||
<a class="item{{if .PageIsSignIn}} active{{end}}" rel="nofollow" href="{{AppSubUrl}}/user/login{{if not .PageIsSignIn}}?redirect_to={{.CurrentURL}}{{end}}">
|
||||
{{svg "octicon-sign-in"}} {{ctx.Locale.Tr "sign_in"}}
|
||||
</a>
|
||||
{{end}}
|
||||
</div><!-- end full right menu -->
|
||||
</nav>
|
104
templates/home.tmpl
Normal file
104
templates/home.tmpl
Normal file
|
@ -0,0 +1,104 @@
|
|||
{{template "base/head" .}}
|
||||
<style>
|
||||
/* TODO: Responsiveness */
|
||||
|
||||
.inner {
|
||||
max-width: 950px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
main #hero {
|
||||
background-repeat: no-repeat;
|
||||
background-position: center bottom;
|
||||
}
|
||||
|
||||
main #hero .inner {
|
||||
display: flex;
|
||||
padding: 4em 0;
|
||||
}
|
||||
|
||||
main #hero .logo {
|
||||
margin-top: 2em;
|
||||
flex: 1 1 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
|
||||
main #hero .logo>img {
|
||||
width: 250px;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-weight: bold;
|
||||
flex: 2 1 0;
|
||||
margin: 2em 0;
|
||||
}
|
||||
|
||||
.title h1 {
|
||||
font-weight: 900;
|
||||
font-size: 3em;
|
||||
}
|
||||
|
||||
.title>div {
|
||||
margin-left: 1em;
|
||||
|
||||
}
|
||||
|
||||
.title>div p {
|
||||
font-size: 1.25em;
|
||||
}
|
||||
|
||||
.title>.title-links {
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
.title>.title-links a {
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
#lower {
|
||||
padding: 2em 0;
|
||||
border-top: 2px solid var(--color-box-header);
|
||||
background-color: var(--color-box-body);
|
||||
}
|
||||
|
||||
#lower p {
|
||||
font-size: 1.125em;
|
||||
}
|
||||
</style>
|
||||
|
||||
<main>
|
||||
<section id="hero">
|
||||
<div class="inner">
|
||||
<div class="logo" role="img" aria-label="Astrial Git logo" aria-hidden="true" focusable="false">
|
||||
<img src="{{AssetUrlPrefix}}/img/logo.png">
|
||||
</div>
|
||||
|
||||
<div class="title">
|
||||
<h1>Astrial Git</h1>
|
||||
<div>
|
||||
<p>Astrial Git is a star-powered semi-public software forge! We
|
||||
provide source code hosting, collaboration tools and everything else you can expect from a
|
||||
modern Git host. (CI coming soon™).</p>
|
||||
<div class="title-links">
|
||||
<a href="https://astrial.org">DIRECTORY</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="lower">
|
||||
<div class="inner">
|
||||
<p>There's not much to do here without an account. Request an account by sending us an email listed on the
|
||||
<a href="https://astrial.org">directory</a>, or <a href="/explore">explore</a> public repositories
|
||||
hosted here.
|
||||
</p>
|
||||
<p>Already got an account? Great! Sign in with your Astrial account on the <a href="/user/login">login</a> page.</p>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
{{template "base/footer" .}}
|
Loading…
Reference in a new issue