diff --git a/patterns/vsf-meldungen.html b/patterns/vsf-meldungen.html
index 9d05dae..b631d66 100644
--- a/patterns/vsf-meldungen.html
+++ b/patterns/vsf-meldungen.html
@@ -199,6 +199,16 @@
+
+
@@ -259,6 +269,16 @@
+
+
@@ -319,6 +339,178 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -591,6 +783,35 @@
window.addEventListener('load', updateNotificationsPatternRowState);
window.addEventListener('resize', updateNotificationsPatternRowState);
+ const mobileVsfMeldungen = document.querySelector('.sg-vsf-meldungen-mobile');
+
+ if (mobileVsfMeldungen) {
+ const mobileTabs = Array.from(mobileVsfMeldungen.querySelectorAll('[role="tab"]'));
+ const mobilePanels = Array.from(mobileVsfMeldungen.querySelectorAll('[role="tabpanel"]'));
+
+ const activateMobileTab = (targetTab) => {
+ mobileTabs.forEach((tab) => {
+ tab.setAttribute('aria-selected', String(tab === targetTab));
+ tab.dataset.componentState = tab === targetTab ? 'active' : 'inactive';
+ });
+
+ mobilePanels.forEach((panel) => {
+ panel.hidden = panel.id !== targetTab.getAttribute('aria-controls');
+ });
+ };
+
+ mobileTabs.forEach((tab) => {
+ tab.addEventListener('click', () => {
+ activateMobileTab(tab);
+ });
+ });
+
+ const initialTab = mobileTabs.find((tab) => tab.getAttribute('aria-selected') === 'true') || mobileTabs[0];
+ if (initialTab) {
+ activateMobileTab(initialTab);
+ }
+ }
+