diff --git a/Build/Sources/Sass/_legacy.scss b/Build/Sources/Sass/_legacy.scss
index 546c0197122c9ae5c87cefd8fc02c56742020395..6f4882768ecfeb06fb03003a77969e90d3582e12 100644
--- a/Build/Sources/Sass/_legacy.scss
+++ b/Build/Sources/Sass/_legacy.scss
@@ -62,14 +62,14 @@
         }
     }
     // Set validation states also for addons
-    .input-group-addon {
+    .input-group-text {
         color: $text-color;
         background-color: $background-color;
         border-color: $border-color;
     }
 }
 
-//// Variables
+// Variables
 $line-height-computed: floor(($font-size-base * $line-height-base)) !default; // ~20px
 $input-height-base: ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;
 
@@ -89,11 +89,6 @@ $input-height-base: ($line-height-computed + ($padding-base-vertical * 2) + 2) !
     border-left: .25rem solid transparent;
 }
 
-// todo replace '.input-group-addon' with '.input-group-text'
-.input-group-addon {
-    @extend .input-group-text !optional;
-}
-
 // nav fallback
 // todo add ".nav-item" and ".nav-link" classes to markup
 .nav.nav-tabs {
diff --git a/Build/Sources/Sass/typo3/_main_form.scss b/Build/Sources/Sass/typo3/_main_form.scss
index 3b65a0120fa96e43cf6492dd70f5f83c57912bde..609482bbd80699e1117569d9adb0c5d454b0e5d7 100644
--- a/Build/Sources/Sass/typo3/_main_form.scss
+++ b/Build/Sources/Sass/typo3/_main_form.scss
@@ -37,7 +37,7 @@
     }
 }
 
