: root {
/* fonts */
--fonts-proportional : -apple-system , "Segoe UI" , system-ui , Roboto , "Helvetica Neue" , Arial ;
--fonts-monospace : ui-monospace , SFMono-Regular , "SF Mono" , Menlo , Monaco , Consolas , "Liberation Mono" , "Courier New" , monospace , var ( --fonts-emoji ) ;
--fonts-emoji : "Apple Color Emoji" , "Segoe UI Emoji" , "Noto Color Emoji" , "Twemoji Mozilla" ;
/* font weights - use between 400 and 600 for general purposes. Avoid 700 as it is perceived too bold */
--font-weight-light : 300 ;
--font-weight-normal : 400 ;
--font-weight-medium : 500 ;
--font-weight-semibold : 600 ;
--font-weight-bold : 700 ;
/* line-height: use the default value as "modules/normalize.css" */
--line-height-default : normal ;
/* backgrounds */
--checkbox-mask-checked : url ( 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="-1 -1 18 18" width="16" height="16"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg>' ) ;
--checkbox-mask-indeterminate : url ( 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M2 7.75A.75.75 0 012.75 7h10a.75.75 0 010 1.5h-10A.75.75 0 012 7.75z"></path></svg>' ) ;
--octicon-chevron-right : url ( 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg>' ) ;
/* non-color variables */
--border-radius : 4px ;
--border-radius-medium : 6px ;
--border-radius-circle : 50 % ;
--opacity-disabled : 0 . 55 ;
--height-loading : 16rem ;
--tab-size : 4 ;
/* base colors */
--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 : # dedede ;
--color-secondary-dark-1 : # cecece ;
--color-secondary-dark-2 : # bfbfbf ;
--color-secondary-dark-3 : # a0a0a0 ;
--color-secondary-dark-4 : # 909090 ;
--color-secondary-dark-5 : # 818181 ;
--color-secondary-dark-6 : # 717171 ;
--color-secondary-dark-7 : # 626262 ;
--color-secondary-dark-8 : # 525252 ;
--color-secondary-dark-9 : # 434343 ;
--color-secondary-dark-10 : # 333333 ;
--color-secondary-dark-11 : # 242424 ;
--color-secondary-dark-12 : # 141414 ;
--color-secondary-dark-13 : # 040404 ;
--color-secondary-light-1 : # e5e5e5 ;
--color-secondary-light-2 : # ebebeb ;
--color-secondary-light-3 : # f2f2f2 ;
--color-secondary-light-4 : # f8f8f8 ;
--color-secondary-alpha-10 : # dedede19 ;
--color-secondary-alpha-20 : # dedede33 ;
--color-secondary-alpha-30 : # dedede4b ;
--color-secondary-alpha-40 : # dedede66 ;
--color-secondary-alpha-50 : # dedede80 ;
--color-secondary-alpha-60 : # dedede99 ;
--color-secondary-alpha-70 : # dededeb3 ;
--color-secondary-alpha-80 : # dededecc ;
--color-secondary-alpha-90 : # dededee1 ;
--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 : # eeeff2 ;
--color-console-fg-subtle : # 959cab ;
--color-console-bg : # 262936 ;
--color-console-border : # 383c47 ;
--color-console-hover-bg : # ffffff16 ;
--color-console-active-bg : # 454a57 ;
--color-console-menu-bg : # 383c47 ;
--color-console-menu-border : # 5c6374 ;
/* 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 : # 1b1c1d ;
/* 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 : # 525558 ;
/* 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 : # 18191a ;
/* 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 : # 161617 ;
/* ansi colors used for actions console and console files */
--color-ansi-black : var ( --color-black ) ;
--color-ansi-red : var ( --color-red ) ;
--color-ansi-green : var ( --color-green ) ;
--color-ansi-yellow : var ( --color-yellow ) ;
--color-ansi-blue : var ( --color-blue ) ;
--color-ansi-magenta : var ( --color-pink ) ;
--color-ansi-cyan : var ( --color-teal ) ;
--color-ansi-white : var ( --color-console-fg-subtle ) ;
--color-ansi-bright-black : var ( --color-black-light ) ;
--color-ansi-bright-red : var ( --color-red-light ) ;
--color-ansi-bright-green : var ( --color-green-light ) ;
--color-ansi-bright-yellow : var ( --color-yellow-light ) ;
--color-ansi-bright-blue : var ( --color-blue-light ) ;
--color-ansi-bright-magenta : var ( --color-pink-light ) ;
--color-ansi-bright-cyan : var ( --color-teal-light ) ;
--color-ansi-bright-white : var ( --color-console-fg ) ;
/* other colors */
--color-grey : # 707070 ;
--color-grey-light : # 838383 ;
--color-gold : # a1882b ;
--color-white : # ffffff ;
--color-diff-removed-word-bg : # fdb8c0 ;
--color-diff-added-word-bg : # acf2bd ;
--color-diff-removed-row-bg : # ffeef0 ;
Prevent NPE in CSV diff rendering when column removed (#17018)
Fixes #16837 if a column is deleted.
We were clobbering the columns that were added by looping through the aline (base) and then when bline (head) was looped through, it clobbered what was in the "cells" array that is show in the diff, and then left a nil cell because nothing was shifted.
This fix properly shifts the cells, and properly puts the b cell either at its location or after, according to what the aline placed in the cells.
This includes test, adding a new test function since adding/removing cells works best with three columns, not two, which results in 4 columns of the resulting cells because it has a deleted column and an added column. If you try this locally, you can try those cases and others, such as adding a column.
There was no need to do anything special for the rows when `aline == 0 || bline == 0` so that was removed. This allows the same code to be used for removed or added lines, with the bcell text always being the RightCell, acell text being the LeftCell.
I still added the patch zeripath gave at https://github.com/go-gitea/gitea/issues/16837#issuecomment-913007382 so that just in case for some reason a cell is nil (which shouldn't happen now) it doesn't throw a 500 error, so the user can at least view the raw diff.
Also fixes in the [view.go](https://github.com/go-gitea/gitea/pull/17018/files#diff-43a7f4747c7ba8bff888c9be11affaafd595fd55d27f3333840eb19df9fad393L521) file how if a CSV file is empty (either created empty or if you edit it and remove all contents) it throws a huge 500 error when you then save it (when you view the file). Since we allow creating, saving and pushing empty files, we shouldn't throw an error on an empty CSV file, but just show its empty contents. This doesn't happen if it is a Markdown file or other type of file that is empty.
EDIT: Now handled in the markup/csv renderer code
3 years ago
--color-diff-moved-row-bg : # f1f8d1 ;
--color-diff-added-row-bg : # e6ffed ;
--color-diff-removed-row-border : # f1c0c0 ;
Prevent NPE in CSV diff rendering when column removed (#17018)
Fixes #16837 if a column is deleted.
We were clobbering the columns that were added by looping through the aline (base) and then when bline (head) was looped through, it clobbered what was in the "cells" array that is show in the diff, and then left a nil cell because nothing was shifted.
This fix properly shifts the cells, and properly puts the b cell either at its location or after, according to what the aline placed in the cells.
This includes test, adding a new test function since adding/removing cells works best with three columns, not two, which results in 4 columns of the resulting cells because it has a deleted column and an added column. If you try this locally, you can try those cases and others, such as adding a column.
There was no need to do anything special for the rows when `aline == 0 || bline == 0` so that was removed. This allows the same code to be used for removed or added lines, with the bcell text always being the RightCell, acell text being the LeftCell.
I still added the patch zeripath gave at https://github.com/go-gitea/gitea/issues/16837#issuecomment-913007382 so that just in case for some reason a cell is nil (which shouldn't happen now) it doesn't throw a 500 error, so the user can at least view the raw diff.
Also fixes in the [view.go](https://github.com/go-gitea/gitea/pull/17018/files#diff-43a7f4747c7ba8bff888c9be11affaafd595fd55d27f3333840eb19df9fad393L521) file how if a CSV file is empty (either created empty or if you edit it and remove all contents) it throws a huge 500 error when you then save it (when you view the file). Since we allow creating, saving and pushing empty files, we shouldn't throw an error on an empty CSV file, but just show its empty contents. This doesn't happen if it is a Markdown file or other type of file that is empty.
EDIT: Now handled in the markup/csv renderer code
3 years ago
--color-diff-moved-row-border : # d0e27f ;
--color-diff-added-row-border : # e6ffed ;
--color-diff-inactive : # f2f2f2 ;
--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-text-dark : # 080808 ;
--color-text : # 212121 ;
--color-text-light : # 555555 ;
--color-text-light-1 : # 6a6a6a ;
--color-text-light-2 : # 808080 ;
--color-text-light-3 : # a0a0a0 ;
--color-box-header : # f7f7f7 ;
--color-box-body : # ffffff ;
--color-box-body-highlight : # fafafa ;
--color-footer : # ffffff ;
--color-timeline : # ececec ;
--color-input-text : # 212121 ;
--color-input-background : # fafafa ;
--color-input-toggle-background : # dedede ;
--color-input-border : var ( --color-secondary ) ;
--color-input-border-hover : var ( --color-secondary-dark-1 ) ;
--color-light : # 00000006 ;
--color-light-mimic-enabled : rgba ( 0 , 0 , 0 , calc ( 6 / 255 * 222 / 255 / var ( --opacity-disabled ) ) ) ;
--color-light-border : # 0000001d ;
--color-hover : # 00000014 ;
--color-active : # 0000001b ;
--color-menu : # fafafa ;
--color-card : # fafafa ;
--color-markup-table-row : # 00000008 ;
--color-markup-code-block : # 00000010 ;
--color-button : # fafafa ;
--color-code-bg : # ffffff ;
--color-code-sidebar-bg : # f5f5f5 ;
--color-shadow : # 00000026 ;
--color-secondary-bg : # f4f4f4 ;
--color-expand-button : # d8efff ;
--color-placeholder-text : # aaa ;
--color-editor-line-highlight : var ( --color-primary-light-6 ) ;
--color-project-board-bg : var ( --color-secondary-light-4 ) ;
--color-project-board-dark-label : # 111111 ;
--color-project-board-light-label : # eeeeee ;
--color-caret : var ( --color-text-dark ) ;
--color-reaction-bg : # 0000000a ;
--color-reaction-hover-bg : var ( --color-primary-light-5 ) ;
--color-reaction-active-bg : var ( --color-primary-light-6 ) ;
--color-tooltip-text : # ffffff ;
--color-tooltip-bg : # 000000f0 ;
--color-nav-bg : # ffffff ;
--color-nav-hover-bg : # ebebeb ;
--color-label-text : # 232323 ;
--color-label-bg : # cacaca5b ;
--color-label-hover-bg : # cacacaa0 ;
--color-label-active-bg : # cacacaff ;
--color-accent : var ( --color-primary-light-1 ) ;
--color-small-accent : var ( --color-primary-light-6 ) ;
--color-active-line : # fffbdd ;
--color-overlay-backdrop : # 080808c0 ;
accent-color : var ( --color-accent ) ;
color-scheme : light ;
}
: root * {
--fonts-regular : var ( --fonts-override , var ( --fonts-proportional ) ) , "Noto Sans" , "Liberation Sans" , sans-serif , var ( --fonts-emoji ) ;
}
textarea {
font-family : var ( --fonts-regular ) ;
}
pre ,
code ,
kbd ,
samp {
font-size : 0 . 9em ; /* compensate for monospace fonts being usually slightly larger */
font-family : var ( --fonts-monospace ) ;
}
b ,
strong ,
h1 ,
h2 ,
h3 ,
h4 ,
h5 ,
h6 {
font-weight : var ( --font-weight-semibold ) ;
}
body {
color : var ( --color-text ) ;
background-color : var ( --color-body ) ;
tab-size : var ( --tab-size ) ;
display : flex ;
flex-direction : column ;
overflow-wrap : break-word ;
}
table {
border-collapse : collapse ;
}
button {
cursor : pointer ;
}
details summary {
cursor : pointer ;
}
details summary > * {
display : inline ;
}
progress {
background : var ( --color-secondary-dark-1 ) ;
border-radius : var ( --border-radius ) ;
border : none ;
overflow : hidden ;
}
progress :: -webkit-progress-bar {
background : var ( --color-secondary-dark-1 ) ;
}
progress :: -webkit-progress-value {
background-color : var ( --color-accent ) ;
}
progress :: -moz-progress-bar {
background-color : var ( --color-accent ) ;
}
* {
scrollbar-color : var ( --color-primary ) transparent ;
caret-color : var ( --color-caret ) ;
}
:: -webkit-scrollbar {
width : 10px ;
height : 10px ;
}
:: -webkit-scrollbar-thumb {
box-shadow : inset 0 0 0 6px var ( --color-primary ) ;
border : 2px solid transparent ;
border-radius : var ( --border-radius ) ;
}
:: -webkit-scrollbar-thumb : window-inactive {
box-shadow : inset 0 0 0 6px var ( --color-primary ) ;
}
:: -webkit-scrollbar-thumb : hover {
box-shadow : inset 0 0 0 6px var ( --color-primary-dark-2 ) ;
}
:: -webkit-scrollbar-corner {
background : transparent ;
}
:: file-selector-button {
border : 1px solid var ( --color-light-border ) ;
color : var ( --color-text-light ) ;
background : var ( --color-light ) ;
border-radius : var ( --border-radius ) ;
}
:: file-selector-button : hover {
color : var ( --color-text ) ;
background : var ( --color-hover ) ;
}
:: selection {
background : var ( --color-primary-light-1 ) ! important ;
color : var ( --color-white ) ! important ;
}
:: placeholder ,
. ui . dropdown : not ( . button ) > . default . text ,
. ui . default . dropdown : not ( . button ) > . text {
color : var ( --color-placeholder-text ) ! important ;
opacity : 1 ! important ;
}
. unselectable ,
. button ,
. lines-num ,
. lines-commit ,
. lines-commit . blame-info ,
. ellipsis-button {
-webkit-touch-callout : none ;
-webkit-user-select : none ;
user-select : none ;
}
a {
color : var ( --color-primary ) ;
cursor : pointer ;
text-decoration-skip-ink : all ;
}
/* muted link = only colored when hovered */
/* silenced link = never colored */
a . muted ,
a . silenced ,
. muted-links a {
color : inherit ;
}
a : hover ,
a . muted : hover ,
a . muted : hover [ class * = "color-text" ] ,
. muted-links a : hover {
color : var ( --color-primary ) ;
}
a . silenced : hover {
color : inherit ;
text-decoration : none ;
}
a . label ,
. repository-menu a ,
. ui . search . results a ,
. ui . menu a ,
. ui . cards a . card ,
. issue-keyword a {
text-decoration : none ! important ;
}
. ui . search > . results {
background : var ( --color-body ) ;
border-color : var ( --color-secondary ) ;
}
. ui . search > . results . result {
background : var ( --color-body ) ;
}
. ui . search > . results . result . title {
color : var ( --color-text-dark ) ;
}
. ui . search > . results . result . description {
color : var ( --color-text-light-2 ) ;
}
. ui . search > . results . result . image {
width : auto ;
height : auto ;
}
. ui . search > . results . result : hover ,
. ui . category . search > . results . category . result : hover {
background : var ( --color-hover ) ;
}
. inline-code-block {
padding : 2px 4px ;
border-radius : var ( --border-radius-medium ) ;
background-color : var ( --color-markup-code-block ) ;
}
. ui . dividing . header {
border-bottom-color : var ( --color-secondary ) ;
}
. page-content {
margin-top : 15px ;
}
. page-content . header-wrapper ,
. page-content . new-menu {
margin-top : -15px ! important ;
padding-top : 15px ! important ;
}
/* fix Fomantic's line-height cutting off "g" on Windows Chrome with Segoe UI */
. ui . input > input {
line-height : var ( --line-height-default ) ;
}
. ui . input . focus > input ,
. ui . input > input : focus {
border-color : var ( --color-primary ) ;
}
. ui . action . input . button {
border-color : var ( --color-input-border ) ;
}
/* 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 , : hover ) {
border-right-color : transparent ;
}
. ui . action . input : not ( [ class * = "left action" ] ) > input ,
. ui . action . input : not ( [ class * = "left action" ] ) > input : hover {
border-right : 1px solid transparent ;
}
. ui . action . input : not ( [ class * = "left action" ] ) > input : focus {
border-right-color : var ( --color-primary ) ;
}
. ui . menu ,
. ui . vertical . menu {
background : var ( --color-menu ) ;
border-color : var ( --color-secondary ) ;
}
. ui . menu . item {
color : var ( --color-text ) ;
user-select : auto ;
line-height : var ( --line-height-default ) ; /* fomantic uses "1" which causes overflow problems because "1" doesn't consider the descent part */
}
. ui . menu . item > . svg {
margin-right : 0 . 35em ;
}
. ui . menu . dropdown . item : hover ,
. ui . menu a . item : hover ,
. ui . menu details . item summary : hover {
color : var ( --color-text ) ;
background : var ( --color-hover ) ;
}
. ui . menu . active . item ,
. ui . menu . active . item : hover ,
. ui . vertical . menu . active . item ,
. ui . vertical . menu . active . item : hover {
color : var ( --color-text ) ;
background : var ( --color-active ) ;
}
. ui . menu a . item : active {
color : var ( --color-text ) ;
background : none ;
}
. ui . ui . menu . item . disabled {
color : var ( --color-text-light-3 ) ;
}
. ui . menu . item :: before , . ui . vertical . menu . item :: before {
background : var ( --color-secondary ) ;
}
/* sub menu of vertical menu */
. 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 {
color : var ( --color-text ) ;
}
/* slightly more contrast for filters on issue list */
. ui . ui . menu . dropdown . item . disabled {
color : var ( --color-text-light-2 ) ;
}
. ui . dropdown . menu {
background : var ( --color-menu ) ;
border-color : var ( --color-secondary ) ;
}
. ui . dropdown . menu > . header : not ( . ui ) {
color : var ( --color-text ) ;
}
. ui . dropdown . menu > . item {
color : var ( --color-text ) ;
}
. ui . dropdown . menu > . item : hover {
color : var ( --color-text ) ;
background : var ( --color-hover ) ;
}
. ui . dropdown . menu > . item : active {
color : var ( --color-text ) ;
background : var ( --color-active ) ;
}
. ui . dropdown . menu . active . item {
color : var ( --color-text ) ;
background : var ( --color-active ) ;
border-radius : 0 ;
font-weight : var ( --font-weight-normal ) ;
}
/* fix misaligned images in webhook dropdown */
. ui . dropdown . menu > . item > img {
margin-top : -0 . 25rem ;
margin-bottom : -0 . 25rem ;
}
. ui . dropdown . menu > . item > svg {
margin-right : . 78rem ; /* use the same margin as for <img> */
}
. ui . selection . dropdown . menu > . item {
border-color : var ( --color-secondary ) ;
}
. ui . selection . visible . dropdown > . text : not ( . default ) {
color : var ( --color-text ) ;
}
. ui . dropdown . selected ,
. ui . dropdown . menu . selected . item {
color : var ( --color-text ) ;
background : var ( --color-hover ) ;
}
. ui . menu . ui . dropdown . menu > . selected . item {
color : var ( --color-text ) ! important ;
background : var ( --color-hover ) ! important ;
}
. ui . dropdown . menu > . message : not ( . ui ) {
color : var ( --color-text-light-2 ) ;
}
. ui . dropdown > . text > . description ,
. ui . dropdown . menu > . item > . description {
color : var ( --color-text-light-2 ) ;
}
. ui . list . list > . item . header ,
. ui . list > . item . header {
color : var ( --color-text-dark ) ;
}
. ui . list . list > . item > . content ,
. ui . list > . item > . content {
color : var ( --color-text ) ;
}
. ui . list . list > . item . description ,
. ui . list > . item . description {
color : var ( --color-text ) ;
}
/ * replace item margin on secondary menu items with gap and remove both the
negative margins on the menu as well as margin on the items * /
. ui . secondary . menu {
margin-left : 0 ;
margin-right : 0 ;
gap : . 35714286em ;
}
. ui . secondary . menu . item {
margin-left : 0 ;
margin-right : 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 ,
. ui . secondary . menu . active . item : hover {
color : var ( --color-text ) ;
background : var ( --color-active ) ;
}
. ui . secondary . menu . tight . item {
padding-left : 0 . 85714286em ;
padding-right : 0 . 85714286em ;
}
/* remove the menu clearfix so that it won't add undesired gaps when using "gap" */
. ui . menu :: after {
content : normal ;
}
. ui . menu . dropdown . item . menu {
background : var ( --color-body ) ;
}
. ui . menu . ui . dropdown . menu > . item {
color : var ( --color-text ) ! important ;
}
. ui . menu . ui . dropdown . menu > . item : hover {
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 ;
}
/* styles from removed fomantic transition module */
. hidden . transition {
visibility : hidden ;
display : none ;
}
. visible . transition {
display : block ! important ;
visibility : visible ! important ;
}
. ui . message {
background : var ( --color-box-body ) ;
color : var ( --color-text ) ;
box-shadow : none ! important ;
border : 1px solid var ( --color-secondary ) ;
}
. 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 . error . header {
background : var ( --color-error-bg ) ! important ;
color : var ( --color-error-text ) ! important ;
border-color : var ( --color-error-border ) ! important ;
}
. ui . error . segment {
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 ;
}
. ui . warning . segment {
border-color : var ( --color-warning-border ) ! important ;
}
. ui . selection . active . dropdown ,
. ui . selection . active . dropdown : hover ,
. ui . selection . active . dropdown . menu ,
. ui . selection . active . dropdown : hover . menu {
border-color : var ( --color-primary ) ;
}
. ui . selection . dropdown . menu {
margin : 0 -1 . 25px ;
}
. ui . pointing . dropdown > . menu : not ( . hidden ) :: after {
background : var ( --color-menu ) ;
box-shadow : -1px -1px 0 0 var ( --color-secondary ) ;
}
. ui . pointing . upward . dropdown . menu :: after ,
. ui . top . pointing . upward . dropdown . menu :: after {
box-shadow : 1px 1px 0 0 var ( --color-secondary ) ;
}
. ui . comments . comment . text {
margin : 0 ;
}
. ui . comments . comment . text ,
. ui . comments . comment . author {
color : var ( --color-text ) ;
}
. ui . comments . comment a . author : hover {
color : var ( --color-primary ) ;
}
. ui . comments . comment . metadata {
color : var ( --color-text-light-2 ) ;
}
. ui . comments . comment . actions a {
color : var ( --color-text-light ) ;
}
. ui . comments . comment . actions a . active ,
. ui . comments . comment . actions a : hover {
color : var ( --color-primary ) ;
}
. ui . attached . table {
border-color : var ( --color-secondary ) ;
}
. ui . table {
color : var ( --color-text ) ;
background : var ( --color-box-body ) ;
border-color : var ( --color-secondary ) ;
text-align : start ; /* Override fomantic's `text-align: left` to make RTL work via HTML `dir="auto"` */
}
. ui . table th ,
. ui . table td {
transition : none ;
}
. ui . table > tr > td ,
. ui . table > tbody > tr > td {
border-top-color : var ( --color-secondary-alpha-50 ) ;
}
. ui . striped . table > tr : nth-child ( 2n ) ,
. ui . striped . table > tbody > tr : nth-child ( 2n ) ,
. ui . basic . striped . table > tbody > tr : nth-child ( 2n ) {
background : var ( --color-light ) ;
}
. ui . ui . ui . ui . table tr . active ,
. ui . ui . table td . active {
color : var ( --color-text ) ;
background : var ( --color-active ) ;
}
. ui . ui . selectable . table > tbody > tr : hover ,
. ui . table tbody tr td . selectable : hover {
color : var ( --color-text ) ;
background-color : var ( --color-secondary-alpha-40 ) ;
}
. ui . ui . ui . ui . table tr . grey : not ( . marked ) ,
. ui . ui . table td . grey : not ( . marked ) {
background : var ( --color-body ) ;
color : var ( --color-text ) ;
}
. ui . table > thead > tr > th {
background : var ( --color-box-header ) ;
border-color : var ( --color-secondary ) ;
color : var ( --color-text ) ;
}
. ui . basic . table > tbody > tr {
border-color : var ( --color-secondary ) ;
}
. ui . table > tfoot > tr > th ,
. ui . table > tfoot > tr > td {
border-color : var ( --color-secondary ) ;
background : var ( --color-box-body ) ;
color : var ( --color-text ) ;
}
/* reduce table padding, needed especially for dense admin tables */
. ui . table > thead > tr > th ,
. ui . table > tbody > tr > td ,
. ui . table > tr > td {
padding : 6px 5px ;
}
/* 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 ;
}
img . ui . avatar ,
. ui . avatar img ,
. ui . avatar svg {
border-radius : var ( --border-radius ) ;
object-fit : contain ;
aspect-ratio : 1 ;
}
. ui . divided . list > . item {
border-color : var ( --color-secondary ) ;
}
. ui . error . message . header ,
. ui . warning . message . header {
color : inherit ;
filter : saturate ( 2 ) ;
}
. full . height {
flex-grow : 1 ;
padding-bottom : 80px ;
}
/* overwrite semantic width of containers inside the main page content div (div with class "page-content") */
. page-content . ui . ui . ui . container : not ( . fluid ) {
width : 1280px ;
max-width : calc ( 100 % - 64px ) ;
margin-left : auto ;
margin-right : auto ;
}
. ui . container . fluid . padded {
padding : 0 32px ;
}
/* enable fluid page widths for medium size viewports */
@ media ( min-width : 768px ) and ( max-width : 1200px ) {
. page-content . ui . ui . ui . container : not ( . fluid ) {
max-width : calc ( 100 % - 32px ) ;
}
. ui . container . fluid . padded {
padding : 0 16px ;
}
}
@ media ( max-width : 767 . 98px ) {
. page-content . ui . ui . ui . container : not ( . fluid ) {
max-width : calc ( 100 % - 16px ) ;
}
. ui . container . fluid . padded {
padding : 0 8px ;
}
}
. ui . pagination . menu . active . item {
color : var ( --color-text ) ;
background : var ( --color-active ) ;
}
. ui . loading . segment :: before ,
. ui . loading . form :: before {
background : none ;
}
. ui . loading . form > * ,
. ui . loading . segment > * {
opacity : 0 . 35 ;
}
. ui . form . fields . error . field textarea ,
. ui . form . fields . error . field select ,
. ui . form . fields . error . field input : not ( [ type ] ) ,
. ui . form . fields . error . field input [ type = "date" ] ,
. ui . form . fields . error . field input [ type = "datetime-local" ] ,
. ui . form . fields . error . field input [ type = "email" ] ,
. ui . form . fields . error . field input [ type = "number" ] ,
. ui . form . fields . error . field input [ type = "password" ] ,
. ui . form . fields . error . field input [ type = "search" ] ,
. ui . form . fields . error . field input [ type = "tel" ] ,
. ui . form . fields . error . field input [ type = "time" ] ,
. ui . form . fields . error . field input [ type = "text" ] ,
. ui . form . fields . error . field input [ type = "file" ] ,
. ui . form . fields . error . field input [ type = "url" ] ,
. ui . form . fields . error . field . ui . dropdown ,
. ui . form . fields . error . field . ui . dropdown . item ,
. ui . form . field . error . ui . dropdown ,
. ui . form . field . error . ui . dropdown . text ,
. ui . form . field . error . ui . dropdown . item ,
. ui . form . field . error textarea ,
. ui . form . field . error select ,
. ui . form . field . error input : not ( [ type ] ) ,
. ui . form . field . error input [ type = "date" ] ,
. ui . form . field . error input [ type = "datetime-local" ] ,
. ui . form . field . error input [ type = "email" ] ,
. ui . form . field . error input [ type = "number" ] ,
. ui . form . field . error input [ type = "password" ] ,
. ui . form . field . error input [ type = "search" ] ,
. ui . form . field . error input [ type = "tel" ] ,
. ui . form . field . error input [ type = "time" ] ,
. ui . form . field . error input [ type = "text" ] ,
. ui . form . field . error input [ type = "file" ] ,
. ui . form . field . error input [ type = "url" ] ,
. ui . form . field . error select : focus ,
. ui . form . field . error input : not ( [ type ] ) : focus ,
. ui . form . field . error input [ type = "date" ] : focus ,
. ui . form . field . error input [ type = "datetime-local" ] : focus ,
. ui . form . field . error input [ type = "email" ] : focus ,
. ui . form . field . error input [ type = "number" ] : focus ,
. ui . form . field . error input [ type = "password" ] : focus ,
. ui . form . field . error input [ type = "search" ] : focus ,
. ui . form . field . error input [ type = "tel" ] : focus ,
. ui . form . field . error input [ type = "time" ] : focus ,
. ui . form . field . error input [ type = "text" ] : focus ,
. ui . form . field . error input [ type = "file" ] : focus ,
. ui . form . field . error input [ type = "url" ] : focus {
background-color : var ( --color-error-bg ) ;
border-color : var ( --color-error-border ) ;
color : var ( --color-error-text ) ;
}
. ui . form . fields . error . field . ui . dropdown ,
. ui . form . field . error . ui . dropdown ,
. ui . form . fields . error . field . ui . dropdown : hover ,
. ui . form . field . error . ui . dropdown : hover {
border-color : var ( --color-error-border ) ! important ;
}
. ui . form . fields . error . field . ui . dropdown . menu . item : hover ,
. ui . form . field . error . ui . dropdown . menu . item : hover {
background-color : var ( --color-error-bg-hover ) ;
}
. ui . form . fields . error . field . ui . dropdown . menu . active . item ,
. ui . form . field . error . ui . dropdown . menu . active . item {
background-color : var ( --color-error-bg-active ) ! important ;
}
. ui . form . fields . error . dropdown . menu ,
. ui . form . field . error . dropdown . menu {
border-color : var ( --color-error-border ) ! important ;
}
/* A fix for text visibility issue in Chrome autofill in dark mode. */
/* It's a problem from Formatic UI, and this rule overrides it. */
. ui . form . field . field input : -webkit-autofill {
-webkit-text-fill-color : var ( --color-black ) ! important ;
}
Scoped labels (#22585)
Add a new "exclusive" option per label. This makes it so that when the
label is named `scope/name`, no other label with the same `scope/`
prefix can be set on an issue.
The scope is determined by the last occurence of `/`, so for example
`scope/alpha/name` and `scope/beta/name` are considered to be in
different scopes and can coexist.
Exclusive scopes are not enforced by any database rules, however they
are enforced when editing labels at the models level, automatically
removing any existing labels in the same scope when either attaching a
new label or replacing all labels.
In menus use a circle instead of checkbox to indicate they function as
radio buttons per scope. Issue filtering by label ensures that only a
single scoped label is selected at a time. Clicking with alt key can be
used to remove a scoped label, both when editing individual issues and
batch editing.
Label rendering refactor for consistency and code simplification:
* Labels now consistently have the same shape, emojis and tooltips
everywhere. This includes the label list and label assignment menus.
* In label list, show description below label same as label menus.
* Don't use exactly black/white text colors to look a bit nicer.
* Simplify text color computation. There is no point computing luminance
in linear color space, as this is a perceptual problem and sRGB is
closer to perceptually linear.
* Increase height of label assignment menus to show more labels. Showing
only 3-4 labels at a time leads to a lot of scrolling.
* Render all labels with a new RenderLabel template helper function.
Label creation and editing in multiline modal menu:
* Change label creation to open a modal menu like label editing.
* Change menu layout to place name, description and colors on separate
lines.
* Don't color cancel button red in label editing modal menu.
* Align text to the left in model menu for better readability and
consistent with settings layout elsewhere.
Custom exclusive scoped label rendering:
* Display scoped label prefix and suffix with slightly darker and
lighter background color respectively, and a slanted edge between them
similar to the `/` symbol.
* In menus exclusive labels are grouped with a divider line.
---------
Co-authored-by: Yarden Shoham <hrsi88@gmail.com>
Co-authored-by: Lauris BH <lauris@nix.lv>
2 years ago
. ui . form . field . muted {
opacity : var ( --opacity-disabled ) ;
}
. ui . loading . loading . input > i . icon svg {
visibility : hidden ;
}
. text . primary {
color : var ( --color-primary ) ! important ;
}
. text . red {
color : var ( --color-red ) ! important ;
}
. text . orange {
color : var ( --color-orange ) ! important ;
}
. text . yellow {
color : var ( --color-yellow ) ! important ;
}
. text . olive {
color : var ( --color-olive ) ! important ;
}
. text . green {
color : var ( --color-green ) ! important ;
}
. text . teal {
color : var ( --color-teal ) ! important ;
}
. text . blue {
color : var ( --color-blue ) ! important ;
}
. text . violet {
color : var ( --color-violet ) ! important ;
}
. text . purple {
color : var ( --color-purple ) ! important ;
}
. text . pink {
color : var ( --color-pink ) ! important ;
}
. text . brown {
color : var ( --color-brown ) ! important ;
}
. text . black {
color : var ( --color-text ) ! important ;
}
. text . grey {
color : var ( --color-text-light ) ! important ;
}
. text . light {
color : var ( --color-text-light ) ! important ;
}
. text . light-2 {
color : var ( --color-text-light-2 ) ! important ;
}
. text . light-3 {
color : var ( --color-text-light-3 ) ! important ;
}
. text . light . grey {
color : var ( --color-grey-light ) ! important ;
}
. text . gold {
color : var ( --color-gold ) ! important ;
}
. text . small {
font-size : 0 . 75em ;
}
. ui . form . ui . button {
font-weight : var ( --font-weight-normal ) ;
}
. ui . floating . label {
z-index : 10 ;
}
. ui . transparent . label {
background-color : transparent ;
}
. ui . menu ,
. ui . vertical . menu ,
. ui . segment {
box-shadow : none ;
}
/* replace fomantic popover box shadows */
. ui . dropdown . menu ,
. ui . upward . dropdown > . menu ,
. ui . menu . dropdown . item . menu ,
. ui . selection . active . dropdown . menu ,
. ui . upward . selection . dropdown . menu ,
. ui . selection . active . dropdown : hover . menu ,
. ui . upward . active . selection . dropdown : hover . menu {
box-shadow : 0 6px 18px var ( --color-shadow ) ;
}
. ui . floating . dropdown . menu {
box-shadow : 0 6px 18px var ( --color-shadow ) ! important ;
}
. ui . dimmer {
background : var ( --color-overlay-backdrop ) ;
}
/* Override semantic selector '.ui.menu:not(.vertical) .item > .button' */
/* This fixes the commit graph button on the commits page */
/* modal svg icons, copied from fomantic except width and height */
/* center text in fomantic modal dialogs */
. ui . menu : not ( . vertical ) . item > . button . compact {
padding : 0 . 58928571em 1 . 125em ;
}
. ui . menu : not ( . vertical ) . item > . button . small {
font-size : 0 . 92857143rem ;
}
. ui . menu . ui . dropdown . item . menu . item {
width : 100 % ;
}
. ui . dropdown . menu > . item > . floating . label {
z-index : 11 ;
}
. ui . dropdown . menu . menu > . item > . floating . label {
z-index : 21 ;
}
. ui . dropdown . menu > . header {
font-size : 0 . 8em ;
}
. ui . text . left {
text-align : left ! important ;
}
. ui . text . right {
text-align : right ! important ;
}
. ui . text . normal {
font-weight : var ( --font-weight-normal ) ;
}
. ui . text . italic {
font-style : italic ;
}
. ui . text . truncate {
overflow-x : hidden ;
text-overflow : ellipsis ;
white-space : nowrap ;
display : inline-block ;
}
. ui . text . thin {
font-weight : var ( --font-weight-normal ) ;
}
. ui . text . middle {
vertical-align : middle ;
}
. ui . message . flash-message {
text-align : center ;
}
. ui . message > ul {
margin-left : auto ;
margin-right : auto ;
display : table ;
text-align : left ;
}
. ui . header > i + . content {
padding-left : 0 . 75rem ;
vertical-align : middle ;
}
. ui . info . segment . top h3 ,
. ui . info . segment . top h4 {
margin-top : 0 ;
}
. ui . info . segment . top h3 : last-child {
margin-top : 4px ;
}
. ui . info . segment . top > : last-child {
margin-bottom : 0 ;
}
. ui . normal . header {
font-weight : var ( --font-weight-normal ) ;
}
. ui . form . autofill-dummy {
position : absolute ;
width : 1px ;
height : 1px ;
overflow : hidden ;
z-index : -10000 ;
}
. ui . form . sub . field {
margin-left : 25px ;
}
. ui . sha . label {
font-family : var ( --fonts-monospace ) ;
font-size : 13px ;
padding : 6px 10px 4px ;
font-weight : var ( --font-weight-normal ) ;
margin : 0 6px ;
}
. ui . button . copy-commit-sha {
border : 1px solid var ( --color-light-border ) ;
margin-right : 3px ;
padding : 6px 6px 4px ;
background : var ( --color-light ) ;
}
. ui . button . truncate {
display : inline-block ;
max-width : 100 % ;
overflow : hidden ;
text-overflow : ellipsis ;
vertical-align : top ;
white-space : nowrap ;
margin-right : 6px ;
}
. ui . status . buttons . svg {
margin-right : 4px ;
}
. ui . inline . delete-button {
padding : 8px 15px ;
font-weight : var ( --font-weight-normal ) ;
}
. ui . background . red {
background-color : var ( --color-red ) ! important ;
}
. ui . background . blue {
background-color : var ( --color-blue ) ! important ;
}
. ui . background . black {
background-color : var ( --color-black ) ! important ;
}
. ui . background . grey {
background-color : var ( --color-grey ) ! important ;
}
. ui . background . light . grey {
background-color : var ( --color-grey ) ! important ;
}
. ui . background . green {
background-color : var ( --color-green ) ! important ;
}
. ui . background . purple {
background-color : var ( --color-purple ) ! important ;
}
. ui . background . yellow {
background-color : var ( --color-yellow ) ! important ;
}
. ui . background . orange {
background-color : var ( --color-orange ) ! important ;
}
. ui . background . gold {
background-color : var ( --color-gold ) ! important ;
}
. ui . migrate {
color : var ( --color-text-light-2 ) ! important ;
}
. ui . migrate a {
color : var ( --color-text-light ) ! important ;
}
. ui . migrate a : hover {
color : var ( --color-text ) ! important ;
}
. ui . border {
border : 1px solid ;
}
. ui . border . red {
border-color : var ( --color-red ) ! important ;
}
. ui . border . blue {
border-color : var ( --color-blue ) ! important ;
}
. ui . border . black {
border-color : var ( --color-black ) ! important ;
}
. ui . border . grey {
border-color : var ( --color-grey ) ! important ;
}
. ui . border . light . grey {
border-color : var ( --color-grey ) ! important ;
}
. ui . border . green {
border-color : var ( --color-green ) ! important ;
}
. ui . border . purple {
border-color : var ( --color-purple ) ! important ;
}
. ui . border . yellow {
border-color : var ( --color-yellow ) ! important ;
}
. ui . border . orange {
border-color : var ( --color-orange ) ! important ;
}
. ui . border . gold {
border-color : var ( --color-gold ) ! important ;
}
@ 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 . 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 . floating . dropdown . overflow . menu . scrolling . menu . items {
border-radius : 0 ! important ;
box-shadow : none ! important ;
border-bottom : 1px solid var ( --color-secondary ) ;
}
. user-menu > . item {
width : 100 % ;
border-radius : 0 ! important ;
}
. scrolling . menu . item . selected {
font-weight : var ( --font-weight-semibold ) ! important ;
}
. ui . dropdown . scrolling . menu {
border-color : var ( --color-secondary ) ;
}
. color-preview {
display : inline-block ;
margin-left : 0 . 4em ;
height : 0 . 67em ;
width : 0 . 67em ;
border-radius : var ( --border-radius ) ;
}
. attention-icon {
vertical-align : text-top ;
}
. attention-note {
font-weight : unset ;
color : var ( --color-info-text ) ;
}
. attention-warning {
font-weight : unset ;
color : var ( --color-warning-text ) ;
}
. center : not ( . popup ) {
text-align : center ;
}
@ media ( max-width : 767 . 98px ) {
/* double selector so it wins over .gt-df etc */
. not-mobile . not-mobile {
display : none ! important ;
}
}
. ui . menu . new-menu {
margin-bottom : 15px ;
background : var ( --color-header-wrapper ) ;
border-bottom : 1px solid var ( --color-secondary ) ! important ;
overflow : auto ;
}
. ui . menu . new-menu . new-menu-inner {
display : flex ;
margin-left : auto ;
margin-right : auto ;
overflow-x : auto ;
}
. ui . menu . new-menu :: after {
position : absolute ;
display : block ;
background : linear-gradient ( to right , var ( --color-header-wrapper-transparent ) , var ( --color-header-wrapper ) 100 % ) ;
content : "" ;
right : 0 ;
height : 39px ;
width : 60px ;
visibility : visible ;
pointer-events : none ;
}
. ui . menu . new-menu . shadow-body :: after {
background : linear-gradient ( to right , transparent , var ( --color-body ) 100 % ) ;
}
. ui . menu . new-menu . item {
margin-bottom : 0 ! important ; /* reset fomantic's margin, because the active menu has special bottom border */
}
@ media ( max-width : 767 . 98px ) {
. ui . menu . new-menu . item {
width : auto ! important ;
}
}
. ui . menu . new-menu . item : first-child {
margin-left : auto ; /* "justify-content: center" doesn't work with "overflow: auto", so use margin: auto */
}
. ui . menu . new-menu . item : last-child {
padding-right : 30px ! important ;
margin-right : auto ;
}
. ui . menu . new-menu :: -webkit-scrollbar {
height : 6px ;
display : none ;
}
. ui . menu . new-menu :: -webkit-scrollbar-track {
background : none ! important ;
}
. ui . menu . new-menu :: -webkit-scrollbar-thumb {
box-shadow : none ! important ;
}
. ui . menu . new-menu : hover :: -webkit-scrollbar {
display : block ;
}
. repos-search {
padding-bottom : 0 ! important ;
}
. repos-filter {
margin-top : 0 ! important ;
border-bottom-width : 0 ! important ;
margin-bottom : 2px ! important ;
justify-content : space-evenly ;
}
. ui . secondary . pointing . menu . repos-filter . item {
padding-left : 4 . 5px ;
padding-right : 4 . 5px ;
}
. repo-title {
font-size : 1 . 5rem ;
display : flex ;
align-items : center ;
flex : 1 ;
word-break : break-all ;
color : var ( --color-text-light ) ;
}
. repo-title . labels {
margin-left : 0 . 5rem ;
}
. repo-title . labels > * + * {
margin-left : 0 . 5rem ;
}
. activity-bar-graph {
background-color : var ( --color-primary ) ;
color : var ( --color-primary-contrast ) ;
}
. activity-bar-graph-alt {
color : var ( --color-primary-contrast ) ;
}
. archived-icon {
color : var ( --color-secondary-dark-2 ) ! important ;
}
. oauth2-authorize-application-box {
margin-top : 3em ! important ;
}
/* multiple radio or checkboxes as inline element */
. inline-grouped-list {
display : inline-block ;
vertical-align : top ;
}
. inline-grouped-list > . ui {
display : block ;
margin-top : 5px ;
margin-bottom : 10px ;
}
. inline-grouped-list > . ui : first-child {
margin-top : 1px ;
}
. ui . label {
padding : 0 . 3em 0 . 5em ;
transition : none ;
}
. ui . label ,
. ui . menu . item > . label {
background : var ( --color-label-bg ) ;
color : var ( --color-label-text ) ;
}
. ui . label > a {
opacity : . 75 ; /* increase contrast over default fomantic .5 */
}
. ui . active . label {
background : var ( --color-label-active-bg ) ;
border-color : var ( --color-label-active-bg ) ;
color : var ( --color-label-text ) ;
}
. ui . labels a . label : hover ,
a . ui . label : hover {
background : var ( --color-label-hover-bg ) ;
border-color : var ( --color-label-hover-bg ) ;
color : var ( --color-label-text ) ;
}
. ui . labels a . active . label : hover ,
a . ui . active . label : hover {
background : var ( --color-label-active-bg ) ;
border-color : var ( --color-label-active-bg ) ;
color : var ( --color-label-text ) ;
}
. lines-blame-btn {
padding-left : 10px ;
padding-right : 10px ;
text-align : right ! important ;
background-color : var ( --color-code-sidebar-bg ) ;
width : 2 % ;
}
. lines-num {
padding-left : 10px ;
padding-right : 10px ;
text-align : right ! important ;
color : var ( --color-text-light-1 ) ;
width : 1 % ;
font-family : var ( --fonts-monospace ) ;
}
. lines-num span . bottom-line :: after {
border-bottom : 1px solid var ( --color-secondary ) ;
}
. lines-num span :: after {
content : attr ( data-line-number ) ;
line-height : 20px ! important ;
padding : 0 10px ;
cursor : pointer ;
display : block ;
}
. lines-type-marker {
vertical-align : top ;
}
. lines-num ,
. lines-code {
font-size : 12px ;
font-family : var ( --fonts-monospace ) ;
line-height : 20px ;
padding-top : 0 ;
padding-bottom : 0 ;
vertical-align : top ;
}
. lines-num pre ,
. lines-code pre ,
. lines-num ol ,
. lines-code ol {
background-color : inherit ;
margin : 0 ;
padding : 0 ! important ;
}
. lines-num pre li ,
. lines-code pre li ,
. lines-num ol li ,
. lines-code ol li {
display : block ;
width : calc ( 100 % - 1ch ) ;
padding-left : 1ch ;
}
. lines-escape {
width : 0 ;
}
. lines-code {
background-color : var ( --color-code-bg ) ;
padding-left : 5px ;
}
. lines-code . active ,
. lines-code . active {
background : var ( --color-active-line ) ! important ;
}
. blame . lines-num {
padding : 0 ! important ;
background-color : var ( --color-code-sidebar-bg ) ;
}
. blame . lines-code {
padding : 0 ! important ;
}
. code-inner {
font : 12px var ( --fonts-monospace ) ;
white-space : pre-wrap ;
word-break : break-all ;
overflow-wrap : anywhere ;
}
. blame . code-inner {
white-space : pre ;
word-break : normal ;
word-wrap : normal ; /* not using overflow-wrap because safari does not treat is an an alias */
}
. lines-commit {
vertical-align : top ;
color : var ( --color-grey ) ;
padding : 0 ! important ;
background : var ( --color-code-sidebar-bg ) ;
width : 1 % ;
}
. lines-commit . blame-info {
width : 350px ;
max-width : 350px ;
display : block ;
padding : 0 0 0 10px ;
line-height : 20px ;
box-sizing : content-box ;
}
. lines-commit . blame-info . blame-data {
display : flex ;
font-family : var ( --fonts-regular ) ;
}
. lines-commit . blame-info . blame-data . blame-message {
flex-grow : 2 ;
overflow : hidden ;
white-space : nowrap ;
text-overflow : ellipsis ;
}
. lines-commit . blame-info . blame-data . blame-time ,
. lines-commit . blame-info . blame-data . blame-avatar {
flex-shrink : 0 ;
}
. lines-commit . ui . avatar {
height : 18px ;
width : 18px ;
display : block ;
margin-top : 1px ;
}
. top-line-blame {
border-top : 1px solid var ( --color-secondary ) ;
}
. lines-code . bottom-line ,
. lines-commit . bottom-line {
border-bottom : 1px solid var ( --color-secondary ) ;
}
. code-view table {
width : 100 % ;
}
. ui . primary . label ,
. ui . primary . labels . label ,
. ui . ui . ui . primary . label {
background-color : var ( --color-primary ) ;
border-color : var ( --color-primary-dark-2 ) ;
}
. ui . basic . labels . primary . label ,
. ui . ui . ui . basic . primary . label {
background : transparent ;
border-color : var ( --color-primary ) ;
color : var ( --color-primary ) ;
}
. ui . basic . labels a . primary . label : hover ,
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 . basic . labels . secondary . label ,
. ui . ui . ui . basic . secondary . label {
background : transparent ;
border-color : var ( --color-secondary ) ;
color : var ( --color-secondary ) ;
}
. ui . basic . labels . orange . label ,
. ui . ui . ui . basic . orange . label {
background : transparent ;
border-color : var ( --color-orange ) ;
color : var ( --color-orange ) ;
}
. ui . basic . labels . green . label ,
. ui . ui . ui . basic . green . label {
background : transparent ;
border-color : var ( --color-green ) ;
color : var ( --color-green ) ;
}
. ui . basic . labels . olive . label ,
. ui . ui . ui . basic . olive . label {
background : transparent ;
border-color : var ( --color-olive ) ;
color : var ( --color-olive ) ;
}
. ui . basic . labels . teal . label ,
. ui . ui . ui . basic . teal . label {
background : transparent ;
border-color : var ( --color-teal ) ;
color : var ( --color-teal ) ;
}
. ui . basic . labels . blue . label ,
. ui . ui . ui . basic . blue . label {
background : transparent ;
border-color : var ( --color-blue ) ;
color : var ( --color-blue ) ;
}
. ui . basic . labels . violet . label ,
. ui . ui . ui . basic . violet . label {
background : transparent ;
border-color : var ( --color-violet ) ;
color : var ( --color-violet ) ;
}
. ui . basic . labels . purple . label ,
. ui . ui . ui . basic . purple . label {
background : transparent ;
border-color : var ( --color-purple ) ;
color : var ( --color-purple ) ;
}
. ui . basic . labels . pink . label ,
. ui . ui . ui . basic . pink . label {
background : transparent ;
border-color : var ( --color-pink ) ;
color : var ( --color-pink ) ;
}
. ui . basic . labels . red . label ,
. ui . ui . ui . basic . red . label {
background : transparent ;
border-color : var ( --color-red ) ;
color : var ( --color-red ) ;
}
. ui . basic . labels . brown . label ,
. ui . ui . ui . basic . brown . label {
background : transparent ;
border-color : var ( --color-brown ) ;
color : var ( --color-brown ) ;
}
. ui . basic . labels . yellow . label ,
. ui . ui . ui . basic . yellow . label {
background : transparent ;
border-color : var ( --color-yellow ) ;
color : var ( --color-yellow ) ;
}
. ui . basic . labels . grey . label ,
. ui . ui . ui . basic . grey . label {
background : transparent ;
border-color : var ( --color-grey ) ;
color : var ( --color-grey ) ;
}
. ui . basic . labels . black . label ,
. ui . ui . ui . basic . black . label {
background : transparent ;
border-color : var ( --color-black ) ;
color : var ( --color-black ) ;
}
. ui . basic . labels . label ,
. ui . basic . label {
background : var ( --color-button ) ;
border-color : var ( --color-light-border ) ;
color : var ( --color-text-light ) ;
}
. ui . basic . labels a . label : hover ,
a . ui . basic . label : hover {
color : var ( --color-text ) ;
border-color : var ( --color-light-border ) ;
background : var ( --color-hover ) ;
}
. ui . label > img {
width : auto ! important ;
vertical-align : middle ;
height : 2 . 1666em ! important ;
}
. migrate . svg . gitea-git {
color : var ( --color-git ) ;
}
. color-icon {
display : inline-block ;
border-radius : var ( --border-radius-circle ) ;
height : 14px ;
width : 14px ;
}
. ui . label > . color-icon {
margin-left : 0 ;
}
. ui . segment ,
. ui . segments ,
. ui . attached . segment {
background : var ( --color-box-body ) ;
color : var ( --color-text ) ;
border-color : var ( --color-secondary ) ;
}
. ui . segments > . segment {
border-color : var ( --color-secondary ) ;
}
. ui . secondary . segment {
background : var ( --color-secondary-bg ) ;
color : var ( --color-text-light ) ;
}
. ui . attached . header {
position : relative ;
background : var ( --color-box-header ) ;
border-color : var ( --color-secondary ) ;
}
. ui . attached . header . right . button {
padding : 8px 10px ;
font-weight : var ( --font-weight-normal ) ;
}
/* reduce height of buttons with dropdown icon */
. ui . attached . header . right . button : has ( . dropdown . icon ) {
padding-top : 7px ;
padding-bottom : 7px ;
}
/* fix misaligned right buttons on box headers */
. ui . attached . header . right : not ( . dropdown ) {
position : absolute ;
right : 0 . 78571429rem ;
top : 0 ;
bottom : 0 ;
display : flex ;
align-items : center ;
}
/* 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 ;
}
. rss-icon {
display : inline-flex ;
color : var ( --color-text-light-1 ) ;
}
table th [ data-sortt-asc ] : hover ,
table th [ data-sortt-desc ] : hover {
background : rgba ( 0 , 0 , 0 , 0 . 1 ) ! important ;
cursor : pointer ! important ;
}
table th [ data-sortt-asc ] . svg ,
table th [ data-sortt-desc ] . svg {
margin-left : 0 . 25rem ;
}
. ui . dropdown . menu . item {
border-radius : 0 ;
}
. ui . dropdown . menu . item : first-of-type {
border-radius : var ( --border-radius ) var ( --border-radius ) 0 0 ;
}
. ui . dropdown . menu . item : last-of-type {
border-radius : 0 0 var ( --border-radius ) var ( --border-radius ) ;
}
. ui . multiple . dropdown > . label {
box-shadow : 0 0 0 1px var ( --color-secondary ) inset ;
}
. emoji ,
. reaction {
font-size : 1 . 25em ;
line-height : var ( --line-height-default ) ;
font-style : normal ! important ;
font-weight : var ( --font-weight-normal ) ! important ;
vertical-align : -0 . 075em ;
}
. emoji img ,
. reaction img {
border-width : 0 ! important ;
margin : 0 ! important ;
width : 1em ! important ;
height : 1em ! important ;
vertical-align : -0 . 15em ;
}
/* for the jquery.minicolors plugin */
. minicolors-panel {
background : var ( --color-secondary-dark-1 ) ! important ;
}
/* https://github.com/go-gitea/gitea/pull/11486 */
. ui . sub . header {
text-transform : none ;
}
. ui . tabular . menu {
border-color : var ( --color-secondary ) ;
}
. ui . tabular . menu . item {
padding : 11px 12px ;
color : var ( --color-text-light-2 ) ;
}
. ui . tabular . menu . item : hover {
color : var ( --color-text ) ;
}
. ui . tabular . menu . active . item ,
. ui . tabular . menu . active . item : hover {
background : var ( --color-body ) ;
border-color : var ( --color-secondary ) ;
color : var ( --color-text ) ;
margin-top : 1px ; /* offset fomantic's margin-bottom: -1px */
}
. ui . segment . ui . tabular . menu . active . item ,
. ui . segment . ui . tabular . menu . active . item : hover {
background : var ( --color-box-body ) ;
}
. ui . secondary . pointing . menu {
border-color : var ( --color-secondary ) ;
}
. ui . secondary . pointing . menu . item {
color : var ( --color-text-light-2 ) ;
}
. ui . secondary . pointing . menu . active . item ,
. ui . secondary . pointing . menu . active . item : hover ,
. ui . secondary . pointing . menu . dropdown . item : hover ,
. ui . secondary . pointing . menu a . item : hover {
color : var ( --color-text-dark ) ;
}
. ui . header {
color : var ( --color-text ) ;
}
. ui . header . ui . label {
margin-left : 0 . 25rem ;
}
. ui . header > . ui . label . compact {
margin-top : inherit ;
}
. ui . header . sub . header {
color : var ( --color-text-light-1 ) ;
}
. flash-error details code ,
. flash-warning details code {
display : block ;
text-align : left ;
}
. truncated-item-container {
display : flex ! important ;
align-items : center ;
}
. ellipsis-button {
padding : 0 5px 8px ! important ;
display : inline-block ! important ;
font-weight : var ( --font-weight-semibold ) ! important ;
line-height : 6px ! important ;
vertical-align : middle ! important ;
}
. truncated-item-name {
line-height : 2 ;
white-space : nowrap ;
overflow : hidden ;
text-overflow : ellipsis ;
margin-top : -0 . 5em ;
margin-bottom : -0 . 5em ;
}
. precolors {
display : flex ;
flex-direction : column ;
justify-content : center ;
margin-left : 1em ;
}
. precolors . color {
display : inline-block ;
width : 15px ;
height : 15px ;
}
. ui . dropdown {
line-height : var ( --line-height-default ) ; /* the dropdown doesn't have default line-height, use this to make the dropdown icon align with plain dropdown */
}
/ * dropdown has some kinds of icons :
- "> .dropdown.icon" : the arrow for opening the dropdown
- "> .remove.icon" : the "x" icon for clearing the dropdown , only used in selection dropdown
- "> .ui.label > .delete.icon" : the "x" icon for removing a label item in multiple selection dropdown
* /
. ui . dropdown . mini . button ,
. ui . dropdown . tiny . button {
padding-right : 20px ;
}
. ui . dropdown . button {
padding-right : 22px ;
}
. ui . dropdown . large . button {
padding-right : 24px ;
}
/* Gitea uses SVG images instead of Fomantic builtin "<i>" font icons, so we need to reset the icon styles */
. ui . ui . dropdown > . icon . icon {
position : initial ; /* plain dropdown and button dropdown use flex layout for icons */
padding : 0 ;
margin : 0 ;
height : auto ;
}
. ui . ui . dropdown > . icon . icon : hover {
opacity : 1 ;
}
. ui . ui . button . dropdown > . icon . icon ,
. ui . ui . selection . dropdown > . icon . icon {
position : absolute ; /* selection dropdown uses absolute layout for icons */
top : 50 % ;
transform : translateY ( -50 % ) ;
}
. ui . ui . dropdown > . dropdown . icon {
right : 0 . 5em ;
}
. ui . ui . dropdown > . remove . icon {
right : 2em ;
}
. ui . ui . button ,
. ui . ui . dropdown ,
. ui . ui . label ,
. flex-items-inline > . item ,
. flex-text-inline {
display : inline-flex ;
align-items : center ;
gap : . 25rem ;
vertical-align : middle ;
}
. ui . ui . button {
justify-content : center ;
}
. ui . dropdown . ui . label . svg {
vertical-align : middle ;
}
. ui . ui . circular . label {
justify-content : center ;
}
. ui . ui . labeled . button {
gap : 0 ;
align-items : stretch ;
}
. ui . ui . icon . input . icon {
display : flex ;
align-items : center ;
justify-content : center ;
}
. flex-items-block > . item ,
. flex-text-block {
display : flex ;
align-items : center ;
gap : . 25rem ;
}