diff --git a/frontend/package.json b/frontend/package.json index da9ceec..e2b9a26 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -41,6 +41,7 @@ "dependencies": { "@lukulent/svelte-umami": "^0.0.3", "emoji-picker-element": "^1.26.0", + "marked": "^15.0.4", "qrcode": "^1.5.4", "svelte-i18n": "^4.0.1", "svelte-maplibre": "^0.9.8" diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 702ef84..221178b 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -14,6 +14,9 @@ importers: emoji-picker-element: specifier: ^1.26.0 version: 1.26.0 + marked: + specifier: ^15.0.4 + version: 15.0.4 qrcode: specifier: ^1.5.4 version: 1.5.4 @@ -1351,6 +1354,11 @@ packages: resolution: {integrity: sha512-qOS1hn4d/pn2i0uva4S5Oz+fACzTkgBKq+NpwT/Tqzi4MSyzcWNtDELzLUSgWqHfNIkGCl5CZ/w7dtis+t4RCw==} engines: {node: '>=16.14.0', npm: '>=8.1.0'} + marked@15.0.4: + resolution: {integrity: sha512-TCHvDqmb3ZJ4PWG7VEGVgtefA5/euFmsIhxtD0XsBxI39gUSKL81mIRFdt0AiNQozUahd4ke98ZdirExd/vSEw==} + engines: {node: '>= 18'} + hasBin: true + mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} @@ -3318,6 +3326,8 @@ snapshots: tinyqueue: 2.0.3 vt-pbf: 3.1.3 + marked@15.0.4: {} + mdn-data@2.0.30: {} memoizee@0.4.17: diff --git a/frontend/src/lib/components/AdventureModal.svelte b/frontend/src/lib/components/AdventureModal.svelte index c0dc277..88e3d0c 100644 --- a/frontend/src/lib/components/AdventureModal.svelte +++ b/frontend/src/lib/components/AdventureModal.svelte @@ -32,6 +32,7 @@ import { appVersion } from '$lib/config'; import CategoryDropdown from './CategoryDropdown.svelte'; import { findFirstValue } from '$lib'; + import MarkdownEditor from './MarkdownEditor.svelte'; let wikiError: string = ''; @@ -577,15 +578,10 @@

