diff --git a/src/components/story.svelte b/src/components/story.svelte index 7ffc5bb..0811bda 100644 --- a/src/components/story.svelte +++ b/src/components/story.svelte @@ -1,208 +1,100 @@ <script> - const stories = [ - { title: "The dinosaur family", description: "Long ago there was a family of dinosaurs that lived in a deserted place The little dinosaur is making a new friend" ,playtime: "1 min, 3 sec"}, - { title: "Six o’clock", description: " A group of friends try to take over the playground. Jesper and Wylan want to take over the swings, but one person stands in their way.", playtime: "3 min, 4 sec"}, - { title: "Toys on the Orient Express", description: "A child looses his toy during a train ride. He is determined to find it back.", playtime: "2 min, 1 sec"} - ]; -</script> - -{#each stories as {title, description, playtime}} -<article class="story-content"> - <img src="/Frame 103.svg" class="schildpad" alt="schilpad" /> - - <div class="tekst"> - <p class="title">{title}</p> - <p class="description">{description}</p> - </div> - - <img src="/Rectangle 135.svg" class="vlag-icon" alt="engelse-vlag" /> - - <div class="iconen-onder"> - <img src="/Group 316 (1).svg" class="links-onder" alt="playbutton-blue" /> - <p class="time">{playtime}</p> - - <div class="rechts-onder"> - <img src="/Frame 64.svg" class="download-icon" alt="download-icon" /> - <img src="/Group 4.svg" class="add-icon" alt="add-icon" /> - </div> - </div> -</article> + export let story; + // SELECT THE FIRST AUDIO FILE, EX: NO SPEAKER PROFILE SELECTED + const firstAudio = story.audios?.[0]?.file || null; +</script> -<article class="story-content"> - <img src="/Frame 104.svg" class="schildpad" alt="pinguin" /> - - <div class="tekst"> - <p class="title">Six o’clock</p> - <p class="description"> - A group of friends try to take over the playground. Jesper and - Wylan want to take over the swings, but one person stands in - their way. - </p> +<li class="story-container"> + <div class="story-image flex-items"> + <img src="{story.image}" alt=""> </div> - - <img - src="/Rectangle 135.svg" - class="vlag-icon" - alt="engelse-vlag" - /> - - <div class="iconen-onder"> - <img - src="/Group 316 (1).svg" - class="links-onder" - alt="playbutton-blue" - /> - <p class="time">3 min. 5 sec</p> - - <div class="rechts-onder"> - <img - src="/Frame 64.svg" - class="download-icon" - alt="download-icon" - /> - <img src="/Group 4.svg" class="add-icon" alt="add-icon" /> - </div> + <h3 class="story-title">{story.title}</h3> + <div class="story-language flex-items"> + <img src="/languages/{story.language}.svg" alt="{story.language} flag"> </div> - </article> - - <article class="story-content"> - <img src="/Frame 105.svg" class="schildpad" alt="bomen" /> - - <div class="tekst"> - <p class="title">Toys on the Orient Express</p> - <p class="description"> - A child looses his toy during a train ride. He is determined to - find it back. - </p> + <p class="story-summary">{story.summary}</p> + <div class="story-playtime flex-items"> + <a href={firstAudio} target="_blank"><img src="/icons/story-playtime.svg" alt="Icon for playtime"></a> + <p>{story.playtime}</p> </div> - - <img - src="/Rectangle 135.svg" - class="vlag-icon" - alt="engelse-vlag" - /> - - <div class="iconen-onder"> - <img - src="/Group 316 (1).svg" - class="links-onder" - alt="playbutton-blue" - /> - <p class="time">3 min. 5 sec</p> - - <div class="rechts-onder"> - <img - src="/Frame 64.svg" - class="download-icon" - alt="download-icon" - /> - <img src="/Group 4.svg" class="add-icon" alt="add-icon" /> - </div> + <div class="story-icons flex-items"> + <img src="/icons/download-icon.svg" alt="Icon for download"> + <img src="/icons/add-to-playlist.svg" alt="Icon for adding to playlist"> </div> - </article> - -{/each} +</li> <style> - :root { - --card-bg-color: #f3f3f3; - } - - p { - font-size: var(--card-time-font-size); - line-height: 12px; - text-align: left; - } - - article.story-content { - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - width: 300px; - max-width: 800px; - height: 65px; - background-color: var(--card-bg-color); - padding: 20px; - position: relative; - margin: 5px; - border-radius: 10px; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); - margin-left: 155px; - } - - - .title { - font-weight: 600; - font-size: 12px; - line-height: 15px; - margin-bottom: 5px; - margin-top: 5px; - } - - .description { - margin-bottom: 35px; - line-height: 12px; - width: 220px; - text-overflow: ellipsis; - overflow: hidden; - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; - white-space: normal; - font-size: 10px; - } - - .time { - margin-top: 10px; - margin-right: 129px; - } - - .tekst { - flex-grow: 1; - font-size: 8px; - padding: 0; - } - - img.schildpad { - object-fit: cover; - width: 70px; - height: 75px; - border-radius: 8px; - margin-bottom: 5px; - margin-right: 2px; - margin-left: 0; - transform: translateX(-8px); - } - - .vlag-icon { - position: absolute; - top: 11px; - right: 10px; - } - - .iconen-onder { - position: absolute; - margin-right: 10px; - margin-bottom: 5px; - margin-top: 10px; - bottom: 5px; - left: 0; - right: 0; - display: flex; - justify-content: space-between; - } - - .links-onder { - margin-left: 93px; - } - - .rechts-onder { - display: flex; - align-items: center; - gap: 5px; - margin-top: 2px; - } - -</style> --> + li { + width: 22.5em; + max-height: 5.3em; + display: grid; + grid-template-columns: repeat(6, auto); + grid-template-rows: repeat(3, 1fr); + background-color: #fff; + overflow: hidden; + padding: 10px; + border-radius: 4px; + color: black; + } + + .story-title { + font-size: 10px; + font-weight: 600; + grid-area: 1 / 3 / 2 / 6; + } + + p { + font-size: 8px; + } + + img { + max-width: 1.1em; + } + + .story-image { + grid-area: 1 / 1 / 4 / 2; + } + + .story-image img{ + max-width: 3.75em; + min-height: 4em; + object-fit: cover; + } + + .story-language { + grid-area: 1 / 6 / 2 / 7; + justify-content: flex-end; + } + + .story-summary { + grid-area: 2 / 3 / 3 / 7; + width: 275px; + max-height: 1.5em; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + line-clamp: 2; + overflow: hidden; + } + + .story-playtime { + grid-area: 3 / 3 / 4 / 6; + } + + .story-playtime a { + display: flex; + align-items: center; + } + + .story-icons { + grid-area: 3 / 6 / 4 / 7; + justify-content: flex-end; + } + + .flex-items { + display: flex; + align-items: center; + gap: 8px; + } +</style> \ No newline at end of file diff --git a/src/lib/api.js b/src/lib/api.js new file mode 100644 index 0000000..fa2f7c0 --- /dev/null +++ b/src/lib/api.js @@ -0,0 +1,93 @@ +import getDirectusInstance from '$lib/directus'; +import { readItems } from '@directus/sdk'; + +// Helper function to fetch data for a specific collection +export async function fetchCollection(fetch, collectionName) { + const directus = getDirectusInstance(fetch); + return await directus.request(readItems(collectionName)); +} + +// Helper function to fetch all required data +export async function fetchAllData(fetch) { + const directus = getDirectusInstance(fetch); + + // Fetch all required data in parallel + const [ + accounts, + profiles, + profileStatistics, + buddys, + languages, + audios, + playlists, + speakers, + stories, + likes + ] = await Promise.all([ + fetchCollection(fetch, 'tm_users'), + fetchCollection(fetch, 'tm_profile'), + fetchCollection(fetch, 'tm_profile_statistics'), + fetchCollection(fetch, 'tm_buddy'), + fetchCollection(fetch, 'tm_language'), + fetchCollection(fetch, 'tm_audio'), + fetchCollection(fetch, 'tm_playlist'), + fetchCollection(fetch, 'tm_speaker_profile'), + fetchCollection(fetch, 'tm_story'), + fetchCollection(fetch, 'tm_likes') + ]); + + return { + accounts, + profiles, + profileStatistics, + buddys, + languages, + audios, + playlists, + speakers, + stories, + likes + }; +} + +// Helper function to convert seconds to "min sec" format +function formatPlaytime(seconds) { + const minutes = Math.floor(seconds / 60); // Calculate minutes + const remainingSeconds = seconds % 60; // Calculate remaining seconds + return `${minutes} min ${remainingSeconds} sec`; +} + +// Helper function to enrich stories with audio and language details +export function mapStoriesWithDetails(stories, audios, languages) { + const assetBaseUrl = "https://fdnd-agency.directus.app/assets/"; + + return stories.map((story) => { + const language = languages.find((lang) => lang.id === story.language)?.language || "unknown.svg"; + const storyAudios = story.audio.map((audioId) => { + const audioData = audios.find((audio) => audio.id === audioId); + if (audioData) { + + return { + id: audioData.id, + file: `${assetBaseUrl}${audioData.audio_file}`, + voice_colours: audioData.voice_colours, + speaker_profile: audioData.speaker_profile + }; + } + return null; + }).filter(Boolean); + + story.image = story.image ? `${assetBaseUrl}${story.image}` : "unknown.svg"; + + if (story.playtime) { + story.playtime = formatPlaytime(story.playtime); + } + + story.language = language; + + return { + ...story, + audios: storyAudios + }; + }); +} diff --git a/src/routes/+page.js b/src/routes/+page.js index 0577ff0..16b9cd4 100644 --- a/src/routes/+page.js +++ b/src/routes/+page.js @@ -1,67 +1,16 @@ /** @type {import('./$types').PageLoad} */ export let csr = true; -import getDirectusInstance from '$lib/directus'; -import { readItems } from '@directus/sdk'; +import { fetchAllData, mapStoriesWithDetails } from '$lib/api'; export async function load({ fetch }) { - const directus = getDirectusInstance(fetch); + const data = await fetchAllData(fetch); - // Fetch all required data - const accounts = await directus.request(readItems('tm_users')); - const profiles = await directus.request(readItems('tm_profile')); - const profileStatistics = await directus.request(readItems('tm_profile_statistics')); - const buddys = await directus.request(readItems('tm_buddy')); - const languages = await directus.request(readItems('tm_language')); - const audios = await directus.request(readItems('tm_audio')); - const playlists = await directus.request(readItems('tm_playlist')); - const speakers = await directus.request(readItems('tm_speaker_profile')); - const stories = await directus.request(readItems('tm_story')); - const likes = await directus.request(readItems('tm_likes')); - - // Base URL for audio assets - const assetBaseUrl = "https://fdnd-agency.directus.app/assets/"; - - // Map stories to their corresponding audio files and languages - const storiesWithDetails = stories.map((story) => { - // Map audios to include audio file URL and language - const storyAudios = story.audio.map((audioId) => { - const audioData = audios.find((audio) => audio.id === audioId); - if (audioData) { - // Find the language name based on language_id - const language = languages.find((lang) => lang.id === audioData.languague_id)?.language || "Unknown"; - - return { - id: audioData.id, - file: `${assetBaseUrl}${audioData.audio_file}`, // Full audio URL - voice_colours: audioData.voice_colours, - language_id: audioData.languague_id, - language, // Include the language name - speaker_profile: audioData.speaker_profile - }; - } - return null; - }).filter(Boolean); // Remove null values for unmatched audio IDs - - // Extract unique languages for the story based on its audios - const storyLanguages = [...new Set(storyAudios.map((audio) => audio.language))]; - - return { - ...story, - audios: storyAudios, - languages: storyLanguages // List of unique languages for this story - }; - }); + // Enrich stories with details + const storiesWithDetails = mapStoriesWithDetails(data.stories, data.audios, data.languages); return { - accounts, - profiles, - profile_statistics: profileStatistics, - buddys, - languages, - playlists, - speakers, - likes, + ...data, stories: storiesWithDetails // Stories now include corresponding audios and languages }; } diff --git a/src/routes/playground/+page.svelte b/src/routes/playground/+page.svelte new file mode 100644 index 0000000..edaa565 --- /dev/null +++ b/src/routes/playground/+page.svelte @@ -0,0 +1,13 @@ +<script> + import Story from '../../components/story.svelte'; + +</script> +<section> + <Story /> +</section> + +<style> + section{ + background-color: purple; + } +</style> \ No newline at end of file diff --git a/src/routes/stories/+page.js b/src/routes/stories/+page.js new file mode 100644 index 0000000..16b9cd4 --- /dev/null +++ b/src/routes/stories/+page.js @@ -0,0 +1,16 @@ +/** @type {import('./$types').PageLoad} */ +export let csr = true; + +import { fetchAllData, mapStoriesWithDetails } from '$lib/api'; + +export async function load({ fetch }) { + const data = await fetchAllData(fetch); + + // Enrich stories with details + const storiesWithDetails = mapStoriesWithDetails(data.stories, data.audios, data.languages); + + return { + ...data, + stories: storiesWithDetails // Stories now include corresponding audios and languages + }; +} diff --git a/src/routes/stories/+page.svelte b/src/routes/stories/+page.svelte new file mode 100644 index 0000000..bb0b48e --- /dev/null +++ b/src/routes/stories/+page.svelte @@ -0,0 +1,36 @@ +<script> + import Story from '../../components/story.svelte'; + + /** @type {import('./$types').PageData} */ + export let data; +</script> + +<section> + <h2>Stories</h2> + <ul> + {#each data.stories as story} + <Story {story} /> + {/each} + </ul> +</section> + +<style> + section { + background-color: purple; + padding: 20px; + color: white; + } + + ul { + list-style: none; + padding: 0; + display: flex; + flex-wrap: wrap; + gap: 16px; + } + + h2 { + font-size: 24px; + margin-bottom: 16px; + } +</style> diff --git a/static/icons/add-to-playlist.svg b/static/icons/add-to-playlist.svg new file mode 100644 index 0000000..68f3f76 --- /dev/null +++ b/static/icons/add-to-playlist.svg @@ -0,0 +1,5 @@ +<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"> +<circle cx="6" cy="6" r="5.5" stroke="#B0B0B0"/> +<rect x="3" y="5.57141" width="6" height="0.857143" rx="0.428571" fill="#B0B0B0"/> +<rect x="6.42871" y="3" width="6" height="0.857143" rx="0.428571" transform="rotate(90 6.42871 3)" fill="#B0B0B0"/> +</svg> diff --git a/static/icons/download-icon.svg b/static/icons/download-icon.svg new file mode 100644 index 0000000..d9e9314 --- /dev/null +++ b/static/icons/download-icon.svg @@ -0,0 +1,5 @@ +<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M10.6875 11.1094H12.6914C14.1416 11.1094 15.3281 10.5501 15.3281 9.11602C15.3281 7.6819 13.9307 7.17882 12.7969 7.12266C12.5625 4.87986 10.9248 3.51562 9 3.51562C7.18066 3.51562 6.00891 4.72298 5.625 5.92031C4.04297 6.07061 2.67188 6.86637 2.67188 8.51484C2.67188 10.1633 4.0957 11.1094 5.83594 11.1094H7.3125" stroke="#B0B0B0" stroke-width="0.84375" stroke-linecap="round" stroke-linejoin="round"/> +<path d="M7.3125 12.7995L9 14.4843L10.6875 12.7995" stroke="#B0B0B0" stroke-width="0.84375" stroke-linecap="round" stroke-linejoin="round"/> +<path d="M9 8.15625V14.0633" stroke="#B0B0B0" stroke-width="0.84375" stroke-linecap="round" stroke-linejoin="round"/> +</svg> diff --git a/static/icons/story-playtime.svg b/static/icons/story-playtime.svg new file mode 100644 index 0000000..56408e8 --- /dev/null +++ b/static/icons/story-playtime.svg @@ -0,0 +1,4 @@ +<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg"> +<circle cx="9" cy="9" r="9" fill="#3A54DE"/> +<path d="M12.8159 9.79599C13.3367 9.39307 13.3367 8.6069 12.8159 8.20397C11.2422 6.98629 9.48494 6.02651 7.60988 5.36056L7.26734 5.2389C6.61199 5.00614 5.91977 5.44954 5.83105 6.12603C5.58317 8.01614 5.58317 9.98383 5.83105 11.8739C5.91977 12.5504 6.61199 12.9938 7.26733 12.7611L7.60988 12.6394C9.48494 11.9735 11.2422 11.0137 12.8159 9.79599Z" fill="white"/> +</svg> diff --git a/static/languages/Dutch.svg b/static/languages/Dutch.svg new file mode 100644 index 0000000..c7c0152 --- /dev/null +++ b/static/languages/Dutch.svg @@ -0,0 +1,25 @@ +<svg width="57" height="44" viewBox="0 0 57 44" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g filter="url(#filter0_d_1_6135)"> +<g clip-path="url(#clip0_1_6135)"> +<rect x="4" y="4" width="60" height="38" rx="8" fill="white"/> +<rect x="2" y="40" width="12" height="54" transform="rotate(-90 2 40)" fill="#286FA5"/> +<rect x="2" y="28" width="12" height="54" transform="rotate(-90 2 28)" fill="white"/> +<rect x="2" y="16" width="12" height="54" transform="rotate(-90 2 16)" fill="#C8102E"/> +</g> +</g> +<defs> +<filter id="filter0_d_1_6135" x="0" y="0" width="57" height="44" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> +<feFlood flood-opacity="0" result="BackgroundImageFix"/> +<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/> +<feOffset/> +<feGaussianBlur stdDeviation="2"/> +<feComposite in2="hardAlpha" operator="out"/> +<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0"/> +<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_1_6135"/> +<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_1_6135" result="shape"/> +</filter> +<clipPath id="clip0_1_6135"> +<rect x="4" y="4" width="49" height="36" rx="8" fill="white"/> +</clipPath> +</defs> +</svg> diff --git a/static/languages/English.svg b/static/languages/English.svg new file mode 100644 index 0000000..1a6a3c3 --- /dev/null +++ b/static/languages/English.svg @@ -0,0 +1,27 @@ +<svg width="57" height="44" viewBox="0 0 57 44" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g filter="url(#filter0_d_1_6091)"> +<g clip-path="url(#clip0_1_6091)"> +<rect x="4" y="4" width="60" height="38" rx="8" fill="white"/> +<rect x="-6" y="4" width="69.3594" height="36" fill="url(#pattern0_1_6091)"/> +</g> +</g> +<defs> +<filter id="filter0_d_1_6091" x="0" y="0" width="57" height="44" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> +<feFlood flood-opacity="0" result="BackgroundImageFix"/> +<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/> +<feOffset/> +<feGaussianBlur stdDeviation="2"/> +<feComposite in2="hardAlpha" operator="out"/> +<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0"/> +<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_1_6091"/> +<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_1_6091" result="shape"/> +</filter> +<pattern id="pattern0_1_6091" patternContentUnits="objectBoundingBox" width="1" height="1"> +<use xlink:href="#image0_1_6091" transform="matrix(0.00405497 0 0 0.0078125 -0.0170083 0)"/> +</pattern> +<clipPath id="clip0_1_6091"> +<rect x="4" y="4" width="49" height="36" rx="8" fill="white"/> +</clipPath> +<image id="image0_1_6091" width="255" height="128" xlink:href="data:image/png;base64,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"/> +</defs> +</svg> diff --git a/static/languages/French.svg b/static/languages/French.svg new file mode 100644 index 0000000..6feb46c --- /dev/null +++ b/static/languages/French.svg @@ -0,0 +1,25 @@ +<svg width="57" height="44" viewBox="0 0 57 44" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g filter="url(#filter0_d_1_6111)"> +<g clip-path="url(#clip0_1_6111)"> +<rect x="4" y="4" width="60" height="38" rx="8" fill="white"/> +<rect x="4" y="1" width="16" height="45" fill="#48A4EB"/> +<rect x="20" y="1" width="17" height="45" fill="#ECECEC"/> +<rect x="37" y="1" width="16" height="45" fill="#E74E4B"/> +</g> +</g> +<defs> +<filter id="filter0_d_1_6111" x="0" y="0" width="57" height="44" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> +<feFlood flood-opacity="0" result="BackgroundImageFix"/> +<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/> +<feOffset/> +<feGaussianBlur stdDeviation="2"/> +<feComposite in2="hardAlpha" operator="out"/> +<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0"/> +<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_1_6111"/> +<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_1_6111" result="shape"/> +</filter> +<clipPath id="clip0_1_6111"> +<rect x="4" y="4" width="49" height="36" rx="8" fill="white"/> +</clipPath> +</defs> +</svg> diff --git a/static/languages/German.svg b/static/languages/German.svg new file mode 100644 index 0000000..770d549 --- /dev/null +++ b/static/languages/German.svg @@ -0,0 +1,25 @@ +<svg width="57" height="44" viewBox="0 0 57 44" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g filter="url(#filter0_d_1_6119)"> +<g clip-path="url(#clip0_1_6119)"> +<rect x="4" y="4" width="60" height="38" rx="8" fill="white"/> +<rect x="2" y="40" width="12" height="54" transform="rotate(-90 2 40)" fill="#F6C349"/> +<rect x="2" y="28" width="12" height="54" transform="rotate(-90 2 28)" fill="#E74E4B"/> +<rect x="2" y="16" width="12" height="54" transform="rotate(-90 2 16)" fill="#414141"/> +</g> +</g> +<defs> +<filter id="filter0_d_1_6119" x="0" y="0" width="57" height="44" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> +<feFlood flood-opacity="0" result="BackgroundImageFix"/> +<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/> +<feOffset/> +<feGaussianBlur stdDeviation="2"/> +<feComposite in2="hardAlpha" operator="out"/> +<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0"/> +<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_1_6119"/> +<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_1_6119" result="shape"/> +</filter> +<clipPath id="clip0_1_6119"> +<rect x="4" y="4" width="49" height="36" rx="8" fill="white"/> +</clipPath> +</defs> +</svg> diff --git a/static/languages/Italian.svg b/static/languages/Italian.svg new file mode 100644 index 0000000..3e67499 --- /dev/null +++ b/static/languages/Italian.svg @@ -0,0 +1,25 @@ +<svg width="57" height="44" viewBox="0 0 57 44" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g filter="url(#filter0_d_1_6127)"> +<g clip-path="url(#clip0_1_6127)"> +<rect x="4" y="4" width="60" height="38" rx="8" fill="white"/> +<rect x="4" y="1" width="16" height="45" fill="#80BE41"/> +<rect x="20" y="1" width="17" height="45" fill="#ECECEC"/> +<rect x="37" y="1" width="16" height="45" fill="#E74E4B"/> +</g> +</g> +<defs> +<filter id="filter0_d_1_6127" x="0" y="0" width="57" height="44" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> +<feFlood flood-opacity="0" result="BackgroundImageFix"/> +<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/> +<feOffset/> +<feGaussianBlur stdDeviation="2"/> +<feComposite in2="hardAlpha" operator="out"/> +<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0"/> +<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_1_6127"/> +<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_1_6127" result="shape"/> +</filter> +<clipPath id="clip0_1_6127"> +<rect x="4" y="4" width="49" height="36" rx="8" fill="white"/> +</clipPath> +</defs> +</svg> diff --git a/static/languages/Japanese.svg b/static/languages/Japanese.svg new file mode 100644 index 0000000..1e07e6e --- /dev/null +++ b/static/languages/Japanese.svg @@ -0,0 +1,23 @@ +<svg width="57" height="44" viewBox="0 0 57 44" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g filter="url(#filter0_d_1_6105)"> +<g clip-path="url(#clip0_1_6105)"> +<rect x="4" y="4" width="60" height="38" rx="8" fill="white"/> +<circle cx="29" cy="22" r="10" fill="#E74E4B"/> +</g> +</g> +<defs> +<filter id="filter0_d_1_6105" x="0" y="0" width="57" height="44" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> +<feFlood flood-opacity="0" result="BackgroundImageFix"/> +<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/> +<feOffset/> +<feGaussianBlur stdDeviation="2"/> +<feComposite in2="hardAlpha" operator="out"/> +<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0"/> +<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_1_6105"/> +<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_1_6105" result="shape"/> +</filter> +<clipPath id="clip0_1_6105"> +<rect x="4" y="4" width="49" height="36" rx="8" fill="white"/> +</clipPath> +</defs> +</svg> diff --git a/static/languages/unknown.svg b/static/languages/unknown.svg new file mode 100644 index 0000000..494615a --- /dev/null +++ b/static/languages/unknown.svg @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?> <!-- Generator: Adobe Illustrator 24.1.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" width="496px" height="335px" viewBox="0 0 496 335" style="enable-background:new 0 0 496 335;" xml:space="preserve"> <image style="overflow:visible;" width="496" height="335" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfAAAAFPCAYAAACyMJxGAAABQWlDQ1BJQ0MgUHJvZmlsZQAAKJFj YGASSCwoyGFhYGDIzSspCnJ3UoiIjFJgf8rAxsAJhGwM5onJxQWOAQE+QCUMMBoVfLvGwAiiL+uC zKotsfn7eFHmM6eb7zdc3fDbD1M9CuBKSS1OBtJ/gDgpuaCohIGBMQHIVi4vKQCxW4BskSKgo4Ds GSB2OoS9BsROgrAPgNWEBDkD2VeAbIHkjMQUIPsJkK2ThCSejsSG2gsCHMFGJm7GpgYEnEo6KEmt KAHRzvkFlUWZ6RklCo7AEEpV8MxL1tNRMDIwMmRgAIU3RPXnG+BwZBTjQIhl6jMwmIYABY8ixFJv MjBsP87AIPgJIaZ+joFBCOjf/WUFiUWJcAcwfmMpTjM2grC5tzMwsE77//9zOAMDuyYDw9/r//// 3v7//99lDAzMtxgYDnwDANf2Yo1QjMkmAAAAVmVYSWZNTQAqAAAACAABh2kABAAAAAEAAAAaAAAA AAADkoYABwAAABIAAABEoAIABAAAAAEAAAHwoAMABAAAAAEAAAFPAAAAAEFTQ0lJAAAAU2NyZWVu c2hvdDjJEscAAAHWaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5zOng9 ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA2LjAuMCI+CiAgIDxyZGY6UkRGIHht bG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAg ICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9 Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGlt ZW5zaW9uPjMzNTwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERp bWVuc2lvbj40OTY8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpVc2VyQ29t bWVudD5TY3JlZW5zaG90PC9leGlmOlVzZXJDb21tZW50PgogICAgICA8L3JkZjpEZXNjcmlwdGlv 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"> </image> </svg> \ No newline at end of file diff --git a/static/stories/Story-pengiun.png b/static/stories/Story-pengiun.png new file mode 100644 index 0000000..7a0310f Binary files /dev/null and b/static/stories/Story-pengiun.png differ diff --git a/static/stories/Story-trees.png b/static/stories/Story-trees.png new file mode 100644 index 0000000..10050c5 Binary files /dev/null and b/static/stories/Story-trees.png differ diff --git a/static/stories/Story-turtle.png b/static/stories/Story-turtle.png new file mode 100644 index 0000000..02529c3 Binary files /dev/null and b/static/stories/Story-turtle.png differ diff --git a/static/unknown.svg b/static/unknown.svg new file mode 100644 index 0000000..494615a --- /dev/null +++ b/static/unknown.svg @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?> <!-- Generator: Adobe Illustrator 24.1.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" width="496px" height="335px" viewBox="0 0 496 335" style="enable-background:new 0 0 496 335;" xml:space="preserve"> <image style="overflow:visible;" width="496" height="335" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfAAAAFPCAYAAACyMJxGAAABQWlDQ1BJQ0MgUHJvZmlsZQAAKJFj YGASSCwoyGFhYGDIzSspCnJ3UoiIjFJgf8rAxsAJhGwM5onJxQWOAQE+QCUMMBoVfLvGwAiiL+uC zKotsfn7eFHmM6eb7zdc3fDbD1M9CuBKSS1OBtJ/gDgpuaCohIGBMQHIVi4vKQCxW4BskSKgo4Ds GSB2OoS9BsROgrAPgNWEBDkD2VeAbIHkjMQUIPsJkK2ThCSejsSG2gsCHMFGJm7GpgYEnEo6KEmt KAHRzvkFlUWZ6RklCo7AEEpV8MxL1tNRMDIwMmRgAIU3RPXnG+BwZBTjQIhl6jMwmIYABY8ixFJv MjBsP87AIPgJIaZ+joFBCOjf/WUFiUWJcAcwfmMpTjM2grC5tzMwsE77//9zOAMDuyYDw9/r//// 3v7//99lDAzMtxgYDnwDANf2Yo1QjMkmAAAAVmVYSWZNTQAqAAAACAABh2kABAAAAAEAAAAaAAAA AAADkoYABwAAABIAAABEoAIABAAAAAEAAAHwoAMABAAAAAEAAAFPAAAAAEFTQ0lJAAAAU2NyZWVu c2hvdDjJEscAAAHWaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5zOng9 ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA2LjAuMCI+CiAgIDxyZGY6UkRGIHht bG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAg ICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9 Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGlt ZW5zaW9uPjMzNTwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERp bWVuc2lvbj40OTY8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpVc2VyQ29t bWVudD5TY3JlZW5zaG90PC9leGlmOlVzZXJDb21tZW50PgogICAgICA8L3JkZjpEZXNjcmlwdGlv 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"> </image> </svg> \ No newline at end of file