-.input-group-addon {
+.input-group-text {
     min-width: 2.5rem;
 }
 
diff --git a/Build/Sources/TypeScript/backend/form-engine/element/select-tree-toolbar.ts b/Build/Sources/TypeScript/backend/form-engine/element/select-tree-toolbar.ts
index 2cb260e7a355afe7f4f52280f75d1dc1b0d7d891..3490a3e7874ce5d3b20276d842dfed7aaa29df53 100644
--- a/Build/Sources/TypeScript/backend/form-engine/element/select-tree-toolbar.ts
+++ b/Build/Sources/TypeScript/backend/form-engine/element/select-tree-toolbar.ts
@@ -43,7 +43,7 @@ export class SelectTreeToolbar extends LitElement {
     return html`
       <div class="tree-toolbar btn-toolbar">
         <div class="input-group">
-          <span class="input-group-addon input-group-icon filter">
+          <span class="input-group-text input-group-icon filter">
             <typo3-backend-icon identifier="actions-filter" size="small"></typo3-backend-icon>
           </span>
           <input type="text" class="form-control ${this.settings.searchInput}" placeholder="${lll('tcatree.findItem')}" @input="${(evt: InputEvent) => this.filter(evt)}">
diff --git a/Build/Sources/TypeScript/backend/localization.ts b/Build/Sources/TypeScript/backend/localization.ts
index be16c946e6bef0bd828cb16a9817aa1198f708d4..4333cc736aa9929a3b9cf51e8128412a08e40d78 100644
--- a/Build/Sources/TypeScript/backend/localization.ts
+++ b/Build/Sources/TypeScript/backend/localization.ts
@@ -226,7 +226,7 @@ class Localization {
                     $row.append(
                       $('<div />', { 'class': 'col-sm-6' }).append(
                         $('<div />', { 'class': 'input-group' }).append(
-                          $('<span />', { 'class': 'input-group-addon' }).append(
+                          $('<span />', { 'class': 'input-group-text' }).append(
                             $('<input />', {
                               type: 'checkbox',
                               'class': 't3js-localization-toggle-record',
diff --git a/Build/Sources/TypeScript/install/renderable/offset-group.ts b/Build/Sources/TypeScript/install/renderable/offset-group.ts
index ca89a6160386847e5c3728853d92eda18f4a888e..27e12c1fd628f902ca5b7dfde9de149e424102e3 100644
--- a/Build/Sources/TypeScript/install/renderable/offset-group.ts
+++ b/Build/Sources/TypeScript/install/renderable/offset-group.ts
@@ -16,13 +16,13 @@ class OffsetGroupElement extends LitElement {
       <div class="form-multigroup-wrap">
         <div class="form-multigroup-item">
           <div class="input-group">
-            <div class="input-group-addon">x</div>
+            <div class="input-group-text">x</div>
             <input id="${this.offsetId}_offset_x" class="form-control t3js-emconf-offsetfield" data-target="#${this.offsetId}" value="${this.values[0]?.trim()}"/>
           </div>
         </div>
         <div class="form-multigroup-item">
           <div class="input-group">
-            <div class="input-group-addon">y</div>
+            <div class="input-group-text">y</div>
             <input id="${this.offsetId}_offset_y" class="form-control t3js-emconf-offsetfield" data-target="#${this.offsetId}" value="${this.values[1]?.trim()}"/>
           </div>
         </div>
diff --git a/typo3/sysext/backend/Classes/Form/Element/GroupElement.php b/typo3/sysext/backend/Classes/Form/Element/GroupElement.php
index 6c4d806de9af3e0d0bd456490832655f7a3b5365..1ad1df430285128915f2435717296569d6c57c75 100644
--- a/typo3/sysext/backend/Classes/Form/Element/GroupElement.php
+++ b/typo3/sysext/backend/Classes/Form/Element/GroupElement.php
@@ -256,7 +256,7 @@ class GroupElement extends AbstractFormElement
             $html[] =   '<div class="form-wizards-items-top">';
             $html[] =       '<div class="autocomplete t3-form-suggest-container">';
             $html[] =           '<div class="input-group">';
-            $html[] =               '<span class="input-group-addon">';
+            $html[] =               '<span class="input-group-text">';
             $html[] =                   $this->iconFactory->getIcon('actions-search', IconSize::SMALL)->render();
             $html[] =               '</span>';
             $html[] =               '<input type="search" class="t3-form-suggest form-control"';
diff --git a/typo3/sysext/backend/Classes/Form/Element/InputSlugElement.php b/typo3/sysext/backend/Classes/Form/Element/InputSlugElement.php
index acaa29cae8f3bf9895bcc55836acaf3f15a47cdc..91ebe0b43261db583f9d59c1f22ecc605d78767c 100644
--- a/typo3/sysext/backend/Classes/Form/Element/InputSlugElement.php
+++ b/typo3/sysext/backend/Classes/Form/Element/InputSlugElement.php
@@ -125,7 +125,7 @@ class InputSlugElement extends AbstractFormElement
             $html[] =         '<div class="form-wizards-wrap">';
             $html[] =             '<div class="form-wizards-element">';
             $html[] =                 '<div class="input-group">';
-            $html[] =                     ($baseUrl ? '<span class="input-group-addon">' . htmlspecialchars($baseUrl) . '</span>' : '');
+            $html[] =                     ($baseUrl ? '<span class="input-group-text">' . htmlspecialchars($baseUrl) . '</span>' : '');
             $html[] =                     '<input ' . GeneralUtility::implodeAttributes($disabledFieldAttributes, true) . ' disabled>';
             $html[] =                 '</div>';
             $html[] =             '</div>';
@@ -157,7 +157,7 @@ class InputSlugElement extends AbstractFormElement
         $mainFieldHtml[] =      '<div class="form-wizards-wrap">';
         $mainFieldHtml[] =          '<div class="form-wizards-element">';
         $mainFieldHtml[] =              '<div class="input-group">';
-        $mainFieldHtml[] =                  ($baseUrl ? '<span class="input-group-addon">' . htmlspecialchars($baseUrl) . '</span>' : '');
+        $mainFieldHtml[] =                  ($baseUrl ? '<span class="input-group-text">' . htmlspecialchars($baseUrl) . '</span>' : '');
         // We deal with 3 fields here: a readonly field for current / default values, an input
         // field to manipulate the value, and the final hidden field used to send the value
         $mainFieldHtml[] =                  '<input';
diff --git a/typo3/sysext/backend/Classes/Form/Element/LinkElement.php b/typo3/sysext/backend/Classes/Form/Element/LinkElement.php
index ae29d3a6aa1d3703f96496e9ad9be54b51dd8c7e..555ed76b6f4e2daa1db85104d089db41961526fd 100644
--- a/typo3/sysext/backend/Classes/Form/Element/LinkElement.php
+++ b/typo3/sysext/backend/Classes/Form/Element/LinkElement.php
@@ -216,7 +216,7 @@ class LinkElement extends AbstractFormElement
         $expansionHtml[] =  '<div class="form-wizards-wrap">';
         $expansionHtml[] =      '<div class="form-wizards-element">';
         $expansionHtml[] =          '<div class="input-group t3js-form-field-link">';
-        $expansionHtml[] =              '<span class="t3js-form-field-link-icon input-group-addon">' . ($linkExplanation['icon'] ?? '') . '</span>';
+        $expansionHtml[] =              '<span class="t3js-form-field-link-icon input-group-text">' . ($linkExplanation['icon'] ?? '') . '</span>';
         $expansionHtml[] =              '<input class="form-control t3js-form-field-link-explanation" title="' . $explanation . '" value="' . $explanation . '"' . ' readonly' . ($hasExplanation ? '' : ' hidden') . '>';
         $expansionHtml[] =              '<input type="text" ' . GeneralUtility::implodeAttributes($attributes, true) . ' />';
         $expansionHtml[] =              '<button class="btn btn-default t3js-form-field-link-explanation-toggle" type="button" title="' . htmlspecialchars($toggleButtonTitle) . '"' . ($hasExplanation ? '' : ' disabled') . '>';
diff --git a/typo3/sysext/backend/Classes/Form/Element/SelectSingleElement.php b/typo3/sysext/backend/Classes/Form/Element/SelectSingleElement.php
index cb6bf68335d716ddec8bae3eac1273240e1443b0..6b9242cae776ee880ae6397508462a700fc5c2b5 100644
--- a/typo3/sysext/backend/Classes/Form/Element/SelectSingleElement.php
+++ b/typo3/sysext/backend/Classes/Form/Element/SelectSingleElement.php
@@ -230,7 +230,7 @@ class SelectSingleElement extends AbstractFormElement
         $html[] =           '<div class="form-wizards-element">';
         if ($hasIcons) {
             $html[] =           '<div class="input-group">';
-            $html[] =               '<span class="input-group-addon input-group-icon">';
+            $html[] =               '<span class="input-group-text input-group-icon">';
             $html[] =                   $selectedIcon;
             $html[] =               '</span>';
         }
diff --git a/typo3/sysext/backend/Resources/Private/Templates/ColumnSelector.html b/typo3/sysext/backend/Resources/Private/Templates/ColumnSelector.html
index 811631162b2d94cef9eeab39e61f02d69960e7a9..eee0c66ba33a108bd6b32460271bf27304c89fe7 100644
--- a/typo3/sysext/backend/Resources/Private/Templates/ColumnSelector.html
+++ b/typo3/sysext/backend/Resources/Private/Templates/ColumnSelector.html
@@ -10,7 +10,7 @@
         <div class="row row-cols-auto justify-content-between">
             <div class="col flex-grow-1">
                 <div class="input-group">
-                    <span class="input-group-addon" id="columns-filter-label"><f:translate key="LLL:EXT:backend/Resources/Private/Language/locallang_column_selector.xlf:columnsFilter" /></span>
+                    <span class="input-group-text" id="columns-filter-label"><f:translate key="LLL:EXT:backend/Resources/Private/Language/locallang_column_selector.xlf:columnsFilter" /></span>
                     <input type="search" name="columns-filter" class="form-control" value="" aria-labelledby="columns-filter-label" placeholder="{f:translate(key: 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.enterSearchString')}">
                 </div>
             </div>
diff --git a/typo3/sysext/backend/Resources/Private/Templates/Page/NewPages.html b/typo3/sysext/backend/Resources/Private/Templates/Page/NewPages.html
index 9edac1d7dfd7c74774425d8c3c01574ce993ce60..99eb90f5f89e0b7a995db2d0faf0cae8c22c95d3 100644
--- a/typo3/sysext/backend/Resources/Private/Templates/Page/NewPages.html
+++ b/typo3/sysext/backend/Resources/Private/Templates/Page/NewPages.html
@@ -218,7 +218,7 @@
                         <div class="form-wizards-wrap">
                             <div class="form-wizards-element">
                                 <div class="input-group">
-                                    <span class="input-group-addon input-group-icon" id="page_new_icon_{line.index}">
+                                    <span class="input-group-text input-group-icon" id="page_new_icon_{line.index}">
                                         <core:iconForRecord table="pages" row="{id: '0'}" />
                                     </span>
                                     <select id="page_new_select_{line.index}" class="form-select t3js-newmultiplepages-select-doktype" name="pages[NEW{line.index}][doktype]" data-target="#page_new_icon_{line.index}">
diff --git a/typo3/sysext/backend/Resources/Public/Css/backend.css b/typo3/sysext/backend/Resources/Public/Css/backend.css
index 279a7b1dbd7837de1da0193bbbaca59e29c8ba28..22a9cd4fcafcf3001f34c71fe4a8e4e6c73eb42e 100644
--- a/typo3/sysext/backend/Resources/Public/Css/backend.css
+++ b/typo3/sysext/backend/Resources/Public/Css/backend.css
@@ -590,9 +590,9 @@ textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-wid
 .input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}
 .input-group .btn{position:relative;z-index:2}
 .input-group .btn:focus{z-index:5}
-.input-group-addon,.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:.75rem;font-weight:400;line-height:1.5;color:#333;text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid #bbb;border-radius:var(--bs-border-radius)}
-.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:.9375rem;border-radius:var(--bs-border-radius-lg)}
-.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.65625rem;border-radius:var(--bs-border-radius-sm)}
+.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:.75rem;font-weight:400;line-height:1.5;color:#333;text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid #bbb;border-radius:var(--bs-border-radius)}
+.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:.9375rem;border-radius:var(--bs-border-radius-lg)}
+.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.65625rem;border-radius:var(--bs-border-radius-sm)}
 .input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}
 .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-start-end-radius:0;border-end-end-radius:0}
 .input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-start-end-radius:0;border-end-end-radius:0}
@@ -4179,11 +4179,11 @@ div.diff-g,div.diff-r{padding:3px}
 ::-ms-clear{display:none}
 .has-change .form-control{border-color:#6daae0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}
 .has-change .form-control:focus{border-color:#4392d7;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c1dbf2}
-.has-change .input-group-addon{color:#6daae0;background-color:#e9f2fa;border-color:#6daae0}
+.has-change .input-group-text{color:#6daae0;background-color:#e9f2fa;border-color:#6daae0}
 .has-change .thumbnail-status{border:1px solid #6daae0}
 .input-group-icon{vertical-align:middle}
 .input-group-icon img{max-height:18px}
-.input-group-addon{min-width:2.5rem}
+.input-group-text{min-width:2.5rem}
 label .icon img{pointer-events:none}
 .form-control{min-width:120px}
 .form-control::-moz-placeholder{color:var(--typo3-input-color-placeholder)}
diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/form-engine/element/select-tree-toolbar.js b/typo3/sysext/backend/Resources/Public/JavaScript/form-engine/element/select-tree-toolbar.js
index 6d2ce0212483640b74d2c48346ea5e8832609e31..a495b913aff032a5cb3d9339983a2799872f9bae 100644
--- a/typo3/sysext/backend/Resources/Public/JavaScript/form-engine/element/select-tree-toolbar.js
+++ b/typo3/sysext/backend/Resources/Public/JavaScript/form-engine/element/select-tree-toolbar.js
@@ -13,7 +13,7 @@
 var __decorate=function(e,t,l,n){var i,c=arguments.length,o=c<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,l):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,l,n);else for(var r=e.length-1;r>=0;r--)(i=e[r])&&(o=(c<3?i(o):c>3?i(t,l,o):i(t,l))||o);return c>3&&o&&Object.defineProperty(t,l,o),o};import{html,LitElement}from"lit";import{customElement}from"lit/decorators.js";import{lll}from"@typo3/core/lit-helper.js";let SelectTreeToolbar=class extends LitElement{constructor(){super(...arguments),this.settings={collapseAllBtn:"collapse-all-btn",expandAllBtn:"expand-all-btn",searchInput:"search-input",toggleHideUnchecked:"hide-unchecked-btn"},this.hideUncheckedState=!1}createRenderRoot(){return this}render(){return html`
       <div class="tree-toolbar btn-toolbar">
         <div class="input-group">
-          <span class="input-group-addon input-group-icon filter">
+          <span class="input-group-text input-group-icon filter">
             <typo3-backend-icon identifier="actions-filter" size="small"></typo3-backend-icon>
           </span>
           <input type="text" class="form-control ${this.settings.searchInput}" placeholder="${lll("tcatree.findItem")}" @input="${e=>this.filter(e)}">
diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/localization.js b/typo3/sysext/backend/Resources/Public/JavaScript/localization.js
index 8a29577a931e20bdf34e3a7c75205f142ec12854..5a2e9fb79a566a57925edcd65e3f6ee29c55f1d4 100644
--- a/typo3/sysext/backend/Resources/Public/JavaScript/localization.js
+++ b/typo3/sysext/backend/Resources/Public/JavaScript/localization.js
@@ -10,4 +10,4 @@
  *
  * The TYPO3 project - inspiring people to share!
  */
-import DocumentService from"@typo3/core/document-service.js";import $ from"jquery";import{SeverityEnum}from"@typo3/backend/enum/severity.js";import AjaxRequest from"@typo3/core/ajax/ajax-request.js";import Icons from"@typo3/backend/icons.js";import Wizard from"@typo3/backend/wizard.js";import"@typo3/backend/element/icon-element.js";class Localization{constructor(){this.triggerButton=".t3js-localize",this.localizationMode=null,this.sourceLanguage=null,this.records=[],DocumentService.ready().then((()=>{this.initialize()}))}initialize(){Icons.getIcon("actions-localize",Icons.sizes.large).then((e=>{Icons.getIcon("actions-edit-copy",Icons.sizes.large).then((a=>{$(this.triggerButton).removeClass("disabled"),$(document).on("click",this.triggerButton,(t=>{t.preventDefault();const o=$(t.currentTarget),i=[],l=[];let s="";o.data("allowTranslate")&&(i.push('<div class="row"><div class="col-sm-3"><label class="btn btn-default d-block t3js-localization-option" data-helptext=".t3js-helptext-translate">'+e+'<input type="radio" name="mode" id="mode_translate" value="localize" style="display: none"><br>'+TYPO3.lang["localize.wizard.button.translate"]+'</label></div><div class="col-sm-9"><p class="t3js-helptext t3js-helptext-translate text-body-secondary">'+TYPO3.lang["localize.educate.translate"]+"</p></div></div>"),l.push("localize")),o.data("allowCopy")&&(i.push('<div class="row"><div class="col-sm-3"><label class="btn btn-default d-block t3js-localization-option" data-helptext=".t3js-helptext-copy">'+a+'<input type="radio" name="mode" id="mode_copy" value="copyFromLanguage" style="display: none"><br>'+TYPO3.lang["localize.wizard.button.copy"]+'</label></div><div class="col-sm-9"><p class="t3js-helptext t3js-helptext-copy text-body-secondary">'+TYPO3.lang["localize.educate.copy"]+"</p></div></div>"),l.push("copyFromLanguage")),0===o.data("allowTranslate")&&0===o.data("allowCopy")&&i.push('<div class="row"><div class="col-sm-12"><div class="alert alert-warning"><div class="media"><div class="media-left"><span class="icon-emphasized"><typo3-backend-icon identifier="actions-exclamation" size="small"></typo3-backend-icon></span></div><div class="media-body"><p class="alert-message">'+TYPO3.lang["localize.educate.noTranslate"]+"</p></div></div></div></div></div>"),s+='<div data-bs-toggle="buttons">'+i.join("")+"</div>",Wizard.addSlide("localize-choose-action",TYPO3.lang["localize.wizard.header_page"].replace("{0}",o.data("page")).replace("{1}",o.data("languageName")),s,SeverityEnum.notice,(()=>{1===l.length&&(this.localizationMode=l[0],Wizard.unlockNextStep().get(0).click())})),Wizard.addSlide("localize-choose-language",TYPO3.lang["localize.view.chooseLanguage"],"",SeverityEnum.notice,(e=>{Icons.getIcon("spinner-circle",Icons.sizes.large).then((a=>{e.html('<div class="text-center">'+a+"</div>"),this.loadAvailableLanguages(parseInt(o.data("pageId"),10),parseInt(o.data("languageId"),10)).then((async a=>{const t=await a.resolve();if(1===t.length)return this.sourceLanguage=t[0].uid,void Wizard.unlockNextStep().get(0).click();Wizard.getComponent().on("click",".t3js-language-option",(e=>{const a=$(e.currentTarget).prev();this.sourceLanguage=a.val(),Wizard.unlockNextStep()}));const o=$("<div />",{class:"row"});for(const e of t){const a="language"+e.uid,t=$("<input />",{type:"radio",name:"language",id:a,value:e.uid,style:"display: none;",class:"btn-check"}),i=$("<label />",{class:"btn btn-default d-block t3js-language-option option",for:a}).text(" "+e.title).prepend(e.flagIcon);o.append($("<div />",{class:"col-sm-4"}).append(t).append(i))}e.empty().append(o)}))}))})),Wizard.addSlide("localize-summary",TYPO3.lang["localize.view.summary"],"",SeverityEnum.notice,(e=>{Icons.getIcon("spinner-circle",Icons.sizes.large).then((a=>{e.html('<div class="text-center">'+a+"</div>")})),this.getSummary(parseInt(o.data("pageId"),10),parseInt(o.data("languageId"),10)).then((async a=>{const t=await a.resolve();e.empty(),this.records=[];const o=t.columns.columns;t.columns.columnList.forEach((a=>{if(void 0===t.records[a])return;const i=o[a],l=$("<div />",{class:"row"});t.records[a].forEach((e=>{const a=" ("+e.uid+") "+e.title;this.records.push(e.uid),l.append($("<div />",{class:"col-sm-6"}).append($("<div />",{class:"input-group"}).append($("<span />",{class:"input-group-addon"}).append($("<input />",{type:"checkbox",class:"t3js-localization-toggle-record",id:"record-uid-"+e.uid,checked:"checked","data-uid":e.uid,"aria-label":a})),$("<label />",{class:"form-control",for:"record-uid-"+e.uid}).text(a).prepend(e.icon))))})),e.append($("<fieldset />",{class:"localization-fieldset"}).append($("<label />").text(i).prepend($("<input />",{class:"t3js-localization-toggle-column",type:"checkbox",checked:"checked"})),l))})),Wizard.unlockNextStep(),Wizard.getComponent().on("change",".t3js-localization-toggle-record",(e=>{const a=$(e.currentTarget),t=a.data("uid"),o=a.closest("fieldset"),i=o.find(".t3js-localization-toggle-column");if(a.is(":checked"))this.records.push(t);else{const e=this.records.indexOf(t);e>-1&&this.records.splice(e,1)}const l=o.find(".t3js-localization-toggle-record"),s=o.find(".t3js-localization-toggle-record:checked");i.prop("checked",s.length>0),i.prop("__indeterminate",s.length>0&&s.length<l.length),this.records.length>0?Wizard.unlockNextStep():Wizard.lockNextStep()})).on("change",".t3js-localization-toggle-column",(e=>{const a=$(e.currentTarget),t=a.closest("fieldset").find(".t3js-localization-toggle-record");t.prop("checked",a.is(":checked")),t.trigger("change")}))}))})),Wizard.addFinalProcessingSlide((()=>{this.localizeRecords(parseInt(o.data("pageId"),10),parseInt(o.data("languageId"),10),this.records).then((()=>{Wizard.dismiss(),document.location.reload()}))})).then((()=>{Wizard.show(),Wizard.getComponent().on("click",".t3js-localization-option",(e=>{const a=$(e.currentTarget),t=a.find('input[type="radio"]');if(a.data("helptext")){const t=$(e.delegateTarget);t.find(".t3js-localization-option").removeClass("active"),t.find(".t3js-helptext").addClass("text-body-secondary"),a.addClass("active"),t.find(a.data("helptext")).removeClass("text-body-secondary")}this.localizationMode=t.val(),Wizard.unlockNextStep()}))}))}))}))}))}loadAvailableLanguages(e,a){return new AjaxRequest(TYPO3.settings.ajaxUrls.page_languages).withQueryArguments({pageId:e,languageId:a}).get()}getSummary(e,a){return new AjaxRequest(TYPO3.settings.ajaxUrls.records_localize_summary).withQueryArguments({pageId:e,destLanguageId:a,languageId:this.sourceLanguage}).get()}localizeRecords(e,a,t){return new AjaxRequest(TYPO3.settings.ajaxUrls.records_localize).withQueryArguments({pageId:e,srcLanguageId:this.sourceLanguage,destLanguageId:a,action:this.localizationMode,uidList:t}).get()}}export default new Localization;
\ No newline at end of file
+import DocumentService from"@typo3/core/document-service.js";import $ from"jquery";import{SeverityEnum}from"@typo3/backend/enum/severity.js";import AjaxRequest from"@typo3/core/ajax/ajax-request.js";import Icons from"@typo3/backend/icons.js";import Wizard from"@typo3/backend/wizard.js";import"@typo3/backend/element/icon-element.js";class Localization{constructor(){this.triggerButton=".t3js-localize",this.localizationMode=null,this.sourceLanguage=null,this.records=[],DocumentService.ready().then((()=>{this.initialize()}))}initialize(){Icons.getIcon("actions-localize",Icons.sizes.large).then((e=>{Icons.getIcon("actions-edit-copy",Icons.sizes.large).then((a=>{$(this.triggerButton).removeClass("disabled"),$(document).on("click",this.triggerButton,(t=>{t.preventDefault();const o=$(t.currentTarget),i=[],l=[];let s="";o.data("allowTranslate")&&(i.push('<div class="row"><div class="col-sm-3"><label class="btn btn-default d-block t3js-localization-option" data-helptext=".t3js-helptext-translate">'+e+'<input type="radio" name="mode" id="mode_translate" value="localize" style="display: none"><br>'+TYPO3.lang["localize.wizard.button.translate"]+'</label></div><div class="col-sm-9"><p class="t3js-helptext t3js-helptext-translate text-body-secondary">'+TYPO3.lang["localize.educate.translate"]+"</p></div></div>"),l.push("localize")),o.data("allowCopy")&&(i.push('<div class="row"><div class="col-sm-3"><label class="btn btn-default d-block t3js-localization-option" data-helptext=".t3js-helptext-copy">'+a+'<input type="radio" name="mode" id="mode_copy" value="copyFromLanguage" style="display: none"><br>'+TYPO3.lang["localize.wizard.button.copy"]+'</label></div><div class="col-sm-9"><p class="t3js-helptext t3js-helptext-copy text-body-secondary">'+TYPO3.lang["localize.educate.copy"]+"</p></div></div>"),l.push("copyFromLanguage")),0===o.data("allowTranslate")&&0===o.data("allowCopy")&&i.push('<div class="row"><div class="col-sm-12"><div class="alert alert-warning"><div class="media"><div class="media-left"><span class="icon-emphasized"><typo3-backend-icon identifier="actions-exclamation" size="small"></typo3-backend-icon></span></div><div class="media-body"><p class="alert-message">'+TYPO3.lang["localize.educate.noTranslate"]+"</p></div></div></div></div></div>"),s+='<div data-bs-toggle="buttons">'+i.join("")+"</div>",Wizard.addSlide("localize-choose-action",TYPO3.lang["localize.wizard.header_page"].replace("{0}",o.data("page")).replace("{1}",o.data("languageName")),s,SeverityEnum.notice,(()=>{1===l.length&&(this.localizationMode=l[0],Wizard.unlockNextStep().get(0).click())})),Wizard.addSlide("localize-choose-language",TYPO3.lang["localize.view.chooseLanguage"],"",SeverityEnum.notice,(e=>{Icons.getIcon("spinner-circle",Icons.sizes.large).then((a=>{e.html('<div class="text-center">'+a+"</div>"),this.loadAvailableLanguages(parseInt(o.data("pageId"),10),parseInt(o.data("languageId"),10)).then((async a=>{const t=await a.resolve();if(1===t.length)return this.sourceLanguage=t[0].uid,void Wizard.unlockNextStep().get(0).click();Wizard.getComponent().on("click",".t3js-language-option",(e=>{const a=$(e.currentTarget).prev();this.sourceLanguage=a.val(),Wizard.unlockNextStep()}));const o=$("<div />",{class:"row"});for(const e of t){const a="language"+e.uid,t=$("<input />",{type:"radio",name:"language",id:a,value:e.uid,style:"display: none;",class:"btn-check"}),i=$("<label />",{class:"btn btn-default d-block t3js-language-option option",for:a}).text(" "+e.title).prepend(e.flagIcon);o.append($("<div />",{class:"col-sm-4"}).append(t).append(i))}e.empty().append(o)}))}))})),Wizard.addSlide("localize-summary",TYPO3.lang["localize.view.summary"],"",SeverityEnum.notice,(e=>{Icons.getIcon("spinner-circle",Icons.sizes.large).then((a=>{e.html('<div class="text-center">'+a+"</div>")})),this.getSummary(parseInt(o.data("pageId"),10),parseInt(o.data("languageId"),10)).then((async a=>{const t=await a.resolve();e.empty(),this.records=[];const o=t.columns.columns;t.columns.columnList.forEach((a=>{if(void 0===t.records[a])return;const i=o[a],l=$("<div />",{class:"row"});t.records[a].forEach((e=>{const a=" ("+e.uid+") "+e.title;this.records.push(e.uid),l.append($("<div />",{class:"col-sm-6"}).append($("<div />",{class:"input-group"}).append($("<span />",{class:"input-group-text"}).append($("<input />",{type:"checkbox",class:"t3js-localization-toggle-record",id:"record-uid-"+e.uid,checked:"checked","data-uid":e.uid,"aria-label":a})),$("<label />",{class:"form-control",for:"record-uid-"+e.uid}).text(a).prepend(e.icon))))})),e.append($("<fieldset />",{class:"localization-fieldset"}).append($("<label />").text(i).prepend($("<input />",{class:"t3js-localization-toggle-column",type:"checkbox",checked:"checked"})),l))})),Wizard.unlockNextStep(),Wizard.getComponent().on("change",".t3js-localization-toggle-record",(e=>{const a=$(e.currentTarget),t=a.data("uid"),o=a.closest("fieldset"),i=o.find(".t3js-localization-toggle-column");if(a.is(":checked"))this.records.push(t);else{const e=this.records.indexOf(t);e>-1&&this.records.splice(e,1)}const l=o.find(".t3js-localization-toggle-record"),s=o.find(".t3js-localization-toggle-record:checked");i.prop("checked",s.length>0),i.prop("__indeterminate",s.length>0&&s.length<l.length),this.records.length>0?Wizard.unlockNextStep():Wizard.lockNextStep()})).on("change",".t3js-localization-toggle-column",(e=>{const a=$(e.currentTarget),t=a.closest("fieldset").find(".t3js-localization-toggle-record");t.prop("checked",a.is(":checked")),t.trigger("change")}))}))})),Wizard.addFinalProcessingSlide((()=>{this.localizeRecords(parseInt(o.data("pageId"),10),parseInt(o.data("languageId"),10),this.records).then((()=>{Wizard.dismiss(),document.location.reload()}))})).then((()=>{Wizard.show(),Wizard.getComponent().on("click",".t3js-localization-option",(e=>{const a=$(e.currentTarget),t=a.find('input[type="radio"]');if(a.data("helptext")){const t=$(e.delegateTarget);t.find(".t3js-localization-option").removeClass("active"),t.find(".t3js-helptext").addClass("text-body-secondary"),a.addClass("active"),t.find(a.data("helptext")).removeClass("text-body-secondary")}this.localizationMode=t.val(),Wizard.unlockNextStep()}))}))}))}))}))}loadAvailableLanguages(e,a){return new AjaxRequest(TYPO3.settings.ajaxUrls.page_languages).withQueryArguments({pageId:e,languageId:a}).get()}getSummary(e,a){return new AjaxRequest(TYPO3.settings.ajaxUrls.records_localize_summary).withQueryArguments({pageId:e,destLanguageId:a,languageId:this.sourceLanguage}).get()}localizeRecords(e,a,t){return new AjaxRequest(TYPO3.settings.ajaxUrls.records_localize).withQueryArguments({pageId:e,srcLanguageId:this.sourceLanguage,destLanguageId:a,action:this.localizationMode,uidList:t}).get()}}export default new Localization;
\ No newline at end of file
diff --git a/typo3/sysext/filelist/Resources/Private/Templates/File/ReplaceFile.html b/typo3/sysext/filelist/Resources/Private/Templates/File/ReplaceFile.html
index 5e3a70eb61ef47f025906cf383ca7a96011772b6..6e164730c8b47475064ed16a719d8f6d6f34b5b2 100644
--- a/typo3/sysext/filelist/Resources/Private/Templates/File/ReplaceFile.html
+++ b/typo3/sysext/filelist/Resources/Private/Templates/File/ReplaceFile.html
@@ -21,7 +21,7 @@
             <label class="form-label" for="file_replace"><f:translate key="LLL:EXT:filelist/Resources/Private/Language/locallang.xlf:file_replace.php.selectfile" /></label>
             <div class="input-group col-6">
                 <input type="text" name="fakefile" id="fakefile" class="form-control input-xlarge" readonly>
-                <button type="button" class="input-group-addon btn btn-primary" data-filelist-click-target="#file_replace">
+                <button type="button" class="input-group-text btn btn-primary" data-filelist-click-target="#file_replace">
                     <f:translate key="LLL:EXT:filelist/Resources/Private/Language/locallang.xlf:file_replace.php.browse" />
                 </button>
             </div>
diff --git a/typo3/sysext/install/Resources/Private/Templates/Settings/ExtensionConfigurationGetContent.html b/typo3/sysext/install/Resources/Private/Templates/Settings/ExtensionConfigurationGetContent.html
index 0e08af1b525507d334b5d0688f436ab2739c2755..78039df4e6b710c2dcedcf678c5c2e02d414cbc4 100644
--- a/typo3/sysext/install/Resources/Private/Templates/Settings/ExtensionConfigurationGetContent.html
+++ b/typo3/sysext/install/Resources/Private/Templates/Settings/ExtensionConfigurationGetContent.html
@@ -7,7 +7,7 @@
 
     <div class="form-group">
         <div class="input-group">
-            <span class="input-group-addon">Filter by:</span>
+            <span class="input-group-text">Filter by:</span>
             <input type="text" class="form-control t3js-extensionConfiguration-search" placeholder="search setting">
         </div>
     </div>
diff --git a/typo3/sysext/install/Resources/Private/Templates/Settings/LocalConfigurationGetContent.html b/typo3/sysext/install/Resources/Private/Templates/Settings/LocalConfigurationGetContent.html
index b704a2d3ae433ea10e4c50f605e86f8a20b6bd01..155be9162df708d5a86e574fa950493f1c30e3a6 100644
--- a/typo3/sysext/install/Resources/Private/Templates/Settings/LocalConfigurationGetContent.html
+++ b/typo3/sysext/install/Resources/Private/Templates/Settings/LocalConfigurationGetContent.html
@@ -11,7 +11,7 @@
 <div class="t3js-module-content" data-local-configuration-write-token="{localConfigurationWriteToken}">
     <div class="form-group">
         <div class="input-group">
-            <span class="input-group-addon">Filter by:</span>
+            <span class="input-group-text">Filter by:</span>
             <input type="text" autocomplete="off" class="form-control t3js-localConfiguration-search" placeholder="search setting">
         </div>
     </div>
diff --git a/typo3/sysext/install/Resources/Private/Templates/Settings/SystemMaintainer.html b/typo3/sysext/install/Resources/Private/Templates/Settings/SystemMaintainer.html
index ce35c0a7bfbe00e6c511bcd37895bdc36b633fe7..1352f033dc68e5387f5f31e13c7b07334f5f67c6 100644
--- a/typo3/sysext/install/Resources/Private/Templates/Settings/SystemMaintainer.html
+++ b/typo3/sysext/install/Resources/Private/Templates/Settings/SystemMaintainer.html
@@ -19,7 +19,7 @@
 <div class="t3js-module-content" data-system-maintainer-write-token="{systemMaintainerWriteToken}">
     <div class="form-group">
         <div class="input-group flex-nowrap">
-            <span class="input-group-addon">System Maintainer:</span>
+            <span class="input-group-text">System Maintainer:</span>
             <select-pure
                 multiple
                 default-label="Select system maintainers"
diff --git a/typo3/sysext/install/Resources/Private/Templates/Upgrade/UpgradeDocsGetContent.html b/typo3/sysext/install/Resources/Private/Templates/Upgrade/UpgradeDocsGetContent.html
index cf6f42be1ad3a0ce3ee8078e5d04cff34561bd66..3604254d882dede227623b853157d99e5e2016e2 100644
--- a/typo3/sysext/install/Resources/Private/Templates/Upgrade/UpgradeDocsGetContent.html
+++ b/typo3/sysext/install/Resources/Private/Templates/Upgrade/UpgradeDocsGetContent.html
@@ -5,7 +5,7 @@
         <div class="col-md-12">
             <div class="form-group">
                 <div class="input-group">
-                    <span class="input-group-addon">Search:</span>
+                    <span class="input-group-text">Search:</span>
                     <input
                         type="text"
                         class="form-control t3js-upgradeDocs-fulltext-search"
@@ -20,7 +20,7 @@
         <div class="col-md-12">
             <div class="form-group">
                 <div class="input-group flex-nowrap">
-                    <span class="input-group-addon">Filter by:</span>
+                    <span class="input-group-text">Filter by:</span>
                     <select-pure
                         default-label="Select category"
                         class="t3js-upgradeDocs-select-pure"
diff --git a/typo3/sysext/install/Resources/Public/JavaScript/renderable/offset-group.js b/typo3/sysext/install/Resources/Public/JavaScript/renderable/offset-group.js
index 427a75c37cc636a83892fa6028a2e72a93cb085d..9f6b2cd978a9abf33a3ed064b6288204b1ddbeb7 100644
--- a/typo3/sysext/install/Resources/Public/JavaScript/renderable/offset-group.js
+++ b/typo3/sysext/install/Resources/Public/JavaScript/renderable/offset-group.js
@@ -14,13 +14,13 @@ var __decorate=function(t,e,o,r){var s,i=arguments.length,f=i<3?e:null===r?r=Obj
       <div class="form-multigroup-wrap">
         <div class="form-multigroup-item">
           <div class="input-group">
-            <div class="input-group-addon">x</div>
+            <div class="input-group-text">x</div>
             <input id="${this.offsetId}_offset_x" class="form-control t3js-emconf-offsetfield" data-target="#${this.offsetId}" value="${this.values[0]?.trim()}"/>
           </div>
         </div>
         <div class="form-multigroup-item">
           <div class="input-group">
-            <div class="input-group-addon">y</div>
+            <div class="input-group-text">y</div>
             <input id="${this.offsetId}_offset_y" class="form-control t3js-emconf-offsetfield" data-target="#${this.offsetId}" value="${this.values[1]?.trim()}"/>
           </div>
         </div>
diff --git a/typo3/sysext/lowlevel/Classes/Controller/DatabaseIntegrityController.php b/typo3/sysext/lowlevel/Classes/Controller/DatabaseIntegrityController.php
index f101945099f350ca9a2fc2b7157a8d6b3403abaf..1a27d832e98f4c778bf328568429783f519b845e 100644
--- a/typo3/sysext/lowlevel/Classes/Controller/DatabaseIntegrityController.php
+++ b/typo3/sysext/lowlevel/Classes/Controller/DatabaseIntegrityController.php
@@ -1962,7 +1962,7 @@ class DatabaseIntegrityController
         $lineHTML[] = '<div class="form-group">';
         $lineHTML[] = '  <div class="input-group">';
         $lineHTML[] =      $this->mkCompSelect($fieldPrefix . '[comparison]', (string)$conf['comparison'], ($conf['negate'] ?? null) ? 1 : 0);
-        $lineHTML[] = '    <span class="input-group-addon">';
+        $lineHTML[] = '    <span class="input-group-text">';
         $lineHTML[] = '      <div class="form-check form-check-type-toggle">';
         $lineHTML[] = '        <input type="checkbox" class="form-check-input t3js-submit-click"' . (($conf['negate'] ?? null) ? ' checked' : '') . ' name="' . htmlspecialchars($fieldPrefix) . '[negate]">';
         $lineHTML[] = '      </div>';
diff --git a/typo3/sysext/styleguide/Resources/Private/Templates/Backend/Icons.html b/typo3/sysext/styleguide/Resources/Private/Templates/Backend/Icons.html
index 4e23e952f050b1eada0103cd0422b6d759866035..df359f2a995ecb34d3660701dbade866249d9393 100644
--- a/typo3/sysext/styleguide/Resources/Private/Templates/Backend/Icons.html
+++ b/typo3/sysext/styleguide/Resources/Private/Templates/Backend/Icons.html
@@ -103,7 +103,7 @@
                             </div>
                             <div class="form-group col-md-12">
                                 <div class="input-group">
-                                    <div class="input-group-addon"><core:icon identifier="actions-search" size="default" /></div>
+                                    <div class="input-group-text"><core:icon identifier="actions-search" size="default" /></div>
                                     <input type="text" class="form-control input-lg" id="search-field" placeholder="Icon identifier">
                                 </div>
                             </div>
diff --git a/typo3/sysext/tstemplate/Resources/Private/Partials/ConstantEditorFields.html b/typo3/sysext/tstemplate/Resources/Private/Partials/ConstantEditorFields.html
index 77d4e4c28b2bb5558797d32c13b91703fd7d299b..e4acc0ee03c149c9d5fcfca933e402c5ef29fac6 100644
--- a/typo3/sysext/tstemplate/Resources/Private/Partials/ConstantEditorFields.html
+++ b/typo3/sysext/tstemplate/Resources/Private/Partials/ConstantEditorFields.html
@@ -84,7 +84,7 @@
                                         name="data[{constantItem.name}][left]"
                                         value="{constantItem.wrapStart}"
                                     />
-                                    <span class="input-group-addon input-group-icon">|</span>
+                                    <span class="input-group-text input-group-icon">|</span>
                                     <input
                                         class="form-control form-control-adapt"
                                         type="text"
@@ -94,7 +94,7 @@
                                 </f:case>
                                 <f:case value="offset">
                                     <f:for each="{constantItem.labelValueArray}" as="labelAndValue" iteration="iterator">
-                                        <span class="input-group-addon input-group-icon">{labelAndValue.label}</span>
+                                        <span class="input-group-text input-group-icon">{labelAndValue.label}</span>
                                         <input
                                             type="text"
                                             class="form-control form-control-adapt"
diff --git a/typo3/sysext/tstemplate/Resources/Private/Templates/ActiveEdit.html b/typo3/sysext/tstemplate/Resources/Private/Templates/ActiveEdit.html
index 2820aa22173b2012bad84e27291bcbbdfcf322fa..96e6153148d282d9eed668106e55f8fd714ed28d 100644
--- a/typo3/sysext/tstemplate/Resources/Private/Templates/ActiveEdit.html
+++ b/typo3/sysext/tstemplate/Resources/Private/Templates/ActiveEdit.html
@@ -52,7 +52,7 @@
                     <div class="col mb-4">
                         <label class="visually-hidden">{currentObjectPath} =</label>
                         <div class="input-group">
-                            <div class="input-group-addon">{currentObjectPath} =</div>
+                            <div class="input-group-text">{currentObjectPath} =</div>
                             <input class="form-control" type="text" name="value" value="{currentValue}" />
                         </div>
                     </div>
@@ -71,13 +71,13 @@
                     <div class="col mb-4">
                         <label class="visually-hidden">{currentObjectPath}.</label>
                         <div class="input-group">
-                            <div class="input-group-addon">{currentObjectPath}.</div>
+                            <div class="input-group-text">{currentObjectPath}.</div>
                             <input name="childName" type="text" class="form-control" />
                         </div>
                     </div>
                     <div class="col mb-4">
                         <div class="input-group">
-                            <div class="input-group-addon">=</div>
+                            <div class="input-group-text">=</div>
                             <input type="text" name="childValue" class="form-control" />
                         </div>
                     </div>
diff --git a/typo3/sysext/workspaces/Resources/Private/Partials/WorkingTable.html b/typo3/sysext/workspaces/Resources/Private/Partials/WorkingTable.html
index f8f4a06339ea743204938016b0272f7720c440b9..ffc4241d20f241b5a2320d52f5a1a28b600f6f62 100644
--- a/typo3/sysext/workspaces/Resources/Private/Partials/WorkingTable.html
+++ b/typo3/sysext/workspaces/Resources/Private/Partials/WorkingTable.html
@@ -20,7 +20,7 @@
                 <div class="form-group">
                     <label for="languages" class="form-label"><f:translate key="LLL:EXT:workspaces/Resources/Private/Language/locallang.xlf:workingTable.languages" /></label>
                     <div class="input-group">
-                        <span class="input-group-addon input-group-icon">
+                        <span class="input-group-text input-group-icon">
                             <f:for each="{availableLanguages}" as="language"><f:if condition="{language.active}"><core:icon identifier="{language.flagIcon}" /></f:if></f:for>
                         </span>
                         <select name="languages" id="languages" class="form-select">