diff --git a/src/lib/components/GroupsSection.svelte b/src/lib/components/GroupsSection.svelte index d0b83463..24e98b6d 100644 --- a/src/lib/components/GroupsSection.svelte +++ b/src/lib/components/GroupsSection.svelte @@ -1,6 +1,6 @@ @@ -38,21 +59,20 @@
-
- - handlePlatformToggle(platform)} + /> + {platform} + {/each} - +
+ + + @@ -95,18 +123,81 @@ .settingsBar { margin: 0 !important; padding: 0 !important; + flex-direction: column; + align-items: stretch; + } + + .platformFilter { + padding: 0.75rem; + font-size: 0.8rem; + } + + .checkbox-group { + justify-content: flex-start; + gap: 0.5rem; + } + + .checkbox-item { + padding: 0.2rem 0.4rem; + } + + .checkbox-text { + font-size: 0.8rem; } } - .groupTypeFilter { + .platformFilter { color: white; - font-size: 1em; - border: none; + font-size: 0.9rem; + display: flex; + flex-direction: column; + gap: 0.5rem; + padding: 1rem; + background: rgba(255, 255, 255, 0.1); + border-radius: 8px; box-shadow: 0 2px 2px rgba(50, 50, 50, 0.425); + } + + .filter-label { + font-weight: bold; + margin-bottom: 0.5rem; + } + + .checkbox-group { + display: flex; + flex-wrap: wrap; + gap: 0.75rem; + } + + .checkbox-item { display: flex; align-items: center; - gap: 1em; - padding-left: .5em; + gap: 0.5rem; + cursor: pointer; + padding: 0.25rem 0.5rem; + border-radius: 4px; + transition: background-color 0.2s ease; + } + + .checkbox-item:hover { + background: rgba(255, 255, 255, 0.1); + } + + .checkbox-item input[type="checkbox"] { + width: 16px; + height: 16px; + accent-color: #0066cc; + cursor: pointer; + } + + .checkbox-text { + font-size: 0.9rem; + user-select: none; + } + + /* Old styles to remove/replace */ + .groupTypeFilter { + display: none; /* Hide old filter */ } select { @@ -182,4 +273,39 @@ justify-content: center; align-items: center; } + + .github-footer { + margin-top: 3rem; + text-align: center; + padding: 2rem 1rem; + border-top: 1px solid rgba(255, 255, 255, 0.2); + } + + .github-link { + display: inline-flex; + align-items: center; + gap: 0.5rem; + color: rgba(255, 255, 255, 0.8); + text-decoration: none; + font-size: 0.9rem; + padding: 0.5rem 1rem; + border-radius: 6px; + background: rgba(255, 255, 255, 0.05); + transition: all 0.2s ease; + } + + .github-link:hover { + color: white; + background: rgba(255, 255, 255, 0.1); + transform: translateY(-2px); + } + + .github-icon { + width: 18px; + height: 18px; + background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='white' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z'/%3E%3C/svg%3E"); + background-size: contain; + background-repeat: no-repeat; + background-position: center; + } \ No newline at end of file diff --git a/src/lib/models/GroupsData.js b/src/lib/models/GroupsData.js index 98900be0..3a90bae8 100644 --- a/src/lib/models/GroupsData.js +++ b/src/lib/models/GroupsData.js @@ -166,5 +166,473 @@ export const GroupsData = [ img: "fire-community.webp", type: "other", link: "https://forum.mustachianpost.com/t/meetup-in-bern-for-coffee-beer-and-chat-about-fi-re-plans/8673/" + }, + // Unko-Märkte (Non-commercial Marketplaces) + { + name: { + de: "Bern - Hauptgruppe (Unko-Markt)", + en: "Bern - Main Group (Non-commercial Market)" + }, + slug: "unko-bern-main", + desc: { + de: "Hauptgruppe für den unkommerziellen Marktplatz in Bern.", + en: "Main group for the non-commercial marketplace in Bern." + }, + img: "marktplatz.webp", + type: "telegram", + link: "https://t.me/+j6oiWwlyYiw5MjM0" + }, + { + name: { + de: "Bümpliz und Bethlehem (Unko-Markt)", + en: "Bümpliz and Bethlehem (Non-commercial Market)" + }, + slug: "unko-buempliz-bethlehem", + desc: { + de: "Unkommerzieller Marktplatz für Bümpliz und Bethlehem.", + en: "Non-commercial marketplace for Bümpliz and Bethlehem districts." + }, + img: "telegramgruppen.webp", + type: "telegram", + link: "https://tiny.cc/unkomarktbernbuempliz" + }, + { + name: { + de: "Fischermätteli, Mattenhof, Sulgenau & Weissenbühl (Unko-Markt)", + en: "Fischermätteli, Mattenhof, Sulgenau & Weissenbühl (Non-commercial Market)" + }, + slug: "unko-fischermatteli-area", + desc: { + de: "Unkommerzieller Marktplatz für die Quartiere Fischermätteli, Mattenhof, Sulgenau und Weissenbühl.", + en: "Non-commercial marketplace for Fischermätteli, Mattenhof, Sulgenau and Weissenbühl districts." + }, + img: "telegramgruppen.webp", + type: "telegram", + link: "https://t.me/joinchat/V1agD1T8E7ZiOWY0" + }, + { + name: { + de: "Zollikofen (Unko-Markt)", + en: "Zollikofen (Non-commercial Market)" + }, + slug: "unko-zollikofen", + desc: { + de: "Unkommerzieller Marktplatz für Zollikofen.", + en: "Non-commercial marketplace for Zollikofen." + }, + img: "telegramgruppen.webp", + type: "telegram", + link: "https://tiny.cc/zusammenzollikofentg" + }, + { + name: { + de: "Konolfingen (Unko-Markt)", + en: "Konolfingen (Non-commercial Market)" + }, + slug: "unko-konolfingen", + desc: { + de: "Unkommerzieller Marktplatz für Konolfingen.", + en: "Non-commercial marketplace for Konolfingen." + }, + img: "telegramgruppen.webp", + type: "telegram", + link: "https://t.me/+0d0e2-SaejQxZTc0" + }, + { + name: { + de: "Worb (Unko-Markt)", + en: "Worb (Non-commercial Market)" + }, + slug: "unko-worb", + desc: { + de: "Unkommerzieller Marktplatz für Worb.", + en: "Non-commercial marketplace for Worb." + }, + img: "marktplatz.webp", + type: "telegram", + link: "https://t.me/+qRhXsX8PJws1MDk0" + }, + { + name: { + de: "Gürbetal (Unko-Markt)", + en: "Gürbetal (Non-commercial Market)" + }, + slug: "unko-guerbetal", + desc: { + de: "Unkommerzieller Marktplatz für das Gürbetal.", + en: "Non-commercial marketplace for Gürbetal valley." + }, + img: "marktplatz.webp", + type: "telegram", + link: "https://t.me/+OYMZhEs90tQ1NjU0" + }, + { + name: { + de: "Region Gantrisch (Unko-Markt)", + en: "Gantrisch Region (Non-commercial Market)" + }, + slug: "unko-gantrisch", + desc: { + de: "Unkommerzieller Marktplatz für die Region Gantrisch.", + en: "Non-commercial marketplace for Gantrisch region." + }, + img: "marktplatz.webp", + type: "telegram", + link: "https://t.me/+JXMdN-Go9UY2NDM0" + }, + { + name: { + de: "Wittigkofen-Quartier (Unko-Markt)", + en: "Wittigkofen District (Non-commercial Market)" + }, + slug: "unko-wittigkofen", + desc: { + de: "Unkommerzieller Marktplatz für das Wittigkofen-Quartier.", + en: "Non-commercial marketplace for Wittigkofen district." + }, + img: "marktplatz.webp", + type: "telegram", + link: "http://tiny.cc/wittiunko" + }, + // Specialized Trading Groups + { + name: { + de: "Kindersachen Bern", + en: "Children's Items Bern" + }, + slug: "kindersachen-bern", + desc: { + de: "Gruppe zum Tauschen und Verschenken von Kindersachen.", + en: "Group for trading and gifting children's items." + }, + img: "telegramgruppen.webp", + type: "telegram", + link: "https://t.me/BEKindersachen" + }, + { + name: { + de: "Foodsharing Bern", + en: "Foodsharing Bern" + }, + slug: "foodsharing-bern", + desc: { + de: "Gruppe für das Teilen von Lebensmitteln gegen Verschwendung.", + en: "Group for sharing food to prevent waste." + }, + img: "telegramgruppen.webp", + type: "telegram", + link: "https://t.me/foodsharingbe" + }, + { + name: { + de: "Kleidertausch Bern", + en: "Clothing Exchange Bern" + }, + slug: "kleidertausch-bern", + desc: { + de: "Gruppe zum Tauschen von Kleidung.", + en: "Group for exchanging clothes." + }, + img: "telegramgruppen.webp", + type: "telegram", + link: "https://t.me/kleidertauschbern" + }, + { + name: { + de: "Pflanzentausch Bern", + en: "Plant Exchange Bern" + }, + slug: "pflanzentausch-bern", + desc: { + de: "Gruppe zum Tauschen von Pflanzen und Samen.", + en: "Group for exchanging plants and seeds." + }, + img: "telegramgruppen.webp", + type: "telegram", + link: "https://t.me/pflanzentauschen1" + }, + { + name: { + de: "Musik-Instrumente Tausch Bern", + en: "Music Instruments Exchange Bern" + }, + slug: "musik-instrumente-bern", + desc: { + de: "Gruppe zum Tauschen und Verkaufen von Musikinstrumenten.", + en: "Group for exchanging and selling musical instruments." + }, + img: "telegramgruppen.webp", + type: "telegram", + link: "https://t.me/MusikInstrumente_Tausch_Bern" + }, + { + name: { + de: "Musiker*innen/Bands Bern", + en: "Musicians/Bands Bern" + }, + slug: "musikernetz-bern", + desc: { + de: "Netzwerk für Musiker*innen und Bands in Bern.", + en: "Network for musicians and bands in Bern." + }, + img: "telegramgruppen.webp", + type: "telegram", + link: "https://t.me/musikernetzbern" + }, + // Events Groups + { + name: { + de: "Bern Unko Agenda (Events)", + en: "Bern Unko Agenda (Events)" + }, + slug: "bern-unko-agenda", + desc: { + de: "Hauptgruppe für Events und Veranstaltungen in Bern.", + en: "Main group for events and activities in Bern." + }, + img: "events-and-friends.webp", + type: "telegram", + link: "https://t.me/bernunkoagenda" + }, + { + name: { + de: "Event Veranstalter*innen Chat", + en: "Event Organizers Chat" + }, + slug: "event-organizers-chat", + desc: { + de: "Chat-Gruppe für Event-Veranstalter*innen.", + en: "Chat group for event organizers." + }, + img: "telegramgruppen.webp", + type: "telegram", + link: "https://t.me/+UOrn5kOXNfeKYWHX" + }, + { + name: { + de: "Events in und um Bern", + en: "Events in and around Bern" + }, + slug: "events-around-bern", + desc: { + de: "Gruppe für Events in und um Bern.", + en: "Group for events in and around Bern." + }, + img: "events-and-friends.webp", + type: "telegram", + link: "https://t.me/eventsbern" + }, + // Social and Community Groups + { + name: { + de: "Unko-Care", + en: "Unko-Care" + }, + slug: "unko-care", + desc: { + de: "Gruppe für gegenseitige Unterstützung und Fürsorge.", + en: "Group for mutual support and care." + }, + img: "connect-bern.webp", + type: "telegram", + link: "https://t.me/+Hr1XrvM2JZplZmZk" + }, + { + name: { + de: "Sippe von Bern", + en: "Tribe of Bern" + }, + slug: "sippe-von-bern", + desc: { + de: "Gemeinschaftsgruppe für Menschen in Bern.", + en: "Community group for people in Bern." + }, + img: "deutschkurs.webp", + type: "telegram", + link: "https://t.me/menschbern" + }, + { + name: { + de: "Allerlei Menschliches", + en: "All Things Human" + }, + slug: "allerlei-menschliches", + desc: { + de: "Gruppe für allgemeine menschliche Themen und Austausch.", + en: "Group for general human topics and exchange." + }, + img: "fire-community.webp", + type: "telegram", + link: "https://t.me/+kAkkzvPqKidlYWU0" + }, + { + name: { + de: "Connect Bern (Telegram)", + en: "Connect Bern (Telegram)" + }, + slug: "connect-bern-telegram", + desc: { + de: "Die Telegram-Version der Connect Bern Hauptgruppe.", + en: "The Telegram version of the main Connect Bern group." + }, + img: "connect-bern.webp", + type: "telegram", + link: "https://t.me/connectbern" + }, + { + name: { + de: "Kritische Männlichkeiten", + en: "Critical Masculinities" + }, + slug: "kritische-maennlichkeiten", + desc: { + de: "Gruppe für Diskussionen über kritische Männlichkeiten.", + en: "Group for discussions about critical masculinities." + }, + img: "israelis-jews-friends.webp", + type: "telegram", + link: "https://t.me/+2lFNnfMSru4wMWY0" + }, + { + name: { + de: "Vegan Bern & Agglo (Telegram)", + en: "Vegan Bern & Surroundings (Telegram)" + }, + slug: "vegan-bern-telegram", + desc: { + de: "Die Telegram-Version der veganen Gruppe für Bern und Umgebung.", + en: "The Telegram version of the vegan group for Bern and surroundings." + }, + img: "vegan.webp", + type: "telegram", + link: "https://t.me/bernvegan" + }, + // Support and Services + { + name: { + de: "Tipps für Therapie, Beratung, Yoga", + en: "Tips for Therapy, Counseling, Yoga" + }, + slug: "therapy-counseling-yoga", + desc: { + de: "Gruppe für Empfehlungen zu Therapie, Beratung und Yoga.", + en: "Group for recommendations on therapy, counseling and yoga." + }, + img: "berndeutsch.webp", + type: "telegram", + link: "https://t.me/joinchat/fQAk9XDEkiM4NTJk" + }, + { + name: { + de: "Wohnen - WG Suche", + en: "Housing - Shared Apartment Search" + }, + slug: "housing-wg-search", + desc: { + de: "Gruppe für die Suche nach Wohngemeinschaften und Wohnungen.", + en: "Group for searching shared apartments and housing." + }, + img: "deutschkurs.webp", + type: "telegram", + link: "https://t.me/joinchat/LIezUBJgr4IRDyv8jYTWkg" + }, + { + name: { + de: "Mitfahrgelegenheit Bern", + en: "Ridesharing Bern" + }, + slug: "mitfahrgelegenheit-bern", + desc: { + de: "Gruppe für Mitfahrgelegenheiten in und um Bern.", + en: "Group for ridesharing in and around Bern." + }, + img: "whats-up-bern.webp", + type: "telegram", + link: "https://tiny.cc/mitfahrenbern" + }, + { + name: { + de: "Vorwärts links", + en: "Forward Left" + }, + slug: "vorwaerts-links", + desc: { + de: "Politische Gruppe mit linker Ausrichtung.", + en: "Political group with left-wing orientation." + }, + img: "fire-community.webp", + type: "telegram", + link: "https://t.me/joinchat/E2kynkdsZXd1x7lXB6wdJw" + }, + { + name: { + de: "Kombucha SCOBYs gratis", + en: "Kombucha SCOBYs for Free" + }, + slug: "kombucha-scobys", + desc: { + de: "Gruppe zum kostenlosen Teilen von Kombucha SCOBYs.", + en: "Group for sharing Kombucha SCOBYs for free." + }, + img: "vegan.webp", + type: "telegram", + link: "https://t.me/scobysch" + }, + // Other Cities + { + name: { + de: "Bienne/Biel Unko-Markt", + en: "Bienne/Biel Non-commercial Market" + }, + slug: "biel-bienne-unko", + desc: { + de: "Unkommerzieller Marktplatz für Biel/Bienne.", + en: "Non-commercial marketplace for Biel/Bienne." + }, + img: "telegramgruppen.webp", + type: "telegram", + link: "https://t.me/uncommercial_bielbienne" + }, + { + name: { + de: "Wohnen Biel/Bienne", + en: "Housing Biel/Bienne" + }, + slug: "housing-biel-bienne", + desc: { + de: "Gruppe für Wohnungssuche in Biel/Bienne.", + en: "Group for housing search in Biel/Bienne." + }, + img: "telegramgruppen.webp", + type: "telegram", + link: "https://t.me/joinchat/n-50O24IUIxmMWY0" + }, + { + name: { + de: "Mobienne", + en: "Mobienne" + }, + slug: "mobienne", + desc: { + de: "Community-Gruppe für Biel/Bienne.", + en: "Community group for Biel/Bienne." + }, + img: "telegramgruppen.webp", + type: "telegram", + link: "https://t.me/mobienne" + }, + { + name: { + de: "Thun Unko-Markt", + en: "Thun Non-commercial Market" + }, + slug: "thun-unko", + desc: { + de: "Unkommerzieller Marktplatz für Thun.", + en: "Non-commercial marketplace for Thun." + }, + img: "marktplatz.webp", + type: "telegram", + link: "https://t.me/joinchat/CaUxwxSJYNG2JxN3wpTJgg" } ] \ No newline at end of file diff --git a/src/lib/services/groupsManager.js b/src/lib/services/groupsManager.js index a8f92dd4..91f6a587 100644 --- a/src/lib/services/groupsManager.js +++ b/src/lib/services/groupsManager.js @@ -54,4 +54,46 @@ export function filterByGroupType(type) { } default: return GroupsData } +} + +export function filterByMultiplePlatforms(selectedPlatforms) { + // If no platforms selected, return all groups + if (selectedPlatforms.length === 0) { + return GroupsData; + } + + let results = []; + + for (let group of GroupsData) { + let shouldInclude = false; + + for (let platform of selectedPlatforms) { + switch (platform.toLowerCase()) { + case "whatsapp": + if (group.type === "whatsapp") { + shouldInclude = true; + } + break; + case "telegram": + if (group.type === "telegram") { + shouldInclude = true; + } + break; + case "other": + if (group.type === "other" || group.type === "multiplatform") { + shouldInclude = true; + } + break; + } + + // If we found a match, no need to check other platforms for this group + if (shouldInclude) break; + } + + if (shouldInclude) { + results.push(group); + } + } + + return results; } \ No newline at end of file diff --git a/src/routes/events/+page.svelte b/src/routes/events/+page.svelte index 1f5bcda8..43af8168 100644 --- a/src/routes/events/+page.svelte +++ b/src/routes/events/+page.svelte @@ -1,14 +1,31 @@ - Events • Connect Bern + Events • Connect Bern -
@@ -19,128 +36,329 @@

- +
+

Tuesday

+ +
+ +
+

Wednesday

+ +
+ +
+

Thursday

+ +
+ +
+

Friday

+ +
+ +
+

Saturday

+ +
+ + +
+

Event Calendar

+ +
+ + +
+

Submit Your Event

+
+

Have an event to share with the Bern community? Submit it directly via WhatsApp!

+ + + + + Submit Event via WhatsApp + +
+
+
-
- -
+