diff --git a/web_src/css/base.css b/web_src/css/base.css
index 0d6c4a2f75..2c7bd7395a 100644
--- a/web_src/css/base.css
+++ b/web_src/css/base.css
@@ -15,8 +15,8 @@
/* line-height: use the default value as "modules/normalize.css" */
--line-height-default: normal;
/* images */
- --checkbox-mask-checked: url('data:image/svg+xml;utf8,');
- --checkbox-mask-indeterminate: url('data:image/svg+xml;utf8,');
+ --checkbox-mask-checked: url('data:image/svg+xml;utf8,');
+ --checkbox-mask-indeterminate: url('data:image/svg+xml;utf8,');
--octicon-chevron-right: url('data:image/svg+xml;utf8,');
--select-arrows: url('data:image/svg+xml;utf8,');
/* other variables */
@@ -27,7 +27,7 @@
--height-loading: 16rem;
--min-height-textarea: 132px; /* padding + 6 lines + border = calc(1.57142em + 6lh + 2px), but lh is not fully supported */
--tab-size: 4;
- --checkbox-size: 15px; /* height and width of checkbox and radio inputs */
+ --checkbox-size: 14px; /* height and width of checkbox and radio inputs */
--page-spacing: 16px; /* space between page elements */
--page-margin-x: 32px; /* minimum space on left and right side of page */
--page-space-bottom: 64px; /* space between last page element and footer */
diff --git a/web_src/css/markup/content.css b/web_src/css/markup/content.css
index 047b03fa19..6ca6f95c69 100644
--- a/web_src/css/markup/content.css
+++ b/web_src/css/markup/content.css
@@ -164,12 +164,16 @@ In markup content, we always use bottom margin for all elements */
list-style-type: none;
}
+.markup .task-list-item > ul {
+ margin-top: 4px;
+}
+
.markup .task-list-item p + ul {
margin-top: 16px;
}
.markup .task-list-item input[type="checkbox"] {
- margin: 0 .3em .25em -1.4em;
+ margin: 0 .6em .25em -1.4em;
vertical-align: middle;
padding: 0;
}
@@ -188,48 +192,12 @@ In markup content, we always use bottom margin for all elements */
}
.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;
+ margin-right: .25em;
+ margin-bottom: .25em;
+ cursor: default;
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,
diff --git a/web_src/css/modules/checkbox.css b/web_src/css/modules/checkbox.css
index f7e61ba360..558486e63a 100644
--- a/web_src/css/modules/checkbox.css
+++ b/web_src/css/modules/checkbox.css
@@ -1,10 +1,75 @@
/* 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"] {
+ appearance: none;
width: var(--checkbox-size);
height: var(--checkbox-size);
+ border: 1px solid var(--color-input-border);
+ border-radius: 50%;
+ background: var(--color-input-background);
+}
+
+input[type="radio"]:checked {
+ background: var(--color-white);
+ border: 4px solid var(--color-primary);
+}
+
+input[type="checkbox"] {
+ appearance: none;
+ display: inline-grid;
+ place-content: center;
+ width: var(--checkbox-size);
+ height: var(--checkbox-size);
+ border: 1px solid var(--color-input-border);
+ border-radius: 3px;
+ background: var(--color-input-background);
+ overflow: hidden;
+ print-color-adjust: exact;
+}
+
+input[type="checkbox"]::before {
+ content: "";
+ background: var(--color-white);
+ width: var(--checkbox-size);
+ height: var(--checkbox-size);
+ clip-path: inset(var(--checkbox-size) 0 0 0);
+ mask-image: var(--checkbox-mask-checked);
+ -webkit-mask-image: var(--checkbox-mask-checked);
+ mask-size: 75%;
+ -webkit-mask-size: 75%;
+ mask-repeat: no-repeat;
+ -webkit-mask-repeat: no-repeat;
+ mask-position: center;
+ -webkit-mask-position: center;
+}
+
+input[type="checkbox"]:checked,
+input[type="checkbox"]:indeterminate {
+ background: var(--color-primary);
+ border-color: var(--color-primary);
+}
+
+input[type="checkbox"]:checked::before {
+ clip-path: inset(0);
+}
+
+input[type="checkbox"]:disabled:checked,
+input[type="checkbox"]:disabled:indeterminate {
+ background: var(--color-secondary-dark-4);
+ border-color: var(--color-secondary-dark-4);
+}
+
+input[type="radio"]:disabled:checked {
+ border-color: var(--color-secondary-dark-4);
+}
+
+input[type="checkbox"]:indeterminate::before {
+ clip-path: inset(0);
+ mask-image: var(--checkbox-mask-indeterminate);
+ -webkit-mask-image: var(--checkbox-mask-indeterminate);
+ mask-size: 75%;
+ -webkit-mask-size: 75%;
}
.ui.checkbox {
diff --git a/web_src/css/modules/dropdown.css b/web_src/css/modules/dropdown.css
index 2008ece2ed..1c6e7f8552 100644
--- a/web_src/css/modules/dropdown.css
+++ b/web_src/css/modules/dropdown.css
@@ -268,7 +268,6 @@ select.ui.dropdown {
}
.ui.selection.dropdown:hover {
- border-color: var(--color-input-border-hover);
box-shadow: none;
}
diff --git a/web_src/css/modules/form.css b/web_src/css/modules/form.css
index 56d4f9ba61..2d315786c6 100644
--- a/web_src/css/modules/form.css
+++ b/web_src/css/modules/form.css
@@ -43,7 +43,7 @@
height: 1.21428571em;
}
-.ui.form input,
+.ui.form input:not([type="checkbox"], [type="radio"]),
.ui.search > .prompt {
font-family: var(--fonts-regular);
margin: 0;
@@ -74,10 +74,10 @@
max-height: 24em;
}
-input,
+input:not([type="checkbox"], [type="radio"]),
textarea,
.ui.input > input,
-.ui.form input,
+.ui.form input:not([type="checkbox"], [type="radio"]),
.ui.form select,
.ui.form textarea,
.ui.selection.dropdown,
@@ -87,22 +87,10 @@ textarea,
color: var(--color-input-text);
}
-input:hover,
-textarea:hover,
-.ui.input input:hover,
-.ui.form input:hover,
-.ui.form select:hover,
-.ui.form textarea:hover,
-.ui.search > .prompt:hover {
- background: var(--color-input-background);
- border: 1px solid var(--color-input-border-hover);
- color: var(--color-input-text);
-}
-
-input:focus,
+input:not([type="checkbox"], [type="radio"]):focus,
textarea:focus,
.ui.input input:focus,
-.ui.form input:focus,
+.ui.form input:not([type="checkbox"], [type="radio"]):focus,
.ui.form select:focus,
.ui.form textarea:focus,
.ui.search > .prompt:focus {
diff --git a/web_src/css/themes/theme-gitea-dark.css b/web_src/css/themes/theme-gitea-dark.css
index ad5eec9e82..f347589509 100644
--- a/web_src/css/themes/theme-gitea-dark.css
+++ b/web_src/css/themes/theme-gitea-dark.css
@@ -205,8 +205,7 @@ gitea-theme-meta-info {
--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-input-border: 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;
diff --git a/web_src/css/themes/theme-gitea-light.css b/web_src/css/themes/theme-gitea-light.css
index 049b64f73f..dc916f002d 100644
--- a/web_src/css/themes/theme-gitea-light.css
+++ b/web_src/css/themes/theme-gitea-light.css
@@ -205,8 +205,7 @@ gitea-theme-meta-info {
--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-input-border: 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;