From 6a8c3d97cddef5788f582ae1d85eb620062fc26e Mon Sep 17 00:00:00 2001 From: Ken Date: Mon, 16 Oct 2023 20:25:10 +0200 Subject: [PATCH] =?UTF-8?q?:art:=20Forms-border=20har=20n=C3=A5=20outside?= =?UTF-8?q?=20shadow=20for=20background-bleed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/sharp-feet-dress.md | 5 ++ @navikt/core/css/form/radio-checkbox.css | 71 +++++++++++++----------- 2 files changed, 43 insertions(+), 33 deletions(-) create mode 100644 .changeset/sharp-feet-dress.md diff --git a/.changeset/sharp-feet-dress.md b/.changeset/sharp-feet-dress.md new file mode 100644 index 0000000000..53b8ee94e3 --- /dev/null +++ b/.changeset/sharp-feet-dress.md @@ -0,0 +1,5 @@ +--- +"@navikt/ds-css": patch +--- + +Checkbox, Radio: Transparent-border fungerer nå bedre på mørkere bakgrunner diff --git a/@navikt/core/css/form/radio-checkbox.css b/@navikt/core/css/form/radio-checkbox.css index 957b17f317..3787b27eca 100644 --- a/@navikt/core/css/form/radio-checkbox.css +++ b/@navikt/core/css/form/radio-checkbox.css @@ -31,11 +31,13 @@ .navds-radio__label::before { content: ""; background-color: var(--ac-radio-checkbox-bg, var(--a-surface-default)); - box-shadow: inset 0 0 0 2px var(--ac-radio-checkbox-border, var(--a-border-default)); - width: 1.5rem; - height: 1.5rem; - border-radius: var(--a-border-radius-medium); + border-radius: var(--a-border-radius-small); flex-shrink: 0; + box-shadow: 0 0 0 2px var(--ac-radio-checkbox-border, var(--a-border-default)); + width: calc(1.5rem - 0.25rem); + height: calc(1.5rem - 0.25rem); + margin-block: 2px; + margin-inline: 2px; } .navds-radio__label::before { @@ -64,36 +66,37 @@ .navds-checkbox--small > .navds-checkbox__label::before, .navds-radio--small > .navds-radio__label::before { - width: 1.25rem; - height: 1.25rem; + width: calc(1.25rem - 0.25rem); + height: calc(1.25rem - 0.25rem); } .navds-checkbox__input:focus-visible + .navds-checkbox__label::before, .navds-radio__input:focus-visible + .navds-radio__label::before { - box-shadow: inset 0 0 0 2px var(--ac-radio-checkbox-border, var(--a-border-default)), var(--a-shadow-focus); + box-shadow: 0 0 0 2px var(--ac-radio-checkbox-border, var(--a-border-default)), + 0 0 0 2px var(--ac-radio-checkbox-bg, var(--a-surface-default)), 0 0 0 4px var(--a-border-focus); } @supports not selector(:focus-visible) { .navds-checkbox__input:focus + .navds-checkbox__label::before, .navds-radio__input:focus + .navds-radio__label::before { - box-shadow: inset 0 0 0 2px var(--ac-radio-checkbox-border, var(--a-border-default)), var(--a-shadow-focus); + box-shadow: 0 0 0 2px var(--ac-radio-checkbox-border, var(--a-border-default)), 0 0 0 4px var(--a-border-focus); } } .navds-checkbox__input:hover:focus-visible + .navds-checkbox__label::before, .navds-radio__input:hover:focus-visible + .navds-radio__label::before { - box-shadow: inset 0 0 0 2px var(--ac-radio-checkbox-action, var(--a-surface-action)), var(--a-shadow-focus); + box-shadow: 0 0 0 2px var(--ac-radio-checkbox-action, var(--a-surface-action)), 0 0 0 4px var(--a-border-focus); } @supports not selector(:focus-visible) { .navds-checkbox__input:hover:focus + .navds-checkbox__label::before, .navds-radio__input:hover:focus + .navds-radio__label::before { - box-shadow: inset 0 0 0 2px var(--ac-radio-checkbox-action, var(--a-surface-action)), var(--a-shadow-focus); + box-shadow: 0 0 0 2px var(--ac-radio-checkbox-action, var(--a-surface-action)), 0 0 0 4px var(--a-border-focus); } } .navds-checkbox__input:indeterminate + .navds-checkbox__label::before { - box-shadow: none; + box-shadow: 0 0 0 2px var(--ac-radio-checkbox-action, var(--a-surface-action)); background-color: var(--ac-radio-checkbox-action, var(--a-surface-action)); } @@ -114,7 +117,7 @@ } .navds-checkbox__input:checked + .navds-checkbox__label::before { - box-shadow: none; + box-shadow: 0 0 0 2px var(--ac-radio-checkbox-action, var(--a-surface-action)); background-color: var(--ac-radio-checkbox-action, var(--a-surface-action)); } @@ -146,31 +149,33 @@ .navds-checkbox__input:indeterminate:focus-visible + .navds-checkbox__label::before, .navds-checkbox__input:checked:focus-visible + .navds-checkbox__label::before { - box-shadow: inset 0 0 0 1px var(--ac-radio-checkbox-bg, var(--a-surface-default)), var(--a-shadow-focus); + box-shadow: 0 0 0 1px var(--ac-radio-checkbox-action, var(--a-surface-action)), + 0 0 0 2px var(--ac-radio-checkbox-bg, var(--a-surface-default)), 0 0 0 4px var(--a-border-focus); } @supports not selector(:focus-visible) { .navds-checkbox__input:indeterminate:focus + .navds-checkbox__label::before, .navds-checkbox__input:checked:focus + .navds-checkbox__label::before { - box-shadow: inset 0 0 0 1px var(--ac-radio-checkbox-bg, var(--a-surface-default)), var(--a-shadow-focus); + box-shadow: 0 0 0 1px var(--ac-radio-checkbox-action, var(--a-surface-action)), + 0 0 0 2px var(--ac-radio-checkbox-bg, var(--a-surface-default)), 0 0 0 4px var(--a-border-focus); } } .navds-radio__input:checked + .navds-radio__label::before { - box-shadow: inset 0 0 0 2px var(--ac-radio-checkbox-action, var(--a-surface-action)), - inset 0 0 0 4px var(--ac-radio-checkbox-bg, var(--a-surface-default)); + box-shadow: 0 0 0 2px var(--ac-radio-checkbox-action, var(--a-surface-action)), + inset 0 0 0 2px var(--ac-radio-checkbox-bg, var(--a-surface-default)); background-color: var(--ac-radio-checkbox-action, var(--a-surface-action)); } .navds-radio__input:checked:focus-visible + .navds-radio__label::before { - box-shadow: inset 0 0 0 2px var(--ac-radio-checkbox-action, var(--a-surface-action)), - inset 0 0 0 4px var(--ac-radio-checkbox-bg, var(--a-surface-default)), var(--a-shadow-focus); + box-shadow: 0 0 0 2px var(--ac-radio-checkbox-action, var(--a-surface-action)), + inset 0 0 0 2px var(--ac-radio-checkbox-bg, var(--a-surface-default)), 0 0 0 4px var(--a-border-focus); } @supports not selector(:focus-visible) { .navds-radio__input:checked:focus + .navds-radio__label::before { - box-shadow: inset 0 0 0 2px var(--ac-radio-checkbox-action, var(--a-surface-action)), - inset 0 0 0 4px var(--ac-radio-checkbox-bg, var(--a-surface-default)), var(--a-shadow-focus); + box-shadow: 0 0 0 2px var(--ac-radio-checkbox-action, var(--a-surface-action)), + inset 0 0 0 2px var(--ac-radio-checkbox-bg, var(--a-surface-default)), 0 0 0 4px var(--a-border-focus); } } @@ -182,13 +187,13 @@ .navds-checkbox__input:hover:not(:disabled):not(:checked):not(:indeterminate):not(:focus-visible) + .navds-checkbox__label::before, .navds-radio__input:hover:not(:disabled):not(:checked):not(:focus-visible) + .navds-radio__label::before { - box-shadow: inset 0 0 0 2px var(--ac-radio-checkbox-action, var(--a-surface-action)); + box-shadow: 0 0 0 2px var(--ac-radio-checkbox-action, var(--a-surface-action)); } @supports not selector(:focus-visible) { .navds-checkbox__input:hover:not(:disabled):not(:checked):not(:indeterminate):not(:focus) + .navds-checkbox__label::before, .navds-radio__input:hover:not(:disabled):not(:checked):not(:focus) + .navds-radio__label::before { - box-shadow: inset 0 0 0 2px var(--ac-radio-checkbox-action, var(--a-surface-action)); + box-shadow: 0 0 0 2px var(--ac-radio-checkbox-action, var(--a-surface-action)); } } @@ -201,14 +206,14 @@ > .navds-checkbox__input:not(:hover):not(:disabled):not(:checked):not(:indeterminate) + .navds-checkbox__label::before, .navds-radio--error > .navds-radio__input:not(:hover):not(:disabled):not(:checked) + .navds-radio__label::before { - box-shadow: inset 0 0 0 2px var(--ac-radio-checkbox-error-border, var(--a-border-danger)); + box-shadow: 0 0 0 2px var(--ac-radio-checkbox-error-border, var(--a-border-danger)); } .navds-checkbox--error > .navds-checkbox__input:focus-visible:not(:hover):not(:disabled):not(:checked):not(:indeterminate) + .navds-checkbox__label::before, .navds-radio--error > .navds-radio__input:focus-visible:not(:hover):not(:disabled):not(:checked) + .navds-radio__label::before { - box-shadow: inset 0 0 0 2px var(--ac-radio-checkbox-error-border, var(--a-border-danger)), var(--a-shadow-focus); + box-shadow: 0 0 0 2px var(--ac-radio-checkbox-error-border, var(--a-border-danger)), 0 0 0 4px var(--a-border-focus); } @supports not selector(:focus-visible) { @@ -216,7 +221,7 @@ > .navds-checkbox__input:focus:not(:hover):not(:disabled):not(:checked):not(:indeterminate) + .navds-checkbox__label::before, .navds-radio--error > .navds-radio__input:focus:not(:hover):not(:disabled):not(:checked) + .navds-radio__label::before { - box-shadow: inset 0 0 0 2px var(--ac-radio-checkbox-error-border, var(--a-border-danger)), var(--a-shadow-focus); + box-shadow: 0 0 0 2px var(--ac-radio-checkbox-error-border, var(--a-border-danger)), 0 0 0 4px var(--a-border-focus); } } @@ -225,7 +230,7 @@ + .navds-checkbox__label::before, .navds-radio--error > .navds-radio__input:hover:not(:disabled):not(:checked):not(:focus-visible) + .navds-radio__label::before { background-color: var(--ac-radio-checkbox-error-hover-bg, var(--a-surface-danger-subtle)); - box-shadow: inset 0 0 0 2px var(--ac-radio-checkbox-error-border, var(--a-border-danger)); + box-shadow: 0 0 0 2px var(--ac-radio-checkbox-error-border, var(--a-border-danger)); } .navds-checkbox--error @@ -233,7 +238,7 @@ + .navds-checkbox__label::before, .navds-radio--error > .navds-radio__input:focus-visible:hover:not(:disabled):not(:checked) + .navds-radio__label::before { background-color: var(--ac-radio-checkbox-error-hover-bg, var(--a-surface-danger-subtle)); - box-shadow: inset 0 0 0 2px var(--ac-radio-checkbox-error-border, var(--a-border-danger)), var(--a-shadow-focus); + box-shadow: 0 0 0 2px var(--ac-radio-checkbox-error-border, var(--a-border-danger)), 0 0 0 4px var(--a-border-focus); } @supports not selector(:focus-visible) { @@ -242,7 +247,7 @@ + .navds-checkbox__label::before, .navds-radio--error > .navds-radio__input:hover:not(:disabled):not(:checked):not(:focus) + .navds-radio__label::before { background-color: var(--ac-radio-checkbox-error-hover-bg, var(--a-surface-danger-subtle)); - box-shadow: inset 0 0 0 2px var(--ac-radio-checkbox-error-border, var(--a-border-danger)); + box-shadow: 0 0 0 2px var(--ac-radio-checkbox-error-border, var(--a-border-danger)); } .navds-checkbox--error @@ -250,7 +255,7 @@ + .navds-checkbox__label::before, .navds-radio--error > .navds-radio__input:focus:hover:not(:disabled):not(:checked) + .navds-radio__label::before { background-color: var(--ac-radio-checkbox-error-hover-bg, var(--a-surface-danger-subtle)); - box-shadow: inset 0 0 0 2px var(--ac-radio-checkbox-error-border, var(--a-border-danger)), var(--a-shadow-focus); + box-shadow: 0 0 0 2px var(--ac-radio-checkbox-error-border, var(--a-border-danger)), 0 0 0 4px var(--a-border-focus); } } @@ -290,7 +295,7 @@ .navds-radio--readonly > .navds-radio__input:not(:disabled):not(:checked) + .navds-radio__label::before, .navds-radio--readonly > .navds-radio__input:hover:not(:checked):not(:focus-visible) + .navds-radio__label::before { background-color: var(--__ac-radio-checkbox-readonly-bg); - box-shadow: inset 0 0 0 2px var(--__ac-radio-checkbox-readonly-border); + box-shadow: 0 0 0 2px var(--__ac-radio-checkbox-readonly-border); } .navds-checkbox--readonly > .navds-checkbox__input:focus-visible + .navds-checkbox__label::before, @@ -299,8 +304,8 @@ } .navds-checkbox--readonly > .navds-checkbox__input:checked + .navds-checkbox__label::before { - box-shadow: inset 0 0 0 2px var(--__ac-radio-checkbox-readonly-border); background-color: var(--__ac-radio-checkbox-readonly-bg); + box-shadow: 0 0 0 2px var(--__ac-radio-checkbox-readonly-border); } .navds-checkbox--readonly > .navds-checkbox__input:checked + .navds-checkbox__label > .navds-checkbox__icon { @@ -308,12 +313,12 @@ } .navds-radio--readonly > .navds-radio__input:checked + .navds-radio__label::before { - box-shadow: inset 0 0 0 2px var(--__ac-radio-checkbox-readonly-border), inset 0 0 0 4px var(--__ac-radio-checkbox-readonly-bg); background-color: var(--a-icon-subtle); + box-shadow: 0 0 0 2px var(--__ac-radio-checkbox-readonly-border), inset 0 0 0 2px var(--__ac-radio-checkbox-readonly-bg); } .navds-checkbox--readonly > .navds-checkbox__input:indeterminate + .navds-checkbox__label::before { - box-shadow: inset 0 0 0 2px var(--__ac-radio-checkbox-readonly-border); + box-shadow: 0 0 0 2px var(--__ac-radio-checkbox-readonly-border); background-color: var(--__ac-radio-checkbox-readonly-bg); }