forked from MapComplete/MapComplete
UI: tweak style to come closer to the fix-my-city design, see #2107
This commit is contained in:
parent
82c92e7f79
commit
5b7a117af3
24 changed files with 189 additions and 255 deletions
|
|
@ -5,6 +5,7 @@
|
||||||
"shownByDefault": false,
|
"shownByDefault": false,
|
||||||
"title": "Current View",
|
"title": "Current View",
|
||||||
"popupInFloatover": true,
|
"popupInFloatover": true,
|
||||||
|
"titleIcons": [],
|
||||||
"pointRendering": [],
|
"pointRendering": [],
|
||||||
"lineRendering": [
|
"lineRendering": [
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -700,6 +700,7 @@
|
||||||
{
|
{
|
||||||
"builtin": "current_view",
|
"builtin": "current_view",
|
||||||
"override": {
|
"override": {
|
||||||
|
"popupInFloatover": "title",
|
||||||
"calculatedTags+": [
|
"calculatedTags+": [
|
||||||
"_overlapping=Number(feat.properties.zoom) >= 14 ? overlapWith(feat)('grb').map(ff => ff.feat.properties) : undefined",
|
"_overlapping=Number(feat.properties.zoom) >= 14 ? overlapWith(feat)('grb').map(ff => ff.feat.properties) : undefined",
|
||||||
"_applicable_conflate=get(feat)('_overlapping')?.filter(p => p._imported !== 'yes' && (!p['_imported_osm_still_fresh'] || !p['_imported_osm_object_found']) && p['_overlap_absolute'] > 10 && p['_overlap_percentage'] > 80 && p['_reverse_overlap_percentage'] > 80)?.map(p => p.id)",
|
"_applicable_conflate=get(feat)('_overlapping')?.filter(p => p._imported !== 'yes' && (!p['_imported_osm_still_fresh'] || !p['_imported_osm_object_found']) && p['_overlap_absolute'] > 10 && p['_overlap_percentage'] > 80 && p['_reverse_overlap_percentage'] > 80)?.map(p => p.id)",
|
||||||
|
|
|
||||||
|
|
@ -598,6 +598,7 @@
|
||||||
{
|
{
|
||||||
"builtin": "current_view",
|
"builtin": "current_view",
|
||||||
"override": {
|
"override": {
|
||||||
|
"popupInFloatover": "title",
|
||||||
"+pointRendering": [
|
"+pointRendering": [
|
||||||
{
|
{
|
||||||
"location": [
|
"location": [
|
||||||
|
|
|
||||||
|
|
@ -5198,23 +5198,22 @@ input[type="range"].range-lg::-moz-range-thumb {
|
||||||
--low-interaction-background: #eeeeee;
|
--low-interaction-background: #eeeeee;
|
||||||
--low-interaction-background-50: #eeeeee90;
|
--low-interaction-background-50: #eeeeee90;
|
||||||
--low-interaction-foreground: black;
|
--low-interaction-foreground: black;
|
||||||
--low-interaction-contrast: #ff00ff;
|
|
||||||
--low-interaction-border: #dcdcdc;
|
--low-interaction-border: #dcdcdc;
|
||||||
--interactive-background: #dddddd;
|
--interactive-background: #dddddd;
|
||||||
--interactive-foreground: black;
|
--interactive-foreground: black;
|
||||||
--interactive-contrast: #ff00ff;
|
--interactive-contrast: #cd1dcd;
|
||||||
--interaction-border: #bfbfbf;
|
--interaction-border: #bfbfbf;
|
||||||
--button-background: #282828;
|
--button-background-primary: #191919;
|
||||||
--button-background-hover: #484848;
|
--button-background-hover: #484848;
|
||||||
--button-primary-background-hover: #353535;
|
--button-primary-background-hover: rgba(48, 47, 47, 0.94);
|
||||||
--button-foreground: white;
|
--button-foreground: white;
|
||||||
--button-border-color: #F7F7F7;
|
--button-background: #fafafa;
|
||||||
|
--button-border: #B8B8B8;
|
||||||
--disabled: #B8B8B8;
|
--disabled: #B8B8B8;
|
||||||
--disabled-font: #B8B8B8;
|
--disabled-font: #B8B8B8;
|
||||||
--catch-detail-color: black;
|
--catch-detail-color: var(--background-color);
|
||||||
/*#3a3aeb;*/
|
--catch-detail-foregroundcolor: var(--foreground-color);
|
||||||
--catch-detail-foregroundcolor: white;
|
--catch-detail-color-contrast: var(--interactive-contrast);
|
||||||
--catch-detail-color-contrast: #fb3afb;
|
|
||||||
--image-carousel-height: 350px;
|
--image-carousel-height: 350px;
|
||||||
/** Technical value, used by icon.svelte
|
/** Technical value, used by icon.svelte
|
||||||
*/
|
*/
|
||||||
|
|
@ -5323,7 +5322,7 @@ input[type="text"] {
|
||||||
}
|
}
|
||||||
|
|
||||||
.border-interactive {
|
.border-interactive {
|
||||||
border: 2px dashed var(--catch-detail-color-contrast);
|
border: 2px dashed var(--interactive-contrast);
|
||||||
border-radius: 0.5rem;
|
border-radius: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -5358,11 +5357,14 @@ button, .button {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 0.25rem 1rem;
|
padding: 0.25rem 1rem;
|
||||||
margin: 0.25rem;
|
margin: 0.25rem;
|
||||||
border: 1px solid var(--button-background-hover);
|
background: var(--button-background);
|
||||||
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
|
border: 2px solid var(--button-border);
|
||||||
border-radius: 15px;
|
border-radius: 7px;
|
||||||
|
transition: background-color 200ms;
|
||||||
|
}
|
||||||
|
|
||||||
|
.low-interaction button{
|
||||||
background: var(--background-color);
|
background: var(--background-color);
|
||||||
transition: all 200ms;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.group > button {
|
.group > button {
|
||||||
|
|
@ -5374,7 +5376,12 @@ button.w-full {
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
button:hover:not(.disabled):not(.as-link), .button:hover:not(.disabled):not(.as-link) {
|
button.primary:hover:not(.disabled), .button.primary:hover:not(.disabled) {
|
||||||
|
background-color: var(--button-primary-background-hover);
|
||||||
|
border: 2px solid var(--interactive-contrast)
|
||||||
|
}
|
||||||
|
|
||||||
|
button:hover:not(.disabled):not(.as-link):not(.primary), .button:hover:not(.disabled):not(.as-link):not(.primary) {
|
||||||
background-color: var(--low-interaction-background);
|
background-color: var(--low-interaction-background);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -5388,12 +5395,8 @@ button:focus, .button:focus {
|
||||||
|
|
||||||
button.primary, .button.primary {
|
button.primary, .button.primary {
|
||||||
color: var(--button-foreground);
|
color: var(--button-foreground);
|
||||||
background-color: var(--button-background);
|
background-color: var(--button-background-primary);
|
||||||
border-color: var(--button-border-color);
|
border: 2px solid var(--button-background-primary)
|
||||||
}
|
|
||||||
|
|
||||||
button.primary:hover:not(.disabled), .button.primary:hover:not(.disabled) {
|
|
||||||
background-color: var(--button-primary-background-hover);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
button.disabled {
|
button.disabled {
|
||||||
|
|
@ -5444,7 +5447,7 @@ button.unstyled, .button-unstyled button {
|
||||||
/******* Other input elements ******/
|
/******* Other input elements ******/
|
||||||
|
|
||||||
.hover-alert:hover {
|
.hover-alert:hover {
|
||||||
color: var(--catch-detail-color-contrast)
|
color: var(--interactive-contrast)
|
||||||
}
|
}
|
||||||
|
|
||||||
.links-w-full a:not(.weblate-link), .links-w-full button.as-link {
|
.links-w-full a:not(.weblate-link), .links-w-full button.as-link {
|
||||||
|
|
@ -5468,7 +5471,7 @@ select {
|
||||||
}
|
}
|
||||||
|
|
||||||
select:hover {
|
select:hover {
|
||||||
border-color: var(--catch-detail-color-contrast);
|
border-color: var(--interactive-contrast);
|
||||||
}
|
}
|
||||||
|
|
||||||
.neutral-label {
|
.neutral-label {
|
||||||
|
|
@ -5570,17 +5573,6 @@ h2.group {
|
||||||
background-color: var(--interactive-background);
|
background-color: var(--interactive-background);
|
||||||
}
|
}
|
||||||
|
|
||||||
.information {
|
|
||||||
/* The class to convey important information which does _not_ denote an error... */
|
|
||||||
background-color: var(--low-interaction-background);
|
|
||||||
color: var(--alert-foreground-color);
|
|
||||||
border-radius: 1em;
|
|
||||||
margin: 0.25em;
|
|
||||||
text-align: center;
|
|
||||||
padding: 0.15em 0.3em;
|
|
||||||
border: 3px dotted var(--catch-detail-color-contrast);
|
|
||||||
}
|
|
||||||
|
|
||||||
.low-interaction .interactive {
|
.low-interaction .interactive {
|
||||||
background-color: var(--interactive-background);
|
background-color: var(--interactive-background);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
<SubtleButton
|
<SubtleButton
|
||||||
on:click={() => dispatch("click")}
|
on:click={() => dispatch("click")}
|
||||||
options={{ extraClasses: twMerge("flex items-center", clss) }}
|
options={{ extraClasses: twMerge("flex items-center justify-start", clss) }}
|
||||||
>
|
>
|
||||||
<ChevronLeftIcon class={imageClass ?? "h-12 w-12"} slot="image" />
|
<ChevronLeftIcon class={imageClass ?? "h-12 w-12"} slot="image" />
|
||||||
<slot slot="message" />
|
<slot slot="message" />
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
use:ariaLabelStore={arialabelString}
|
use:ariaLabelStore={arialabelString}
|
||||||
disabled={!$enabled}
|
disabled={!$enabled}
|
||||||
class={twJoin(
|
class={twJoin(
|
||||||
"pointer-events-auto relative h-fit w-fit rounded-full",
|
"pointer-events-auto relative h-fit w-fit rounded-full border-gray-500",
|
||||||
cls,
|
cls,
|
||||||
$enabled ? "" : "disabled"
|
$enabled ? "" : "disabled"
|
||||||
)}
|
)}
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@
|
||||||
|
|
||||||
<form class="w-full" on:submit|preventDefault={() => dispatch("search")}>
|
<form class="w-full" on:submit|preventDefault={() => dispatch("search")}>
|
||||||
<label
|
<label
|
||||||
class="neutral-label normal-background box-shadow flex w-full items-center rounded-full border border-black"
|
class="neutral-label normal-background box-shadow flex w-full items-center rounded-md border border-black"
|
||||||
>
|
>
|
||||||
<SearchIcon aria-hidden="true" class="ml-2 h-6 w-6 shrink-0" />
|
<SearchIcon aria-hidden="true" class="ml-2 h-6 w-6 shrink-0" />
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -187,7 +187,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
:global(.tab-selected svg) {
|
:global(.tab-selected svg) {
|
||||||
fill: var(--catch-detail-color-contrast);
|
fill: var(--interactive-contrast);
|
||||||
}
|
}
|
||||||
|
|
||||||
:global(.tab-unselected) {
|
:global(.tab-unselected) {
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
|
<script >
|
||||||
|
export let contentStyle= ""
|
||||||
|
</script>
|
||||||
<div class="flex h-full flex-col">
|
<div class="flex h-full flex-col">
|
||||||
<div class="low-interaction flex items-center justify-between p-4 drop-shadow-md">
|
<div class="low-interaction flex items-center justify-between p-4 drop-shadow-md">
|
||||||
<div class="flex items-center gap-x-2">
|
<div class="flex items-center gap-x-2">
|
||||||
|
|
@ -9,7 +12,7 @@
|
||||||
<slot name="title-end" />
|
<slot name="title-end" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex h-full flex-col overflow-auto border-b-2 p-4">
|
<div class={"flex h-full flex-col overflow-auto border-b-2 p-4 "+contentStyle}>
|
||||||
<slot />
|
<slot />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -101,8 +101,8 @@
|
||||||
{#if onlyLink}
|
{#if onlyLink}
|
||||||
<InsetSpacer height={AndroidPolyfill.getInsetSizes().top} />
|
<InsetSpacer height={AndroidPolyfill.getInsetSizes().top} />
|
||||||
{/if}
|
{/if}
|
||||||
<div class="flex justify-between border-b border-black p-2">
|
<div class="flex justify-between items-center border-b border-black p-2">
|
||||||
<h2>
|
<h2 class="m-0">
|
||||||
<Tr t={t.title} />
|
<Tr t={t.title} />
|
||||||
</h2>
|
</h2>
|
||||||
<CloseButton
|
<CloseButton
|
||||||
|
|
|
||||||
|
|
@ -25,13 +25,13 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="low-interaction flex border-b-2 border-black px-3 drop-shadow-md">
|
<div class="low-interaction flex border-b-2 border-black px-3 drop-shadow-md">
|
||||||
<div class="h-fit w-full overflow-auto sm:p-2" style="max-height: 20vh;">
|
<div class="h-full w-full overflow-auto sm:p-2 flex items-center" style="max-height: 20vh;">
|
||||||
{#if $tags._deleted === "yes"}
|
{#if $tags._deleted === "yes"}
|
||||||
<h3 class="p-4">
|
<h3 class="p-4">
|
||||||
<Tr t={Translations.t.delete.deletedTitle} />
|
<Tr t={Translations.t.delete.deletedTitle} />
|
||||||
</h3>
|
</h3>
|
||||||
{:else}
|
{:else}
|
||||||
<div class="flex h-full w-full flex-grow flex-col">
|
<div class="flex h-full w-full flex-grow flex-col justify-center">
|
||||||
<!-- Title element and title icons-->
|
<!-- Title element and title icons-->
|
||||||
<h3 class="m-0">
|
<h3 class="m-0">
|
||||||
<a href={`#${$tags?.id}`}>
|
<a href={`#${$tags?.id}`}>
|
||||||
|
|
@ -40,6 +40,7 @@
|
||||||
{/if}
|
{/if}
|
||||||
</a>
|
</a>
|
||||||
</h3>
|
</h3>
|
||||||
|
{#if layer.titleIcons.length > 0}
|
||||||
<div
|
<div
|
||||||
class="no-weblate title-icons links-as-button mr-2 flex flex-row flex-wrap items-center gap-x-0.5 pt-0.5 sm:pt-1"
|
class="no-weblate title-icons links-as-button mr-2 flex flex-row flex-wrap items-center gap-x-0.5 pt-0.5 sm:pt-1"
|
||||||
>
|
>
|
||||||
|
|
@ -69,11 +70,12 @@
|
||||||
</a>
|
</a>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
<slot name="close-button">
|
<slot name="close-button">
|
||||||
<div class="mt-4">
|
<div class="m-2">
|
||||||
<CloseButton on:click={() => state.selectedElement.setData(undefined)} />
|
<CloseButton on:click={() => state.selectedElement.setData(undefined)} />
|
||||||
</div>
|
</div>
|
||||||
</slot>
|
</slot>
|
||||||
|
|
|
||||||
|
|
@ -40,11 +40,9 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<LoginToggle {state}>
|
<LoginToggle {state}>
|
||||||
<div slot="not-logged-in">
|
<LoginButton slot="not-logged-in" osmConnection={state.osmConnection}>
|
||||||
<LoginButton osmConnection={state.osmConnection}>
|
<Tr t={Translations.t.favouritePoi.loginToSeeList} />
|
||||||
<Tr t={Translations.t.favouritePoi.loginToSeeList} />
|
</LoginButton>
|
||||||
</LoginButton>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="flex flex-col">
|
<div class="flex flex-col">
|
||||||
{#if $favourites.length === 0}
|
{#if $favourites.length === 0}
|
||||||
|
|
|
||||||
|
|
@ -100,9 +100,8 @@
|
||||||
}>()
|
}>()
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<TitledPanel>
|
<TitledPanel contentStyle="interactive">
|
||||||
<Tr slot="title" t={Translations.t.general.add.intro} />
|
<Tr slot="title" t={Translations.t.general.add.intro} />
|
||||||
|
|
||||||
{#each presets as preset}
|
{#each presets as preset}
|
||||||
<NextButton on:click={() => dispatch("select", preset)}>
|
<NextButton on:click={() => dispatch("select", preset)}>
|
||||||
<ToSvelte slot="image" construct={() => preset.icon} />
|
<ToSvelte slot="image" construct={() => preset.icon} />
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
import type { Feature } from "geojson"
|
import type { Feature } from "geojson"
|
||||||
import LayerConfig from "../../../Models/ThemeConfig/LayerConfig"
|
import LayerConfig from "../../../Models/ThemeConfig/LayerConfig"
|
||||||
import * as all_languages from "../../../assets/language_translations.json"
|
import * as all_languages from "../../../assets/language_translations.json"
|
||||||
|
import Locale from "../../i18n/Locale"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Visualizes a list of the known languages
|
* Visualizes a list of the known languages
|
||||||
|
|
@ -22,6 +23,7 @@
|
||||||
export let layer: LayerConfig | undefined
|
export let layer: LayerConfig | undefined
|
||||||
|
|
||||||
let [beforeListing, afterListing] = (render_all ?? "{list()}").split("{list()}")
|
let [beforeListing, afterListing] = (render_all ?? "{list()}").split("{list()}")
|
||||||
|
let currentLanguage: Store<string> = Locale.language
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#if $languages.length === 1}
|
{#if $languages.length === 1}
|
||||||
|
|
@ -30,9 +32,8 @@
|
||||||
{tags}
|
{tags}
|
||||||
{feature}
|
{feature}
|
||||||
{layer}
|
{layer}
|
||||||
t={new TypedTranslation({ "*": single_render }).PartialSubsTr(
|
t={new TypedTranslation({ "*": single_render }).PartialSubs(
|
||||||
"language()",
|
{"language()": new Translation(all_languages[$languages[0]]).textFor($currentLanguage)}
|
||||||
new Translation(all_languages[$languages[0]], undefined)
|
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
{:else}
|
{:else}
|
||||||
|
|
@ -45,9 +46,8 @@
|
||||||
{tags}
|
{tags}
|
||||||
{feature}
|
{feature}
|
||||||
{layer}
|
{layer}
|
||||||
t={new TypedTranslation({ "*": item_render }).PartialSubsTr(
|
t={new TypedTranslation({ "*": item_render }).PartialSubs(
|
||||||
"language()",
|
{"language()": new Translation(all_languages[language]).textFor($currentLanguage)}
|
||||||
new Translation(all_languages[language], undefined)
|
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@
|
||||||
import TagRenderingQuestionDynamic from "./TagRenderingQuestionDynamic.svelte"
|
import TagRenderingQuestionDynamic from "./TagRenderingQuestionDynamic.svelte"
|
||||||
import LoginToggle from "../../Base/LoginToggle.svelte"
|
import LoginToggle from "../../Base/LoginToggle.svelte"
|
||||||
import AccordionSingle from "../../Flowbite/AccordionSingle.svelte"
|
import AccordionSingle from "../../Flowbite/AccordionSingle.svelte"
|
||||||
|
import { ChevronRightIcon } from "@rgossiaux/svelte-heroicons/solid"
|
||||||
|
|
||||||
export let layer: LayerConfig
|
export let layer: LayerConfig
|
||||||
export let tags: UIEventSource<Record<string, string>>
|
export let tags: UIEventSource<Record<string, string>>
|
||||||
|
|
@ -180,7 +181,10 @@
|
||||||
}}
|
}}
|
||||||
slot="cancel"
|
slot="cancel"
|
||||||
>
|
>
|
||||||
|
<div class="flex items-center">
|
||||||
<Tr t={Translations.t.general.skip} />
|
<Tr t={Translations.t.general.skip} />
|
||||||
|
<ChevronRightIcon class="w-4 h-4 ml-2" />
|
||||||
|
</div>
|
||||||
</button>
|
</button>
|
||||||
</TagRenderingQuestionDynamic>
|
</TagRenderingQuestionDynamic>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
|
||||||
|
|
@ -148,6 +148,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.answer:has(.edit-button:hover) {
|
.answer:has(.edit-button:hover) {
|
||||||
border: 1px solid var(--catch-detail-color-contrast);
|
border: 1px solid var(--interactive-contrast);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
/**
|
/**
|
||||||
* Css classes to apply
|
* Css classes to apply
|
||||||
*/
|
*/
|
||||||
export let clss: string = "ml-2"
|
export let clss: string = ""
|
||||||
export let mapping: {
|
export let mapping: {
|
||||||
readonly if?: TagsFilter
|
readonly if?: TagsFilter
|
||||||
readonly then: Translation
|
readonly then: Translation
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,6 @@
|
||||||
import SpecialTranslation from "./SpecialTranslation.svelte"
|
import SpecialTranslation from "./SpecialTranslation.svelte"
|
||||||
import TagHint from "../TagHint.svelte"
|
import TagHint from "../TagHint.svelte"
|
||||||
import LoginToggle from "../../Base/LoginToggle.svelte"
|
import LoginToggle from "../../Base/LoginToggle.svelte"
|
||||||
import SubtleButton from "../../Base/SubtleButton.svelte"
|
|
||||||
import TagRenderingMappingInput from "./TagRenderingMappingInput.svelte"
|
import TagRenderingMappingInput from "./TagRenderingMappingInput.svelte"
|
||||||
import { Translation } from "../../i18n/Translation"
|
import { Translation } from "../../i18n/Translation"
|
||||||
import { Unit } from "../../../Models/Unit"
|
import { Unit } from "../../../Models/Unit"
|
||||||
|
|
@ -21,9 +20,8 @@
|
||||||
import { TagUtils } from "../../../Logic/Tags/TagUtils"
|
import { TagUtils } from "../../../Logic/Tags/TagUtils"
|
||||||
|
|
||||||
import Search from "../../../assets/svg/Search.svelte"
|
import Search from "../../../assets/svg/Search.svelte"
|
||||||
import Login from "../../../assets/svg/Login.svelte"
|
|
||||||
import { placeholder } from "../../../Utils/placeholder"
|
import { placeholder } from "../../../Utils/placeholder"
|
||||||
import { TrashIcon } from "@rgossiaux/svelte-heroicons/solid"
|
import { ChevronRightIcon, TrashIcon } from "@rgossiaux/svelte-heroicons/solid"
|
||||||
import { Tag } from "../../../Logic/Tags/Tag"
|
import { Tag } from "../../../Logic/Tags/Tag"
|
||||||
import { And } from "../../../Logic/Tags/And"
|
import { And } from "../../../Logic/Tags/And"
|
||||||
import { get } from "svelte/store"
|
import { get } from "svelte/store"
|
||||||
|
|
@ -36,6 +34,7 @@
|
||||||
import DotMenu from "../../Base/DotMenu.svelte"
|
import DotMenu from "../../Base/DotMenu.svelte"
|
||||||
import SidebarUnit from "../../Base/SidebarUnit.svelte"
|
import SidebarUnit from "../../Base/SidebarUnit.svelte"
|
||||||
import { Lists } from "../../../Utils/Lists"
|
import { Lists } from "../../../Utils/Lists"
|
||||||
|
import LoginButton from "../../Base/LoginButton.svelte"
|
||||||
|
|
||||||
export let config: TagRenderingConfig
|
export let config: TagRenderingConfig
|
||||||
export let tags: UIEventSource<Record<string, string>>
|
export let tags: UIEventSource<Record<string, string>>
|
||||||
|
|
@ -360,7 +359,7 @@
|
||||||
{#if question !== undefined && $apiState !== "readonly" && $apiState !== "offline"}
|
{#if question !== undefined && $apiState !== "readonly" && $apiState !== "offline"}
|
||||||
<div class={clss}>
|
<div class={clss}>
|
||||||
{#if layer?.isNormal()}
|
{#if layer?.isNormal()}
|
||||||
<LoginToggle {state}>
|
<LoginToggle {state} hiddenFail ignoreLoading>
|
||||||
<DotMenu hideBackground={true} open={menuIsOpened}>
|
<DotMenu hideBackground={true} open={menuIsOpened}>
|
||||||
<SidebarUnit>
|
<SidebarUnit>
|
||||||
{#if $disabledInTheme.indexOf(config.id) >= 0}
|
{#if $disabledInTheme.indexOf(config.id) >= 0}
|
||||||
|
|
@ -538,7 +537,7 @@
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<!-- Save and cancel buttons, in a logintoggle -->
|
<!-- Extra save button, probably for a setting -->
|
||||||
<LoginToggle {state} ignoreLoading>
|
<LoginToggle {state} ignoreLoading>
|
||||||
<div class="flex w-full justify-end" slot="not-logged-in">
|
<div class="flex w-full justify-end" slot="not-logged-in">
|
||||||
{#if config.alwaysForceSaveButton}
|
{#if config.alwaysForceSaveButton}
|
||||||
|
|
@ -549,10 +548,9 @@
|
||||||
<Tr t={Translations.t.general.save} />
|
<Tr t={Translations.t.general.save} />
|
||||||
</button>
|
</button>
|
||||||
{:else}
|
{:else}
|
||||||
<SubtleButton on:click={() => state?.osmConnection?.AttemptLogin()}>
|
<LoginButton osmConnection={state.osmConnection}>
|
||||||
<Login slot="image" class="h-8 w-8" />
|
|
||||||
<Tr t={Translations.t.general.loginToStart} slot="message" />
|
<Tr t={Translations.t.general.loginToStart} slot="message" />
|
||||||
</SubtleButton>
|
</LoginButton>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
{#if $feedback !== undefined}
|
{#if $feedback !== undefined}
|
||||||
|
|
@ -561,6 +559,7 @@
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
<!-- Popup to 'mark as unknown' -->
|
||||||
<Popup shown={unknownModal}>
|
<Popup shown={unknownModal}>
|
||||||
<h2 slot="header">
|
<h2 slot="header">
|
||||||
<Tr t={Translations.t.unknown.title} />
|
<Tr t={Translations.t.unknown.title} />
|
||||||
|
|
@ -588,7 +587,7 @@
|
||||||
</div>
|
</div>
|
||||||
</Popup>
|
</Popup>
|
||||||
|
|
||||||
<div class="sticky bottom-0 flex flex-wrap justify-between" style="z-index: 11">
|
<div class="sticky bottom-0 flex flex-wrap justify-between mb-2 mt-4" style="z-index: 11">
|
||||||
{#if $onMarkUnknown?.length > 0 && $isKnown && !matchesEmpty}
|
{#if $onMarkUnknown?.length > 0 && $isKnown && !matchesEmpty}
|
||||||
<button class="as-link small text-sm" on:click={() => unknownModal.set(true)}>
|
<button class="as-link small text-sm" on:click={() => unknownModal.set(true)}>
|
||||||
<Tr t={Translations.t.unknown.markUnknown} />
|
<Tr t={Translations.t.unknown.markUnknown} />
|
||||||
|
|
@ -596,10 +595,11 @@
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="mb-2 mt-4 flex flex-grow flex-wrap-reverse items-stretch justify-end self-end sm:flex-nowrap"
|
class="flex flex-grow flex-wrap-reverse items-stretch justify-end self-end sm:flex-nowrap"
|
||||||
>
|
>
|
||||||
<!-- TagRenderingQuestion-buttons -->
|
|
||||||
<slot name="cancel" />
|
<slot name="cancel" />
|
||||||
|
|
||||||
|
<!-- TagRenderingQuestion-buttons -->
|
||||||
<slot name="save-button" {selectedTags}>
|
<slot name="save-button" {selectedTags}>
|
||||||
<!-- Save-button / delete button -->
|
<!-- Save-button / delete button -->
|
||||||
{#if config.freeform?.key && !checkedMappings?.some((m) => m) && !$freeformInput && !$freeformInputUnvalidated && $tags[config.freeform.key] && $isKnown}
|
{#if config.freeform?.key && !checkedMappings?.some((m) => m) && !$freeformInput && !$freeformInputUnvalidated && $tags[config.freeform.key] && $isKnown}
|
||||||
|
|
@ -619,9 +619,11 @@
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<Tr t={Translations.t.general.save} />
|
<Tr t={Translations.t.general.save} />
|
||||||
|
<ChevronRightIcon class="w-4 h-4 ml-2" />
|
||||||
</button>
|
</button>
|
||||||
{/if}
|
{/if}
|
||||||
</slot>
|
</slot>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Taghint + debug info -->
|
<!-- Taghint + debug info -->
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
import {
|
import { SpecialVisualisationParams, SpecialVisualizationSvelte } from "../SpecialVisualization"
|
||||||
SpecialVisualisationParams,
|
|
||||||
SpecialVisualizationState,
|
|
||||||
SpecialVisualizationSvelte,
|
|
||||||
} from "../SpecialVisualization"
|
|
||||||
import SvelteUIElement from "../Base/SvelteUIElement"
|
import SvelteUIElement from "../Base/SvelteUIElement"
|
||||||
import Constants from "../../Models/Constants"
|
import Constants from "../../Models/Constants"
|
||||||
import LogoutButton from "../Base/LogoutButton.svelte"
|
import LogoutButton from "../Base/LogoutButton.svelte"
|
||||||
|
|
@ -17,8 +13,6 @@ import LanguageUtils from "../../Utils/LanguageUtils"
|
||||||
import LanguagePicker from "../InputElement/LanguagePicker.svelte"
|
import LanguagePicker from "../InputElement/LanguagePicker.svelte"
|
||||||
import PendingChangesIndicator from "../BigComponents/PendingChangesIndicator.svelte"
|
import PendingChangesIndicator from "../BigComponents/PendingChangesIndicator.svelte"
|
||||||
import { Utils } from "../../Utils"
|
import { Utils } from "../../Utils"
|
||||||
import { Feature } from "geojson"
|
|
||||||
import LayerConfig from "../../Models/ThemeConfig/LayerConfig"
|
|
||||||
import QrCode from "../Popup/QrCode.svelte"
|
import QrCode from "../Popup/QrCode.svelte"
|
||||||
import ClearGPSHistory from "../BigComponents/ClearGPSHistory.svelte"
|
import ClearGPSHistory from "../BigComponents/ClearGPSHistory.svelte"
|
||||||
import DisabledQuestions from "../Popup/DisabledQuestions.svelte"
|
import DisabledQuestions from "../Popup/DisabledQuestions.svelte"
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ import {
|
||||||
SpecialVisualizationSvelte,
|
SpecialVisualizationSvelte,
|
||||||
} from "../SpecialVisualization"
|
} from "../SpecialVisualization"
|
||||||
import { ImmutableStore, UIEventSource } from "../../Logic/UIEventSource"
|
import { ImmutableStore, UIEventSource } from "../../Logic/UIEventSource"
|
||||||
import { Feature } from "geojson"
|
|
||||||
import LayerConfig from "../../Models/ThemeConfig/LayerConfig"
|
import LayerConfig from "../../Models/ThemeConfig/LayerConfig"
|
||||||
import { Translation } from "../i18n/Translation"
|
import { Translation } from "../i18n/Translation"
|
||||||
import { VariableUiElement } from "../Base/VariableUIElement"
|
import { VariableUiElement } from "../Base/VariableUIElement"
|
||||||
|
|
|
||||||
|
|
@ -4,32 +4,23 @@
|
||||||
import Login from "../assets/svg/Login.svelte"
|
import Login from "../assets/svg/Login.svelte"
|
||||||
import Dropdown from "./Base/Dropdown.svelte"
|
import Dropdown from "./Base/Dropdown.svelte"
|
||||||
import { UIEventSource } from "../Logic/UIEventSource"
|
import { UIEventSource } from "../Logic/UIEventSource"
|
||||||
|
import StylesheetTestUnit from "./StylesheetTestUnit.svelte"
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<main>
|
<main class="w-full h-full p-4">
|
||||||
<div class="flex flex-col gap-y-2">
|
<div class="flex flex-col gap-y-2">
|
||||||
<h1>Stylesheet testing grounds</h1>
|
<h1>Stylesheet testing grounds</h1>
|
||||||
|
|
||||||
This document exists to explore the style hierarchy.
|
This document exists to explore the style hierarchy.
|
||||||
|
|
||||||
|
<div class="border-interactive m-2 p-2">
|
||||||
|
|
||||||
<h2>Normal background</h2>
|
<h2>Normal background</h2>
|
||||||
There are a few styles, such as the
|
There are a few styles, such as the
|
||||||
<span class="literal-code">normal-background</span>
|
<span class="literal-code">normal-background</span>
|
||||||
-style which is used if there is nothing special going on. Some general information, with at most
|
-style which is used if there is nothing special going on. Some general information, with at most
|
||||||
<a href="https://example.com" target="_blank">a link to someplace</a>
|
<StylesheetTestUnit/>
|
||||||
<div class="subtle">Subtle</div>
|
</div>
|
||||||
|
|
||||||
<div class="alert">Alert: something went wrong</div>
|
|
||||||
<div class="warning">Warning</div>
|
|
||||||
<div class="information">Some important information</div>
|
|
||||||
<div class="thanks">Thank you! Operation successful</div>
|
|
||||||
<Login class="h-12 w-12" />
|
|
||||||
<Loading>Loading...</Loading>
|
|
||||||
Dropdown:
|
|
||||||
<Dropdown cls="m-2" value={new UIEventSource(undefined)}>
|
|
||||||
<option value="a">Option A</option>
|
|
||||||
<option value="b">Option B</option>
|
|
||||||
</Dropdown>
|
|
||||||
|
|
||||||
<div class="low-interaction flex flex-col">
|
<div class="low-interaction flex flex-col">
|
||||||
<h2>Low interaction</h2>
|
<h2>Low interaction</h2>
|
||||||
|
|
@ -38,77 +29,9 @@
|
||||||
areas, where some buttons might appear.
|
areas, where some buttons might appear.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="border-interactive interactive">
|
|
||||||
Highly interactive area (mostly: active question)
|
|
||||||
</div>
|
|
||||||
<div class="subtle">Subtle</div>
|
|
||||||
|
|
||||||
Dropdown:
|
<StylesheetTestUnit/>
|
||||||
<Dropdown cls="m-2" value={new UIEventSource(undefined)}>
|
|
||||||
<option value="a">Option A</option>
|
|
||||||
<option value="b">Option B</option>
|
|
||||||
</Dropdown>
|
|
||||||
|
|
||||||
<div class="flex">
|
|
||||||
<button class="primary">
|
|
||||||
<Community class="h-6 w-6" />
|
|
||||||
Main action
|
|
||||||
</button>
|
|
||||||
<button class="primary disabled">
|
|
||||||
<Community class="h-6 w-6" />
|
|
||||||
Main action (disabled)
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<button class="small">
|
|
||||||
<Community class="h-6 w-6" />
|
|
||||||
Small button
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<button class="small primary">Small button</button>
|
|
||||||
<button class="small primary disabled">Small, disabled button</button>
|
|
||||||
</div>
|
|
||||||
<div class="flex">
|
|
||||||
<button>
|
|
||||||
<Community class="h-6 w-6" />
|
|
||||||
Secondary action
|
|
||||||
</button>
|
|
||||||
<button class="disabled">
|
|
||||||
<Community class="h-6 w-6" />
|
|
||||||
Secondary action (disabled)
|
|
||||||
</button>
|
|
||||||
<button class="as-link">Mimick link</button>
|
|
||||||
</div>
|
|
||||||
<input type="text" />
|
|
||||||
|
|
||||||
<div class="flex flex-col">
|
|
||||||
<label class="checked" for="html">
|
|
||||||
<input id="html" name="fav_language" type="radio" value="HTML" />
|
|
||||||
HTML (mimicks a
|
|
||||||
<span class="literal-code">checked</span>
|
|
||||||
-element)
|
|
||||||
<Dropdown value={new UIEventSource("abc")}>
|
|
||||||
<option>abc</option>
|
|
||||||
<option>def</option>
|
|
||||||
</Dropdown>
|
|
||||||
</label>
|
|
||||||
<label for="css">
|
|
||||||
<input id="css" name="fav_language" type="radio" value="CSS" />
|
|
||||||
CSS
|
|
||||||
</label>
|
|
||||||
<label for="javascript">
|
|
||||||
<input id="javascript" name="fav_language" type="radio" value="JavaScript" />
|
|
||||||
<Community class="h-8 w-8" />
|
|
||||||
JavaScript
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="alert">Alert: something went wrong</div>
|
|
||||||
<div class="warning">Warning</div>
|
|
||||||
<div class="information">Some important information</div>
|
|
||||||
<div class="thanks">Thank you! Operation successful</div>
|
|
||||||
|
|
||||||
<Login class="h-12 w-12" />
|
|
||||||
<Loading>Loading...</Loading>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="interactive flex flex-col">
|
<div class="interactive flex flex-col">
|
||||||
|
|
@ -117,64 +40,9 @@
|
||||||
There are <span class="literal-code">interactive</span>
|
There are <span class="literal-code">interactive</span>
|
||||||
areas, where many buttons and input elements will appear.
|
areas, where many buttons and input elements will appear.
|
||||||
</p>
|
</p>
|
||||||
<div class="subtle">Subtle</div>
|
|
||||||
|
|
||||||
<div class="flex">
|
<StylesheetTestUnit/>
|
||||||
<button class="primary">
|
|
||||||
<Community class="h-6 w-6" />
|
|
||||||
Main action
|
|
||||||
</button>
|
|
||||||
<button class="primary disabled">
|
|
||||||
<Community class="h-6 w-6" />
|
|
||||||
Main action (disabled)
|
|
||||||
</button>
|
|
||||||
<button class="small">
|
|
||||||
<Community class="h-6 w-6" />
|
|
||||||
Small button
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="flex">
|
|
||||||
<button>
|
|
||||||
<Community class="h-6 w-6" />
|
|
||||||
Secondary action
|
|
||||||
</button>
|
|
||||||
<button class="disabled">
|
|
||||||
<Community class="h-6 w-6" />
|
|
||||||
Secondary action (disabled)
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div class="alert">Alert: something went wrong</div>
|
|
||||||
<div class="warning">Warning</div>
|
|
||||||
<div class="information">Some important information</div>
|
|
||||||
<div class="thanks">Thank you! Operation successful</div>
|
|
||||||
|
|
||||||
<Login class="h-12 w-12" />
|
|
||||||
<Loading>Loading...</Loading>
|
|
||||||
<div>
|
|
||||||
<label for="html0">
|
|
||||||
<input id="html0" name="fav_language" type="radio" value="HTML" />
|
|
||||||
HTML
|
|
||||||
</label>
|
|
||||||
<label for="css0">
|
|
||||||
<input id="css0" name="fav_language" type="radio" value="CSS" />
|
|
||||||
CSS
|
|
||||||
</label>
|
|
||||||
<label for="javascript0">
|
|
||||||
<input id="javascript0" name="fav_language" type="radio" value="JavaScript" />
|
|
||||||
JavaScript
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="border-interactive">
|
|
||||||
Area with extreme high interactivity due to `border-interactive`
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<select>
|
|
||||||
<option value="A">A</option>
|
|
||||||
<option value="B">B</option>
|
|
||||||
<option value="C">C</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
|
|
||||||
76
src/UI/StylesheetTestUnit.svelte
Normal file
76
src/UI/StylesheetTestUnit.svelte
Normal file
|
|
@ -0,0 +1,76 @@
|
||||||
|
<script>
|
||||||
|
import Login from "../assets/svg/Login.svelte"
|
||||||
|
import Loading from "./Base/Loading.svelte"
|
||||||
|
import { Dropdown } from "flowbite-svelte"
|
||||||
|
import { UIEventSource } from "../Logic/UIEventSource"
|
||||||
|
import Community from "../assets/svg/Community.svelte"
|
||||||
|
</script> <a href="https://example.com" target="_blank">a link to someplace</a>
|
||||||
|
<div class="subtle">Subtle</div>
|
||||||
|
<div class="alert">Alert: something went wrong</div>
|
||||||
|
<div class="warning">Warning</div>
|
||||||
|
<div class="thanks">Thank you! Operation successful</div>
|
||||||
|
<div class="border-interactive interactive p-2">
|
||||||
|
Area with extreme high interactivity due to <div class="literal-code">border-interactive interactive</div>
|
||||||
|
</div>
|
||||||
|
<Login class="h-12 w-12" />
|
||||||
|
<Loading>Loading...</Loading>
|
||||||
|
Dropdown:
|
||||||
|
|
||||||
|
<select>
|
||||||
|
<option value="A">A</option>
|
||||||
|
<option value="B">B</option>
|
||||||
|
<option value="C">C</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<div class="flex">
|
||||||
|
<button class="primary">
|
||||||
|
<Community class="h-6 w-6" />
|
||||||
|
Main action
|
||||||
|
</button>
|
||||||
|
<button class="primary disabled">
|
||||||
|
<Community class="h-6 w-6" />
|
||||||
|
Main action (disabled)
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button class="small">
|
||||||
|
<Community class="h-6 w-6" />
|
||||||
|
Small button
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button class="small primary">Small button</button>
|
||||||
|
<button class="small primary disabled">Small, disabled button</button>
|
||||||
|
</div>
|
||||||
|
<div class="flex">
|
||||||
|
<button>
|
||||||
|
<Community class="h-6 w-6" />
|
||||||
|
Secondary action
|
||||||
|
</button>
|
||||||
|
<button class="disabled">
|
||||||
|
<Community class="h-6 w-6" />
|
||||||
|
Secondary action (disabled)
|
||||||
|
</button>
|
||||||
|
<button class="as-link">Mimick link</button>
|
||||||
|
</div>
|
||||||
|
<input type="text" />
|
||||||
|
|
||||||
|
<div class="flex flex-col">
|
||||||
|
<label class="checked" for="html">
|
||||||
|
<input id="html" name="fav_language" type="radio" value="HTML" />
|
||||||
|
HTML (mimicks a
|
||||||
|
<span class="literal-code">checked</span>
|
||||||
|
-element)
|
||||||
|
<Dropdown value={new UIEventSource("abc")}>
|
||||||
|
<option>abc</option>
|
||||||
|
<option>def</option>
|
||||||
|
</Dropdown>
|
||||||
|
</label>
|
||||||
|
<label for="css">
|
||||||
|
<input id="css" name="fav_language" type="radio" value="CSS" />
|
||||||
|
CSS
|
||||||
|
</label>
|
||||||
|
<label for="javascript" class="flex gap-x-2 items-center">
|
||||||
|
<input id="javascript" name="fav_language" type="radio" value="JavaScript" />
|
||||||
|
<Community class="h-8 w-8" />
|
||||||
|
JavaScript
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
@ -432,7 +432,9 @@
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<ExtraLinkButton {state} />
|
<ExtraLinkButton {state} />
|
||||||
<CompassWidget mapProperties={state.mapProperties} />
|
<div class="m-0.5 md:m-1">
|
||||||
|
<CompassWidget mapProperties={state.mapProperties} />
|
||||||
|
</div>
|
||||||
<UploadingImageCounter featureId="*" showThankYou={false} {state} />
|
<UploadingImageCounter featureId="*" showThankYou={false} {state} />
|
||||||
<PendingChangesIndicator {state} />
|
<PendingChangesIndicator {state} />
|
||||||
<If condition={state.featureSwitchIsTesting}>
|
<If condition={state.featureSwitchIsTesting}>
|
||||||
|
|
|
||||||
|
|
@ -32,27 +32,28 @@
|
||||||
--low-interaction-background: #eeeeee;
|
--low-interaction-background: #eeeeee;
|
||||||
--low-interaction-background-50: #eeeeee90;
|
--low-interaction-background-50: #eeeeee90;
|
||||||
--low-interaction-foreground: black;
|
--low-interaction-foreground: black;
|
||||||
--low-interaction-contrast: #ff00ff;
|
|
||||||
--low-interaction-border: #dcdcdc;
|
--low-interaction-border: #dcdcdc;
|
||||||
|
|
||||||
|
|
||||||
--interactive-background: #dddddd;
|
--interactive-background: #dddddd;
|
||||||
--interactive-foreground: black;
|
--interactive-foreground: black;
|
||||||
--interactive-contrast: #ff00ff;
|
--interactive-contrast: #cd1dcd;
|
||||||
--interaction-border: #bfbfbf;
|
--interaction-border: #bfbfbf;
|
||||||
|
|
||||||
|
|
||||||
--button-background: #282828;
|
--button-background-primary: #191919;
|
||||||
--button-background-hover: #484848;
|
--button-background-hover: #484848;
|
||||||
--button-primary-background-hover: #353535;
|
--button-primary-background-hover: rgba(48, 47, 47, 0.94);
|
||||||
|
|
||||||
--button-foreground: white;
|
--button-foreground: white;
|
||||||
--button-border-color: #F7F7F7;
|
--button-background: #fafafa;
|
||||||
|
--button-border: #B8B8B8;
|
||||||
--disabled: #B8B8B8;
|
--disabled: #B8B8B8;
|
||||||
--disabled-font: #B8B8B8;
|
--disabled-font: #B8B8B8;
|
||||||
|
|
||||||
--catch-detail-color: black; /*#3a3aeb;*/
|
--catch-detail-color: var(--background-color);
|
||||||
--catch-detail-foregroundcolor: white;
|
--catch-detail-foregroundcolor: var(--foreground-color);
|
||||||
--catch-detail-color-contrast: #fb3afb;
|
--catch-detail-color-contrast: var(--interactive-contrast);
|
||||||
|
|
||||||
--image-carousel-height: 350px;
|
--image-carousel-height: 350px;
|
||||||
|
|
||||||
|
|
@ -161,7 +162,7 @@ input[type="text"] {
|
||||||
}
|
}
|
||||||
|
|
||||||
.border-interactive {
|
.border-interactive {
|
||||||
border: 2px dashed var(--catch-detail-color-contrast);
|
border: 2px dashed var(--interactive-contrast);
|
||||||
border-radius: 0.5rem;
|
border-radius: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -198,16 +199,15 @@ button, .button {
|
||||||
padding: 0.25rem 1rem;
|
padding: 0.25rem 1rem;
|
||||||
margin: 0.25rem;
|
margin: 0.25rem;
|
||||||
|
|
||||||
background: var(--background-color);
|
background: var(--button-background);
|
||||||
border: 1px solid var(--button-background-hover);
|
border: 2px solid var(--button-border);
|
||||||
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
|
border-radius: 7px;
|
||||||
border-radius: 15px;
|
transition: background-color 200ms;
|
||||||
|
|
||||||
background: var(--background-color);
|
|
||||||
transition: all 200ms;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.low-interaction button{
|
||||||
|
background: var(--background-color);
|
||||||
|
}
|
||||||
|
|
||||||
.group > button {
|
.group > button {
|
||||||
padding-right: 1rem !important; /*Flowbite workaround */
|
padding-right: 1rem !important; /*Flowbite workaround */
|
||||||
|
|
@ -217,7 +217,13 @@ button.w-full {
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
button:hover:not(.disabled):not(.as-link), .button:hover:not(.disabled):not(.as-link) {
|
|
||||||
|
button.primary:hover:not(.disabled), .button.primary:hover:not(.disabled) {
|
||||||
|
background-color: var(--button-primary-background-hover);
|
||||||
|
border: 2px solid var(--interactive-contrast)
|
||||||
|
}
|
||||||
|
|
||||||
|
button:hover:not(.disabled):not(.as-link):not(.primary), .button:hover:not(.disabled):not(.as-link):not(.primary) {
|
||||||
background-color: var(--low-interaction-background);
|
background-color: var(--low-interaction-background);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -232,13 +238,10 @@ button:focus, .button:focus {
|
||||||
|
|
||||||
button.primary, .button.primary {
|
button.primary, .button.primary {
|
||||||
color: var(--button-foreground);
|
color: var(--button-foreground);
|
||||||
background-color: var(--button-background);
|
background-color: var(--button-background-primary);
|
||||||
border-color: var(--button-border-color);
|
border: 2px solid var(--button-background-primary)
|
||||||
}
|
}
|
||||||
|
|
||||||
button.primary:hover:not(.disabled), .button.primary:hover:not(.disabled) {
|
|
||||||
background-color: var(--button-primary-background-hover);
|
|
||||||
}
|
|
||||||
|
|
||||||
button.disabled {
|
button.disabled {
|
||||||
border-color: var(--disabled-font);
|
border-color: var(--disabled-font);
|
||||||
|
|
@ -293,7 +296,7 @@ button.unstyled, .button-unstyled button {
|
||||||
/******* Other input elements ******/
|
/******* Other input elements ******/
|
||||||
|
|
||||||
.hover-alert:hover {
|
.hover-alert:hover {
|
||||||
color: var(--catch-detail-color-contrast)
|
color: var(--interactive-contrast)
|
||||||
}
|
}
|
||||||
|
|
||||||
.links-w-full a:not(.weblate-link), .links-w-full button.as-link {
|
.links-w-full a:not(.weblate-link), .links-w-full button.as-link {
|
||||||
|
|
@ -317,7 +320,7 @@ select {
|
||||||
}
|
}
|
||||||
|
|
||||||
select:hover {
|
select:hover {
|
||||||
border-color: var(--catch-detail-color-contrast);
|
border-color: var(--interactive-contrast);
|
||||||
}
|
}
|
||||||
|
|
||||||
.neutral-label {
|
.neutral-label {
|
||||||
|
|
@ -420,17 +423,6 @@ h2.group {
|
||||||
background-color: var(--interactive-background);
|
background-color: var(--interactive-background);
|
||||||
}
|
}
|
||||||
|
|
||||||
.information {
|
|
||||||
/* The class to convey important information which does _not_ denote an error... */
|
|
||||||
background-color: var(--low-interaction-background);
|
|
||||||
color: var(--alert-foreground-color);
|
|
||||||
border-radius: 1em;
|
|
||||||
margin: 0.25em;
|
|
||||||
text-align: center;
|
|
||||||
padding: 0.15em 0.3em;
|
|
||||||
border: 3px dotted var(--catch-detail-color-contrast);
|
|
||||||
}
|
|
||||||
|
|
||||||
.low-interaction .interactive {
|
.low-interaction .interactive {
|
||||||
background-color: var(--interactive-background);
|
background-color: var(--interactive-background);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue