diff --git a/src/HookHandler/PreprocessPatternNavbar.php b/src/HookHandler/PreprocessPatternNavbar.php
deleted file mode 100644
index fb4c33b2b7bacb8745ac6615a940bf35e5269e62..0000000000000000000000000000000000000000
--- a/src/HookHandler/PreprocessPatternNavbar.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace Drupal\ui_suite_bootstrap\HookHandler;
-
-use Drupal\Core\Render\Element;
-
-/**
- * Handle variables needed for the pattern.
- */
-class PreprocessPatternNavbar {
-
-  /**
-   * Length of the word dark.
-   */
-  public const DARK_LENGTH = 4;
-
-  /**
-   * Pattern fields where render elements will be injected.
-   */
-  public const REGIONS_FIELDS = [
-    'navigation',
-    'navigation_collapsible',
-  ];
-
-  /**
-   * Handle variables needed for the pattern.
-   *
-   * @param array $variables
-   *   The preprocessed variables.
-   */
-  public function preprocess(array &$variables): void {
-    if (\substr($variables['variant'], 0, self::DARK_LENGTH) === 'dark') {
-      foreach (self::REGIONS_FIELDS as $region) {
-        if (isset($variables[$region])) {
-          $this->addDarkSetting($variables[$region]);
-        }
-      }
-    }
-  }
-
-  /**
-   * Add dark setting to navbar_nav pattern.
-   *
-   * @param array $item
-   *   The render element to parse.
-   */
-  protected function addDarkSetting(array &$item): void {
-    if (isset($item['#type'])
-      && \in_array($item['#type'], ['pattern', 'pattern_preview'], TRUE)
-      && $item['#id'] == 'navbar_nav'
-    ) {
-      $item['#dark'] = TRUE;
-      // Stop recursion when a navbar_nav is found, no need to enter in it.
-      return;
-    }
-
-    $children = Element::children($item);
-    foreach ($children as $key) {
-      $this->addDarkSetting($item[$key]);
-    }
-  }
-
-}
diff --git a/templates/patterns/carousel/pattern-carousel.html.twig b/templates/patterns/carousel/pattern-carousel.html.twig
index 380b6631329f91de1a05c1677fea67d0bd9866a3..ea989014427744c254763e6fb283dc0b8a4bbf4a 100644
--- a/templates/patterns/carousel/pattern-carousel.html.twig
+++ b/templates/patterns/carousel/pattern-carousel.html.twig
@@ -2,6 +2,7 @@
   {% set variants = variant|split('__')|map(v => v|lower|replace({(v): 'carousel-' ~ v})|replace({'_': '-'})) %}
   {% set attributes = attributes.addClass(variants) %}
 {% endif %}
+{% set attributes = 'dark' in variant|lower ? attributes.setAttribute('data-bs-theme', 'dark') : attributes %}
 
 {% if not with_touch %}
   {% set attributes = attributes.setAttribute('data-bs-touch', 'false') %}
diff --git a/templates/patterns/dropdown/pattern-dropdown.html.twig b/templates/patterns/dropdown/pattern-dropdown.html.twig
index be4c49c147cd8f9ce0fbbe2c69b246ec19820805..44775c354d6807a2e6cf8d32f80b9ddfc753efd7 100644
--- a/templates/patterns/dropdown/pattern-dropdown.html.twig
+++ b/templates/patterns/dropdown/pattern-dropdown.html.twig
@@ -24,7 +24,7 @@
 
 {% set dropdown_menu_attributes = create_attribute() %}
 {% set dropdown_menu_attributes = dropdown_menu_attributes.addClass('dropdown-menu') %}
-{% set dropdown_menu_attributes = dark ? dropdown_menu_attributes.addClass('dropdown-menu-dark') : dropdown_menu_attributes %}
+{% set dropdown_menu_attributes = dark ? dropdown_menu_attributes.setAttribute('data-bs-theme', 'dark') : dropdown_menu_attributes %}
 {% set dropdown_menu_attributes = dropdown_menu_attributes.addClass([dropdown_menu_start, dropdown_menu_end]) %}
 {% set dropdown_menu_attributes = dropdown_menu_attributes.setAttribute('aria-labelledby', dropdown_id) %}
 
diff --git a/templates/patterns/navbar/pattern-navbar.html.twig b/templates/patterns/navbar/pattern-navbar.html.twig
index 7055f7cf4c69b7843cdea7da67b6e1c26ad8e484..7916599ad4508e8a9e71ae18af6c36c0f7fc4a29 100644
--- a/templates/patterns/navbar/pattern-navbar.html.twig
+++ b/templates/patterns/navbar/pattern-navbar.html.twig
@@ -4,6 +4,7 @@
 {% endif %}
 
 {% set attributes = attributes.addClass('navbar') %}
+{% set attributes = 'dark' in variant|lower ? attributes.setAttribute('data-bs-theme', 'dark') : attributes %}
 
 {% set navbar_id = navbar_id|default("navbar-" ~ random()) %}
 {% set placement = placement|default('default') %}
diff --git a/templates/patterns/navbar_nav/navbar_nav.ui_patterns.yml b/templates/patterns/navbar_nav/navbar_nav.ui_patterns.yml
index dc2e5e8f9ce84afa4543d4c4d7622dfcbbe2dfa3..6ad967b6025ecdb7c037b309c01a54ac5465e3f7 100644
--- a/templates/patterns/navbar_nav/navbar_nav.ui_patterns.yml
+++ b/templates/patterns/navbar_nav/navbar_nav.ui_patterns.yml
@@ -10,13 +10,6 @@ navbar_nav:
     scroll:
       label: "Scroll"
   settings:
-    dark:
-      type: "boolean"
-      label: "Dark (deprecated)"
-      description: "Activate dropdown dark menu."
-      preview: false
-      allow_expose: true
-      allow_token: true
     dropdown_id:
       type: "textfield"
       label: "ID"
diff --git a/templates/patterns/navbar_nav/pattern-navbar-nav.html.twig b/templates/patterns/navbar_nav/pattern-navbar-nav.html.twig
index a96abadf140ad0c72c7ec41a6440c1f66c235f6c..47c10b0288c86012604b029eb698e6e6dfae899a 100644
--- a/templates/patterns/navbar_nav/pattern-navbar-nav.html.twig
+++ b/templates/patterns/navbar_nav/pattern-navbar-nav.html.twig
@@ -3,17 +3,34 @@
 {% endif %}
 
 {% set attributes = attributes.addClass('navbar-nav') %}
+{% set list_opened = false %}
 
 {% if items %}
-  <ul{{ attributes }}>
   {% for item in items %}
+    {#
+    When finding a text item. it should be outside the list. So handle text
+    items by opening/closing lists around if needed.
+    #}
+    {% set item_is_link = false %}
+    {% if item.below or item.url %}
+      {% set item_is_link = true %}
+    {% endif %}
+
+    {% if item_is_link and not list_opened %}
+      {% set list_opened = true %}
+      <ul{{ attributes }}>
+    {% elseif not item_is_link and list_opened %}
+      {% set list_opened = false %}
+      </ul>
+    {% endif %}
+
+    {% set item_attributes = item.attributes|default(create_attribute()) %}
     {% set link_attributes = item.link_attributes|default(create_attribute()) %}
     {% if item.below %}
       {{ pattern('dropdown', {
         'title': item.title,
         'content': item.below,
         'dropdown_id': dropdown_id|default("dropdown-" ~ random())  ~ "-" ~ loop.index,
-        'dark': dark,
         'auto_close': 'true',
         'dropdown_navbar': true,
         'attributes': create_attribute({
@@ -21,15 +38,16 @@
         }),
         'button_attributes': link_attributes
       }, 'dropdown') }}
-    {% else %}
-      <li{{ item.attributes.addClass('nav-item') }}>
-        {% if item.url %}
-          <a{{ link_attributes.setAttribute('href', item.url).addClass('nav-link') }}>{{ item.title }}</a>
-        {% else %}
-          <span{{ link_attributes }}>{{ item.title }}</span>
-        {% endif %}
+    {% elseif item.url %}
+      <li{{ item_attributes.addClass('nav-item') }}>
+        <a{{ link_attributes.setAttribute('href', item.url).addClass('nav-link') }}>{{ item.title }}</a>
       </li>
+    {% else %}
+      <span{{ link_attributes.addClass('navbar-text') }}>{{ item.title }}</span>
+    {% endif %}
+
+    {% if loop.last and list_opened %}
+      </ul>
     {% endif %}
   {% endfor %}
-  </ul>
 {% endif %}
diff --git a/ui_suite_bootstrap.theme b/ui_suite_bootstrap.theme
index d0a41d4300e63444a1d8fca1cee6ad2f1c613573..511d3115a292984d2b29868d1f029a92158eb414 100644
--- a/ui_suite_bootstrap.theme
+++ b/ui_suite_bootstrap.theme
@@ -25,7 +25,6 @@ use Drupal\ui_suite_bootstrap\HookHandler\PreprocessMenuLocalTask;
 use Drupal\ui_suite_bootstrap\HookHandler\PreprocessPage;
 use Drupal\ui_suite_bootstrap\HookHandler\PreprocessPager;
 use Drupal\ui_suite_bootstrap\HookHandler\PreprocessPatternCard;
-use Drupal\ui_suite_bootstrap\HookHandler\PreprocessPatternNavbar;
 use Drupal\ui_suite_bootstrap\HookHandler\PreprocessSelect;
 use Drupal\ui_suite_bootstrap\HookHandler\PreprocessTextarea;
 use Drupal\ui_suite_bootstrap\HookHandler\PreprocessViewsMiniPager;
@@ -216,16 +215,6 @@ function ui_suite_bootstrap_preprocess_pattern_card(array &$variables): void {
   $instance->preprocess($variables);
 }
 
-/**
- * Implements hook_preprocess_HOOK() for 'pattern_navbar'.
- */
-function ui_suite_bootstrap_preprocess_pattern_navbar(array &$variables): void {
-  /** @var \Drupal\ui_suite_bootstrap\HookHandler\PreprocessPatternNavbar $instance */
-  $instance = \Drupal::service('class_resolver')
-    ->getInstanceFromDefinition(PreprocessPatternNavbar::class);
-  $instance->preprocess($variables);
-}
-
 /**
  * Implements hook_preprocess_HOOK() for 'select'.
  */