diff options
Diffstat (limited to 'frontend/styles')
-rw-r--r-- | frontend/styles/colors.sass | 7 | ||||
-rw-r--r-- | frontend/styles/form.sass | 123 | ||||
-rw-r--r-- | frontend/styles/leaflet.css | 656 | ||||
-rw-r--r-- | frontend/styles/lib/icons.sass | 15 | ||||
-rw-r--r-- | frontend/styles/main.sass | 71 | ||||
-rw-r--r-- | frontend/styles/pages/login.sass | 12 | ||||
-rw-r--r-- | frontend/styles/pages/map.sass | 84 | ||||
-rw-r--r-- | frontend/styles/pages/maps.sass | 2 | ||||
-rw-r--r-- | frontend/styles/ui/layout.sass | 25 | ||||
-rw-r--r-- | frontend/styles/ui/modal.sass | 57 |
10 files changed, 1052 insertions, 0 deletions
diff --git a/frontend/styles/colors.sass b/frontend/styles/colors.sass new file mode 100644 index 0000000..5aef1c4 --- /dev/null +++ b/frontend/styles/colors.sass @@ -0,0 +1,7 @@ +$black: #333 +$red: #cf5c56 +$brown: #a04642 +$green: #9fd2a5 +$blue: #6ca2a4 +$gray-dark: #bbb +$gray: #eee diff --git a/frontend/styles/form.sass b/frontend/styles/form.sass new file mode 100644 index 0000000..fc25019 --- /dev/null +++ b/frontend/styles/form.sass @@ -0,0 +1,123 @@ +@use 'colors' +@use 'sass:color'; + +$input-height: 2.5rem +$input-border-radius: 0.125rem +$input-border-color: colors.$gray-dark +$input-color-height: 0.7 * $input-height + +.g-Label + display: flex + flex-direction: column + margin-bottom: 1rem + font-size: 0.9rem + + & > :first-child + margin-top: 0.25rem + +.g-Input + display: flex + height: $input-height + border: 1px solid $input-border-color + border-radius: $input-border-radius + padding: 0 0.5rem + font-size: inherit + font-family: inherit + + &[type="color"] + padding: 0 + border: none + width: 100px + height: $input-color-height + +.g-Textarea + padding: 0.5rem + resize: vertical + font-size: inherit + font-family: inherit + height: $input-height + min-height: $input-height + +.g-Select + display: flex + height: $input-height + border: 1px solid $input-border-color + border-radius: $input-border-radius + padding: 0 0.5rem + font-size: inherit + +.g-Button + display: flex + align-items: center + justify-content: center + padding: 0.5rem + height: $input-height + cursor: pointer + border: none + border-radius: $input-border-radius + color: black + font-size: 1rem + + &:disabled + background-color: colors.$gray + cursor: default + + &--Primary + background-color: colors.$green + color: white + &:not(:disabled):hover + background-color: color.scale(colors.$green, $lightness: 10%) + + &--Danger + background-color: colors.$red + color: white + &:not(:disabled):hover + background-color: color.scale(colors.$red, $lightness: 10%) + + &--FullWidth + width: 100% + +.g-ColorLine + display: flex + gap: 2rem + align-items: center + +.g-ColorButtons + display: flex + gap: 1rem + +.g-ColorButton + border-radius: 50% + width: $input-color-height + height: $input-color-height + border: none + margin-top: 0.25rem + cursor: pointer + +.g-FormError + color: colors.$red + margin-bottom: 2rem + text-align: center + +.g-Form__SubmitParent + position: relative + + .g-Button--Primary + .g-Form__SubmitSpinner + background-color: colors.$green + + .g-Button--Danger + .g-Form__SubmitSpinner + background-color: colors.$red + + & > .g-Form__SubmitSpinner + position: absolute + top: 0 + bottom: 0 + left: 0 + right: 0 + display: flex + align-items: center + justify-content: center + + svg + height: $input-height * 0.6 + fill: white diff --git a/frontend/styles/leaflet.css b/frontend/styles/leaflet.css new file mode 100644 index 0000000..981874b --- /dev/null +++ b/frontend/styles/leaflet.css @@ -0,0 +1,656 @@ +/* required styles */
+
+.leaflet-pane,
+.leaflet-tile,
+.leaflet-marker-icon,
+.leaflet-marker-shadow,
+.leaflet-tile-container,
+.leaflet-pane > svg,
+.leaflet-pane > canvas,
+.leaflet-zoom-box,
+.leaflet-image-layer,
+.leaflet-layer {
+ position: absolute;
+ left: 0;
+ top: 0;
+ }
+.leaflet-container {
+ overflow: hidden;
+ }
+.leaflet-tile,
+.leaflet-marker-icon,
+.leaflet-marker-shadow {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+ -webkit-user-drag: none;
+ }
+/* Prevents IE11 from highlighting tiles in blue */
+.leaflet-tile::selection {
+ background: transparent;
+}
+/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
+.leaflet-safari .leaflet-tile {
+ image-rendering: -webkit-optimize-contrast;
+ }
+/* hack that prevents hw layers "stretching" when loading new tiles */
+.leaflet-safari .leaflet-tile-container {
+ width: 1600px;
+ height: 1600px;
+ -webkit-transform-origin: 0 0;
+ }
+.leaflet-marker-icon,
+.leaflet-marker-shadow {
+ display: block;
+ }
+/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
+/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
+.leaflet-container .leaflet-overlay-pane svg {
+ max-width: none !important;
+ max-height: none !important;
+ }
+.leaflet-container .leaflet-marker-pane img,
+.leaflet-container .leaflet-shadow-pane img,
+.leaflet-container .leaflet-tile-pane img,
+.leaflet-container img.leaflet-image-layer,
+.leaflet-container .leaflet-tile {
+ max-width: none !important;
+ max-height: none !important;
+ width: auto;
+ padding: 0;
+ }
+
+.leaflet-container.leaflet-touch-zoom {
+ -ms-touch-action: pan-x pan-y;
+ touch-action: pan-x pan-y;
+ }
+.leaflet-container.leaflet-touch-drag {
+ -ms-touch-action: pinch-zoom;
+ /* Fallback for FF which doesn't support pinch-zoom */
+ touch-action: none;
+ touch-action: pinch-zoom;
+}
+.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
+ -ms-touch-action: none;
+ touch-action: none;
+}
+.leaflet-container {
+ -webkit-tap-highlight-color: transparent;
+}
+.leaflet-container a {
+ -webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);
+}
+.leaflet-tile {
+ filter: inherit;
+ visibility: hidden;
+ }
+.leaflet-tile-loaded {
+ visibility: inherit;
+ }
+.leaflet-zoom-box {
+ width: 0;
+ height: 0;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ z-index: 800;
+ }
+/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
+.leaflet-overlay-pane svg {
+ -moz-user-select: none;
+ }
+
+.leaflet-pane { z-index: 400; }
+
+.leaflet-tile-pane { z-index: 200; }
+.leaflet-overlay-pane { z-index: 400; }
+.leaflet-shadow-pane { z-index: 500; }
+.leaflet-marker-pane { z-index: 600; }
+.leaflet-tooltip-pane { z-index: 650; }
+.leaflet-popup-pane { z-index: 700; }
+
+.leaflet-map-pane canvas { z-index: 100; }
+.leaflet-map-pane svg { z-index: 200; }
+
+.leaflet-vml-shape {
+ width: 1px;
+ height: 1px;
+ }
+.lvml {
+ behavior: url(#default#VML);
+ display: inline-block;
+ position: absolute;
+ }
+
+
+/* control positioning */
+
+.leaflet-control {
+ position: relative;
+ z-index: 800;
+ pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
+ pointer-events: auto;
+ }
+.leaflet-top,
+.leaflet-bottom {
+ position: absolute;
+ z-index: 1000;
+ pointer-events: none;
+ }
+.leaflet-top {
+ top: 0;
+ }
+.leaflet-right {
+ right: 0;
+ }
+.leaflet-bottom {
+ bottom: 0;
+ }
+.leaflet-left {
+ left: 0;
+ }
+.leaflet-control {
+ float: left;
+ clear: both;
+ }
+.leaflet-right .leaflet-control {
+ float: right;
+ }
+.leaflet-top .leaflet-control {
+ margin-top: 10px;
+ }
+.leaflet-bottom .leaflet-control {
+ margin-bottom: 10px;
+ }
+.leaflet-left .leaflet-control {
+ margin-left: 10px;
+ }
+.leaflet-right .leaflet-control {
+ margin-right: 10px;
+ }
+
+
+/* zoom and fade animations */
+
+.leaflet-fade-anim .leaflet-popup {
+ opacity: 0;
+ -webkit-transition: opacity 0.2s linear;
+ -moz-transition: opacity 0.2s linear;
+ transition: opacity 0.2s linear;
+ }
+.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
+ opacity: 1;
+ }
+.leaflet-zoom-animated {
+ -webkit-transform-origin: 0 0;
+ -ms-transform-origin: 0 0;
+ transform-origin: 0 0;
+ }
+svg.leaflet-zoom-animated {
+ will-change: transform;
+}
+
+.leaflet-zoom-anim .leaflet-zoom-animated {
+ -webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
+ -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
+ transition: transform 0.25s cubic-bezier(0,0,0.25,1);
+ }
+.leaflet-zoom-anim .leaflet-tile,
+.leaflet-pan-anim .leaflet-tile {
+ -webkit-transition: none;
+ -moz-transition: none;
+ transition: none;
+ }
+
+.leaflet-zoom-anim .leaflet-zoom-hide {
+ visibility: hidden;
+ }
+
+
+/* cursors */
+
+.leaflet-interactive {
+ cursor: pointer;
+ }
+.leaflet-grab {
+ cursor: -webkit-grab;
+ cursor: -moz-grab;
+ cursor: grab;
+ }
+.leaflet-crosshair,
+.leaflet-crosshair .leaflet-interactive {
+ cursor: crosshair;
+ }
+.leaflet-popup-pane,
+.leaflet-control {
+ cursor: auto;
+ }
+.leaflet-dragging .leaflet-grab,
+.leaflet-dragging .leaflet-grab .leaflet-interactive,
+.leaflet-dragging .leaflet-marker-draggable {
+ cursor: move;
+ cursor: -webkit-grabbing;
+ cursor: -moz-grabbing;
+ cursor: grabbing;
+ }
+
+/* marker & overlays interactivity */
+.leaflet-marker-icon,
+.leaflet-marker-shadow,
+.leaflet-image-layer,
+.leaflet-pane > svg path,
+.leaflet-tile-container {
+ pointer-events: none;
+ }
+
+.leaflet-marker-icon.leaflet-interactive,
+.leaflet-image-layer.leaflet-interactive,
+.leaflet-pane > svg path.leaflet-interactive,
+svg.leaflet-image-layer.leaflet-interactive path {
+ pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
+ pointer-events: auto;
+ }
+
+/* visual tweaks */
+
+.leaflet-container {
+ background: #ddd;
+ outline-offset: 1px;
+ }
+.leaflet-container a {
+ color: #0078A8;
+ }
+.leaflet-zoom-box {
+ border: 2px dotted #38f;
+ background: rgba(255,255,255,0.5);
+ }
+
+
+/* general typography */
+.leaflet-container {
+ font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
+ font-size: 12px;
+ font-size: 0.75rem;
+ line-height: 1.5;
+ }
+
+
+/* general toolbar styles */
+
+.leaflet-bar {
+ box-shadow: 0 1px 5px rgba(0,0,0,0.65);
+ border-radius: 4px;
+ }
+.leaflet-bar a {
+ background-color: #fff;
+ border-bottom: 1px solid #ccc;
+ width: 26px;
+ height: 26px;
+ line-height: 26px;
+ display: block;
+ text-align: center;
+ text-decoration: none;
+ color: black;
+ }
+.leaflet-bar a,
+.leaflet-control-layers-toggle {
+ background-position: 50% 50%;
+ background-repeat: no-repeat;
+ display: block;
+ }
+.leaflet-bar a:hover,
+.leaflet-bar a:focus {
+ background-color: #f4f4f4;
+ }
+.leaflet-bar a:first-child {
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ }
+.leaflet-bar a:last-child {
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+ border-bottom: none;
+ }
+.leaflet-bar a.leaflet-disabled {
+ cursor: default;
+ background-color: #f4f4f4;
+ color: #bbb;
+ }
+
+.leaflet-touch .leaflet-bar a {
+ width: 30px;
+ height: 30px;
+ line-height: 30px;
+ }
+.leaflet-touch .leaflet-bar a:first-child {
+ border-top-left-radius: 2px;
+ border-top-right-radius: 2px;
+ }
+.leaflet-touch .leaflet-bar a:last-child {
+ border-bottom-left-radius: 2px;
+ border-bottom-right-radius: 2px;
+ }
+
+/* zoom control */
+
+.leaflet-control-zoom-in,
+.leaflet-control-zoom-out {
+ font: bold 18px 'Lucida Console', Monaco, monospace;
+ text-indent: 1px;
+ }
+
+.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out {
+ font-size: 22px;
+ }
+
+
+/* layers control */
+
+.leaflet-control-layers {
+ box-shadow: 0 1px 5px rgba(0,0,0,0.4);
+ background: #fff;
+ border-radius: 5px;
+ }
+.leaflet-control-layers-toggle {
+ background-image: url(images/layers.png);
+ width: 36px;
+ height: 36px;
+ }
+.leaflet-retina .leaflet-control-layers-toggle {
+ background-image: url(images/layers-2x.png);
+ background-size: 26px 26px;
+ }
+.leaflet-touch .leaflet-control-layers-toggle {
+ width: 44px;
+ height: 44px;
+ }
+.leaflet-control-layers .leaflet-control-layers-list,
+.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
+ display: none;
+ }
+.leaflet-control-layers-expanded .leaflet-control-layers-list {
+ display: block;
+ position: relative;
+ }
+.leaflet-control-layers-expanded {
+ padding: 6px 10px 6px 6px;
+ color: #333;
+ background: #fff;
+ }
+.leaflet-control-layers-scrollbar {
+ overflow-y: scroll;
+ overflow-x: hidden;
+ padding-right: 5px;
+ }
+.leaflet-control-layers-selector {
+ margin-top: 2px;
+ position: relative;
+ top: 1px;
+ }
+.leaflet-control-layers label {
+ display: block;
+ font-size: 13px;
+ font-size: 1.08333em;
+ }
+.leaflet-control-layers-separator {
+ height: 0;
+ border-top: 1px solid #ddd;
+ margin: 5px -10px 5px -6px;
+ }
+
+/* Default icon URLs */
+.leaflet-default-icon-path { /* used only in path-guessing heuristic, see L.Icon.Default */
+ background-image: url(images/marker-icon.png);
+ }
+
+
+/* attribution and scale controls */
+
+.leaflet-container .leaflet-control-attribution {
+ background: #fff;
+ background: rgba(255, 255, 255, 0.8);
+ margin: 0;
+ }
+.leaflet-control-attribution,
+.leaflet-control-scale-line {
+ padding: 0 5px;
+ color: #333;
+ line-height: 1.4;
+ }
+.leaflet-control-attribution a {
+ text-decoration: none;
+ }
+.leaflet-control-attribution a:hover,
+.leaflet-control-attribution a:focus {
+ text-decoration: underline;
+ }
+.leaflet-attribution-flag {
+ display: inline !important;
+ vertical-align: baseline !important;
+ width: 1em;
+ height: 0.6669em;
+ }
+.leaflet-left .leaflet-control-scale {
+ margin-left: 5px;
+ }
+.leaflet-bottom .leaflet-control-scale {
+ margin-bottom: 5px;
+ }
+.leaflet-control-scale-line {
+ border: 2px solid #777;
+ border-top: none;
+ line-height: 1.1;
+ padding: 2px 5px 1px;
+ white-space: nowrap;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ background: rgba(255, 255, 255, 0.8);
+ text-shadow: 1px 1px #fff;
+ }
+.leaflet-control-scale-line:not(:first-child) {
+ border-top: 2px solid #777;
+ border-bottom: none;
+ margin-top: -2px;
+ }
+.leaflet-control-scale-line:not(:first-child):not(:last-child) {
+ border-bottom: 2px solid #777;
+ }
+
+.leaflet-touch .leaflet-control-attribution,
+.leaflet-touch .leaflet-control-layers,
+.leaflet-touch .leaflet-bar {
+ box-shadow: none;
+ }
+.leaflet-touch .leaflet-control-layers,
+.leaflet-touch .leaflet-bar {
+ border: 2px solid rgba(0,0,0,0.2);
+ background-clip: padding-box;
+ }
+
+
+/* popup */
+
+.leaflet-popup {
+ position: absolute;
+ text-align: center;
+ margin-bottom: 20px;
+ }
+.leaflet-popup-content-wrapper {
+ padding: 1px;
+ text-align: left;
+ border-radius: 12px;
+ }
+.leaflet-popup-content {
+ margin: 13px 24px 13px 20px;
+ line-height: 1.3;
+ font-size: 13px;
+ font-size: 1.08333em;
+ min-height: 1px;
+ }
+.leaflet-popup-content p {
+ margin: 17px 0;
+ margin: 1.3em 0;
+ }
+.leaflet-popup-tip-container {
+ width: 40px;
+ height: 20px;
+ position: absolute;
+ left: 50%;
+ margin-top: -1px;
+ margin-left: -20px;
+ overflow: hidden;
+ pointer-events: none;
+ }
+.leaflet-popup-tip {
+ width: 17px;
+ height: 17px;
+ padding: 1px;
+
+ margin: -10px auto 0;
+ pointer-events: auto;
+
+ -webkit-transform: rotate(45deg);
+ -moz-transform: rotate(45deg);
+ -ms-transform: rotate(45deg);
+ transform: rotate(45deg);
+ }
+.leaflet-popup-content-wrapper,
+.leaflet-popup-tip {
+ background: white;
+ color: #333;
+ box-shadow: 0 3px 14px rgba(0,0,0,0.4);
+ }
+.leaflet-container a.leaflet-popup-close-button {
+ position: absolute;
+ top: 0;
+ right: 0;
+ border: none;
+ text-align: center;
+ width: 24px;
+ height: 24px;
+ font: 16px/24px Tahoma, Verdana, sans-serif;
+ color: #757575;
+ text-decoration: none;
+ background: transparent;
+ }
+.leaflet-container a.leaflet-popup-close-button:hover,
+.leaflet-container a.leaflet-popup-close-button:focus {
+ color: #585858;
+ }
+.leaflet-popup-scrolled {
+ overflow: auto;
+ }
+
+.leaflet-oldie .leaflet-popup-content-wrapper {
+ -ms-zoom: 1;
+ }
+.leaflet-oldie .leaflet-popup-tip {
+ width: 24px;
+ margin: 0 auto;
+
+ -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
+ filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
+ }
+
+.leaflet-oldie .leaflet-control-zoom,
+.leaflet-oldie .leaflet-control-layers,
+.leaflet-oldie .leaflet-popup-content-wrapper,
+.leaflet-oldie .leaflet-popup-tip {
+ border: 1px solid #999;
+ }
+
+
+/* div icon */
+
+.leaflet-div-icon {
+ background: #fff;
+ border: 1px solid #666;
+ }
+
+
+/* Tooltip */
+/* Base styles for the element that has a tooltip */
+.leaflet-tooltip {
+ position: absolute;
+ padding: 6px;
+ background-color: #fff;
+ border: 1px solid #fff;
+ border-radius: 3px;
+ color: #222;
+ white-space: nowrap;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ pointer-events: none;
+ box-shadow: 0 1px 3px rgba(0,0,0,0.4);
+ }
+.leaflet-tooltip.leaflet-interactive {
+ cursor: pointer;
+ pointer-events: auto;
+ }
+.leaflet-tooltip-top:before,
+.leaflet-tooltip-bottom:before,
+.leaflet-tooltip-left:before,
+.leaflet-tooltip-right:before {
+ position: absolute;
+ pointer-events: none;
+ border: 6px solid transparent;
+ background: transparent;
+ content: "";
+ }
+
+/* Directions */
+
+.leaflet-tooltip-bottom {
+ margin-top: 6px;
+}
+.leaflet-tooltip-top {
+ margin-top: -6px;
+}
+.leaflet-tooltip-bottom:before,
+.leaflet-tooltip-top:before {
+ left: 50%;
+ margin-left: -6px;
+ }
+.leaflet-tooltip-top:before {
+ bottom: 0;
+ margin-bottom: -12px;
+ border-top-color: #fff;
+ }
+.leaflet-tooltip-bottom:before {
+ top: 0;
+ margin-top: -12px;
+ margin-left: -6px;
+ border-bottom-color: #fff;
+ }
+.leaflet-tooltip-left {
+ margin-left: -6px;
+}
+.leaflet-tooltip-right {
+ margin-left: 6px;
+}
+.leaflet-tooltip-left:before,
+.leaflet-tooltip-right:before {
+ top: 50%;
+ margin-top: -6px;
+ }
+.leaflet-tooltip-left:before {
+ right: 0;
+ margin-right: -12px;
+ border-left-color: #fff;
+ }
+.leaflet-tooltip-right:before {
+ left: 0;
+ margin-left: -12px;
+ border-right-color: #fff;
+ }
+
+/* Printing */
+
+@media print {
+ /* Prevent printers from removing background-images of controls. */
+ .leaflet-control {
+ -webkit-print-color-adjust: exact;
+ print-color-adjust: exact;
+ }
+ }
diff --git a/frontend/styles/lib/icons.sass b/frontend/styles/lib/icons.sass new file mode 100644 index 0000000..d3fb2ef --- /dev/null +++ b/frontend/styles/lib/icons.sass @@ -0,0 +1,15 @@ +.g-Icon + &--Spin + animation: g-Icon--Spin 2s ease-in-out infinite, g-Icon--Appear 1s ease-in; + +@keyframes g-Icon--Spin + 0% + transform: rotate(0deg) + 100% + transform: rotate(360deg) + +@keyframes g-Icon--Appear + 0% + opacity: 0 + 100% + opacity: 1 diff --git a/frontend/styles/main.sass b/frontend/styles/main.sass new file mode 100644 index 0000000..7fa6963 --- /dev/null +++ b/frontend/styles/main.sass @@ -0,0 +1,71 @@ +@use 'colors' +@use 'form' +@use 'leaflet' + +// libs +@use 'lib/icons' + +// UI +@use 'ui/modal' +@use 'ui/layout' + +// Pages +@use 'pages/login' +@use 'pages/map' +@use 'pages/maps' + +/* General */ + +html + box-sizing: border-box + height: 100% + +*, *:before, *:after + box-sizing: inherit + +body + margin: 0 + font-family: sans-serif + font-size: 1.05rem + height: 100% + display: flex + flex-flow: column + +main + flex-grow: 1 + min-height: 0 + +header + display: flex + justify-content: space-between + width: 100% + background-color: colors.$brown + color: white + line-height: 3rem + + & > a + color: inherit + padding: 0 1rem + +.g-Logout__Button + border: none + background: transparent + font-size: inherit + color: white + cursor: pointer + padding: 0 1rem + height: 100% + + &:hover + text-decoration: underline + +a + color: colors.$blue + text-decoration: none + + &:hover + text-decoration: underline + +p + margin: 0 0 1rem + line-height: 1.4rem diff --git a/frontend/styles/pages/login.sass b/frontend/styles/pages/login.sass new file mode 100644 index 0000000..0f840ee --- /dev/null +++ b/frontend/styles/pages/login.sass @@ -0,0 +1,12 @@ +@use '../colors' + +.g-Login + max-width: 400px + margin: 7rem auto + + &__Title + text-align: center + margin: 0 0 2rem + color: colors.$red + font-weight: normal + font-size: 2rem diff --git a/frontend/styles/pages/map.sass b/frontend/styles/pages/map.sass new file mode 100644 index 0000000..ddfefcb --- /dev/null +++ b/frontend/styles/pages/map.sass @@ -0,0 +1,84 @@ +@use '../colors' + +// Leaflet cursor over the map +.leaflet-container + cursor: crosshair !important + &.leaflet-drag-target + cursor: grab !important + +.g-Map + display: flex + flex-flow: column + height: 100% + + .leaflet-container + flex-grow: 1 + min-height: 0 + + &__Footer + display: flex + align-items: center + justify-content: space-between + line-height: 3rem + background-color: colors.$black + color: white + padding: 0 1rem + + &__FooterButtons + display: flex + gap: 1rem + +.g-ContextMenu + z-index: 1000 + position: absolute + background-color: white + border-radius: var(--context-menu-border-radius) + border: 1px solid #333333 + $border-radius: 2px; + + &__Entry:first-child + border-top-left-radius: $border-radius + border-top-right-radius: $border-radius + + &__Entry:last-child + border-bottom-left-radius: $border-radius + border-bottom-right-radius: $border-radius + + &__Entry + padding: 0.5rem 1rem + + &:hover + background-color: #DDDDDD + cursor: pointer + +/* Marker icon */ + +.g-Marker + position: relative + width: 100% + height: 100% + + &__Base + position: absolute + width: 25px + bottom: calc(50%) + left: 50% + transform: translateX(-50%) + + &__Icon + position: absolute + bottom: 25px + display: flex + width: 12px + height: 12px + + &__Title + position: absolute + bottom: 47px + line-height: 0.8rem + left: 50% + transform: translateX(-50%) + color: black + font-weight: bold + text-align: center + width: 100px diff --git a/frontend/styles/pages/maps.sass b/frontend/styles/pages/maps.sass new file mode 100644 index 0000000..ad8ba24 --- /dev/null +++ b/frontend/styles/pages/maps.sass @@ -0,0 +1,2 @@ +.g-Maps + margin: 1rem diff --git a/frontend/styles/ui/layout.sass b/frontend/styles/ui/layout.sass new file mode 100644 index 0000000..93f5a69 --- /dev/null +++ b/frontend/styles/ui/layout.sass @@ -0,0 +1,25 @@ +@use '../colors' + +.g-Columns + display: flex + gap: 1rem + + & > * + flex-basis: 50% + flex-grow: 1 + +.g-Loading + display: flex + align-items: center + justify-content: center + height: 100% + + & > svg + width: 20px + +.g-Error + display: flex + align-items: center + justify-content: center + height: 100% + color: colors.$red diff --git a/frontend/styles/ui/modal.sass b/frontend/styles/ui/modal.sass new file mode 100644 index 0000000..81e91d6 --- /dev/null +++ b/frontend/styles/ui/modal.sass @@ -0,0 +1,57 @@ +@use '../colors' + +$transition-duration: 0.15s + +.g-Modal + width: 100vw + height: 100vh + position: fixed + top: 0 + left: 0 + display: flex + justify-content: center + align-items: center + z-index: 1000 // To be over leaflet + color: black + background-color: rgba(0, 0, 0, 0.5) + + &--Danger + .g-Modal__Content + border-left: 5px solid colors.$red + + &__Content + position: relative + background-color: white + width: 50% + min-width: 400px; + max-width: 600px; + border-radius: 0.2rem + line-height: normal + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.8) + + &__Header + display: flex + justify-content: space-between + align-items: center + padding: 1rem 2rem + border-bottom: 1px solid #EEE + font-weight: bold + + &__Body + padding: 2rem + max-height: 50vh + overflow-y: scroll + + &__Close + cursor: pointer + font-weight: bold + border-radius: 50% + border: 1px solid #EEE + background-color: transparent + width: 3rem + height: 3rem + font-size: 1.7rem + flex-shrink: 0 + + &__Close:hover, &__Close:focus + background-color: #EEE |