- +
-
diff --git a/frontend/src/lib/components/MarkdownEditor.svelte b/frontend/src/lib/components/MarkdownEditor.svelte new file mode 100644 index 0000000..6ed5914 --- /dev/null +++ b/frontend/src/lib/components/MarkdownEditor.svelte @@ -0,0 +1,80 @@ + + +
+ + +
+ +
+ + {#if !is_preview} + + {/if} + + + {#if is_preview} +
+ {@html renderMarkdown(text || '')} +
+ {/if} +
+ + diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index 25e2b41..0cb54b1 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -195,7 +195,9 @@ "emoji_picker": "Emoji-Picker", "hide": "Verstecken", "show": "Zeigen", - "download_calendar": "Kalender herunterladen" + "download_calendar": "Kalender herunterladen", + "md_instructions": "Schreiben Sie hier Ihren Abschlag...", + "preview": "Vorschau" }, "home": { "desc_1": "Entdecken, planen und erkunden Sie mit Leichtigkeit", diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json index cd9b824..54dc04f 100644 --- a/frontend/src/locales/en.json +++ b/frontend/src/locales/en.json @@ -218,6 +218,8 @@ "hide": "Hide", "emoji_picker": "Emoji Picker", "download_calendar": "Download Calendar", + "preview": "Preview", + "md_instructions": "Write your markdown here...", "days": "days", "activities": { "general": "General 🌍", diff --git a/frontend/src/locales/es.json b/frontend/src/locales/es.json index 42da49e..164351f 100644 --- a/frontend/src/locales/es.json +++ b/frontend/src/locales/es.json @@ -242,7 +242,9 @@ "emoji_picker": "Selector de emojis", "hide": "Esconder", "show": "Espectáculo", - "download_calendar": "Descargar Calendario" + "download_calendar": "Descargar Calendario", + "md_instructions": "Escriba su descuento aquí...", + "preview": "Avance" }, "worldtravel": { "all": "Todo", diff --git a/frontend/src/locales/fr.json b/frontend/src/locales/fr.json index 9a532de..af1583a 100644 --- a/frontend/src/locales/fr.json +++ b/frontend/src/locales/fr.json @@ -195,7 +195,9 @@ "emoji_picker": "Sélecteur d'émoticônes", "hide": "Cacher", "show": "Montrer", - "download_calendar": "Télécharger le calendrier" + "download_calendar": "Télécharger le calendrier", + "md_instructions": "Écrivez votre démarque ici...", + "preview": "Aperçu" }, "home": { "desc_1": "Découvrez, planifiez et explorez en toute simplicité", diff --git a/frontend/src/locales/it.json b/frontend/src/locales/it.json index fa0b1fb..605a57d 100644 --- a/frontend/src/locales/it.json +++ b/frontend/src/locales/it.json @@ -195,7 +195,9 @@ "emoji_picker": "Selettore di emoji", "hide": "Nascondere", "show": "Spettacolo", - "download_calendar": "Scarica Calendario" + "download_calendar": "Scarica Calendario", + "md_instructions": "Scrivi qui il tuo ribasso...", + "preview": "Anteprima" }, "home": { "desc_1": "Scopri, pianifica ed esplora con facilità", diff --git a/frontend/src/locales/nl.json b/frontend/src/locales/nl.json index 90ac331..8cc4780 100644 --- a/frontend/src/locales/nl.json +++ b/frontend/src/locales/nl.json @@ -195,7 +195,9 @@ "emoji_picker": "Emoji-kiezer", "hide": "Verbergen", "show": "Show", - "download_calendar": "Agenda downloaden" + "download_calendar": "Agenda downloaden", + "md_instructions": "Schrijf hier uw korting...", + "preview": "Voorbeeld" }, "home": { "desc_1": "Ontdek, plan en verken met gemak", diff --git a/frontend/src/locales/pl.json b/frontend/src/locales/pl.json index db3e758..bdab4b2 100644 --- a/frontend/src/locales/pl.json +++ b/frontend/src/locales/pl.json @@ -242,7 +242,9 @@ "emoji_picker": "Wybór emoji", "hide": "Ukrywać", "show": "Pokazywać", - "download_calendar": "Pobierz Kalendarz" + "download_calendar": "Pobierz Kalendarz", + "md_instructions": "Napisz tutaj swoją przecenę...", + "preview": "Zapowiedź" }, "worldtravel": { "country_list": "Lista krajów", diff --git a/frontend/src/locales/sv.json b/frontend/src/locales/sv.json index aae55d5..1059469 100644 --- a/frontend/src/locales/sv.json +++ b/frontend/src/locales/sv.json @@ -195,7 +195,9 @@ "emoji_picker": "Emoji-väljare", "hide": "Dölja", "show": "Visa", - "download_calendar": "Ladda ner kalender" + "download_calendar": "Ladda ner kalender", + "md_instructions": "Skriv din avskrivning här...", + "preview": "Förhandsvisning" }, "home": { "desc_1": "Upptäck, planera och utforska med lätthet", diff --git a/frontend/src/locales/zh.json b/frontend/src/locales/zh.json index 56cf01f..cc3735a 100644 --- a/frontend/src/locales/zh.json +++ b/frontend/src/locales/zh.json @@ -195,7 +195,9 @@ "emoji_picker": "表情符号选择器", "hide": "隐藏", "show": "展示", - "download_calendar": "下载日历" + "download_calendar": "下载日历", + "md_instructions": "在这里写下你的标记...", + "preview": "预览" }, "home": { "desc_1": "轻松发现、规划和探索", diff --git a/frontend/src/routes/adventures/[id]/+page.svelte b/frontend/src/routes/adventures/[id]/+page.svelte index 9e357ea..d78ac54 100644 --- a/frontend/src/routes/adventures/[id]/+page.svelte +++ b/frontend/src/routes/adventures/[id]/+page.svelte @@ -6,6 +6,11 @@ import Lost from '$lib/assets/undraw_lost.svg'; import { DefaultMarker, MapLibre, Popup } from 'svelte-maplibre'; import { t } from 'svelte-i18n'; + import { marked } from 'marked'; // Import the markdown parser + + const renderMarkdown = (markdown: string) => { + return marked(markdown); + }; export let data: PageData; console.log(data); @@ -244,11 +249,12 @@ {/if}
{#if adventure.description} -
-

- {adventure.description} -

-
+

+
+ {@html renderMarkdown(adventure.description)} +
{/if}