X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/c1dc4f62ebdd4f145948897dbab5edee0a43286a..edda4af515cfb0bd4de1ed0650b47e124bfad6ed:/app/assets/stylesheets/common.scss diff --git a/app/assets/stylesheets/common.scss b/app/assets/stylesheets/common.scss index 8a5aa142c..c5e2d14b1 100644 --- a/app/assets/stylesheets/common.scss +++ b/app/assets/stylesheets/common.scss @@ -1,6 +1,5 @@ @use "sass:map"; @import "parameters"; -@import "browse"; @import "bootstrap"; @import "rails_bootstrap_forms"; @@ -16,8 +15,6 @@ time[title] { text-decoration: underline dotted; } -#container { position: relative; } - /* Rules for icons */ .icon { @@ -50,7 +47,7 @@ time[title] { /* Utility for de-emphasizing content */ -.text-muted a { +.text-body-secondary a { color: $blue; } @@ -72,6 +69,28 @@ time[title] { } } +/* Utility for delayed loading spinner */ + +.delayed-fade-in { + animation: 300ms linear forwards delayed-fade-in; +} + +@keyframes delayed-fade-in { + 0% { opacity: 0 } + 66% { opacity: 0 } + 100% { opacity: 1 } +} + +/* Bootstrap close button overrides for nested light/dark themes */ + +[data-bs-theme="dark"] .btn-close { + filter: var(--bs-btn-close-white-filter); +} + +[data-bs-theme="light"] .btn-close { + filter: none; +} + /* Rules for the header */ #menu-icon { @@ -79,7 +98,7 @@ time[title] { position: absolute; top: 0; right: 0; - background: image-url("menu-icon.png") no-repeat; + background: image-url("menu-icon.svg") no-repeat; background-size: 30px 30px; width: 30px; height: 30px; @@ -98,23 +117,13 @@ header { position: relative; font-size: 14px; - h1, nav, nav > ul, nav > ul > li { - display: inline-block; - } - > * { - height: 100%; padding: $lineheight * 0.5; } - img.logo { - margin-top: -2px; - } - h1 { + height: $headerHeight; font-size: 18px; - line-height: 1.2; - padding-top: 15px; } .btn { @@ -124,10 +133,14 @@ header { nav.primary { margin-right: auto; } + + .username { + max-width: 12em; + } } nav.primary { - & > .btn-group .btn-outline-primary { + #edit_tab .btn-outline-primary { @include button-outline-variant($green, $color-hover: $white, $active-color: $white); } @@ -160,7 +173,7 @@ nav.primary { nav.secondary { .nav-link { - padding: 0.2rem; + padding: 0.3rem; } } @@ -197,17 +210,19 @@ body.small-nav { min-height: $headerHeight; &.closed nav { - display: none; + display: none !important; } .search_forms { display: block; } + + .username { + max-width: unset; + } } - #sidebar .search_forms, - #edit_tab, - #export_tab { + #sidebar .search_forms { display: none; } @@ -215,13 +230,15 @@ body.small-nav { margin-right: 0; padding: 0; - .btn-group { + #edit_tab { width: 100%; padding: 10px; } } nav.secondary { + flex-direction: column; + .user-menu, .login-menu { width: 100%; } @@ -374,6 +391,14 @@ body.small-nav { .leaflet-marker-draggable { cursor: move; } + + .query-marker { + animation: 1500ms forwards query-marker-fade; + + @keyframes query-marker-fade { + to { opacity: 0 } + } + } } #map-ui { @@ -401,7 +426,7 @@ body.small-nav { overflow-y: scroll; } - .overlay-sidebar { + .overlay-sidebar.overlay-right-sidebar { #sidebar { position: absolute; width: 350px; @@ -409,7 +434,7 @@ body.small-nav { overflow: hidden; } - #map, #map-ui { + #map { height: 100%; } } @@ -418,9 +443,12 @@ body.small-nav { .layers-ui { .base-layers > * { - height: 56px; + height: 3.5rem; > .btn { + box-sizing: content-box; + top: - map.get($border-widths, 4); + left: - map.get($border-widths, 4); --bs-btn-border-color: var(--bs-body-bg); } > .btn:hover { @@ -429,10 +457,6 @@ body.small-nav { } .overlay-layers { - p { - font-size: 13px; - margin-bottom: 8px; - } li.disabled { color: $darkgrey; } } } @@ -457,13 +481,17 @@ body.small-nav { border-top: 0px !important; } -.leaflet-popup-content-wrapper, -.leaflet-popup-tip, -.leaflet-contextmenu, -.leaflet-contextmenu-item { +.leaflet-popup-content-wrapper, .leaflet-popup-tip, +.leaflet-contextmenu, .leaflet-contextmenu-item, +.leaflet-control-attribution, .leaflet-control-scale-line { @extend .bg-body, .text-body; } +.leaflet-control-attribution, .leaflet-control-scale-line { + @extend .bg-opacity-75; + text-shadow: none !important; +} + .leaflet-contextmenu-item.over { @extend .bg-body-secondary, .border-secondary, .border-opacity-10; } @@ -476,20 +504,25 @@ body.small-nav { } } -/* Rules for attribution text under the main map shown on printouts */ - -.donate-attr { color: darken($green, 10%) !important; } +@include color-mode(dark) { + .leaflet-tile-container .leaflet-tile, + .mapkey-table-entry td:first-child > * { + filter: brightness(.8); + } -/* Rules for the sidebar */ + .leaflet-container .leaflet-control-attribution a { + color: var(--bs-link-color); + } -#browse_status { - input { - display: block; - margin-left: auto; - margin-right: auto; + .leaflet-control-scale-line { + border-color: rgba(var(--bs-light-rgb), .75) !important; } } +/* Rules for attribution text under the main map shown on printouts */ + +.donate-attr { color: darken($green, 10%) !important; } + /* Temporary label size override until we remove site-wide font customisation */ form { @@ -547,7 +580,7 @@ header .search_forms, /* Rules for routing */ div.direction { - background-image: image-url('routing-sprite.png'); + background-image: image-url('routing-sprite.svg'); width: 20px; height: 20px; background-repeat: no-repeat; @@ -569,10 +602,12 @@ tr.turn { cursor: pointer; } -.routing_marker { width: 15px; cursor: move; } +.routing_marker_column { + width: 15px; -.browse_status { - display: none; + img { + cursor: move; + } } /* Rules for the history sidebar */ @@ -623,26 +658,11 @@ tr.turn { } } - .note-description { - overflow: hidden; - margin: 0 0 10px 10px; - } - .query-results { display: none; } } -/* Bootstrap buttons don't have any vertical margin, so - they touch when adjacent buttons wrap onto a new line - e.g. wide form buttons on a narrow sidebar */ - -.btn-wrapper { - > .btn { - margin-bottom: $spacer * 0.25; - } -} - /* Force LTR/RTL alignment for placeholder text */ .form-control::placeholder { @@ -691,10 +711,16 @@ tr.turn { padding: $lineheight; } -/* Overrides for pages that use new layout conventions */ +/* Rules for login and signup pages */ + +.sessions-new, .users-new, .users-create { + #content .content-inner { + max-width: 760px; + } +} .header-illustration { - background-position: 0 0; + background-position: right; background-repeat: no-repeat; position: relative; min-height: 200px; @@ -703,26 +729,16 @@ tr.turn { bottom: 0; &.new-user-main { - background-image: image-url("sign-up-illustration.png"); + background-image: image-url("sign-up-illustration.svg"); + background-position-x: 70px; } &.confirm-main { - background-image: image-url("confirm-illustration.png"); + background-image: image-url("confirm-illustration.svg"); } &.new-user-terms { - background-image: image-url("terms-illustration.png"); - } - - &.new-user-arm { - height: 110px; - width: 130px; - left: 280px; - top: 180px; - background-image: image-url("sign-up-illustration-arm.png"); - position: absolute; - z-index: 100; - pointer-events: none; + background-image: image-url("terms-illustration.svg"); } } @@ -732,6 +748,10 @@ tr.turn { h1 { transform: scaleX(-1); } + + ul { + transform: scaleX(-1); + } } /* Rules for small maps in content areas */ @@ -878,52 +898,7 @@ div.secondary-actions { } } -/* Rules for the "Welcome" page */ -.site-welcome, .site-fixthemap { - .sprite { - background-image: image-url("welcome-sprite.png"); - background-size: 500px 250px; - display: block; - } - - .sprite.small { - width: 50px; - height: 50px; - } - - .sprite.x { - /*rtl:ignore*/ background-position: -50px 0; - } - - .sprite.term { - margin-right: 10px; - vertical-align: middle; - } - - .sprite.node { - /*rtl:ignore*/ background-position: -100px 0; - } - - .sprite.way { - /*rtl:ignore*/ background-position: -150px 0; - } - - .sprite.tag { - /*rtl:ignore*/ background-position: -200px 0; - } - - .sprite.editor { - /*rtl:ignore*/ background-position: -250px 0; - } - - .sprite.question { - /*rtl:ignore*/ background-position: -300px 0; - } - - .sprite.rules { - /*rtl:ignore*/ background-position: -350px 0; - } -} +/* Rules for the "About" page */ .site-about #content { .content-inner { @@ -958,40 +933,20 @@ div.secondary-actions { margin-left: -1em; } } +} - .icon { - width: 30px; - height: 30px; - background: 40px 40px image-url('about/sprite.png') no-repeat; +/* Rules for tables with usernames */ - &.local { - /*rtl:ignore*/ - background-position: 0px 0px; - } - &.community { - /*rtl:ignore*/ - background-position: 0px -40px; - } - &.open { - /*rtl:ignore*/ - background-position: 0px -80px; - } - &.partners { - /*rtl:ignore*/ - background-position: 0px -120px; - } - &.infringement { - /*rtl:ignore*/ - background-position: 0px -160px; - } - &.legal { - /*rtl:ignore*/ - background-position: -45px -160px; - } - } +.messages-table .username, +#block_list .username { + max-width: 20em; } -/* Rules for tabs inside secondary background sections */ +/* Rules for navigation tabs */ + +.nav-tabs .username { + max-width: 20em; +} .bg-body-secondary .nav-tabs { --bs-border-color: var(--bs-secondary-border-subtle); @@ -1014,22 +969,20 @@ img.trace_image { /* Rules for map sidebar icons */ -.browse-section { - .node::before, - .way::before, - .relation::before { - display: inline-block; - width: 25px; - margin-left: -25px; +.browse-section .browse-element-list { + line-height: 1.25rem; + + .browse-icon { + height: 1.25rem; } - .node, .way, .relation { - margin-left: 25px; + .d-flex > .browse-icon { + height: max(20px, 1.25rem); } -} -@each $class, $item in $map-sidebar-icons { - .browse-section #{$class}::before { - content: image-url('browse/#{map.get($item, "filename")}'); + @include color-mode(dark) { + .browse-icon-invertible { + filter: invert(.8) hue-rotate(180deg); + } } }