Initial commit, source code of Gitea 1.23.1
Some checks failed
release-nightly / nightly-binary (push) Has been cancelled
release-nightly / nightly-docker-rootful (push) Has been cancelled
release-nightly / nightly-docker-rootless (push) Has been cancelled

This commit is contained in:
Taldariner
2025-01-28 08:57:29 +02:00
commit 65b18d67e8
6122 changed files with 702653 additions and 0 deletions

83
web_src/css/actions.css Normal file
View File

@@ -0,0 +1,83 @@
.runner-container {
padding-bottom: 30px;
}
.runner-container .ui.table.segment {
overflow-x: auto;
}
.runner-container .runner-ops > a {
margin-left: 0.5em;
}
.runner-container .runner-ops-delete {
color: var(--color-red-light);
}
.runner-container .runner-new-text {
color: var(--color-white);
}
.runner-container #runner-new:hover .runner-new-text {
color: var(--color-white) !important;
}
.runner-container .task-status-success {
background-color: var(--color-green);
color: var(--color-white);
}
.runner-container .task-status-failure {
background-color: var(--color-red-light);
color: var(--color-white);
}
.runner-container .task-status-running {
background-color: var(--color-blue);
color: var(--color-white);
}
.runner-container .task-status-cancelled,
.runner-container .task-status-blocked {
background-color: var(--color-yellow);
color: var(--color-white);
}
.run-list-item-right {
width: 130px;
display: flex;
flex-direction: column;
flex-shrink: 0;
gap: 3px;
color: var(--color-text-light);
}
.run-list-item-right .run-list-meta {
display: flex;
flex-wrap: nowrap;
gap: .25rem;
align-items: center;
}
.run-list .flex-item-trailing {
flex-wrap: nowrap;
width: 280px;
flex: 0 0 280px;
}
.run-list-ref {
display: inline-block !important;
}
@media (max-width: 767.98px) {
.run-list .flex-item-trailing {
flex-direction: column;
align-items: flex-end;
width: auto;
flex-basis: auto;
}
.run-list-item-right,
.run-list-ref {
max-width: 110px;
}
}

51
web_src/css/admin.css Normal file
View File

@@ -0,0 +1,51 @@
.admin.hooks .list > .item:not(:first-child) {
border-top: 1px solid var(--color-secondary);
padding: 0.25rem 1rem;
margin: 12px -1rem -1rem;
}
.admin dl.admin-dl-horizontal {
padding: 1em;
margin: 0;
display: flex;
flex-wrap: wrap;
}
.admin dl.admin-dl-horizontal dt,
.admin dl.admin-dl-horizontal dd {
line-height: var(--line-height-default);
padding: 5px 0;
}
.admin dl.admin-dl-horizontal dt {
width: 300px;
max-width: calc(100% - 100px - 1em);
font-weight: var(--font-weight-semibold);
}
.admin dl.admin-dl-horizontal dd {
margin-left: auto;
width: calc(100% - 300px - 1em);
min-width: 100px;
}
.admin code,
.admin pre {
white-space: pre-wrap;
word-wrap: break-word;
}
.admin .ui.table.segment {
overflow-x: auto; /* if the screen width is small, many wide tables (eg: user list) need scroll bars */
}
.admin .table th {
white-space: nowrap;
}
.admin-responsive-columns {
display: flex;
flex-wrap: wrap;
gap: 1rem;
margin-bottom: 1rem;
}

1418
web_src/css/base.css Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,46 @@
/* LineTableTD */
.chroma .lntd {
vertical-align: top;
padding: 0;
margin: 0;
border: 0;
}
/* LineTable */
.chroma .lntable {
border-spacing: 0;
padding: 0;
margin: 0;
border: 0;
width: auto;
overflow: auto;
display: block;
}
/* LineHighlight */
.chroma .hl {
display: block;
width: 100%;
}
/* LineNumbersTable */
.chroma .lnt {
margin-right: 0.4em;
padding: 0 0.4em;
}
/* LineNumbers */
.chroma .ln {
margin-right: 0.4em;
padding: 0 0.4em;
}
/* GenericStrong */
.chroma .gs {
font-weight: var(--font-weight-semibold);
}
/* GenericUnderline */
.chroma .gl {
text-decoration: underline;
}

View File

