forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			50 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Svelte
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Svelte
		
	
	
	
	
	
| <script lang="ts">
 | |
|   // A contact link indicates how a mapper can contact their local community
 | |
|   // The _properties_ of a community feature
 | |
|   import Locale from "../i18n/Locale.js"
 | |
|   import Translations from "../i18n/Translations"
 | |
|   import ToSvelte from "../Base/ToSvelte.svelte"
 | |
|   import * as native from "../../assets/language_native.json"
 | |
|   import { TypedTranslation } from "../i18n/Translation"
 | |
| 
 | |
|   const availableTranslationTyped: TypedTranslation<{ native: string }> =
 | |
|     Translations.t.communityIndex.available
 | |
|   const availableTranslation = availableTranslationTyped.OnEveryLanguage((s, ln) =>
 | |
|     s.replace("{native}", native[ln] ?? ln)
 | |
|   )
 | |
|   export let country: { resources; nameEn: string }
 | |
|   let resources: {
 | |
|     id: string
 | |
|     resolved: Record<string, string>
 | |
|     languageCodes: string[]
 | |
|     type: string
 | |
|   }[] = []
 | |
|   $: resources = Array.from(Object.values(country?.resources ?? {}))
 | |
| 
 | |
|   const language = Locale.language
 | |
| </script>
 | |
| 
 | |
| <div>
 | |
|   {#if country?.nameEn}
 | |
|     <h3>{country?.nameEn}</h3>
 | |
|   {/if}
 | |
|   {#each resources as resource}
 | |
|     <div class="flex link-underline items-center my-4">
 | |
|       <img
 | |
|         class="w-8 h-8 m-2"
 | |
|         src={`https://raw.githubusercontent.com/pietervdvn/MapComplete-data/main/community_index/${resource.type}.svg`}
 | |
|       />
 | |
|       <div class="flex flex-col">
 | |
|         <a href={resource.resolved.url} target="_blank" rel="noreferrer nofollow" class="font-bold">
 | |
|           {resource.resolved.name ?? resource.resolved.url}
 | |
|         </a>
 | |
|         {resource.resolved?.description}
 | |
|         {#if resource.languageCodes?.indexOf($language) >= 0}
 | |
|           <span class="border-2 rounded-full border-lime-500 text-sm w-fit px-2">
 | |
|             <ToSvelte construct={() => availableTranslation.Clone()} />
 | |
|           </span>
 | |
|         {/if}
 | |
|       </div>
 | |
|     </div>
 | |
|   {/each}
 | |
| </div>
 |