ajout des drapeau svg pour chaque pays et amélioration du systeme de changment de langue

This commit is contained in:
Puechberty Arthur
2026-04-21 20:40:08 +02:00
parent a3c0b0b9b4
commit 25a1a03692
33 changed files with 369 additions and 273 deletions
+76 -32
View File
@@ -1,58 +1,102 @@
"use client"; "use client";
import { useState, useTransition } from "react";
import { useLocale } from "next-intl"; import { useLocale } from "next-intl";
import { useSearchParams } from "next/navigation";
import { useTransition } from "react";
import { useT } from "../i18n/client"; import { useT } from "../i18n/client";
import { usePathname, useRouter } from "../i18n/navigation"; import { usePathname, useRouter } from "../i18n/navigation";
import { routing, type AppLocale } from "../i18n/routing"; import { routing, type AppLocale } from "../i18n/routing";
type LocaleLabelKey = `localeSwitcher.locales.${AppLocale}`; // Exemple: tu mets tes SVG ici (ou import depuis /public)
const flags: Record<AppLocale, string> = {
fr: "/flags/fr.svg",
en: "/flags/en.svg",
es: "/flags/es.svg",
de: "/flags/de.svg",
ja: "/flags/ja.svg",
pt: "/flags/pt.svg",
ru: "/flags/ru.svg",
it: "/flags/it.svg",
nl: "/flags/nl.svg",
pl: "/flags/pl.svg",
zh: "/flags/zh.svg",
hi: "/flags/hi.svg",
ar: "/flags/ar.svg",
bn: "/flags/bn.svg",
id: "/flags/id.svg",
tr: "/flags/tr.svg",
};
export default function LanguageSwitcher() { export default function LanguageSwitcher() {
const t = useT(); const t = useT();
const locale = useLocale() as AppLocale; const locale = useLocale() as AppLocale;
const pathname = usePathname(); const pathname = usePathname();
const router = useRouter(); const router = useRouter();
const searchParams = useSearchParams();
const [isPending, startTransition] = useTransition(); const [isPending, startTransition] = useTransition();
const [open, setOpen] = useState(false);
const localeLabels = Object.fromEntries( const changeLocale = (next: AppLocale) => {
routing.locales.map((availableLocale) => [ if (next === locale) return;
availableLocale,
t(`localeSwitcher.locales.${availableLocale}` as LocaleLabelKey),
]),
) as Record<AppLocale, string>;
const handleLocaleChange = (nextLocale: AppLocale) => {
if (nextLocale === locale) {
return;
}
const query = Object.fromEntries(searchParams.entries());
startTransition(() => { startTransition(() => {
router.replace({ pathname, query }, { locale: nextLocale }); router.replace(pathname, { locale: next });
}); });
setOpen(false);
}; };
return ( return (
<label className="inline-flex items-center gap-2 rounded-xl border border-[var(--border-subtle)] bg-[var(--surface-subtle)] px-2.5 py-1.5"> <div className="relative inline-block">
<span className="sr-only">{t("localeSwitcher.label")}</span> {/* BUTTON */}
<select <button
aria-label={t("localeSwitcher.label")} onClick={() => setOpen(!open)}
className="bg-transparent text-xs font-semibold text-[var(--foreground)] focus:outline-none"
disabled={isPending} disabled={isPending}
onChange={(event) => handleLocaleChange(event.target.value as AppLocale)} className="
value={locale} flex items-center gap-2
rounded-xl px-3 py-2
bg-[#0b1b3a] hover:bg-[#10264d]
text-gray-200
border border-[#1f3b66]
transition
"
> >
{routing.locales.map((availableLocale) => ( <img src={flags[locale]} className="w-5 h-5" />
<option key={availableLocale} value={availableLocale}> <span className="text-sm font-semibold">{locale.toUpperCase()}</span>
{localeLabels[availableLocale]} </button>
</option>
))} {/* DROPDOWN */}
</select> {open && (
</label> <div
className="
absolute mt-2 w-48
max-h-56 overflow-y-auto
rounded-xl
bg-[#0b1b3a]
border border-[#1f3b66]
shadow-lg
z-50
"
>
{routing.locales.map((l) => (
<button
key={l}
onClick={() => changeLocale(l)}
className="
flex w-full items-center gap-3
px-3 py-2
text-gray-200
hover:bg-[#132b55]
transition
"
>
<img src={flags[l]} className="w-5 h-5" />
<span className="text-sm">
{t(`localeSwitcher.locales.${l}`)}
</span>
</button>
))}
</div>
)}
</div>
); );
} }
+15 -15
View File
@@ -14,22 +14,22 @@
"localeSwitcher": { "localeSwitcher": {
"label": "اللغة", "label": "اللغة",
"locales": { "locales": {
"en": "الإنجليزية", "en": "English",
"es": "الإسبانية", "es": "Español",
"de": "الألمانية", "de": "Deutsch",
"ja": "اليابانية", "ja": "日本語",
"fr": "الفرنسية", "fr": "Français",
"pt": "البرتغالية", "pt": "Português",
"ru": "الروسية", "ru": "Русский",
"it": "الإيطالية", "it": "Italiano",
"nl": "الهولندية", "nl": "Nederlands",
"pl": "البولندية", "pl": "Polski",
"zh": "الصينية", "zh": "中文",
"hi": "الهندية", "hi": "हिन्दी",
"ar": "العربية", "ar": "العربية",
"bn": "البنغالية", "bn": "বাংলা",
"id": "الإندونيسية", "id": "Bahasa Indonesia",
"tr": "التركية" "tr": "Türkçe"
} }
}, },
"hero": { "hero": {
+15 -15
View File
@@ -14,22 +14,22 @@
"localeSwitcher": { "localeSwitcher": {
"label": "ভাষা", "label": "ভাষা",
"locales": { "locales": {
"en": "ইংরেজি", "en": "English",
"es": "স্প্যানিশ", "es": "Español",
"de": "জার্মান", "de": "Deutsch",
"ja": "জাপানি", "ja": "日本語",
"fr": "ফরাসি", "fr": "Français",
"pt": "পর্তুগিজ", "pt": "Português",
"ru": "রাশিয়ান", "ru": "Русский",
"it": "ইতালীয়", "it": "Italiano",
"nl": "ডাচ", "nl": "Nederlands",
"pl": "পোলিশ", "pl": "Polski",
"zh": "চীনা", "zh": "中文",
"hi": "হিন্দি", "hi": "हिन्दी",
"ar": "আরবি", "ar": "العربية",
"bn": "বাংলা", "bn": "বাংলা",
"id": "ইন্দোনেশীয়", "id": "Bahasa Indonesia",
"tr": "তুর্কি" "tr": "Türkçe"
} }
}, },
"hero": { "hero": {
+15 -15
View File
@@ -14,22 +14,22 @@
"localeSwitcher": { "localeSwitcher": {
"label": "Sprache", "label": "Sprache",
"locales": { "locales": {
"en": "Englisch", "en": "English",
"es": "Spanisch", "es": "Español",
"de": "Deutsch", "de": "Deutsch",
"ja": "Japanisch", "ja": "日本語",
"fr": "Französisch", "fr": "Français",
"pt": "Portugiesisch", "pt": "Português",
"ru": "Russisch", "ru": "Русский",
"it": "Italienisch", "it": "Italiano",
"nl": "Niederländisch", "nl": "Nederlands",
"pl": "Polnisch", "pl": "Polski",
"zh": "Chinesisch", "zh": "中文",
"hi": "Hindi", "hi": "हिन्दी",
"ar": "Arabisch", "ar": "العربية",
"bn": "Bengalisch", "bn": "বাংলা",
"id": "Indonesisch", "id": "Bahasa Indonesia",
"tr": "Türkisch" "tr": "Türkçe"
} }
}, },
"hero": { "hero": {
+15 -15
View File
@@ -15,21 +15,21 @@
"label": "Language", "label": "Language",
"locales": { "locales": {
"en": "English", "en": "English",
"es": "Spanish", "es": "Español",
"de": "German", "de": "Deutsch",
"ja": "Japanese", "ja": "日本語",
"fr": "French", "fr": "Français",
"pt": "Portuguese", "pt": "Português",
"ru": "Russian", "ru": "Русский",
"it": "Italian", "it": "Italiano",
"nl": "Dutch", "nl": "Nederlands",
"pl": "Polish", "pl": "Polski",
"zh": "Chinese", "zh": "中文",
"hi": "Hindi", "hi": "हिन्दी",
"ar": "Arabic", "ar": "العربية",
"bn": "Bengali", "bn": "বাংলা",
"id": "Indonesian", "id": "Bahasa Indonesia",
"tr": "Turkish" "tr": "Türkçe"
} }
}, },
"hero": { "hero": {
+14 -14
View File
@@ -14,22 +14,22 @@
"localeSwitcher": { "localeSwitcher": {
"label": "Idioma", "label": "Idioma",
"locales": { "locales": {
"en": "Inglés", "en": "English",
"es": "Español", "es": "Español",
"de": "Alemán", "de": "Deutsch",
"ja": "Japonés", "ja": "日本語",
"fr": "Frans", "fr": "Français",
"pt": "Portugués", "pt": "Português",
"ru": "Ruso", "ru": "Русский",
"it": "Italiano", "it": "Italiano",
"nl": "Neerlandés", "nl": "Nederlands",
"pl": "Polaco", "pl": "Polski",
"zh": "Chino", "zh": "中文",
"hi": "Hindi", "hi": "हिन्दी",
"ar": "Árabe", "ar": "العربية",
"bn": "Bengalí", "bn": "বাংলা",
"id": "Indonesio", "id": "Bahasa Indonesia",
"tr": "Turco" "tr": "Türkçe"
} }
}, },
"hero": { "hero": {
+16 -16
View File
@@ -14,22 +14,22 @@
"localeSwitcher": { "localeSwitcher": {
"label": "Langue", "label": "Langue",
"locales": { "locales": {
"en": "Anglais", "en": "English",
"es": "Espagnol", "es": "Español",
"de": "Allemand", "de": "Deutsch",
"ja": "Japonais", "ja": "日本語",
"fr": "Français", "fr": "Français",
"pt": "Portugais", "pt": "Portugs",
"ru": "Russe", "ru": "Русский",
"it": "Italien", "it": "Italiano",
"nl": "Néerlandais", "nl": "Nederlands",
"pl": "Polonais", "pl": "Polski",
"zh": "Chinois", "zh": "中文",
"hi": "Hindi", "hi": "हिन्दी",
"ar": "Arabe", "ar": "العربية",
"bn": "Bengali", "bn": "বাংলা",
"id": "Indonésien", "id": "Bahasa Indonesia",
"tr": "Turc" "tr": "Türkçe"
} }
}, },
"hero": { "hero": {
@@ -164,4 +164,4 @@
"actionFailed": "Action impossible : {action}" "actionFailed": "Action impossible : {action}"
} }
} }
} }
+16 -16
View File
@@ -14,22 +14,22 @@
"localeSwitcher": { "localeSwitcher": {
"label": "भाषा", "label": "भाषा",
"locales": { "locales": {
"en": "अंग्रेज़ी", "en": "English",
"es": "स्पेनिश", "es": "Español",
"de": "जर्मन", "de": "Deutsch",
"ja": "जापानी", "ja": "日本語",
"fr": "फ़्रेंच", "fr": "Français",
"pt": "पुर्तगाली", "pt": "Português",
"ru": "रूसी", "ru": "Русский",
"it": "इतालवी", "it": "Italiano",
"nl": "डच", "nl": "Nederlands",
"pl": "पोलिश", "pl": "Polski",
"zh": "चीनी", "zh": "中文",
"hi": "हिदी", "hi": "हिन्दी",
"ar": "अरबी", "ar": "العربية",
"bn": "बांग्ला", "bn": "বাংলা",
"id": "इंडोनेशियाई", "id": "Bahasa Indonesia",
"tr": "तुर्की" "tr": "Türkçe"
} }
}, },
"hero": { "hero": {
+16 -16
View File
@@ -14,22 +14,22 @@
"localeSwitcher": { "localeSwitcher": {
"label": "Bahasa", "label": "Bahasa",
"locales": { "locales": {
"en": "Inggris", "en": "English",
"es": "Spanyol", "es": "Español",
"de": "Jerman", "de": "Deutsch",
"ja": "Jepang", "ja": "日本語",
"fr": "Prancis", "fr": "Français",
"pt": "Portugis", "pt": "Portugs",
"ru": "Rusia", "ru": "Русский",
"it": "Italia", "it": "Italiano",
"nl": "Belanda", "nl": "Nederlands",
"pl": "Polandia", "pl": "Polski",
"zh": "Tionghoa", "zh": "中文",
"hi": "Hindi", "hi": "हिन्दी",
"ar": "Arab", "ar": "العربية",
"bn": "Bengali", "bn": "বাংলা",
"id": "Indonesia", "id": "Bahasa Indonesia",
"tr": "Turki" "tr": "Türkçe"
} }
}, },
"hero": { "hero": {
+15 -15
View File
@@ -14,22 +14,22 @@
"localeSwitcher": { "localeSwitcher": {
"label": "Lingua", "label": "Lingua",
"locales": { "locales": {
"en": "Inglese", "en": "English",
"es": "Spagnolo", "es": "Español",
"de": "Tedesco", "de": "Deutsch",
"ja": "Giapponese", "ja": "日本語",
"fr": "Francese", "fr": "Français",
"pt": "Portoghese", "pt": "Português",
"ru": "Russo", "ru": "Русский",
"it": "Italiano", "it": "Italiano",
"nl": "Olandese", "nl": "Nederlands",
"pl": "Polacco", "pl": "Polski",
"zh": "Cinese", "zh": "中文",
"hi": "Hindi", "hi": "हिन्दी",
"ar": "Arabo", "ar": "العربية",
"bn": "Bengalese", "bn": "বাংলা",
"id": "Indonesiano", "id": "Bahasa Indonesia",
"tr": "Turco" "tr": "Türkçe"
} }
}, },
"hero": { "hero": {
+15 -15
View File
@@ -14,22 +14,22 @@
"localeSwitcher": { "localeSwitcher": {
"label": "言語", "label": "言語",
"locales": { "locales": {
"en": "英語", "en": "English",
"es": "スペイン語", "es": "Español",
"de": "ドイツ語", "de": "Deutsch",
"ja": "日本語", "ja": "日本語",
"fr": "フランス語", "fr": "Français",
"pt": "ポルトガル語", "pt": "Português",
"ru": "ロシア語", "ru": "Русский",
"it": "イタリア語", "it": "Italiano",
"nl": "オランダ語", "nl": "Nederlands",
"pl": "ポーランド語", "pl": "Polski",
"zh": "中国語", "zh": "中",
"hi": "ヒンディー語", "hi": "हिन्दी",
"ar": "アラビア語", "ar": "العربية",
"bn": "ベンガル語", "bn": "বাংলা",
"id": "インドネシア語", "id": "Bahasa Indonesia",
"tr": "トルコ語" "tr": "Türkçe"
} }
}, },
"hero": { "hero": {
+15 -15
View File
@@ -14,22 +14,22 @@
"localeSwitcher": { "localeSwitcher": {
"label": "Taal", "label": "Taal",
"locales": { "locales": {
"en": "Engels", "en": "English",
"es": "Spaans", "es": "Español",
"de": "Duits", "de": "Deutsch",
"ja": "Japans", "ja": "日本語",
"fr": "Frans", "fr": "Français",
"pt": "Portugees", "pt": "Portugs",
"ru": "Russisch", "ru": "Русский",
"it": "Italiaans", "it": "Italiano",
"nl": "Nederlands", "nl": "Nederlands",
"pl": "Pools", "pl": "Polski",
"zh": "Chinees", "zh": "中文",
"hi": "Hindi", "hi": "हिन्दी",
"ar": "Arabisch", "ar": "العربية",
"bn": "Bengaals", "bn": "বাংলা",
"id": "Indonesisch", "id": "Bahasa Indonesia",
"tr": "Turks" "tr": "Türkçe"
} }
}, },
"hero": { "hero": {
+15 -15
View File
@@ -14,22 +14,22 @@
"localeSwitcher": { "localeSwitcher": {
"label": "Język", "label": "Język",
"locales": { "locales": {
"en": "Angielski", "en": "English",
"es": "Hiszpański", "es": "Español",
"de": "Niemiecki", "de": "Deutsch",
"ja": "Japoński", "ja": "日本語",
"fr": "Francuski", "fr": "Français",
"pt": "Portugalski", "pt": "Português",
"ru": "Rosyjski", "ru": "Русский",
"it": "Włoski", "it": "Italiano",
"nl": "Holenderski", "nl": "Nederlands",
"pl": "Polski", "pl": "Polski",
"zh": "Chiński", "zh": "中文",
"hi": "Hinduski", "hi": "हिन्दी",
"ar": "Arabski", "ar": "العربية",
"bn": "Bengalski", "bn": "বাংলা",
"id": "Indonezyjski", "id": "Bahasa Indonesia",
"tr": "Turecki" "tr": "Türkçe"
} }
}, },
"hero": { "hero": {
+14 -14
View File
@@ -14,22 +14,22 @@
"localeSwitcher": { "localeSwitcher": {
"label": "Idioma", "label": "Idioma",
"locales": { "locales": {
"en": "Inglês", "en": "English",
"es": "Espanhol", "es": "Español",
"de": "Alemão", "de": "Deutsch",
"ja": "Japonês", "ja": "日本語",
"fr": "Frans", "fr": "Français",
"pt": "Português", "pt": "Português",
"ru": "Russo", "ru": "Русский",
"it": "Italiano", "it": "Italiano",
"nl": "Holandês", "nl": "Nederlands",
"pl": "Polonês", "pl": "Polski",
"zh": "Chinês", "zh": "中文",
"hi": "Hindi", "hi": "हिन्दी",
"ar": "Árabe", "ar": "العربية",
"bn": "Bengali", "bn": "বাংলা",
"id": "Indonésio", "id": "Bahasa Indonesia",
"tr": "Turco" "tr": "Türkçe"
} }
}, },
"hero": { "hero": {
+15 -15
View File
@@ -14,22 +14,22 @@
"localeSwitcher": { "localeSwitcher": {
"label": "Язык", "label": "Язык",
"locales": { "locales": {
"en": "Английский", "en": "English",
"es": "Испанский", "es": "Español",
"de": "Немецкий", "de": "Deutsch",
"ja": "Японский", "ja": "日本語",
"fr": "Французский", "fr": "Français",
"pt": "Португальский", "pt": "Português",
"ru": "Русский", "ru": "Русский",
"it": "Итальянский", "it": "Italiano",
"nl": "Нидерландский", "nl": "Nederlands",
"pl": "Польский", "pl": "Polski",
"zh": "Китайский", "zh": "中文",
"hi": "Хинди", "hi": "हिन्दी",
"ar": "Арабский", "ar": "العربية",
"bn": "Бенгальский", "bn": "বাংলা",
"id": "Индонезийский", "id": "Bahasa Indonesia",
"tr": "Турецкий" "tr": "Türkçe"
} }
}, },
"hero": { "hero": {
+15 -15
View File
@@ -14,21 +14,21 @@
"localeSwitcher": { "localeSwitcher": {
"label": "Dil", "label": "Dil",
"locales": { "locales": {
"en": "İngilizce", "en": "English",
"es": "İspanyolca", "es": "Español",
"de": "Almanca", "de": "Deutsch",
"ja": "Japonca", "ja": "日本語",
"fr": "Fransızca", "fr": "Français",
"pt": "Portekizce", "pt": "Português",
"ru": "Rusça", "ru": "Русский",
"it": "İtalyanca", "it": "Italiano",
"nl": "Flemenkçe", "nl": "Nederlands",
"pl": "Lehçe", "pl": "Polski",
"zh": "Çince", "zh": "中文",
"hi": "Hintçe", "hi": "हिन्दी",
"ar": "Arapça", "ar": "العربية",
"bn": "Bengalce", "bn": "বাংলা",
"id": "Endonezce", "id": "Bahasa Indonesia",
"tr": "Türkçe" "tr": "Türkçe"
} }
}, },
+15 -15
View File
@@ -14,22 +14,22 @@
"localeSwitcher": { "localeSwitcher": {
"label": "语言", "label": "语言",
"locales": { "locales": {
"en": "英语", "en": "English",
"es": "西班牙语", "es": "Español",
"de": "德语", "de": "Deutsch",
"ja": "日", "ja": "日本語",
"fr": "法语", "fr": "Français",
"pt": "葡萄牙语", "pt": "Português",
"ru": "俄语", "ru": "Русский",
"it": "意大利语", "it": "Italiano",
"nl": "荷兰语", "nl": "Nederlands",
"pl": "波兰语", "pl": "Polski",
"zh": "中文", "zh": "中文",
"hi": "印地语", "hi": "हिन्दी",
"ar": "阿拉伯语", "ar": "العربية",
"bn": "孟加拉语", "bn": "বাংলা",
"id": "印尼语", "id": "Bahasa Indonesia",
"tr": "土耳其语" "tr": "Türkçe"
} }
}, },
"hero": { "hero": {
+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><path fill="#068241" d="M32 5H9v9h27V9a4 4 0 0 0-4-4z"></path><path fill="#EEE" d="M9 14h27v8H9z"></path><path fill="#141414" d="M9 31h23a4 4 0 0 0 4-4v-5H9v9z"></path><path fill="#EC2028" d="M4 5a4 4 0 0 0-4 4v18a4 4 0 0 0 4 4h5V5H4z"></path></svg>

After

Width:  |  Height:  |  Size: 599 B

+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><path fill="#006A4D" d="M36 27a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V9a4 4 0 0 1 4-4h28a4 4 0 0 1 4 4v18z"></path><circle fill="#F42A41" cx="16" cy="17.5" r="7"></circle></svg>

After

Width:  |  Height:  |  Size: 518 B

+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><path fill="#FFCD05" d="M0 27a4 4 0 0 0 4 4h28a4 4 0 0 0 4-4v-4H0v4z"></path><path fill="#ED1F24" d="M0 14h36v9H0z"></path><path fill="#141414" d="M32 5H4a4 4 0 0 0-4 4v5h36V9a4 4 0 0 0-4-4z"></path></svg>

After

Width:  |  Height:  |  Size: 555 B

+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><path fill="#00247D" d="M0 9.059V13h5.628zM4.664 31H13v-5.837zM23 25.164V31h8.335zM0 23v3.941L5.63 23zM31.337 5H23v5.837zM36 26.942V23h-5.631zM36 13V9.059L30.371 13zM13 5H4.664L13 10.837z"></path><path fill="#CF1B2B" d="M25.14 23l9.712 6.801a3.977 3.977 0 0 0 .99-1.749L28.627 23H25.14zM13 23h-2.141l-9.711 6.8c.521.53 1.189.909 1.938 1.085L13 23.943V23zm10-10h2.141l9.711-6.8a3.988 3.988 0 0 0-1.937-1.085L23 12.057V13zm-12.141 0L1.148 6.2a3.994 3.994 0 0 0-.991 1.749L7.372 13h3.487z"></path><path fill="#EEE" d="M36 21H21v10h2v-5.836L31.335 31H32a3.99 3.99 0 0 0 2.852-1.199L25.14 23h3.487l7.215 5.052c.093-.337.158-.686.158-1.052v-.058L30.369 23H36v-2zM0 21v2h5.63L0 26.941V27c0 1.091.439 2.078 1.148 2.8l9.711-6.8H13v.943l-9.914 6.941c.294.07.598.116.914.116h.664L13 25.163V31h2V21H0zM36 9a3.983 3.983 0 0 0-1.148-2.8L25.141 13H23v-.943l9.915-6.942A4.001 4.001 0 0 0 32 5h-.663L23 10.837V5h-2v10h15v-2h-5.629L36 9.059V9zM13 5v5.837L4.664 5H4a3.985 3.985 0 0 0-2.852 1.2l9.711 6.8H7.372L.157 7.949A3.968 3.968 0 0 0 0 9v.059L5.628 13H0v2h15V5h-2z"></path><path fill="#CF1B2B" d="M21 15V5h-6v10H0v6h15v10h6V21h15v-6z"></path></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><path fill="#C60A1D" d="M36 27a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V9a4 4 0 0 1 4-4h28a4 4 0 0 1 4 4v18z"></path><path fill="#FFC400" d="M0 12h36v12H0z"></path><path fill="#EA596E" d="M9 17v3a3 3 0 1 0 6 0v-3H9z"></path><path fill="#F4A2B2" d="M12 16h3v3h-3z"></path><path fill="#DD2E44" d="M9 16h3v3H9z"></path><ellipse fill="#EA596E" cx="12" cy="14.5" rx="3" ry="1.5"></ellipse><ellipse fill="#FFAC33" cx="12" cy="13.75" rx="3" ry=".75"></ellipse><path fill="#99AAB5" d="M7 16h1v7H7zm9 0h1v7h-1z"></path><path fill="#66757F" d="M6 22h3v1H6zm9 0h3v1h-3zm-8-7h1v1H7zm9 0h1v1h-1z"></path></svg>

After

Width:  |  Height:  |  Size: 936 B

+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><path fill="#ED2939" d="M36 27a4 4 0 0 1-4 4h-8V5h8a4 4 0 0 1 4 4v18z"></path><path fill="#002495" d="M4 5a4 4 0 0 0-4 4v18a4 4 0 0 0 4 4h8V5H4z"></path><path fill="#EEE" d="M12 5h12v26H12z"></path></svg>

After

Width:  |  Height:  |  Size: 554 B

+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><path fill="#138808" d="M0 27a4 4 0 0 0 4 4h28a4 4 0 0 0 4-4v-4H0v4z"></path><path fill="#EEE" d="M0 13h36v10H0z"></path><path fill="#F93" d="M36 13V9a4 4 0 0 0-4-4H4a4 4 0 0 0-4 4v4h36z"></path><circle fill="navy" cx="18" cy="18" r="4"></circle><circle fill="#EEE" cx="18" cy="18" r="3"></circle><path fill="#6666B3" d="M18 15l.146 2.264l1.001-2.035l-.73 2.147l1.704-1.498l-1.497 1.705l2.147-.731l-2.035 1.002L21 18l-2.264.146l2.035 1.001l-2.147-.73l1.497 1.704l-1.704-1.497l.73 2.147l-1.001-2.035L18 21l-.146-2.264l-1.002 2.035l.731-2.147l-1.705 1.497l1.498-1.704l-2.147.73l2.035-1.001L15 18l2.264-.146l-2.035-1.002l2.147.731l-1.498-1.705l1.705 1.498l-.731-2.147l1.002 2.035z"></path><circle fill="navy" cx="18" cy="18" r="1"></circle></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><path fill="#DC1F26" d="M32 5H4a4 4 0 0 0-4 4v9h36V9a4 4 0 0 0-4-4z"></path><path fill="#EEE" d="M36 27a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4v-9h36v9z"></path></svg>

After

Width:  |  Height:  |  Size: 507 B

+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><path fill="#CE2B37" d="M36 27a4 4 0 0 1-4 4h-8V5h8a4 4 0 0 1 4 4v18z"></path><path fill="#009246" d="M4 5a4 4 0 0 0-4 4v18a4 4 0 0 0 4 4h8V5H4z"></path><path fill="#EEE" d="M12 5h12v26H12z"></path></svg>

After

Width:  |  Height:  |  Size: 554 B

+22
View File
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 -4 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_503_3081)">
<rect x="0.25" y="0.25" width="27.5" height="19.5" rx="1.75" fill="white" stroke="#F5F5F5" stroke-width="0.5"/>
<mask id="mask0_503_3081" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="28" height="20">
<rect x="0.25" y="0.25" width="27.5" height="19.5" rx="1.75" fill="white" stroke="white" stroke-width="0.5"/>
</mask>
<g mask="url(#mask0_503_3081)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M14 16C17.3137 16 20 13.3137 20 10C20 6.68629 17.3137 4 14 4C10.6863 4 8 6.68629 8 10C8 13.3137 10.6863 16 14 16Z" fill="url(#paint0_linear_503_3081)"/>
</g>
</g>
<defs>
<linearGradient id="paint0_linear_503_3081" x1="8" y1="4" x2="8" y2="16" gradientUnits="userSpaceOnUse">
<stop stop-color="#D81441"/>
<stop offset="1" stop-color="#BB0831"/>
</linearGradient>
<clipPath id="clip0_503_3081">
<rect width="28" height="20" rx="2" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><path fill="#EEE" d="M0 14h36v8H0z"></path><path fill="#AE1F28" d="M32 5H4a4 4 0 0 0-4 4v5h36V9a4 4 0 0 0-4-4z"></path><path fill="#20478B" d="M4 31h28a4 4 0 0 0 4-4v-5H0v5a4 4 0 0 0 4 4z"></path></svg>

After

Width:  |  Height:  |  Size: 552 B

+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><path fill="#EEE" d="M32 5H4a4 4 0 0 0-4 4v9h36V9a4 4 0 0 0-4-4z"></path><path fill="#DC143C" d="M0 27a4 4 0 0 0 4 4h28a4 4 0 0 0 4-4v-9H0v9z"></path></svg>

After

Width:  |  Height:  |  Size: 506 B

+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><path fill="#060" d="M36 27a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V9a4 4 0 0 1 4-4h28a4 4 0 0 1 4 4v18z"></path><path fill="#D52B1E" d="M32 5H15v26h17a4 4 0 0 0 4-4V9a4 4 0 0 0-4-4z"></path><path fill="#FFCC4D" d="M15 10a8 8 0 0 0-8 8a8 8 0 1 0 16 0a8 8 0 0 0-8-8zm-6.113 4.594l1.602 1.602l-2.46 1.23a6.95 6.95 0 0 1 .858-2.832zm-.858 3.979l4.4 2.207l-2.706 1.804l.014.021a6.963 6.963 0 0 1-1.708-4.032zM14 24.92a6.945 6.945 0 0 1-2.592-.92H14v.92zM14 23h-3.099L14 20.934V23zm0-3.268l-.607.405L9.118 18l2.116-1.058L14 19.707v.025zm0-1.439l-3.543-3.543l3.543.59v2.953zm0-3.992l-4.432-.713A6.983 6.983 0 0 1 14 11.08v3.221zm7.113.293a6.95 6.95 0 0 1 .858 2.833l-2.46-1.23l1.602-1.603zM16 11.08a6.987 6.987 0 0 1 4.432 2.508L16 14.301V11.08zm0 4.26l3.543-.591L16 18.293V15.34zm0 4.367l2.765-2.765L20.882 18l-4.274 2.137l-.608-.405v-.025zm0 5.213V24h2.592a6.945 6.945 0 0 1-2.592.92zM16 23v-2.066L19.099 23H16zm4.264-.395l.014-.021l-2.706-1.804l4.4-2.207a6.976 6.976 0 0 1-1.708 4.032z"></path><path fill="#D52B1E" d="M11 13v7a4 4 0 0 0 8 0v-7h-8z"></path><path fill="#FFF" d="M12 14v6a3 3 0 0 0 6 0v-6h-6z"></path><path fill="#829ACD" d="M13 17h4v2h-4z"></path><path fill="#829ACD" d="M14 16h2v4h-2z"></path><path fill="#039" d="M12 17h1v2h-1zm2 0h2v2h-2zm3 0h1v2h-1zm-3 3h2v2h-2zm0-6h2v2h-2z"></path></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><path fill="#CE2028" d="M36 27a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4v-4h36v4z"></path><path fill="#22408C" d="M0 13h36v10H0z"></path><path fill="#EEE" d="M32 5H4a4 4 0 0 0-4 4v4h36V9a4 4 0 0 0-4-4z"></path></svg>

After

Width:  |  Height:  |  Size: 554 B

+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><path fill="#E30917" d="M36 27a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V9a4 4 0 0 1 4-4h28a4 4 0 0 1 4 4v18z"></path><path fill="#EEE" d="M16 24a6 6 0 1 1 0-12c1.31 0 2.52.425 3.507 1.138A7.332 7.332 0 0 0 14 10.647A7.353 7.353 0 0 0 6.647 18A7.353 7.353 0 0 0 14 25.354c2.195 0 4.16-.967 5.507-2.492A5.963 5.963 0 0 1 16 24zm3.913-5.77l2.44.562l.22 2.493l1.288-2.146l2.44.561l-1.644-1.888l1.287-2.147l-2.303.98l-1.644-1.889l.22 2.494z"></path></svg>

After

Width:  |  Height:  |  Size: 789 B

+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><path fill="#DE2910" d="M36 27a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V9a4 4 0 0 1 4-4h28a4 4 0 0 1 4 4v18z"></path><path fill="#FFDE02" d="M11.136 8.977l.736.356l.589-.566l-.111.81l.72.386l-.804.144l-.144.804l-.386-.72l-.81.111l.566-.589zm4.665 2.941l-.356.735l.566.59l-.809-.112l-.386.721l-.144-.805l-.805-.144l.721-.386l-.112-.809l.59.566zm-.957 3.779l.268.772l.817.017l-.651.493l.237.783l-.671-.467l-.671.467l.236-.783l-.651-.493l.817-.017zm-3.708 3.28l.736.356l.589-.566l-.111.81l.72.386l-.804.144l-.144.804l-.386-.72l-.81.111l.566-.589zM7 10.951l.929 2.671l2.826.058l-2.253 1.708l.819 2.706L7 16.479l-2.321 1.615l.819-2.706l-2.253-1.708l2.826-.058z"></path></svg>

After

Width:  |  Height:  |  Size: 1009 B