@@ -0,0 +1,76 @@
/* https://github.com/alecthomas/chroma/blob/6428fb4e65f3c1493491571c8a6a8f1add1da822/types.go#L208 */
.chroma .bp { color: #fabd2f; } /* NameBuiltinPseudo */
.chroma .c { color: #777e94; } /* Comment */
.chroma .c1 { color: #777e94; } /* CommentSingle */
.chroma .ch { color: #777e94; } /* CommentHashbang */
.chroma .cm { color: #777e94; } /* CommentMultiline */
.chroma .cp { color: #8ec07c; } /* CommentPreproc */
.chroma .cpf { color: #649bc4; } /* CommentPreprocFile */
.chroma .cs { color: #9075cd; } /* CommentSpecial */
.chroma .dl { color: #649bc4; } /* LiteralStringDelimiter */
.chroma .fm {} /* NameFunctionMagic */
.chroma .g {} /* Generic */
.chroma .gd { color: #ffffff; background-color: #5f3737; } /* GenericDeleted */
.chroma .ge { color: #ddee30; } /* GenericEmph */
.chroma .gh { color: #ffaa10; } /* GenericHeading */
.chroma .gi { color: #ffffff; background-color: #3a523a; } /* GenericInserted */
.chroma .gl {} /* GenericUnderline */
.chroma .go { color: #777e94; } /* GenericOutput */
.chroma .gp { color: #ebdbb2; } /* GenericPrompt */
.chroma .gr { color: #ff4433; } /* GenericError */
.chroma .gs { color: #ebdbb2; } /* GenericStrong */
.chroma .gt { color: #ff7540; } /* GenericTraceback */
.chroma .gu { color: #b8bb26; } /* GenericSubheading */
.chroma .il { color: #649bc4; } /* LiteralNumberIntegerLong */
.chroma .k { color: #ff7540; } /* Keyword */
.chroma .kc { color: #649bc4; } /* KeywordConstant */
.chroma .kd { color: #ff7540; } /* KeywordDeclaration */
.chroma .kn { color: #ffaa10; } /* KeywordNamespace */
.chroma .kp { color: #5f8700; } /* KeywordPseudo */
.chroma .kr { color: #ff7540; } /* KeywordReserved */
.chroma .kt { color: #ff7b72; } /* KeywordType */
.chroma .l {} /* Literal */
.chroma .ld {} /* LiteralDate */
.chroma .m { color: #649bc4; } /* LiteralNumber */
.chroma .mb { color: #649bc4; } /* LiteralNumberBin */
.chroma .mf { color: #649bc4; } /* LiteralNumberFloat */
.chroma .mh { color: #649bc4; } /* LiteralNumberHex */
.chroma .mi { color: #649bc4; } /* LiteralNumberInteger */
.chroma .mo { color: #649bc4; } /* LiteralNumberOct */
.chroma .n { color: #c9d1d9; } /* Name */
.chroma .na { color: #fabd2f; } /* NameAttribute */
.chroma .nb { color: #fabd2f; } /* NameBuiltin */
.chroma .nc { color: #ffaa10; } /* NameClass */
.chroma .nd { color: #8ec07c; } /* NameDecorator */
.chroma .ne { color: #ff7540; } /* NameException */
.chroma .nf { color: #fabd2f; } /* NameFunction */
.chroma .ni { color: #fabd2f; } /* NameEntity */
.chroma .nl { color: #ff7540; } /* NameLabel */
.chroma .nn { color: #c9d1d9; } /* NameNamespace */
.chroma .no { color: #649bc4; } /* NameConstant */
.chroma .nt { color: #ff7540; } /* NameTag */
.chroma .nv { color: #ebdbb2; } /* NameVariable */
.chroma .nx { color: #b6bac5; } /* NameOther */
.chroma .o { color: #ff7540; } /* Operator */
.chroma .ow { color: #5f8700; } /* OperatorWord */
.chroma .p { color: #d2d4db; } /* Punctuation */
.chroma .py {} /* NameProperty */
.chroma .s { color: #b8bb26; } /* LiteralString */
.chroma .s1 { color: #b8bb26; } /* LiteralStringSingle */
.chroma .s2 { color: #b8bb26; } /* LiteralStringDouble */
.chroma .sa { color: #ffaa10; } /* LiteralStringAffix */
.chroma .sb { color: #b8bb26; } /* LiteralStringBacktick */
.chroma .sc { color: #ffaa10; } /* LiteralStringChar */
.chroma .sd { color: #b8bb26; } /* LiteralStringDoc */
.chroma .se { color: #ff8540; } /* LiteralStringEscape */
.chroma .sh { color: #b8bb26; } /* LiteralStringHeredoc */
.chroma .si { color: #ffaa10; } /* LiteralStringInterpol */
.chroma .sr { color: #9075cd; } /* LiteralStringRegex */
.chroma .ss { color: #ff8540; } /* LiteralStringSymbol */
.chroma .sx { color: #ffaa10; } /* LiteralStringOther */
.chroma .vc { color: #649bee; } /* NameVariableClass */
.chroma .vg { color: #649bee; } /* NameVariableGlobal */
.chroma .vi { color: #649bee; } /* NameVariableInstance */
.chroma .vm {} /* NameVariableMagic */
.chroma .w { color: #7f8699; } /* TextWhitespace */
.chroma .err {/* not styled because Chroma uses it on too many things like JSX */} /* Error */

View File

@@ -0,0 +1,76 @@
/* https://github.com/alecthomas/chroma/blob/6428fb4e65f3c1493491571c8a6a8f1add1da822/types.go#L208 */
.chroma .bp { color: #999999; } /* NameBuiltinPseudo */
.chroma .c { color: #6a737d; } /* Comment */
.chroma .c1 { color: #6a737d; } /* CommentSingle */
.chroma .ch { color: #6a737d; } /* CommentHashbang */
.chroma .cm { color: #999988; } /* CommentMultiline */
.chroma .cp { color: #109295; } /* CommentPreproc */
.chroma .cpf { color: #4c4dbc; } /* CommentPreprocFile */
.chroma .cs { color: #999999; } /* CommentSpecial */
.chroma .dl { color: #106303; } /* LiteralStringDelimiter */
.chroma .fm {} /* NameFunctionMagic */
.chroma .g {} /* Generic */
.chroma .gd { color: #000000; background-color: #ffdddd; } /* GenericDeleted */
.chroma .ge { color: #000000; } /* GenericEmph */
.chroma .gh { color: #999999; } /* GenericHeading */
.chroma .gi { color: #000000; background-color: #ddffdd; } /* GenericInserted */
.chroma .gl {} /* GenericUnderline */
.chroma .go { color: #888888; } /* GenericOutput */
.chroma .gp { color: #555555; } /* GenericPrompt */
.chroma .gr { color: #aa0000; } /* GenericError */
.chroma .gs {} /* GenericStrong */
.chroma .gt { color: #aa0000; } /* GenericTraceback */
.chroma .gu { color: #aaaaaa; } /* GenericSubheading */
.chroma .il { color: #009999; } /* LiteralNumberIntegerLong */
.chroma .k { color: #d73a49; } /* Keyword */
.chroma .kc { color: #d73a49; } /* KeywordConstant */
.chroma .kd { color: #d73a49; } /* KeywordDeclaration */
.chroma .kn { color: #d73a49; } /* KeywordNamespace */
.chroma .kp { color: #d73a49; } /* KeywordPseudo */
.chroma .kr { color: #d73a49; } /* KeywordReserved */
.chroma .kt { color: #445588; } /* KeywordType */
.chroma .l {} /* Literal */
.chroma .ld {} /* LiteralDate */
.chroma .m { color: #009999; } /* LiteralNumber */
.chroma .mb { color: #009999; } /* LiteralNumberBin */
.chroma .mf { color: #009999; } /* LiteralNumberFloat */
.chroma .mh { color: #009999; } /* LiteralNumberHex */
.chroma .mi { color: #009999; } /* LiteralNumberInteger */
.chroma .mo { color: #009999; } /* LiteralNumberOct */
.chroma .n {} /* Name */
.chroma .na { color: #d73a49; } /* NameAttribute */
.chroma .nb { color: #005cc5; } /* NameBuiltin */
.chroma .nc { color: #445588; } /* NameClass */
.chroma .nd { color: #3c5d5d; } /* NameDecorator */
.chroma .ne { color: #990000; } /* NameException */
.chroma .nf { color: #005cc5; } /* NameFunction */
.chroma .ni { color: #6f42c1; } /* NameEntity */
.chroma .nl { color: #990000; } /* NameLabel */
.chroma .nn { color: #555555; } /* NameNamespace */
.chroma .no { color: #008080; } /* NameConstant */
.chroma .nt { color: #22863a; } /* NameTag */
.chroma .nv { color: #008080; } /* NameVariable */
.chroma .nx { color: #24292e; } /* NameOther */
.chroma .o { color: #d73a49; } /* Operator */
.chroma .ow { color: #d73a49; } /* OperatorWord */
.chroma .p {} /* Punctuation */
.chroma .py {} /* NameProperty */
.chroma .s { color: #106303; } /* LiteralString */
.chroma .s1 { color: #106303; } /* LiteralStringSingle */
.chroma .s2 { color: #106303; } /* LiteralStringDouble */
.chroma .sa { color: #cc7a00; } /* LiteralStringAffix */
.chroma .sb { color: #106303; } /* LiteralStringBacktick */
.chroma .sc { color: #cc7a00; } /* LiteralStringChar */
.chroma .sd { color: #106303; } /* LiteralStringDoc */
.chroma .se { color: #994400; } /* LiteralStringEscape */
.chroma .sh { color: #106303; } /* LiteralStringHeredoc */
.chroma .si { color: #cc7a00; } /* LiteralStringInterpol */
.chroma .sr { color: #4c4dbc; } /* LiteralStringRegex */
.chroma .ss { color: #994400; } /* LiteralStringSymbol */
.chroma .sx { color: #106303; } /* LiteralStringOther */
.chroma .vc { color: #008080; } /* NameVariableClass */
.chroma .vg { color: #008080; } /* NameVariableGlobal */
.chroma .vi { color: #008080; } /* NameVariableInstance */
.chroma .vm {} /* NameVariableMagic */
.chroma .w { color: #bbbbbb; } /* TextWhitespace */
.chroma .err {/* not styled because Chroma uses it on too many things like JSX */} /* Error */

View File

@@ -0,0 +1,49 @@
.ui .field:not(:last-child) .EasyMDEContainer .editor-statusbar {
margin-bottom: -1em; /* when there is a statusbar, the "margin-bottom: 1em" of the "field" is not needed, because the statusbar is likely a blank line */
}
.EasyMDEContainer .CodeMirror {
color: var(--color-input-text);
background-color: var(--color-input-background);
border-color: var(--color-secondary);
font: 14px var(--fonts-monospace);
}
.EasyMDEContainer .CodeMirror.cm-s-default {
border-radius: var(--border-radius);
padding: 0 !important;
}
.EasyMDEContainer .CodeMirror.CodeMirror-fullscreen.CodeMirror-focused {
border-right: 1px solid var(--color-primary) !important;
}
.CodeMirror-cursor {
border-color: var(--color-caret) !important;
}
.CodeMirror .cm-comment {
background: inherit !important;
}
.CodeMirror .CodeMirror-code {
font: 14px var(--fonts-monospace);
}
.CodeMirror-selected {
background: var(--color-primary-light-1) !important;
color: var(--color-white) !important;
}
.CodeMirror-placeholder {
color: var(--color-placeholder-text) !important;
opacity: 1 !important;
}
.CodeMirror-focused {
border-color: var(--color-primary) !important;
}
.CodeMirror :focus {
outline: none;
}

View File

@@ -0,0 +1,106 @@
.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;
}

View File

@@ -0,0 +1 @@
/* Placeholder, there is no light theme, it uses CM defaults */

72
web_src/css/dashboard.css Normal file
View File

@@ -0,0 +1,72 @@
.dashboard.feeds .context.user.menu,
.dashboard.issues .context.user.menu {
z-index: 101;
min-width: 200px;
}
.dashboard.feeds .context.user.menu .ui.header,
.dashboard.issues .context.user.menu .ui.header {
font-size: 1rem;
}
.dashboard.feeds .filter.menu,
.dashboard.issues .filter.menu {
width: initial;
}
.dashboard.feeds .filter.menu .item,
.dashboard.issues .filter.menu .item {
text-align: left;
display: flex;
align-items: center;
justify-content: space-between;
}
.dashboard.feeds .filter.menu .item .text.truncate,
.dashboard.issues .filter.menu .item .text.truncate {
width: 75%;
}
/* Sort */
.dashboard.feeds .filter.menu .jump.item,
.dashboard.issues .filter.menu .jump.item {
margin: 1px;
padding-right: 0;
}
.dashboard.feeds .filter.menu .menu,
.dashboard.issues .filter.menu .menu {
max-height: 300px;
overflow-x: auto;
right: 0 !important;
left: auto !important;
}
@media (max-width: 767.98px) {
.dashboard.feeds .filter.menu,
.dashboard.issues .filter.menu {
width: 100%;
}
}
.dashboard.feeds .right.stackable.menu > .item.active,
.dashboard.issues .right.stackable.menu > .item.active {
color: var(--color-red);
}
.dashboard .dashboard-repos,
.dashboard .dashboard-orgs {
margin: 0 1px; /* Accommodate for Semantic's 1px hacks on .attached elements */
}
.dashboard .secondary-nav {
padding: 1px 12px; /* match .overflow-menu-items in height */
}
.dashboard .secondary-nav .org-visibility .label {
margin-left: 5px;
}
.dashboard .secondary-nav .ui.dropdown {
max-width: 100%;
}

View File

@@ -0,0 +1,166 @@
.combo-markdown-editor {
width: 100%;
}
.combo-markdown-editor markdown-toolbar {
cursor: default;
display: flex;
align-items: center;
padding-bottom: 10px;
flex-wrap: wrap;
}
.combo-markdown-editor .markdown-toolbar-group {
display: flex;
border-left: 1px solid var(--color-secondary);
padding: 0 0.5em;
}
.combo-markdown-editor .markdown-toolbar-group:first-child {
border-left: 0;
padding-left: 0;
}
.combo-markdown-editor .markdown-toolbar-group:last-child {
flex: 1;
justify-content: flex-end;
border-right: none;
border-left: 0;
padding-right: 0;
}
.combo-markdown-editor .markdown-toolbar-button {
border: none;
background: none;
user-select: none;
padding: 5px;
cursor: pointer;
color: var(--color-text);
}
.combo-markdown-editor .markdown-toolbar-button:hover {
color: var(--color-primary);
}
.combo-markdown-editor md-header {
position: relative;
}
.combo-markdown-editor md-header::after {
font-size: 10px;
position: absolute;
top: 7px;
}
.combo-markdown-editor md-header[level="1"]::after {
content: "1";
}
.combo-markdown-editor md-header[level="2"]::after {
content: "2";
}
.combo-markdown-editor md-header[level="3"]::after {
content: "3";
}
.ui.form .combo-markdown-editor textarea.markdown-text-editor,
.combo-markdown-editor textarea.markdown-text-editor {
display: block;
width: 100%;
max-height: calc(100vh - var(--min-height-textarea));
resize: vertical;
}
.combo-markdown-editor .CodeMirror-scroll {
max-height: calc(100vh - var(--min-height-textarea));
}
/* use the same styles as markup/content.css */
.combo-markdown-editor .CodeMirror-scroll .cm-header-1 {
font-size: 2em;
}
.combo-markdown-editor .CodeMirror-scroll .cm-header-2 {
font-size: 1.5em;
}
.combo-markdown-editor .CodeMirror-scroll .cm-header-3 {
font-size: 1.25em;
}
.combo-markdown-editor .CodeMirror-scroll .cm-header-4 {
font-size: 1em;
}
.combo-markdown-editor .CodeMirror-scroll .cm-header-5 {
font-size: 0.875em;
}
.combo-markdown-editor .CodeMirror-scroll .cm-header-6 {
font-size: 0.85em;
}
.combo-markdown-editor .ui.tab.markup[data-tab-panel="markdown-previewer"] {
border-bottom: 1px solid var(--color-secondary);
padding-bottom: 1rem;
}
text-expander {
display: block;
position: relative;
}
text-expander .suggestions {
position: absolute;
min-width: 180px;
padding: 0;
margin-top: 24px;
list-style: none;
background: var(--color-box-body);
border-radius: var(--border-radius);
border: 1px solid var(--color-secondary);
box-shadow: 0 .5rem 1rem var(--color-shadow);
z-index: 100; /* needs to be > 20 to be on top of dropzone's .dz-details */
}
text-expander .suggestions li {
display: flex;
align-items: center;
cursor: pointer;
padding: 4px 8px;
font-weight: var(--font-weight-medium);
}
text-expander .suggestions li + li {
border-top: 1px solid var(--color-secondary-alpha-40);
}
text-expander .suggestions li:first-child {
border-radius: var(--border-radius) var(--border-radius) 0 0;
}
text-expander .suggestions li:last-child {
border-radius: 0 0 var(--border-radius) var(--border-radius);
}
text-expander .suggestions li:only-child {
border-radius: var(--border-radius);
}
text-expander .suggestions li:hover {
background: var(--color-hover);
}
text-expander .suggestions .fullname {
font-weight: var(--font-weight-normal);
margin-left: 4px;
color: var(--color-text-light-1);
}
text-expander .suggestions li[aria-selected="true"],
text-expander .suggestions li[aria-selected="true"] span {
background: var(--color-primary);
color: var(--color-primary-contrast);
}
text-expander .suggestions img {
width: 24px;
height: 24px;
margin-right: 8px;
}

View File

@@ -0,0 +1,85 @@
.repository.file.editor .tab[data-tab="write"] {
padding: 0 !important;
}
.repository.file.editor .tab[data-tab="write"] .editor-toolbar {
border: 0 !important;
}
.repository.file.editor .tab[data-tab="write"] .CodeMirror {
border-left: 0;
border-right: 0;
border-bottom: 0;
}
.repo-editor-header {
display: flex;
margin: 1rem 0;
padding: 3px 0;
}
.editor-toolbar {
border-color: var(--color-secondary);
}
.editor-toolbar.fullscreen {
background: var(--color-body);
}
.editor-toolbar button {
border: none !important;
color: var(--color-text-light);
}
.editor-toolbar button:not(:hover) {
background-color: transparent !important;
}
.editor-toolbar i.separator {
border-left: none;
border-right-color: var(--color-secondary);
}
.editor-toolbar button:hover {
background: var(--color-hover);
}
.editor-toolbar button.active {
background: var(--color-active);
}
/* hide preview button, we have the preview tab for this */
.editor-toolbar:not(.fullscreen) .preview {
display: none;
}
/* hide revert button in fullscreen, it breaks the page */
.editor-toolbar.fullscreen .revert-to-textarea {
display: none;
}
.editor-preview {
background-color: var(--color-body);
}
.editor-preview-side {
border-color: var(--color-secondary);
}
.editor-statusbar {
color: var(--color-text-light);
}
.editor-loading {
padding: 1rem;
text-align: center;
}
.edit-diff {
padding: 0 !important;
}
.edit-diff > div > .ui.table {
border-top: none !important;
border-bottom: none !important;
}

31
web_src/css/explore.css Normal file
View File

@@ -0,0 +1,31 @@
.explore .secondary-nav {
border-width: 1px !important;
}
.explore .secondary-nav .svg {
width: 16px;
text-align: center;
margin-right: 5px;
}
.ui.repository.branches .info {
font-size: 12px;
color: var(--color-text-light);
display: flex;
white-space: pre;
}
.ui.repository.branches .info .commit-message {
max-width: 72em;
overflow: hidden;
text-overflow: ellipsis;
}
.ui.repository.branches .overflow-visible {
overflow: visible;
}
/* fix alignment of PR popup in branches table */
.ui.repository.branches table .ui.popup {
text-align: left;
}

View File

@@ -0,0 +1,42 @@
.monaco-editor-container,
.editor-loading.is-loading {
width: 100%;
min-height: 200px;
height: 90vh;
}
.edit.githook .monaco-editor-container {
border: 1px solid var(--color-secondary);
height: 70vh;
}
/* overwrite conflicting styles from fomantic */
.monaco-editor-container .inputarea {
min-height: 0 !important;
margin: 0 !important;
padding: 0 !important;
resize: none !important;
border: none !important;
color: transparent !important;
background-color: transparent !important;
}
.monaco-editor,
.monaco-editor .overflow-guard {
border-radius: 0 0 var(--border-radius) var(--border-radius);
}
/* fomantic styles destroy this element only visible on IOS, restore it */
.monaco-editor .iPadShowKeyboard {
border: none !important;
width: 58px !important;
min-width: 0 !important;
height: 36px !important;
min-height: 0 !important;
margin: 0 !important;
padding: 0 !important;
position: absolute !important;
resize: none !important;
overflow: hidden !important;
border-radius: var(--border-radius-medium) !important;
}

View File

@@ -0,0 +1,47 @@
.js-color-picker-input {
display: flex;
position: relative;
}
.js-color-picker-input input {
padding-top: 8px !important;
padding-bottom: 8px !important;
padding-left: 32px !important;
}
.js-color-picker-input .preview-square {
position: absolute;
aspect-ratio: 1;
height: 16px;
left: 10px;
top: 50%;
transform: translateY(-50%);
border-radius: 2px;
background: repeating-linear-gradient(45deg, #aaa 25%, transparent 25%, transparent 75%, #aaa 75%, #aaa), repeating-linear-gradient(45deg, #aaa 25%, #fff 25%, #fff 75%, #aaa 75%, #aaa); /* stylelint-disable-line scale-unlimited/declaration-strict-value */
background-position: 0 0, 4px 4px;
background-size: 8px 8px;
}
.js-color-picker-input .preview-square::after {
content: "";
position: absolute;
width: 100%;
height: 100%;
border-radius: inherit;
background-color: currentcolor;
}
hex-color-picker {
width: 180px;
height: 120px;
}
hex-color-picker::part(hue-pointer),
hex-color-picker::part(saturation-pointer) {
width: 22px;
height: 22px;
}
hex-color-picker::part(hue) {
flex-basis: 16px;
}

View File

@@ -0,0 +1,338 @@
/* Based on https://github.com/buildkite/terminal-to-html/blob/697ff23bd8dc48b9d23f11f259f5256dae2455f0/assets/terminal.css */
.console {
background: var(--color-console-bg);
color: var(--color-console-fg);
font-family: var(--fonts-monospace);
border-radius: var(--border-radius);
overflow-wrap: anywhere;
}
.console img { max-width: 100%; }
.console a {
color: inherit;
text-decoration: underline;
text-decoration-style: dashed;
}
.console a:hover { color: var(--color-primary); }
@keyframes blink-animation {
to {
visibility: hidden;
}
}
/* ansi_up colors used in actions */
.ansi-black-fg { color: var(--color-ansi-black); }
.ansi-red-fg { color: var(--color-ansi-red); }
.ansi-green-fg { color: var(--color-ansi-green); }
.ansi-yellow-fg { color: var(--color-ansi-yellow); }
.ansi-blue-fg { color: var(--color-ansi-blue); }
.ansi-magenta-fg { color: var(--color-ansi-magenta); }
.ansi-cyan-fg { color: var(--color-ansi-cyan); }
.ansi-white-fg { color: var(--color-ansi-white); }
.ansi-bright-black-fg { color: var(--color-ansi-bright-black); }
.ansi-bright-red-fg { color: var(--color-ansi-bright-red); }
.ansi-bright-green-fg { color: var(--color-ansi-bright-green); }
.ansi-bright-yellow-fg { color: var(--color-ansi-bright-yellow); }
.ansi-bright-blue-fg { color: var(--color-ansi-bright-blue); }
.ansi-bright-magenta-fg { color: var(--color-ansi-bright-magenta); }
.ansi-bright-cyan-fg { color: var(--color-ansi-bright-cyan); }
.ansi-bright-white-fg { color: var(--color-ansi-bright-white); }
.ansi-black-bg { background-color: var(--color-ansi-black); }
.ansi-red-bg { background-color: var(--color-ansi-red); }
.ansi-green-bg { background-color: var(--color-ansi-green); }
.ansi-yellow-bg { background-color: var(--color-ansi-yellow); }
.ansi-blue-bg { background-color: var(--color-ansi-blue); }
.ansi-magenta-bg { background-color: var(--color-ansi-magenta); }
.ansi-cyan-bg { background-color: var(--color-ansi-cyan); }
.ansi-white-bg { background-color: var(--color-ansi-white); }
.ansi-bright-black-bg { background-color: var(--color-ansi-bright-black); }
.ansi-bright-red-bg { background-color: var(--color-ansi-bright-red); }
.ansi-bright-green-bg { background-color: var(--color-ansi-bright-green); }
.ansi-bright-yellow-bg { background-color: var(--color-ansi-bright-yellow); }
.ansi-bright-blue-bg { background-color: var(--color-ansi-bright-blue); }
.ansi-bright-magenta-bg { background-color: var(--color-ansi-bright-magenta); }
.ansi-bright-cyan-bg { background-color: var(--color-ansi-bright-cyan); }
.ansi-bright-white-bg { background-color: var(--color-ansi-bright-white); }
/* term colors used in console rendering */
.term-fg2 { color: var(--color-ansi-bright-black); } /* faint (decreased intensity) - same as gray really */
.term-fg3 { font-style: italic; } /* italic */
.term-fg4 { text-decoration: underline; } /* underline */
.term-fg5 { animation: blink-animation 1s steps(3, start) infinite; } /* blink */
.term-fg9 { text-decoration: line-through; } /* crossed-out */
.term-fg30 { color: var(--color-ansi-black); } /* black (but we can't use black, so a diff color) */
.term-fg31 { color: var(--color-ansi-red); } /* red */
.term-fg32 { color: var(--color-ansi-green); } /* green */
.term-fg33 { color: var(--color-ansi-yellow); } /* yellow */
.term-fg34 { color: var(--color-ansi-blue); } /* blue */
.term-fg35 { color: var(--color-ansi-magenta); } /* magenta */
.term-fg36 { color: var(--color-ansi-cyan); } /* cyan */
/* high intense colors */
.term-fgi1 { color: var(--color-ansi-bright-green); }
.term-fgi90 { color: var(--color-ansi-bright-black); } /* grey */
.term-fgi91 { color: var(--color-ansi-bright-red); } /* red */
.term-fgi92 { color: var(--color-ansi-bright-green); } /* green */
.term-fgi93 { color: var(--color-ansi-bright-yellow); } /* yellow */
.term-fgi94 { color: var(--color-ansi-bright-blue); } /* blue */
.term-fgi95 { color: var(--color-ansi-bright-magenta); } /* magenta */
.term-fgi96 { color: var(--color-ansi-bright-cyan); } /* cyan */
/* background colors */
.term-bg40 { background: var(--color-ansi-bright-black); } /* grey */
.term-bg41 { background: var(--color-ansi-red); } /* red */
.term-bg42 { background: var(--color-ansi-green); } /* green */
/* custom foreground/background combos for readability */
.term-fg31.term-bg40 { color: var(--color-ansi-bright-red); }
/* xterm colors */
.term-fgx16 { color: #000000; }
.term-fgx17 { color: #00005f; }
.term-fgx18 { color: #000087; }
.term-fgx19 { color: #0000af; }
.term-fgx20 { color: #0000d7; }
.term-fgx21 { color: #0000ff; }
.term-fgx22 { color: #005f00; }
.term-fgx23 { color: #005f5f; }
.term-fgx24 { color: #005f87; }
.term-fgx25 { color: #005faf; }
.term-fgx26 { color: #005fd7; }
.term-fgx27 { color: #005fff; }
.term-fgx28 { color: #008700; }
.term-fgx29 { color: #00875f; }
.term-fgx30 { color: #008787; }
.term-fgx31 { color: #0087af; }
.term-fgx32 { color: #0087d7; }
.term-fgx33 { color: #0087ff; }
.term-fgx34 { color: #00af00; }
.term-fgx35 { color: #00af5f; }
.term-fgx36 { color: #00af87; }
.term-fgx37 { color: #00afaf; }
.term-fgx38 { color: #00afd7; }
.term-fgx39 { color: #00afff; }
.term-fgx40 { color: #00d700; }
.term-fgx41 { color: #00d75f; }
.term-fgx42 { color: #00d787; }
.term-fgx43 { color: #00d7af; }
.term-fgx44 { color: #00d7d7; }
.term-fgx45 { color: #00d7ff; }
.term-fgx46 { color: #00ff00; }
.term-fgx47 { color: #00ff5f; }
.term-fgx48 { color: #00ff87; }
.term-fgx49 { color: #00ffaf; }
.term-fgx50 { color: #00ffd7; }
.term-fgx51 { color: #00ffff; }
.term-fgx52 { color: #5f0000; }
.term-fgx53 { color: #5f005f; }
.term-fgx54 { color: #5f0087; }
.term-fgx55 { color: #5f00af; }
.term-fgx56 { color: #5f00d7; }
.term-fgx57 { color: #5f00ff; }
.term-fgx58 { color: #5f5f00; }
.term-fgx59 { color: #5f5f5f; }
.term-fgx60 { color: #5f5f87; }
.term-fgx61 { color: #5f5faf; }
.term-fgx62 { color: #5f5fd7; }
.term-fgx63 { color: #5f5fff; }
.term-fgx64 { color: #5f8700; }
.term-fgx65 { color: #5f875f; }
.term-fgx66 { color: #5f8787; }
.term-fgx67 { color: #5f87af; }
.term-fgx68 { color: #5f87d7; }
.term-fgx69 { color: #5f87ff; }
.term-fgx70 { color: #5faf00; }
.term-fgx71 { color: #5faf5f; }
.term-fgx72 { color: #5faf87; }
.term-fgx73 { color: #5fafaf; }
.term-fgx74 { color: #5fafd7; }
.term-fgx75 { color: #5fafff; }
.term-fgx76 { color: #5fd700; }
.term-fgx77 { color: #5fd75f; }
.term-fgx78 { color: #5fd787; }
.term-fgx79 { color: #5fd7af; }
.term-fgx80 { color: #5fd7d7; }
.term-fgx81 { color: #5fd7ff; }
.term-fgx82 { color: #5fff00; }
.term-fgx83 { color: #5fff5f; }
.term-fgx84 { color: #5fff87; }
.term-fgx85 { color: #5fffaf; }
.term-fgx86 { color: #5fffd7; }
.term-fgx87 { color: #5fffff; }
.term-fgx88 { color: #870000; }
.term-fgx89 { color: #87005f; }
.term-fgx90 { color: #870087; }
.term-fgx91 { color: #8700af; }
.term-fgx92 { color: #8700d7; }
.term-fgx93 { color: #8700ff; }
.term-fgx94 { color: #875f00; }
.term-fgx95 { color: #875f5f; }
.term-fgx96 { color: #875f87; }
.term-fgx97 { color: #875faf; }
.term-fgx98 { color: #875fd7; }
.term-fgx99 { color: #875fff; }
.term-fgx100 { color: #878700; }
.term-fgx101 { color: #87875f; }
.term-fgx102 { color: #878787; }
.term-fgx103 { color: #8787af; }
.term-fgx104 { color: #8787d7; }
.term-fgx105 { color: #8787ff; }
.term-fgx106 { color: #87af00; }
.term-fgx107 { color: #87af5f; }
.term-fgx108 { color: #87af87; }
.term-fgx109 { color: #87afaf; }
.term-fgx110 { color: #87afd7; }
.term-fgx111 { color: #87afff; }
.term-fgx112 { color: #87d700; }
.term-fgx113 { color: #87d75f; }
.term-fgx114 { color: #87d787; }
.term-fgx115 { color: #87d7af; }
.term-fgx116 { color: #87d7d7; }
.term-fgx117 { color: #87d7ff; }
.term-fgx118 { color: #87ff00; }
.term-fgx119 { color: #87ff5f; }
.term-fgx120 { color: #87ff87; }
.term-fgx121 { color: #87ffaf; }
.term-fgx122 { color: #87ffd7; }
.term-fgx123 { color: #87ffff; }
.term-fgx124 { color: #af0000; }
.term-fgx125 { color: #af005f; }
.term-fgx126 { color: #af0087; }
.term-fgx127 { color: #af00af; }
.term-fgx128 { color: #af00d7; }
.term-fgx129 { color: #af00ff; }
.term-fgx130 { color: #af5f00; }
.term-fgx131 { color: #af5f5f; }
.term-fgx132 { color: #af5f87; }
.term-fgx133 { color: #af5faf; }
.term-fgx134 { color: #af5fd7; }
.term-fgx135 { color: #af5fff; }
.term-fgx136 { color: #af8700; }
.term-fgx137 { color: #af875f; }
.term-fgx138 { color: #af8787; }
.term-fgx139 { color: #af87af; }
.term-fgx140 { color: #af87d7; }
.term-fgx141 { color: #af87ff; }
.term-fgx142 { color: #afaf00; }
.term-fgx143 { color: #afaf5f; }
.term-fgx144 { color: #afaf87; }
.term-fgx145 { color: #afafaf; }
.term-fgx146 { color: #afafd7; }
.term-fgx147 { color: #afafff; }
.term-fgx148 { color: #afd700; }
.term-fgx149 { color: #afd75f; }
.term-fgx150 { color: #afd787; }
.term-fgx151 { color: #afd7af; }
.term-fgx152 { color: #afd7d7; }
.term-fgx153 { color: #afd7ff; }
.term-fgx154 { color: #afff00; }
.term-fgx155 { color: #afff5f; }
.term-fgx156 { color: #afff87; }
.term-fgx157 { color: #afffaf; }
.term-fgx158 { color: #afffd7; }
.term-fgx159 { color: #afffff; }
.term-fgx160 { color: #d70000; }
.term-fgx161 { color: #d7005f; }
.term-fgx162 { color: #d70087; }
.term-fgx163 { color: #d700af; }
.term-fgx164 { color: #d700d7; }
.term-fgx165 { color: #d700ff; }
.term-fgx166 { color: #d75f00; }
.term-fgx167 { color: #d75f5f; }
.term-fgx168 { color: #d75f87; }
.term-fgx169 { color: #d75faf; }
.term-fgx170 { color: #d75fd7; }
.term-fgx171 { color: #d75fff; }
.term-fgx172 { color: #d78700; }
.term-fgx173 { color: #d7875f; }
.term-fgx174 { color: #d78787; }
.term-fgx175 { color: #d787af; }
.term-fgx176 { color: #d787d7; }
.term-fgx177 { color: #d787ff; }
.term-fgx178 { color: #d7af00; }
.term-fgx179 { color: #d7af5f; }
.term-fgx180 { color: #d7af87; }
.term-fgx181 { color: #d7afaf; }
.term-fgx182 { color: #d7afd7; }
.term-fgx183 { color: #d7afff; }
.term-fgx184 { color: #d7d700; }
.term-fgx185 { color: #d7d75f; }
.term-fgx186 { color: #d7d787; }
.term-fgx187 { color: #d7d7af; }
.term-fgx188 { color: #d7d7d7; }
.term-fgx189 { color: #d7d7ff; }
.term-fgx190 { color: #d7ff00; }
.term-fgx191 { color: #d7ff5f; }
.term-fgx192 { color: #d7ff87; }
.term-fgx193 { color: #d7ffaf; }
.term-fgx194 { color: #d7ffd7; }
.term-fgx195 { color: #d7ffff; }
.term-fgx196 { color: #ff0000; }
.term-fgx197 { color: #ff005f; }
.term-fgx198 { color: #ff0087; }
.term-fgx199 { color: #ff00af; }
.term-fgx200 { color: #ff00d7; }
.term-fgx201 { color: #ff00ff; }
.term-fgx202 { color: #ff5f00; }
.term-fgx203 { color: #ff5f5f; }
.term-fgx204 { color: #ff5f87; }
.term-fgx205 { color: #ff5faf; }
.term-fgx206 { color: #ff5fd7; }
.term-fgx207 { color: #ff5fff; }
.term-fgx208 { color: #ff8700; }
.term-fgx209 { color: #ff875f; }
.term-fgx210 { color: #ff8787; }
.term-fgx211 { color: #ff87af; }
.term-fgx212 { color: #ff87d7; }
.term-fgx213 { color: #ff87ff; }
.term-fgx214 { color: #ffaf00; }
.term-fgx215 { color: #ffaf5f; }
.term-fgx216 { color: #ffaf87; }
.term-fgx217 { color: #ffafaf; }
.term-fgx218 { color: #ffafd7; }
.term-fgx219 { color: #ffafff; }
.term-fgx220 { color: #ffd700; }
.term-fgx221 { color: #ffd75f; }
.term-fgx222 { color: #ffd787; }
.term-fgx223 { color: #ffd7af; }
.term-fgx224 { color: #ffd7d7; }
.term-fgx225 { color: #ffd7ff; }
.term-fgx226 { color: #ffff00; }
.term-fgx227 { color: #ffff5f; }
.term-fgx228 { color: #ffff87; }
.term-fgx229 { color: #ffffaf; }
.term-fgx230 { color: #ffffd7; }
.term-fgx231 { color: #ffffff; }
.term-fgx232 { color: #080808; }
.term-fgx233 { color: #121212; }
.term-fgx234 { color: #1c1c1c; }
.term-fgx235 { color: #262626; }
.term-fgx236 { color: #303030; }
.term-fgx237 { color: #3a3a3a; }
.term-fgx238 { color: #444444; }
.term-fgx239 { color: #4e4e4e; }
.term-fgx240 { color: #585858; }
.term-fgx241 { color: #626262; }
.term-fgx242 { color: #6c6c6c; }
.term-fgx243 { color: #767676; }
.term-fgx244 { color: #808080; }
.term-fgx245 { color: #8a8a8a; }
.term-fgx246 { color: #949494; }
.term-fgx247 { color: #9e9e9e; }
.term-fgx248 { color: #a8a8a8; }
.term-fgx249 { color: #b2b2b2; }
.term-fgx250 { color: #bcbcbc; }
.term-fgx251 { color: #c6c6c6; }
.term-fgx252 { color: #d0d0d0; }
.term-fgx253 { color: #dadada; }
.term-fgx254 { color: #e4e4e4; }
.term-fgx255 { color: #eeeeee; }

View File

@@ -0,0 +1,6 @@
@import "cropperjs/dist/cropper.css";
.page-content.user.profile .cropper-panel .cropper-wrapper {
max-width: 400px;
max-height: 400px;
}

View File

@@ -0,0 +1,59 @@
.ui .field .dropzone {
border: 2px dashed var(--color-secondary);
background: none;
box-shadow: none;
padding: 0;
border-radius: var(--border-radius-medium);
min-height: 0;
}
.ui .field .dropzone .dz-message {
margin: 10px 0;
}
.dropzone .dz-button {
color: var(--color-text-light) !important;
}
.dropzone:hover .dz-button {
color: var(--color-text) !important;
}
.dropzone .dz-error-message {
top: 145px !important;
}
.dropzone .dz-image {
display: flex !important;
align-items: center !important;
justify-content: center !important;
border-radius: 0 !important;
}
.dropzone .dz-image img {
max-width: 100% !important;
max-height: 100% !important;
object-fit: contain !important;
}
.dropzone .dz-preview.dz-image-preview,
.dropzone-attachments .thumbnails img {
background: transparent !important;
}
.dropzone-attachments .thumbnails img {
height: 120px !important;
width: 120px !important;
object-fit: contain !important;
margin-bottom: 0 !important;
}
.dropzone .dz-preview:hover .dz-image img {
filter: opacity(0.5) !important;
}
.ui .field .dropzone .dz-preview .dz-progress {
/* by default the progress-bar is vertically centered (top: 50%), it's better to put it after the "details (size, filename)",
then the layout from top to bottom is: size, filename, progress */
top: 7em;
}

View File

@@ -0,0 +1,298 @@
#git-graph-container {
overflow-x: auto;
width: 100%;
min-height: 350px;
}
#git-graph-container h2 {
display: flex;
justify-content: space-between;
align-items: center;
}
#git-graph-container .color-buttons {
margin-right: 0;
}
#git-graph-container .ui.header.dividing {
padding-bottom: 10px;
}
#git-graph-container #flow-select-refs-dropdown {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
min-width: 250px;
border-right: none;
}
#git-graph-container #flow-select-refs-dropdown .ui.label {
max-width: 180px;
display: inline-flex !important;
align-items: center;
}
#git-graph-container #flow-select-refs-dropdown .ui.label .truncate {
display: inline-block;
max-width: 140px;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: top;
white-space: nowrap;
}
#git-graph-container #flow-select-refs-dropdown .default.text {
padding-top: 4px;
padding-bottom: 4px;
}
#git-graph-container #flow-select-refs-dropdown input.search {
position: relative;
top: 1px;
}
#git-graph-container li {
list-style-type: none;
height: 24px;
line-height: 24px;
white-space: nowrap;
display: flex;
align-items: center;
}
#git-graph-container li .node-relation {
font-family: var(--fonts-monospace);
}
#git-graph-container li .author {
color: var(--color-text-light);
}
#git-graph-container li .time {
color: var(--color-text-light-3);
font-size: 80%;
}
#git-graph-container li a:not(.ui):hover {
text-decoration: underline;
}
#git-graph-container li a em {
color: var(--color-red);
border-bottom: 1px dotted var(--color-secondary);
text-decoration: none;
font-style: normal;
}
#git-graph-container #rel-container {
max-width: 30%;
overflow-x: auto;
float: left;
}
#git-graph-container #rev-container {
width: 100%;
}
#git-graph-container #rev-list {
margin: 0;
padding: 0;
width: 100%;
}
#git-graph-container #rev-list li.highlight.hover {
background-color: var(--color-secondary-alpha-30);
}
#git-graph-container #rev-list .commit-refs .button {
padding: 2px 4px;
margin-right: 0.25em;
display: inline-block;
max-width: 200px;
overflow: hidden;
text-overflow: ellipsis;
}
#git-graph-container #rev-list .sha.label {
padding-top: 5px;
padding-bottom: 3px;
}
#git-graph-container #rev-list .sha.label .ui.detail.icon.button {
padding-top: 3px;
margin-top: -5px;
padding-bottom: 1px;
}
#git-graph-container #graph-raw-list {
margin: 0;
}
#git-graph-container.monochrome #rel-container .flow-group {
stroke: var(--color-secondary-dark-5);
fill: var(--color-secondary-dark-5);
}
#git-graph-container.monochrome #rel-container .flow-group.highlight {
stroke: var(--color-secondary-dark-12);
fill: var(--color-secondary-dark-12);
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-1 {
stroke: #499a37;
fill: #499a37;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-2 {
stroke: #ce4751;
fill: #ce4751;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-3 {
stroke: #8f9121;
fill: #8f9121;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-4 {
stroke: #ac32a6;
fill: #ac32a6;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-5 {
stroke: #7445e9;
fill: #7445e9;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-6 {
stroke: #c67d28;
fill: #c67d28;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-7 {
stroke: #4db392;
fill: #4db392;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-8 {
stroke: #aa4d30;
fill: #aa4d30;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-9 {
stroke: #2a6f84;
fill: #2a6f84;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-10 {
stroke: #c45327;
fill: #c45327;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-11 {
stroke: #3d965c;
fill: #3d965c;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-12 {
stroke: #792a93;
fill: #792a93;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-13 {
stroke: #439d73;
fill: #439d73;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-14 {
stroke: #103aad;
fill: #103aad;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-15 {
stroke: #982e85;
fill: #982e85;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.flow-color-16-0 {
stroke: #7db233;
fill: #7db233;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-1 {
stroke: #5ac144;
fill: #5ac144;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-2 {
stroke: #ed5a8b;
fill: #ed5a8b;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-3 {
stroke: #ced049;
fill: #ced048;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-4 {
stroke: #db61d7;
fill: #db62d6;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-5 {
stroke: #8455f9;
fill: #8455f9;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-6 {
stroke: #e6a151;
fill: #e6a151;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-7 {
stroke: #44daaa;
fill: #44daaa;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-8 {
stroke: #dd7a5c;
fill: #dd7a5c;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-9 {
stroke: #38859c;
fill: #38859c;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-10 {
stroke: #d95520;
fill: #d95520;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-11 {
stroke: #42ae68;
fill: #42ae68;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-12 {
stroke: #9126b5;
fill: #9126b5;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-13 {
stroke: #4ab080;
fill: #4ab080;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-14 {
stroke: #284fb8;
fill: #284fb8;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-15 {
stroke: #971c80;
fill: #971c80;
}
#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight.flow-color-16-0 {
stroke: #87ca28;
fill: #87ca28;
}

View File

@@ -0,0 +1,58 @@
#user-heatmap {
width: 100%;
font-size: 9px;
position: relative;
}
/* before the Vue component is mounted, show a loading indicator with dummy size */
/* the ratio is guesswork, see https://github.com/razorness/vue3-calendar-heatmap/issues/26 */
#user-heatmap.is-loading {
aspect-ratio: 5.415; /* the size is about 790 x 145 */
}
.user.profile #user-heatmap.is-loading {
aspect-ratio: 5.645; /* the size is about 953 x 169 */
}
#user-heatmap text {
fill: currentcolor !important;
}
/* for the "Less" and "More" legend */
#user-heatmap .vch__legend .vch__legend {
display: flex;
font-size: 11px;
align-items: center;
justify-content: right;
}
#user-heatmap .vch__legend .vch__legend div:first-child,
#user-heatmap .vch__legend .vch__legend div:last-child {
display: inline-block;
padding: 0 5px;
}
#user-heatmap .vch__day__square:hover {
outline: 1.5px solid var(--color-text);
}
/* move the "? contributions in the last ? months" text from top to bottom */
#user-heatmap .total-contributions {
font-size: 11px;
position: absolute;
bottom: 0;
left: 25px;
}
@media (max-width: 1200px) {
#user-heatmap .total-contributions {
left: 21px;
}
}
@media (max-width: 1000px) {
#user-heatmap .total-contributions {
font-size: 10px;
left: 17px;
bottom: -4px;
}
}

View File

@@ -0,0 +1,112 @@
.image-diff-tabs {
min-height: 60px;
}
.image-diff-tabs.is-loading .tab {
display: none;
}
.image-diff-container {
text-align: center;
padding: 0.5em 0 1em;
}
.image-diff-container img {
border: 1px solid var(--color-primary-light-7);
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAG0lEQVQYlWN4+vTpf3SMDTAMBYXYBLFpHgoKAeiOf0SGE9kbAAAAAElFTkSuQmCC") right bottom var(--color-primary-light-7);
}
.image-diff-container .before-container {
border: 1px solid var(--color-red);
display: block;
}
.image-diff-container .after-container {
border: 1px solid var(--color-green);
display: block;
}
.image-diff-container .diff-side-by-side .side {
display: inline-block;
line-height: 0;
vertical-align: top;
margin: 0 1em;
}
.image-diff-container .diff-side-by-side .side .side-header {
font-weight: var(--font-weight-semibold);
}
.image-diff-container .diff-swipe {
margin: auto;
padding: 1em 0;
}
.image-diff-container .diff-swipe .swipe-frame {
position: absolute;
}
.image-diff-container .diff-swipe .swipe-frame .before-container {
position: absolute;
}
.image-diff-container .diff-swipe .swipe-frame .swipe-container {
position: absolute;
right: 0;
display: block;
border-left: 2px solid var(--color-secondary-dark-8);
height: 100%;
overflow: hidden;
}
.image-diff-container .diff-swipe .swipe-frame .swipe-container .after-container {
position: absolute;
right: 0;
}
.image-diff-container .diff-swipe .swipe-frame .swipe-bar {
position: absolute;
height: 100%;
top: 0;
left: 0;
}
.image-diff-container .diff-swipe .swipe-frame .swipe-bar .handle {
background: var(--color-secondary-dark-8);
left: -5px;
height: 12px;
width: 12px;
position: absolute;
transform: rotate(45deg);
box-sizing: border-box;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
}
.image-diff-container .diff-swipe .swipe-frame .swipe-bar .top-handle {
top: -12px;
}
.image-diff-container .diff-swipe .swipe-frame .swipe-bar .bottom-handle {
bottom: -14px;
}
.image-diff-container .diff-overlay {
margin: 0 auto;
}
.image-diff-container .diff-overlay .overlay-frame {
margin: 1em auto 0;
position: relative;
}
.image-diff-container .diff-overlay .before-container,
.image-diff-container .diff-overlay .after-container {
position: absolute;
}
.image-diff-container .diff-overlay input {
max-width: 300px;
}

View File

@@ -0,0 +1,116 @@
.board {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
overflow-x: auto;
overflow-y: clip;
align-items: stretch;
margin: 0 0.5em;
}
.project-toolbar-right .filter.menu {
flex-direction: row;
flex-wrap: wrap;
}
@media (max-width: 767.98px) {
.project-toolbar-right .dropdown .menu {
left: auto !important;
right: auto !important;
}
}
.project-column {
background-color: var(--color-project-column-bg) !important;
border: 1px solid var(--color-secondary) !important;
border-radius: var(--border-radius);
margin: 0 0.5rem !important;
padding: 0.5rem !important;
width: 320px;
height: initial;
min-height: max(calc(100vh - 400px), 300px);
flex: 0 0 auto;
overflow: visible;
display: flex;
flex-direction: column;
cursor: default;
}
.project-column .issue-card {
color: var(--color-text);
}
.project-column-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 0.5em;
}
.ui.label.project-column-issue-count {
color: inherit;
}
.project-column-title-label {
flex: 1;
}
.project-column > .cards {
flex: 1;
display: flex;
align-content: baseline;
margin: 0 !important;
padding: 0 !important;
flex-wrap: nowrap !important;
flex-direction: column;
overflow-x: clip;
gap: .25rem;
}
.project-column > .divider {
margin: 5px 0;
border-color: currentcolor;
opacity: .5;
}
.project-column:first-child {
margin-left: auto !important;
}
.project-column:last-child {
margin-right: auto !important;
}
.card-attachment-images {
display: inline-block;
white-space: nowrap;
overflow: scroll;
cursor: default;
scroll-snap-type: x mandatory;
text-align: center;
}
.card-attachment-images img {
display: inline-block;
max-height: 50px;
border-radius: var(--border-radius);
text-align: left;
scroll-snap-align: center;
margin-right: 2px;
aspect-ratio: 1;
}
.card-attachment-images img:only-child {
max-height: 90px;
margin: auto;
}
.card-ghost {
border-color: var(--color-secondary-dark-4) !important;
border-style: dashed !important;
background: none !important;
}
.card-ghost * {
opacity: 0;
}

View File

@@ -0,0 +1,32 @@
@import "tributejs/dist/tribute.css";
.tribute-container {
box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.25);
border-radius: var(--border-radius);
}
.tribute-container ul {
margin-top: 0 !important;
background: var(--color-body) !important;
}
.tribute-container li {
padding: 3px 0.5rem !important;
}
.tribute-container li span.fullname {
font-weight: var(--font-weight-normal);
font-size: 0.8rem;
}
.tribute-container li.highlight,
.tribute-container li:hover {
background: var(--color-primary) !important;
color: var(--color-primary-contrast) !important;
}
.tribute-item {
display: flex;
align-items: center;
gap: 6px;
}

393
web_src/css/font_i18n.css Normal file
View File

@@ -0,0 +1,393 @@
:root :lang(ja) {
--fonts-override: var(--fonts-default-override-ja);
}
:root :lang(zh-CN) {
--fonts-override: var(--fonts-default-override-zh-cn);
}
:root :lang(zh-TW) {
--fonts-override: var(--fonts-default-override-zh-tw);
}
:root :lang(zh-HK) {
--fonts-override: var(--fonts-default-override-zh-hk);
}
:root :lang(ko) {
--fonts-override: var(--fonts-default-override-ko);
}
[lang] {
font-family: var(--fonts-regular);
}
:root {
--fonts-default-override-ja: system-ui-ja, var(--fonts-proportional);
--fonts-default-override-zh-cn: system-ui-zh-cn, var(--fonts-proportional);
--fonts-default-override-zh-tw: system-ui-zh-tw, var(--fonts-proportional);
--fonts-default-override-zh-hk: system-ui-zh-hk, var(--fonts-proportional);
--fonts-default-override-ko: system-ui-ko, var(--fonts-proportional);
}
/* Special handling for Firefox on Windows/Linux */
@supports (-moz-appearance: none) {
:root {
--fonts-default-override-ja: var(--fonts-proportional), system-ui-ja;
--fonts-default-override-zh-cn: var(--fonts-proportional), system-ui-zh-cn;
--fonts-default-override-zh-tw: var(--fonts-proportional), system-ui-zh-tw;
--fonts-default-override-zh-hk: var(--fonts-proportional), system-ui-zh-hk;
--fonts-default-override-ko: var(--fonts-proportional), system-ui-ko;
}
}
@font-face {
font-family: system-ui-ja;
src: local("HiraKakuProN-W3"), local("Hiragino Kaku Gothic ProN W3"),
local("HiraginoSans-W2"), local("Source Han Sans JP Light"),
local("SourceHanSansJP-Light"), local("Source Han Sans J Light"),
local("SourceHanSansJ-Light"), local("Noto Sans CJK JP Light"),
local("NotoSansCJKJP-Light"), local("Source Han Sans Light"),
local("SourceHanSans-Light"), local("Yu Gothic Regular"),
local("YuGothic Regular"), local("Droid Sans Japanese"), local("Meiryo"),
local("MS PGothic");
font-weight: 300;
unicode-range: U+11??, U+2E80-4DBF, U+4E00-9FFF, U+A960-A97F, U+AC00-D7FF,
U+F900-FAFF, U+FE00-FE6F, U+FF00-FFEF, U+1F2??, U+2????;
}
@font-face {
font-family: system-ui-ja;
src: local("HiraKakuProN-W3"), local("Hiragino Kaku Gothic ProN W3"),
local("HiraginoSans-W4"), local("Source Han Sans JP Regular"),
local("SourceHanSansJP-Regular"), local("Source Han Sans J Regular"),
local("SourceHanSansJ-Regular"), local("Noto Sans CJK JP Regular"),
local("NotoSansCJKJP-Regular"), local("Source Han Sans Regular"),
local("SourceHanSans-Regular"), local("Yu Gothic Medium"),
local("YuGothic Medium"), local("Droid Sans Japanese"), local("Meiryo"),
local("MS PGothic");
font-weight: 400;
unicode-range: U+11??, U+2E80-4DBF, U+4E00-9FFF, U+A960-A97F, U+AC00-D7FF,
U+F900-FAFF, U+FE00-FE6F, U+FF00-FFEF, U+1F2??, U+2????;
}
@font-face {
font-family: system-ui-ja;
src: local("HiraKakuProN-W3"), local("Hiragino Kaku Gothic ProN W3"),
local("HiraginoSans-W5"), local("Source Han Sans JP Medium"),
local("SourceHanSansJP-Medium"), local("Source Han Sans J Medium"),
local("SourceHanSansJ-Medium"), local("Noto Sans CJK JP Medium"),
local("NotoSansCJKJP-Medium"), local("Source Han Sans Medium"),
local("SourceHanSans-Medium"), local("Yu Gothic Medium"),
local("YuGothic Medium"), local("Droid Sans Japanese"), local("Meiryo"),
local("MS PGothic");
font-weight: 500;
unicode-range: U+11??, U+2E80-4DBF, U+4E00-9FFF, U+A960-A97F, U+AC00-D7FF,
U+F900-FAFF, U+FE00-FE6F, U+FF00-FFEF, U+1F2??, U+2????;
}
@font-face {
font-family: system-ui-ja;
src: local("HiraKakuProN-W6"), local("Hiragino Kaku Gothic ProN W6"),
local("HiraginoSans-W6"), local("Source Han Sans JP Bold"),
local("SourceHanSansJP-Bold"), local("Source Han Sans J Bold"),
local("SourceHanSansJ-Bold"), local("Noto Sans CJK JP Bold"),
local("NotoSansCJKJP-Bold"), local("Source Han Sans Bold"),
local("SourceHanSans-Bold"), local("Yu Gothic Bold"), local("YuGothic Bold"),
local("Droid Sans Japanese"), local("Meiryo Bold"), local("MS PGothic");
font-weight: 600;
unicode-range: U+11??, U+2E80-4DBF, U+4E00-9FFF, U+A960-A97F, U+AC00-D7FF,
U+F900-FAFF, U+FE00-FE6F, U+FF00-FFEF, U+1F2??, U+2????;
}
/* Safari on macOS/iOS */
@font-face {
font-family: system-ui-ja;
src: local("HelveticaNeue");
unicode-range: U+A0;
}
/* Other browsers on macOS/iOS */
@supports not (-webkit-hyphens: none) {
@font-face {
font-family: system-ui-ja;
src: local("HelveticaNeue");
unicode-range: U+20;
}
}
@font-face {
font-family: system-ui-zh-cn;
src: local("PingFangSC-Light"), local("Source Han Sans CN Light"),
local("SourceHanSansCN-Light"), local("Source Han Sans SC Light"),
local("SourceHanSansSC-Light"), local("Noto Sans CJK SC Light"),
local("NotoSansCJKSC-Light"), local("HiraginoSansGB-W3"),
local("Hiragino Sans GB W3"), local("Microsoft YaHei Light"),
local("Heiti SC Light"), local("SimHei");
font-weight: 300;
unicode-range: U+11??, U+2E80-4DBF, U+4E00-9FFF, U+A960-A97F, U+AC00-D7FF,
U+F900-FAFF, U+FE00-FE6F, U+FF00-FFEF, U+1F2??, U+2????;
}
@font-face {
font-family: system-ui-zh-cn;
src: local("PingFangSC-Regular"), local("Source Han Sans CN Regular"),
local("SourceHanSansCN-Regular"), local("Source Han Sans SC Regular"),
local("SourceHanSansSC-Regular"), local("Noto Sans CJK SC Regular"),
local("NotoSansCJKSC-Regular"), local("HiraginoSansGB-W3"),
local("Hiragino Sans GB W3"), local("Microsoft YaHei"),
local("Heiti SC Light"), local("SimHei");
font-weight: 400;
unicode-range: U+11??, U+2E80-4DBF, U+4E00-9FFF, U+A960-A97F, U+AC00-D7FF,
U+F900-FAFF, U+FE00-FE6F, U+FF00-FFEF, U+1F2??, U+2????;
}
@font-face {
font-family: system-ui-zh-cn;
src: local("PingFangSC-Medium"), local("Source Han Sans CN Medium"),
local("SourceHanSansCN-Medium"), local("Source Han Sans SC Medium"),
local("SourceHanSansSC-Medium"), local("Noto Sans CJK SC Medium"),
local("NotoSansCJKSC-Medium"), local("HiraginoSansGB-W3"),
local("Hiragino Sans GB W3"), local("Microsoft YaHei"),
local("Heiti SC Light"), local("SimHei");
font-weight: 500;
unicode-range: U+11??, U+2E80-4DBF, U+4E00-9FFF, U+A960-A97F, U+AC00-D7FF,
U+F900-FAFF, U+FE00-FE6F, U+FF00-FFEF, U+1F2??, U+2????;
}
@font-face {
font-family: system-ui-zh-cn;
src: local("PingFangSC-Semibold"), local("Source Han Sans CN Bold"),
local("SourceHanSansCN-Bold"), local("Source Han Sans SC Bold"),
local("SourceHanSansSC-Bold"), local("Noto Sans CJK SC Bold"),
local("NotoSansCJKSC-Bold"), local("HiraginoSansGB-W6"),
local("Hiragino Sans GB W6"), local("Microsoft YaHei Bold"),
local("Heiti SC Medium"), local("SimHei");
font-weight: 600;
unicode-range: U+11??, U+2E80-4DBF, U+4E00-9FFF, U+A960-A97F, U+AC00-D7FF,
U+F900-FAFF, U+FE00-FE6F, U+FF00-FFEF, U+1F2??, U+2????;
}
/* Safari on macOS/iOS */
@font-face {
font-family: system-ui-zh-cn;
src: local("HelveticaNeue");
unicode-range: U+A0;
}
/* Other browsers on macOS/iOS */
@supports not (-webkit-hyphens: none) {
@font-face {
font-family: system-ui-zh-cn;
src: local("HelveticaNeue");
unicode-range: U+20;
}
}
@font-face {
font-family: system-ui-zh-tw;
src: local("PingFangTC-Light"), local("Source Han Sans TW Light"),
local("SourceHanSansTW-Light"), local("Source Han Sans TC Light"),
local("SourceHanSansTC-Light"), local("Noto Sans CJK TC Light"),
local("NotoSansCJKTC-Light"), local("HiraginoSansTC-W3"),
local("Hiragino Sans TC W3"), local("Microsoft JhengHei Light"),
local("Heiti TC Light"), local("PMingLiU");
font-weight: 300;
unicode-range: U+11??, U+2E80-4DBF, U+4E00-9FFF, U+A960-A97F, U+AC00-D7FF,
U+F900-FAFF, U+FE00-FE6F, U+FF00-FFEF, U+1F2??, U+2????;
}
@font-face {
font-family: system-ui-zh-tw;
src: local("PingFangTC-Regular"), local("Source Han Sans TW Regular"),
local("SourceHanSansTW-Regular"), local("Source Han Sans TC Regular"),
local("SourceHanSansTC-Regular"), local("Noto Sans CJK TC Regular"),
local("NotoSansCJKTC-Regular"), local("HiraginoSansTC-W3"),
local("Hiragino Sans TC W3"), local("Microsoft JhengHei"),
local("Heiti TC Light"), local("PMingLiU");
font-weight: 400;
unicode-range: U+11??, U+2E80-4DBF, U+4E00-9FFF, U+A960-A97F, U+AC00-D7FF,
U+F900-FAFF, U+FE00-FE6F, U+FF00-FFEF, U+1F2??, U+2????;
}
@font-face {
font-family: system-ui-zh-tw;
src: local("PingFangTC-Medium"), local("Source Han Sans TW Medium"),
local("SourceHanSansTW-Medium"), local("Source Han Sans TC Medium"),
local("SourceHanSansTC-Medium"), local("Noto Sans CJK TC Medium"),
local("NotoSansCJKTC-Medium"), local("HiraginoSansTC-W3"),
local("Hiragino Sans TC W3"), local("Microsoft JhengHei"),
local("Heiti TC Light"), local("PMingLiU");
font-weight: 500;
unicode-range: U+11??, U+2E80-4DBF, U+4E00-9FFF, U+A960-A97F, U+AC00-D7FF,
U+F900-FAFF, U+FE00-FE6F, U+FF00-FFEF, U+1F2??, U+2????;
}
@font-face {
font-family: system-ui-zh-tw;
src: local("PingFangTC-Semibold"), local("Source Han Sans TW Bold"),
local("SourceHanSansTW-Bold"), local("Source Han Sans TC Bold"),
local("SourceHanSansTC-Bold"), local("Noto Sans CJK TC Bold"),
local("NotoSansCJKTC-Bold"), local("HiraginoSansTC-W6"),
local("Hiragino Sans TC W6"), local("Microsoft JhengHei Bold"),
local("Heiti TC Medium"), local("PMingLiU");
font-weight: 600;
unicode-range: U+11??, U+2E80-4DBF, U+4E00-9FFF, U+A960-A97F, U+AC00-D7FF,
U+F900-FAFF, U+FE00-FE6F, U+FF00-FFEF, U+1F2??, U+2????;
}
/* Safari on macOS/iOS */
@font-face {
font-family: system-ui-zh-tw;
src: local("HelveticaNeue");
unicode-range: U+A0;
}
/* Other browsers on macOS/iOS */
@supports not (-webkit-hyphens: none) {
@font-face {
font-family: system-ui-zh-tw;
src: local("HelveticaNeue");
unicode-range: U+20;
}
}
@font-face {
font-family: system-ui-zh-hk;
src: local("PingFangHK-Light"), local("Source Han Sans HK Light"),
local("SourceHanSansHK-Light"), local("Source Han Sans HC Light"),
local("SourceHanSansHC-Light"), local("Noto Sans CJK HK Light"),
local("NotoSansCJKHK-Light"), local("Source Han Sans TC Light"),
local("SourceHanSansTC-Light"), local("Noto Sans CJK TC Light"),
local("NotoSansCJKTC-Light"), local("HiraginoSansTC-W3"),
local("Hiragino Sans TC W3"), local("Microsoft JhengHei Light"),
local("Heiti TC Light"), local("PMingLiU_HKSCS"), local("PMingLiU");
font-weight: 300;
unicode-range: U+11??, U+2E80-4DBF, U+4E00-9FFF, U+A960-A97F, U+AC00-D7FF,
U+F900-FAFF, U+FE00-FE6F, U+FF00-FFEF, U+1F2??, U+2????;
}
@font-face {
font-family: system-ui-zh-hk;
src: local("PingFangHK-Regular"), local("Source Han Sans HK Regular"),
local("SourceHanSansHK-Regular"), local("Source Han Sans HC Regular"),
local("SourceHanSansHC-Regular"), local("Noto Sans CJK HK Regular"),
local("NotoSansCJKHK-Regular"), local("Source Han Sans TC Regular"),
local("SourceHanSansTC-Regular"), local("Noto Sans CJK TC Regular"),
local("NotoSansCJKTC-Regular"), local("HiraginoSansTC-W3"),
local("Hiragino Sans TC W3"), local("Microsoft JhengHei"),
local("Heiti TC Light"), local("PMingLiU_HKSCS"), local("PMingLiU");
font-weight: 400;
unicode-range: U+11??, U+2E80-4DBF, U+4E00-9FFF, U+A960-A97F, U+AC00-D7FF,
U+F900-FAFF, U+FE00-FE6F, U+FF00-FFEF, U+1F2??, U+2????;
}
@font-face {
font-family: system-ui-zh-hk;
src: local("PingFangHK-Medium"), local("Source Han Sans HK Medium"),
local("SourceHanSansHK-Medium"), local("Source Han Sans HC Medium"),
local("SourceHanSansHC-Medium"), local("Noto Sans CJK HK Medium"),
local("NotoSansCJKHK-Medium"), local("Source Han Sans TC Medium"),
local("SourceHanSansTC-Medium"), local("Noto Sans CJK TC Medium"),
local("NotoSansCJKTC-Medium"), local("HiraginoSansTC-W3"),
local("Hiragino Sans TC W3"), local("Microsoft JhengHei"),
local("Heiti TC Light"), local("PMingLiU_HKSCS"), local("PMingLiU");
font-weight: 500;
unicode-range: U+11??, U+2E80-4DBF, U+4E00-9FFF, U+A960-A97F, U+AC00-D7FF,
U+F900-FAFF, U+FE00-FE6F, U+FF00-FFEF, U+1F2??, U+2????;
}
@font-face {
font-family: system-ui-zh-hk;
src: local("PingFangHK-Semibold"), local("Source Han Sans HK Bold"),
local("SourceHanSansHK-Bold"), local("Source Han Sans HC Bold"),
local("SourceHanSansHC-Bold"), local("Noto Sans CJK HK Bold"),
local("NotoSansCJKHK-Bold"), local("Source Han Sans TC Bold"),
local("SourceHanSansTC-Bold"), local("Noto Sans CJK TC Bold"),
local("NotoSansCJKTC-Bold"), local("HiraginoSansTC-W6"),
local("Hiragino Sans TC W6"), local("Microsoft JhengHei Bold"),
local("Heiti TC Medium"), local("PMingLiU_HKSCS"), local("PMingLiU");
font-weight: 600;
unicode-range: U+11??, U+2E80-4DBF, U+4E00-9FFF, U+A960-A97F, U+AC00-D7FF,
U+F900-FAFF, U+FE00-FE6F, U+FF00-FFEF, U+1F2??, U+2????;
}
/* Safari on macOS/iOS */
@font-face {
font-family: system-ui-zh-hk;
src: local("HelveticaNeue");
unicode-range: U+A0;
}
/* Other browsers on macOS/iOS */
@supports not (-webkit-hyphens: none) {
@font-face {
font-family: system-ui-zh-hk;
src: local("HelveticaNeue");
unicode-range: U+20;
}
}
@font-face {
font-family: system-ui-ko;
src: local("AppleSDGothicNeo-Light"), local("Source Han Sans KR Light"),
local("SourceHanSansKR-Light"), local("Source Han Sans K Light"),
local("SourceHanSansK-Light"), local("Noto Sans CJK KR Light"),
local("NotoSansCJKKR-Light"), local("NanumBarunGothic Light"),
local("Malgun Gothic Semilight"), local("Nanum Gothic"), local("Dotum");
font-weight: 300;
unicode-range: U+11??, U+2E80-4DBF, U+4E00-9FFF, U+A960-A97F, U+AC00-D7FF,
U+F900-FAFF, U+FE00-FE6F, U+FF00-FFEF, U+1F2??, U+2????;
}
@font-face {
font-family: system-ui-ko;
src: local("AppleSDGothicNeo-Regular"), local("Source Han Sans KR Regular"),
local("SourceHanSansKR-Regular"), local("Source Han Sans K Regular"),
local("SourceHanSansK-Regular"), local("Noto Sans CJK KR Regular"),
local("NotoSansCJKKR-Regular"), local("NanumBarunGothic"),
local("Malgun Gothic"), local("Nanum Gothic"), local("Dotum");
font-weight: 400;
unicode-range: U+11??, U+2E80-4DBF, U+4E00-9FFF, U+A960-A97F, U+AC00-D7FF,
U+F900-FAFF, U+FE00-FE6F, U+FF00-FFEF, U+1F2??, U+2????;
}
@font-face {
font-family: system-ui-ko;
src: local("AppleSDGothicNeo-Medium"), local("Source Han Sans KR Medium"),
local("SourceHanSansKR-Medium"), local("Source Han Sans K Medium"),
local("SourceHanSansK-Medium"), local("Noto Sans CJK KR Medium"),
local("NotoSansCJKKR-Medium"), local("NanumBarunGothic"),
local("Malgun Gothic"), local("Nanum Gothic"), local("Dotum");
font-weight: 500;
unicode-range: U+11??, U+2E80-4DBF, U+4E00-9FFF, U+A960-A97F, U+AC00-D7FF,
U+F900-FAFF, U+FE00-FE6F, U+FF00-FFEF, U+1F2??, U+2????;
}
@font-face {
font-family: system-ui-ko;
src: local("AppleSDGothicNeo-SemiBold"), local("Source Han Sans KR Bold"),
local("SourceHanSansKR-Bold"), local("Source Han Sans K Bold"),
local("SourceHanSansK-Bold"), local("Noto Sans CJK KR Bold"),
local("NotoSansCJKKR-Bold"), local("NanumBarunGothic Bold"),
local("Malgun Gothic Bold"), local("Nanum Gothic Bold"), local("Dotum");
font-weight: 600;
unicode-range: U+11??, U+2E80-4DBF, U+4E00-9FFF, U+A960-A97F, U+AC00-D7FF,
U+F900-FAFF, U+FE00-FE6F, U+FF00-FFEF, U+1F2??, U+2????;
}
/* Safari on macOS/iOS */
@font-face {
font-family: system-ui-ko;
src: local("HelveticaNeue");
unicode-range: U+A0;
}
/* Other browsers on macOS/iOS */
@supports not (-webkit-hyphens: none) {
@font-face {
font-family: system-ui-ko;
src: local("HelveticaNeue");
unicode-range: U+20;
}
}

489
web_src/css/form.css Normal file
View File

@@ -0,0 +1,489 @@
.ui.input textarea,
.ui.form textarea,
.ui.form input:not([type]),
.ui.form input[type="date"],
.ui.form input[type="datetime-local"],
.ui.form input[type="email"],
.ui.form input[type="number"],
.ui.form input[type="password"],
.ui.form input[type="search"],
.ui.form input[type="tel"],
.ui.form input[type="time"],
.ui.form input[type="text"],
.ui.form input[type="file"],
.ui.form input[type="url"] {
transition: none;
}
input,
textarea,
.ui.input > input,
.ui.form input:not([type]),
.ui.form select,
.ui.form textarea,
.ui.form input[type="date"],
.ui.form input[type="datetime-local"],
.ui.form input[type="email"],
.ui.form input[type="file"],
.ui.form input[type="number"],
.ui.form input[type="password"],
.ui.form input[type="search"],
.ui.form input[type="tel"],
.ui.form input[type="text"],
.ui.form input[type="time"],
.ui.form input[type="url"],
.ui.selection.dropdown {
background: var(--color-input-background);
border-color: var(--color-input-border);
color: var(--color-input-text);
}
/* fix fomantic small dropdown having inconsistent padding with input */
.ui.small.selection.dropdown {
padding: .67857143em 1.6em .67857143em 1em;
}
input:hover,
textarea:hover,
.ui.input input:hover,
.ui.form input:not([type]):hover,
.ui.form select:hover,
.ui.form textarea:hover,
.ui.form input[type="date"]:hover,
.ui.form input[type="datetime-local"]:hover,
.ui.form input[type="email"]:hover,
.ui.form input[type="file"]:hover,
.ui.form input[type="number"]:hover,
.ui.form input[type="password"]:hover,
.ui.form input[type="search"]:hover,
.ui.form input[type="tel"]:hover,
.ui.form input[type="text"]:hover,
.ui.form input[type="time"]:hover,
.ui.form input[type="url"]:hover,
.ui.selection.dropdown:hover {
background: var(--color-input-background);
border-color: var(--color-input-border-hover);
color: var(--color-input-text);
}
input:focus,
textarea:focus,
.ui.input input:focus,
.ui.form input:not([type]):focus,
.ui.form select:focus,
.ui.form textarea:focus,
.ui.form input[type="date"]:focus,
.ui.form input[type="datetime-local"]:focus,
.ui.form input[type="email"]:focus,
.ui.form input[type="file"]:focus,
.ui.form input[type="number"]:focus,
.ui.form input[type="password"]:focus,
.ui.form input[type="search"]:focus,
.ui.form input[type="tel"]:focus,
.ui.form input[type="text"]:focus,
.ui.form input[type="time"]:focus,
.ui.form input[type="url"]:focus,
.ui.selection.dropdown:focus {
background: var(--color-input-background);
border-color: var(--color-primary);
color: var(--color-input-text);
}
.ui.form .field > label,
.ui.form .inline.fields > label,
.ui.form .inline.fields .field > label,
.ui.form .inline.fields .field > p,
.ui.form .inline.field > label,
.ui.form .inline.field > p {
color: var(--color-text);
}
.ui.form .required.fields:not(.grouped) > .field > label::after,
.ui.form .required.fields.grouped > label::after,
.ui.form .required.field > label::after,
.ui.form label.required::after {
color: var(--color-red);
}
.ui.input {
color: var(--color-input-text);
}
/* match <select> padding to <input> */
.ui.form select {
padding: 0.67857143em 1em;
}
.form .help {
color: var(--color-secondary-dark-5);
padding-bottom: 0.6em;
display: inline-block;
}
#create-page-form form {
margin: auto;
}
#create-page-form form .ui.message {
text-align: center;
}
@media (min-width: 768px) {
#create-page-form form {
width: 800px !important;
}
#create-page-form form .header {
padding-left: 280px !important;
}
#create-page-form form .inline.field > label {
text-align: right;
width: 250px !important;
word-wrap: break-word;
}
#create-page-form form .help {
margin-left: 265px !important;
}
#create-page-form form .optional .title {
margin-left: 250px !important;
}
#create-page-form form .inline.field > input,
#create-page-form form .inline.field > textarea {
width: 50%;
}
}
@media (max-width: 767.98px) {
#create-page-form form .optional .title {
margin-left: 15px;
}
#create-page-form form .inline.field > label {
display: block;
}
}
.m-captcha-style {
width: 100%;
height: 5em;
vertical-align: middle;
display: inline-block;
}
@media (min-width: 768px) {
.g-recaptcha-style,
.h-captcha-style {
margin: 0 auto !important;
width: 304px;
padding-left: 30px;
}
.g-recaptcha-style iframe,
.h-captcha-style iframe {
border-radius: var(--border-radius) !important;
width: 302px !important;
height: 76px !important;
}
.m-captcha-style {
width: 50%;
}
}
@media (max-height: 575px) {
#rc-imageselect,
.g-recaptcha-style,
.h-captcha-style {
transform: scale(0.77);
transform-origin: 0 0;
}
}
.user.forgot.password form,
.user.reset.password form,
.user.signup form {
margin: auto;
width: 700px !important;
}
.user.activate form .ui.message,
.user.forgot.password form .ui.message,
.user.reset.password form .ui.message,
.user.link-account form .ui.message,
.user.signin form .ui.message,
.user.signup form .ui.message {
text-align: center;
}
@media (min-width: 768px) {
.user.activate form,
.user.forgot.password form,
.user.reset.password form,
.user.link-account form,
.user.signin form,
.user.signup form {
width: 800px !important;
}
.user.activate form .header,
.user.forgot.password form .header,
.user.reset.password form .header,
.user.link-account form .header,
.user.signin form .header,
.user.signup form .header {
padding-left: 280px !important;
}
.user.activate form .inline.field > label {
text-align: right;
width: 250px !important;
word-wrap: break-word;
}
.user.activate form .help,
.user.forgot.password form .help,
.user.reset.password form .help,
.user.link-account form .help,
.user.signin form .help,
.user.signup form .help {
margin-left: 265px !important;
}
.user.activate form .optional .title,
.user.forgot.password form .optional .title,
.user.reset.password form .optional .title,
.user.link-account form .optional .title,
.user.signin form .optional .title,
.user.signup form .optional .title {
margin-left: 250px !important;
}
}
@media (max-width: 767.98px) {
.user.activate form .optional .title,
.user.forgot.password form .optional .title,
.user.reset.password form .optional .title,
.user.link-account form .optional .title,
.user.signin form .optional .title,
.user.signup form .optional .title {
margin-left: 15px;
}
.user.activate form .inline.field > label,
.user.forgot.password form .inline.field > label,
.user.reset.password form .inline.field > label,
.user.link-account form .inline.field > label,
.user.signin form .inline.field > label,
.user.signup form .inline.field > label {
display: block;
}
}
.user.activate form .header,
.user.forgot.password form .header,
.user.reset.password form .header,
.user.link-account form .header,
.user.signin form .header,
.user.signup form .header {
padding-left: 0 !important;
text-align: center;
}
.user.activate form .inline.field > label,
.user.forgot.password form .inline.field > label,
.user.reset.password form .inline.field > label,
.user.link-account form .inline.field > label,
.user.signin form .inline.field > label,
.user.signup form .inline.field > label {
width: 200px;
}
@media (max-width: 767.98px) {
.user.activate form .inline.field > label,
.user.forgot.password form .inline.field > label,
.user.reset.password form .inline.field > label,
.user.link-account form .inline.field > label,
.user.signin form .inline.field > label,
.user.signup form .inline.field > label {
width: 100% !important;
}
}
.user.activate form input[type="number"],
.user.forgot.password form input[type="number"],
.user.reset.password form input[type="number"],
.user.link-account form input[type="number"],
.user.signin form input[type="number"],
.user.signup form input[type="number"] {
-moz-appearance: textfield;
}
.user.activate form input::-webkit-outer-spin-button,
.user.forgot.password form input::-webkit-outer-spin-button,
.user.reset.password form input::-webkit-outer-spin-button,
.user.link-account form input::-webkit-outer-spin-button,
.user.signin form input::-webkit-outer-spin-button,
.user.signup form input::-webkit-outer-spin-button,
.user.activate form input::-webkit-inner-spin-button,
.user.forgot.password form input::-webkit-inner-spin-button,
.user.reset.password form input::-webkit-inner-spin-button,
.user.link-account form input::-webkit-inner-spin-button,
.user.signin form input::-webkit-inner-spin-button,
.user.signup form input::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
.repository.new.repo form,
.repository.new.migrate form,
.repository.new.fork form {
margin: auto;
}
.repository.new.repo form .ui.message,
.repository.new.migrate form .ui.message,
.repository.new.fork form .ui.message {
text-align: center;
}
@media (min-width: 768px) {
.repository.new.repo form,
.repository.new.migrate form,
.repository.new.fork form {
width: 800px !important;
}
.repository.new.repo form .header,
.repository.new.migrate form .header,
.repository.new.fork form .header {
padding-left: 280px !important;
}
.repository.new.repo form .inline.field > label,
.repository.new.migrate form .inline.field > label,
.repository.new.fork form .inline.field > label {
text-align: right;
width: 250px !important;
word-wrap: break-word;
}
.repository.new.repo form .help,
.repository.new.migrate form .help,
.repository.new.fork form .help {
margin-left: 265px !important;
}
.repository.new.repo form .optional .title,
.repository.new.migrate form .optional .title,
.repository.new.fork form .optional .title {
margin-left: 250px !important;
}
.repository.new.repo form .inline.field > input,
.repository.new.migrate form .inline.field > input,
.repository.new.fork form .inline.field > input,
.repository.new.repo form .inline.field > textarea,
.repository.new.migrate form .inline.field > textarea,
.repository.new.fork form .inline.field > textarea {
width: 50%;
}
}
@media (max-width: 767.98px) {
.repository.new.repo form .optional .title,
.repository.new.migrate form .optional .title,
.repository.new.fork form .optional .title {
margin-left: 15px;
}
.repository.new.repo form .inline.field > label,
.repository.new.migrate form .inline.field > label,
.repository.new.fork form .inline.field > label {
display: block;
}
}
.repository.new.repo form .dropdown .text,
.repository.new.migrate form .dropdown .text,
.repository.new.fork form .dropdown .text {
margin-right: 0 !important;
}
.repository.new.repo form .header,
.repository.new.migrate form .header,
.repository.new.fork form .header {
padding-left: 0 !important;
text-align: center;
}
.repository.new.repo form .selection.dropdown,
.repository.new.migrate form .selection.dropdown,
.repository.new.fork form .selection.dropdown,
.repository.new.fork form .field a {
vertical-align: middle;
width: 50% !important;
}
@media (max-width: 767.98px) {
.repository.new.repo form label,
.repository.new.migrate form label,
.repository.new.fork form label,
.repository.new.repo form .inline.field > input,
.repository.new.migrate form .inline.field > input,
.repository.new.fork form .inline.field > input,
.repository.new.fork form .field a,
.repository.new.repo form .selection.dropdown,
.repository.new.migrate form .selection.dropdown,
.repository.new.fork form .selection.dropdown {
width: 100% !important;
}
.repository.new.repo form .field button,
.repository.new.migrate form .field button,
.repository.new.fork form .field button,
.repository.new.repo form .field a,
.repository.new.migrate form .field a {
margin-bottom: 1em;
width: 100%;
}
}
@media (min-width: 768px) {
.repository.new.repo .ui.form #auto-init {
margin-left: 265px !important;
}
}
.repository.new.repo .ui.form .selection.dropdown:not(.owner) {
width: 50% !important;
}
@media (max-width: 767.98px) {
.repository.new.repo .ui.form .selection.dropdown:not(.owner) {
width: 100% !important;
}
}
/* form fields with additional content besides their label, used on login form
* use like <div class="field"><label/><a/><input/></div> */
.form-field-content-aside-label {
display: grid;
grid-template-columns: 1fr 1fr;
}
.form-field-content-aside-label > *:nth-child(2) {
text-align: right;
}
.form-field-content-aside-label input {
grid-column: span 2;
}
.ui.form .field > .selection.dropdown {
min-width: 14em; /* matches the default min width */
}
.new.webhook form .help {
margin-left: 25px;
}
.new.webhook .events.fields .column {
padding-left: 40px;
}
.githook textarea {
font-family: var(--fonts-monospace);
}
@media (max-width: 767.98px) {
.new.org .ui.form .field button,
.new.org .ui.form .field a {
margin-bottom: 1em;
width: 100%;
}
.new.org .ui.form .field input:not([type="checkbox"], [type="radio"]) {
width: 100% !important;
}
}

60
web_src/css/helpers.css Normal file
View File

@@ -0,0 +1,60 @@
/*
Gitea's tailwind-style CSS helper classes have `gt-` prefix.
Gitea's private styles use `g-` prefix.
*/
.gt-ellipsis {
overflow: hidden !important;
white-space: nowrap !important;
text-overflow: ellipsis !important;
}
.g-table-auto-ellipsis td.auto-ellipsis {
position: relative;
}
.g-table-auto-ellipsis td.auto-ellipsis span {
position: absolute;
inset: 0;
padding: inherit;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.interact-fg { color: inherit !important; }
.interact-fg:hover { color: var(--color-primary) !important; }
.interact-fg:active { color: var(--color-primary-active) !important; }
.interact-bg { background: transparent !important; }
.interact-bg:hover { background: var(--color-hover) !important; }
.interact-bg:active { background: var(--color-active) !important; }
@media (max-width: 767.98px) {
/* double selector so it wins over .tw-flex (old .gt-df) etc */
.not-mobile.not-mobile {
display: none !important;
}
}
@media (min-width: 767.98px) {
.only-mobile.only-mobile {
display: none !important;
}
}
.tab-size-1 { tab-size: 1 !important; }
.tab-size-2 { tab-size: 2 !important; }
.tab-size-3 { tab-size: 3 !important; }
.tab-size-4 { tab-size: 4 !important; }
.tab-size-5 { tab-size: 5 !important; }
.tab-size-6 { tab-size: 6 !important; }
.tab-size-7 { tab-size: 7 !important; }
.tab-size-8 { tab-size: 8 !important; }
.tab-size-9 { tab-size: 9 !important; }
.tab-size-10 { tab-size: 10 !important; }
.tab-size-11 { tab-size: 11 !important; }
.tab-size-12 { tab-size: 12 !important; }
.tab-size-13 { tab-size: 13 !important; }
.tab-size-14 { tab-size: 14 !important; }
.tab-size-15 { tab-size: 15 !important; }
.tab-size-16 { tab-size: 16 !important; }

87
web_src/css/home.css Normal file
View File

@@ -0,0 +1,87 @@
.home .logo {
max-width: 220px;
}
@media (max-width: 767.98px) {
.home .hero h1 {
font-size: 3.5em;
}
.home .hero h2 {
font-size: 2em;
}
}
@media (min-width: 768px) {
.home .hero h1 {
font-size: 5.5em;
}
.home .hero h2 {
font-size: 3em;
}
}
.home .hero .svg {
color: var(--color-green);
height: 40px;
width: 50px;
vertical-align: bottom;
}
.home .hero.header {
font-size: 20px;
}
.home p.large {
font-size: 16px;
}
.home .stackable {
padding-top: 30px;
}
.home a {
color: var(--color-green);
}
.page-footer {
display: flex;
justify-content: space-between;
background-color: var(--color-footer);
border-top: 1px solid var(--color-secondary);
padding: 8px 20px;
}
.page-footer .left-links {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
gap: 0.25em;
}
.page-footer .right-links {
min-width: 180px; /* make sure the menu dropdown doesn't overflow horizontally when language name is short */
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
}
.page-footer .right-links > a {
border-left: 1px solid var(--color-secondary-dark-1);
padding-left: 8px;
margin-left: 5px;
}
.page-footer .ui.dropdown .menu.language-menu {
max-height: min(500px, calc(100vh - 60px));
overflow-y: auto;
margin-bottom: 10px;
}
@media (max-width: 880px) {
.page-footer {
flex-direction: column;
gap: 0.5em;
}
}

86
web_src/css/index.css Normal file
View File

@@ -0,0 +1,86 @@
@import "./modules/normalize.css";
@import "./modules/animations.css";
/* fomantic replacements */
@import "./modules/button.css";
@import "./modules/container.css";
@import "./modules/divider.css";
@import "./modules/header.css";
@import "./modules/input.css";
@import "./modules/label.css";
@import "./modules/list.css";
@import "./modules/segment.css";
@import "./modules/grid.css";
@import "./modules/menu.css";
@import "./modules/message.css";
@import "./modules/table.css";
@import "./modules/card.css";
@import "./modules/checkbox.css";
@import "./modules/dimmer.css";
@import "./modules/modal.css";
@import "./modules/select.css";
@import "./modules/tippy.css";
@import "./modules/breadcrumb.css";
@import "./modules/comment.css";
@import "./modules/navbar.css";
@import "./modules/toast.css";
@import "./modules/svg.css";
@import "./modules/flexcontainer.css";
@import "./shared/flex-list.css";
@import "./shared/milestone.css";
@import "./shared/repoorg.css";
@import "./shared/settings.css";
@import "./features/dropzone.css";
@import "./features/gitgraph.css";
@import "./features/heatmap.css";
@import "./features/imagediff.css";
@import "./features/codeeditor.css";
@import "./features/projects.css";
@import "./features/tribute.css";
@import "./features/cropper.css";
@import "./features/console.css";
@import "./markup/content.css";
@import "./markup/codecopy.css";
@import "./markup/codepreview.css";
@import "./markup/asciicast.css";
@import "./chroma/base.css";
@import "./codemirror/base.css";
@import "./font_i18n.css";
@import "./base.css";
@import "./home.css";
@import "./install.css";
@import "./form.css";
@import "./repo.css";
@import "./repo/release-tag.css";
@import "./repo/issue-card.css";
@import "./repo/issue-label.css";
@import "./repo/issue-list.css";
@import "./repo/list-header.css";
@import "./repo/linebutton.css";
@import "./repo/wiki.css";
@import "./repo/header.css";
@import "./repo/home.css";
@import "./repo/home-file-list.css";
@import "./repo/reactions.css";
@import "./repo/clone.css";
@import "./repo/commit-sign.css";
@import "./editor/fileeditor.css";
@import "./editor/combomarkdowneditor.css";
@import "./org.css";
@import "./user.css";
@import "./dashboard.css";
@import "./admin.css";
@import "./explore.css";
@import "./review.css";
@import "./actions.css";
@tailwind utilities;
@import "./helpers.css";

55
web_src/css/install.css Normal file
View File

@@ -0,0 +1,55 @@
.page-content.install .install-config-container {
max-width: 900px;
margin: auto;
}
.page-content.install form.ui.form .inline.field > label {
text-align: right;
width: 30%;
padding-right: 10px;
margin-right: 0;
}
.page-content.install .ui.form .field > .help,
.page-content.install .ui.form .field > .ui.checkbox:first-child,
.page-content.install .ui.form .field > .right-content {
margin-left: calc(30% + 5px);
width: auto;
}
.page-content.install form.ui.form input:not([type="checkbox"],[type="radio"]),
.page-content.install form.ui.form .ui.selection.dropdown {
width: 60%;
}
.page-content.install form.ui.form details.optional.field[open] {
padding-bottom: 10px;
}
.page-content.install form.ui.form details.optional.field[open]:not(:last-child) {
border-bottom: 1px dashed var(--color-secondary);
}
.page-content.install form.ui.form details.optional.field[open] summary {
margin-bottom: 10px;
}
.page-content.install form.ui.form details.optional.field * {
box-sizing: border-box;
}
.page-content.install form.ui.form .field {
text-align: left;
}
.page-content.install .ui .reinstall-message {
width: 70%;
margin: 20px auto;
color: var(--color-red);
text-align: left;
font-weight: var(--font-weight-semibold);
}
.page-content.install .ui .reinstall-confirm {
width: 70%;
text-align: left;
margin: 10px auto;
}

View File

@@ -0,0 +1,8 @@
.asciinema-player-container {
width: 100%;
height: auto;
}
.ap-terminal {
overflow: hidden !important;
}

View File

@@ -0,0 +1,35 @@
.markup .code-block,
.markup .mermaid-block {
position: relative;
}
.markup .code-copy {
position: absolute;
top: 8px;
right: 6px;
padding: 9px;
visibility: hidden;
animation: fadeout 0.2s both;
}
/* adjustments for comment content having only 14px font size */
.repository.view.issue .comment-list .comment .markup .code-copy {
right: 5px;
padding: 8px;
}
/* can not use regular transparent button colors for hover and active states because
we need opaque colors here as code can appear behind the button */
.markup .code-copy:hover {
background: var(--color-secondary) !important;
}
.markup .code-copy:active {
background: var(--color-secondary-dark-1) !important;
}
.markup .code-block:hover .code-copy,
.markup .mermaid-block:hover .code-copy {
visibility: visible;
animation: fadein 0.2s both;
}

View File

@@ -0,0 +1,36 @@
.markup .code-preview-container {
border: 1px solid var(--color-secondary);
border-radius: var(--border-radius);
margin: 0.25em 0;
}
.markup .code-preview-container .code-preview-header {
border-bottom: 1px solid var(--color-secondary);
padding: 0.5em;
font-size: 12px;
}
.markup .code-preview-container table {
width: 100%;
max-height: 240px; /* 12 lines at 20px per line */
overflow-y: auto;
margin: 0; /* override ".markup table {margin}" */
}
/* workaround to hide empty p before container - more details are in "html_codepreview.go" */
.markup p:empty:has(+ .code-preview-container) {
display: none;
}
/* override the polluted styles from the content.css: ".markup table ..." */
.markup .code-preview-container table tr {
border: 0 !important;
}
.markup .code-preview-container table th,
.markup .code-preview-container table td {
border: 0 !important;
padding: 0 0 0 5px !important;
}
.markup .code-preview-container table tr:nth-child(2n) {
background: none !important;
}

View File

@@ -0,0 +1,588 @@
.markup {
overflow: hidden;
font-size: 16px;
line-height: 1.5 !important;
overflow-wrap: break-word;
}
.conversation-holder .markup {
overflow-wrap: anywhere; /* prevent overflow in code comments. TODO: properly restrict .conversation-holder width and remove this */
}
.markup > *:first-child {
margin-top: 0 !important;
}
.markup > *:last-child {
margin-bottom: 0 !important;
}
.markup a:not([href]) {
color: inherit;
text-decoration: none;
}
.markup .absent {
color: var(--color-red);
}
.markup .anchor {
float: left;
padding-right: 4px;
margin-left: -20px;
color: inherit;
}
.markup .anchor .svg {
vertical-align: middle;
}
.markup .anchor:focus {
outline: none;
}
.markup h1 .anchor {
margin-top: -2px; /* re-align to center */
}
.markup h1 .anchor .svg,
.markup h2 .anchor .svg,
.markup h3 .anchor .svg,
.markup h4 .anchor .svg,
.markup h5 .anchor .svg,
.markup h6 .anchor .svg {
visibility: hidden;
}
.markup h1:hover .anchor .svg,
.markup h2:hover .anchor .svg,
.markup h3:hover .anchor .svg,
.markup h4:hover .anchor .svg,
.markup h5:hover .anchor .svg,
.markup h6:hover .anchor .svg {
visibility: visible;
}
.markup h2 .anchor .svg,
.markup h3 .anchor .svg,
.markup h4 .anchor .svg {
position: relative;
top: -2px;
}
.markup h1,
.markup h2,
.markup h3,
.markup h4,
.markup h5,
.markup h6 {
margin-top: 24px;
margin-bottom: 16px;
font-weight: var(--font-weight-semibold);
line-height: 1.25;
}
.markup h1 tt,
.markup h1 code,
.markup h2 tt,
.markup h2 code,
.markup h3 tt,
.markup h3 code,
.markup h4 tt,
.markup h4 code,
.markup h5 tt,
.markup h5 code,
.markup h6 tt,
.markup h6 code {
font-size: inherit;
}
.markup h1 {
padding-bottom: 0.3em;
font-size: 2em;
border-bottom: 1px solid var(--color-secondary);
}
.markup h2 {
padding-bottom: 0.3em;
font-size: 1.5em;
border-bottom: 1px solid var(--color-secondary);
}
.markup h3 {
font-size: 1.25em;
}
.markup h4 {
font-size: 1em;
}
.markup h5 {
font-size: 0.875em;
}
.markup h6 {
font-size: 0.85em;
color: var(--color-text-light-2);
}
.markup p,
.markup blockquote,
.markup details,
.markup ul,
.markup ol,
.markup dl,
.markup table,
.markup pre {
margin-top: 0;
margin-bottom: 16px;
}
.markup hr {
height: 4px;
padding: 0;
margin: 16px 0;
background-color: var(--color-secondary);
border: 0;
}
.markup ul,
.markup ol {
padding-left: 2em;
}
.markup ul.no-list,
.markup ol.no-list {
padding: 0;
list-style-type: none;
}
.markup .task-list-item {
list-style-type: none;
}
.markup .task-list-item p + ul {
margin-top: 16px;
}
.markup .task-list-item input[type="checkbox"] {
margin: 0 .3em .25em -1.4em;
vertical-align: middle;
padding: 0;
}
.markup .task-list-item input[type="checkbox"] + p {
margin-left: -0.2em;
display: inline;
}
.markup .task-list-item > p {
margin-inline: 16px;
}
.markup .task-list-item + .task-list-item {
margin-top: 4px;
}
.markup input[type="checkbox"] {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
position: relative;
border: 1px solid var(--color-secondary);
border-radius: var(--border-radius);
background: var(--color-input-background);
height: 14px;
width: 14px;
opacity: 1 !important; /* override fomantic on edit preview */
pointer-events: auto !important; /* override fomantic on edit preview */
vertical-align: middle !important; /* override fomantic on edit preview */
-webkit-print-color-adjust: exact;
color-adjust: exact;
}
.markup input[type="checkbox"]:not([disabled]):hover,
.markup input[type="checkbox"]:not([disabled]):active {
border-color: var(--color-primary);
}
.markup input[type="checkbox"]::after {
position: absolute;
inset: 0;
pointer-events: none;
background: var(--color-text);
mask-size: cover;
-webkit-mask-size: cover;
}
.markup input[type="checkbox"]:checked::after {
content: "";
mask-image: var(--checkbox-mask-checked);
-webkit-mask-image: var(--checkbox-mask-checked);
-webkit-print-color-adjust: exact;
color-adjust: exact;
}
.markup input[type="checkbox"]:indeterminate::after {
content: "";
mask-image: var(--checkbox-mask-indeterminate);
-webkit-mask-image: var(--checkbox-mask-indeterminate);
}
.markup ul ul,
.markup ul ol,
.markup ol ol,
.markup ol ul {
margin-top: 0;
margin-bottom: 0;
}
.markup ol ol,
.markup ul ol {
list-style-type: lower-roman;
}
.markup li > p {
margin-top: 16px;
}
.markup li + li {
margin-top: 0.25em;
}
.markup dl {
padding: 0;
}
.markup dl dt {
padding: 0;
margin-top: 16px;
font-size: 1em;
font-style: italic;
font-weight: var(--font-weight-semibold);
}
.markup dl dd {
padding: 0 16px;
margin-bottom: 16px;
}
.markup blockquote {
margin-left: 0;
padding: 0 15px;
color: var(--color-text-light-2);
border-left: 0.25em solid var(--color-secondary);
}
.markup blockquote > :first-child {
margin-top: 0;
}
.markup blockquote > :last-child {
margin-bottom: 0;
}
.markup table {
display: block;
width: 100%;
width: max-content;
max-width: 100%;
overflow: auto;
}
.markup table th {
font-weight: var(--font-weight-semibold);
}
.markup table th,
.markup table td {
padding: 6px 13px !important;
border: 1px solid var(--color-secondary) !important;
}
.markup table tr {
border-top: 1px solid var(--color-secondary);
}
.markup table tr:nth-child(2n) {
background-color: var(--color-markup-table-row);
}
.markup img,
.markup video {
max-width: 100%;
box-sizing: initial;
}
/* this background ensures images can break <hr>. We can only do this on
cases where the background is known and not transparent. */
.markup.file-view img,
.markup.file-view video,
.comment-body .markup img, /* regular comment */
.comment-body .markup video,
.comment-content .markup img, /* code comment */
.comment-content .markup video,
.wiki .markup img,
.wiki .markup video {
background: var(--color-box-body);
}
.markup img[align="right"],
.markup video[align="right"] {
padding-left: 20px;
}
.markup img[align="left"],
.markup video[align="left"] {
padding-right: 28px;
}
.markup .emoji {
max-width: none;
vertical-align: text-top;
}
.markup span.frame {
display: block;
overflow: hidden;
}
.markup span.frame > span {
display: block;
float: left;
width: auto;
padding: 7px;
margin: 13px 0 0;
overflow: hidden;
border: 1px solid var(--color-secondary);
}
.markup span.frame span img,
.markup span.frame span video {
display: block;
float: left;
}
.markup span.frame span span {
display: block;
padding: 5px 0 0;
clear: both;
color: var(--color-text);
}
.markup span.align-center {
display: block;
overflow: hidden;
clear: both;
}
.markup span.align-center > span {
display: block;
margin: 13px auto 0;
overflow: hidden;
text-align: center;
}
.markup span.align-center span img,
.markup span.align-center span video {
margin: 0 auto;
text-align: center;
}
.markup span.align-right {
display: block;
overflow: hidden;
clear: both;
}
.markup span.align-right > span {
display: block;
margin: 13px 0 0;
overflow: hidden;
text-align: right;
}
.markup span.align-right span img,
.markup span.align-right span video {
margin: 0;
text-align: right;
}
.markup span.float-left {
display: block;
float: left;
margin-right: 13px;
overflow: hidden;
}
.markup span.float-left span {
margin: 13px 0 0;
}
.markup span.float-right {
display: block;
float: right;
margin-left: 13px;
overflow: hidden;
}
.markup span.float-right > span {
display: block;
margin: 13px auto 0;
overflow: hidden;
text-align: right;
}
.markup code,
.markup tt {
padding: 0.2em 0.4em;
margin: 0;
font-size: 85%;
white-space: break-spaces;
background-color: var(--color-markup-code-inline);
border-radius: var(--border-radius);
}
.markup code br,
.markup tt br {
display: none;
}
.markup del code {
text-decoration: inherit;
}
.markup pre > code {
padding: 0;
margin: 0;
font-size: 100%;
white-space: pre-wrap;
word-break: break-all;
overflow-wrap: break-word;
background: transparent;
border: 0;
}
.markup .highlight {
margin-bottom: 16px;
}
.markup .highlight pre,
.markup pre {
padding: 16px;
font-size: 85%;
line-height: 1.45;
background-color: var(--color-markup-code-block);
border-radius: var(--border-radius);
}
.markup .highlight pre {
margin-bottom: 0;
word-break: normal;
}
.markup pre {
word-wrap: normal;
}
.markup pre code,
.markup pre tt {
display: inline;
padding: 0;
line-height: inherit;
word-wrap: normal;
background-color: transparent;
border: 0;
}
.markup pre code::before,
.markup pre code::after,
.markup pre tt::before,
.markup pre tt::after {
content: normal;
}
.markup kbd {
display: inline-block;
padding: 3px 5px;
font-size: 11px;
line-height: 10px;
color: var(--color-text-light);
vertical-align: middle;
background-color: var(--color-markup-code-inline);
border: 1px solid var(--color-secondary);
border-radius: var(--border-radius);
box-shadow: inset 0 -1px 0 var(--color-secondary);
}
.markup .ui.list .list,
.markup ol.ui.list ol,
.markup ul.ui.list ul {
padding-left: 2em;
}
.file-revisions-btn {
display: block;
float: left;
margin-bottom: 2px !important;
padding: 11px !important;
margin-right: 10px !important;
}
.file-revisions-btn i {
-webkit-touch-callout: none;
-webkit-user-select: none;
user-select: none;
}
.markup-render {
display: block;
border: none;
width: 100%;
height: var(--height-loading); /* actual height is set in JS after loading */
overflow: hidden;
color-scheme: normal; /* match the value inside the iframe to allow it to become transparent */
}
.markup-block-error {
display: block !important; /* override fomantic .ui.form .error.message {display: none} */
border: none !important;
margin-bottom: 0 !important;
border-bottom-left-radius: 0 !important;
border-bottom-right-radius: 0 !important;
box-shadow: none !important;
font-size: 85% !important;
white-space: pre-wrap !important;
padding: 0.5rem 1rem !important;
text-align: left !important;
}
.markup-block-error + pre {
border-top: none !important;
margin-top: 0 !important;
border-top-left-radius: 0 !important;
border-top-right-radius: 0 !important;
}
.file-view.markup.orgmode li.unchecked::before {
content: "[ ] ";
}
.file-view.markup.orgmode li.checked::before {
content: "[x] ";
}
.file-view.markup.orgmode li.indeterminate::before {
content: "[-] ";
}
/* This is only needed for <p> because they are literally acting as paragraphs,
* and thus having an ::before on the same line would force the paragraph to
* move to the next line. This can be avoided by an inline-block display that
* avoids that property while still having the other properties of the block
* display. */
.file-view.markup.orgmode li.unchecked > p,
.file-view.markup.orgmode li.checked > p,
.file-view.markup.orgmode li.indeterminate > p {
display: inline-block;
}

View File

@@ -0,0 +1,118 @@
@keyframes isloadingspin {
0% { transform: translate(-50%, -50%) rotate(0deg); }
100% { transform: translate(-50%, -50%) rotate(360deg); }
}
.is-loading {
pointer-events: none !important;
position: relative !important;
}
.is-loading > * {
opacity: 0.3;
}
.btn.is-loading > *,
.button.is-loading > * {
opacity: 0;
}
.is-loading::after {
content: "";
position: absolute;
display: block;
left: 50%;
top: 50%;
height: min(4em, 66.6%);
width: fit-content; /* compat: safari - https://bugs.webkit.org/show_bug.cgi?id=267625 */
aspect-ratio: 1;
transform: translate(-50%, -50%);
animation: isloadingspin 1000ms infinite linear;
border-width: 4px;
border-style: solid;
border-color: var(--color-secondary) var(--color-secondary) var(--color-secondary-dark-8) var(--color-secondary-dark-8);
border-radius: var(--border-radius-full);
}
.is-loading.loading-icon-2px::after {
border-width: 2px;
}
.is-loading.loading-icon-3px::after {
border-width: 3px;
}
/* for single form button, the loading state should be on the button, but not go semi-transparent, just replace the text on the button with the loader. */
form.single-button-form.is-loading > * {
opacity: 1;
}
form.single-button-form.is-loading .button {
color: transparent;
}
.markup pre.is-loading,
.editor-loading.is-loading,
.pdf-content.is-loading {
height: var(--height-loading);
}
.markup .is-loading > * {
visibility: hidden;
}
.markup .is-loading {
color: transparent;
background: transparent;
}
/* TODO: not needed, use "is-loading loading-icon-2px" instead */
code.language-math.is-loading::after {
padding: 0;
border-width: 2px;
width: 1.25rem;
height: 1.25rem;
}
@keyframes fadein {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes fadeout {
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}
/* 1p5 means 1-point-5. it can't use "pulse" here, otherwise the animation is not right (maybe due to some conflicts */
@keyframes pulse-1p5 {
0% {
transform: scale(1);
}
50% {
transform: scale(1.5);
}
100% {
transform: scale(1);
}
}
/* pulse animation for scale(1.5) in 200ms */
.pulse-1p5-200 {
animation: pulse-1p5 200ms linear;
}
.ui.modal,
.ui.dimmer.transition {
animation-name: fadein;
animation-duration: 100ms;
animation-timing-function: ease-in-out;
}

View File

@@ -0,0 +1,14 @@
.breadcrumb {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 3px;
}
.breadcrumb .breadcrumb-divider {
color: var(--color-text-light-2);
}
.breadcrumb > * {
display: inline;
}

View File

@@ -0,0 +1,423 @@
/* based on Fomantic UI checkbox module, with just the parts extracted that we use. If you find any
unused rules here after refactoring, please remove them. */
.ui.button {
cursor: pointer;
display: inline-block;
min-height: 1em;
outline: none;
vertical-align: baseline;
font-family: var(--fonts-regular);
margin: 0 0.25em 0 0;
padding: 0.78571429em 1.5em;
font-weight: var(--font-weight-normal);
text-align: center;
text-decoration: none;
line-height: 1;
border-radius: 0.28571429rem;
user-select: none;
-webkit-tap-highlight-color: transparent;
justify-content: center;
background: var(--color-button);
border: 1px solid var(--color-light-border);
color: var(--color-text);
white-space: nowrap;
}
.ui.button:focus-visible {
box-shadow: inset 0 0 0 2px currentcolor;
}
@media (max-width: 767.98px) {
.ui.button {
white-space: normal;
}
}
.ui.button:hover {
background: var(--color-hover);
color: var(--color-text);
}
.ui.active.button,
.ui.button:active,
.ui.active.button:active,
.ui.active.button:hover {
background: var(--color-active);
color: var(--color-text);
}
.ui.buttons .disabled.button:not(.basic),
.ui.disabled.button,
.ui.button:disabled,
.ui.disabled.button:hover,
.ui.disabled.active.button {
cursor: default;
opacity: var(--opacity-disabled) !important;
background-image: none;
pointer-events: none !important;
}
.ui.labeled.button:not(.icon) {
display: inline-flex;
flex-direction: row;
background: none;
padding: 0 !important;
border: none;
}
.ui.labeled.button > .button {
margin: 0;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.ui.labeled.button > .label {
display: flex;
align-items: center;
margin: 0 0 0 -1px !important;
font-size: 1em;
border-color: var(--color-light-border);
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.ui.labeled.button > .label:hover {
background: var(--color-hover);
}
.ui.labeled.button > .button:hover + .label {
border-left-color: var(--color-secondary-dark-2);
}
.ui.button > .icon:not(.button) {
height: auto;
opacity: 0.8;
}
.ui.button:not(.icon) > .icon:not(.button):not(.dropdown),
.ui.button:not(.icon) > .icons:not(.button):not(.dropdown) {
margin: 0 0.42857143em 0 -0.21428571em;
vertical-align: baseline;
}
.ui.button:not(.icon) > .icons:not(.button):not(.dropdown) > .icon {
vertical-align: baseline;
}
.ui.button:not(.icon) > .right.icon:not(.button):not(.dropdown) {
margin: 0 -0.21428571em 0 0.42857143em;
}
.ui.compact.buttons .button,
.ui.compact.button {
padding: 0.58928571em 1.125em;
}
.ui.compact.icon.buttons .button,
.ui.compact.icon.button {
padding: 0.58928571em;
}
.ui.compact.labeled.icon.button {
padding: 0.58928571em 3.69642857em;
}
.ui.compact.labeled.icon.button > .icon {
padding: 0.58928571em 0;
}
.ui.buttons .button,
.ui.button {
font-size: 1rem;
}
.ui.mini.buttons .dropdown,
.ui.mini.buttons .dropdown .menu > .item,
.ui.mini.buttons .button,
.ui.ui.ui.ui.mini.button {
font-size: 0.78571429rem;
}
.ui.tiny.buttons .dropdown,
.ui.tiny.buttons .dropdown .menu > .item,
.ui.tiny.buttons .button,
.ui.ui.ui.ui.tiny.button {
font-size: 0.85714286rem;
}
.ui.small.buttons .dropdown,
.ui.small.buttons .dropdown .menu > .item,
.ui.small.buttons .button,
.ui.ui.ui.ui.small.button {
font-size: 0.92857143rem;
}
.ui.icon.buttons .button,
.ui.icon.button:not(.compact) {
padding: 0.78571429em;
}
.ui.icon.buttons .button > .icon,
.ui.icon.button > .icon {
margin: 0 !important;
vertical-align: top;
}
.ui.basic.buttons .button,
.ui.basic.button {
border-radius: 0.28571429rem;
background: none;
}
.ui.basic.buttons {
border: 1px solid var(--color-secondary);
border-radius: 0.28571429rem;
}
.ui.basic.buttons .button {
border-radius: 0;
border-left: 1px solid var(--color-secondary);
}
.ui.labeled.button.disabled > .button,
.ui.basic.buttons .button,
.ui.basic.button {
color: var(--color-text-light);
background: var(--color-button);
}
.ui.basic.buttons .button:hover,
.ui.basic.button:hover {
color: var(--color-text);
background: var(--color-hover);
border-color: var(--color-secondary-dark-2);
}
.ui.basic.buttons .button:active,
.ui.basic.button:active,
.ui.basic.buttons .active.button,
.ui.basic.active.button,
.ui.basic.buttons .active.button:hover,
.ui.basic.active.button:hover {
color: var(--color-text);
background: var(--color-active);
}
.ui.labeled.icon.button {
position: relative;
padding-left: 4.07142857em !important;
padding-right: 1.5em !important;
}
.ui.labeled.icon.button > .icon {
position: absolute;
top: 0;
left: 0;
height: 100%;
line-height: 1;
border-radius: 0;
border-top-left-radius: inherit;
border-bottom-left-radius: inherit;
text-align: center;
animation: none;
padding: 0.78571429em 0;
margin: 0;
width: 2.57142857em;
background: var(--color-hover);
}
.ui.button.toggle.active {
background-color: var(--color-green);
color: var(--color-white);
}
.ui.button.toggle.active:hover {
background-color: var(--color-green-dark-1);
color: var(--color-white);
}
.ui.fluid.button {
width: 100%;
display: block;
}
.ui.primary.button,
.ui.primary.buttons .button {
background: var(--color-primary);
color: var(--color-primary-contrast);
}
.ui.primary.button:hover,
.ui.primary.buttons .button:hover {
background: var(--color-primary-hover);
color: var(--color-primary-contrast);
}
.ui.primary.button:active,
.ui.primary.buttons .button:active {
background: var(--color-primary-active);
}
.ui.basic.primary.buttons .button,
.ui.basic.primary.button {
color: var(--color-primary);
border-color: var(--color-primary);
background: none;
}
.ui.basic.primary.buttons .button:hover,
.ui.basic.primary.button:hover {
color: var(--color-primary-hover);
border-color: var(--color-primary-hover);
}
.ui.basic.primary.buttons .button:active,
.ui.basic.primary.button:active {
color: var(--color-primary-active);
border-color: var(--color-primary-active);
}
.ui.red.button,
.ui.red.buttons .button {
color: var(--color-white);
background: var(--color-red);
}
.ui.red.button:hover,
.ui.red.buttons .button:hover {
background: var(--color-red-dark-1);
}
.ui.red.button:active,
.ui.red.buttons .button:active {
background: var(--color-red-dark-2);
}
.ui.basic.red.buttons .button,
.ui.basic.red.button {
color: var(--color-red);
border-color: var(--color-red);
background: none;
}
.ui.basic.red.buttons .button:hover,
.ui.basic.red.button:hover {
color: var(--color-red-dark-1);
border-color: var(--color-red-dark-1);
}
.ui.basic.red.buttons .button:active,
.ui.basic.red.button:active {
color: var(--color-red-dark-2);
border-color: var(--color-red-dark-2);
}
.ui.green.button,
.ui.green.buttons .button {
color: var(--color-white);
background: var(--color-green);
}
.ui.green.button:hover,
.ui.green.buttons .button:hover {
background: var(--color-green-dark-1);
}
.ui.green.button:active,
.ui.green.buttons .button:active {
background: var(--color-green-dark-2);
}
.ui.basic.green.buttons .button,
.ui.basic.green.button {
color: var(--color-green);
border-color: var(--color-green);
background: none;
}
.ui.basic.green.buttons .button:hover,
.ui.basic.green.button:hover {
color: var(--color-green-dark-1);
border-color: var(--color-green-dark-1);
}
.ui.basic.green.buttons .button:active,
.ui.basic.green.button:active {
color: var(--color-green-dark-2);
border-color: var(--color-green-dark-2);
}
.ui.buttons {
display: inline-flex;
flex-direction: row;
font-size: 0;
vertical-align: baseline;
margin: 0 0.25em 0 0;
}
.delete-button,
.delete-button:hover {
color: var(--color-red);
}
/* btn is a plain button without any opinionated styling, it only uses flex for vertical alignment like ".ui.button" in base.css */
.btn {
background: transparent;
border-radius: var(--border-radius);
border: none;
color: inherit;
margin: 0;
padding: 0;
}
.btn:hover,
.btn:active {
background: none;
border: none;
}
a.btn,
a.btn:hover {
color: inherit;
}
/* By default, Fomantic UI doesn't support "bordered" buttons group, but Gitea would like to use it.
And the default buttons always have borders now (not the same as Fomantic UI's default buttons, see above).
It needs some tricks to tweak the left/right borders with active state */
.ui.buttons .button {
border-right: none;
flex: 1 0 auto;
border-radius: 0;
margin: 0;
}
.ui.buttons .button:first-child {
border-left: none;
margin-left: 0;
border-top-left-radius: 0.28571429rem;
border-bottom-left-radius: 0.28571429rem;
}
.ui.buttons .button:last-child {
border-top-right-radius: 0.28571429rem;
border-bottom-right-radius: 0.28571429rem;
}
.ui.buttons .button:hover {
border-color: var(--color-secondary-dark-2);
}
.ui.buttons .button:hover + .button {
border-left: 1px solid var(--color-secondary-dark-2);
}
/* TODO: these "tw-hidden" selectors are only used by "blame.tmpl" buttons: Raw/Normal View/History/Unescape, need to be refactored to a clear solution later */
.ui.buttons .button:first-child,
.ui.buttons .button.tw-hidden:first-child + .button {
border-left: 1px solid var(--color-light-border);
}
.ui.buttons .button:last-child,
.ui.buttons .button:nth-last-child(2):has(+ .button.tw-hidden) {
border-right: 1px solid var(--color-light-border);
}
.ui.buttons .button.active {
border-left: 1px solid var(--color-light-border);
border-right: 1px solid var(--color-light-border);
}
.ui.buttons .button.active + .button {
border-left: none;
}
/* apply the vertical padding of .compact to non-compact buttons when they contain a svg as they
would otherwise appear too large. Seen on "RSS Feed" button on repo releases tab. */
.ui.small.button:not(.compact):has(.svg) {
padding-top: 0.58928571em;
padding-bottom: 0.58928571em;
}

View File

@@ -0,0 +1,135 @@
/* Below styles are a subset of the full fomantic card styles which are */
/* needed to get all current uses of fomantic cards working. */
/* TODO: remove all these styles and use custom styling instead */
.ui.card:last-child {
margin-bottom: 0;
}
.ui.card:first-child {
margin-top: 0;
}
.ui.cards > .card,
.ui.card {
display: flex;
flex-direction: column;
max-width: 100%;
width: 290px;
min-height: 0;
padding: 0;
background: var(--color-card);
border: 1px solid var(--color-secondary);
box-shadow: none;
word-wrap: break-word;
border-radius: var(--border-radius);
}
.ui.card {
margin: 1em 0;
}
.ui.cards {
display: flex;
margin: -0.875em -0.5em;
flex-wrap: wrap;
}
.ui.cards > .card {
display: flex;
margin: 0.875em 0.5em;
float: none;
}
.ui.cards > .card > .content,
.ui.card > .content {
border-top: 1px solid var(--color-secondary);
max-width: 100%;
padding: 1em;
font-size: 1em;
}
.ui.cards > .card > .content > .meta + .description,
.ui.cards > .card > .content > .header + .description,
.ui.card > .content > .meta + .description,
.ui.card > .content > .header + .description {
margin-top: .5em;
}
.ui.cards > .card > .content > .header:not(.ui),
.ui.card > .content > .header:not(.ui) {
font-weight: var(--font-weight-medium);
font-size: 1.28571429em;
margin-top: -.21425em;
line-height: 1.28571429;
}
.ui.cards > .card > .content:first-child,
.ui.card > .content:first-child {
border-top: none;
border-radius: var(--border-radius) var(--border-radius) 0 0;
}
.ui.cards > .card > :last-child,
.ui.card > :last-child {
border-radius: 0 0 var(--border-radius) var(--border-radius);
}
.ui.cards > .card > :only-child,
.ui.card > :only-child {
border-radius: var(--border-radius) !important;
}
.ui.cards > .card > .extra,
.ui.card > .extra,
.ui.cards > .card > .extra a:not(.ui),
.ui.card > .extra a:not(.ui) {
color: var(--color-text);
}
.ui.cards > .card > .extra a:not(.ui):hover,
.ui.card > .extra a:not(.ui):hover {
color: var(--color-primary);
}
.ui.cards > .card > .content > .header,
.ui.card > .content > .header {
color: var(--color-text);
}
.ui.cards > .card > .content > .description,
.ui.card > .content > .description {
color: var(--color-text);
}
.ui.cards > .card .meta > a:not(.ui),
.ui.card .meta > a:not(.ui) {
color: var(--color-text-light-2);
}
.ui.cards > .card .meta > a:not(.ui):hover,
.ui.card .meta > a:not(.ui):hover {
color: var(--color-text);
}
.ui.cards a.card:hover,
a.ui.card:hover {
border: 1px solid var(--color-secondary);
background: var(--color-card);
}
.ui.cards > .card > .extra,
.ui.card > .extra {
color: var(--color-text);
border-top-color: var(--color-secondary-light-1) !important;
}
.ui.three.cards {
margin-left: -1em;
margin-right: -1em;
}
.ui.three.cards > .card {
width: calc(33.33333333333333% - 2em);
margin-left: 1em;
margin-right: 1em;
}

View File

@@ -0,0 +1,121 @@
/* based on Fomantic UI checkbox module, with just the parts extracted that we use. If you find any
unused rules here after refactoring, please remove them. */
input[type="checkbox"],
input[type="radio"] {
width: var(--checkbox-size);
height: var(--checkbox-size);
}
.ui.checkbox {
position: relative;
display: inline-block;
vertical-align: baseline;
min-height: var(--checkbox-size);
line-height: var(--checkbox-size);
min-width: var(--checkbox-size);
padding: 1px;
}
.ui.checkbox input[type="checkbox"],
.ui.checkbox input[type="radio"] {
position: absolute;
top: 1px;
left: 0;
width: var(--checkbox-size);
height: var(--checkbox-size);
}
.ui.checkbox input[type="checkbox"]:enabled,
.ui.checkbox input[type="radio"]:enabled,
.ui.checkbox label:enabled {
cursor: pointer;
}
.ui.checkbox label {
cursor: auto;
position: relative;
display: block;
user-select: none;
}
.ui.checkbox label,
.ui.radio.checkbox label {
margin-left: 20px;
}
.ui.checkbox + label {
vertical-align: middle;
}
.ui.disabled.checkbox label,
.ui.checkbox input[disabled] ~ label {
cursor: default !important;
opacity: 0.5;
pointer-events: none;
}
.ui.radio.checkbox {
min-height: var(--checkbox-size);
}
/* "switch" styled checkbox */
.ui.toggle.checkbox {
min-height: 1.5rem;
}
.ui.toggle.checkbox input {
width: 3.5rem;
height: 21px;
opacity: 0;
z-index: 3;
}
.ui.toggle.checkbox label {
min-height: 1.5rem;
padding-left: 4.5rem;
padding-top: 0.15em;
}
.ui.toggle.checkbox label::before {
display: block;
position: absolute;
content: "";
z-index: 1;
top: 0;
width: 49px;
height: 21px;
border-radius: 500rem;
left: 0;
}
.ui.toggle.checkbox label::after {
background: var(--color-white);
box-shadow: 1px 1px 4px 1px var(--color-shadow);
position: absolute;
content: "";
opacity: 1;
z-index: 2;
width: 18px;
height: 18px;
top: 1.5px;
left: 1.5px;
border-radius: 500rem;
transition: background 0.3s ease, left 0.3s ease;
}
.ui.toggle.checkbox input ~ label::after {
left: 1.5px;
}
.ui.toggle.checkbox input:checked ~ label::after {
left: 29px;
}
.ui.toggle.checkbox input:focus ~ label::before,
.ui.toggle.checkbox label::before {
background: var(--color-input-toggle-background);
}
.ui.toggle.checkbox label,
.ui.toggle.checkbox input:checked ~ label,
.ui.toggle.checkbox input:focus:checked ~ label {
color: var(--color-text) !important;
}
.ui.toggle.checkbox input:checked ~ label::before,
.ui.toggle.checkbox input:focus:checked ~ label::before {
background: var(--color-primary) !important;
}

View File

@@ -0,0 +1,92 @@
/* These are the remnants of the fomantic comment module */
/* TODO: remove all of these rules */
.ui.comments {
margin: 1.5em 0;
}
.ui.comments:first-child {
margin-top: 0;
}
.ui.comments:last-child {
margin-bottom: 0;
}
.ui.comments .comment {
display: flex;
position: relative;
background: none;
margin: 3px 0 0;
padding: 0.5em 0 0;
border: none;
border-top: none;
}
.edit-content-zone .comment {
flex-direction: column;
}
.ui.comments .comment:first-child {
margin-top: 0;
padding-top: 0;
}
.ui.comments .comment > .comments {
margin: 0 0 0.5em 0.5em;
padding: 1em 0 1em 1em;
}
.ui.comments .comment > .comments::before {
position: absolute;
top: 0;
left: 0;
}
.ui.comments .comment > .comments .comment {
border: none;
border-top: none;
background: none;
}
.ui.comments .comment > .content {
display: flex;
flex-direction: column;
flex: 1;
min-width: 0;
}
.ui.comments .comment > .avatar ~ .content {
margin-left: 12px;
}
.ui.comments .comment .author {
font-size: 1em;
font-weight: var(--font-weight-medium);
}
.ui.comments .comment a.author {
cursor: pointer;
}
.ui.comments .comment .metadata {
display: inline-block;
margin-left: 0.5em;
font-size: 0.875em;
}
.ui.comments .comment .metadata > * {
display: inline-block;
margin: 0 0.5em 0 0;
}
.ui.comments .comment .metadata > :last-child {
margin-right: 0;
}
.ui.comments .comment .text {
margin: 0.25em 0 0.5em;
font-size: 1em;
word-wrap: break-word;
line-height: 1.3;
}

View File

@@ -0,0 +1,17 @@
/* based on Fomantic UI container module, with just the parts extracted that we use. If you find any
unused rules here after refactoring, please remove them. */
.ui.container {
width: 1280px;
max-width: calc(100% - calc(2 * var(--page-margin-x)));
margin-left: auto;
margin-right: auto;
}
.ui.fluid.container {
width: 100%;
}
.ui[class*="center aligned"].container {
text-align: center;
}

View File

@@ -0,0 +1,27 @@
/* These are the remnants of the fomantic dimmer module */
.ui.dimmer {
position: fixed;
display: none;
inset: 0;
background: var(--color-overlay-backdrop);
opacity: 0;
z-index: 1000;
overflow-y: auto;
justify-content: center;
padding: 8px 0;
animation-name: fadein;
animation-duration: .2s;
user-select: none;
}
.ui.active.dimmer {
display: flex;
opacity: 1;
}
.ui.dimmer > * {
position: static;
margin-top: auto !important;
margin-bottom: auto !important;
}

View File

@@ -0,0 +1,43 @@
.divider {
margin: 10px 0;
height: 0;
font-weight: var(--font-weight-medium);
color: var(--color-text);
font-size: 1rem;
width: 100%;
}
h4.divider {
margin-top: 1.25rem;
margin-bottom: 1.25rem;
}
.divider:not(.divider-text) {
border-top: 1px solid var(--color-secondary);
}
.divider.divider-text {
display: flex;
align-items: center;
padding: 5px 0;
}
.divider.divider-text::before,
.divider.divider-text::after {
content: "";
flex: 1;
border-top: 1px solid var(--color-secondary);
}
.divider.divider-text::before {
margin-right: .75em;
}
.divider.divider-text::after {
margin-left: .75em;
}
.ui.dropdown .menu > .divider {
border-top: 1px solid var(--color-secondary);
margin: 4px 0;
}

View File

@@ -0,0 +1,33 @@
/* container for full-page content with sidebar on left */
.flex-container {
display: flex !important;
gap: var(--page-spacing);
margin-top: var(--page-spacing);
}
/* small options menu on the left, used in settings/admin pages */
.flex-container-nav {
width: 240px;
}
/* wide sidebar on the right, used in frontpage */
.flex-container-sidebar {
width: 35%;
}
.flex-container-main {
flex: 1;
min-width: 0; /* make the "text truncate" work, otherwise the flex axis is not limited and the text just overflows */
}
@media (max-width: 767.98px) {
.flex-container {
flex-direction: column;
}
.flex-container-nav,
.flex-container-sidebar {
order: -1;
width: auto;
}
}

View File

@@ -0,0 +1,513 @@
/* based on Fomantic UI grid module, with just the parts extracted that we use. If you find any
unused rules here after refactoring, please remove them. */
.ui.grid {
display: flex;
flex-direction: row;
flex-wrap: wrap;
align-items: stretch;
padding: 0;
margin: -1rem;
}
.ui.relaxed.grid {
margin-left: -1.5rem;
margin-right: -1.5rem;
}
.ui[class*="very relaxed"].grid {
margin-left: -2.5rem;
margin-right: -2.5rem;
}
.ui.grid + .grid {
margin-top: 1rem;
}
.ui.grid > .column:not(.row),
.ui.grid > .row > .column {
position: relative;
display: inline-block;
width: 6.25%;
padding-left: 1rem;
padding-right: 1rem;
vertical-align: top;
}
.ui.grid > * {
padding-left: 1rem;
padding-right: 1rem;
}
.ui.grid > .row {
position: relative;
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: inherit;
align-items: stretch;
width: 100% !important;
padding: 0;
padding-top: 1rem;
padding-bottom: 1rem;
}
.ui.grid > .column:not(.row) {
padding-top: 1rem;
padding-bottom: 1rem;
}
.ui.grid > .row > .column {
margin-top: 0;
margin-bottom: 0;
}
.ui.grid > .row > img,
.ui.grid > .row > .column > img {
max-width: 100%;
}
.ui.grid > .ui.grid:first-child {
margin-top: 0;
}
.ui.grid > .ui.grid:last-child {
margin-bottom: 0;
}
.ui.grid .aligned.row > .column > .segment:not(.compact):not(.attached),
.ui.aligned.grid .column > .segment:not(.compact):not(.attached) {
width: 100%;
}
.ui.grid .row + .ui.divider {
flex-grow: 1;
margin: 1rem;
}
.ui.grid .column + .ui.vertical.divider {
height: calc(50% - 1rem);
}
.ui.grid > .row > .column:last-child > .horizontal.segment,
.ui.grid > .column:last-child > .horizontal.segment {
box-shadow: none;
}
@media only screen and (max-width: 767.98px) {
.ui.page.grid {
width: auto;
padding-left: 0;
padding-right: 0;
margin-left: 0;
margin-right: 0;
}
}
@media only screen and (min-width: 768px) and (max-width: 991.98px) {
.ui.page.grid {
width: auto;
margin-left: 0;
margin-right: 0;
padding-left: 2em;
padding-right: 2em;
}
}
@media only screen and (min-width: 992px) and (max-width: 1199.98px) {
.ui.page.grid {
width: auto;
margin-left: 0;
margin-right: 0;
padding-left: 3%;
padding-right: 3%;
}
}
@media only screen and (min-width: 1200px) and (max-width: 1919.98px) {
.ui.page.grid {
width: auto;
margin-left: 0;
margin-right: 0;
padding-left: 15%;
padding-right: 15%;
}
}
@media only screen and (min-width: 1920px) {
.ui.page.grid {
width: auto;
margin-left: 0;
margin-right: 0;
padding-left: 23%;
padding-right: 23%;
}
}
.ui.grid > .column:only-child,
.ui.grid > .row > .column:only-child {
width: 100%;
}
.ui[class*="one column"].grid > .row > .column,
.ui[class*="one column"].grid > .column:not(.row) {
width: 100%;
}
.ui[class*="two column"].grid > .row > .column,
.ui[class*="two column"].grid > .column:not(.row) {
width: 50%;
}
.ui[class*="three column"].grid > .row > .column,
.ui[class*="three column"].grid > .column:not(.row) {
width: 33.33333333%;
}
.ui[class*="four column"].grid > .row > .column,
.ui[class*="four column"].grid > .column:not(.row) {
width: 25%;
}
.ui[class*="five column"].grid > .row > .column,
.ui[class*="five column"].grid > .column:not(.row) {
width: 20%;
}
.ui[class*="six column"].grid > .row > .column,
.ui[class*="six column"].grid > .column:not(.row) {
width: 16.66666667%;
}
.ui[class*="seven column"].grid > .row > .column,
.ui[class*="seven column"].grid > .column:not(.row) {
width: 14.28571429%;
}
.ui[class*="eight column"].grid > .row > .column,
.ui[class*="eight column"].grid > .column:not(.row) {
width: 12.5%;
}
.ui[class*="nine column"].grid > .row > .column,
.ui[class*="nine column"].grid > .column:not(.row) {
width: 11.11111111%;
}
.ui[class*="ten column"].grid > .row > .column,
.ui[class*="ten column"].grid > .column:not(.row) {
width: 10%;
}
.ui[class*="eleven column"].grid > .row > .column,
.ui[class*="eleven column"].grid > .column:not(.row) {
width: 9.09090909%;
}
.ui[class*="twelve column"].grid > .row > .column,
.ui[class*="twelve column"].grid > .column:not(.row) {
width: 8.33333333%;
}
.ui[class*="thirteen column"].grid > .row > .column,
.ui[class*="thirteen column"].grid > .column:not(.row) {
width: 7.69230769%;
}
.ui[class*="fourteen column"].grid > .row > .column,
.ui[class*="fourteen column"].grid > .column:not(.row) {
width: 7.14285714%;
}
.ui[class*="fifteen column"].grid > .row > .column,
.ui[class*="fifteen column"].grid > .column:not(.row) {
width: 6.66666667%;
}
.ui[class*="sixteen column"].grid > .row > .column,
.ui[class*="sixteen column"].grid > .column:not(.row) {
width: 6.25%;
}
.ui.grid > [class*="one column"].row > .column {
width: 100% !important;
}
.ui.grid > [class*="two column"].row > .column {
width: 50% !important;
}
.ui.grid > [class*="three column"].row > .column {
width: 33.33333333% !important;
}
.ui.grid > [class*="four column"].row > .column {
width: 25% !important;
}
.ui.grid > [class*="five column"].row > .column {
width: 20% !important;
}
.ui.grid > [class*="six column"].row > .column {
width: 16.66666667% !important;
}
.ui.grid > [class*="seven column"].row > .column {
width: 14.28571429% !important;
}
.ui.grid > [class*="eight column"].row > .column {
width: 12.5% !important;
}
.ui.grid > [class*="nine column"].row > .column {
width: 11.11111111% !important;
}
.ui.grid > [class*="ten column"].row > .column {
width: 10% !important;
}
.ui.grid > [class*="eleven column"].row > .column {
width: 9.09090909% !important;
}
.ui.grid > [class*="twelve column"].row > .column {
width: 8.33333333% !important;
}
.ui.grid > [class*="thirteen column"].row > .column {
width: 7.69230769% !important;
}
.ui.grid > [class*="fourteen column"].row > .column {
width: 7.14285714% !important;
}
.ui.grid > [class*="fifteen column"].row > .column {
width: 6.66666667% !important;
}
.ui.grid > [class*="sixteen column"].row > .column {
width: 6.25% !important;
}
.ui.grid > .row > [class*="one wide"].column,
.ui.grid > .column.row > [class*="one wide"].column,
.ui.grid > [class*="one wide"].column,
.ui.column.grid > [class*="one wide"].column {
width: 6.25% !important;
}
.ui.grid > .row > [class*="two wide"].column,
.ui.grid > .column.row > [class*="two wide"].column,
.ui.grid > [class*="two wide"].column,
.ui.column.grid > [class*="two wide"].column {
width: 12.5% !important;
}
.ui.grid > .row > [class*="three wide"].column,
.ui.grid > .column.row > [class*="three wide"].column,
.ui.grid > [class*="three wide"].column,
.ui.column.grid > [class*="three wide"].column {
width: 18.75% !important;
}
.ui.grid > .row > [class*="four wide"].column,
.ui.grid > .column.row > [class*="four wide"].column,
.ui.grid > [class*="four wide"].column,
.ui.column.grid > [class*="four wide"].column {
width: 25% !important;
}
.ui.grid > .row > [class*="five wide"].column,
.ui.grid > .column.row > [class*="five wide"].column,
.ui.grid > [class*="five wide"].column,
.ui.column.grid > [class*="five wide"].column {
width: 31.25% !important;
}
.ui.grid > .row > [class*="six wide"].column,
.ui.grid > .column.row > [class*="six wide"].column,
.ui.grid > [class*="six wide"].column,
.ui.column.grid > [class*="six wide"].column {
width: 37.5% !important;
}
.ui.grid > .row > [class*="seven wide"].column,
.ui.grid > .column.row > [class*="seven wide"].column,
.ui.grid > [class*="seven wide"].column,
.ui.column.grid > [class*="seven wide"].column {
width: 43.75% !important;
}
.ui.grid > .row > [class*="eight wide"].column,
.ui.grid > .column.row > [class*="eight wide"].column,
.ui.grid > [class*="eight wide"].column,
.ui.column.grid > [class*="eight wide"].column {
width: 50% !important;
}
.ui.grid > .row > [class*="nine wide"].column,
.ui.grid > .column.row > [class*="nine wide"].column,
.ui.grid > [class*="nine wide"].column,
.ui.column.grid > [class*="nine wide"].column {
width: 56.25% !important;
}
.ui.grid > .row > [class*="ten wide"].column,
.ui.grid > .column.row > [class*="ten wide"].column,
.ui.grid > [class*="ten wide"].column,
.ui.column.grid > [class*="ten wide"].column {
width: 62.5% !important;
}
.ui.grid > .row > [class*="eleven wide"].column,
.ui.grid > .column.row > [class*="eleven wide"].column,
.ui.grid > [class*="eleven wide"].column,
.ui.column.grid > [class*="eleven wide"].column {
width: 68.75% !important;
}
.ui.grid > .row > [class*="twelve wide"].column,
.ui.grid > .column.row > [class*="twelve wide"].column,
.ui.grid > [class*="twelve wide"].column,
.ui.column.grid > [class*="twelve wide"].column {
width: 75% !important;
}
.ui.grid > .row > [class*="thirteen wide"].column,
.ui.grid > .column.row > [class*="thirteen wide"].column,
.ui.grid > [class*="thirteen wide"].column,
.ui.column.grid > [class*="thirteen wide"].column {
width: 81.25% !important;
}
.ui.grid > .row > [class*="fourteen wide"].column,
.ui.grid > .column.row > [class*="fourteen wide"].column,
.ui.grid > [class*="fourteen wide"].column,
.ui.column.grid > [class*="fourteen wide"].column {
width: 87.5% !important;
}
.ui.grid > .row > [class*="fifteen wide"].column,
.ui.grid > .column.row > [class*="fifteen wide"].column,
.ui.grid > [class*="fifteen wide"].column,
.ui.column.grid > [class*="fifteen wide"].column {
width: 93.75% !important;
}
.ui.grid > .row > [class*="sixteen wide"].column,
.ui.grid > .column.row > [class*="sixteen wide"].column,
.ui.grid > [class*="sixteen wide"].column,
.ui.column.grid > [class*="sixteen wide"].column {
width: 100% !important;
}
.ui.centered.grid,
.ui.centered.grid > .row,
.ui.grid > .centered.row {
text-align: center;
justify-content: center;
}
.ui.centered.grid > .column:not(.aligned):not(.justified):not(.row),
.ui.centered.grid > .row > .column:not(.aligned):not(.justified),
.ui.grid .centered.row > .column:not(.aligned):not(.justified) {
text-align: left;
}
.ui.grid > .centered.column,
.ui.grid > .row > .centered.column {
display: block;
margin-left: auto;
margin-right: auto;
}
.ui.relaxed.grid > .column:not(.row),
.ui.relaxed.grid > .row > .column,
.ui.grid > .relaxed.row > .column {
padding-left: 1.5rem;
padding-right: 1.5rem;
}
.ui[class*="very relaxed"].grid > .column:not(.row),
.ui[class*="very relaxed"].grid > .row > .column,
.ui.grid > [class*="very relaxed"].row > .column {
padding-left: 2.5rem;
padding-right: 2.5rem;
}
.ui.relaxed.grid .row + .ui.divider,
.ui.grid .relaxed.row + .ui.divider {
margin-left: 1.5rem;
margin-right: 1.5rem;
}
.ui[class*="very relaxed"].grid .row + .ui.divider,
.ui.grid [class*="very relaxed"].row + .ui.divider {
margin-left: 2.5rem;
margin-right: 2.5rem;
}
.ui[class*="middle aligned"].grid > .column:not(.row),
.ui[class*="middle aligned"].grid > .row > .column,
.ui.grid > [class*="middle aligned"].row > .column,
.ui.grid > [class*="middle aligned"].column:not(.row),
.ui.grid > .row > [class*="middle aligned"].column {
flex-direction: column;
vertical-align: middle;
align-self: center !important;
}
.ui[class*="left aligned"].grid > .column,
.ui[class*="left aligned"].grid > .row > .column,
.ui.grid > [class*="left aligned"].row > .column,
.ui.grid > [class*="left aligned"].column.column,
.ui.grid > .row > [class*="left aligned"].column.column {
text-align: left;
align-self: inherit;
}
.ui[class*="center aligned"].grid > .column,
.ui[class*="center aligned"].grid > .row > .column,
.ui.grid > [class*="center aligned"].row > .column,
.ui.grid > [class*="center aligned"].column.column,
.ui.grid > .row > [class*="center aligned"].column.column {
text-align: center;
align-self: inherit;
}
.ui[class*="center aligned"].grid {
justify-content: center;
}
.ui[class*="right aligned"].grid > .column,
.ui[class*="right aligned"].grid > .row > .column,
.ui.grid > [class*="right aligned"].row > .column,
.ui.grid > [class*="right aligned"].column.column,
.ui.grid > .row > [class*="right aligned"].column.column {
text-align: right;
align-self: inherit;
}
.ui[class*="equal width"].grid > .column:not(.row),
.ui[class*="equal width"].grid > .row > .column,
.ui.grid > [class*="equal width"].row > .column {
display: inline-block;
flex-grow: 1;
}
.ui[class*="equal width"].grid > .wide.column,
.ui[class*="equal width"].grid > .row > .wide.column,
.ui.grid > [class*="equal width"].row > .wide.column {
flex-grow: 0;
}
@media only screen and (max-width: 767.98px) {
.ui[class*="mobile reversed"].grid,
.ui[class*="mobile reversed"].grid > .row,
.ui.grid > [class*="mobile reversed"].row {
flex-direction: row-reverse;
}
.ui.stackable[class*="mobile reversed"] {
flex-direction: column-reverse;
}
}
@media only screen and (max-width: 767.98px) {
.ui.stackable.grid {
width: auto;
margin-left: 0 !important;
margin-right: 0 !important;
}
.ui.stackable.grid > .row > .wide.column,
.ui.stackable.grid > .wide.column,
.ui.stackable.grid > .column.grid > .column,
.ui.stackable.grid > .column.row > .column,
.ui.stackable.grid > .row > .column,
.ui.stackable.grid > .column:not(.row),
.ui.grid > .stackable.stackable.stackable.row > .column {
width: 100% !important;
margin: 0 !important;
box-shadow: none !important;
padding: 1rem;
}
.ui.stackable.grid:not(.vertically) > .row {
margin: 0;
padding: 0;
}
.ui.container > .ui.stackable.grid > .column,
.ui.container > .ui.stackable.grid > .row > .column {
padding-left: 0 !important;
padding-right: 0 !important;
}
.ui.grid .ui.stackable.grid,
.ui.segment:not(.vertical) .ui.stackable.page.grid {
margin-left: -1rem !important;
margin-right: -1rem !important;
}
}
.ui.ui.ui.compact.grid > .column:not(.row),
.ui.ui.ui.compact.grid > .row > .column {
padding-left: 0.5rem;
padding-right: 0.5rem;
}
.ui.ui.ui.compact.grid > * {
padding-left: 0.5rem;
padding-right: 0.5rem;
}
.ui.ui.ui.compact.grid > .row {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
}
.ui.ui.ui.compact.grid > .column:not(.row) {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
}

View File

@@ -0,0 +1,170 @@
/* based on Fomantic UI header module, with just the parts extracted that we use. If you find any
unused rules here after refactoring, please remove them. */
.ui.header {
color: var(--color-text);
border: none;
margin: calc(2rem - 0.1428571428571429em) 0 1rem;
padding: 0;
font-family: var(--fonts-regular);
font-weight: var(--font-weight-medium);
line-height: 1.28571429;
}
.ui.header:first-child {
margin-top: -0.14285714em;
}
.ui.header:last-child {
margin-bottom: 0;
}
.ui.header .ui.label {
margin-left: 0.25rem;
vertical-align: middle;
}
.ui.header > .ui.label.compact {
margin-top: inherit;
}
.ui.header .sub.header {
display: block;
font-weight: var(--font-weight-normal);
padding: 0;
margin: 0;
font-size: 1rem;
line-height: 1.2;
color: var(--color-text-light-1);
}
.ui.header > i.icon {
display: table-cell;
opacity: 1;
font-size: 1.5em;
padding-top: 0;
vertical-align: middle;
}
.ui.header > i.icon:only-child {
display: inline-block;
padding: 0;
margin-right: 0.75rem;
}
.ui.header + p {
margin-top: 0;
}
h2.ui.header {
font-size: 1.71428571rem;
}
h2.ui.header .sub.header {
font-size: 1.14285714rem;
}
h4.ui.header {
font-size: 1.07142857rem;
}
h4.ui.header .sub.header {
font-size: 1rem;
}
.ui.sub.header {
padding: 0;
margin-bottom: 0.14285714rem;
font-weight: var(--font-weight-normal);
font-size: 0.85714286em;
}
.ui.icon.header svg {
width: 3em;
height: 3em;
float: none;
display: block;
line-height: var(--line-height-default);
padding: 0;
margin: 0 auto 0.5rem;
opacity: 1;
}
.ui.header:not(h1,h2,h3,h4,h5,h6) {
font-size: 1.28571429em;
}
.ui.attached.header {
position: relative;
background: var(--color-box-header);
padding: 0.78571429rem 1rem;
margin: 0 -1px;
border-radius: 0;
border: 1px solid var(--color-secondary);
}
.ui.attached:not(.top).header {
border-top: none;
}
.ui.top.attached.header {
border-radius: 0.28571429rem 0.28571429rem 0 0;
}
.ui.bottom.attached.header {
border-radius: 0 0 0.28571429rem 0.28571429rem;
}
.ui.attached.header:not(h1,h2,h3,h4,h5,h6) {
font-size: 1em;
}
/* fix misaligned right buttons on box headers */
.ui.attached.header > .ui.right {
position: absolute;
right: 0.78571429rem;
top: 0;
bottom: 0;
display: flex;
align-items: center;
gap: 0.25em;
}
/* the default ".ui.attached.header > .ui.right" is only able to contain "tiny" buttons, other buttons are too large */
.ui.attached.header > .ui.right .ui.tiny.button {
padding: 6px 10px;
font-weight: var(--font-weight-normal);
}
/* if a .top.attached.header is followed by a .segment, add some margin */
.ui.segments + .ui.top.attached.header,
.ui.attached.segment + .ui.top.attached.header {
margin-top: 1rem;
}
.ui.dividing.header {
border-bottom-color: var(--color-secondary);
}
.ui.dividing.header .sub.header {
padding-bottom: 0.21428571rem;
}
.ui.dividing.header i.icon {
margin-bottom: 0;
}
.ui.error.header {
background: var(--color-error-bg) !important;
color: var(--color-error-text) !important;
border-color: var(--color-error-border) !important;
}
.ui.warning.header {
background: var(--color-warning-bg) !important;
color: var(--color-warning-text) !important;
border-color: var(--color-warning-border) !important;
}
.attention-header {
padding: 0.5em 0.75em !important;
color: var(--color-text) !important;
}

View File

@@ -0,0 +1,197 @@
/* based on Fomantic UI input module, with just the parts extracted that we use. If you find any
unused rules here after refactoring, please remove them. */
.ui.input {
position: relative;
font-weight: var(--font-weight-normal);
display: inline-flex;
color: var(--color-input-text);
}
.ui.input > input {
margin: 0;
max-width: 100%;
flex: 1 0 auto;
outline: none;
font-family: var(--fonts-regular);
padding: 0.67857143em 1em;
border: 1px solid var(--color-input-border);
color: var(--color-input-text);
border-radius: 0.28571429rem;
line-height: var(--line-height-default);
text-align: start;
}
.ui.disabled.input,
.ui.input:not(.disabled) input[disabled] {
opacity: var(--opacity-disabled);
}
.ui.disabled.input > input,
.ui.input:not(.disabled) input[disabled] {
pointer-events: none;
}
.ui.input.focus > input,
.ui.input > input:focus {
border-color: var(--color-primary);
}
.ui.input.error > input {
background: var(--color-error-bg);
border-color: var(--color-error-border);
color: var(--color-error-text);
}
.ui.icon.input > i.icon {
display: flex;
align-items: center;
justify-content: center;
cursor: default;
position: absolute;
text-align: center;
top: 0;
right: 0;
margin: 0;
height: 100%;
width: 2.67142857em;
opacity: 0.5;
border-radius: 0 0.28571429rem 0.28571429rem 0;
pointer-events: none;
padding: 4px;
}
.ui.icon.input > i.icon.is-loading {
position: absolute !important;
height: 28px;
top: 4px;
}
.ui.icon.input > i.icon.is-loading > * {
visibility: hidden;
}
.ui.ui.ui.ui.icon.input > textarea,
.ui.ui.ui.ui.icon.input > input {
padding-right: 2.67142857em;
}
.ui.icon.input > i.link.icon {
cursor: pointer;
}
.ui.icon.input > i.circular.icon {
top: 0.35em;
right: 0.5em;
}
.ui[class*="left icon"].input > i.icon {
right: auto;
left: 1px;
border-radius: 0.28571429rem 0 0 0.28571429rem;
}
.ui[class*="left icon"].input > i.circular.icon {
right: auto;
left: 0.5em;
}
.ui.ui.ui.ui[class*="left icon"].input > textarea,
.ui.ui.ui.ui[class*="left icon"].input > input {
padding-left: 2.67142857em;
padding-right: 1em;
}
.ui.icon.input > textarea:focus ~ .icon,
.ui.icon.input > input:focus ~ .icon {
opacity: 1;
}
.ui.icon.input > textarea ~ i.icon {
height: 3em;
}
.ui.form .field.error > .ui.action.input > .ui.button,
.ui.action.input.error > .ui.button {
border-top: 1px solid var(--color-error-border);
border-bottom: 1px solid var(--color-error-border);
}
.ui.action.input > .button,
.ui.action.input > .buttons {
display: flex;
align-items: center;
flex: 0 0 auto;
}
.ui.action.input > .button,
.ui.action.input > .buttons > .button {
padding-top: 0.78571429em;
padding-bottom: 0.78571429em;
margin: 0;
}
.ui.action.input:not([class*="left action"]) > input {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
border-right-color: transparent;
}
.ui.action.input > .dropdown:first-child,
.ui.action.input > .button:first-child,
.ui.action.input > .buttons:first-child > .button {
border-radius: 0.28571429rem 0 0 0.28571429rem;
}
.ui.action.input > .dropdown:not(:first-child),
.ui.action.input > .button:not(:first-child),
.ui.action.input > .buttons:not(:first-child) > .button {
border-radius: 0;
}
.ui.action.input > .dropdown:last-child,
.ui.action.input > .button:last-child,
.ui.action.input > .buttons:last-child > .button {
border-radius: 0 0.28571429rem 0.28571429rem 0;
}
.ui.fluid.input {
display: flex;
}
.ui.fluid.input > input {
width: 0 !important;
}
.ui.tiny.input {
font-size: 0.85714286em;
}
.ui.small.input {
font-size: 0.92857143em;
}
.ui.action.input .ui.ui.button {
border-color: var(--color-input-border);
padding-top: 0; /* the ".action.input" is "flex + stretch", so let the buttons layout themselves */
padding-bottom: 0;
}
/* currently used for search bar dropdowns in repo search and explore code */
.ui.action.input:not([class*="left action"]) > .ui.dropdown.selection {
min-width: 10em;
}
.ui.action.input:not([class*="left action"]) > .ui.dropdown.selection:not(:focus) {
border-right: none;
}
.ui.action.input:not([class*="left action"]) > .ui.dropdown.selection:not(.active):hover {
border-color: var(--color-input-border);
}
.ui.action.input:not([class*="left action"]) .ui.dropdown.selection.upward.visible {
border-bottom-left-radius: 0 !important;
border-bottom-right-radius: 0 !important;
}
.ui.action.input:not([class*="left action"]) > input,
.ui.action.input:not([class*="left action"]) > input:hover {
border-right: none;
}
.ui.action.input:not([class*="left action"]) > input:focus + .ui.dropdown.selection,
.ui.action.input:not([class*="left action"]) > input:focus + .ui.dropdown.selection:hover,
.ui.action.input:not([class*="left action"]) > input:focus + .button,
.ui.action.input:not([class*="left action"]) > input:focus + .button:hover,
.ui.action.input:not([class*="left action"]) > input:focus + i.icon + .button,
.ui.action.input:not([class*="left action"]) > input:focus + i.icon + .button:hover {
border-left-color: var(--color-primary);
}
.ui.action.input:not([class*="left action"]) > input:focus {
border-right-color: var(--color-primary);
}

View File

@@ -0,0 +1,294 @@
/* based on Fomantic UI label module, with just the parts extracted that we use. If you find any
unused rules here after refactoring, please remove them. */
.ui.label {
display: inline-flex;
align-items: center;
gap: .25rem;
min-width: 0;
vertical-align: middle;
line-height: 1;
background: var(--color-label-bg);
color: var(--color-label-text);
padding: 0.3em 0.5em;
font-size: 0.85714286rem;
font-weight: var(--font-weight-medium);
border: 0 solid transparent;
border-radius: 0.28571429rem;
white-space: nowrap;
}
.ui.label:first-child {
margin-left: 0;
}
.ui.label:last-child {
margin-right: 0;
}
a.ui.label {
cursor: pointer;
}
.ui.label > a {
cursor: pointer;
color: inherit;
opacity: 0.75;
}
.ui.label > a:hover {
opacity: 1;
}
.ui.label > img {
width: auto;
vertical-align: middle;
height: 2.1666em;
}
.ui.label > .color-icon {
margin-left: 0;
}
.ui.label > .icon {
width: auto;
margin: 0 0.75em 0 0;
}
.ui.label > .detail {
display: inline-block;
vertical-align: top;
font-weight: var(--font-weight-medium);
margin-left: 1em;
opacity: 0.8;
}
.ui.label > .detail .icon {
margin: 0 0.25em 0 0;
}
.ui.label > .close.icon,
.ui.label > .delete.icon {
cursor: pointer;
font-size: 0.92857143em;
opacity: 0.5;
}
.ui.label > .close.icon:hover,
.ui.label > .delete.icon:hover {
opacity: 1;
}
.ui.label.left.icon > .close.icon,
.ui.label.left.icon > .delete.icon {
margin: 0 0.5em 0 0;
}
.ui.label:not(.icon) > .close.icon,
.ui.label:not(.icon) > .delete.icon {
margin: 0 0 0 0.5em;
}
.ui.header > .ui.label {
margin-top: -0.29165em;
}
a.ui.label:hover {
background: var(--color-label-hover-bg);
border-color: var(--color-label-hover-bg);
color: var(--color-label-text);
}
.ui.label.visible:not(.dropdown) {
display: inline-block !important;
}
.ui.basic.label {
background: var(--color-button);
border: 1px solid var(--color-light-border);
color: var(--color-text-light);
padding: calc(0.5833em - 1px) calc(0.833em - 1px);
}
a.ui.basic.label:hover {
text-decoration: none;
color: var(--color-text);
border-color: var(--color-secondary-dark-2);
background: var(--color-hover);
}
.ui.ui.ui.primary.label {
background: var(--color-primary);
border-color: var(--color-primary-dark-2);
color: var(--color-primary-contrast);
}
a.ui.ui.ui.primary.label:hover {
background: var(--color-primary-dark-3);
border-color: var(--color-primary-dark-3);
color: var(--color-primary-contrast);
}
.ui.ui.ui.basic.primary.label {
background: transparent;
border-color: var(--color-primary);
color: var(--color-primary);
}
a.ui.ui.ui.basic.primary.label:hover {
background: var(--color-hover);
border-color: var(--color-primary-dark-1);
color: var(--color-primary-dark-1);
}
.ui.ui.ui.red.label {
background: var(--color-red);
border-color: var(--color-red);
color: var(--color-white);
}
a.ui.ui.ui.red.label:hover {
background: var(--color-red-dark-1);
border-color: var(--color-red-dark-1);
color: var(--color-white);
}
.ui.ui.ui.basic.red.label {
background: transparent;
border-color: var(--color-red);
color: var(--color-red);
}
a.ui.ui.ui.basic.red.label:hover {
background: transparent;
border-color: var(--color-red-dark-1);
color: var(--color-red-dark-1);
}
.ui.ui.ui.orange.label {
background: var(--color-orange);
border-color: var(--color-orange);
color: var(--color-white);
}
a.ui.ui.ui.orange.label:hover {
background: var(--color-orange-dark-1);
border-color: var(--color-orange-dark-1);
color: var(--color-white);
}
.ui.ui.ui.basic.orange.label {
background: transparent;
border-color: var(--color-orange);
color: var(--color-orange);
}
a.ui.ui.ui.basic.orange.label:hover {
background: transparent;
border-color: var(--color-orange-dark-1);
color: var(--color-orange-dark-1);
}
.ui.ui.ui.yellow.label {
background: var(--color-yellow);
border-color: var(--color-yellow);
color: var(--color-white);
}
a.ui.ui.ui.yellow.label:hover {
background: var(--color-yellow-dark-1);
border-color: var(--color-yellow-dark-1);
color: var(--color-white);
}
.ui.ui.ui.basic.yellow.label {
background: transparent;
border-color: var(--color-yellow);
color: var(--color-yellow);
}
a.ui.ui.ui.basic.yellow.label:hover {
background: transparent;
border-color: var(--color-yellow-dark-1);
color: var(--color-yellow-dark-1);
}
.ui.ui.ui.olive.label {
background: var(--color-olive);
border-color: var(--color-olive);
color: var(--color-white);
}
.ui.ui.ui.green.label {
background: var(--color-green);
border-color: var(--color-green);
color: var(--color-white);
}
a.ui.ui.ui.green.label:hover {
background: var(--color-green-dark-1);
border-color: var(--color-green-dark-1);
color: var(--color-white);
}
.ui.ui.ui.basic.green.label {
background: transparent;
border-color: var(--color-green);
color: var(--color-green);
}
a.ui.ui.ui.basic.green.label:hover {
background: transparent;
border-color: var(--color-green-dark-1);
color: var(--color-green-dark-1);
}
.ui.ui.ui.purple.label {
background: var(--color-purple);
border-color: var(--color-purple);
color: var(--color-white);
}
a.ui.ui.ui.purple.label:hover {
background: var(--color-purple-dark-1);
border-color: var(--color-purple-dark-1);
color: var(--color-white);
}
.ui.ui.ui.basic.purple.label {
background: transparent;
border-color: var(--color-purple);
color: var(--color-purple);
}
a.ui.ui.ui.basic.purple.label:hover {
background: transparent;
border-color: var(--color-purple-dark-1);
color: var(--color-purple-dark-1);
}
.ui.ui.ui.grey.label {
background: var(--color-label-bg);
border-color: var(--color-label-bg);
color: var(--color-label-text);
}
a.ui.ui.ui.grey.label:hover {
background: var(--color-label-hover-bg);
border-color: var(--color-label-hover-bg);
color: var(--color-white);
}
.ui.ui.ui.basic.grey.label {
background: transparent;
border-color: var(--color-label-bg);
color: var(--color-label-text);
}
a.ui.ui.ui.basic.grey.label:hover {
background: transparent;
border-color: var(--color-label-hover-bg);
color: var(--color-label-hover-bg);
}
.ui.horizontal.label {
margin: 0 0.5em 0 0;
padding: 0.4em 0.833em;
min-width: 3em;
text-align: center;
}
.ui.circular.label {
min-width: 2em;
min-height: 2em;
padding: 0.5em !important;
line-height: 1;
text-align: center;
border-radius: 500rem;
justify-content: center;
}
.ui.mini.label {
font-size: 0.64285714rem;
}
.ui.tiny.label {
font-size: 0.71428571rem;
}
.ui.small.label {
font-size: 0.78571429rem;
}
.ui.large.label {
font-size: 1rem;
}

View File

@@ -0,0 +1,187 @@
/* based on Fomantic UI list module, with just the parts extracted that we use. If you find any
unused rules here after refactoring, please remove them. */
.ui.list {
list-style-type: none;
margin: 1em 0;
padding: 0;
font-size: 1em;
}
.ui.list:first-child {
margin-top: 0;
padding-top: 0;
}
.ui.list:last-child {
margin-bottom: 0;
padding-bottom: 0;
}
.ui.list > .item,
.ui.list .list > .item {
display: list-item;
table-layout: fixed;
list-style-type: none;
list-style-position: outside;
}
.ui.list > .list > .item::after,
.ui.list > .item::after {
content: "";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.ui.list .list:not(.icon) {
clear: both;
margin: 0;
padding: 0.75em 0 0.25em 0.5em;
}
.ui.list .list > .item {
padding: 0.14285714em 0;
}
.ui.list .list > .item > i.icon,
.ui.list > .item > i.icon {
display: table-cell;
min-width: 1.55em;
padding-top: 0;
transition: color 0.1s ease;
padding-right: 0.28571429em;
vertical-align: top;
}
.ui.list .list > .item > i.icon:only-child,
.ui.list > .item > i.icon:only-child {
display: inline-block;
min-width: auto;
vertical-align: top;
}
.ui.list .list > .item > .image,
.ui.list > .item > .image {
display: table-cell;
background-color: transparent;
vertical-align: top;
}
.ui.list .list > .item > .image:not(:only-child):not(img),
.ui.list > .item > .image:not(:only-child):not(img) {
padding-right: 0.5em;
}
.ui.list .list > .item > .image img,
.ui.list > .item > .image img {
vertical-align: top;
}
.ui.list .list > .item > img.image,
.ui.list .list > .item > .image:only-child,
.ui.list > .item > img.image,
.ui.list > .item > .image:only-child {
display: inline-block;
}
.ui.list .list > .item > .content,
.ui.list > .item > .content {
color: var(--color-text);
}
.ui.list .list > .item > .image + .content,
.ui.list .list > .item > i.icon + .content,
.ui.list > .item > .image + .content,
.ui.list > .item > i.icon + .content {
display: table-cell;
width: 100%;
padding: 0 0 0 0.5em;
vertical-align: top;
}
.ui.list .list > .item > img.image + .content,
.ui.list > .item > img.image + .content {
display: inline-block;
width: auto;
}
.ui.list .list > .item > .content > .list,
.ui.list > .item > .content > .list {
margin-left: 0;
padding-left: 0;
}
.ui.list .list > .item .header,
.ui.list > .item .header {
display: block;
margin: 0;
font-family: var(--fonts-regular);
font-weight: var(--font-weight-medium);
color: var(--color-text-dark);
}
.ui.list .list > .item .description,
.ui.list > .item .description {
display: block;
color: var(--color-text);
}
.ui.list > .item a,
.ui.list .list > .item a {
cursor: pointer;
}
.ui.menu .ui.list > .item,
.ui.menu .ui.list .list > .item {
display: list-item;
table-layout: fixed;
background-color: transparent;
list-style-type: none;
list-style-position: outside;
padding: 0.21428571em 0;
}
.ui.menu .ui.list .list > .item::before,
.ui.menu .ui.list > .item::before {
border: none;
background: none;
}
.ui.menu .ui.list .list > .item:first-child,
.ui.menu .ui.list > .item:first-child {
padding-top: 0;
}
.ui.menu .ui.list .list > .item:last-child,
.ui.menu .ui.list > .item:last-child {
padding-bottom: 0;
}
.ui.list .list > .disabled.item,
.ui.list > .disabled.item {
pointer-events: none;
opacity: var(--opacity-disabled);
}
.ui.list .list > a.item:hover > .icons,
.ui.list > a.item:hover > .icons,
.ui.list .list > a.item:hover > i.icon,
.ui.list > a.item:hover > i.icon {
color: var(--color-text-dark);
}
.ui.divided.list > .item {
border-top: 1px solid var(--color-secondary);
}
.ui.divided.list .list > .item {
border-top: none;
}
.ui.divided.list .item .list > .item {
border-top: none;
}
.ui.divided.list .list > .item:first-child,
.ui.divided.list > .item:first-child {
border-top: none;
}
.ui.divided.list .list > .item:first-child {
border-top-width: 1px;
}
.ui.relaxed.list > .item:not(:first-child) {
padding-top: 0.42857143em;
}
.ui.relaxed.list > .item:not(:last-child) {
padding-bottom: 0.42857143em;
}

View File

@@ -0,0 +1,811 @@
.ui.menu {
display: flex;
margin: 1rem 0;
font-family: var(--fonts-regular);
font-weight: var(--font-weight-normal);
background: var(--color-menu);
border: 1px solid var(--color-secondary);
border-radius: 0.28571429rem;
min-height: 2.85714286em;
font-size: 1rem;
}
.ui.menu:first-child {
margin-top: 0;
}
.ui.menu:last-child {
margin-bottom: 0;
}
.ui.menu .menu {
margin: 0;
}
.ui.menu:not(.vertical) > .menu {
display: flex;
}
.ui.menu:not(.vertical) .item {
display: flex;
align-items: center;
}
.ui.menu .item {
position: relative;
vertical-align: middle;
line-height: var(--line-height-default);
text-decoration: none;
flex: 0 0 auto;
background: none;
padding: 0.92857143em 1.14285714em;
color: var(--color-text);
font-weight: var(--font-weight-normal);
}
.ui.menu > .item:first-child {
border-radius: 0.28571429rem 0 0 0.28571429rem;
}
.ui.menu .item::before {
position: absolute;
content: "";
top: 0;
right: 0;
height: 100%;
width: 1px;
background: var(--color-secondary);
}
.ui.menu .item > .svg {
margin-right: 0.35em;
}
.ui.menu .item > a:not(.ui),
.ui.menu .item > p:only-child {
line-height: 1.3;
}
.ui.menu .item > p:first-child {
margin-top: 0;
}
.ui.menu .item > p:last-child {
margin-bottom: 0;
}
.ui.menu .item > i.icon {
opacity: 0.9;
float: none;
margin: 0 0.35714286em 0 0;
}
.ui.menu:not(.vertical) .item > .button {
position: relative;
top: 0;
margin: -0.5em 0;
padding: 0.58928571em 1.125em;
font-size: 1em;
}
.ui.menu > .grid,
.ui.menu > .container {
display: flex;
align-items: inherit;
flex-direction: inherit;
}
.ui.menu .item > .input {
width: 100%;
}
.ui.menu:not(.vertical) .item > .input {
position: relative;
top: 0;
margin: -0.5em 0;
}
.ui.menu .item > .input input {
font-size: 1em;
padding-top: 0.57142857em;
padding-bottom: 0.57142857em;
}
.ui.menu .header.item,
.ui.vertical.menu .header.item {
margin: 0;
font-size: 1.1em;
background: var(--color-box-header);
font-weight: var(--font-weight-medium);
}
.ui.vertical.menu .item > .header:not(.ui) {
margin: 0 0 0.5em;
font-size: 1em;
font-weight: var(--font-weight-medium);
}
.ui.menu .item > i.dropdown.icon {
padding: 0;
float: right;
margin: 0 0 0 1em;
}
.ui.menu .dropdown.item .menu {
min-width: calc(100% - 1px);
border-radius: 0 0 0.28571429rem 0.28571429rem;
background: var(--color-body);
margin: 0;
flex-direction: column !important;
}
.ui.menu .ui.dropdown .menu > .item {
margin: 0;
text-align: left;
font-size: 1em !important;
padding: 0.78571429em 1.14285714em !important;
background: transparent !important;
color: var(--color-text) !important;
font-weight: var(--font-weight-normal) !important;
}
.ui.menu .ui.dropdown .menu > .item:hover {
color: var(--color-text) !important;
background: var(--color-hover) !important;
}
.ui.menu .ui.dropdown .menu > .selected.item {
color: var(--color-text) !important;
background: var(--color-hover) !important;
}
.ui.menu .ui.dropdown .menu > .active.item {
color: var(--color-text) !important;
background: var(--color-active) !important;
font-weight: var(--font-weight-medium) !important;
}
.ui.menu .ui.dropdown.item .menu .item {
width: 100%;
}
.ui.menu .ui.dropdown.item .menu .item:not(.filtered) {
display: block;
}
.ui.menu .ui.dropdown .menu > .item > i.icon:not(.dropdown) {
display: inline-block;
font-size: 1em !important;
float: none;
margin: 0 0.75em 0 0 !important;
}
.ui.secondary.menu .dropdown.item > .menu {
border-radius: 0.28571429rem;
margin-top: 0.35714286em;
}
.ui.menu .pointing.dropdown.item .menu {
margin-top: 0.75em;
}
.ui.menu .item > .label:not(.floating) {
margin-left: 1em;
padding: 0.3em 0.78571429em;
}
.ui.vertical.menu .item > .label {
margin-top: -0.15em;
margin-bottom: -0.15em;
padding: 0.3em 0.78571429em;
float: right;
text-align: center;
}
.ui.menu .item > .floating.label {
padding: 0.3em 0.78571429em;
}
.ui.menu .item > .label {
background: var(--color-label-bg);
color: var(--color-label-text);
}
.ui.menu .item > .image.label img {
margin: -0.2833em 0.8em -0.2833em -0.8em;
height: 1.5666em;
}
.ui.menu .item > img:not(.ui) {
display: inline-block;
vertical-align: middle;
margin: -0.3em 0;
width: 2.5em;
}
.ui.vertical.menu .item > img:not(.ui):only-child {
display: block;
max-width: 100%;
width: auto;
}
.ui.menu .list .item::before {
background: none !important;
}
@media only screen and (max-width: 767.98px) {
.ui.menu > .ui.container {
width: 100% !important;
margin-left: 0 !important;
margin-right: 0 !important;
}
}
.ui.menu .dropdown.item:hover,
.ui.menu a.item:hover {
cursor: pointer;
}
.ui.menu a.item:active {
color: var(--color-text);
background: none;
}
.ui.menu .active.item {
color: var(--color-text);
background: var(--color-active);
font-weight: var(--font-weight-normal);
}
.ui.menu .active.item > i.icon {
opacity: 1;
}
.ui.ui.menu .item.disabled {
cursor: default;
background-color: transparent;
pointer-events: none;
opacity: var(--opacity-disabled);
}
.ui.menu:not(.vertical) .left.item,
.ui.menu:not(.vertical) .left.menu {
display: flex;
margin-right: auto !important;
}
.ui.menu:not(.vertical) .right.item,
.ui.menu:not(.vertical) .right.menu {
display: flex;
margin-left: auto !important;
}
.ui.menu:not(.vertical) :not(.dropdown) > .left.menu,
.ui.menu:not(.vertical) :not(.dropdown) > .right.menu {
display: inherit;
}
.ui.menu:not(.vertical) .center.item {
display: flex;
margin-left: auto !important;
margin-right: auto !important;
}
.ui.menu .right.item::before,
.ui.menu .right.menu > .item::before {
right: auto;
left: 0;
}
.ui.menu .center.item:last-child::before {
display: none;
}
.ui.vertical.menu {
display: block;
flex-direction: column;
background: var(--color-menu);
width: 15rem;
}
.ui.vertical.menu .item {
display: block;
background: none;
border-top: none;
border-right: none;
}
.ui.vertical.menu > .item:first-child {
border-radius: 0.28571429rem 0.28571429rem 0 0;
}
.ui.vertical.menu > .item:last-child {
border-radius: 0 0 0.28571429rem 0.28571429rem;
}
.ui.vertical.menu .item > i.icon {
width: 1.18em;
float: right;
margin: 0 0 0 0.5em;
}
.ui.vertical.menu .item > .label + i.icon {
float: none;
margin: 0 0.5em 0 0;
}
.ui.vertical.menu .item::before {
position: absolute;
content: "";
top: 0;
left: 0;
width: 100%;
height: 1px;
background: var(--color-secondary);
}
.ui.vertical.menu .item:first-child::before {
display: none !important;
}
.ui.vertical.menu .item > .menu {
margin: 0.5em -1.14285714em 0;
}
.ui.vertical.menu .menu .item {
background: none;
padding: 0.5em 1.33333333em;
font-size: 0.85714286em;
color: var(--color-text-light-2);
}
.ui.vertical.menu .item .menu .item {
color: var(--color-text-light-2);
text-indent: 16px;
}
.ui.vertical.menu .item .menu .item:hover,
.ui.vertical.menu .item .menu a.item:hover {
color: var(--color-text-light-1);
}
.ui.vertical.menu .item .menu .active.item {
background-color: transparent;
font-weight: var(--font-weight-medium);
color: var(--color-text);
}
.ui.vertical.menu .item .menu a.item:hover {
color: var(--color-text);
}
.ui.vertical.menu .menu .item::before {
display: none;
}
.ui.vertical.menu .active.item {
background: var(--color-active);
border-radius: 0;
}
.ui.vertical.menu > .active.item:first-child {
border-radius: 0.28571429rem 0.28571429rem 0 0;
}
.ui.vertical.menu > .active.item:last-child {
border-radius: 0 0 0.28571429rem 0.28571429rem;
}
.ui.vertical.menu > .active.item:only-child {
border-radius: 0.28571429rem;
}
.ui.vertical.menu .active.item .menu .active.item {
border-left: none;
}
.ui.tabular.menu {
border-radius: 0;
border: none;
background: none transparent;
border-bottom: 1px solid var(--color-secondary);
}
.ui.tabular.fluid.menu {
width: calc(100% + 2px) !important;
}
.ui.tabular.menu .item {
background: transparent;
border-bottom: none;
border-left: 1px solid transparent;
border-right: 1px solid transparent;
border-top: 2px solid transparent;
color: var(--color-text-light-2);
}
.ui.tabular.menu .item::before {
display: none;
}
.ui.tabular.menu .item:hover {
background-color: transparent;
}
.ui.tabular.menu .active.item,
.ui.tabular.menu .active.item:hover {
background: var(--color-body);
border-top-width: 1px;
border-color: var(--color-secondary);
color: var(--color-text-dark);
margin-bottom: -1px;
border-radius: 0.28571429rem 0.28571429rem 0 0 !important;
}
.ui.tabular.menu + .attached:not(.top).segment,
.ui.tabular.menu + .attached:not(.top).segment + .attached:not(.top).segment {
border-top: none;
margin-left: 0;
margin-top: 0;
margin-right: 0;
width: 100%;
}
.ui.tabular.menu .active.dropdown.item {
margin-bottom: 0;
border-left: 1px solid transparent;
border-right: 1px solid transparent;
border-top: 2px solid transparent;
border-bottom: none;
}
.ui.pagination.menu {
margin: 0;
display: inline-flex;
vertical-align: middle;
}
.ui.pagination.menu .item:last-child {
border-radius: 0 0.28571429rem 0.28571429rem 0;
}
.ui.compact.menu .item:last-child {
border-radius: 0 0.28571429rem 0.28571429rem 0;
}
.ui.pagination.menu .item:last-child::before {
display: none;
}
.ui.pagination.menu .item {
min-width: 3em;
text-align: center;
}
.ui.pagination.menu .icon.item i.icon {
vertical-align: top;
}
.ui.pagination.menu .active.item,
.ui.pagination.menu .active.item:hover {
border-top: none;
padding-top: 0.92857143em;
color: var(--color-text);
background: var(--color-active);
}
@media (max-width: 767.98px) {
.ui.pagination.menu .item:not(.active,.navigation),
.ui.pagination.menu .item.navigation span.navigation_label {
display: none;
}
}
.ui.pagination.menu.narrow .item {
padding-left: 8px;
padding-right: 8px;
min-width: 1em;
text-align: center;
}
.ui.pagination.menu.narrow .item .icon {
margin-right: 0;
}
.ui.secondary.menu {
background: none;
margin-left: 0;
margin-right: 0;
gap: .35714286em;
border-radius: 0;
border: none;
}
.ui.secondary.menu .item {
align-self: center;
border: none;
padding: 0.78571429em 0.92857143em;
margin: 0;
background: none;
border-radius: 0.28571429rem;
}
.ui.secondary.menu .item::before {
display: none !important;
}
.ui.secondary.menu .header.item {
border-radius: 0;
border-right: none;
background: none transparent;
}
.ui.secondary.menu .item > img:not(.ui) {
margin: 0;
}
.ui.secondary.menu .dropdown.item:hover,
.ui.secondary.menu a.item:hover {
color: var(--color-text);
background: var(--color-hover);
}
.ui.secondary.menu .active.item {
border-radius: 0.28571429rem;
}
.ui.secondary.menu .active.item,
.ui.secondary.menu .active.item:hover {
color: var(--color-text-dark);
background: var(--color-active);
}
.ui.secondary.item.menu {
margin-left: 0;
margin-right: 0;
}
.ui.secondary.item.menu .item:last-child {
margin-right: 0;
}
.ui.vertical.secondary.menu .item:not(.dropdown) > .menu {
margin: 0 -0.92857143em;
}
.ui.vertical.secondary.menu .item:not(.dropdown) > .menu > .item {
margin: 0;
padding: 0.5em 1.33333333em;
}
.ui.secondary.vertical.menu > .item {
border: none;
margin: 0 0 0.35714286em;
border-radius: 0.28571429rem !important;
}
.ui.secondary.vertical.menu > .header.item {
border-radius: 0;
}
.ui.vertical.secondary.menu .item > .menu .item {
background-color: transparent;
}
.ui.secondary.pointing.menu {
margin-left: 0;
margin-right: 0;
border-bottom: 2px solid var(--color-secondary);
}
.ui.secondary.pointing.menu .item {
border-bottom: 2px solid transparent;
border-radius: 0;
align-self: flex-end;
margin: 0 0 -2px;
padding: 0.85714286em 1.14285714em;
}
.ui.secondary.pointing.menu .ui.dropdown .menu .item {
border-bottom-width: 0;
}
.ui.secondary.pointing.menu .item > .label:not(.floating) {
margin-top: -0.3em;
margin-bottom: -0.3em;
}
.ui.secondary.pointing.menu .item > .circular.label {
margin-top: -0.5em;
margin-bottom: -0.5em;
}
.ui.secondary.pointing.menu .header.item {
color: var(--color-text) !important;
}
.ui.secondary.pointing.menu .item::after {
display: none;
}
.ui.secondary.pointing.menu .dropdown.item:hover,
.ui.secondary.pointing.menu a.item:hover {
background-color: transparent;
color: var(--color-text);
}
.ui.secondary.pointing.menu .dropdown.item:active,
.ui.secondary.pointing.menu a.item:active {
background-color: transparent;
}
.ui.secondary.pointing.menu .active.item {
background-color: transparent;
border-color: currentcolor;
font-weight: var(--font-weight-medium);
}
.ui.secondary.pointing.menu .active.item,
.ui.secondary.pointing.menu .active.item:hover,
.ui.secondary.pointing.menu .dropdown.item:hover {
color: var(--color-text-dark);
}
.ui.secondary.pointing.menu .active.dropdown.item {
border-color: transparent;
}
@media only screen and (max-width: 767.98px) {
.ui.stackable.menu {
flex-direction: column;
}
.ui.stackable.menu .item {
width: 100% !important;
}
.ui.stackable.menu .left.menu,
.ui.stackable.menu .left.item {
margin-right: 0 !important;
}
.ui.stackable.menu .right.menu,
.ui.stackable.menu .right.item {
margin-left: 0 !important;
}
.ui.stackable.menu .center.item {
margin-left: 0 !important;
margin-right: 0 !important;
}
.ui.stackable.menu .right.menu,
.ui.stackable.menu .left.menu {
flex-direction: column;
}
}
.ui.borderless.menu .item::before,
.ui.borderless.menu .item .menu .item::before,
.ui.menu .borderless.item::before {
background: none !important;
}
.ui.compact.menu {
display: inline-flex;
margin: 0;
vertical-align: middle;
}
.ui.compact.vertical.menu {
display: inline-block;
width: auto !important;
}
.ui.compact.menu:not(.secondary) .item:last-child {
border-radius: 0 0.28571429rem 0.28571429rem 0;
}
.ui.compact.menu .item:last-child::before {
display: none;
}
.ui.compact.vertical.menu .item:last-child::before {
display: block;
}
.ui.menu.fluid,
.ui.vertical.menu.fluid {
width: 100% !important;
}
.ui.item.menu,
.ui.item.menu .item {
width: 100%;
padding-left: 0 !important;
padding-right: 0 !important;
margin-left: 0 !important;
margin-right: 0 !important;
text-align: center;
justify-content: center;
}
.ui.attached.item.menu:not(.tabular) {
margin: 0 -1px !important;
}
.ui.item.menu .item:last-child::before {
display: none;
}
.ui.menu.two.item .item {
width: 50%;
}
.ui.pointing.menu .item::after {
visibility: hidden;
position: absolute;
content: "";
top: 100%;
left: 50%;
transform: translateX(-50%) translateY(-50%) rotate(45deg);
background: none;
margin: 0.5px 0 0;
width: 0.57142857em;
height: 0.57142857em;
border: none;
border-bottom: 1px solid var(--color-secondary);
border-right: 1px solid var(--color-secondary);
z-index: 2;
}
.ui.pointing.menu .ui.dropdown .menu .item::after {
display: none;
}
.ui.pointing.menu .active.item::after {
visibility: visible;
}
.ui.pointing.menu .active.dropdown.item::after {
visibility: hidden;
}
.ui.pointing.menu .dropdown.active.item::after,
.ui.pointing.menu .active.item .menu .active.item::after {
display: none;
}
.ui.pointing.menu .active.item::after,
.ui.pointing.menu .active.item:hover::after {
background-color: var(--color-active);
}
.ui.attached.menu {
top: 0;
bottom: 0;
border-radius: 0;
margin: 0 -1px;
width: calc(100% + 2px);
max-width: calc(100% + 2px);
}
.ui.attached + .ui.attached.menu:not(.top) {
border-top: none;
}
.ui[class*="top attached"].menu {
bottom: 0;
margin-bottom: 0;
top: 0;
margin-top: 1rem;
border-radius: 0.28571429rem 0.28571429rem 0 0;
}
.ui.menu[class*="top attached"]:first-child {
margin-top: 0;
}
.ui.top.attached.menu > .item:first-child {
border-radius: 0.28571429rem 0 0;
}
.ui.attached.menu:not(.tabular) {
border: 1px solid var(--color-secondary);
}
.ui.attached.tabular.menu {
margin-left: 0;
margin-right: 0;
width: 100%;
}
.ui.mini.menu,
.ui.mini.menu .dropdown,
.ui.mini.menu .dropdown .menu > .item {
font-size: 0.78571429rem;
}
.ui.mini.vertical.menu:not(.icon) {
width: 9rem;
}
.ui.tiny.menu,
.ui.tiny.menu .dropdown,
.ui.tiny.menu .dropdown .menu > .item {
font-size: 0.85714286rem;
}
.ui.tiny.vertical.menu:not(.icon) {
width: 11rem;
}
.ui.small.menu,
.ui.small.menu .dropdown,
.ui.small.menu .dropdown .menu > .item {
font-size: 0.92857143rem;
}
.ui.small.vertical.menu:not(.icon) {
width: 13rem;
}
.ui .menu:not(.vertical) .item > .button.small {
font-size: 0.92857143rem;
}
.ui.segment .ui.tabular.menu .active.item,
.ui.segment .ui.tabular.menu .active.item:hover {
background: var(--color-box-body);
}
.small-menu-items {
min-height: 35.4px !important; /* match .small.button in height */
background: none !important; /* fomantic sets a color here which does not play well with active transparent color on the item, so unset and set the colors on the item */
user-select: none;
}
.small-menu-items .item {
background: var(--color-menu) !important;
padding-top: 6px !important;
padding-bottom: 6px !important;
}
.small-menu-items .item:hover {
background: var(--color-hover) !important;
}
.small-menu-items .item.active {
background: var(--color-active) !important;
}

View File

@@ -0,0 +1,114 @@
/* based on Fomantic UI message module, with just the parts extracted that we use. If you find any
unused rules here after refactoring, please remove them. */
.ui.message {
background: var(--color-box-body);
color: var(--color-text);
border: 1px solid var(--color-secondary);
position: relative;
min-height: 1em;
margin: 1em 0;
padding: 1em 1.5em;
border-radius: var(--border-radius);
}
.ui.message:first-child {
margin-top: 0;
}
.ui.message:last-child {
margin-bottom: 0;
}
.ui.attached.message {
margin-bottom: -1px;
border-radius: var(--border-radius) var(--border-radius) 0 0;
margin-left: -1px;
margin-right: -1px;
}
.ui.attached + .ui.attached.message:not(.top):not(.bottom) {
margin-top: -1px;
border-radius: 0;
}
.ui.bottom.attached.message {
margin-top: -1px;
border-radius: 0 0 var(--border-radius) var(--border-radius);
}
.ui.bottom.attached.message:not(:last-child) {
margin-bottom: 1em;
}
.ui.info.message .header,
.ui.blue.message .header {
color: var(--color-blue);
}
.ui.info.message,
.ui.attached.info.message,
.ui.blue.message,
.ui.attached.blue.message {
background: var(--color-info-bg);
color: var(--color-info-text);
border-color: var(--color-info-border);
}
.ui.success.message .header,
.ui.positive.message .header,
.ui.green.message .header {
color: var(--color-green);
}
.ui.success.message,
.ui.attached.success.message,
.ui.positive.message,
.ui.attached.positive.message {
background: var(--color-success-bg);
color: var(--color-success-text);
border-color: var(--color-success-border);
}
.ui.error.message .header,
.ui.negative.message .header,
.ui.red.message .header {
color: var(--color-red);
}
.ui.error.message,
.ui.attached.error.message,
.ui.red.message,
.ui.attached.red.message,
.ui.negative.message,
.ui.attached.negative.message {
background: var(--color-error-bg);
color: var(--color-error-text);
border-color: var(--color-error-border);
}
.ui.warning.message .header,
.ui.yellow.message .header {
color: var(--color-yellow);
}
.ui.warning.message,
.ui.attached.warning.message,
.ui.yellow.message,
.ui.attached.yellow.message {
background: var(--color-warning-bg);
color: var(--color-warning-text);
border-color: var(--color-warning-border);
}
.ui.message > .close.icon {
cursor: pointer;
position: absolute;
top: 9px;
right: 9px;
opacity: .7;
}
.ui.message > .close.icon:hover {
opacity: 1;
}

View File

@@ -0,0 +1,92 @@
.ui.modal.g-modal-confirm {
max-width: min(800px, 90vw);
width: fit-content;
}
.ui.modal.g-modal-confirm > .inside.close.icon {
padding: 0;
width: 1em;
height: 1em;
top: 1.2em;
}
.ui.modal > .close.inside {
color: inherit;
}
.ui.modal > .close.icon[height="16"] {
top: 0.7em; /* fomantic uses absolute layout, so if we have special icon size, it needs this trick to align vertically */
color: var(--color-text-dark);
}
.ui.modal > .header {
/* can't use display:flex, because some headers have space-separated elements, eg: delete branch modal */
color: var(--color-text-dark);
background: var(--color-body);
border-color: var(--color-secondary);
border-top-left-radius: var(--border-radius);
border-top-right-radius: var(--border-radius);
vertical-align: middle;
}
.ui.modal > .header .svg {
vertical-align: middle;
display: inline-block;
}
.ui.modal {
background: var(--color-body);
box-shadow: 1px 3px 3px 0 var(--color-shadow), 1px 3px 15px 2px var(--color-shadow);
}
/* Gitea sometimes use a form in a modal dialog, then the "positive" button could submit the form directly
Fomantic UI only supports the layout: <div .modal><div .content/><div .actions/></div>
However, Gitea uses the following layouts:
* <div .modal><div .content><div .actions/></div></div>
* <div .modal><form><div .content/><div .actions/></form></div>
* <div .modal><div .content><form><div .actions/></form></div></div>
* <div .modal><div .content></div><form><div .actions/></form></div>
* ...
These inconsistent layouts should be refactored to simple ones.
*/
.ui.modal > .content,
.ui.modal form > .content {
padding: 1.5em;
background: var(--color-body);
border-radius: 0 0 var(--border-radius) var(--border-radius);
}
.ui.modal > .actions,
.ui.modal .content + .actions,
.ui.modal .content + form > .actions {
background: var(--color-secondary-bg);
border-color: var(--color-secondary);
padding: 1rem;
text-align: right;
border-radius: 0 0 var(--border-radius) var(--border-radius);
}
.ui.modal .content > .actions {
padding-top: 1em; /* if the "actions" is in the "content", some paddings are already added by the "content" */
text-align: right;
}
/* positive/negative action buttons */
.ui.modal .actions > .ui.button {
display: inline-flex;
align-items: center;
padding: 10px 12px 10px 10px;
margin-right: 0;
}
.ui.modal .actions > .ui.button.danger {
display: block;
width: 100%;
margin: 0 auto;
text-align: center;
}
.ui.modal .actions > .ui.button .svg {
margin-right: 5px;
}

View File

@@ -0,0 +1,158 @@
#navbar {
display: flex;
align-items: center;
justify-content: space-between;
background: var(--color-nav-bg);
border-bottom: 1px solid var(--color-secondary);
margin: 0 !important;
padding: 0 10px;
}
#navbar,
#navbar .navbar-left,
#navbar .navbar-right {
min-height: 49px; /* +1px border-bottom */
}
#navbar .navbar-left,
#navbar .navbar-right {
margin: 0;
display: flex;
align-items: center;
gap: 5px;
}
#navbar-logo {
margin: 0;
}
.navbar-left > .item,
.navbar-right > .item {
color: var(--color-nav-text);
position: relative;
text-decoration: none;
line-height: var(--line-height-default);
flex: 0 0 auto;
font-weight: var(--font-weight-normal);
align-items: center;
padding: .78571429em .92857143em;
border-radius: .28571429rem;
}
#navbar .item {
min-height: 36px;
min-width: 36px;
padding-top: 3px;
padding-bottom: 3px;
display: flex;
}
#navbar .dropdown .item {
justify-content: stretch;
}
#navbar a.item:hover,
#navbar button.item:hover {
background: var(--color-nav-hover-bg);
}
#navbar .secondary.menu > .item > .svg,
#navbar .right.menu > .item > .svg {
margin-right: 0;
}
@media (max-width: 767.98px) {
#navbar {
align-items: stretch;
}
/* hide all items */
#navbar .navbar-left > .item,
#navbar .navbar-right > .item {
display: none;
}
#navbar #navbar-logo {
display: flex;
}
/* show the first navbar item (logo and its mobile right items) */
#navbar .navbar-left {
flex: 1;
display: flex;
justify-content: space-between;
}
#navbar .navbar-mobile-right {
display: flex;
margin: 0 0 0 auto !important;
width: auto !important;
}
#navbar .navbar-mobile-right > .item {
display: flex;
width: auto !important;
}
/* show items if the navbar is open */
#navbar.navbar-menu-open {
padding-bottom: 8px;
}
#navbar.navbar-menu-open,
#navbar.navbar-menu-open .navbar-right {
flex-direction: column;
}
#navbar.navbar-menu-open .navbar-left {
display: flex;
flex-wrap: wrap;
}
#navbar.navbar-menu-open .item {
display: flex;
width: 100%;
margin: 0;
}
#navbar.navbar-menu-open .navbar-left #navbar-logo {
justify-content: flex-start;
width: auto;
}
#navbar.navbar-menu-open .navbar-left .navbar-mobile-right {
justify-content: flex-end;
width: 50%;
min-height: 48px;
}
#navbar #mobile-stopwatch-icon,
#navbar #mobile-notifications-icon {
margin-right: 6px !important;
}
}
#navbar a.item:hover .notification_count,
#navbar a.item:hover .header-stopwatch-dot {
border-color: var(--color-nav-hover-bg);
}
#navbar a.item .notification_count,
#navbar a.item .header-stopwatch-dot {
color: var(--color-nav-bg);
padding: 0 3.75px;
font-size: 12px;
line-height: 12px;
font-weight: var(--font-weight-bold);
background: var(--color-primary);
border: 2px solid var(--color-nav-bg);
position: absolute;
left: 6px;
top: -9px;
min-width: 17px;
height: 17px;
border-radius: 11px; /* (height + 2 * borderThickness) / 2 */
display: flex;
align-items: center;
justify-content: center;
z-index: 1; /* prevent menu button background from overlaying icon */
user-select: none;
white-space: nowrap;
}
.secondary-nav {
background: var(--color-secondary-nav-bg) !important; /* important because of .ui.secondary.menu */
}
.issue-navbar {
display: flex;
justify-content: space-between;
}

243
web_src/css/modules/normalize.css vendored Normal file
View File

@@ -0,0 +1,243 @@
/*
This is copy of modern-normalize with these changes done:
- Remove html font-family, we set our own
- Remove html tab-size, we set our own
- Remove b,strong font-weight, we set our own
- Remove b,code,samp,pre font-size, we set our own
*/
/*! modern-normalize v2.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */
/*
Document
========
*/
/**
Use a better box model (opinionated).
*/
*,
::before,
::after {
box-sizing: border-box;
}
html {
line-height: normal; /* 1. (not following the "modern-normalize") Do not change the browser's default line-height, the default value is font-dependent and roughly 1.2 */
-webkit-text-size-adjust: 100%; /* 2. Prevent adjustments of font size after orientation changes in iOS. */
}
/*
Sections
========
*/
body {
margin: 0; /* Remove the margin in all browsers. */
}
/*
Grouping content
================
*/
/**
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
*/
hr {
height: 0; /* 1 */
color: inherit; /* 2 */
}
/*
Text-level semantics
====================
*/
/**
Add the correct text decoration in Chrome, Edge, and Safari.
*/
abbr[title] {
text-decoration: underline dotted;
}
/**
Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
Prevent 'sub' and 'sup' elements from affecting the line height in all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/*
Tabular data
============
*/
/**
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
*/
table {
text-indent: 0; /* 1 */
border-color: inherit; /* 2 */
}
/*
Forms
=====
*/
/**
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
*/
button,
input,
optgroup,
select,
textarea {
font-family: inherit; /* 1 */
font-size: 100%; /* 1 */
line-height: 1.15; /* 1 */
margin: 0; /* 2 */
}
/**
Remove the inheritance of text transform in Edge and Firefox.
*/
button,
select {
text-transform: none;
}
/**
Correct the inability to style clickable types in iOS and Safari.
*/
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
/**
Remove the inner border and padding in Firefox.
*/
::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
Restore the focus styles unset by the previous rule.
*/
:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
Remove the additional ':invalid' styles in Firefox.
See: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737
*/
:-moz-ui-invalid {
box-shadow: none;
}
/**
Remove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.
*/
legend {
padding: 0;
}
/**
Add the correct vertical alignment in Chrome and Firefox.
*/
progress {
vertical-align: baseline;
}
/**
Correct the cursor style of increment and decrement buttons in Safari.
*/
::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
height: auto;
}
/**
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/
[type="search"] {
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
}
/**
Remove the inner padding in Chrome and Safari on macOS.
*/
::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to 'inherit' in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}
/*
Interactive
===========
*/
/*
Add the correct display in Chrome and Safari.
*/
summary {
display: list-item;
}

View File

@@ -0,0 +1,209 @@
/* based on Fomantic UI segment module, with just the parts extracted that we use. If you find any
unused rules here after refactoring, please remove them. */
.ui.segment {
position: relative;
margin: 1rem 0;
padding: 1em;
border-radius: 0.28571429rem;
border: 1px solid var(--color-secondary);
background: var(--color-box-body);
color: var(--color-text);
}
.ui.segment:first-child {
margin-top: 0;
}
.ui.segment:last-child {
margin-bottom: 0;
}
.ui.grid.segment {
margin: 1rem 0;
border-radius: 0.28571429rem;
}
.ui.segment.tab:last-child {
margin-bottom: 1rem;
}
.ui.segments {
flex-direction: column;
position: relative;
margin: 1rem 0;
border: 1px solid var(--color-secondary);
border-radius: 0.28571429rem;
background: var(--color-box-body);
color: var(--color-text);
}
.ui.segments:first-child {
margin-top: 0;
}
.ui.segments:last-child {
margin-bottom: 0;
}
.ui.segments > .segment {
top: 0;
bottom: 0;
border-radius: 0;
margin: 0;
width: auto;
box-shadow: none;
border: none;
border-top: 1px solid var(--color-secondary);
}
.ui.segments:not(.horizontal) > .segment:first-child {
top: 0;
bottom: 0;
border-top: none;
margin-top: 0;
margin-bottom: 0;
border-radius: 0.28571429rem 0.28571429rem 0 0;
}
.ui.segments:not(.horizontal) > .segment:last-child {
top: 0;
bottom: 0;
margin-top: 0;
margin-bottom: 0;
border-radius: 0 0 0.28571429rem 0.28571429rem;
}
.ui.segments:not(.horizontal) > .segment:only-child,
.ui.segments:not(.horizontal) > .segment:has(~ .tw-hidden) { /* workaround issue with :last-child ignoring hidden elements */
border-radius: 0.28571429rem;
}
.ui.segments > .ui.segments {
border-top: 1px solid var(--color-secondary);
margin: 1rem;
}
.ui.segments > .segments:first-child {
border-top: none;
}
.ui.segments > .segment + .segments:not(.horizontal) {
margin-top: 0;
}
.ui.horizontal.segments {
display: flex;
flex-direction: row;
background-color: transparent;
padding: 0;
margin: 1rem 0;
border-radius: 0.28571429rem;
border: 1px solid var(--color-secondary);
}
.ui.horizontal.segments > .segment {
margin: 0;
min-width: 0;
border-radius: 0;
border: none;
box-shadow: none;
border-left: 1px solid var(--color-secondary);
}
.ui.segments > .horizontal.segments:first-child {
border-top: none;
}
.ui.horizontal.segments:not(.stackable) > .segment:first-child {
border-left: none;
}
.ui.horizontal.segments > .segment:first-child {
border-radius: 0.28571429rem 0 0 0.28571429rem;
}
.ui.horizontal.segments > .segment:last-child {
border-radius: 0 0.28571429rem 0.28571429rem 0;
}
.ui.clearing.segment::after {
content: "";
display: block;
clear: both;
}
.ui[class*="left aligned"].segment {
text-align: left;
}
.ui[class*="center aligned"].segment {
text-align: center;
}
.ui.secondary.segment {
background: var(--color-secondary-bg);
color: var(--color-text-light);
}
.ui.attached.segment {
top: 0;
bottom: 0;
border-radius: 0;
margin: 0 -1px;
width: calc(100% + 2px);
max-width: calc(100% + 2px);
box-shadow: none;
border: 1px solid var(--color-secondary);
background: var(--color-box-body);
color: var(--color-text);
}
.ui.attached:not(.message) + .ui.attached.segment:not(.top) {
border-top: none;
}
.ui.attached.segment:has(+ .ui[class*="top attached"].header),
.ui.attached.segment:has(+ .page.buttons),
.ui.attached.segment:last-child,
.ui.segment:has(+ .ui.segment:not(.attached)),
.ui.attached.segment:has(+ .ui.modal) {
border-bottom-left-radius: 0.28571429rem;
border-bottom-right-radius: 0.28571429rem;
}
.ui[class*="top attached"].segment {
bottom: 0;
margin-bottom: 0;
top: 0;
margin-top: 1rem;
border-radius: 0.28571429rem 0.28571429rem 0 0;
}
.ui.segment[class*="top attached"]:first-child {
margin-top: 0;
}
.ui[class*="top attached"].segment:last-child {
border-top-left-radius: 0.28571429rem;
border-top-right-radius: 0.28571429rem;
}
.ui.segment[class*="bottom attached"] {
bottom: 0;
margin-top: 0;
top: 0;
margin-bottom: 1rem;
border-radius: 0 0 0.28571429rem 0.28571429rem;
}
.ui.segment[class*="bottom attached"]:last-child {
margin-bottom: 1rem;
}
.ui.fitted.segment:not(.horizontally) {
padding-top: 0;
padding-bottom: 0;
}
.ui.fitted.segment:not(.vertically) {
padding-left: 0;
padding-right: 0;
}
.ui.segments .segment,
.ui.segment {
font-size: 1rem;
}
.ui.error.segment {
border-color: var(--color-error-border) !important;
}
.ui.warning.segment {
border-color: var(--color-warning-border) !important;
}

View File

@@ -0,0 +1,25 @@
.gitea-select {
position: relative;
}
.gitea-select select {
appearance: none; /* hide default triangle */
}
/* ::before and ::after pseudo elements don't work on select elements,
so we need to put it on the parent. */
.gitea-select::after {
position: absolute;
top: 12px;
right: 8px;
pointer-events: none;
content: "";
width: 14px;
height: 14px;
mask-size: cover;
-webkit-mask-size: cover;
mask-image: var(--octicon-chevron-right);
-webkit-mask-image: var(--octicon-chevron-right);
transform: rotate(90deg); /* point the chevron down */
background: currentcolor;
}

View File

@@ -0,0 +1,41 @@
.svg {
display: inline-block;
vertical-align: text-top;
fill: currentcolor;
}
.middle .svg {
vertical-align: middle;
}
/* prevent SVGs from shrinking, like in space-starved flexboxes. the sizes
here are cherry-picked for our use cases, feel free to add more. after
https://developer.mozilla.org/en-US/docs/Web/CSS/attr#type-or-unit is
supported in browsers, use `attr(width px)` instead for a generic
solution. */
.svg[height="12"] { min-height: 12px; }
.svg[height="13"] { min-height: 13px; }
.svg[height="14"] { min-height: 14px; }
.svg[height="15"] { min-height: 15px; }
.svg[height="16"] { min-height: 16px; }
.svg[height="18"] { min-height: 18px; }
.svg[height="20"] { min-height: 20px; }
.svg[height="22"] { min-height: 22px; }
.svg[height="24"] { min-height: 24px; }
.svg[height="36"] { min-height: 36px; }
.svg[height="48"] { min-height: 48px; }
.svg[height="56"] { min-height: 56px; }
.svg[width="12"] { min-width: 12px; }
.svg[width="13"] { min-width: 13px; }
.svg[width="14"] { min-width: 14px; }
.svg[width="15"] { min-width: 15px; }
.svg[width="16"] { min-width: 16px; }
.svg[width="18"] { min-width: 18px; }
.svg[width="20"] { min-width: 20px; }
.svg[width="22"] { min-width: 22px; }
.svg[width="24"] { min-width: 24px; }
.svg[width="36"] { min-width: 36px; }
.svg[width="48"] { min-width: 48px; }
.svg[width="56"] { min-width: 56px; }

View File

@@ -0,0 +1,385 @@
/* based on Fomantic UI segment module, with just the parts extracted that we use. If you find any
unused rules here after refactoring, please remove them. */
.ui.table {
width: 100%;
margin: 1em 0;
border: 1px solid var(--color-secondary);
border-radius: 0.28571429rem;
vertical-align: middle;
border-collapse: separate;
border-spacing: 0;
color: var(--color-text);
background: var(--color-box-body);
border-color: var(--color-secondary);
text-align: start;
}
.ui.table:first-child {
margin-top: 0;
}
.ui.table:last-child {
margin-bottom: 0;
}
.ui.table > thead,
.ui.table > tbody {
text-align: inherit;
vertical-align: inherit;
}
.ui.table > thead > tr > th {
background: var(--color-box-header);
text-align: inherit;
color: var(--color-text);
padding: 6px 5px;
vertical-align: inherit;
font-weight: var(--font-weight-normal);
border-bottom: 1px solid var(--color-secondary);
border-left: none;
}
.ui.table > thead > tr > th:first-child {
border-left: none;
}
.ui.table > thead > tr:first-child > th:first-child {
border-radius: 0.28571429rem 0 0;
}
.ui.table > thead > tr:first-child > th:last-child {
border-radius: 0 0.28571429rem 0 0;
}
.ui.table > thead > tr:first-child > th:only-child {
border-radius: 0.28571429rem 0.28571429rem 0 0;
}
.ui.table > tfoot > tr > th,
.ui.table > tfoot > tr > td {
border-top: 1px solid var(--color-secondary);
background: var(--color-box-body);
text-align: inherit;
color: var(--color-text);
padding: 0.78571429em;
vertical-align: inherit;
font-weight: var(--font-weight-normal);
}
.ui.table > tfoot > tr > th:first-child,
.ui.table > tfoot > tr > td:first-child {
border-left: none;
}
.ui.table > tfoot > tr:first-child > th:first-child,
.ui.table > tfoot > tr:first-child > td:first-child {
border-radius: 0 0 0 0.28571429rem;
}
.ui.table > tfoot > tr:first-child > th:last-child,
.ui.table > tfoot > tr:first-child > td:last-child {
border-radius: 0 0 0.28571429rem;
}
.ui.table > tfoot > tr:first-child > th:only-child,
.ui.table > tfoot > tr:first-child > td:only-child {
border-radius: 0 0 0.28571429rem 0.28571429rem;
}
.ui.table > tr > td,
.ui.table > tbody > tr > td {
border-top: 1px solid var(--color-secondary-alpha-50);
padding: 6px 5px;
text-align: inherit;
}
.ui.table > tr:first-child > td,
.ui.table > tbody > tr:first-child > td {
border-top: none;
}
.ui.table.segment {
padding: 0;
}
.ui.table.segment::after {
display: none;
}
@media only screen and (max-width: 767.98px) {
.ui.table:not(.unstackable) {
width: 100%;
padding: 0;
}
.ui.table:not(.unstackable) > thead,
.ui.table:not(.unstackable) > thead > tr,
.ui.table:not(.unstackable) > tfoot,
.ui.table:not(.unstackable) > tfoot > tr,
.ui.table:not(.unstackable) > tbody,
.ui.table:not(.unstackable) > tr,
.ui.table:not(.unstackable) > tbody > tr,
.ui.table:not(.unstackable) > tr > th,
.ui.table:not(.unstackable) > thead > tr > th,
.ui.table:not(.unstackable) > tbody > tr > th,
.ui.table:not(.unstackable) > tfoot > tr > th,
.ui.table:not(.unstackable) > tr > td,
.ui.table:not(.unstackable) > tbody > tr > td,
.ui.table:not(.unstackable) > tfoot > tr > td {
display: block !important;
width: auto !important;
}
.ui.table:not(.unstackable) > thead {
display: block;
}
.ui.table:not(.unstackable) > tfoot {
display: block;
}
.ui.ui.ui.ui.table:not(.unstackable) > tr,
.ui.ui.ui.ui.table:not(.unstackable) > thead > tr,
.ui.ui.ui.ui.table:not(.unstackable) > tbody > tr,
.ui.ui.ui.ui.table:not(.unstackable) > tfoot > tr {
padding-top: 1em;
padding-bottom: 1em;
}
.ui.ui.ui.ui.table:not(.unstackable) > tr > th,
.ui.ui.ui.ui.table:not(.unstackable) > thead > tr > th,
.ui.ui.ui.ui.table:not(.unstackable) > tbody > tr > th,
.ui.ui.ui.ui.table:not(.unstackable) > tfoot > tr > th,
.ui.ui.ui.ui.table:not(.unstackable) > tr > td,
.ui.ui.ui.ui.table:not(.unstackable) > tbody > tr > td,
.ui.ui.ui.ui.table:not(.unstackable) > tfoot > tr > td {
background: none;
border: none;
padding: 0.25em 0.75em;
}
.ui.table:not(.unstackable) > tr > th:first-child,
.ui.table:not(.unstackable) > thead > tr > th:first-child,
.ui.table:not(.unstackable) > tbody > tr > th:first-child,
.ui.table:not(.unstackable) > tfoot > tr > th:first-child,
.ui.table:not(.unstackable) > tr > td:first-child,
.ui.table:not(.unstackable) > tbody > tr > td:first-child,
.ui.table:not(.unstackable) > tfoot > tr > td:first-child {
font-weight: var(--font-weight-normal);
}
}
.ui.table[class*="left aligned"],
.ui.table [class*="left aligned"] {
text-align: left;
}
.ui.table[class*="center aligned"],
.ui.table [class*="center aligned"] {
text-align: center;
}
.ui.table[class*="right aligned"],
.ui.table [class*="right aligned"] {
text-align: right;
}
.ui.table[class*="top aligned"],
.ui.table [class*="top aligned"] {
vertical-align: top;
}
.ui.table[class*="middle aligned"],
.ui.table [class*="middle aligned"] {
vertical-align: middle;
}
.ui.table th.collapsing,
.ui.table td.collapsing {
width: 1px;
white-space: nowrap;
}
.ui.fixed.table {
table-layout: fixed;
}
.ui.fixed.table th,
.ui.fixed.table td {
overflow: hidden;
text-overflow: ellipsis;
}
.ui.attached.table {
top: 0;
bottom: 0;
border-radius: 0;
margin: 0 -1px;
width: calc(100% + 2px);
max-width: calc(100% + 2px);
border: 1px solid var(--color-secondary);
}
.ui.attached + .ui.attached.table:not(.top) {
border-top: none;
}
.ui[class*="bottom attached"].table {
bottom: 0;
margin-top: 0;
top: 0;
margin-bottom: 1em;
border-radius: 0 0 0.28571429rem 0.28571429rem;
}
.ui[class*="bottom attached"].table:last-child {
margin-bottom: 0;
}
.ui.striped.table > tr:nth-child(2n),
.ui.striped.table > tbody > tr:nth-child(2n) {
background: var(--color-light);
}
.ui.table[class*="single line"],
.ui.table [class*="single line"] {
white-space: nowrap;
}
/* Column Width */
.ui.table th.one.wide,
.ui.table td.one.wide {
width: 6.25%;
}
.ui.table th.two.wide,
.ui.table td.two.wide {
width: 12.5%;
}
.ui.table th.three.wide,
.ui.table td.three.wide {
width: 18.75%;
}
.ui.table th.four.wide,
.ui.table td.four.wide {
width: 25%;
}
.ui.table th.five.wide,
.ui.table td.five.wide {
width: 31.25%;
}
.ui.table th.six.wide,
.ui.table td.six.wide {
width: 37.5%;
}
.ui.table th.seven.wide,
.ui.table td.seven.wide {
width: 43.75%;
}
.ui.table th.eight.wide,
.ui.table td.eight.wide {
width: 50%;
}
.ui.table th.nine.wide,
.ui.table td.nine.wide {
width: 56.25%;
}
.ui.table th.ten.wide,
.ui.table td.ten.wide {
width: 62.5%;
}
.ui.table th.eleven.wide,
.ui.table td.eleven.wide {
width: 68.75%;
}
.ui.table th.twelve.wide,
.ui.table td.twelve.wide {
width: 75%;
}
.ui.table th.thirteen.wide,
.ui.table td.thirteen.wide {
width: 81.25%;
}
.ui.table th.fourteen.wide,
.ui.table td.fourteen.wide {
width: 87.5%;
}
.ui.table th.fifteen.wide,
.ui.table td.fifteen.wide {
width: 93.75%;
}
.ui.table th.sixteen.wide,
.ui.table td.sixteen.wide {
width: 100%;
}
.ui.basic.table {
background: transparent;
border: 1px solid var(--color-secondary);
}
.ui.basic.table > thead > tr > th,
.ui.basic.table > tbody > tr > th,
.ui.basic.table > tfoot > tr > th,
.ui.basic.table > tr > th {
background: transparent;
border-left: none;
}
.ui.basic.table > tbody > tr {
border-bottom: 1px solid var(--color-secondary);
}
.ui.basic.table > tbody > tr > td,
.ui.basic.table > tfoot > tr > td,
.ui.basic.table > tr > td {
background: transparent;
}
.ui.basic.striped.table > tbody > tr:nth-child(2n) {
background: var(--color-light);
}
.ui[class*="very basic"].table {
border: none;
}
.ui[class*="very basic"].table:not(.striped) > tr > th:first-child,
.ui[class*="very basic"].table:not(.striped) > thead > tr > th:first-child,
.ui[class*="very basic"].table:not(.striped) > tbody > tr > th:first-child,
.ui[class*="very basic"].table:not(.striped) > tfoot > tr > th:first-child,
.ui[class*="very basic"].table:not(.striped) > tr > td:first-child,
.ui[class*="very basic"].table:not(.striped) > tbody > tr > td:first-child,
.ui[class*="very basic"].table:not(.striped) > tfoot > tr > td:first-child {
padding-left: 0;
}
.ui[class*="very basic"].table:not(.striped) > tr > th:last-child,
.ui[class*="very basic"].table:not(.striped) > thead > tr > th:last-child,
.ui[class*="very basic"].table:not(.striped) > tbody > tr > th:last-child,
.ui[class*="very basic"].table:not(.striped) > tfoot > tr > th:last-child,
.ui[class*="very basic"].table:not(.striped) > tr > td:last-child,
.ui[class*="very basic"].table:not(.striped) > tbody > tr > td:last-child,
.ui[class*="very basic"].table:not(.striped) > tfoot > tr > td:last-child {
padding-right: 0;
}
.ui[class*="very basic"].table:not(.striped) > thead > tr:first-child > th {
padding-top: 0;
}
.ui.celled.table > tr > th,
.ui.celled.table > thead > tr > th,
.ui.celled.table > tbody > tr > th,
.ui.celled.table > tfoot > tr > th,
.ui.celled.table > tr > td,
.ui.celled.table > tbody > tr > td,
.ui.celled.table > tfoot > tr > td {
border-left: 1px solid var(--color-secondary-alpha-50);
}
.ui.celled.table > tr > th:first-child,
.ui.celled.table > thead > tr > th:first-child,
.ui.celled.table > tbody > tr > th:first-child,
.ui.celled.table > tfoot > tr > th:first-child,
.ui.celled.table > tr > td:first-child,
.ui.celled.table > tbody > tr > td:first-child,
.ui.celled.table > tfoot > tr > td:first-child {
border-left: none;
}
.ui.compact.table > tr > th,
.ui.compact.table > thead > tr > th,
.ui.compact.table > tbody > tr > th,
.ui.compact.table > tfoot > tr > th {
padding-left: 0.7em;
padding-right: 0.7em;
}
.ui.compact.table > tr > td,
.ui.compact.table > tbody > tr > td,
.ui.compact.table > tfoot > tr > td {
padding: 0.5em 0.7em;
}
/* use more horizontal padding on first and last items for visuals */
.ui.table > thead > tr > th:first-of-type,
.ui.table > tbody > tr > td:first-of-type,
.ui.table > tr > td:first-of-type {
padding-left: 10px;
}
.ui.table > thead > tr > th:last-of-type,
.ui.table > tbody > tr > td:last-of-type,
.ui.table > tr > td:last-of-type {
padding-right: 10px;
}

View File

@@ -0,0 +1,171 @@
/* styles are based on node_modules/tippy.js/dist/tippy.css */
/* class to hide tippy target elements on page load */
.tippy-target {
display: none !important;
}
/* show target element once it's been moved by tippy.js */
.tippy-content .tippy-target {
display: unset !important;
}
[data-tippy-root] {
max-width: calc(100vw - 32px);
}
.tippy-box {
position: relative;
background-color: var(--color-menu);
color: var(--color-text);
border: 1px solid var(--color-secondary);
border-radius: var(--border-radius);
font-size: 1rem;
}
.tippy-content {
position: relative;
z-index: 1;
}
/* bare theme, no styling at all, except box-shadow */
.tippy-box[data-theme="bare"] {
border: none;
box-shadow: 0 6px 18px var(--color-shadow);
}
.tippy-box[data-theme="bare"] .tippy-content {
padding: 0;
background: transparent;
}
/* tooltip theme for text tooltips */
.tippy-box[data-theme="tooltip"] {
background-color: var(--color-tooltip-bg);
color: var(--color-tooltip-text);
border: none;
}
.tippy-box[data-theme="tooltip"] .tippy-content {
padding: 0.5rem 1rem;
}
.tippy-box[data-theme="tooltip"] .tippy-svg-arrow-inner,
.tippy-box[data-theme="tooltip"] .tippy-svg-arrow-outer {
fill: var(--color-tooltip-bg);
}
/* menu theme for .ui.menu */
.tippy-box[data-theme="menu"] {
background-color: var(--color-menu);
color: var(--color-text);
box-shadow: 0 6px 18px var(--color-shadow);
}
.tippy-box[data-theme="menu"] .tippy-content {
padding: 4px 0;
}
.tippy-box[data-theme="menu"] .tippy-svg-arrow-inner {
fill: var(--color-menu);
}
.tippy-box[data-theme="menu"] .item {
display: flex;
align-items: center;
padding: 9px 18px;
color: inherit;
background: inherit;
text-decoration: none;
gap: 10px;
width: 100%;
}
.tippy-box[data-theme="menu"] .item:hover {
background: var(--color-hover);
}
.tippy-box[data-theme="menu"] .item:focus {
background: var(--color-active);
}
/* box-with-header theme to look like .ui.attached.segment. can contain .ui.attached.header */
.tippy-box[data-theme="box-with-header"] {
box-shadow: 0 6px 18px var(--color-shadow);
}
.tippy-box[data-theme="box-with-header"] .tippy-content {
background: var(--color-box-body);
border-radius: var(--border-radius);
padding: 0;
}
.tippy-box[data-theme="box-with-header"][data-placement^="top"] .tippy-svg-arrow-inner {
fill: var(--color-box-body);
}
.tippy-box[data-theme="box-with-header"][data-placement^="bottom"] .tippy-svg-arrow-inner {
fill: var(--color-box-header);
}
.tippy-box[data-placement^="top"] > .tippy-svg-arrow {
bottom: 0;
}
.tippy-box[data-placement^="top"] > .tippy-svg-arrow::after,
.tippy-box[data-placement^="top"] > .tippy-svg-arrow > svg {
top: 16px;
transform: rotate(180deg);
}
.tippy-box[data-placement^="bottom"] > .tippy-svg-arrow {
top: 0;
}
.tippy-box[data-placement^="bottom"] > .tippy-svg-arrow > svg {
bottom: 16px;
}
.tippy-box[data-placement^="left"] > .tippy-svg-arrow {
right: 0;
}
.tippy-box[data-placement^="left"] > .tippy-svg-arrow::after,
.tippy-box[data-placement^="left"] > .tippy-svg-arrow > svg {
transform: rotate(90deg);
top: calc(50% - 3px);
left: 11px;
}
.tippy-box[data-placement^="right"] > .tippy-svg-arrow {
left: 0;
}
.tippy-box[data-placement^="right"] > .tippy-svg-arrow::after,
.tippy-box[data-placement^="right"] > .tippy-svg-arrow > svg {
transform: rotate(-90deg);
top: calc(50% - 3px);
right: 11px;
}
.tippy-svg-arrow {
width: 16px;
height: 16px;
text-align: initial;
}
.tippy-svg-arrow,
.tippy-svg-arrow > svg {
position: absolute;
}
.tippy-svg-arrow-outer {
fill: var(--color-secondary);
}
.tippy-svg-arrow-inner {
fill: var(--color-menu);
}

View File

@@ -0,0 +1,91 @@
.toastify {
color: var(--color-white);
position: fixed;
opacity: 0;
transition: all .2s ease;
z-index: 500;
border-radius: var(--border-radius);
box-shadow: 0 8px 24px var(--color-shadow);
display: flex;
max-width: 50vw;
min-width: 300px;
padding: 4px;
}
.toastify.on {
opacity: 1;
}
.toast-body {
flex: 1;
padding: 5px 0;
overflow-wrap: anywhere;
}
.toast-close {
border-radius: var(--border-radius);
width: 30px;
height: 30px;
justify-content: center;
}
.toast-icon {
display: inline-flex;
width: 30px;
height: 30px;
align-items: center;
justify-content: center;
}
.toast-duplicate-number::before {
content: "(";
}
.toast-duplicate-number {
display: inline-block;
margin-right: 5px;
user-select: none;
}
.toast-duplicate-number::after {
content: ")";
}
.toast-close:hover {
background: var(--color-hover);
}
.toast-close:active {
background: var(--color-active);
}
.toastify-right {
right: 15px;
}
.toastify-left {
left: 15px;
}
.toastify-top {
top: -150px;
}
.toastify-bottom {
bottom: -150px;
}
.toastify-center {
margin-left: auto;
margin-right: auto;
left: 0;
right: 0;
}
@media (max-width: 360px) {
.toastify-right, .toastify-left {
margin-left: auto;
margin-right: auto;
left: 0;
right: 0;
max-width: fit-content;
}
}

158
web_src/css/org.css Normal file
View File

@@ -0,0 +1,158 @@
#create-page-form form {
margin: auto;
}
#create-page-form form .ui.message {
text-align: center;
}
@media (min-width: 768px) {
#create-page-form form {
width: 800px !important;
}
#create-page-form form .header {
padding-left: 280px !important;
}
#create-page-form form .inline.field > label {
text-align: right;
width: 250px !important;
word-wrap: break-word;
}
#create-page-form form .help {
margin-left: 265px !important;
}
#create-page-form form .optional .title {
margin-left: 250px !important;
}
#create-page-form form .inline.field > input,
#create-page-form form .inline.field > textarea {
width: 50%;
}
}
@media (max-width: 767.98px) {
#create-page-form form .optional .title {
margin-left: 15px;
}
#create-page-form form .inline.field > label {
display: block;
}
}
.organization .head .ui.header .ui.right {
margin-top: 5px;
}
.organization.new.org form {
margin: auto;
}
.organization.new.org form .ui.message {
text-align: center;
}
@media (min-width: 768px) {
.organization.new.org form {
width: 800px !important;
}
.organization.new.org form .header {
padding-left: 280px !important;
}
.organization.new.org form .inline.field > label {
text-align: right;
width: 250px !important;
word-wrap: break-word;
}
.organization.new.org form .help {
margin-left: 265px !important;
}
.organization.new.org form .optional .title {
margin-left: 250px !important;
}
.organization.new.org form .inline.field > input,
.organization.new.org form .inline.field > textarea {
width: 50%;
}
}
@media (max-width: 767.98px) {
.organization.new.org form .optional .title {
margin-left: 15px;
}
.organization.new.org form .inline.field > label {
display: block;
}
}
.organization.new.org form .header {
padding-left: 0 !important;
text-align: center;
}
.page-content.organization .org-avatar {
margin-right: 15px;
}
.page-content.organization #org-info .ui.header {
display: flex;
align-items: center;
font-size: 36px;
margin-bottom: 0;
}
.page-content.organization #org-info .desc {
font-size: 16px;
margin-bottom: 10px;
}
.page-content.organization #org-info .meta {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 8px;
}
.page-content.organization .ui.top.header .ui.right {
margin-top: 0;
}
.page-content.organization .teams .item {
padding: 10px 15px;
}
.page-content.organization .members .ui.avatar {
margin-right: 5px;
margin-bottom: 5px;
}
.organization.invite #invite-box {
margin: 50px auto auto;
width: 500px !important;
}
.organization.invite #invite-box #search-user-box input {
margin-left: 0;
width: 300px;
}
.organization.invite #invite-box .ui.button {
margin-left: 5px;
margin-top: -3px;
}
.organization.invite .ui.avatar {
width: 100%;
height: 100%;
}
.organization.teams .detail .item {
padding: 10px 15px;
}
.organization.teams .detail .item:not(:last-child) {
border-bottom: 1px solid var(--color-secondary);
}
.org-team-navbar .active.item {
background: var(--color-box-body) !important;
}

2334
web_src/css/repo.css Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,35 @@
/* only used by "repo/empty.tmpl" */
.clone-buttons-combo {
display: flex;
align-items: center;
flex: 1;
}
.clone-buttons-combo input {
border-left: none !important;
border-radius: 0 !important;
height: 30px;
}
/* used by the clone-panel popup */
.clone-panel-field,
.clone-panel-list {
margin: 10px;
}
.clone-panel-tab .item {
padding: 5px 10px;
background: none;
}
.clone-panel-tab .item.active {
border-bottom: 3px solid var(--color-secondary);
}
.clone-panel-tab + .divider {
margin: -1px 0 0;
}
.clone-panel-list .item {
margin: 5px 0;
}

View File

@@ -0,0 +1,272 @@
.repository .ui.attached.isSigned.isWarning {
border-left: 1px solid var(--color-error-border);
border-right: 1px solid var(--color-error-border);
}
.repository .ui.attached.isSigned.isWarning.top,
.repository .ui.attached.isSigned.isWarning.message {
border-top: 1px solid var(--color-error-border);
}
.repository .ui.attached.isSigned.isWarning.message {
box-shadow: none;
background-color: var(--color-error-bg);
color: var(--color-error-text);
}
.repository .ui.attached.isSigned.isWarning.message .ui.text {
color: var(--color-error-text);
}
.repository .ui.attached.isSigned.isWarning:last-child,
.repository .ui.attached.isSigned.isWarning.bottom {
border-bottom: 1px solid var(--color-error-border);
}
.repository .ui.attached.isSigned.isVerified {
border-left: 1px solid var(--color-success-border);
border-right: 1px solid var(--color-success-border);
}
.repository .ui.attached.isSigned.isVerified.top,
.repository .ui.attached.isSigned.isVerified.message {
border-top: 1px solid var(--color-success-border);
}
.repository .ui.attached.isSigned.isVerified.message {
box-shadow: none;
background-color: var(--color-success-bg);
color: var(--color-success-text);
}
.repository .ui.attached.isSigned.isVerified.message .pull-right {
color: var(--color-text);
}
.repository .ui.attached.isSigned.isVerified.message .ui.text {
color: var(--color-success-text);
}
.repository .ui.attached.isSigned.isVerified:last-child,
.repository .ui.attached.isSigned.isVerified.bottom {
border-bottom: 1px solid var(--color-success-border);
}
.repository .ui.attached.isSigned.isVerifiedUntrusted,
.repository .ui.attached.isSigned.isVerifiedUnmatched {
border-left: 1px solid var(--color-warning-border);
border-right: 1px solid var(--color-warning-border);
}
.repository .ui.attached.isSigned.isVerifiedUntrusted.top,
.repository .ui.attached.isSigned.isVerifiedUnmatched.top,
.repository .ui.attached.isSigned.isVerifiedUntrusted.message,
.repository .ui.attached.isSigned.isVerifiedUnmatched.message {
border-top: 1px solid var(--color-warning-border);
}
.repository .ui.attached.isSigned.isVerifiedUntrusted.message,
.repository .ui.attached.isSigned.isVerifiedUnmatched.message {
box-shadow: none;
background-color: var(--color-warning-bg);
color: var(--color-warning-text);
}
.repository .ui.attached.isSigned.isVerifiedUntrusted.message .ui.text,
.repository .ui.attached.isSigned.isVerifiedUnmatched.message .ui.text {
color: var(--color-warning-text);
}
.repository .ui.attached.isSigned.isVerifiedUntrusted:last-child,
.repository .ui.attached.isSigned.isVerifiedUnmatched:last-child,
.repository .ui.attached.isSigned.isVerifiedUntrusted.bottom,
.repository .ui.attached.isSigned.isVerifiedUnmatched.bottom {
border-bottom: 1px solid var(--color-warning-border);
}
.repository #commits-table td.sha .sha.label,
.repository #repo-files-table .sha.label,
.repository #repo-file-commit-box .sha.label,
.repository #rev-list .sha.label,
.repository .timeline-item.commits-list .singular-commit .sha.label {
border: 1px solid var(--color-light-border);
}
.repository #commits-table td.sha .sha.label .detail.icon,
.repository #repo-files-table .sha.label .detail.icon,
.repository #repo-file-commit-box .sha.label .detail.icon,
.repository #rev-list .sha.label .detail.icon,
.repository .timeline-item.commits-list .singular-commit .sha.label .detail.icon {
background: var(--color-light);
margin: -6px -10px -4px 0;
padding: 5px 4px 5px 6px;
border-left: 1px solid var(--color-light-border);
border-top: 0;
border-right: 0;
border-bottom: 0;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.repository #commits-table td.sha .sha.label .detail.icon .svg,
.repository #repo-files-table .sha.label .detail.icon .svg,
.repository #repo-file-commit-box .sha.label .detail.icon .svg,
.repository #rev-list .sha.label .detail.icon .svg,
.repository .timeline-item.commits-list .singular-commit .sha.label .detail.icon .svg {
margin: 0 0.25em 0 0;
}
.repository #commits-table td.sha .sha.label .detail.icon > div,
.repository #repo-files-table .sha.label .detail.icon > div,
.repository #repo-file-commit-box .sha.label .detail.icon > div,
.repository #rev-list .sha.label .detail.icon > div,
.repository .timeline-item.commits-list .singular-commit .sha.label .detail.icon > div {
display: flex;
align-items: center;
}
.repository #commits-table td.sha .sha.label.isSigned.isWarning,
.repository #repo-files-table .sha.label.isSigned.isWarning,
.repository #repo-file-commit-box .sha.label.isSigned.isWarning,
.repository #rev-list .sha.label.isSigned.isWarning,
.repository .timeline-item.commits-list .singular-commit .sha.label.isSigned.isWarning {
border: 1px solid var(--color-red-badge);
background: var(--color-red-badge-bg);
}
.repository #commits-table td.sha .sha.label.isSigned.isWarning .detail.icon,
.repository #repo-files-table .sha.label.isSigned.isWarning .detail.icon,
.repository #repo-file-commit-box .sha.label.isSigned.isWarning .detail.icon,
.repository #rev-list .sha.label.isSigned.isWarning .detail.icon,
.repository .timeline-item.commits-list .singular-commit .sha.label.isSigned.isWarning .detail.icon {
border-left: 1px solid var(--color-red-badge);
color: var(--color-red-badge);
}
.repository #commits-table td.sha .sha.label.isSigned.isWarning:hover,
.repository #repo-files-table .sha.label.isSigned.isWarning:hover,
.repository #repo-file-commit-box .sha.label.isSigned.isWarning:hover,
.repository #rev-list .sha.label.isSigned.isWarning:hover,
.repository .timeline-item.commits-list .singular-commit .sha.label.isSigned.isWarning:hover {
background: var(--color-red-badge-hover-bg) !important;
}
.repository #commits-table td.sha .sha.label.isSigned.isVerified,
.repository #repo-files-table .sha.label.isSigned.isVerified,
.repository #repo-file-commit-box .sha.label.isSigned.isVerified,
.repository #rev-list .sha.label.isSigned.isVerified,
.repository .timeline-item.commits-list .singular-commit .sha.label.isSigned.isVerified {
border: 1px solid var(--color-green-badge);
background: var(--color-green-badge-bg);
}
.repository #commits-table td.sha .sha.label.isSigned.isVerified .detail.icon,
.repository #repo-files-table .sha.label.isSigned.isVerified .detail.icon,
.repository #repo-file-commit-box .sha.label.isSigned.isVerified .detail.icon,
.repository #rev-list .sha.label.isSigned.isVerified .detail.icon,
.repository .timeline-item.commits-list .singular-commit .sha.label.isSigned.isVerified .detail.icon {
border-left: 1px solid var(--color-green-badge);
color: var(--color-green-badge);
}
.repository #commits-table td.sha .sha.label.isSigned.isVerified:hover,
.repository #repo-files-table .sha.label.isSigned.isVerified:hover,
.repository #repo-file-commit-box .sha.label.isSigned.isVerified:hover,
.repository #rev-list .sha.label.isSigned.isVerified:hover,
.repository .timeline-item.commits-list .singular-commit .sha.label.isSigned.isVerified:hover {
background: var(--color-green-badge-hover-bg) !important;
}
.repository #commits-table td.sha .sha.label.isSigned.isVerifiedUntrusted,
.repository #repo-files-table .sha.label.isSigned.isVerifiedUntrusted,
.repository #repo-file-commit-box .sha.label.isSigned.isVerifiedUntrusted,
.repository #rev-list .sha.label.isSigned.isVerifiedUntrusted,
.repository .timeline-item.commits-list .singular-commit .sha.label.isSigned.isVerifiedUntrusted {
border: 1px solid var(--color-yellow-badge);
background: var(--color-yellow-badge-bg);
}
.repository #commits-table td.sha .sha.label.isSigned.isVerifiedUntrusted .detail.icon,
.repository #repo-files-table .sha.label.isSigned.isVerifiedUntrusted .detail.icon,
.repository #repo-file-commit-box .sha.label.isSigned.isVerifiedUntrusted .detail.icon,
.repository #rev-list .sha.label.isSigned.isVerifiedUntrusted .detail.icon,
.repository .timeline-item.commits-list .singular-commit .sha.label.isSigned.isVerifiedUntrusted .detail.icon {
border-left: 1px solid var(--color-yellow-badge);
color: var(--color-yellow-badge);
}
.repository #commits-table td.sha .sha.label.isSigned.isVerifiedUntrusted:hover,
.repository #repo-files-table .sha.label.isSigned.isVerifiedUntrusted:hover,
.repository #repo-file-commit-box .sha.label.isSigned.isVerifiedUntrusted:hover,
.repository #rev-list .sha.label.isSigned.isVerifiedUntrusted:hover,
.repository .timeline-item.commits-list .singular-commit .sha.label.isSigned.isVerifiedUntrusted:hover {
background: var(--color-yellow-badge-hover-bg) !important;
}
.repository #commits-table td.sha .sha.label.isSigned.isVerifiedUnmatched,
.repository #repo-files-table .sha.label.isSigned.isVerifiedUnmatched,
.repository #repo-file-commit-box .sha.label.isSigned.isVerifiedUnmatched,
.repository #rev-list .sha.label.isSigned.isVerifiedUnmatched,
.repository .timeline-item.commits-list .singular-commit .sha.label.isSigned.isVerifiedUnmatched {
border: 1px solid var(--color-orange-badge);
background: var(--color-orange-badge-bg);
}
.repository #commits-table td.sha .sha.label.isSigned.isVerifiedUnmatched .detail.icon,
.repository #repo-files-table .sha.label.isSigned.isVerifiedUnmatched .detail.icon,
.repository #repo-file-commit-box .sha.label.isSigned.isVerifiedUnmatched .detail.icon,
.repository #rev-list .sha.label.isSigned.isVerifiedUnmatched .detail.icon,
.repository .timeline-item.commits-list .singular-commit .sha.label.isSigned.isVerifiedUnmatched .detail.icon {
border-left: 1px solid var(--color-orange-badge);
color: var(--color-orange-badge);
}
.repository #commits-table td.sha .sha.label.isSigned.isVerifiedUnmatched:hover,
.repository #repo-files-table .sha.label.isSigned.isVerifiedUnmatched:hover,
.repository #repo-file-commit-box .sha.label.isSigned.isVerifiedUnmatched:hover,
.repository #rev-list .sha.label.isSigned.isVerifiedUnmatched:hover,
.repository .timeline-item.commits-list .singular-commit .sha.label.isSigned.isVerifiedUnmatched:hover {
background: var(--color-orange-badge-hover-bg) !important;
}
.singular-commit .shabox .sha.label {
margin: 0;
border: 1px solid var(--color-light-border);
}
.singular-commit .shabox .sha.label.isSigned.isWarning {
border: 1px solid var(--color-red-badge);
background: var(--color-red-badge-bg);
}
.singular-commit .shabox .sha.label.isSigned.isWarning:hover {
background: var(--color-red-badge-hover-bg) !important;
}
.singular-commit .shabox .sha.label.isSigned.isVerified {
border: 1px solid var(--color-green-badge);
background: var(--color-green-badge-bg);
}
.singular-commit .shabox .sha.label.isSigned.isVerified:hover {
background: var(--color-green-badge-hover-bg) !important;
}
.singular-commit .shabox .sha.label.isSigned.isVerifiedUntrusted {
border: 1px solid var(--color-yellow-badge);
background: var(--color-yellow-badge-bg);
}
.singular-commit .shabox .sha.label.isSigned.isVerifiedUntrusted:hover {
background: var(--color-yellow-badge-hover-bg) !important;
}
.singular-commit .shabox .sha.label.isSigned.isVerifiedUnmatched {
border: 1px solid var(--color-orange-badge);
background: var(--color-orange-badge-bg);
}
.singular-commit .shabox .sha.label.isSigned.isVerifiedUnmatched:hover {
background: var(--color-orange-badge-hover-bg) !important;
}

View File

@@ -0,0 +1,73 @@
.repository .secondary-nav {
padding-top: 12px;
}
.repository .secondary-nav .fork-flag {
margin-top: 0.5rem;
font-size: 12px;
}
.repo-header {
display: flex;
flex-flow: row wrap;
justify-content: space-between;
gap: 0.5rem;
margin-bottom: 4px;
}
.repo-header .flex-item {
padding: 0;
}
.repo-header .flex-item-main {
flex: 0;
flex-basis: unset;
}
.repo-header .flex-item-trailing {
flex-wrap: nowrap;
}
.repo-buttons {
align-items: center;
display: flex;
flex-flow: row wrap;
word-break: keep-all;
gap: 0.25em;
}
.repo-buttons button[disabled] ~ .label {
opacity: var(--opacity-disabled);
color: var(--color-text-dark);
background: var(--color-light-mimic-enabled) !important;
}
.repo-buttons button[disabled] ~ .label:hover {
color: var(--color-primary-dark-1);
}
.repo-buttons .ui.labeled.button.disabled {
pointer-events: inherit !important;
}
.repo-buttons .ui.labeled.button.disabled > .label {
color: var(--color-text-dark);
background: var(--color-light-mimic-enabled) !important;
}
.repo-buttons .ui.labeled.button.disabled > .label:hover {
color: var(--color-primary-dark-1);
}
.repo-buttons .ui.labeled.button.disabled > .button {
pointer-events: none !important;
}
@media (max-width: 767.98px) {
.repo-buttons .ui.button,
.repo-buttons .ui.label {
padding-left: 8px;
padding-right: 8px;
margin: 0;
}
}

View File

@@ -0,0 +1,94 @@
#repo-files-table {
width: 100%;
display: grid;
grid-template-columns: 2fr 3fr auto;
border: 1px solid var(--color-secondary);
background: var(--color-box-body);
border-radius: var(--border-radius);
margin: 10px 0; /* match the "clone-panel-popup" margin to avoid "visual double-border" */
}
@media (max-width: 767.98px) {
#repo-files-table {
grid-template-columns: auto 1fr auto;
}
}
#repo-files-table .repo-file-cell.name .svg {
margin-right: 2px;
}
#repo-files-table .svg.octicon-file-directory-fill,
#repo-files-table .svg.octicon-file-submodule {
color: var(--color-primary);
}
#repo-files-table .svg.octicon-file,
#repo-files-table .svg.octicon-file-symlink-file,
#repo-files-table .svg.octicon-file-directory-symlink {
color: var(--color-secondary-dark-7);
}
#repo-files-table .repo-file-item {
display: contents;
}
#repo-files-table .repo-file-item:hover > .repo-file-cell,
#repo-files-table .parent-link:hover {
background: var(--color-hover-opaque);
}
#repo-files-table .repo-file-line,
#repo-files-table .repo-file-cell {
border-top: 1px solid var(--color-secondary);
padding: 8px 10px;
}
#repo-files-table .repo-file-line:first-child {
border-top: none;
border-radius: var(--border-radius) var(--border-radius) 0 0;
}
#repo-files-table .repo-file-item:last-child .repo-file-cell:first-child {
border-bottom-left-radius: calc(var(--border-radius) - 1px);
}
#repo-files-table .repo-file-item:last-child .repo-file-cell:last-child {
border-bottom-right-radius: calc(var(--border-radius) - 1px);
}
#repo-files-table .repo-file-line {
grid-column: 1 / span 3;
display: flex;
align-items: center;
gap: 0.5em;
}
#repo-files-table .repo-file-last-commit {
background: var(--color-box-header);
}
#repo-files-table .repo-file-cell.name {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
@media (max-width: 767.98px) {
#repo-files-table .repo-file-cell.name {
max-width: 35vw;
}
}
#repo-files-table .repo-file-cell.message {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
color: var(--color-text-light-1);
}
#repo-files-table .repo-file-cell.age {
text-align: right;
white-space: nowrap;
color: var(--color-text-light-1);
}

79
web_src/css/repo/home.css Normal file
View File

@@ -0,0 +1,79 @@
.repo-grid-filelist-sidebar {
display: grid;
grid-template-columns: auto 300px;
grid-template-rows: auto auto 1fr;
}
.repo-home-filelist {
min-width: 0;
grid-column: 1;
grid-row: 1 / 4;
}
.repo-home-sidebar-top {
grid-column: 2;
grid-row: 1;
padding-left: 1em;
}
.repo-home-sidebar-bottom {
grid-column: 2;
grid-row: 2;
padding-left: 1em;
}
.repo-home-sidebar-bottom .flex-list > :first-child {
border-top: 1px solid var(--color-secondary); /* same to .flex-list > .flex-item + .flex-item */
}
@media (max-width: 767.98px) {
.repo-grid-filelist-sidebar {
grid-template-columns: 100%;
grid-template-rows: auto auto auto;
}
.repo-home-filelist {
grid-column: 1;
grid-row: 2;
}
.repo-home-sidebar-top {
grid-column: 1;
grid-row: 1;
padding-left: 0;
}
.repo-home-sidebar-bottom {
grid-column: 1;
grid-row: 3;
padding-left: 0;
}
.repo-home-sidebar-bottom .flex-list > :first-child {
border-top: 0;
}
}
.language-stats {
display: flex;
gap: 2px;
padding: 0;
height: 10px;
white-space: nowrap;
border-radius: 5px;
overflow: hidden;
width: 100%;
margin-top: 1rem;
margin-bottom: 5px;
}
.language-stats-details {
display: flex;
flex-wrap: wrap;
}
.language-stats-details .item {
height: 30px;
display: flex;
align-items: center;
justify-content: center;
gap: 0.25em;
padding: 0 0.5em; /* make the UI look better for narrow (mobile) view */
text-decoration: none;
}

View File

@@ -0,0 +1,40 @@
.issue-card {
display: flex;
flex-direction: column;
gap: 4px;
align-items: stretch;
border-radius: var(--border-radius);
padding: 8px 10px;
border: 1px solid var(--color-secondary);
background: var(--color-card);
}
.issue-card-icon,
.issue-card-unpin {
margin-top: 1px;
flex-shrink: 0;
}
.issue-card-title {
flex: 1;
font-size: 14px;
}
.issue-card.sortable-chosen .issue-card-title {
cursor: inherit;
}
.issue-card-bottom {
display: flex;
width: 100%;
justify-content: space-between;
gap: 0.25em;
}
.issue-card-assignees {
display: flex;
align-items: center;
gap: 0.25em;
justify-content: end;
flex-wrap: wrap;
}

View File

@@ -0,0 +1,53 @@
.issue-label-list {
list-style: none;
padding: 0;
margin: 0;
}
.issue-label-list .item {
border-bottom: 1px solid var(--color-secondary);
display: flex;
padding: 1em 0;
margin: 0;
}
.issue-label-list .item:first-child {
padding-top: 0;
}
.issue-label-list .item:last-child {
border-bottom: none;
padding-bottom: 0;
}
.issue-label-list .item .label-title {
width: 33%;
}
.issue-label-list .item .label-issues {
width: 33%;
}
.issue-label-list .item .label-operation {
width: 33%;
}
.issue-label-list .item a {
font-size: 12px;
padding-right: 10px;
color: var(--color-text-light);
}
.issue-label-list .item.org-label {
opacity: 0.7;
}
.label-operation .label {
height: fit-content;
}
.archived-label-hint {
position: absolute;
top: 10px;
right: 5px;
}

View File

@@ -0,0 +1,93 @@
.issue-list-toolbar {
display: flex;
flex-wrap: wrap-reverse;
justify-content: space-between;
align-items: flex-start;
gap: 1rem;
margin-top: 1rem;
}
.issue-list-toolbar-left {
display: flex;
align-items: center;
}
.issue-list-toolbar-right .filter.menu {
flex-direction: row;
flex-wrap: wrap;
}
@media (max-width: 767.98px) {
.issue-list-toolbar-right .dropdown .menu {
left: auto !important;
right: auto !important;
}
.issue-list-navbar {
order: 0;
}
.issue-list-new {
order: 1;
margin-left: auto !important;
}
.issue-list-search {
order: 2 !important;
}
}
#issue-list .flex-item-body .branches {
display: inline-flex;
}
#issue-list .flex-item-body .branches .branch {
background-color: var(--color-secondary-alpha-50);
border-radius: var(--border-radius);
padding: 0 4px;
}
#issue-list .flex-item-body .branches .truncated-name {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 200px;
display: inline-block;
vertical-align: top;
}
#issue-list .flex-item-body .checklist progress {
margin-left: 2px;
width: 80px;
height: 6px;
display: inline-block;
}
#issue-list .flex-item-body .checklist progress::-webkit-progress-value {
background-color: var(--color-secondary-dark-4);
}
#issue-list .flex-item-body .checklist progress::-moz-progress-bar {
background-color: var(--color-secondary-dark-4);
}
.label-filter-archived-toggle {
margin: 8px 10px;
font-size: 12px;
min-width: fit-content;
}
.label-filter-exclude-info {
display: inline-block;
padding: 0.5rem 0;
font-size: 12px;
width: 100%;
white-space: nowrap;
margin-left: 10px;
margin-right: 8px;
text-align: left;
}
.label-filter-exclude-info code {
border: 1px solid var(--color-secondary);
border-radius: var(--border-radius);
padding: 1px 2px;
font-size: 11px;
}

View File

@@ -0,0 +1,18 @@
.code-view .lines-num:hover {
color: var(--color-text-dark) !important;
}
.code-line-button {
border: 1px solid var(--color-secondary);
border-radius: var(--border-radius);
padding: 1px 4px !important;
position: absolute;
font-family: var(--fonts-regular);
left: 0;
transform: translateX(calc(-50% + 6px));
cursor: pointer;
}
.code-line-button:hover {
background: var(--color-secondary) !important;
}

View File

@@ -0,0 +1,45 @@
.list-header {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: .5rem;
}
.list-header-search {
display: flex;
flex: 1;
align-items: center;
flex-wrap: wrap;
justify-content: center;
min-width: 200px; /* to enable flexbox wrapping on mobile */
}
.list-header-search > .ui.input {
flex: 1;
min-width: 100px !important;
}
.list-header-search > .ui.input .ui.dropdown {
min-width: auto !important;
}
.list-header-filters {
display: flex;
align-items: center;
}
.list-header-filters > .item {
padding: 5px 0 5px 10px;
}
@media (max-width: 767.98px) {
.list-header-search {
order: 0;
}
.list-header-toggle {
order: 1;
}
.list-header-filters {
order: 2;
}
}

View File

@@ -0,0 +1,70 @@
.bottom-reactions {
display: flex;
gap: 6px;
margin: 0 1em 1em;
}
.timeline-item .conversation-holder .bottom-reactions {
margin: 1em 0 0 36px;
padding-bottom: 8px;
}
.bottom-reactions .ui.label {
padding: 5px 8px;
font-weight: var(--font-weight-normal);
}
.bottom-reactions .ui.label.primary {
background-color: var(--color-reaction-active-bg) !important;
}
.bottom-reactions .ui.label:hover {
background-color: var(--color-reaction-hover-bg) !important;
}
.bottom-reactions .ui.label.disabled {
cursor: default;
opacity: 1;
}
.bottom-reactions .ui.label .reaction {
font-size: 16px;
display: flex;
}
.bottom-reactions .ui.label .reaction img {
height: 16px;
aspect-ratio: 1;
}
.bottom-reactions .reaction-count {
margin-left: 4px;
}
.ui.dropdown.select-reaction .menu {
min-width: 170px; /* item-outer-width * 4 */
}
.ui.dropdown.select-reaction .menu > .item {
float: left;
margin: 4px;
font-size: 20px;
width: 34px;
height: 34px;
border-radius: var(--border-radius);
display: flex;
align-items: center;
justify-content: center;
}
.bottom-reactions .select-reaction {
padding: 0 10px;
}
.bottom-reactions .select-reaction:not(.active) {
visibility: hidden;
}
.bottom-reactions:hover .select-reaction {
visibility: visible;
}

View File

@@ -0,0 +1,137 @@
#release-list {
display: flex;
flex-direction: column;
gap: var(--page-spacing);
padding-left: 0;
}
#release-list .release-list-title {
font-size: 2rem;
font-weight: var(--font-weight-normal);
display: flex;
align-items: center;
gap: 0.25em;
margin: 0;
}
#release-list .release-entry {
display: flex;
gap: var(--page-spacing);
}
#release-list .release-entry .meta {
flex: 0 0 150px;
position: relative;
text-align: right;
display: flex;
flex-direction: column;
gap: 10px;
}
#release-list .release-entry .detail {
flex: 1;
margin: 0;
}
@media (max-width: 767.98px) {
#release-list .release-entry {
flex-direction: column;
gap: var(--page-spacing);
}
#release-list .release-entry .meta {
margin-left: 6px;
flex-direction: row;
flex-basis: auto;
display: flex;
align-items: center;
}
#release-list .js-branch-tag-selector {
margin-left: auto;
}
#release-list .branch-selector-dropdown .menu { /* open menu to left */
right: 0;
left: auto;
}
}
#release-list .release-entry .detail .author img {
margin-bottom: 2px; /* the legacy trick to align the avatar vertically, no better solution at the moment */
}
#release-list .release-entry .detail .download .list {
padding-left: 0;
border: 1px solid var(--color-secondary);
border-radius: var(--border-radius);
}
#release-list .release-entry .detail .download .list li {
display: flex;
justify-content: space-between;
padding: 8px;
border-bottom: 1px solid var(--color-secondary);
}
#release-list .release-entry .detail .download[open] summary {
margin-bottom: 10px;
}
#release-list .download-icon {
margin-right: .25rem;
color: var(--color-text-light-1);
}
#release-list .release-entry .detail .download .list li:last-child {
border-bottom: none;
}
#tags-table .tag-list-row {
padding: 8px 12px;
}
#tags-table .tag-list-row-title {
font-size: 18px;
font-weight: var(--font-weight-normal);
}
.repository.new.release .target {
min-width: 500px;
}
.repository.new.release .target #tag-name {
margin-top: -4px;
}
.repository.new.release .target .at {
margin-left: -5px;
margin-right: 5px;
}
.repository.new.release .target .selection.dropdown {
padding-top: 10px;
padding-bottom: 10px;
}
.repository.new.release .prerelease.field {
margin-bottom: 0;
}
@media (max-width: 438px) {
.repository.new.release .field button,
.repository.new.release .field input {
width: 100%;
}
}
@media (max-width: 767.98px) {
.repository.new.release .field button {
margin-bottom: 1em;
}
}
.repository.new.release .field .attachment_edit {
max-width: 48em;
}
.repository.new.release .markup {
min-height: 240px;
}

69
web_src/css/repo/wiki.css Normal file
View File

@@ -0,0 +1,69 @@
.repository.wiki .wiki-pages-list tr:hover {
background-color: var(--color-hover);
}
.repository.wiki .wiki-pages-list .wiki-git-entry {
margin-left: 10px;
display: none;
}
.repository.wiki .wiki-pages-list tr:hover .wiki-git-entry {
display: inline-block;
}
.repository.wiki .markup {
overflow: visible;
}
.repository.wiki .markup[data-tab-panel="markdown-previewer"] {
min-height: 340px; /* This height matches the markdown editor's height */
}
.repository.wiki .wiki-content-parts .markup {
border: 1px solid var(--color-secondary);
border-radius: var(--border-radius);
padding: 1em;
margin-top: 1em;
font-size: 1em;
}
.repository.wiki .wiki-content-main.with-sidebar {
float: left;
width: 80%;
max-width: calc(100% - 150px - 1em); /* match the min-width of .wiki-content-sidebar */
}
.repository.wiki .wiki-content-sidebar {
float: right;
width: calc(20% - 1em);
min-width: 150px;
}
.repository.wiki .wiki-content-sidebar .ui.message.unicode-escape-prompt p {
display: none;
}
.repository.wiki .wiki-content-footer {
margin-top: 1em;
}
.repository.wiki .wiki-content-toc ul {
margin: 0;
list-style: none;
padding: 5px 0 5px 1em;
}
.repository.wiki .wiki-content-toc ul ul {
border-left: 1px var(--color-secondary);
border-left-style: dashed;
}
@media (max-width: 767.98px) {
.repository.wiki .wiki-content-main.with-sidebar,
.repository.wiki .wiki-content-sidebar {
float: none;
width: 100%;
min-width: unset;
max-width: unset;
}
}

231
web_src/css/review.css Normal file
View File

@@ -0,0 +1,231 @@
.show-outdated,
.hide-outdated {
-webkit-touch-callout: none;
-webkit-user-select: none;
user-select: none;
margin-right: 0 !important;
}
.ui.button.add-code-comment {
padding: 2px;
position: absolute;
margin-left: -22px;
z-index: 5;
opacity: 0;
transition: transform 0.1s ease-in-out;
transform: scale(1);
box-shadow: none !important;
border: none !important;
}
.ui.button.add-code-comment:hover {
transform: scale(1.1);
}
.lines-escape .toggle-escape-button::before {
visibility: visible;
content: "⚠️";
font-family: var(--fonts-emoji);
color: var(--color-red);
}
.repository .diff-file-box .code-diff td.lines-escape {
padding-left: 0 !important;
}
.diff-file-box .lines-code:hover .ui.button.add-code-comment {
opacity: 1;
}
.ui.button.add-code-comment:focus {
opacity: 1;
}
.repository .diff-file-box .code-diff .add-comment-left,
.repository .diff-file-box .code-diff .add-comment-right,
.repository .diff-file-box .code-diff .add-code-comment .add-comment-left,
.repository .diff-file-box .code-diff .add-code-comment .add-comment-right,
.repository .diff-file-box .code-diff .add-code-comment .lines-type-marker {
padding-left: 0 !important;
padding-right: 0 !important;
}
.add-comment-left.add-comment-right .ui.attached.header {
border: 1px solid var(--color-secondary);
}
.add-comment-left.add-comment-right .ui.attached.header:not(.top) {
margin-bottom: 0.5em;
}
.show-outdated:hover,
.hide-outdated:hover {
text-decoration: underline;
}
.comment-code-cloud {
padding: 0.5rem 1rem !important;
position: relative;
}
.code-diff .conversation-holder .comment-code-cloud {
max-width: 820px;
}
.comment-code-cloud .comments .comment {
padding: 0;
}
.comment-code-cloud .attached.tab {
border: 0;
padding: 0;
margin: 0;
}
.comment-code-cloud .attached.header {
padding: 1px 8px 1px 12px;
}
@media (max-width: 767.98px) {
.comment-code-cloud .attached.header {
padding-top: 4px;
padding-bottom: 4px;
}
}
.comment-code-cloud .attached.header .text {
margin: 0;
}
.comment-code-cloud .right.menu.options .item {
padding: 0.85714286em 0.442857em;
cursor: pointer;
}
.comment-code-cloud .ui.active.tab.markup {
padding: 1em;
min-height: 168px;
}
.comment-code-cloud .editor-statusbar {
display: none;
}
.comment-code-cloud .footer {
padding: 10px 0;
}
.diff-file-body .comment-form {
margin: 0 0 0 3em;
}
.diff-file-body.binary {
padding: 5px 10px;
}
.file-comment {
color: var(--color-text);
}
.code-expander-button {
border: none;
color: var(--color-text-light);
height: 28px;
display: flex;
justify-content: center;
align-items: center;
width: 100%;
background: var(--color-expand-button);
flex: 1;
}
/* expand direction 3 is both ways with two buttons */
.code-expander-buttons[data-expand-direction="3"] .code-expander-button {
height: 18px;
}
.code-expander-button:hover {
background: var(--color-primary);
color: var(--color-primary-contrast);
}
.review-box-panel .ui.segment {
border: none;
}
/* See the comment of createCommentEasyMDE() for the review editor */
/* EasyMDE's options can not handle minHeight & maxHeight together correctly, we have to set minHeight in JS code */
.review-box-panel .CodeMirror-scroll {
min-height: 80px;
max-height: calc(100vh - 360px);
}
.review-box-panel .combo-markdown-editor {
width: 730px; /* this width matches current EasyMDE's toolbar's width */
max-width: calc(100vw - 70px); /* leave enough space on left, and align the page content */
}
#review-box {
position: relative;
}
#review-box .review-comments-counter {
background-color: var(--color-primary-light-4);
color: var(--color-primary-contrast);
}
#review-box:hover .review-comments-counter {
background-color: var(--color-primary-light-5);
}
#review-box .review-comments-counter[data-pending-comment-number="0"] {
display: none;
}
.pull.files.diff .comment {
scroll-margin-top: 99px;
}
@media (max-width: 991.98px) {
.pull.files.diff .comment {
scroll-margin-top: 130px;
}
}
.changed-since-last-review {
border: 1px var(--color-accent) solid;
background-color: var(--color-small-accent);
border-radius: var(--border-radius);
padding: 4px 8px;
margin: -8px 0; /* just like other buttons in the diff box header */
font-size: 0.857rem; /* just like .ui.tiny.button */
}
.viewed-file-form {
display: flex;
align-items: center;
border: 1px solid transparent;
padding: 4px 8px;
border-radius: var(--border-radius);
font-size: 0.857rem; /* just like .ui.tiny.button */
}
@media (max-width: 767.98px) {
.viewed-file-form {
margin-left: auto;
}
}
.viewed-file-form input {
margin-right: 4px;
}
.viewed-file-checked-form {
background-color: var(--color-small-accent);
border-color: var(--color-accent);
}
#viewed-files-summary {
width: 100%;
height: 8px;
}

View File

@@ -0,0 +1,108 @@
.flex-list {
list-style: none;
}
.flex-item {
display: flex;
gap: 8px;
align-items: flex-start;
padding: 10px 0;
}
.flex-item .flex-item-leading {
display: flex;
align-items: flex-start;
}
.flex-item .flex-item-main {
display: flex;
flex-direction: column;
flex-grow: 1;
flex-basis: 60%; /* avoid wrapping the "flex-item-trailing" too aggressively */
min-width: 0; /* make the "text truncate" work, otherwise the flex axis is not limited and the text just overflows */
}
.flex-item-header {
display: flex;
gap: .25rem;
justify-content: space-between;
flex-wrap: wrap;
}
.flex-item a:not(.label, .button):hover {
color: var(--color-primary) !important;
}
.flex-item .flex-item-icon {
align-self: baseline; /* mainly used by the issue list, to align the leading icon with the title */
}
.flex-item .flex-item-icon + .flex-item-main {
align-self: baseline;
}
.flex-item .flex-item-trailing {
display: flex;
gap: 0.5rem;
align-items: center;
flex-grow: 0;
flex-wrap: wrap;
justify-content: end;
}
.flex-item .flex-item-title {
display: inline-flex;
flex-wrap: wrap;
align-items: center;
gap: .25rem;
max-width: 100%;
color: var(--color-text);
font-size: 16px;
font-weight: var(--font-weight-semibold);
overflow-wrap: anywhere;
min-width: 0;
}
.flex-item .flex-item-title a {
color: var(--color-text);
overflow-wrap: anywhere;
}
.flex-item .flex-item-body {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: .25rem;
color: var(--color-text-light-2);
overflow-wrap: anywhere;
}
.flex-item .flex-item-body a {
color: inherit;
overflow-wrap: anywhere;
}
.flex-list > .flex-item + .flex-item {
border-top: 1px solid var(--color-secondary);
}
/* Fomantic UI segment has default "padding: 1em", so here it removes the padding-top and padding-bottom accordingly (there might also be some `tw-hidden` siblings).
Developers could also use "flex-space-fitted" class to remove the first item's padding-top and the last item's padding-bottom */
.flex-list.flex-space-fitted > .flex-item:first-child,
.ui.segment > .flex-list > .flex-item:first-child {
padding-top: 0;
}
.flex-list.flex-space-fitted > .flex-item:last-child,
.ui.segment > .flex-list > .flex-item:last-child {
padding-bottom: 0;
}
/* If there is a divider besides the flex-list, some padding/margin are not needs */
.divider + .flex-list > .flex-item:first-child {
padding-top: 0;
}
.flex-list + .divider {
margin-top: 0;
}

View File

@@ -0,0 +1,62 @@
.milestone-list {
list-style: none;
}
.milestone-card {
width: 100%;
padding-top: 10px;
padding-bottom: 10px;
}
.milestone-card + .milestone-card {
border-top: 1px solid var(--color-secondary);
}
.milestone-card .content {
padding-top: 10px;
}
.milestone-header progress {
width: 200px;
height: 16px;
}
.milestone-header {
display: flex;
align-items: center;
margin: 0;
flex-wrap: wrap;
justify-content: space-between;
}
.milestone-toolbar {
padding-top: 5px;
display: flex;
flex-wrap: wrap;
gap: 8px;
justify-content: space-between;
}
.milestone-toolbar .group {
color: var(--color-text-light-2);
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.milestone-toolbar .group > a {
font-size: 15px;
color: var(--color-text-light-2);
}
.milestone-toolbar .group > a:hover {
color: var(--color-text);
}
@media (max-width: 767.98px) {
.milestone-card {
display: flex;
flex-direction: column;
gap: 8px;
}
}

View File

@@ -0,0 +1,18 @@
.repository .head .ui.header .text,
.organization .head .ui.header .text {
vertical-align: middle;
font-size: 1.6rem;
margin-left: 15px;
}
.repository .ui.tabs.container,
.organization .ui.tabs.container {
margin-top: 14px;
margin-bottom: 0;
}
.repository .head .ui.header .org-visibility .label,
.organization .head .ui.header .org-visibility .label {
margin-left: 5px;
margin-top: 5px;
}

View File

@@ -0,0 +1,37 @@
details.toggleable-item {
user-select: none !important;
padding: 0 !important;
}
details.toggleable-item .menu {
margin: 4px 0 10px !important;
}
details.toggleable-item summary {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0.92857143em 1.14285714em;
}
details.toggleable-item summary::marker, /* Chrome, Edge, Firefox */
details.toggleable-item summary::-webkit-details-marker /* Safari */ {
display: none;
}
details.toggleable-item summary::after {
transition: transform 0.25s ease;
content: "";
width: 14px;
height: 14px;
mask-size: cover;
-webkit-mask-size: cover;
mask-image: var(--octicon-chevron-right);
-webkit-mask-image: var(--octicon-chevron-right);
background: currentcolor;
border: 1px solid var(--color-body); /* workaround https://bugzilla.mozilla.org/show_bug.cgi?id=1671784 */
}
details.toggleable-item[open] summary::after {
transform: rotate(90deg);
}

View File

@@ -0,0 +1,16 @@
.button-sample-groups {
margin: 0; padding: 0;
}
.button-sample-groups .sample-group {
list-style: none; margin: 0; padding: 0;
}
.button-sample-groups .sample-group .ui.button {
margin-bottom: 5px;
}
h1, h2 {
margin: 0;
padding: 10px 0;
}

View File

@@ -0,0 +1,42 @@
*,
*::before,
*::after {
box-sizing: border-box;
}
body {
margin: 0;
background: #fff;
}
.swagger-back-link {
color: #1f69c0;
text-decoration: none;
position: absolute;
top: 1rem;
right: 1.5rem;
display: flex;
align-items: center;
}
.swagger-back-link:hover {
text-decoration: underline;
}
.swagger-back-link svg {
color: inherit;
fill: currentcolor;
margin-right: 0.5rem;
}
@media (prefers-color-scheme: dark) {
body {
background: #1e1e1e;
}
.swagger-ui, .swagger-back-link {
filter: invert(88%) hue-rotate(180deg);
}
.swagger-ui .microlight {
filter: invert(100%) hue-rotate(180deg);
}
}

View File

@@ -0,0 +1,2 @@
@import "./theme-gitea-light-protanopia-deuteranopia.css" (prefers-color-scheme: light);
@import "./theme-gitea-dark-protanopia-deuteranopia.css" (prefers-color-scheme: dark);

View File

@@ -0,0 +1,2 @@
@import "./theme-gitea-light.css" (prefers-color-scheme: light);
@import "./theme-gitea-dark.css" (prefers-color-scheme: dark);

View File

@@ -0,0 +1,12 @@
@import "./theme-gitea-dark.css";
/* red/green colorblind-friendly colors */
/* from GitHub: --diffBlob-addition-*, --diffBlob-deletion-*, etc */
:root {
--color-diff-added-linenum-bg: #1979fd46;
--color-diff-added-row-bg: #1979fd20;
--color-diff-added-word-bg: #1979fd66;
--color-diff-removed-linenum-bg: #c8622146;
--color-diff-removed-row-bg: #c8622120;
--color-diff-removed-word-bg: #c8622166;
}

View File

@@ -0,0 +1,267 @@
@import "../chroma/dark.css";
@import "../codemirror/dark.css";
:root {
--is-dark-theme: true;
--color-primary: #4183c4;
--color-primary-contrast: #ffffff;
--color-primary-dark-1: #548fca;
--color-primary-dark-2: #679cd0;
--color-primary-dark-3: #7aa8d6;
--color-primary-dark-4: #8db5dc;
--color-primary-dark-5: #b3cde7;
--color-primary-dark-6: #d9e6f3;
--color-primary-dark-7: #f4f8fb;
--color-primary-light-1: #3876b3;
--color-primary-light-2: #31699f;
--color-primary-light-3: #2b5c8b;
--color-primary-light-4: #254f77;
--color-primary-light-5: #193450;
--color-primary-light-6: #0c1a28;
--color-primary-light-7: #04080c;
--color-primary-alpha-10: #4183c419;
--color-primary-alpha-20: #4183c433;
--color-primary-alpha-30: #4183c44b;
--color-primary-alpha-40: #4183c466;
--color-primary-alpha-50: #4183c480;
--color-primary-alpha-60: #4183c499;
--color-primary-alpha-70: #4183c4b3;
--color-primary-alpha-80: #4183c4cc;
--color-primary-alpha-90: #4183c4e1;
--color-primary-hover: var(--color-primary-light-1);
--color-primary-active: var(--color-primary-light-2);
--color-secondary: #3b444c;
--color-secondary-dark-1: #414b54;
--color-secondary-dark-2: #49545f;
--color-secondary-dark-3: #576471;
--color-secondary-dark-4: #677685;
--color-secondary-dark-5: #758594;
--color-secondary-dark-6: #8392a0;
--color-secondary-dark-7: #929eab;
--color-secondary-dark-8: #a2acb7;
--color-secondary-dark-9: #a9b3bd;
--color-secondary-dark-10: #b7bfc7;
--color-secondary-dark-11: #c5cbd2;
--color-secondary-dark-12: #cfd4da;
--color-secondary-dark-13: #d2d7dc;
--color-secondary-light-1: #313940;
--color-secondary-light-2: #292f35;
--color-secondary-light-3: #1d2226;
--color-secondary-light-4: #171b1e;
--color-secondary-alpha-10: #3b444c19;
--color-secondary-alpha-20: #3b444c33;
--color-secondary-alpha-30: #3b444c4b;
--color-secondary-alpha-40: #3b444c66;
--color-secondary-alpha-50: #3b444c80;
--color-secondary-alpha-60: #3b444c99;
--color-secondary-alpha-70: #3b444cb3;
--color-secondary-alpha-80: #3b444ccc;
--color-secondary-alpha-90: #3b444ce1;
--color-secondary-button: var(--color-secondary-dark-4);
--color-secondary-hover: var(--color-secondary-dark-3);
--color-secondary-active: var(--color-secondary-dark-2);
/* console colors - used for actions console and console files */
--color-console-fg: #f7f8f9;
--color-console-fg-subtle: #bdc4cc;
--color-console-bg: #171b1e;
--color-console-border: #2e353b;
--color-console-hover-bg: #272d33;
--color-console-active-bg: #2e353b;
--color-console-menu-bg: #262b31;
--color-console-menu-border: #414b55;
/* named colors */
--color-red: #cc4848;
--color-orange: #cc580c;
--color-yellow: #cc9903;
--color-olive: #91a313;
--color-green: #87ab63;
--color-teal: #00918a;
--color-blue: #3a8ac6;
--color-violet: #906ae1;
--color-purple: #b259d0;
--color-pink: #d22e8b;
--color-brown: #a47252;
--color-black: #1d2328;
/* light variants - produced via Sass scale-color(color, $lightness: +10%) */
--color-red-light: #d15a5a;
--color-orange-light: #f6a066;
--color-yellow-light: #eaaf03;
--color-olive-light: #abc016;
--color-green-light: #93b373;
--color-teal-light: #00b6ad;
--color-blue-light: #4e96cc;
--color-violet-light: #9b79e4;
--color-purple-light: #ba6ad5;
--color-pink-light: #d74397;
--color-brown-light: #b08061;
--color-black-light: #424851;
/* dark 1 variants - produced via Sass scale-color(color, $lightness: -10%) */
--color-red-dark-1: #c23636;
--color-orange-dark-1: #f38236;
--color-yellow-dark-1: #b88a03;
--color-olive-dark-1: #839311;
--color-green-dark-1: #7a9e55;
--color-teal-dark-1: #00837c;
--color-blue-dark-1: #347cb3;
--color-violet-dark-1: #7b4edb;
--color-purple-dark-1: #a742c9;
--color-pink-dark-1: #be297d;
--color-brown-dark-1: #94674a;
--color-black-dark-1: #292e38;
/* dark 2 variants - produced via Sass scale-color(color, $lightness: -20%) */
--color-red-dark-2: #ad3030;
--color-orange-dark-2: #f16e17;
--color-yellow-dark-2: #a37a02;
--color-olive-dark-2: #74820f;
--color-green-dark-2: #6c8c4c;
--color-teal-dark-2: #00746e;
--color-blue-dark-2: #2e6e9f;
--color-violet-dark-2: #6733d6;
--color-purple-dark-2: #9834b9;
--color-pink-dark-2: #a9246f;
--color-brown-dark-2: #835b42;
--color-black-dark-2: #272930;
/* ansi colors used for actions console and console files */
--color-ansi-black: #1e2327;
--color-ansi-red: #cc4848;
--color-ansi-green: #87ab63;
--color-ansi-yellow: #cc9903;
--color-ansi-blue: #3a8ac6;
--color-ansi-magenta: #d22e8b;
--color-ansi-cyan: #00918a;
--color-ansi-white: var(--color-console-fg-subtle);
--color-ansi-bright-black: #424851;
--color-ansi-bright-red: #d15a5a;
--color-ansi-bright-green: #93b373;
--color-ansi-bright-yellow: #eaaf03;
--color-ansi-bright-blue: #4e96cc;
--color-ansi-bright-magenta: #d74397;
--color-ansi-bright-cyan: #00b6ad;
--color-ansi-bright-white: var(--color-console-fg);
/* other colors */
--color-grey: #384149;
--color-grey-light: #818f9e;
--color-gold: #b1983b;
--color-white: #ffffff;
--color-diff-added-linenum-bg: #274227;
--color-diff-added-row-bg: #203224;
--color-diff-added-row-border: #314a37;
--color-diff-added-word-bg: #3c653c;
--color-diff-moved-row-bg: #818044;
--color-diff-moved-row-border: #bcca6f;
--color-diff-removed-linenum-bg: #482121;
--color-diff-removed-row-bg: #301e1e;
--color-diff-removed-row-border: #634343;
--color-diff-removed-word-bg: #6f3333;
--color-diff-inactive: #22282d;
--color-error-border: #a04141;
--color-error-bg: #522;
--color-error-bg-active: #744;
--color-error-bg-hover: #633;
--color-error-text: #f9cbcb;
--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;
--color-red-badge: #db2828;
--color-red-badge-bg: #db28281a;
--color-red-badge-hover-bg: #db28284d;
--color-green-badge: #21ba45;
--color-green-badge-bg: #21ba451a;
--color-green-badge-hover-bg: #21ba454d;
--color-yellow-badge: #fbbd08;
--color-yellow-badge-bg: #fbbd081a;
--color-yellow-badge-hover-bg: #fbbd084d;
--color-orange-badge: #f2711c;
--color-orange-badge-bg: #f2711c1a;
--color-orange-badge-hover-bg: #f2711c4d;
--color-git: #f05133;
/* target-based colors */
--color-body: #1b1f23;
--color-box-header: #1a1d1f;
--color-box-body: #14171a;
--color-box-body-highlight: #1e2226;
--color-text-dark: #f7f8f9;
--color-text: #d0d5da;
--color-text-light: #bcc3cb;
--color-text-light-1: #a5afb9;
--color-text-light-2: #8f9ba8;
--color-text-light-3: #788797;
--color-footer: var(--color-nav-bg);
--color-timeline: #343c44;
--color-input-text: var(--color-text-dark);
--color-input-background: #171a1e;
--color-input-toggle-background: #2e353c;
--color-input-border: var(--color-secondary);
--color-input-border-hover: var(--color-secondary-dark-1);
--color-light: #00001728;
--color-light-mimic-enabled: rgba(0, 0, 0, calc(40 / 255 * 222 / 255 / var(--opacity-disabled)));
--color-light-border: #e8f3ff28;
--color-hover: #e8f3ff19;
--color-hover-opaque: #21252a; /* TODO: color-mix(in srgb, var(--color-body), var(--color-hover)); */
--color-active: #e8f3ff24;
--color-menu: #171a1e;
--color-card: #171a1e;
--color-markup-table-row: #e8f3ff0f;
--color-markup-code-block: #e8f3ff12;
--color-markup-code-inline: #e8f3ff28;
--color-button: #171a1e;
--color-code-bg: #14171a;
--color-shadow: #00001758;
--color-shadow-opaque: #000017;
--color-secondary-bg: #2a3137;
--color-expand-button: #2f363d;
--color-placeholder-text: var(--color-text-light-3);
--color-editor-line-highlight: var(--color-primary-light-5);
--color-project-column-bg: var(--color-secondary-light-2);
--color-caret: var(--color-text); /* should ideally be --color-text-dark, see #15651 */
--color-reaction-bg: #e8f3ff12;
--color-reaction-hover-bg: var(--color-primary-light-4);
--color-reaction-active-bg: var(--color-primary-light-5);
--color-tooltip-text: #f9fafb;
--color-tooltip-bg: #000b17f0;
--color-nav-bg: #16191d;
--color-nav-hover-bg: var(--color-secondary-light-1);
--color-nav-text: var(--color-text);
--color-secondary-nav-bg: #181c20;
--color-label-text: var(--color-text);
--color-label-bg: #7282924b;
--color-label-hover-bg: #728292a0;
--color-label-active-bg: #728292ff;
--color-accent: var(--color-primary-light-1);
--color-small-accent: var(--color-primary-light-5);
--color-highlight-fg: #87651e;
--color-highlight-bg: #352c1c;
--color-overlay-backdrop: #080808c0;
accent-color: var(--color-accent);
color-scheme: dark;
}
/* 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);
}

View File

@@ -0,0 +1,12 @@
@import "./theme-gitea-light.css";
/* red/green colorblind-friendly colors */
/* from GitHub: --diffBlob-addition-*, --diffBlob-deletion-*, etc */
:root {
--color-diff-added-linenum-bg: #54aeff4d;
--color-diff-added-row-bg: #ddf4ff80;
--color-diff-added-word-bg: #54aeff66;
--color-diff-removed-linenum-bg: #ffb77c4d;
--color-diff-removed-row-bg: #fff1e580;
--color-diff-removed-word-bg: #ffb77c80;
}

View File

@@ -0,0 +1,243 @@
@import "../chroma/light.css";
@import "../codemirror/light.css";
:root {
--is-dark-theme: false;
--color-primary: #4183c4;
--color-primary-contrast: #ffffff;
--color-primary-dark-1: #3876b3;
--color-primary-dark-2: #31699f;
--color-primary-dark-3: #2b5c8b;
--color-primary-dark-4: #254f77;
--color-primary-dark-5: #193450;
--color-primary-dark-6: #0c1a28;
--color-primary-dark-7: #04080c;
--color-primary-light-1: #548fca;
--color-primary-light-2: #679cd0;
--color-primary-light-3: #7aa8d6;
--color-primary-light-4: #8db5dc;
--color-primary-light-5: #b3cde7;
--color-primary-light-6: #d9e6f3;
--color-primary-light-7: #f4f8fb;
--color-primary-alpha-10: #4183c419;
--color-primary-alpha-20: #4183c433;
--color-primary-alpha-30: #4183c44b;
--color-primary-alpha-40: #4183c466;
--color-primary-alpha-50: #4183c480;
--color-primary-alpha-60: #4183c499;
--color-primary-alpha-70: #4183c4b3;
--color-primary-alpha-80: #4183c4cc;
--color-primary-alpha-90: #4183c4e1;
--color-primary-hover: var(--color-primary-dark-1);
--color-primary-active: var(--color-primary-dark-2);
--color-secondary: #d0d7de;
--color-secondary-dark-1: #c7ced5;
--color-secondary-dark-2: #b9c0c7;
--color-secondary-dark-3: #99a0a7;
--color-secondary-dark-4: #899097;
--color-secondary-dark-5: #7a8188;
--color-secondary-dark-6: #6a7178;
--color-secondary-dark-7: #5b6269;
--color-secondary-dark-8: #4b5259;
--color-secondary-dark-9: #3c434a;
--color-secondary-dark-10: #2c333a;
--color-secondary-dark-11: #1d242b;
--color-secondary-dark-12: #0d141b;
--color-secondary-dark-13: #00040b;
--color-secondary-light-1: #dee5ec;
--color-secondary-light-2: #e4ebf2;
--color-secondary-light-3: #ebf2f9;
--color-secondary-light-4: #f1f8ff;
--color-secondary-alpha-10: #d0d7de19;
--color-secondary-alpha-20: #d0d7de33;
--color-secondary-alpha-30: #d0d7de4b;
--color-secondary-alpha-40: #d0d7de66;
--color-secondary-alpha-50: #d0d7de80;
--color-secondary-alpha-60: #d0d7de99;
--color-secondary-alpha-70: #d0d7deb3;
--color-secondary-alpha-80: #d0d7decc;
--color-secondary-alpha-90: #d0d7dee1;
--color-secondary-button: var(--color-secondary-dark-4);
--color-secondary-hover: var(--color-secondary-dark-5);
--color-secondary-active: var(--color-secondary-dark-6);
/* console colors - used for actions console and console files */
--color-console-fg: #f7f8f9;
--color-console-fg-subtle: #bdc4cc;
--color-console-bg: #171b1e;
--color-console-border: #2e353b;
--color-console-hover-bg: #272d33;
--color-console-active-bg: #2e353b;
--color-console-menu-bg: #262b31;
--color-console-menu-border: #414b55;
/* named 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-black: #1d2328;
/* light variants - produced via Sass scale-color(color, $lightness: +25%) */
--color-red-light: #e45e5e;
--color-orange-light: #f59555;
--color-yellow-light: #fcce46;
--color-olive-light: #d3e942;
--color-green-light: #46de6a;
--color-teal-light: #08fff4;
--color-blue-light: #51a5e3;
--color-violet-light: #8b67d7;
--color-purple-light: #bb64d8;
--color-pink-light: #e86bb1;
--color-brown-light: #c58b66;
--color-black-light: #4b5b68;
/* dark 1 variants - produced via Sass scale-color(color, $lightness: -10%) */
--color-red-dark-1: #c82121;
--color-orange-dark-1: #e6630d;
--color-yellow-dark-1: #e5ac04;
--color-olive-dark-1: #a3b816;
--color-green-dark-1: #1ea73e;
--color-teal-dark-1: #00a39c;
--color-blue-dark-1: #1e78bb;
--color-violet-dark-1: #5a30b5;
--color-purple-dark-1: #932eb4;
--color-pink-dark-1: #db228a;
--color-brown-dark-1: #955d39;
--color-black-dark-1: #2c3339;
/* dark 2 variants - produced via Sass scale-color(color, $lightness: -20%) */
--color-red-dark-2: #b11e1e;
--color-orange-dark-2: #cc580c;
--color-yellow-dark-2: #cc9903;
--color-olive-dark-2: #91a313;
--color-green-dark-2: #1a9537;
--color-teal-dark-2: #00918a;
--color-blue-dark-2: #1a6aa6;
--color-violet-dark-2: #502aa1;
--color-purple-dark-2: #8229a0;
--color-pink-dark-2: #c21e7b;
--color-brown-dark-2: #845232;
--color-black-dark-2: #131619;
/* ansi colors used for actions console and console files */
--color-ansi-black: #1e2327;
--color-ansi-red: #cc4848;
--color-ansi-green: #87ab63;
--color-ansi-yellow: #cc9903;
--color-ansi-blue: #3a8ac6;
--color-ansi-magenta: #d22e8b;
--color-ansi-cyan: #00918a;
--color-ansi-white: var(--color-console-fg-subtle);
--color-ansi-bright-black: #46494d;
--color-ansi-bright-red: #d15a5a;
--color-ansi-bright-green: #93b373;
--color-ansi-bright-yellow: #eaaf03;
--color-ansi-bright-blue: #4e96cc;
--color-ansi-bright-magenta: #d74397;
--color-ansi-bright-cyan: #00b6ad;
--color-ansi-bright-white: var(--color-console-fg);
/* other colors */
--color-grey: #697077;
--color-grey-light: #7c838a;
--color-gold: #a1882b;
--color-white: #ffffff;
--color-diff-added-linenum-bg: #d1f8d9;
--color-diff-added-row-bg: #e6ffed;
--color-diff-added-row-border: #e6ffed;
--color-diff-added-word-bg: #acf2bd;
--color-diff-moved-row-bg: #f1f8d1;
--color-diff-moved-row-border: #d0e27f;
--color-diff-removed-linenum-bg: #ffcecb;
--color-diff-removed-row-bg: #ffeef0;
--color-diff-removed-row-border: #f1c0c0;
--color-diff-removed-word-bg: #fdb8c0;
--color-diff-inactive: #f0f2f4;
--color-error-border: #e0b4b4;
--color-error-bg: #fff6f6;
--color-error-bg-active: #fbb;
--color-error-bg-hover: #fdd;
--color-error-text: #9f3a38;
--color-success-border: #a3c293;
--color-success-bg: #fcfff5;
--color-success-text: #2c662d;
--color-warning-border: #c9ba9b;
--color-warning-bg: #fffaf3;
--color-warning-text: #573a08;
--color-info-border: #a9d5de;
--color-info-bg: #f8ffff;
--color-info-text: #276f86;
--color-red-badge: #db2828;
--color-red-badge-bg: #db28281a;
--color-red-badge-hover-bg: #db28284d;
--color-green-badge: #21ba45;
--color-green-badge-bg: #21ba451a;
--color-green-badge-hover-bg: #21ba454d;
--color-yellow-badge: #fbbd08;
--color-yellow-badge-bg: #fbbd081a;
--color-yellow-badge-hover-bg: #fbbd084d;
--color-orange-badge: #f2711c;
--color-orange-badge-bg: #f2711c1a;
--color-orange-badge-hover-bg: #f2711c4d;
--color-git: #f05133;
/* target-based colors */
--color-body: #ffffff;
--color-box-header: #f1f3f5;
--color-box-body: #ffffff;
--color-box-body-highlight: #ecf5fd;
--color-text-dark: #01050a;
--color-text: #181c21;
--color-text-light: #30363b;
--color-text-light-1: #40474d;
--color-text-light-2: #5b6167;
--color-text-light-3: #747c84;
--color-footer: var(--color-nav-bg);
--color-timeline: #d0d7de;
--color-input-text: var(--color-text-dark);
--color-input-background: #fff;
--color-input-toggle-background: #d0d7de;
--color-input-border: var(--color-secondary);
--color-input-border-hover: var(--color-secondary-dark-1);
--color-light: #00001706;
--color-light-mimic-enabled: rgba(0, 0, 0, calc(6 / 255 * 222 / 255 / var(--opacity-disabled)));
--color-light-border: #0000171d;
--color-hover: #00001708;
--color-hover-opaque: #f1f3f5; /* TODO: color-mix(in srgb, var(--color-body), var(--color-hover)); */
--color-active: #00001714;
--color-menu: #f8f9fb;
--color-card: #f8f9fb;
--color-markup-table-row: #0030600a;
--color-markup-code-block: #00306010;
--color-markup-code-inline: #00306012;
--color-button: #f8f9fb;
--color-code-bg: #fafdff;
--color-shadow: #00001726;
--color-shadow-opaque: #c7ced5;
--color-secondary-bg: #f2f5f8;
--color-expand-button: #cfe8fa;
--color-placeholder-text: var(--color-text-light-3);
--color-editor-line-highlight: var(--color-primary-light-6);
--color-project-column-bg: var(--color-secondary-light-4);
--color-caret: var(--color-text-dark);
--color-reaction-bg: #0000170a;
--color-reaction-hover-bg: var(--color-primary-light-5);
--color-reaction-active-bg: var(--color-primary-light-6);
--color-tooltip-text: #fbfdff;
--color-tooltip-bg: #000017f0;
--color-nav-bg: #f6f7fa;
--color-nav-hover-bg: var(--color-secondary-light-1);
--color-nav-text: var(--color-text);
--color-secondary-nav-bg: #f9fafb;
--color-label-text: var(--color-text);
--color-label-bg: #949da64b;
--color-label-hover-bg: #949da6a0;
--color-label-active-bg: #949da6ff;
--color-accent: var(--color-primary-light-1);
--color-small-accent: var(--color-primary-light-6);
--color-highlight-fg: #eed200;
--color-highlight-bg: #fffbdd;
--color-overlay-backdrop: #080808c0;
accent-color: var(--color-accent);
color-scheme: light;
}

136
web_src/css/user.css Normal file
View File

@@ -0,0 +1,136 @@
.user.profile .ui.card .header {
display: block;
font-weight: var(--font-weight-semibold);
font-size: 1.3rem;
margin-top: -0.2rem;
line-height: 1.3rem;
}
.user.profile .ui.card .profile-avatar-name {
border-top: none;
text-align: center;
}
.user.profile .ui.card .extra.content {
padding: 0;
}
.user.profile .ui.card .extra.content > ul {
margin: 0;
padding: 0;
}
.user.profile .ui.card .extra.content > ul > li {
padding: 10px;
display: flex;
list-style: none;
align-items: center;
gap: 0.25em;
}
.user.profile .ui.card .extra.content > ul > li:not(:last-child) {
border-bottom: 1px solid var(--color-secondary);
}
.user.profile .ui.card .extra.content > ul > li.follow .ui.button {
width: 100%;
}
.user.profile .ui.card #profile-avatar {
padding: 1rem 1rem 0.25rem;
justify-content: center;
}
.user.profile .ui.card #profile-avatar img {
max-width: 100%;
height: auto;
}
@media (max-width: 767.98px) {
.user.profile .ui.card #profile-avatar img {
width: 30vw;
}
}
@media (max-width: 767.98px) {
.user.profile .ui.card {
width: 100%;
}
}
.user.profile .ui.secondary.stackable.pointing.menu {
flex-wrap: wrap;
}
.user.followers .header.name {
font-size: 20px;
line-height: 24px;
vertical-align: middle;
}
.user.followers .follow .ui.button {
padding: 8px 15px;
}
.user.link-account:not(.icon) {
padding-top: 15px;
padding-bottom: 5px;
}
.user-orgs {
display: flex;
flex-flow: row wrap;
padding: 0;
margin: -3px !important;
}
.user-orgs > li {
display: flex;
border-bottom: 0 !important;
padding: 3px !important;
max-width: 60px;
}
.user-badges {
display: grid;
grid-template-columns: repeat(auto-fill, 64px);
gap: 2px;
}
.user-badges img {
object-fit: contain;
}
#readme_profile {
padding: 1em 2em;
border-radius: var(--border-radius);
background: var(--color-card);
border: 1px solid var(--color-secondary);
}
#notification_table {
background: var(--color-box-body);
border: 1px solid var(--color-secondary);
border-radius: var(--border-radius);
}
.notifications-item:hover {
background: var(--color-hover);
}
.notifications-buttons {
display: none;
min-width: 74px;
}
.notifications-updated {
display: flex;
}
.notifications-item:hover .notifications-buttons {
display: flex;
}
.notifications-item:hover .notifications-updated {
display: none;
}